이런 저런 뉴스 모음

전자 엔지니어 뉴스 중 흥미 있는 뉴스 몇 가지..



  • 시높시스, 스웨덴의 ASIC 프로토타이핑 회사 인수
    (http://www.eetkorea.com/ART_8800467221_839575_NT_77236ec4.HTM?click_from=RSS)
    FPGA기반의 ASIC 프로토타이핑 회사란 거의 emulation이 아닌가 싶은데.. 여하튼 빠른 coverage를 위해서 도움이 될 것이라 생각합니다. 지난번 synopsys-verification seminar때 emulator관련 회사가 참석한 것도 이런 맥락이 아닌가 생각되구요

  • 텐실리카, 서울대 SoC 사업단과 한국과학기술원에 엑스텐사 공급
    (http://www.eetkorea.com/ART_8800467058_1134551_NT_5f5961d4.HTM?click_from=RSS)
    텐실리카(Tensilica) Xtensa 프로세서의 선전이 눈부십니다. 🙂 프로세서 하는 입장에서 텐실리카의 방향성은 아주 좋다고 생각하지요. 단지, 저희 회사와 약간 방향이 다르긴 한데.. 이런 기사를 볼때 마다 분발하게 됩니다. 아직까지는 인력이나 방향성이 탄력을 받은 상황이 아니니 비교는 어렵겠습니다만.. 올해부터 향후 3년 동안의 EISC processor를 눈여겨 봐 주십시오 ^^;

  • ARM-LG전자, 2009년 미국 디지털 방송 대비 라이선스 체결
    (http://www.eetkorea.com/ART_8800466903_480703_NT_f5fac31d.HTM?click_from=RSS)
    이 이야기는 선배에게 얼마전에 들었는데, 뉴스화 되었군요. ARM9EJS 프로세서는 상당히 잘 만든 프로세서임에 틀림없습니다. 효과적인 Java지원도 그렇고, 폭 넓은 소프트웨어 지원도 그렇고.. DSP에 있어서는 그리 좋다는 느낌을 받지는 못하고 있는데, 그래도 수많은 3rd party사들이 DSP library를 만들어내고 있으니 아주 부럽죠. 제가 만들고 있는 32bit EISC processor가 ARM9급 시장에 targeting하고 있어서 ARM9EJS와의 benchmark를 가끔해보는데, assembly 코드로 DSP 코딩을 하는 경우(ARM도 assembly로 된 DSP library를 쓰고)에는 동 클럭에서 더 좋게 나오기는 합니다만.. 전반적으로는 ARM9EJS의 클럭 스피드가 높으니, 저희것이 좋다고 할수는 없는 상황이죠. ^^; 국내 업체들의 지원하에 ARM의 시장 지배력이 점차 높아지는 것이 달갑지는 않은 상황입니다. 🙂

  • MIPS, 주목 받는 첨단 IP 코어 발표
    (http://www.eetkorea.com/ART_8800466897_839585_NP_820c116d.HTM?click_from=RSS)
    MIPS에서 새로 나온 MIPS74K이야기인데요.. Microprocessor Report에서도 대대적으로 보도하고 있는데, 가장 큰 이유가 dual issue out-of-order superscalar processor라는 점이에요. 사실 superscalar processor가 embedded에 나타난건 예전부터 있었지요(MIPS 사의.. 음.. 기억이 안나는데..4x던가요? 그넘이 한 5년정에 발표된걸로 기억하고, 얼마전에 ARM의 Cortex A8도 있구요).
    시장은 이제서야 열리는 거 같은데.. 그 동안 in-order형태였는데, 74K는 out-of-order라는 점에서 주목 받는 것이겠습니다. embedded에서 dual issue 이상 가지는 않을 거라 생각해요.. 대부분 benchmark에서 superscalar가 dual issue일때 가장 가격 효율성이 있으니까요.. 🙂

Perl을 이용해서 검증할때 유용한 팁

뭐랄까요.. 요즘 이런 저런 일로 바쁘다보니, 사람이 좀 얇팍하게 글을 쓰게되네요. 🙂
(퇴고 없이 그냥 온라인에서 쓰는 글이라 앞뒤가 없을지도 모르겠습니다.)

오늘은 여러분들께서 perl을 이용해서 Verilog HDL을 위한 testbench를 작성할 때 간단히 명령어 해석기를 만들어 사용하는 방법을 알려드리죠.

이 방법은 제가 JTAG을 위한 protocol을 만들다가 생각해낸 방법인데요.. 아주 유용하게 쓰고 있습니다.
얼마전 AXI FileReader와 같은 간단한 명령어 해석기가 필요할 때도 쉽게 적용할 수 있구요.

예를들어, JTAG을 위한 몇몇 명령을 만들고, 이 명령을 이용해서 HDL model을 위한 신호 입력으로 변환시키는 과정을 생각해 봅시다.

1. 필요한 함수를 정합니다.
대충 다음과 같은 함수를 쓸 수 있겠지요?


rtnval = get_id();
do_intest(serin);
do_extest(serin);


2.
해당 함수를 perl에서 subroutine으로 만들어갑니다.
뭐, subroutine을 만드는 방법은 쉽죠?

3.
이 부분이 제일 중요한데요..


xxx.pl <filename.input>

이런식으로 처리하려면, 중간에 다음과 같은 루틴을 넣어줍니다.


do “$ARGV[0]”;

위의 한 행은 해당 파일($ARGV[0])에 지정된 “perl” 명령어들을 읽어와서 해석하는 부분입니다.
즉, 여러분께서 “filename.input” 이라는 입력 파일에 앞에서 작성한 subroutine을 “명령어 사용하듯” 적어두면, 이것이 perl script에서 읽혀서, “명령어를 해석하듯” 동작하게 됩니다.
이렇게 함으로써, 파싱하는 부분을 생략하고도, 그럴듯하게 명령어 해석기처럼 하나의 perl 스크립트를 만드는 것이 가능합니다.

이제 이러한 perl script에서 어떻게 HDL 테스트 벡터를 만들어내는지 생각해 봅시다.
간단히 생각할 수 있는 것은 두 가지 인데요.
첫번째는 ROM file형태로 만들어버리고, verification을 위한 testbench에서는 $readememh()를 써서 읽은 다음에 한 클럭에 하나의 신호 그룹을 뿌리는 방법이구요..
두번째는 각 subroutine에 printf FOUT 과 같은 file output을 사용해서, 간단한 verilog testvector를 만들어내고, 이를 verification을 위한 testbench에서 `include “xxx” 명령을 이용해서 읽어들이는 방법입니다.

둘 다 간단하죠?

한 마디로, perl을 이용하면 C로는 어렵게 해야 할 일이 아주 아주 편해지는 일이 많습니다. 그래서 verification engineer들에게 perl과 같은 scripting 언어가 사랑받는 것이겠죠.

근황 몇개

프로세서 개발 이후 한달 넘게(두달도 넘었나?) 매뉴얼 작업.. 교육 자료 작업, 벤치마크 결과 정리…
다음 프로세서의 스펙 정리..

계속된 문서 작업으로 지쳐서 사실 blog에 글 쓸 엄두가 안났습니다.
내일 부터 교육인데 이거야 원.. 잘 할 수 있을지 모르겠습니다.
—-

사운드 카드는 실험삼아 USB형 DAC인 Optoplay를 중고로 구매했는데.. “음질 짱이에요”
새 버젼보다 좋은 DAC이 있다는 정보에 그냥 장터를 둘러보던 중 둔에 띄었고.. 사용 결과는 대 만족입니다.

이제 사운드 카드에서 잡음 생기면 그냥 USB형 사운드를 쓸랍니다.. 음감용이 아니라면.. ^^;
참고적으로 Optoplay는 음감용으로도 괜찮은 듯 해요.. 근데, 가끔 미칠때가 있어요… 한 2주에 한번 정도 “뷁”하면서 죽는 거죠..(농담이 아니고 정말 죽을 때 소리가 “뷁”입니다. ) 허브에 몇개를 몰아쓸때 그런걸로 봐서 USB 전원이 부족한지도 모르겠다는 생각도 듭니다..
뭐, 전력 많이 쓸만한 거 뽑은 다음에 USB 사운드 카드를 뽑았다 끼우면 됩니다.
—-

더위에 미쳐가고 있는 babyworm이었습니다.