Processor Architect.... egoist
프로세서, SoC, ASIC 설계에 대한 재미난 이야기들. 그리고, 쉼표...
BLOG main image
Notice
babyworm은?
CATEGORY
전체 (241)
SoC 설계 관련 (106)
마이크로 프로세서 이야기 (22)
유용한 설계도구 (7)
검증이야기 (14)
관련 새소식 (28)
초보자 코너 (12)
북마크 (1)
개인적인 (98)
책이야기 (13)
만화/애니메이션 (3)
영화/드라마이야기 (4)
음악이야기 (12)
Boards
질문 게시판
칩쟁이들 모임(올블카페)
TAGS
마이크로 프로세서 synopsys verilog HDL SystemVerilog verification 개인적인 EISC PLI AMD ARM GPU Cadence Synthesis FPGA Mentor 프로세서 Intel LaTex 검증 Microprocessor
Recent Entries
ARM Connected Community...
Painful Truth (2)
불필요하게 어려운 말을... (4)
암울한 반도체 시장 (1)
babyworm의 2008-10-25 북...
Asynchronous는 어려워 (4)
Intel의 새로운 GPU
Guitar로 연주하는 비발디...
AMBA 3.0 AXI protocol에...
중소기업 SoC의 딜레마 (2)
Recent Comments
좋은 책 소개 감사합니다.
11/13 - jwook1004
에구구구.. GALS나 비동기 프...
11/05 - babyworm
안녕하세요. :) 헉.제가 실...
11/05 - babyworm
관리자만 볼 수 있는 댓글입...
11/05 - 비밀방문자
GALs 이거...Arteis 였나..;;...
11/05 - kal9
Recent Trackbacks
불필요하게 어려운 말을 쓰는...
한날은 생각한다
Verilog Coding Style for Sy...
Stay Tuned...
CEO's Leadership Seminar
Stay Tuned...
사악한 쌍둥이 full_case와 p...
Stay Tuned...
칩쟁이들의 모임등록
Stay Tuned...
Calendar
«   2008/11   »
일 월 화 수 목 금 토
            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            
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]:+: Welcome To (( sccid...
[JW]iDea Holic
[JW]JS™
[JW]Jung-Hyeon's weB@LOG
[JW]Kino's blog
[JW]애니와 만화의 세계!
[JW]자유로운 늑대의 울음으로~~
[JW]첫사랑 첼로
[JW]최신컴터 놀이~
[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
193236 Visitors up to today!
Today 42 hit, Yesterday 165 hit

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


Add to Technorati Favorites



Candle
'Coverage'에 해당되는 글 2건
Coverage와 Assertion (2) | 2007/04/02
포스팅이 적어진 이유 (4) | 2006/12/10
Coverage와 Assertion
[babyworm, 2007/04/02 20:51, SoC 설계 관련/검증이야기]

검증에 있어서 고려되어야 하는 사항중에 하나는 "언제 검증을 그만 둘 것인가"입니다.

너무나도 쉬운 질문이지요? 뭐, 검증할 부분을 다하면 검증을 그만 두면 되죠. 그럼 질문을 바꿔보겠습니다. "검증할 부분에 대하여 모두 검증했는지는 어떻게 알지요?"

그것이 오늘 말씀드릴 coverage에 대한 부분입니다.

사실 이쪽 계통에서 coverage라는 이름으로 검색하면 처음에 나오는 것은 아마도 falut coverage/test coverage일 것입니다. DFT/Testing 부분에서 사용하는 용어인데, 만들어진 test vector가 얼마나 많은 tr. 을 천이시켜 볼 수 있느냐를 나타내는 말이죠(값을 천이시킬 수 있어야지만, stuck-at-0/stuck-at-1 fault를 잡아낼 수 있으니까요). 여하튼.. 이때 test coverage는 입력된 테스트 벡터에 의하여 천이 시킬 수 있는 transistor의 비율을 나타냅니다.

검증에 있어서 coverage도 마찬가지 입니다.

기본적으로 두 가지 coverage는 충족해야 하는데, 아주 기초적인 값이 code coverage, 약간 더 복잡하지만 반드시 체크해야 하는 부분이 functional coverage입니다.

이 중 code coverage는 주어진 RTL 코드 중에 검증 벡터에 의하여 활성화 되는 코드의 비율 정도로, functional coverage는 "점검해야 할 기능 요소 대비 주어진 벡터로 잡아낼 수 있는 기능 요소의 수" 정도로 요약 될 수 있습니다. Code coverage는 그나마 좀 자동화하기 쉽습니다.

이미 존재하는 RTL 코드가 시뮬레이션 도중에 사용되는지를 확인하면 되는 문제니까 말입니다. 물론, 여기서 말한 code coverage는 가장 기초적인 line coverage를 의미합니다만... ^^;
여하튼, 이 code coverage는 검증에 있어서 가장 기본적인 요소가 됩니다. 적어도 자기가 만든 RTL 코드가 검증 벡터에 의하여 모두 확인되었는지는 알고 지나가야 할 문제니까요.  

다시 처음 질문으로 돌아가서 "점검해야 할 기능 요소의 수"는 어떻게 알수 있겠습니까???  물론, 설계자의 spec안에 있습니다. RTL 코드란 궁극적으로 spec안에 제시된 기능을 구현한 것이니까요. 그런데, 이걸 검증 과정에서 빼놓지 않고 검증 했는지를 알기란 상당히 어렵고, 자동화 대상이 되기 어렵습니다. 그래서 assertion이 등장합니다.

assertion은 software부분에서는 이미 폭넓게 사용되던 개념입니다. 코딩에 있어서는 어떤 가정(이 조건은 절대 들어오지 않는다던지.. 어떤 변수는 어느 구간안에서는 절대 어떤 값을 지니지 않는다던지..)을 하는 경우가 있는데, 이런 가정하지 않은 경우가 온다면 구현된 코드가 "절대" 안전 할 수 없으며, 정의되지 않은 동작을 시도하면서 프로그램이 오동작하게 됩니다. 이런 경우를 확실히(assert)  하기 위해서 assertion이라는 것을 사용합니다. 즉, 가정하지 않은 경우가 발생하면 동작 과정에서 "조용히 버그를 발생시키기보다는 경고 메시지와 함께 끝나자"는 것입니다. (여기에 대한 주요한 내용은 이 분야의 선구자(?)인 Foster의 "Assertion-based Design"이라는 책을 보면 잘 나와 있습니다.) 이 책의 내용을 기반으로 OVA라는 라이브러리도 있고, 실무에서 많이 사용된다고 합니다. PSL/Sugar라는 표준 언어가 제정되기도 했지요. (systemverilog에서는 언어수준에서 assertion이 제공됩니다.)

이 assertion 기능을 좀 더 전향적으로 사용하면, spec을 정의할 수도 있습니다. 즉, 어떤 기능에 대하여 assetion으로 지정해 두는 것이지요. 이런 assertion은 테스트 벡터에 의하여 지정된 기능 요소가 검증되었는지 나타내는 기능으로 사용되는 것입니다. 이걸 바꿔 말하면, 주어진 assertion의 수 대비 테스트 벡터에 의하여 점검된 assertion의 수로써 우리가 원하던 "spec에 정의된 기능을 테스트 벡터가 얼마나 수행하였는지"를 나타내게 되며, 이는 달리 말하면 functional coverage를 나타내게 됩니다. !!!

드디어 전혀 관계 없어 보였던 두 개의 기능이 만나 하나의 art가 되는 순간이죠. ^^;

몇 번 적었습니다만, Lint, code coverage, assertion의 개념은 모두 소프트웨어 공학쪽의 개념이었는데, 이제는 하드웨어 설계로 넘어오고 있습니다(사실 다 넘어왔죠..) 참 재미있습니다.

네이버에 북마크 다음에 북마크 마가린 바르기 HanRSS에 북마크하기 이올린에 북마크하기 News2.0에 투고하기 del.icio.us에 북마크하기 Digg에 번역해 투고하기 dzone에 번역해 투고하기 붐바
babyworm
2007/04/02 20:51 2007/04/02 20:51
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
ABV, assertion, Coverage, functional coverage

Trackback0 : Comment2
누적조회 1152 : 오늘조회 0
Trackback Address :: http://babyworm.net/tatter/trackback/154
gnil | 2007/04/03 00:46 | PERMALINK | EDIT/DEL | REPLY
음... 그래도 assertion 만으로는 한계가 있는 것 같습니다...
DRAM 같은 경우에는 각 bank 상태나 read/write 명령을 위한 shift register 모델이 필요하니까요...
HDL은 함께 써 줘야 할 것 같습니다...

암튼 이 말은 제가 DRAM 설계에 몸 담고 있어서가 절~대 아닙니다 ^^;
babyworm | 2007/04/03 20:42 | PERMALINK | EDIT/DEL
Function coverage check 자체는 assertion으로 가능할것 같은데요.. 물론, assertion 문법 만으로는 안될 수도 있겠지만요 :)
검증에 관한 이야기라면 "당연히" assertion만으로는 안되지요.
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret
포스팅이 적어진 이유
[babyworm, 2006/12/10 19:10, 개인적인]

이번달 들어서면서 포스팅이 갑자기 적어졌습니다.

직접적인 이유는 검증 일을 시작하면서, 배경 지식을 쌓아두기 위해서 보는 책과 기사들이 너무 늘어나서 머리속에서 정리가 되기 전에 이 부분에 대하여 포스팅 할 엄두가 안나구요..게다가, 검증 작업을 flow에 맞추어 한번 제대로 해 보려고 시작했는데, 일이 끝나기 전에 어설픈 것을 올리기도 뭐해서 그냥 그냥 시간만 흐르고 있습니다.

주말에 MPR이나 EEtimes news라도 보면 posting할 것인데, 요즘에 주말에도 검증쪽만 파고 있어서요..
게다가, 초기에는 HVL에 대해서도 고민이 많았는데, C와 systemverilog를 이용하는 것으로 방향을 잡았고.. system verilog에 대해서는 저 자신에게 많은 공부가 필요하다고 생각하고 있어서 열심히 파고 있는 중입니다. verification에서는 design과는 달리, language가 가진 모든 힘을 끌어내야지 좋은 검증 환경이 될테니까요.

제대로 해 보려고, Verification Plan을 짜고, DITL document를 쓰고, Breakout document를 작성하면서 checker model, coverage model 같은 것을 구상하고 있는데..

예전에 해 봤던 pseudo random verification이란 것이 얼마나 단순하게 생각해서 한 것인지 자신을 질책하게 됩니다. 그때 조금만 더 앞으로 나갔었다면 지금은 좀 더 좋은 verification infrastructure상에서 일을 하고 있을텐데 말입니다.
개인적으로 이번 프로젝트를 통해서 얻으려고 하는 것 중에 제대로된 검증 환경이 포함되어 있고, 이를 사내에 퍼트리기.. 라는 계획이 있으니까.. 좀더 general하게 만들려고 하는데.. 생각보다 이것이 쉽지 않네요..

처음 한 걸음 부터 너무 크게 내딛을려 하는 것이 아닌가.. 하는 생각도 없잖아 있지만, 이 프로젝트에만 적용될 수 있는 검증 인프라가 되더라도 generalize에 대한 고민을 하면서 작성하면 나중에 확장이 좀더 쉬워지지 않을까 생각됩니다.

머리속이 정리되거나, 약간 더 시간이 된다면 포스팅이 더 많아지겠지요..^^;

네이버에 북마크 다음에 북마크 마가린 바르기 HanRSS에 북마크하기 이올린에 북마크하기 News2.0에 투고하기 del.icio.us에 북마크하기 Digg에 번역해 투고하기 dzone에 번역해 투고하기 붐바
babyworm
2006/12/10 19:10 2006/12/10 19:10
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Coverage, SystemVerilog, verification

Trackback0 : Comment4
누적조회 528 : 오늘조회 0
Trackback Address :: http://babyworm.net/tatter/trackback/116
gnil | 2006/12/11 10:01 | PERMALINK | EDIT/DEL | REPLY
블로그에 글 하나 쓰기도 얼마나 힘든데요 ( 힘들다기 보다는 귀찮음;; )...
포스팅이 적다니요 ^^;;

혹시 블로그 관리가 번거롭다면 테터툴즈와 다음이 함께 한다는 tistory.com 도 괜찮아 보입니다...
예를 들면 외부 도메인과의 연결도 허용된다고 들었구요...
아마 최근 들어서 - 12/6? - 오픈베타 서비스하고 있을꺼예요 ^^
babyworm | 2006/12/11 21:58 | PERMALINK | EDIT/DEL
힘이 되는 말씀 감사합니다.
티스토리 계정은 진작부터 있었습니다만, 제가 좀 특이한 plugin들을 사용하는 관계로(wiki link라던지, latex compiler같은..) 옮기지 못하고 개인적인 blog로 사용하고 있습니다.
나중에 트래픽을 감당할 수 없으면 그때나 이사 가려고요.. 지금보다 더 비싼 계정을 유지할 $$도 없고. :)
gnil | 2006/12/12 11:29 | PERMALINK | EDIT/DEL | REPLY
아... 역시 그렇군요 ㅎㅎㅎ ^^;;

글 쓰는 것도 문제지만 트래픽, 스팸 코멘트/트랙백 등을 관리하는 것도 만만치 않을 것 같아요...
babyworm | 2006/12/12 11:48 | PERMALINK | EDIT/DEL
네..^^;
스팸은 제 블로그가 아직 그리 유명하지 않아서 스팸 필터로 거의 다 막히는 편이구요.. 트래픽은 로봇 방문 시간 조절하고, 다음 봇을 차단하고 나서는 대부분 50%이하로 안정화되었습니다.
나중에 정말 방문자가 많아져서 감당하기 어려울때는 tistory로 도망가야겠지요..^^;
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret
*1
Location : Tag : GuestBook : Admin
babyworm’s Blog is powered by Tattertools.com / Designed by Hisday / Modified by Daisy