|
'verification'에 해당되는 글 14건
[babyworm, 2009/08/05 11:25, 책이야기]
이 책은 얼마전에 새로 사서 요즘에 읽기 시작한 책인데요, 여기에도 있네요. 온라인 상에서 찾을 수 있을 줄은 생각도 못했습니다. :) 대단한 scribd.com..
SystemVerilog의 경우 설계용 언어라기 보다는, 또한, 모델링용 언어라기 보다는(C/C++에 기반을 둔 SystemC가 있기 때문에), 검증용 확장이라 생각하고 있는데, SystemVerilog for Design에 이어서 검증에 초점을 두고 쓰여진 책이지요. 저도 앞 부분을 읽고 있는 중이라 아직 뭐라 말씀드리기는 너무도 이른 시점이고... 관심 있으신 분은 살펴보시면 한번 보셨으면 합니다. 지난번에 한번 말씀드렸습니다만, systemverilog에 대하여 좀 정리해서 나중에 한꺼번에 올릴려고 계획중에 있는데요.. SVA 책이나 이책을 보면서 내용을 좀 더 추가하고 있는 중입니다. 항상 글을 쓰고 즉흥적으로 올려야지, 나중에 보면 참 부끄러운 것이 많아서 자주 들춰보게 되고, 점점 더 못올리게 된다는 단점이 있군요. 문제는 이러다가 충동적으로 그냥 글을(교정도 안하고) 올리는 경우가 생기는 것도 문제구요. 쩝. 쓰고보니, 이 글도 책이야기라기 보다는 잡담이군요 :) p.s. 지난번에 산 책중에 step-by-step functional verification with systemverilog and ovm이란 책이 있는데, 와.. 내용은 분명 좋은데, 페이지마다 글자가 너무 많아서 참 진도가 안나가는 책이더군요 :) 바꿔 말하면 사셔도 크게 후회하지 않을 분량의 책입니다. ^^;
[babyworm, 2009/08/04 09:22, SoC 설계 관련/관련 새소식]
OVM과 AVM을 밀고 있는 mentor에서 verification academy를 열었습니다. [여기]
현재는 아래의 세개 모듈로 구성되어 있으며, Flash 기반으로 구성되어 있어서 왠만한 웹브라우저에서는 모두 접근 가능하다는 장점이 있습니다. 단, 현재는 회사 메일로만 가입을 받고 있다고 적혀 있는데, 학생들도 가능할지는 모르겠습니다. Evolving Capabilities Module (전반적인 overview)Assertion-Based Verification Module (ABV에 대한 설명)
(CDC) Clock-Domain Crossing Verification Module (CDC 부분의 검증 방법)
홈페이지에서 등록 신청하시면 하루 정도 이내에 registration 관련 메일을 보내줍니다. 메일을 받은 후에 login 계정을 activation 시키면 되는 거죠. 검증 특히 ABV에 관심 있으신 분들께는 좋은 강좌일 것같습니다.
[babyworm, 2009/03/09 14:14, SoC 설계 관련/관련 새소식]
1.
[babyworm, 2009/02/26 15:55, SoC 설계 관련/관련 새소식]
가끔 올리는 짧은 소식 몇 가지. 1. Synopsys에서 Low Power Verification Methodology Manual을 공개하였습니다 저는 다운만 받고 아직 훓어보지도 못해서 no comment입니다. ^^;
2. Mentor가 OVM을 기반으로 VMM code를 지원하겠다고 발표했습니다. (실질적으로는 VMM의 function을 OVM 함수를 이용하여 구현한 것이겠습니다) 아래 posting에 댓글 달아주신 홍용재님의 글처럼, OVM은 e, SystemC로 지원할 계획을 가지고 있습니다. 대부분의 interface 함수를 공유하게 될 것이니, 기존의 작업은 그대로 둘 수 있고, e, SystemC를 HVL로 이용하여 모델링 하시던 분들을 역시 적극적으로 끌어들이겠다는 전략으로 해석됩니다.
3. 드디어 simulation 가능한 툴이 생겨서 OVM을 좀 보고 있습니다. SystemVerilog의 Class를 참 잘 이용한 것 같습니다. 제가 평소에 하는 프로그래밍이라는 것이 대부분 모델링이라 보통 프로그래밍을 할 때 속도 문제로 OOP는 잘 사용하지 않는데(특히 virtual function의 경우 상당히 느려집니다), 걍 편하게 살자는 마음과 Verification에 한정하니 머리가 편해지는군요. OOP라는 것이 처음에 class design(실제적으로는 상속의 남발 ^^;) 잘못하면 낭패를 보는 경우가 많은데, 대부분의 코드가 공유될 때 편하긴 편하지요.
4. ABV를 여쭈어 보시는 분들이 많은데 SystemVerilog에서 출발해야 할 부분이라고 생각되어서, 취미 삼아 Verilog사용자를 위한 SystemVerilog Guide를 지난달부터 작성하고 있는데, 회사 일과 크게 관련이 없는지라 주말에 집에서 하는 작업으로 한정하고 생각하다 보니 진도가 아주 느립니다. 어느 정도 정리되면 올리겠습니다. (대부분 doulos.com의 Tutorial 자료를 참고하고 있고, 내용에서 빠지는 부분을 채우고, 제 생각에 별로 필요 없는 부분 – 그런게 있나요.. ^^; -은 제외하고 작성하고 있습니다. --- 쓰고 보니 요즘 문서작업으로 바쁜데.. 그 와중에 또 글을 쓰는 건 뭐지… 라는 생각이 드는 군요. (시험 전달에 이상하게 몰아두었던 만화나 드라마나 심지어 논문이 재미있어지는 것과 비슷한 현상일지도..)
[babyworm, 2007/06/19 21:22, SoC 설계 관련/검증이야기]
연일 30도를 넘나드는 더위가 계속되고 있습니다. 이럴때 항상 문제가 되는 것이 집중력이 떨어진다는 건데요.. 저도 마찬가지 입니다. 오늘만해도 gcc-MinGW에서 mti vpi 연결시키는 거 때문에 잠깐 modelsim userguide를 보다가, 딴짓을 하기 시작해서 대략한 5시간동안 딴짓을 했습니다. 뭐 딴짓이라고 해도 모레쯤이나 하려던 processor market forecasting자료 정리였는데, 어짜다보니 하고 있더군요. 이건 뭐, 원래 하려던 일은 까맣게 잊고 나중에 하려던 일을 한참하다가 "아.. 내가 오늘 하려던 일은 이게 아닌데.. " 뭐 이런 시나리오라고나 할까요. VPI 이야기가 나와서 그러는데요.. (또또.. 옆길로 빠집니다요) 회사 툴이 System Verilog-verification feature를 지원해주지 않아서, C/PLI나 만들어야 겠다는 이야기를 했었죠? 요즘 teal library를 분석하고 있는 중인데, 이거야 원.. 보면서 몇 번을 감탄한 것인지 모르겠습니다. 사실 뭐 PLI 연결하는 것이야 별 차이있겠습니까? 뭐 thread를 사용하는 것도 그렇다치구요.. 근데, PLI 연결 부분을 teal_synch.cpp라는 몰아두고, 이걸 class로 덮어씌우고 연산자 오버로딩을 해버리니 예술적인 경지에 이르르더군요. 사용하는 사람 입장에서는 이 부분이 verilog랑 붙기 때문에 어쩌구 저쩌구 생각할 필요가 거의 없도록 만들어졌더군요. 아쉽게도 저는 유연성 보다는 빠른 동작을 즐기기 때문에 teal을 그대로 이용하지는 않겠지만, (처음에는) 재미삼아 분석해 본 라이브러리인데 아주 많은 걸 배웠습니다. 천재성이 담긴 코드에요.. 저에겐 '이 정도쯤은 해야 verification engineer가 되는 건가.. 에효..' 라는 상념에 빠지게 하더군요.. C++에 익숙하시고, PLI를 공부중인 분들은 상당히 도움을 받으실 수 있을 것 같습니다. 혹시라도 관심있으신분은 http://www.trusster.com/ 에서 다운 받아보실 수 있습니다. 이거 관련된 책도 있는데, 아직은 저도 본 상태가 아니라 뭐라 말씀드리기는 어렵습니다. (TRUSS도 아직 사용해보지 못했습니만, Teal만으로도 괜찮습니다 ^^;) 아.. 그러고보니 관련 기사도 있었군요.. EETimes Korea의 기사입니다. ARCH_LIB_OPT = -L/cygdrive/c/Modeltech_6.0/win32 -lmtipli
ARCH_SHARED_SUFFIX = dll SYS_ARCH_CC = g++ 3) Makefile을 수정합니다. SIMULATOR_HOME = /cygdrive/c/Modeltech_6.0
ARCH = Windows SIM = mti_2_0
[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부분인데요.. 실제 구현은 없으니 공개해도 별 문제 없을 것입니다. ^^; 대략 이런 느낌으로 만드시면 됩니다. :) 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도 어느 정도 정비를 마치고, 빠른 미래에 좀 더 공격적인 마케팅을 시작할 예정입니다. ^^; 많이 기대를 해 주세요.. 특히 학생분들께 좋은 기회가 많이 돌아가도록 노력 중입니다.
[babyworm, 2007/06/04 23:46, SoC 설계 관련/검증이야기]
뭐랄까요.. 요즘 이런 저런 일로 바쁘다보니, 사람이 좀 얇팍하게 글을 쓰게되네요. :) rtnval = get_id();
do_intest(serin); do_extest(serin);
xxx.pl <filename.input>
이런식으로 처리하려면, 중간에 다음과 같은 루틴을 넣어줍니다. do "$ARGV[0]";
위의 한 행은 해당 파일($ARGV[0])에 지정된 "perl" 명령어들을 읽어와서 해석하는 부분입니다.
[babyworm, 2007/03/27 20:56, SoC 설계 관련/검증이야기]
"추상화 수준", "추상화 단계"라 불리는 용어이지요. 아마도 C++를 다루실 때 많이 접하셨을 것이라 생각합니다. ^^; 추상화 수준이라는 것은 말 그대로 추상화의 정도입니다. 추상화의 반대가 구체화라는 것은 아실 것이고, 추상화는 생각에, 구체화는 사물에 가깝다는 것도 아실 것이라 생각합니다. 모든 작품(?)이 다들 그렇지만, 머리 속의 관념이(ASIC에서는 알고리즘) 표현 도구를 통하여 구체화되는 과정을 거쳐서 하나의 작품이 됩니다. 이때 머리속의 관념은 추상화 단계에서 점차 구체화되는데요.. 칩쟁이들이 잘 하는 말로 algorithm level, architecture level, register transfer level, gate level, physical implement level 뭐 이 정도 표현할 수 있겠습니다. ASIC에 있어서 보통 RTL이라고 하는 register transfer level에서부터 physical impelmentation level(즉, GDSII라는 완성된 그림이 나오는 단계)까지는 EDA툴이라 부르는 CAD툴에 거의 전적으로 의존하게 됩니다. (아날로그 하시는 분들이 빼고요.. 그 분들은 직접 그림을 그리시는 artist잖아요~ ^^;) 즉, 설계라는 분야란 기계적으로 말하자면 algorithm을 RTL로 변환하는 과정을 의미합니다. "기계적"이란 용어를 사용한 건 말이 그렇다는 것을 알려드리고 싶어서입니다. ^^; 검증에서는 약간 더 많은 추상화 단계를 지닙니다. 사실 검증이라기 보다는 modeling이라는 표현이 맞겠습니다. 이건 model의 정확성과 수행 시간간의 상관관계 때문에 아주 정확하지 않아도 되는 부분은 추상적으로 표현해서 속도를 빠르게 할 수 있기 때문이지요. 예를 들어, gate 수준으로 구현된 netlist simulation보다 RTL simulation이 훨씬 빠른 것이 당연하고, RTL simulation보다 대략적인 functional model을 이용하는 것이 더 빠르니까요. 이 functional model은 약간 더 세분하면
대략 이런식으로 나눕니다. 물론, 이것 이외에도 behavior level을 나누는 형태로
둘 사이에 많은 유사점이 있는데, 큰 사항은 transaction을 추상화 할 것이냐 차이겠습니다. 사실 pipelined processor와 같은 control 위주의 모델에서는 transaction model이 크게 편하지 않습니다. 어짜피 명령어 fetching 이후에 몇번째 사이클에서 data bus에 어떤 종류의 transaction이 발생할지를 알아내기 위해서는 어느 정도 구체화를 해야하니까요. 하지만, 통신 모델이라던지 연산 모델에서는 이게 상당히 쉽습니다. latency정도만 알면 연산하고 latency이후에 결과를 내놓는 형태로 구현되니까요. 그래서 알고리즘, 통신 쪽에서 transaction model이 각광받고 있고, ASIC에서 이쪽 분야가 차지하는 비중을 생각할때 이 모델들이 중요시 되는 것이겠지요. ^^; 추가적으로 검증에서는 어떤 수를 써서라도 추상화 레벨을 높여주는 것이 필요합니다. 왜냐하면, 더 정확한 검증이란 더 많은 검증 벡터를 기존 벡터가 cover하지 못한 부분에 generation해 주어야 하고, 많은 검증 벡터를 주어진 시간안에 수행하여 coverage를 높이기 위해서는 모델이 더 빨라져야 하며, 이를 가장 보장해주는 방법이 추상화 수준을 높이는 것이기 때문입니다. ^^; p.s. system verilog의 verification feature(class나 dynamic array, queue같은..)가 지원되는 "저가" simualtor 좋은 거 없나요? ㅎㅎ
[babyworm, 2007/03/19 23:41, 개인적인]
Tapeout 직전에 발생한 여러가지 문제들이 좋은 방향으로 해결되었습니다.
[babyworm, 2006/12/28 00:12, 책이야기]
사실 원래 제목은 Springer의 DVCon06, DAC06, ICCAD06의 best selling book이라 지어야 정상이겠죠.
이 글은 Deepchip의 글을 바탕으로 적습니다. DVCon이라는 것이 Design verification engineer들에게 최대의 축제라는 것은 아실테고.. 거기서 많이 팔린 책은 다음과 같습니다. DVCon Best Seller 10 보기 대세가 System Verilog입니다. 게다가 1,2위가 모두 verification guild를 이끌고 있는 Janick Bergeron의 책이네요.. 얼마전에 주문해 놨는데.. 언제 올지는 모르겠네요.. 4번에 나온 System Verilog for design(1판)은 저도 가지고 있고, 한번 훓어 본 책인데.. 음.. 설계 위주이고, 설계 관점에서 system verilog가 나아진점.. 합성을 위한 선택사항들이 잘 나와 있습니다. 언어 자체에는 충실하죠. 10번의 Verification Plans는 읽은지 좀 된 책인데.. 전 아주 좋은 책인지는 잘 모르겠습니다만.. 실무적으로 고민하게 될때 좋은 Guide이기는 합니다. 근데, 책값에 비해서 너무 얇고.. 질도 좀 떨어지고..^^; 전반적으로 System Verilog를 이용한 Assertion/Constraint-Based Verification이 대세다.. 라고 볼 수 있겠습니다. DAC은 CAD툴 만드는 분들의 축제이니 만큼, 언어 자체에 대한 내용을 기대해 볼만 하죠.. DAC06 Best Seller 10 보기 여기서도 역시 System Verilog가 대세입니다. 큰 물결을 이루었다는 걸 다시 한번 느낄 수 있네요. SystemC도 나름 저력을 보여주고 있습니다. 3번에 나온 책은 사실 저도 좀 사서 보고 싶네요.. ICCAD도 DAC와 좀 비슷한 성질인데, Design쪽 논문이 생각보다 좀 있는 conference입니다. 여기서 팔린 것을 보면.. ICCAD06 Best Seller 10 보기 Design부분에 대한 내용이 주를 이루고 있습니다. 음.. 1번 책이 가장 궁금하고.. 3번책은 저도 가지고 있는 책인데.. 예전에 CAD algorithm할때 사서 열심히 봤던 책이군요.. 아.. 머리아퍼..ㅠㅠ; 4,5번 책도 사고 싶은데.. 에이고.. 이건 뭐 책값이 워낙 비싸서요.. 후배들에게 부탁해서 도서관이 책 신청을 하던지 해야지요.. 좋은 책 많이 읽으시고, 좋은 책 있으신 분 공유~ ^^;
[babyworm, 2006/12/10 19:10, 개인적인]
이번달 들어서면서 포스팅이 갑자기 적어졌습니다. 직접적인 이유는 검증 일을 시작하면서, 배경 지식을 쌓아두기 위해서 보는 책과 기사들이 너무 늘어나서 머리속에서 정리가 되기 전에 이 부분에 대하여 포스팅 할 엄두가 안나구요..게다가, 검증 작업을 flow에 맞추어 한번 제대로 해 보려고 시작했는데, 일이 끝나기 전에 어설픈 것을 올리기도 뭐해서 그냥 그냥 시간만 흐르고 있습니다. 주말에 MPR이나 EEtimes news라도 보면 posting할 것인데, 요즘에 주말에도 검증쪽만 파고 있어서요.. 제대로 해 보려고, Verification Plan을 짜고, DITL document를 쓰고, Breakout document를 작성하면서 checker model, coverage model 같은 것을 구상하고 있는데.. 예전에 해 봤던 pseudo random verification이란 것이 얼마나 단순하게 생각해서 한 것인지 자신을 질책하게 됩니다. 그때 조금만 더 앞으로 나갔었다면 지금은 좀 더 좋은 verification infrastructure상에서 일을 하고 있을텐데 말입니다. 처음 한 걸음 부터 너무 크게 내딛을려 하는 것이 아닌가.. 하는 생각도 없잖아 있지만, 이 프로젝트에만 적용될 수 있는 검증 인프라가 되더라도 generalize에 대한 고민을 하면서 작성하면 나중에 확장이 좀더 쉬워지지 않을까 생각됩니다. 머리속이 정리되거나, 약간 더 시간이 된다면 포스팅이 더 많아지겠지요..^^;
[babyworm, 2006/11/28 23:29, SoC 설계 관련/검증이야기]
검증 작업을 시작했다는 포스팅을 얼마전에 했었습니다. 하지만, verilog는 추상화 레벨을 높이기에 약간 무리가 있기는 하더군요.. 물론, 어짜피 regression vector쪽에는 PLI위주로 가게될 것으로 구상해두었지만, 일반적인 경우에는 PLI사용을 꺼리시는 분들도 있는 관계로 왠만하면 verilog만으로도 어느정도 coverage를 보일 수 있도록 구상하고 있는데... 약간 까다로운 점이 있습니다. 그래서, 대안 처럼 생각하고 있는 부분이 SystemVerilog인데, 아직 제가 본격적으로 공부해본것이 아니라 스펙 수준에서 표준 문서만 한번 훓어본 정도에서 멈추어 있던 상태라 약간 깨름직 했었습니다. 그런데, verification guild에서도 그렇고, comp.lang.verilog도 그렇고 system verilog에 대한 내용과 비중이 점점 높아가는 것을 알 수 있겠더군요. 사실 verification guild의 guild master가 vmm-sv의 저자이기도 하니까 그렇겠지요.. 하지만, writing testbench 책이 HVL이 아닌 system verilog만을 이용해서 다시 작성할 수 있을 정도로 system verilog의 verification기능이 강력하다는 것은 아무래도 끌리는군요. (옆에 보이는 책이 writing testbenches using systemverilog책이 바로 예전에 제가 다시 읽고 있다는 writing testbenches의 새 버젼이지요. 요즘에 가장 사고 싶은 책입니다. 하지만, 가격이... 가격이.. orz) Verification Methodolgy Manual for SystemVerilog와 같은 책이 나온것도 사실 system verilog가 대세가 되는 것 아냐? 라는 생각을 가지게 하는 이유이기도 하지만 말입니다. (또한권의 가장 사고 싶은 책입니다. 역시 가격이.. 에휴... ) 이 책의 홈페이지에는 system verilog를 이용한 verification에 대한 개략적인 정보는 얻을 수 있습니다. 사실 초기에 저는 cadence의 SCV를 필두로한 systemC에 대항하기 위해서 synopsys가 선택한 카드가 system verilog일 것이라는 곱지 않은 시선을 가지고 있었습니다. 하지만, 요즘에 와서는 system verilog를 native로 지원하는 simulator들이 속속 등장하고 verilog표준에 system verilog가 포함될 것으로 예정되어 있는 상태이니.. 정말 systemverilog가 HVL을 대체할 정도로 강력하다면, 대세가 될 확률이 높아지겠지요. 여하튼, 지금 가지고 있는 system verilog for design(stherland저)책이라도 한번 봐둘 필요는 있을 것 같습니다. ^^; 사실 예전에 이 책 봤을때는 systemverilog에 대해서 약간 실망을 했었는데, 검증의 측면에서는 어떨지 한번 공부해 봐야겠습니다. 이 부분은 역시 작업 마치면 한번 정리하죠..나~~~중에
[babyworm, 2006/11/16 20:38, SoC 설계 관련/관련 새소식]
EEtimes를 보니 VHDL 2006 표준이 Accellera에서 승인되어서 IEEE standard 승인을 기다리게 되었다고 합니다.
VHDL은 제 블로그에서도 몇번 다루었듯이, 초반의 열광적인 지지와는 반대로 설계 언어로서는 Verilog에 비하여 점유율을 높이지 못하고 있었지요. (Gartner Dataquest의 EDA 분석책임자인 Gary Smith 씨에 의하면 오늘날 하이엔드 디자인에서 VHDL 사용이 줄고있다고 합니다. [데이터 출처: EETimes]) Verilog의 경우 system verilog에서 assertion과 같은 검증 기능과 더불어 몇몇 검증에 관련된 좋은 기능들이 추가 되었으며, verilog 2005 표준에서 system verilog(IEEE-1800)와 기존의 verilog 표준(IEEE-1364 2001)을 합쳐서 IEEE-1364 2005로 개정한 것이지요. 지금 verification guild와 같은 곳을 가보면 verification의 많은 부분이 system verilog 위주로 진행되는 분위기가 감지됩니다. (comp.lang.verilog에서도 그렇구요..) 이러한 verilog의 강공에 대적하기 위해서, VHDL은 assertion language의 표준인 PSL(예전에 sugar로 불리웠던)을 VHDL 표준에 과감히 포함시켜 버렸습니다. ! 또 다른 주목할 만한 부분은 IP 보호 기능입니다. 사실 이 기능의 경우 verilog에서는 cadence verilog-XL 시절 부터 있었던 기능이지만, tool dependent하기 때문에 약간 문제이기는 했습니다.(verilog simulation에 있어서 verilog-XL이나, NC-verilog와 같은 툴이 거의 표준처럼 사용되고 있는 상황이니 큰 문제는 없겠습니다만..(ESNUG참조)) 과연 점점 사용자 계층이 엷어져가는 VHDL이 이번 표준으로 얼마나 사용자를 되 찾아올지 의문입니다. 왜냐하면, Verilog에서는 기본적으로 강력한 구조적 설계 기능에 검증 기능을 더하는 방향으로 확장되고 있는 반면, VHDL은 기본적으로 behavioral design/verification에 (verilog에 비해)적합한 형태였기 때문이지요. 즉, 설계 부분의 편의성에 있어서는 그리 향상된 것이 없어보인다는 것이 좀 아쉽네요..
[babyworm, 2006/11/11 23:37, SoC 설계 관련/검증이야기]
예전에 99년에 학교에서 첫 버젼의 EISC를 만들때는 검증에 별 생각이 없었습니다. 생각해보면, 학교에서 만드는 것은 "학술적으로" 의미가 있는 부분에 대해서는 뭔가 이런 저런 시도를 해 보는데, 실제 중요한 동작 자체는 "벤치 마크 프로그램이 돌아가는" 정도로 그치고 말았었습니다. 그러다보니, 다양한 상황에 대한 검증이나 인터럽트 쪽은 아무래도 부족했었습니다.
|
||||||||||||||||||||||||||||||










