레이아웃 해야 하는 블럭의 크기가 작을 때는 Calibre 가 워낙 빠르기 때문에 DRC, LVS를 몇십번씩 돌리고 또 돌려도 시간 부담이 없겠지만 어느 정도 크기가 있는 IP 레벨만 되어도 DRC 한 번 돌리는데 한시간은 훌쩍 넘어간다.
그런데 참 이상하게도 "이제 다 된 것 같아, 마지막 검증만 확인해 보자!" 이런 상황으로부터 보통 한 번이 아닌 세 번은 돌려야 끝이 나는 경우가 많다. (나만 그런가??)
암튼, 이렇게 검증 막바지에 이르러서 몇 개 남지 않은 사소한 DRC를 확인하기 위해 Design rule 전체 set을 모두 돌리기에는 시간이 너무 아깝다.
그래서 이럴 때는 내가 확인해 보고 싶은 rule만 골라서 check 해 볼 수 있는 DRC SELECT CHECK 를 사용하면 검증 시간을 훨씬 줄일 수 있다.
글쓴이는 Calibre Interactive를 사용하지 않고 터미널에서 command 로 검증을 진행하기 때문에 혹시라도 Calibre Interactive를 사용하여 DRC SELECT CHECK를 수행하고 싶은 이들은 아래의 동영상을 보고 따라하면 될 것 같다.
https://www.youtube.com/watch?v=qJqWxx7KKq4
그럼, command 로 DRC SELECT CHECK 하는 방법을 알아보자.
아래에 보이는 것 처럼 DRC rule file에
DRC SELECT CHECK ERR1 ERR2 ERR3 ERR4
처럼 구문을 추가 해 준 후 DRC를 실행하면 ERR1 ERR2 ERR3 ERR4 네 개의 에러에 대한 DRC 체크만 실행한다.
DRC SELECT CHECK 구문을 여러 줄을 써도 된다.
CASE 1 )
DRC SELECT CHECK ERR1 ERR2 ERR3 ERR4
CASE 2)
DRC SELECT CHECK ERR1
DRC SELECT CHECK ERR2
DRC SELECT CHECK ERR3
DRC SELECT CHECK ERR4
CASE 3)
GROUP ERR_group1 ERR1 ERR2 ERR3 ERR4
DRC SELECT CHECK ERR_group1
위의 CASE 1, 2, 3 은 모두 ERR1, ERR2, ERR3, ERR4 네 개의 DRC error만 수행하라는 뜻으로 동일한 RULE 되겠다.
각자 편리한 방법으로 활용하면 되는데 CASE 3 과 같이 에러 종류별로 group을 만들어서 그 때 그 때 필요한 group만 체크하도록 하면 아주 편리하다.
CASE4)
GROUP M1_all M1.?
GROUP M2_all M2.?
GROUP M3_all M3.?
GROUP antenna_all ANT.?
GROUP latchup_all LAT.?
GROUP esd_all ESD.?
.
.
DRC SELECT CHECK M2_all
이렇게 각 레이어, 혹은 DRC 종류별로 GROUP을 만들어 놓고 필요한 GROUP만 선택해서 DRC를 돌릴 수 있다.
참고로 위의 구문에서 ? 가 뜻하는 것은 공백을 포함한 모든 문자를 뜻한다.
GROUP 구문 : GROUP [group이름] [group에 속하는에러 list]
이렇게 체크하고자 하는 에러만 체크한 후에는 반드시 DRC SELECT CHECK 줄을 주석 처리하고 전체 DRC를 돌려서 최종 확인하는 것을 잊지 말자.
'검증' 카테고리의 다른 글
LVS ABORT ON SUPPLY ERROR / LVS ABORT ON SUPPLY SHORT (4) | 2024.09.02 |
---|---|
안테나 에러 (antenna effect)의 의미와 해결 방법 (0) | 2024.08.26 |
CDL netlist - control 구문 정리 (0) | 2024.06.27 |
LVS 시간 단축 tip - Calibre로 netlist error check 먼저 하기 (1) | 2024.06.08 |
virtuoso,calibre를 이용하여 flatten netlist 만드는 방법 (4) | 2024.05.10 |