Tag Archives: EISC

Verilog 관련 검색에 대한 친절한(?) 답변과 리퍼러 로그..

요즘에 리퍼러 로그를 보니, 검색을 통하여 들어오시는 분들이 상당하시군요..
(덕분에 gzip 플러그인을 통해 전송량을 절반으로 줄여놨었지만, 다시 트래픽이 차오르고 있습니다. ㅠㅠ; 물론, 많은 분들이 찾아주시는 건 좋은 일이지요.. 이 분야에 관심 있는 분들이 많다는 것이니까요..)

이 포스팅은 리퍼러 로그에 남은 검색어를 통하여 살펴본, 제 블로그에 방문하시는 분들이 관심을 가지는 것에 대한 친절(?)한 답변들입니다. ^^;

verilog 관련
가장 많은 검색어는 verilog/VHDL 입니다. 요즘에 이걸로 수업받으시는 분들이 많고, 요즘이 term project 철이라서 검색 순위가 급증하고 있는 것이 아닌가 생각합니다.

* Verilog와 VHDL중에 어떤것이 더 좋은가..
둘 다 좋은 언어입니다. verilog가 “설계”라는 목적에 좀더 부합하고, VHDL이 “검증”에 더 편리한 기능을 제공합니다. 개인적으로 생각하기에 verilog가 설계만 따진다면 더 편하다고 생각합니다.

* VHDL -> verilog변환, verilog ->VHDL 변환
가끔 뉴스 그룹에서 이거 변환 프로그램 찾으시는 분들도 봤는데, vhdl2v 같은 전용 변환 프로그램이 있기는 합니다만, 시도해보시면 상당한 스트레스를 받을 것이라 생각합니다.  ESNUG에 나온 내용을 붙이자면, 잘 안된다! 입니다.

[#M_ESNUG내용보기|less..|http://www.deepchip.com/items/0386-11.html
Hello John,

I’m scrambling my head over this…

I am using VHDL-2-Verilog translator by ASC.  I could not translate my
functions from VHDL to Verilog — they are simply skipped!

My VHDL source code has a package which has some function declarations
(eg. calculate_lrc(data)) and definitions in it.  The problem is when I try
to convert the package or code from VHDL to Verilog, the functions are
skipped.  So the verilog file just has constants and no “function”, as if
there was no function declaration in the original file.

I tried using -Function_Map option but it would only allow me to keep the
original function call but the parameters are skipped.  Also no function
conversions.

So does ASC’s vhdl2v not support function and procedure conversions from
VHDL to Verilog?

  – Rakesh Mehta
     Nortel Networks
_M#]

대안으로는 verilog나 vhdl이나 동일한 중간 포맷으로 해석해서 사용하는 툴을 쓰는 건데..
제가 사용해본 것은 Summit design의 visual HDL로 변환하는 것이었는데, 역시 structural 설계는 잘되는데 약간 behavioral하게 설계된건 잘 안되었습니다.

만일 동작만 보면되고, 안의 내용은 필요없다! 라고 생각하신다면, synopsys에서 합성한 후에 원하는 format으로 netlist를 출력해서 시뮬레이션에 사용하는 것이 제일 속편합니다. 물론, simulation용 라이브러리를 물어야 하지만 말입니다.
(뭐, 요즘엔 ncsim이나 modelsim이나 모두 VHDL/Verilog를 single kernel에서 시뮬레이트해서 이런 필요는 없겠지만.. 라이센스 문제가 아닌 이상엔 말이죠..)

* verilog에서의 #
위의 문법은 원하는 만큼 지연을 발생시키는 것입니다. 합성시에는 무시됩니다.

* verilog에서의 <=과 = 의 차이
blocking assignment와 non-blocking assignment를 혼동하시는 분들이 생각보다 많은데요..(저도 verilog 처음에 잘 몰랐습니다.) blocking assignment는 “시간이 흐르지 않는 상태(흐르지 않게 block하면서)에서 값이 저장된다”이구요.. non-blocking assignment는 “시간이 흐르면서 값이 저장된다” 입니다.
즉, 아래와 같은 연속된 assign의 경우 위의 blocking을 사용하였을때 d는 a의 값을 가지게 됩니다. 값의 할당 자체에 시간이 소모되지 않도록 하나의 할당이 끝날때까지 시간을 멈추기 때문입니다…
그런데, 밑의 nonblocking 예에서는 “값을 할당하자”라는 것은 현 시점에서, 값이 갱신되는 것은 delta delay이후에 이루어지게 됩니다. 왜냐하면, 값이 할당되든 안되든 값을 할당하겠다는 3개의 문장을 모두 보고나서 delta delay이후에 값이 갱신되기 때문이죠.

[CODE]b = a;
c = b;
d = c;

b <= a;
c <= b;
d <= c;[/CODE]

이해 되시려나요?

* verilog PLI 관련
예전에 계속쓰려다 잠시 중단되었는데, PLI 관련 내용은 요즘에 제 작업 관계로 앞으로 1~2개월동안 자주 올라올 확률이 높습니다. 테스트 벤치 생성 유닛과 scoreboard를 C로 만들고 이걸 verilog PLI로 연결할 예정이거든요..
기대하셔도 좋을듯..

다른 검색을 통한 리퍼러 로그..
Design Compiler와 VCS, Modelsim에 대한 검색이 많았습니다.
사실, 툴에 대해서는 소개나, 새소식만 하고 있어서 별다른 내용이 없었는데 말이죠.. ^^;
참.. 시뮬레이션 하는 방법은 quick reference guide를 살펴보시면 쉽게 하실 수 있습니다. ^^;

프로세서에 대한 검색으로 들어오신 분들도 많았습니다. intel, AMD, ARM, calmRISC, M-Core, EISC(감사합니다.)
블로그에 좀더 프로세서에 관련된 좋은 내용을 적을까 싶기도 한데.. 이쪽 분야 하시는 분이 워낙 적어서 누가 관심이 있을까.. 라는 씨니컬한 마음이 될때도 있습니다. ^^;

아.. 특이한것이 virtual UART를 검색해서 들어오신 분이 계시던데..
제가 이 블로그에서 PLI + TCL/TK를 조합한 virtual UART라는 걸 만든적이 있다고 말씀을 드린적이 있는데, 검색해서 들어오신분은 아마 회사분이 아니실까 생각합니다. 회사분이시라면 인트라넷에 올라간 virtual UART 관련 메뉴얼을 참조하세요.. 소스코드와 작성법이 다 있으니까요..^^;

찾아주신 분들 모두 감사드립니다.

EISC 관련 기사 하나.. TMA2560-RFID/USN용 센서 노드 칩

제가 설계한 건 아니고, 회사의 simple 32비트 [wp]EISC[/wp]가 들어간 칩인데.. ETRI와 다목적 [wp]RFID[/wp]/USN 과 같은 [wp]wireless sensor network[/wp]의 node및 bridge용으로 만들고 있는 칩입니다.  
뭐, 사실상 직접적인 target은 센서 노드쪽에서 가장 많이 사용되는 ATMEGA128L을 노리고 있는 칩이지요.
최종적으로는 RF 부분과 통합 설계가 될 예정인데, 그중에 1차 버젼입니다.

이거 담당하고 있는 분은 처음에 이 칩 나왔을때 테스트때문에서 회사에서 매일 매일 죽을려고 했었습니다.  ^^;

Digital과 analog가 섞이는 것도 섞이는 것이고, design house도 좀 말썽이고.. 여러가지 머리 아픈 부분이 있어서 말이죠.. 특히 이 칩같은 경우 저전력 하려고 클럭은 기본이고 파워마져 끊고, main die이외에 EEPROM die와 Flash die를 MCP해 놓아서 테스트가 어려워서 정말 고생했지요..

그래도, 이제 동작하고 신문기사까지 나왔으니 고생한 보람이 있네요…^^;
차선임! 수고하셨소~

[#M_기사보기|less..|
[전자 엔지니어에서 퍼왔습니다.]
ETRI(한국전자통신연구원)는 USN용 고성능 제어장치(MCU) 칩 개발에 성공했다고 6일 밝혔다. USN용 고성능 제어장치(MCU) 칩

이 칩은 기존의 8비트 프로세서 칩 성능을 32비트로 4배 개선시켰고 메모리도 기존 128KB 수준을 256KB 수준으로 2배 업그레이드 한 것이며 어플리케이션도 다양한 응용분야에서 사용가능 하다고 ETRI는 말했다. 또한 이번 개발을 계기로 USN관련 연구개발에 탄력이 붙을 것으로 전망했다.

기존의 USN 센서노드는 일상생활에서 흔히 볼 수 있는 온도, 습도의 증감, 화재발생 여부 등 단순신호만을 감지하여 전달 처리할 수밖에 없었지만, 이번에 ETRI가 개발한 칩을 센서노드에 적용시키면 영상정보 전달 및 음성신호 감지 처리까지도 가능하다. 이에 따라 복잡한 센싱 데이터를 센서노드에서 가공 처리하여 전달할 수 있어 다양한 USN 응용서비스 제공이 가능한 게 특징이다.

즉, 응급상황시 비명을 지르면 주변의 센서가 이를 인식, 센서노드에 정보를 전달해 도움을 청할 수 있고 또는 CCTV의 음영지역에서 센서노드의 설치로 위험신호가 감지되면(호루라기(Whistle)를 불면) 가까운 경찰서에 알려줄 수도 있어 ‘안전귀가 서비스’ 등에도 유용하게 활용될 수 있다.

ETRI는 정보통신부 “RFID/USN용 센서태그 및 센서노드 기술개발” 사업을 통해 에이디칩스와 공동으로 “USN용 고성능 32비트 MCU TMA2560”을 개발하는데 성공했으며, 상용화 시점은 2007년 하반기로 전망했다.

아울러 내년에는 개발된 프로세서와 통신기능 칩을 하나의 칩으로 즉, SoC(System-on- Chip)화 할 계획이여서 통합 칩의 크기 또한 계속 줄게 될 것이다고 밝혔다.

ETRI는 11월 7일부터 코엑스에서 개최되는 ‘RFID/USN KOREA 2006’ 국제 전시회 및 컨퍼런스에 TMA2560 및 본 칩을 이용한 위험감지인식과 산업현장 감시제어 응용 서비스를 옥타컴과 태광이엔시와 공동으로 각각 시연해 보일 예정이다.

_M#]

EISC 프로세서 관련 신문 기사 하나

오늘자 전자신문에 제가 개발하고 있는 [wp]EISC[/wp] 프로세서 관련 기사가 전자신문에 나왔네요..

사실 이 컴파일러 최적화 작업은 회사내(적어도 프로세서팀)에서는 숙원사업과 같은건데.. 아쉽게도 국내 컴파일러 전공 교수님들께서는 “논문 주제가 되기 힘들기 때문에” 연구를 잘 맏아주시지 않았습니다. 저희 내부 컴파일러 팀은 자체적으로 스트레스를 엄청 받고 있었구요..

다행이 [wp]GCC[/wp]에 정통하신 고려대 김선욱 교수님께서 이 프로젝트를 맡아주셔서(사실 예전에 뵙고 말씀 나눈이후에 이분이 맡아주시길 내심 기대하고 있었습니다..), 좋은 결과가 나왔습니다.
아직은 개선해야 할 부분이 상당히 많다고 생각하고 있지만, 프로세서 만드는 입장에서는 컴파일러의 개선보다 좋은 소식이 없습니다. ^^;
어셈블리로 작성해서 비교했을때는 분명히 아주 좋다고 생각하는데.. 컴파일 해보면 컴파일러 성능 때문에 벤치마크 결과가  생각보다 안나오는 경우가 종종 있었거든요..

저희 회사 GCC나 linux port된 소스는 아마도 저희 회사 ftp에서 쉽게 구할 수 있을것이라 생각됩니다. (공개 커뮤니티 지원 인력 문제로.. 적극적으로 공개하고 있지는 않습니다만..) ^^;

[기사 출처: http://www.etnews.co.kr/news/detail.html?id=200610200152]

[#M_기사보기..|닫기|
에이디칩스가 33% 가량 성능이 향상된 컴파일러를 개발, ARM이 장악하고 있는 CPU 코어 시장에 도전장을 내밀었다.

컴파일러란 고급언어로 쓰여진 프로그램을 컴퓨터가 직접 이해할 수 있는 언어로 바꿔주는 프로그램으로, 반도체 코어 개발환경의 핵심 요소다.

에이디칩스(대표 권기홍·사진 http://www.adc.co.kr)는 고려대 김선욱 교수가 이끄는 컴파일러 연구실과 공동으로 32비트 EISC용 컴파일러 버전 2.5를 개발했다고 22일 밝혔다.

이 컴파일러는 서울시 산·학·연협력 사업인 나노 IP·SOC 설계기술혁신 사업단의 지원을 통해 에이디칩스와 고려대가 힘을 합쳐 개발한 것으로, 임베디드 벤치마크 프로그램 (EEMBC)를 실행해 성능을 분석한 결과 기존 EISC 컴파일러보다 33.6%의 성능 향상을 보였으며 ARM9 프로세서와 비교해 약 6%의 성능향상을 결과를 얻었다.

에이디칩스는 ARM9과 같은 급의 국산 CPU 코어 ‘확장명령구조(EISC) AE32000C’를 개발했으면서도 그동안 컴파일러를 비롯한 개발환경을 뒷받침해주지 못해 ARM의 장벽을 뛰어넘지 못했다. ARM9은 전세계 CPU코어 시장의 80% 이상을 장악한 ARM의 대표적인 CPU코어로, 고성능 마이크로컨트롤러나 퀄컴의 CDMA 베이스밴드 칩을 비롯한 다양한 반도체의 코어로 사용되고 있는 제품이다.

[기사 출처: http://www.etnews.co.kr/news/detail.html?id=200610200152]_M#]