Processor Architect.... egoist
프로세서, SoC, ASIC 설계에 대한 재미난 이야기들. 그리고, 쉼표...
BLOG main image
Notice
babyworm은?
CATEGORY
전체 (232)
SoC 설계 관련 (101)
마이크로 프로세서 이야기 (21)
유용한 설계도구 (7)
검증이야기 (14)
관련 새소식 (26)
초보자 코너 (11)
개인적인 (95)
책이야기 (13)
만화/애니메이션 (3)
영화/드라마이야기 (4)
음악이야기 (11)
Boards
질문 게시판
칩쟁이들 모임(올블카페)
TAGS
마이크로 프로세서 synopsys verilog HDL SystemVerilog verification 개인적인 EISC PLI AMD ARM Mentor 프로세서 GPU Cadence Synthesis FPGA 세미나 assertion Intel EDA
Recent Entries
중소기업 SoC의 딜레마 (1)
늙어가고 있는지도 모르겠... (2)
지금 머리속에는...
대충 살아가는 느낌이다.
나참..
via nano와 Intel atom간...
근황과 MPFJ2008
Core-A launching 행사 (8)
수원시대.. (2)
Microprocessor Forum Jap...
Recent Comments
현재 국내 대부분의 업체가...
10/10 - knight
네.. 코딩 할때는 즐거운 느...
10/04 - babyworm
Coding이 제일 재미있지요. ^...
10/02 - donny
VMWare의 경우 host OS 상에...
09/22 - babyworm
Vmware 에서 하드웨어로 가상...
09/21 - 라이천령
Recent Trackbacks
Verilog Coding Style for Sy...
Stay Tuned...
CEO's Leadership Seminar
Stay Tuned...
사악한 쌍둥이 full_case와 p...
Stay Tuned...
칩쟁이들의 모임등록
Stay Tuned...
드디어 리만 가설을 다읽었습...
blueecho의 생각바구니
Calendar
«   2008/10   »
일 월 화 수 목 금 토
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Archive
2008/10
2008/09
2008/08
2008/07
2008/06
2008/05
2008/04
2008/03
2008/02
2008/01
2007/12
2007/11
Link Site
[B]babyworm의 개인적인 블로그
[B]PAPA JOHN'S
[Javaworld] 볕태들의 집합소
[JW] 얌탱옹 블로그
[JW] 킴송 사진첩
[JW]*ㅡ아바미아 스토리-*
[JW]:+: Welcome To (( sccid...
[JW]iDea Holic
[JW]JS™
[JW]Jung-Hyeon's weB@LOG
[JW]Kino's blog
[JW]zzbe의 tattertools
[JW]볕태 앙뷁
[JW]애니와 만화의 세계!
[JW]자유로운 늑대의 울음으로~~
[JW]첫사랑 첼로
[JW]최신컴터 놀이~
[KTUG]글과 음악
[KTUG]도은이네 집
[KTUG]문학적프로그래밍
[KTUG]시냅스
[W] eetimes
[W] KERIS 학술 정보 서비스
[W] Microprocessor Report
[W] verification guild
[W]ASIC&FPGA cafe
[W]filedic
[W]WWW CA Page
[W]개인적인 게시판
[W]아람92
내 금전출납부
185499 Visitors up to today!
Today 29 hit, Yesterday 134 hit

English Ver. (by Google)
Creative Commons License
이 블로그의 모든 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
한RSS에 추가 add to Bloglines
add to google


Add to Technorati Favorites



Candle
'EISC'에 해당되는 글 9건
ARM의 Cortex-A9 프로세서. | 2007/10/05
참 파란만장합니다. (16) | 2007/07/02
PLI와 Simulator의 연결(I) | 2007/06/11
Verilog 관련 검색에 대한 친절한(?) 답변과 리퍼러 로그.. | 2006/11/10
EISC 관련 기사 하나.. TMA2560-RFID/USN용 센서 노드 칩 | 2006/11/07
EISC 프로세서 관련 신문 기사 하나 (4) | 2006/10/23
국산 마이크로 프로세서 (4) | 2006/09/04
똑똑한 프로세서가 늘어난다. | 2006/08/10
새로운 프로세서를 만들다.. (2) | 2006/07/16
ARM의 Cortex-A9 프로세서.
[babyworm, 2007/10/05 13:32, SoC 설계 관련/마이크로 프로세서 이야기]

ARM에서 Cortex-A9을 발표하였다고 합니다 [ZDNet 기사]. 일단 저에게 있어서는 한숨 쉬어지는 일이고(ARM의 행보가 점차 빨라지니, 저희같은 업체가 따라잡을 수 있는 여지가 줄어들고 있는 것이 사실이니 말입니다.), 업계에 있어서는 환영할 만한 일이겠습니다. Cortex-A9의 경우 4개 까지 MP로 구성이 가능하다고 하니(MP 구성을 따지는 것으로 보아, cache snooping이 고려된 SMP겠지요..), 대단한 성능을 기대할 수 있겠습니다.

여기서 재미있는 것이 Intel의 대응인데요. 기존에 ARM 기반의 프로세서를 만들다가 해당 부분을 과감히 정리하였지요. 근데, EETimes에 의하면 Intel이 ARC의 프로세서를 라이센스했다고 합니다[EETimes 기사]. ARM 기반을 정리할 때는 x86기반의 embedded processor쪽으로 무게를 둔다고 생각했는데, 범용쪽은 x86기반, 저전력이 요구되는 application specific한 부분은 configurable processor인 ARC쪽에 무게를 두는 느낌입니다. 그래도, x86기반에서도 충분히 configurable하게 만드는데 어려움이 없을 것인데.. 저전력을 위해서 이런 결정을 내린 것이 아닌가 하는 생각입니다.

이러한 행보에 맞추어 저희 회사에서는 Heterogeneous MPSoC쪽에 무게를 두고, 여기에 적합한 lightweight/low power processor와 interconnection에 무게를 두고 있습니다[네이버]. 몇 가지 재미있는 아키텍처적인 시도를 구상하고 있는데, 보도 자료에는 좀 이상하게 나간 느낌이 있습니다. 물론, 마케팅적인 측면을 위해서 빠른 프로세서를 만들어야 겠다는 생각은 변함이 없습니다만.. 실제로 MPSoC에서 중요한 것은 적절한 성능의 작은 footprint를 지닌  low power 프로세서들이니까요. (적절한 성능이란 것이 task에 따라 바뀌는 것이므로, 아주 강력한 프로세서를 개발해야 할 필요성도 있는 것이지요)

뭔가 흥미 진진해질 것 같아요.

네이버에 북마크 다음에 북마크 마가린 바르기 HanRSS에 북마크하기 이올린에 북마크하기 News2.0에 투고하기 del.icio.us에 북마크하기 Digg에 번역해 투고하기 dzone에 번역해 투고하기 붐바
babyworm
2007/10/05 13:32 2007/10/05 13:32
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
ARC, ARM, Cortex, EISC, Intel, MPSoC, 마이크로 프로세서

Trackback0 : Comment0
누적조회 2078 : 오늘조회 1
Trackback Address :: http://babyworm.net/tatter/trackback/196
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret
참 파란만장합니다.
[babyworm, 2007/07/02 22:56, 개인적인]
음.. 원래 잉걸에는 손을 대지 않는 것이 정답이긴 한데.. 답답하긴 답답하네요.

몇번 쓴적이 있습니다만.. 개인적으로 프로세서를 만들어 봐야겠다는 생각에 이 일에 전념해 온지도 상당한 시간이 흘렀고, 어느 정도 가시적인 성과를 거둔 것도 있습니다. 아직은 마케팅력에 문제와 ARM의 거대함을 절감하고 있는 중이라는 것이 정답이겠지만.. 작은 회사에서 프로세서라는 하기 힘든 아이템을 가지고, 이만큼 버텨내면서 여기까지 온것이 자체도 대단하다고 생각하지요. 근데, 오늘 같은 일이 벌어지면, 제가 왜 프로세서를 했는지 참 의아합니다.

대중에게 잘 회자되지 않을 만한 무언가를 했다면 이슈화도 덜 되었을 것이고, 덜 힘들었을 것인데 말입니다.
예전에 회사에 좋지 않을 일이 있었을 때, 가장 먼저 나온 이야기가 "기술이 허깨비다"라는 말이지요. 그럼 제가 만든건 허깨비란 이야기지요 ^^; 뭐랄까요.. 많은 분들이 돈앞에서 이런 저런 이야기를 하는데, 그런 이야기를 보고 당시에 많은 엔지니어들이 회사를 떠났습니다. 자존심하나로 버티는 사람들이니까요.
이번에도 뭐 이런 저런 이야기 많습니다. 역시 또 나오는 이야기들 중의 하나가 "기술이 허깨비다"라는 이야기인데요.. 그 동안의 노력이 많은 분들의 말에 폄하되는 것이 참을 수 없군요. 여러 전문 위원들의 기술 평가 결과는 욕심 앞에서는 그냥 하나의 "글"일 뿐이고, 단지 뭔가 이유를 찾으려 하는 건 알고 있지만...
엔지니어로서 잘못이 있다면, ARM에 비하여 압도적인 performance를 내는 프로세서를 아직까지 만들지 못한 것이 잘못이겠지요. 이런 저런 말이 뭐가 필요하겠습니까.. ^^; 엔지니어는 기술로 자신을 나타내는 것이겠지요. Market 고려하지 않고 회사와 싸워서라도 제대로 하나 만들어야만 직성이 풀리겠습니다. 내년 9월 쯤을 기대해 주세요 
네이버에 북마크 다음에 북마크 마가린 바르기 HanRSS에 북마크하기 이올린에 북마크하기 News2.0에 투고하기 del.icio.us에 북마크하기 Digg에 번역해 투고하기 dzone에 번역해 투고하기 붐바
babyworm
2007/07/02 22:56 2007/07/02 22:56
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
EISC, 마이크로 프로세서

Trackback0 : Comment16
누적조회 706 : 오늘조회 1
Trackback Address :: http://babyworm.net/tatter/trackback/182
gnil | 2007/07/03 01:40 | PERMALINK | EDIT/DEL | REPLY
이런... 뭔가 새로운 시너지가 나오나 싶었더니...
뚜껑 열기 전까진 정말 알 수 없는 세상이네요;;
힘내세요 ㅜ.ㅜ
babyworm | 2007/07/03 21:52 | PERMALINK | EDIT/DEL
헛.. 설계 회의 갔다왔더니만, 많은 분들이 리플 달아주셨군요..
사실 사외에서는 시끄러운데, 회사에서는 참 파란만장하다는 생각만하고 다들 열심히 개발중입니다. :)
감사합니다.
내가그린 | 2007/07/03 02:12 | PERMALINK | EDIT/DEL | REPLY
신문에서 결렬건을 읽었습니다.
저도 이 바닥 뻔히 아는데 지금까지 한국에서 버텨오신 것만도 대단하신겁니다.
최소한 기술과 경험이라도 머릿속에 남았지 않습니까. 그것만도 부럽습니다.
babyworm | 2007/07/03 21:52 | PERMALINK | EDIT/DEL
참 이 바닥이 재미는 있어요.. :)
걱정해 주셔서 감사합니다.
조운. | 2007/07/03 22:09 | PERMALINK | EDIT/DEL | REPLY
이 선임연구원님. 힘내세요. 파이팅입니다.
^^ ps. 죄송...
babyworm | 2007/07/03 21:54 | PERMALINK | EDIT/DEL
흠..다행히 회사에서 이 선임은 한명이니 그 친구한테 파이팅 메시지를 대신 전해드리겠습니다. ^^;
참고적으로 전 김책임입니다. :)
sunken | 2007/07/03 15:03 | PERMALINK | EDIT/DEL | REPLY
대전에서 조용히 컴파일러 뒤적이는 학생입니다.
좋은 글 많이 써 주셔서 조용히 읽고만 있었는데 안타깝기도 하고 해서 힘내시라고 덧글 남깁니다.
인수 소식을 들었을 때 처음엔 솔직히 의아하기도 했습니다.
마케팅 위주의 회사가 왠일로 기술개발에 그런 진지함을 보여주나 해서요.
그래도 나름 기대 많았는데.. 결국 이렇게 되니 정말 안타깝네요.
윗 분 말씀대로 여기서 그렇게 버텨오신 것 만으로도 대단하게 생각합니다.
조금만 더 버텨주세요. ^^
babyworm | 2007/07/03 21:58 | PERMALINK | EDIT/DEL
네.. 감사합니다.
지금 상황에서는 위에 본문에 적은 이유로 그만둘 수 없습니다. ^^;
버틴다는 느낌보다는 당연히 다시 돌아와 할일 하고 있는 기분입니다. 즐거운 경험은 아니었지만요.. :)
여담입니다만.. 컴파일러를 하시는 분이시군요! 국내에 컴파일러 전공하시는 분이 적어서, 저희 회사에서 아주 고전하고 있는데 말입니다. :)
혹시 나중에 기회된다면 같이 일할 기회가 있었으면 좋겠네요..
내가그린 | 2007/07/04 03:31 | PERMALINK | EDIT/DEL | REPLY
말이 나온 김에,
저는 보스턴(Cambridge)에서 프로세서 아키텍쳐 전공으로 포닥을 하고 있습니다.
8월말에 한국에 들어가는데, 한국에서는 이 전공을 살리기 (아니 더 정확히
표현하자면 "고집하기" ) 어려워서.. 다른쪽으로 돌려야 하지 않나 고민중입니다.

그래서 더 대단하시다고 말씀드리는겁니다. 98년? 99년? 시스템IC 2010 프로젝트에
저도 다른팀으로 참여했었는데 그때 EISC 보고 여태까지 지속될거라고는 상상도 못했습니다.
babyworm | 2007/07/03 23:39 | PERMALINK | EDIT/DEL
아.. 그런 인연이 있으시군요.. 반갑습니다. 다른 팀이라면 S사의 CalmRISC였겠군요.
제가 아쉬워하는 것중에 하나가 calm을 S사가 열심히 개발하고, 너무나도 쉽게 포기한 후 ARM으로 돌아선 것입니다. 참 좋은 기회였는데 말입니다. 당시 S사와의 경쟁 과제로 국책 평가 받을 때 재미있는 뒷 이야기가 많았지요 ^^;
현재 국내에서 저희 회사를 제외하고도 어느 정도 프로세서를 하는 팀은 몇 곳이 있습니다. 아쉽게도 상용화 계획이 있는 건 아니고 프로젝트 기반이라 어찌될지 모른다는 면이 있기는 하지만, 굳이 전공을 못 살리실 이유는 없을 것 같습니다. 부족하지만 저희 회사도 있구요 ^^;
내가그린 | 2007/07/04 03:33 | PERMALINK | EDIT/DEL
아 당시 저는 학생이었고 H전자의 서브과제로 멀티미디어 프로세서를 개발했습니다.
babyworm | 2007/07/04 18:17 | PERMALINK | EDIT/DEL
아.. 그러시군요. ^^;
비밀방문자 | 2007/07/04 10:23 | PERMALINK | EDIT/DEL | REPLY
관리자만 볼 수 있는 댓글입니다.
비밀방문자 | 2007/07/04 10:23 | PERMALINK | EDIT/DEL | REPLY
관리자만 볼 수 있는 댓글입니다.
babyworm | 2007/07/04 18:20 | PERMALINK | EDIT/DEL
EISC에 대한 문의 사항이 있으시다면, 언제든지 e-mail 주시기 바랍니다. 회사로 연락 주셔도 좋구요. :)
파파존스 | 2007/07/07 02:48 | PERMALINK | EDIT/DEL | REPLY
Dr.Kim님....
SKT에 당한것도 억울한데.. 또 파란만장한 사건 저희 팀에 한건 더 있습니다.
월요일 이야기해드리죠~
오늘 이사날인가요? 욕 보이소~
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret
PLI와 Simulator의 연결(I)
[babyworm, 2007/06/11 23:45, SoC 설계 관련/검증이야기]

Automated Functional Verification 방법에는 여러 가지가 있지만, testvector 발생 유닛(보통 Directed Random방식을 사용하지요?)과 golden model을 이용한 checker model을 만들어서 DUV(Design Under Verification)의 결과와 비교하는 것이 가장 편한 방법 중에 하나임은 부정할 수 없습니다. (여담입니다만, 국내에서는 많은 경우 golden model없이 설계하는 경우가 많아서 검증을 위하여 작성한 golden model이 실제로 RTL보다도 정확성이 떨어지는 경우가 있다는 것이 문제가 종종 발생합니다. 여기서는 golden모델의 확보에 대한 이야기는 나중으로 미루죠.)보통 golden model은 C model을 이용하게 되는데, C 모델을 Verilog와 동시에 simulation하는 것은 그리 녹녹한 일이 아닙니다.

저는 프로세서를 대부분 다루기 때문에 C모델이라 함이 대부분 ISS simulator가 됩니다. 이후에 Simulator와 C모델은 그냥 섞어 쓸 가능성이 높은데, 보시는 분께서 편하신 대로 생각하시면 되겠습니다.

우선 Simulator를 만들 때 그 목적을 정확히 할 필요가 있습니다. 초기에 Simulator의 목적은 executable spec.의 의미가 가장 중요한 의미였을 것입니다. 그래서, 대부분 function level의 정확성을 가지지요. 프로세서의 경우 보통 이야기하는 ISS(Instruction Set Simulator)정도의 수준일 것입니다.

이때 고려하는 사항은 동작의 정확성, 빠른 동작 속도, 유연한 변경 가능성(design space exploration을 해야 하니까요)과 같은 것을 고려하게 됩니다.

그런데, 아시다시피 Verilog와 Simulation을 한다던지, Verilog Model대신 사용하려고 할 경우에는 ISS level뿐만 아니라, BFM 수준, 간혹은 Pin-level accuracy를 필요하게 됩니다. 통신이나 영상쪽의 모델은 뭐 Functional model이나 BFM이나 큰 어려움이 없습니다. Latency가 거의 정의되어 있기 때문이지요.

프로세서의 경우 약간 복잡해지는데, hazard의 발생, instruction issue rate의 변화, exception의 발생을 고려해야 하는데, 이 경우 bus function이 발생하는 Instruction Fetch와 Data Access stage의 동작을 모사하기 위해서는 대부분의 pipeline을 표현해내야 합니다. 예전에 pipeline 수준의 accuracy를 가지는 simulator를 만들고, pin-level interface를 붙여서 나름대로 쓸만한 PLI model을 만든 적이 있지요. 단지 문제는 pipeline수준의 accuracy를 가지다 보니, 너무 너무 느려져 버린거지요.

쉽게 쉽게 만들려면 functional model로 simulator를 만들고, Verilog Model(DUV)상에 하나의 명령이 retire되는 순간에 register들의 값을 비교하는 방법도 가능합니다. 하지만, 해당 model이 불필요한 hazard 발생은 없는지, Instruction Fetching에 불필요한 사항이 추가되지는 않았는지 확인 할 수는 없습니다. (당연하죠.. reference model이 functional model이니 timing spec.을 만족시켰는지는 알수 없는것이지요)

흠.. 많이 옆으로 샜는데요..

C Model과 Verilog와 붙이는 방법이 Verilog-PLI (Programming Language Interface)를 이용하는 겁니다. Simulator는 clock단위로 동작하므로, 느낌상 아래와 같이 동작시키면 될 것 같습니다. 이런 경우에 verilog에서 C function을 호출할 때 가장 많이 사용되는 건 calltf()를 이용하는 방법입니다.


always @(posedge clk or negedge rst_x) begin

  $run_sim_calltf(xxxx);

end

즉, run_sim()을 calltf()의 callback function으로 등록하는 겁니다. 그리고, 매 클럭 calltf()를 불러주는 것이지요.

근데, simualtor의 이전 상태를 계속적으로 보존해야 하는 경우에는 매 클럭 새롭게 호출되는 calltf()를 이용할 때 문제가 있을 수 있습니다. (사실 그리 어려운 일은 아닙니다만, 예를 들기 위하여 ^^ ) 그래서, 내용을 보존하고 싶을 때는 misctf()를 사용하는 것도 괜찮습니다. misctf()는 원래 verilog simulation의 이런 저런 정리 작업을 하는데 사용하는 목적으로 만드는 건데요. 아래와 같이도 사용할 수 있습니다.


initial begin

  $run_sim_misctf(data, reason, paramvc);

end

뭐 이런 느낌입니다. misctf()의 경우 시뮬레이터의 초기 시에 simulator에 연결된 이후에 simulator의 종료 시까지 계속 머무르면서 파라미터의 값이 변경 될 때 마다 제어권을 가집니다. 이 파라미터의 변화시마다 클럭이 변화되었는지 확인하고, 클럭이 변화하였을 때 값을 호출하면 되겠습니다.


아래는 한 4년 전에 만든 PLI 모델중의 misctf부분인데요.. 실제 구현은 없으니 공개해도 별 문제 없을 것입니다. ^^; 대략 이런 느낌으로 만드시면 됩니다. :)
다음 번에는 좀 더 재미난 PLI 함수를 다루어보죠.. (아.. VPI는 초반에 좀 다루지 않네요. ^^; Blog의 예제를 위해서라도 예전에 acc_와 tf_를 이용해서 만든 PLI 모델을 업그레이드해야겠군요. )


int misctf_proc(int data, int reason,int paramvc) {
 
 static int  reset_called = FALSE;
 int   POInt;
 
 
 
 switch (reason) {
  case reason_paramvc : { // 파라미터의 값 변화로 인한 호출의 경우
   if (tf_getp(PIN_RST_X) == 0) { // reset state
    // 아래의 형태는 초기 조건에서의 리셋 호출을 위하여 사용된다.
    if (reset_called == FALSE || paramvc == PIN_RST_X) {
     io_printf("$AE32KB_RUN : CORE RESET CONDITION\n");
     // 실제적인 reset을 수행한다.
     
     reset_called = TRUE;
     
     POInt = 0;
     
     if (tf_getp(PIN_OSIEN) == 1) {
      POInt = POInt | OSIEN;
      if (tf_getp(PIN_OSIROM) == 1) {
       POInt = POInt | OSIROM;
      }
     }
     ResetCore(POInt);
    }
   }
   else if ( paramvc == PIN_CLK ) {  
    if (is_posedge(PIN_CLK,paramvc) == TRUE) {
     // 변경된 모든 입력 값을 받아서 반영한다. 
     apply_input();
     io_printf("%s : CLOCK POSEDGE\n", tf_strgettime());
     
     EndClock();
     // end_clock함수
     
     StartClock();
     // start clock 함수
     
     // 변경된 데이터를 기반으로 핀과 레지스터를 변경시킨다.
    }
   }
   break;
  }
//  case
  default :
  break;
 }
 
 // apply outputs
 apply_output();
    return 0;
}


이제 EISC processor도 어느 정도 정비를 마치고, 빠른 미래에  좀 더 공격적인 마케팅을 시작할 예정입니다. ^^; 많이 기대를 해 주세요.. 특히 학생분들께 좋은 기회가 많이 돌아가도록 노력 중입니다.
네이버에 북마크 다음에 북마크 마가린 바르기 HanRSS에 북마크하기 이올린에 북마크하기 News2.0에 투고하기 del.icio.us에 북마크하기 Digg에 번역해 투고하기 dzone에 번역해 투고하기 붐바
babyworm
2007/06/11 23:45 2007/06/11 23:45
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
EISC, PLI, Simulator, verification, verilog HDL

Trackback0 : Comment0
누적조회 969 : 오늘조회 1
Trackback Address :: http://babyworm.net/tatter/trackback/177
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret
Verilog 관련 검색에 대한 친절한(?) 답변과 리퍼러 로그..
[babyworm, 2006/11/10 17:26, SoC 설계 관련/초보자 코너]

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

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

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

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

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

ESNUG내용보기

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

대안으로는 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이후에 값이 갱신되기 때문이죠.

b = a;
c = b;
d = c;
---
b <= a;
c <= b;
d <= c;

이해 되시려나요?

* 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 관련 메뉴얼을 참조하세요.. 소스코드와 작성법이 다 있으니까요..^^;

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

네이버에 북마크 다음에 북마크 마가린 바르기 HanRSS에 북마크하기 이올린에 북마크하기 News2.0에 투고하기 del.icio.us에 북마크하기 Digg에 번역해 투고하기 dzone에 번역해 투고하기 붐바
babyworm
2006/11/10 17:26 2006/11/10 17:26
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
AMD, ARM, EISC, PLI, processor, TCL/TK, verilog HDL, 리퍼러 로그, 프로세서

Trackback0 : Comment0
누적조회 1414 : 오늘조회 2
Trackback Address :: http://babyworm.net/tatter/trackback/97
[로그인][오픈아이디란?]
Name
Password
Homepage

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

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

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

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

기사보기