Category Archives: SoC & IP design

검증 계획 작성하기

사실 검증이란 걸 처음 시작하면 정신이 아득해집니다. 도대체 뭘 어떻게 검증해야 하며, 언제 끝을 내야지만 하는가.. 이런 부분에 대한 교육이 부족했기 때문이겠지요


그래서, 이런걸 체계적으로 정리하자는 것이 “검증 계획(verification plan)”입니다. 설계 계획에 해당하는 spec. 작업이 설계에 있어서 가장 중요하듯, 검증에 있어서도 spec과 더불어 검증 계획이 중요합니다. 좀더 세분화된 검증 계획이 나중에 경험하게 될 인간 좀비가 될 시간을 줄여주는 거죠.


사실, 제가 처음 검증을 시작할 때, 단순히 “최대한 자동화해서 검증을 해야겠다. “라고 처음 생각을 가진지가 2002년이니 상당히 오랜 기간이 지났는데, 아직도 지지 부진합니다. 물론, 그 동안 설계니 뭐니 시간 문제로 띄엄 띄엄 손을 대었고, 회사내에서 본격적인 프로젝트로 launching은 아직도 못하고 있습니다만.. 제가 관리할 수 있는 입장이 되었으니, 이제야 비로소 verification쪽에 시간을 가질 수 있을 것이라 생각했습니다 (라고 이야기가 끝나면 얼마나 행복하겠습니까?) 만 설계가 부진한 부분을 보면 아직도 뛰어들어서 이것 저것 하느라고, 별로 진척이 없습니다. 여하튼.. 체계적인 계획 없이는 윗분들을 설득시키기도 저 자신을 노력하게 하기도 어렵지요. 검증이란 일이 저에게 있어서는 “맨땅에 헤딩”수준이라 잠시만 마음을 놓아버리면 바로~ 인간 좀비 모드로 변신해서 일을 하는 것도 아니고 아닌 것도 아닌 상황이 되죠.


여담으로 들어왔다가 엄청 돌았습니다.. 다시 본론으로 들어와서


검증계획이란 무엇이냐!


말 그대로, 스펙을 어떻게 분석할 것이며, 어떤 부분에 주의해야 할 것인가, 디렉토리 구조는 어떻게 가져갈 것이며, 스크립팅은 어떤 식으로 할 것인가에 대한 정의를 내리고, 각 부분에 대한 action item을 정의한 후, 해당 item을 어느 순간에 어떤 기준으로 완료할 것인가에 대하여 적어둠으로써, 이후의 검증을 어떻게 진행하고 어떤 기준으로 종결하고, 어떻게 마무리 할 것인가에 대하여 기술하는 문서입니다.


이러한 문서 기술은 우리나라 엔지니어들이 극히 싫어하는 일입니다만(저를 포함해서..^^;), 반드시 필요합니다.
체계적인 문서화는 반드시 작업 중에 발생할 수 많은 오류를 좀더 빨리 찾아내게 해주며, 좀더 쉽게 고칠 기회를 제공합니다. 좀더 좋은 엔지니어가 되시려면, 이 말을 항상 기억해야 한다고 생각합니다. 저도 물론 아직은 별로지만요..^^;


검증 계획 자체에 대하여 가장 체계화된 문서는 Peet James의 “the Five-Day verification plan” 입니다. 물론, 같은 제목의 책도 있습니다만, 저는 별 4개 이상은 주기 어려웠습니다. 첫 번째로 책의 내용이 이 on-line 문서를 좀더 체계화하고 예를 풍부하게 든것에 불과하기 때문에(전적으로 제 느낌입니다), 오히려 온라인 문서를 주욱 읽어보는 것이 더 도움이 되었습니다(미안해요 Peet! 책은 잘 읽었어요~ ). 책은 제 영어 실력의 한계 때문일지도 모르겠으나 상당한 가격을 주고 살만하진 않더군요.


이 문서의 내용은 각 날자별로 해야 하는 일과 빠지기 쉬운 오류(Gotchas)를 적어둔 문서입니다.


예를들면 첫째날은



  • 주요 인터페이스를 살펴보고, 누가 쓸것인지, 중요한 기능이 뭔지, 가장 많이 사용되는 모드가 뭔지 살펴볼 것

  • 각 인터페이스에 대하여 살펴보고, 어떤 BFM을 적용해야 하는지 볼 것

  • 사용 가능한 검증 인프라가 있나?

  • Behavioral model에 대해서 살펴보고 golden모델에 대하여 생각하고, 어떻게 비교할지 생각할 것

  • 어떤 검증 언어를 쓸껀가요?

  • 어떤 장비를 쓸건가?

  • 어떤 방식의 random 기반 검증이 가능한지 생각할 것

뭐 이런 식인거죠. 그리고, 이에 대한 예를 주욱~ 적어두고.. 이런 생각할 때 주의해야 할 사항들을 적어두고.. 이런식으로 풀어둔 책입니다. 뭐 자세히 설명할 필요 없이 위의 문서를 읽어보는 것이 좋겠죠.


그리 어렵지도, 그리 획기적이지도 않습니다만, 생각보다 처음 검증을 시작하시는 분들에게는 도움이 될 거라고 생각합니다. 저도 생각보다 많이 도움을 받은 문서이면서 책이거든요.^^; 자! 검증 엔지니어 지망하시는 분들 혹은 검증의 중요성을 느끼시는 분들이라면, 검증 계획을 한번 적어봅시다. (참고적으로.. 이 검증 계획 적는 일을 해보시면, 생각보다 쉽지 않다는 걸 깨닿는데 1시간이 채 걸리지 않습니다. 그런데, 꾸욱~ 참고 몇 프로젝트에 대해서 적어보면 점점 나아지니까 처음엔 적응기라 생각하고 버티세요..)

Mentor의 verifiaction seminar

Tool Vendor들의 세미나 계절인지라, Mentor도 검증 관련 세미나를 하는군요. 관심있으신 분은 참고하세요.


행사 일정: 5월 16일/ 임페리얼 펠리스 호텔


행사 등록: http://mentorkr.com/event/200705/form.html




오늘날의 SoC 디자인은 전체 SoC Verification 플로우 측면에서 최적의 효율성과 능률성을
가져올 수 있는 솔루션을 필요로 하고 있습니다.

Mentor Graphics는 ESL(electronic system level design) 및 High-level-synthesis technology, 그리고 Advanced verification platform, Assertion-based verification, DFT 등의 업계 선도적인 verification 솔루션들을 통하여, 디자인 효율 및 생산성을 향상시키기 위한 다양하고
새로운 기술과 방법론을 데모와 함께 선 보일 예정입니다.

꼭 참석하셔서 Mentor Graphics의
최신 Design & Verification 솔루션
들을 만나보시기 바랍니다.

행  /사  /일  /정

09:30 – 10:00- 행사 등록

10:00 – 10:20- Welcome / Opening; Johnny Chang

10:20 – 11:10- ESL – Embracing the differences is key to design success;  Gary Dare

11:10 – 12:00- Catapult synthesis – A Proven Methodology for DSP Hardware Creation; Dan Gardner

12:00 – 13:00- Lunch

13:00 – 13:50- Advanced Functional Verification Platform; ED&C

13:50 – 14:05- Break / Coffee

14:05 – 14:55- Finding the toughest bugs with 0-In Verification;Rindert Schutten

14:55 – 15:45- From ATPG to Compression and Yield Improvement;T.P.Tai

——————–


사실 mentor의 경우 SystemVerilog에 무게를 두고 VMM을 밀고 있는 synopsys나 SystemC에 무게를 두고 있는 cadence에 비하면 약간은 중립적인 입장을 취하고 있는 기분입니다.


실제적으로 AVM(Advanced Verification Methodology)이라고 불리는 Mentor의 Verification Kit은 SystemVerilog와 SystemC를 모두 지원할 수 있도록 되어 있지요.


문서나 Technical Report/Paper도 비교적 다른 회사에 비하여 얻기 쉽고 말입니다. 오랫만에 갔더니만 AVM Cookbook도 새버젼이 나와 있고, 용어도 잘 정리해서 문서로 만들어놨더군요.


처음 검증을 시작하시는 분들에게는 참 도움을 많이 주는 회사인건 맞는 것 같습니다. 이제 남은 건 분발 뿐인가요.. ^^;

p.s.
얼마전 Modelsim SE도 systemVerilog를 지원하신다는 분이 계셨는데, 찾아보니 NCVerilog와 마찬가지로 SystemVerilog Design 부분만 지원하는 것이더군요. 제가 필요한건 SystemVerilog Verification 분야거든요.. Assertion이라던지 모델을 이용해서 작업을 해볼 예정이라.. ^^;  참고적으로, Questa는 SystemVerilog Verification을 지원하는 군요.. 관련 자료는 여기 있습니다.
툴 구매가 이루어지기 전에는 일단 예전처럼 C++/PLI를 사용하는 방향으로 작업할 예정입니다. 왠지 SystemVerilog관련 verification책은 좀 일찍 산 듯 한 느낌이 ㅠㅠ;

Verilog와 VHDL.. Simulator/Verfication 툴 점유율

이 포스팅은 DVCon07에서 ESNUG의 John Cooley가 참석자 800여명을 대상으로 조사한 내용을 바탕으로 하고 있으므로, 전체 시장 점유율이나 비중을 반영한다고 이야기할 수는 없습니다. 하지만, DVCon에 참석하는 사람들이 각 사의 funcational verification을 담당하고 있는 사람이 대부분이라는 점에서 이쪽 분야의 “향후” 경향을 대변하는데는 부족함이 없을 것이라 생각됩니다.

Verilog HDL이 대세다!


이 이야기는 제 Blog전반에 걸쳐서 몇번 이야기 했었습니다. HDL을 배우고 사용하는데 있어서 Verilog HDL이 대세라는 것이지요. John Cooley는 VHDL을 고수하는 업체는 미군과 계약하고 일하는 업체나 일부 유럽 회사밖에는 없다고 이야기합니다. (VHDL을 미국방부에서 만들었으니 아직도 이쪽에 납품하려면 써야 하나봅니다.)



  Verilog only : ############################ 55.3%
mostly Verilog : ######### 18.0%
 both equally  : ### 6.5%
   mostly VHDL : ######## 16.4%
     VHDL only : ## 4.0%


[source: ESNUG-DVCon-Item02]


VHDL만 사용하는 사용자의 비율은 불과 4.0%에 불과하며, VHDL을 main으로 사용하는 사용자를 포함해도 전체의 20% 정도입니다.  Verilog사용자의 경우 VHDL을 사용하는 가장 큰 이유로 “기존에 있던 코드 때문에(legacy code)”라는 답변이 대부분입니다.


더욱 재미있는 것은 ^^; 이런 Mixed simulation을 사용할 때 사용하는 툴이 (이 응답에서는) 대부분 Modelsim이라는 점입니다. (modelsim이 주력 시뮬레이터는 아니구요.) Modelsim에게는 조금 위협적인 이야기가 되겠지요. 지금의 market share가 대부분 legacy code에 의한 것이라면 점차 legacy code의 사용이 줄어들면서 Modelsim의 입지도 줄어들 가능성이 있으니까요.

VCS의 약진!


전반적으로 functional 전 개인적으로 Simulator부분에 있어서 [wp]cadence design system[/wp]의 NCsim series보다 [wp]Synopsys[/wp] VCS series가 이 정도의 market share를 차지한다는 것에 놀라움을 느낍니다. 다시 한번 말씀드리듯이 DVCon은 [wp]functional verification [/wp]engineer을 대상으로 하므로, 현재 상황이라기 보다 미래의 상황을 더 나타낸다고 보고 있으니, 더 놀라운 것입니다.


    Cadence NC-Sim : ######################## 24.3%
        NC-Verilog : ################## 18.0%
        Verilog-XL : # 0.7%
           NC-VHDL : # 1.1%

      Synopsys VCS : ############################################# 44.7%
            VCS-MX : ######### 8.5%


   Mentor ModelSim : ################################### 35.3%


             Aldec : ### 2.8%
            Icarus : .4%
Veripool Verilator : # .6%
 SimuCAD Silos-III : 0%
            Finsim : 0%

        Cadence 2004 total :  ############################## 51.0%
        Cadence 2005 total :  ############################## 51.0%
        Cadence 2007 total :  ########################## 44.1%

       Synopsys 2004 total :  #################### 34.0%
       Synopsys 2005 total :  ############################ 47.0%
       Synopsys 2007 total :  ############################### 53.2%

         Mentor 2004 total :  ######################### 41.0%
         Mentor 2005 total :  ##################### 35.0%
         Mentor 2007 total :  ##################### 35.3%

         others 2004 total :  ###### 11.0%
         others 2005 total :  ### 5.0%
         others 2007 total :  ## 3.5%


사실 저는 VCS를 제대로 사용해 본적이 없어서 뭐라 이야기하기 어렵습니다. Icarus, Verilator, Silos-III, Finsim은 잠깐씩이라도 다 써봤군요.. Silos-III와 Finsim은 수업에서 쓸까 해서 Evaluation version을 사용한 적이 있었고, 다른 것은 개인적인 관심으로…

여하튼.. VCS의 점유율이 늘어나고 Cadence의 점유율이 줄어드는 경향은 아마도 VMM의 힘이 아닌가.. 라는 의견도 있군요.
사실 Cadence가 Verilog기반의 회사임에도 그간 System-C 기반의 설계/검증 환경에 강점을 보인 반면, Synopsys는 VMM으로 SystemVerilog 검증의 기반을 잡아나갔다는 것도 하나의 이유일 수 있다고 분석되는 군요.
Mentor의 Modelsim의 선방도 인상적이긴합니다. 아직 국내 학생들 사이에서는 최고의 인기이지요? 가격적으로도 메리트가 있구요. 하지만, Modelsim에 검증 부분을 강화한Questa에 대한 반응이 아직은 본격적으로 나타나고 있지 않으니 좀 답답하겠습니다. DVCon의 설문 조사인데 말입니다. Questa의 경우 SystemVerilog나 System-C모두에 대하여 약간은 중립적인 견지에 있지요.

여하튼, Big3 EDA 업체가 functional verification에 대한 지배력을 점차 늘려가고 있는 형태네요..

Linting과 Coverage는 Built-in?


저는 사실 Linter에 대해서 처음에는 상당히 호의적이었는데, 지금은 약간 갸웃~하는 입장인데요.
Linter라는 것이 문제가 발생할 부분을 코딩 스타일 점검 과정에서 미리 확인하는 툴은데요..유용하다는 데는 이견이 없습니다만, Simulator나 Synthesizer에서 “상당히 빠르게” 미리 문제를 확인할 수 있기 때문에 약간은 비관적입니다.

Code Coverage에 대해서는 가능성이 많다고 보는데, 문제는 현재 각 Simualtor에서 제공하는 기능이 일반적인 Code coverage기능(최소한 Line coverage정도는..)을 지원하고 있고, 어짜피 functional coverage는 assertion을 사용해야 할테니 강력한 code coverage를 요구하지 않는 다는 것이 문제겠지요. (아니, 실은 요구하는데 그 기능을 위하여 지갑을 열기가 쉽지 않은 것이겠습니다.)

여하튼..


             Cadence built-in :  ######################## 24.0%
                  Cadence HAL :  ########### 11.3%
                     Verisity :  ## 2.0%

            Synopsys built-in :  ############################ 28.2%
                Synopsys LEDA :  ##################### 20.8%

          Mentor MTI built-in :  ####################### 23.0%
         Mentor DesignAnalyst :  ## 1.9%
               0-In CheckList :  ## 1.6%

               Aldec built-in :  ## 2.4%

             Atrenta Spyglass :  ########################## 25.9%

                  Novas nLint :  ### 2.7%
                     TransEDA :  ## 2.2%
            Certess Certitude :  # 1.1%
                        Axiom :  # 0.8%

                    homegrown :  ## 1.9%


결과를 보시면 알겠지만, SpyGlass가 아주 눈에 뜨입니다!
게다가 더욱 놀라운 것은 SpyGlass의 점유율이 2005년보다 약 8%나 증가했다는 것이죠.

또 하나 재미있는 것은 Leda사용자들이 Leda를 무지 싫어한다는 점입니다. 일단 Leda를 쓰지만 ‘Leda는 X같아서 못쓰겠고, 나중에는 SpyGlass를 쓰겠다’는 식으로요..


Waveform Viewer와 Environment는?


Waveform viewer는 실질적으로 Designer와 verification engineer들이 그야말로 끼고 사는 툴중의 하나인데요..(물론, verification enginner는 약간 덜 끼고 살죠..^^;)
대부분 Simulator에 번들링 되어온 툴을 많이들 사용합니다.

저같은 NCsim 사용자는 Simvision이나 Signal Scan을 사용하겠고, Modelsim 사용자는 Modelsim자체 툴을 사용하시겠고, Nanosim사용자는 Novas nWave가 번들링 되어 있으니 이넘을 사용하시겠죠.

그런데, 사실 요즘 세상에서는 파형만 보여주는 걸로는 부족합니다. 어떤 신호가 시점에서 unknown이 발생했으면, 어떤 신호에서부터 unknown이 타고 들어온건지 분석해주었음 좋겠고..
신호를 그래픽으로 따라 들어가 주었으면 좋겠고, 그 값이 어디서부터 바뀌어 들어온지도 알고 싶지요.

별거 아닌듯 한데, 이게 “생산력”을 아주 급격히 증가시켜줍니다!!
즉, 설계를 마치고 문제가 생기면 가장 시간이 오래 걸리는 부분이 파형보면서 문제를 파악하고 추적하는 건데, 이것을 편하게 해 주는 것은 정말 중요한 거죠.

밑에 표를 보시면 Novas의 툴들 Debussy/Verdi의 점유율이 아주 놀라운데요. 이런 맥락에서 이해하면 될 것 같습니다.
그래도, 제 생각으로는 simvision도 현재 상당히 강력해진 상황인데, 이 넘과 싸워서 사용자의 지갑을 열도록 만들수 있을 정도로 가치를 인정받았다는 의미이므로, 상당히 선전하고 있다는 거죠.
하긴 제 주변에도 Novas Debussy의 팬들이 몇 분 계시기는 하죠..^^;


         Cadence built-in debug :  ############################## 29.6%
         Cadence DAI SignalScan :  ## 1.7%

        Synopsys built-in debug :  ################################# 33.2%

      Mentor MTI built-in debug :  ########################## 26.3%

           Aldec built-in debug :  ### 2.5%

                  Novas Debussy :  ################################# 33.1%
                    Novas Verdi :  ##################### 20.8%
                  Novas nSchema :  ##### 4.5%
                    Novas nWave :  # 1.3%
                   Novas Siloti :  0.3%

             Veritools UnderTow :  ### 2.8%
                 Bybell GTKwave :  # 0.8%
             Veripool Dinotrace :  # 0.6%
           Axiom built-in debug :  # 0.8%
—-
In the case of Novas!
           2005 – Novas Debussy :  ############################## 30%
                    Novas Verdi :  ######### 9%
                  Novas nSchema :  # 1%

           2007 – Novas Debussy :  ################################# 33.1%
                    Novas Verdi :  ##################### 20.8%
                  Novas nSchema :  ##### 4.5%
                    Novas nWave :  # 1.3%
                   Novas Siloti :  0.3%


EDA 업계 소식을 보다보면, ‘야~ 이 툴 정말 써보고 싶다’라는 생각을 해보곤 해요.
근데, 아시다시피 EDA 툴 한 카피의 가격도 가격이거니와.. EDA Tool의 Evaluation이라는 것이 회사 업무에 영향을 받기 때문에 회사 차원에서 evaluation하려면 여러 가지로 귀찮아요..

그래서, 그냥 개인적으로 evaluation 해 볼 수 있는 뭐 그런거 없나 싶기도 합니다. Technical Report정도를 작성하면서 말입니다. 외국의 경우에는 책이나 이런저런것에서 지원받는 경우를 보았습니다만, 사실 국내에서는 EDA 시장 자체의 규모가 작으니 불가능하겠지요. ^^;