Category Archives: SoC & IP design

상당히 괜찮은 microprocessor report deal

제가 즐겨보는 microprocessor report가 이번에 행사(?)를 하는군요. 신규 가입만 가능하다니 ㅠㅠ; (기존 가입자를 위한 deal도 만들어라~)

저희 회사는 2년 짜리를 구매해 둔 상태라 관계 없는 상태입니다만, microprocessor report를 구매하시고자 하는 분들께는 좋은 소식이겠네요. 4월 30일까지구요. Processor watch라는 e-mail news letter에 가입자 대상인데, 이 뉴스 레터가 무료기 때문에 원래 가격(1년에 $895)보다 $200불 싸게 보실 수 있겠네요. (흠.. 환률 생각하면 흠.. 그래도 예전에 신청한 것이 유리한 것일 수도 있겠네요. )
개인적으로 보는 건 힘들겠고, 도서 구입비가 남아있는 관련 기관/랩에서는 관심가져 볼만 하겠습니다. 🙂
—-
Dear Colleague:

During this time of economic strife, I would like to extend a special
offer to all of our Processor Watch subscribers.  From now until April
30, 2009, you will receive a $200 off of a one-year web-only
subscription to Microprocessor Report by simply contacting me at
480-483-4441 or at epotter@reedbusiness.com.
This offer is for new subscriber only.

If you have questions, don’t hesitate to contact us.

Best,

Elaine

Elaine Potter
480-483-4441
epotter@reedbusiness.com


—-

Project Veripage etc…

1.
Veripage 라는 곳에서 느닷 없이 뉴스레터를 보내왔는데(그동안 왔을 텐데, 스팸 처리 되었을 가능성이 더 높지만..), 거기에 아래와 같은 문제가 있습니다.

다음에서 Z의 값은 어떻게 될까요?

bit c, e, o, r, t;
bit [2:0] v, w;
bit [5:0] x, y;
bit [6:0] z;

v = {<<{c,e,r}};
w = {<<{r,o,c}};
x = {>>{v,w}};
y = {<<3{x}};
z = {>>{y,t}};


SystemVerilog를 써 보신 분들은 보신 적이 있으실 streaming concatenation 연산입니다.
간단히 설명드리면, 병합 연산을 수행하되 << 는 병합 순서에 있어서 right-to-left로, >>는 left-to-right로 병합하라는 연산이지요.
<<N{}은 N단위로 블록을 잡으라는 의미이구요.
그다지 쓸일은 없습니다만, 가끔 복잡한 assign문을 적어야 할 때 편합니다.
저는 합성해야 할 코드는 호환성 문제를 고려해서 verilog95-가끔 2001 문법도 씁니다만-를 사용하고, 이런 귀찮은 assign은 vi의 매크로를 사용합니다만, 검증만 목적으로 하는 모델링에는 편하겠죠.

여하튼, 그래서 답이 어떻게 될까요? ㅎㅎ


2.
Veripage를 오랫만에 가보니 검증 관련 책 추천이 새롭게 많이 되어 있더군요. http://www.project-veripage.com/books.php 참고해보세요.

3.
구독하고 있는 blog중에 art.oriented 님의 블로그에 올라온 글입니다. (지난번에 alt.oriented 라고 잘못 적는  우를 범했습니다. 다시 한번 죄송합니다. newgroup인줄 알았는지 ^^;)

typedef struct tagWHATTHE {
  int    data1;
  int    data2;
  char   data[1];
} WHATTHE;

여기서 char data[1]의 의미는 무엇일까요?
정답은 위의 글을 참조하시고..

저도 simulator를 만들때 위와 비슷한 동작이 필요한 경우가 종종(이라고 쓰고 ‘많이’라고 읽는) 있는데, 유용한 테크닉이군요.

참고로 EISC 상에서 disassemble 해보니 다음과 같이 접근합니다.  (변수명은 tt, typedef는 test로 했고, malloc은 걍 100 했습니다.) 어떻게 나올지 짐작하는데 대충 도움이 될 것 같아서 올립니다.

test* tt = (test*)malloc(sizeof(test)+100);
c0000046:       70 a8           ldi     0x70    %R8
c0000048:       4d df           jal     c00000e4 <_malloc>
c000004a:       98 e4           lea     ( %R8     ) %R9

c000004c <.LM3>:
  tt->data1 = sizeof(test) + 100;
c000004c:       70 a8           ldi     0x70    %R8
c000004e:       09 18           st      %R8     , ( %R9  + 0x0 )

c0000050 <.LM4>:
  tt->data2 = 1;
c0000050:       01 a8           ldi     0x1     %R8
c0000052:       19 18           st      %R8     , ( %R9  + 0x4 )

c0000054 <.LM5>:
  for (i = 0; i < 100; i++) {
c0000054:       00 a0           ldi     0x0     %R0
c0000056:       89 e4           lea     ( %R9     ) %R8
c0000058:       c8 c8           addq    0x8,    %R8

c000005a <.L5>:
    tt->data[i] = i;
c000005a:       08 30           stb     %R0     , ( %R8  + 0x0 )


ldi은 load immediate, jal 은 call과 동일하고, st는 store, lea는 레지스터간의 move, addq는 add immediate입니다.  (stb는 store byte이구요)
본문에 나왔듯이 캐시 효율로 봐도 이넘이 더 좋을 듯..


쓰고나서 덧글) 테터에서 코드 하일라이트 기능이 엉켰는지 짜증 지대로.. ㅠㅠ;

잡담.. Vim Color Scheme

1.
구글 크롬을 주력 브라우저로 사용하는 건 좋은데, Textcube 글쓰기가 이상하게 되어 불편하더군요.  Textcube 업데이트를 할 시점이 온 것 같은데.. 트래픽 문제로 그림 한장 제대로 못 올리는 신세이다보니 ,그냥 Tistory로 이전할까. .하는 생각도 듭니다. (요즘엔 메타 블로그쪽으로 feed를 잘 보내지 않아서 뭐 트래픽이 그렇게 많지는 않습니다만, 그래도 매일 매일 텍스트로만 채운 글도 60%의 트래픽을 넘나들고 있으니.. 걱정이 되죠 ^^;)

2.
뭐가 없어서 뭘 못하고 있다는 말처럼 공허한 말이 없는 것 같습니다.
다 마음의 문제이지요.

3.
vim color scheme이라는 것이 취향에 많이 따르는 건데요. 생각보다 민감하죠.
컬러 스킴을 확인해 볼 수 있는 사이트가 있더군요 [여기]


4.
요즘에 어쩌다 듣게된 ‘브로콜리 너마저’라는 밴드의 노래가 제 취향이군요. ^^;
춤이라는 노래가 개인 취향입니다만, 가장 많이 알려진듯 한 앵콜 요청 금지라는 노래는 걸어둡니다.



요즘 제가 개인적으로 좋아하는 재주소년의 신보도 나왔습니다.
역시나 같은 감성.. 약간은 매너리즘? 그래도 좋네요


5.
힘내자, 견뎌라.. 이런 류의 말이 요즘 가장 많이 들리는 이야기지요.
글쎄요. 즐기세요 🙂
피할 수 없다면 즐기라고 하잖아요.

다른 일로 고민하는 중입니다만, 뭔가 외부의 충격이 있어야 새로운 시각이 생기잖아요.