레이아웃 업무를 하다 보면 가장 힘들 때를 꼽으라면 아마 tape-out 일정에 맞춰 검증을 끝내야 할 때일 것이다.
게다가 칩 레벨의 검증이라면 run time도 오래 걸리고 라이센스 한 번 잡는 것도 힘들 때가 많다.
그런데 힘들게 라이센스를 잡아서 한시간 넘게 LVS를 돌렸는데 netlist에 문제가 있어서 레이아웃 DB와 compare도 못해보고 끝나버렸다면? 아마도 엔지니어는 머리를 쥐어 뜯으며 입술이 바짝 바짝 말라가는 경험을 하게 될 것이다.
이렇게 되는 이유는 calibre lvs flow가 아래 그림과 같이 흘러가기 때문이다.
Calibre로 LVS를 수행하면 tool은 레이아웃 DB와 netlist DB를 바로 비교할 수 없기 때문에 먼저 GDS(혹은 oasis file)로부터 레이아웃 netlist를 추출 한 후 CDL netlist와 비교하는 과정을 거친다.
즉, 그림 상의 A와 B 두 단계 스텝을 거치게 되는데, 레이아웃에서 netlist를 추출하는 단계에서 90퍼센트 이상의 시간이 소요된다. 그리고 compare하는 B 스텝은 상대적으로 아주 짧은 시간에 수행이 되는데, 만약 CDL netlist의 format에 에러가 있다면 A를 다 거친 B단계에 와서야 에러를 발견하게 되고 LVS 수행을 멈춰버리기 때문에 긴 시간동안 추출한 spice netlist가 무용지물이 되어 버리게 된다.
이러한 안타까운 상황을 방지하기 위해 큰 사이즈의 IP나 칩 레벨 LVS 검증시에는 두 가지를 알고 있으면 큰 도움이 된다.
첫째는 LVS run 할 때 항상 GDS로부터 추출된 netlist를 저장하는 옵션을 사용하는 것이다.
예를 들어,
calibre -lvs -spice TEST.sp lvs.rule
이렇게 -spice filename 옵션을 주면 calibre는 A단계에서 추출된 spice netlist를 TEST.sp 라는 이름으로 저장을 해 놓는다.
(이 옵션을 별도로 주지 않으면 파일로 저장하지 않음)
그래서 만약 CDL netlist 이상으로 compare를 못하게 되었을 때는 CDL netlist를 제대로 수정 해 놓은 다음 다시 A단계를 거치지 않고 바로 TEST.sp와 CDL netlist를 비교하는 B단계만 실행하면 된다.
B단계만 실행하기 위해서는 lvs.rule 파일에 GDS와 비교하게 되어 있는 구문을 추출된 spice netlist와 비교하도록 아래와 같이 바꾸어 주면 된다.
두번째 방법은 LVS 실행하기 전에 미리 CDL netlist 에 에러가 있는지 체크해 보는 것이다.
이 때는 calibre 에 -cs 옵션을 사용한다.
calibre -lvs -cs lvs.rule
이렇게 실행하면 lvs.rule 파일 내에 지정해 준 LVS 결과 report 파일에 CDL netlist 체크 결과만 report 해 준다.
아래 예제를 보자.
만약 CDL netlist에 에러가 있다면 LVS run을 하면 아래와 같이 화면에 출력이 되고,
report 파일(위의 경우 test.lvs.report)을 열어보면 아래 노랑색 표시 된 부분과 같이 메세지가 출력이 된다.
위 파일에 report 된 내용을 찾아 수정을 하고 다시 -cs 옵션으로 체크하면 아래와 같이 report 파일 내용이 바뀌게 된다.
Sub block 또는 PnR netlist를 include 한다거나 여러 가지 이유로 CDL netlist를 수정 후 LVS를 돌려야 할 경우에는 반드시 위의 -cs 옵션을 사용하여 netlist에 에러가 없는지 확인 후 LVS를 수행해야 시간을 줄일 수 있다.
Netlist에 문제가 많을 경우에는 이것으로만 하루 이틀 일정도 줄일 수 있으므로 꼭 알아두고 적용하도록 하자.
'검증' 카테고리의 다른 글
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 |
Calibre : 필요한 rule만 골라서 체크하는 DRC SELECT CHECK (0) | 2024.06.24 |
virtuoso,calibre를 이용하여 flatten netlist 만드는 방법 (4) | 2024.05.10 |