검증

LVS ABORT ON SUPPLY ERROR / LVS ABORT ON SUPPLY SHORT

쥴리정 2024. 9. 2. 23:01

 사이즈가 큰 IP 혹은 칩 레벨의 검증은 체감 상 한번이라도 LVS CORRECT를 시켰다면 전체 검증의 80%정도는 되었다고 볼 수 있을 정도로 LVS CORRECT를 봤는지 여부가 아주 중요하다.

특히 촉박한 일정으로 검증을 끝내야 할 경우(불행히도 대부분의 IC 개발 일정은 몹시 촉박하다....) 이렇게 큰 DB에 대한 LVS 검증 시간을 조금이라도 줄이는 것이 검증 막판의 레이아웃 엔지니어 심장 건강에도 도움이 되는데, 특히 회로가 많은 수의 power나 ground 를 포함하고 있다면 supply net과 관련한 LVS option 구문을 적절하게 선택하여 도움을 받을 수 있다.

 

먼저 LVS 검증 프로세스의 간단한 순서를 보면,

 

1) GDS(또는 Oasis) 파일로부터 레이아웃 netlist 추출 

2) 추출된 레이아웃 netlist와 cdl netlist compare 

3) LVS report 파일 writing

 

위 세 단계로 나누어 볼 수 있다.

 

일반적인 작은 블럭의 LVS 진행 프로세스에서는 LVS report 파일 writing 과정은 무시해도 되겠지만, IP나 칩 레벨의 LVS에서 power, ground의 supply net에서 에러가 발생하게 된다면 그 net에 연결된 모든 디바이스가 LVS report 파일에 출력되기 때문에 결과 파일 용량이 어마어마하게 커져서 report 파일 writing 하는 데만 몇시간이 걸리기도 한다.

또한 RVE를 사용하여 LVS 에러가 발생한 net을 GUI로 띄워 보거나 레이아웃 윈도우에서 "mark net" 메뉴를 사용하여 해당 net을 highlight 해 볼 때에도 DB 로딩 시간이 엄청나게 오래 걸려서 디버깅이 힘들게 되는 것도 흔한 일이다.

이런 이유 때문에 LVS 디버깅 시에는 다른 부분보다도 power, ground 에 해당하는 supply 에러를 먼저 해결해야 전체 LVS 디버깅 속도를 끌어 올릴 수 있다.

그래서 이번 포스팅은 LVS design rule file에서 supply net과 관련된 옵션인

 

LVS ABORT ON SUPPLY ERROR

LVS ABORT ON SUPPLY SHORT

 

두 구문에 대해 알아보기로 한다.


LVS ABORT ON SUPPLY ERROR

LVS ABORT ON SUPPLY ERROR 구문은 대부분의 파운드리에서 제공하는 rule file에 포함되어 있기 때문에 많이 접해 보았을 것이다.

실제 rule file에서의 구문 사용법은 YES 또는 NO 옵션을 사용하게 되어 아래와 같다.

 

LVS ABORT ON SUPPLY ERROR YES

또는

LVS ABORT ON SUPPLY ERROR NO

 

"LVS ABORT ON SUPPLY ERROR YES" 를 사용하여 LVS를 실행하면 rule file에 power, ground name으로 지정된 모든 net 중 어느 하나의 net에서라도 에러가 발생한다면 LVS 프로세스는 레이아웃 netlist 추출까지만 완료하고 netlist compare 단계를 실행하지 않고 abort 된다.

이 때 supply net 에러란,

1) Power 또는 ground net  사이의 short

2) Power 또는 ground net의 open

3) Power 또는 ground net과 다른 신호 사이의 short

4) Power 또는 ground net이 하위 블럭에 잘못 연결되었을 경우

등을 모두 포함한다.

 

사실 작은 크기의 블럭이 아니라면 LVS 시 power나 ground net에 대한 에러 없이 라우팅을 끝내는 것은 몹시 힘들기 때문에 

LVS ABORT ON SUPPLY ERROR 의 옵션은 NO로 세팅하는 것을 권장한다.

가끔 파운드리에서 기본으로 설정되어 제공되는 rule file 내부에 YES로 설정되어 있는 경우도 있기 때문에 LVS를 돌리는데 이유없이(사실은 power나 ground net이 에러를 가지고 있는 것이 진짜 이유이지만) compare를 실행하지 않고 죽어버린다면 이 구문을 체크해 보도록 한다.


LVS ABORT ON SUPPLY SHORT

 더미로 뒤덮인 FINFET 공정의 레이아웃이나, power/ground net을 여러 개의 이름으로 분리하여 사용하는 블럭이나 칩 레이아웃에서는 power 또는 ground 사이의 short를 잡아도 잡아도 끝이 나지 않는 경우가 있다.

그래서 가끔은 이것이 과연 LVS인지 short와의 전쟁인지 헛갈릴 정도로 수십번의 supply net의 short 수정 작업을 반복해야 한다.

이럴 때 short만 찾을 수 있으면 좋은데도 불구하고 LVS 전체 프로세스를 다 실행하게 된다면 의미없는 compare 와 report 파일 writing 하는 데에 엄청난 시간을 소비하게 될 것이다.

그래서 supply net 사이에 short가 발생하였을 경우에 compare와 report 파일 writing 작업을 수행하지 않고 abort 되도록 하는 것이 LVS ABORT ON SUPPLY SHORT 구문이다.

위의 LVS ABORT ON SUPPLY ERROR가 abort 시키는 에러의 예

 

1) Power 또는 ground net  사이의 short

2) Power 또는 ground net의 open

3) Power 또는 ground net과 다른 신호 사이의 short

4) Power 또는 ground net이 하위 블럭에 잘못 연결되었을 경우

 

네가지 중에 1) 번에 해당되는 에러가 발생하는 경우에만 abort 시킨다.

(LVS ABORT ON SUPPLY ERROR YES 일 경우에는 위의 네 가지 모두 abort 된다는 것이 두 구문의 차이점이 되겠다.)

 

LVS rule file 내부에서의 사용법은 LVS ABORT ON SUPPLY ERROR와 마찬가지로 YES, NO 옵션을 사용하여 구문을 완성한다.

 

LVS ABORT ON SUPPLY SHORT YES

또는

LVS ABORT ON SUPPLY SHORT NO

 

이 구문은 rule file에 power, ground name으로 지정된 모든 net 중 어느 두 개 이상의 net에서 short가 발생하였을 때 레이아웃 netlist를 추출한 후 abort 된다.

Power, ground net 중 하나와 일반 signal pin 사이에서 short가 발생한 경우에는 abort 되지 않고 끝까지 LVS 전 과정을 수행한다.

만약 supply net에 short가 발생하여 abort 되었다 하더라도 short error file은 generation 해 주게 되니 RVE에서 LVS 결과 DB를 불러 올 수 없다며 실망하지는 말자.

LVS 실행된 path를 살펴 보면 (rule file에서 지정해 준 report file name).short 라는 이름의 파일이 생성되어 있을 것이다.

RVE를 실행하여 이 파일을 DRC format을 선택하여 불러오면 short 된 부분을 GUI로 확인 할 수 있다.


자, 이제 supply 관련하여 중요한 LVS 구문 두 개를 알아보았다.

Supply 구문의 적절한 사용을 통하여 LVS 디버깅 시간을 줄일 수 있을 것이다.

필자가 선호하는 구문의 예는 다음과 같다.

 

LVS ABORT ON SUPPLY ERROR NO

LVS ABORT ON SUPPLY SHORT YES

 

파운드리에서 제공되는 LVS rule file에는 LVS ABORT ON SUPPLY SHORT 는 생략되어 있는 경우도 많다.

이 때는 LVS ABORT ON SUPPLY ERROR 구문을 찾아서 그 바로 아래에 추가해 주면 된다.