뭔가 좀 지저분해졌습니다.

Daum에서 Adclix라는 것이 나왔다고 해서 한번 달아봤습니다.
올블로그에서 워낙에 난리라서 뭔가 하고 시험삼아 달아보기는 했는데, 구글 애드센스보다는 약간 더 깔끔해보이지만, 광고의 특성상 별로입니다. ^^;
게다가, EDA 업체의 제품광고나 Fabless 업체들의 구인 광고 같은 것이 올라오면 또 모를까, 시험삼아 달아본 광고중에서 이 블로그와 그나마 연관성 있는건 AMD cpu 광고 정도일까요..(하긴, 구글 에드센스도 국외에서는 해당 부분 광고가 도움이 많이 됩지만 국내에서는 이런 업체에서 광고를 낼리 없으니까요..)

전반적으로 광고의 효과가 있을거라는 별 기대는 하지 않습니다만, 호스팅/도메인 비용정도만 나와도 뭐 좋겠죠.

Coverage와 Assertion

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


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


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


사실 이쪽 계통에서 coverage라는 이름으로 검색하면 처음에 나오는 것은 아마도 falut coverage/test coverage일 것입니다. [wp]DFT[/wp]/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 코드가 시뮬레이션 도중에 사용되는지를 확인하면 되는 문제니까 말입니다. 물론, 여기서 말한 [wp]code coverage[/wp]는 가장 기초적인 line coverage를 의미합니다만… ^^;
여하튼, 이 code coverage는 검증에 있어서 가장 기본적인 요소가 됩니다. 적어도 자기가 만든 RTL 코드가 검증 벡터에 의하여 모두 확인되었는지는 알고 지나가야 할 문제니까요.  


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


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


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


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


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

시납시스 세미나가 있습니다.

시납시스에서 저전력 분야에 대한 설계 세미나(실제적으로는 툴 소개겠지요?)가 있습니다.
작년에도 참가하긴 했었는데.. 작년과 비슷한 내용이 아닐까.. 라는 선입견이 약간 생깁니다.
시납시스의 저전력 세미나는 최신 경향을 받아들이기는 좋은데, 문제는 synopsys에서 제안하는 methodology를 지원하는 fab이 TSMC, UMC정도 밖에 없고.. 이 methodology를 지원하는 라이브러리를 사용하려면 추가 NRE를 내야 하는 경우가 많다는 점이겠지요. (즉, 대기업의 methodology team이 아니면 해당 기법을 바로 받아들이기가 상당히 어렵다는 말이 됩니다.)

그래도, 올해는 뭐가 바뀌었는지 궁금하기도 하고… 해서 가볼 확률이 상당히 높네요..

메일로 받은것인데.. 그대로 올립니다. 관심있으신 분은 참가신청을 하십시요.




















 












































09:00 ~ 09:20 Registration
09:20 ~ 09:30 Welcome
09:30 ~ 10:30 Synopsys Low-Power Solution Overview
10:30 ~ 11:00 Silicon-proven Low-Power Design Case Studies
11:00 ~ 11:15 Break
11:15 ~ 12:00 Advanced Low-Power Technology Overview
12:00 ~ 13:00 Lunch
13:00 ~ 14:15 Low-Power Design Tutorial including RTL Simulation and Synthesis,
Physical Implementation; Analysis and Signoff
14:15 ~ 14:30 Break
14:30 ~ 15:15 Low-Power Design Tutorial (cont.)
15:15 ~ 15:45 Low-Power Design Solution Demo
15:45 ~ 16:00 Conclusion and Prize Drawing
 
http://pass.postman.co.kr/Check.html?TV9JRD0xMzY3MDU5MDIw&U1RZUEU9TUFTUw==&TElTVF9UQUJMRT1FQkFEMDM2MA==&UE9TVF9JRD0yMDA3MDMyODEwMDAwMDE2OTYxMA==&VEM9MjAwNzA0MDQ=&S0lORD1D&Q0lEPTAwMg==&URL=http://www.synopsys.com/news/events/seminars/lp_sem.htmlhttp://pass.postman.co.kr/Check.html?TV9JRD0xMzY3MDU5MDIw&U1RZUEU9TUFTUw==&TElTVF9UQUJMRT1FQkFEMDM2MA==&UE9TVF9JRD0yMDA3MDMyODEwMDAwMDE2OTYxMA==&VEM9MjAwNzA0MDQ=&S0lORD1D&Q0lEPTAwMw==&URL=http://218.38.34.168/mailform/synopsys/synopsys_0421_map.html

Synopsys registration에 가서 보았더니, 이 세미나 이외에 5월 11일에 discovery 세미나가 잡혀있더군요. 거기에 VMM 세션이 있으니, 관심있으신 분은 참가하시면 되겠습니다. 해당 세미나도 곧 메일이 오겠지요..
이건 꼭 참가할 예정입니다. ^^; 뭐 회사에 별일 없어야 가능한 일이겠습니다만 말입니다.