Tag Archives: Verification

Level of abstraction

“추상화 수준”, “추상화 단계”라 불리는 용어이지요. 아마도 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로 변환하는 과정을 의미합니다. “기계적”이란 용어를 사용한 건 말이 그렇다는 것을 알려드리고 싶어서입니다. ^^;
실무에서 보면, algorithm을 전공하신 분과 computer architecture/ASIC을 전공하신 분이 실무에서 어느 정도 일하다가 동일한 작업을 수행하기 위하여 RTL을 만들때 보면 전혀 다른 RTL을 만들어낼때가 있는데, 가장 큰 이유는 어느 추상화 수준에 초점을 맞추었느냐에 차이가 있고, 두 번째는 ASIC 전공자들은 알고리즘 자체를 볼때 하드웨어 구현을 고려하여 하드웨어에 최적화된 알고리즘을 생각하는 반면, 많은 알고리즘 전공자 분들께서는 software적인 최적화 알고리즘을 많이 생각해 내십니다. (에고.. 그냥 이야기하다가 너무 벗어났네요..여하튼.. 저는 각 전공분야에서 보는 관점이 다르다..라는 이야길 하고 싶었는데.. 쩝. ^^;)


검증에서는 약간 더 많은 추상화 단계를 지닙니다. 사실 검증이라기 보다는 modeling이라는 표현이 맞겠습니다. 이건 model의 정확성과 수행 시간간의 상관관계 때문에 아주 정확하지 않아도 되는 부분은 추상적으로 표현해서 속도를 빠르게 할 수 있기 때문이지요.


예를 들어, gate 수준으로 구현된 netlist simulation보다 RTL simulation이 훨씬 빠른 것이 당연하고, RTL simulation보다 대략적인 functional model을 이용하는 것이 더 빠르니까요.


이 functional model은 약간 더 세분하면



  • Transaction level model; 사실 각 모듈 간의 동작만을 정의하는 것이지요. 내부 동작 자체를 구현할 수도 안할 수도 있는데, 일반적으로 ‘추상화 수준이 높다’고 이야기 할때는 내부 동작은 구현하지 않고 모듈의 transaction만을 나타낼 때입니다.

  • Untimed functional model; transaction level도 untimed와 timed로 나뉘는데 시간에 대한 정보 포함 여부에 따라 나눕니다. 그냥 읽고/쓰고.. 이런식으로 하면 untimed이고, 가장 추상화 수준이 높다고 봅니다.

  • Timed functional model; timed는 transaction의 time정보가 있으므로, 약간은 더 구체화 된 수준입니다.

대략 이런식으로 나눕니다. 물론, 이것 이외에도 behavior level을 나누는 형태로



  • bus functional model(BFM) – bus functional model은 사실 transaction level model과 별 차이 없다고 생각되는데 많은 경우 pin accuracy가 있느냐를 가지고 나눕니다. 말 그대로 모듈의 출력/버스 수준에서의 동작만을 기술한 것입니다. 알고리즘이 들어간 블럭의 경우 이런거 만들기 쉽습니다. 

  • bus cycle accurate model – timed functional model과 유사하죠.

  • cycle accurate model – 시스템 클럭 수준에서의 동작을 맞추어 주는 수준입니다.

둘 사이에 많은 유사점이 있는데, 큰 사항은 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 좋은 거 없나요? ㅎㅎ

일단 정리되었습니다.

Tapeout 직전에 발생한 여러가지 문제들이 좋은 방향으로 해결되었습니다.
칩쟁이들한테 칩이란 항상 엔지니어의 피와 땀을 요구한다더니만, 별거 아닌 칩이라고 피와 땀까지는 아니더라도 잠과 자유시간을 요구하더군요.

결과적으로 책임감을 가지고 매단계에서 좀더 꼼꼼하게 챙기지 못한 저에게 일차적인 책임이 있다는 것이 사실이겠지요. 같이 일하는 친구들이 처음하는 일이라 이런 저런 사항을 놓칠 수 있다는 걸 충분히 인지했어야 했는데, 저의 나태함으로 Tapeout 직전에서야 비로서 이것 저것 챙겨보고, 그로 인하여 문제를 인지하는 시점이 늦어버렸다는 것이 비극의 시작이었던 것입니다.

그런거 잘 챙겨보라고 회사에서 직급을 높이는 것일텐데, 아직 역할 모델에 적응하지 못한 탓이겠지요.

이번에 정말 많은것을 배웠습니다.
설계에 있어서도 그렇고, 여러가지 관련 사항으로도 그렇고..
처절하게 배운점은 나태해지는 순간 문제가 생긴다는 점입니다.

거의 한 달동안 자유 시간없이 열심히 따라와준 팀원들에게 감사합니다.

이제 불 끄는 역할이 끝났으니, 다시 검증쪽으로 집중하겠습니다. ^^;
글도 좀 더 많아지리라 생각합니다.

Designer, Verification Engineer를 위한 책들..

사실 원래 제목은 Springer의 DVCon06, DAC06, ICCAD06의 best selling book이라 지어야 정상이겠죠.
이 글은 Deepchip의 글을 바탕으로 적습니다.

DVCon이라는 것이 Design verification engineer들에게 최대의 축제라는 것은 아실테고.. 거기서 많이 팔린 책은 다음과 같습니다.

[#M_DVCon Best Seller 10 보기|닫기|
  1. Writing Testbenches Using System Verilog
     by Janick Bergeron, Feb 2006, ISBN: 0-387-29221-7

  2. Verification Methodology Manual for System Verilog
     by Bergeron et al, Oct 2005, ISBN: 0-387-25538-9

  3. SystemC: From the Ground Up
     by Black and Donovan, Jan 2006, ISBN: 0-387-29240-3

  4. System Verilog for Design
     by Stu Sutherland, Sep 2004, ISBN: 1-4020-7530-8

  5. A Practical Guide for System Verilog Assertions
     by Vijayaraghavan and Ramanathan, Sep 2005, ISBN: 0-387-26049-8

  6. Constraint-Based Verification
     by Yuan, Pixley and Aziz, Jan 2006, ISBN: 0-387-25947-3

  7. Verilog: Frequently Asked Questions
     by Chonnad and Balachander, Nov 2004, ISBN :1-4020-8018-2

  8. Functional Verification Coverage Measurement and Analysis
     by Andy Piziali, Nov 2004, ISBN: 1-4020-8025-5

  9. CPU Design: Answers to Frequently Asked Questions
     by Thimmannagari et al, Sep 2005, ISBN: 1-4020-7530-8

  10. Verification Plans
     by Peet James, 2003, ISBN: 1-4020-7619-3
_M#]

대세가 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툴 만드는 분들의 축제이니 만큼, 언어 자체에 대한 내용을 기대해 볼만 하죠..

[#M_DAC06 Best Seller 10 보기|less..|   1. System Verilog: Guide to Learning the Testbench Language Features
     by Chris Spear, May 2006, ISBN: 0-387-27036-1

  2. System Verilog for Design, Second Edition
     by Sutherland, Davidmann and Flake, Jun 2006, ISBN: 0-387-33399-1

  3. Statistical Analysis and Optimization for VLSI: Timing and Power
     by Srivastava, Sylvester and Blaauw, Jun 2005, ISBN: 0-387-25738-1

  4. Writing Testbenches Using System Verilog
     by Janick Bergeron, Feb 2006, ISBN: 0-387-29221-7

  5. Verification Methodology Manual for System Verilog
     by Janick Bergeron et al, Jan 2006, ISBN: 0-387-25538-9

  6. Timing
     by Sachin Sapatnekar, Apr 2004, ISBN: 1-4020-7671-1

  7. A Practical Introduction to PSL
     by Cindy Eisner and Dana Fisman, Jul 2006, ISBN: 0-387-35313-5

  8. Analog Design Essentials
     by Willy Sansen, May 2006, ISBN: 0-387-25746-2

  9. SystemC: From the Ground Up
     by David Black and Jack Donovan, Jan 2005, ISBN: 0-387-29240-3

  10. Transaction-Level Modeling with SystemC
     by Frank Ghenassia, Jan 2005, ISBN: 0-387-26232-6
_M#]
여기서도 역시 System Verilog가 대세입니다.
큰 물결을 이루었다는 걸 다시 한번 느낄 수 있네요.

SystemC도 나름 저력을 보여주고 있습니다. 3번에 나온 책은 사실 저도 좀 사서 보고 싶네요..

ICCAD도 DAC와 좀 비슷한 성질인데, Design쪽 논문이 생각보다 좀 있는 conference입니다. 여기서 팔린 것을 보면..

[#M_ICCAD06 Best Seller 10 보기|less..| 1. Statistical Analysis and Optimization for VLSI: Timing and Power
     by Srivastava, Sylvester and Blaauw, Jun 2005, ISBN: 0-387-25738-1

  2. Timing
     by Sachin Sapatnekar, Apr 2004, ISBN: 1-4020-7671-1

  3. Algorithms for VLSI Physical Design Automation
     by N.A. Sherwani, Nov 1998, ISBN 0-7923-8393-1

  4. Reconfigurable Computing
     by M. Gokhale, Dec 2005, ISBN 0-387-26105-2

  5. Logic Synthesis and Verification Algorithms
     by Hachtel and Somenzi, Feb 2006, ISBN 0-387-31004-5

  6. Design Automation Methods and Tools for Microfluidics-Based Biochips
     by Chakrabarty and Zeng, Sep 2006, ISBN 1-4020-5122-0

  7. Substrate Noise
     by Edoardo Charbon et al, Apr 2001, ISBN 0-7923-7325-1

  8. Computation Engineering: Applied Automata and Theory
     by Ganesh Gopalakrishnan, Jun 2006, ISBN 0-387-24418-2

  9. Transistor Level Modeling for Analog/RF IC Design
     by Grabinski, Nauwelaers, and Schreurs, Mar 2006, ISBN 1-4020-4555-7

  10. Leakage in Nanometer CMOS Technologies
     by Narendra and Chandrakasan, Jun 2005, ISBN 0-387-25737-3_M#]
Design부분에 대한 내용이 주를 이루고 있습니다. 음.. 1번 책이 가장 궁금하고.. 3번책은 저도 가지고 있는 책인데.. 예전에 CAD algorithm할때 사서 열심히 봤던 책이군요.. 아.. 머리아퍼..ㅠㅠ;
4,5번 책도 사고 싶은데..

에이고.. 이건 뭐 책값이 워낙 비싸서요..
후배들에게 부탁해서 도서관이 책 신청을 하던지 해야지요..

좋은 책 많이 읽으시고, 좋은 책 있으신 분 공유~ ^^;