Layout 7

[Calibre] Sliced DRC - 브레인스토밍

주로 IP 단위의 layout을 담당하고 있기 때문에 cadence 社의 innovus나 synopsys 社의 icc 툴에 대해선 거의 모른다. 하지만 최종 단계인 chip top level에서의 검증을 도와주는 경우가 많은데 어떤 수정이 있은 뒤 DRC 검증을 위해 몇 시간을 기다려달라는 얘기를 많이 듣게 된다. 최종 검증 때 혹은 그 이외의 상황에서도 정식 방법으로는 전체 검증을 다시 해야 하는 게 맞고, 그 절차는 바뀌면 안 된다.(골든 룰!) 하지만 DRC를 하나하나 해결해나가는 상황, 또 매우 적은 에러가 있으며 어떤 방식으로 그 에러가 해결되는지 시도해 봐야 하는 상황에서도 몇 시간씩 걸려서 결과를 보는 것은 비효율적이라 생각한다. 기존에도 이런 runtime 이슈로 몇 가지 시도를 해왔고, ..

Layout/Verification 2023.11.11

[ENV] Bindkey Issue (Alt modifier, Shift + 3)

◆ Alt modifier 관련 ◆단축키를 설정할 때, 기본적인 a, b, c, d... 및 1,2,3.. 키만으로 부족하면 생각하게 되는 게 modifier이다. 잘 알고 있듯이 Shift, Ctrl, Alt가 있으며 그 조합으로도 사용하기도 한다. 그런데 따로 설정해 주지 않으면 Alt 키는 먹지 않는다. IC6 버전부터는 Alt 키를 통해 메뉴에 접근하도록 되어 있어서 Bindkey로 사용하려고 하면 해당 modifier는 ignore 된다는 warning message가 뜨며 사용할 수 없다. 이는 간단하게 .cdsenv 파일에서 Alt modifier를 메뉴 선택 용으로 사용하지 않게 하면 된다.ui enableMenuShortcuts boolean nil ◆ Shift+3 Bindkey 관련 ..

Layout/Virtuoso 2020.12.16

[SVRF] PAD to clamp (diode) path 저항 계산 - 3편

2편에서 추출한 LPE 결과가 있다면 이제 끝이 보인다. 추출된 파일은 3개의 파일로 구성되는데 1. out.pex.netlist 2. out.pex.netlist.pex 3. out.pex.netlist.TEST.pxi 로 구성되며, 1번 파일에는 DB의 device들이 있으며 2번 파일에는 modeling 부분이 subckt으로 지정되어 있다. 마지막으로 3번에는 2번 파일에서 정의된 modeling 부분을 instance call 하게끔 되어 있다. 여기서 필요한 부분은 3번 파일 부분으로 instance call 부분을 살펴보면 한쪽은 AVDD08이고, 나머지는 VIA1에 붙어있는 M1이 port로 지정돼 있다. N_AVDD08_R111@XXX_pos와 같은 형식인데 sed 명령어로 해당 pos에..

Layout/Verification 2017.02.06

[SVRF] PAD to clamp (diode) path 저항 계산 - 2편

앞서 1편에서는 원본 DB에서 원하는 NET만 추출하는 것을 해 보았다. 이번 편이 가장 복잡한데, 구상한 알고리즘대로 차례대로 진행해 보겠다. 먼저 원하는 NET을 추출한 DB의 경우 PAD에 Pin이 있을 테고, 그와 연결된 Metal, Via가 있을 것이다. 물론 반대쪽 끝에는 pin이 없다. 원하는 NET의 LPE를 추출할 것인데, LVS를 Correct 시킬 필요는 없다. svdb만 만들어지면 되므로 가짜 CDL netlist를 작성해 보자. 작성한 TEST.cdl 파일은 아래와 같다. .SUBCKT TEST AVDD08 R111 AVDD08 bottom rm1 a=1 .ENDS rm1 (Metal1 저항) 이 하나 놓인 가짜 CDL netlist다. 껍데기라지만, 실제 DB에 device가 하..

Layout/Verification 2017.02.06

[SVRF] PAD to clamp (diode) path 저항 계산 - 1편

ESD (Electro Static Discharge) spec을 만족시키기 위해서 PAD to Clamp 혹은 PAD to Primary Diode까지의 저항값을 구할 필요가 있다. 해당 값이 너무 크게 되면 Core device에 충격이 가해져서 chip이 깨질 수 있다. 정확한 값을 구하는 것은 RedHawk의 Totem tool을 이용하는 경우가 많지만, 세팅과 실행에 많은 Runtime이 소모되고 한 번에 통과하지 못할 경우 그 iteration은 정말 지옥 같다. 그래서 SKILL을 이용해 대략적인 저항값만이라도 계산하도록 하여 빠른 결괏값을 도출하고자 하였다. 저항값이 높은 부분을 우선적으로 고치고 최종적인 확인은 정해진 Tool을 이용하면 될 것이다. 현재 사용하는 공정은 대부분 9 Met..

Layout/Verification 2017.02.06

[dbdiff] create Calibre XOR (gds,oasis) rule

요즘은 DB의 용량이 커지다 보니, sub block 은 크게 상관없지만, TOP level로 갈수록 GDS format 보다는 OASIS format을 좀 더 사용하고 있다. metal revision 등을 위해 OASIS vs OASIS 혹은, GDS vs OASIS 해야 할 경우가 있는데 compare_gds 명령어로는 OASIS DB 인식이 되지 않았다.간단한 해결 방법이 있는데, gui 환경의 fast XOR을 이용하는 것이다. gui를 띄워서 해야 하는 번거로움이 있지만 동작은 잘한다. gui 없이 하는 방법이 있는데 아래 영상에서 잘 소개되어 있다. 사실 영상 후반부에 설명되어 있지만 gui로 하는 것과 같은 방식이며, 알고 나면 간단히 dbdiff 명령어로 해결할 수도 있다. dbdiff ..

Layout/Verification 2017.01.16

[Calibredrv] layerprops file 작성법

공정이 내려가 layout grid 가 0.005um에서 0.001um로 내려가면서 gds DB의 용량 또한 무시할 수 없게 커졌다. 이런 DB를 virtuoso로 여닫다 보니 상당히 버거워할 때가 있는데, cadence에서도 fast viewer를 제공하지만, 현재는 calibredrv를 주로 사용하고 있다. 쓰다 보니 간단한 DB 확인이나, 수정에는 virtuoso 보다 효율적으로 활용할 수 있었다. 다만 아직 널리 쓰이는 layout editor가 아니다 보니 PDK 등에 설정이 제대로 돼있지 않다. (아니면 내가 못 찾거나) PDK 안에 virtuoso 용으로 기본적으로 제공되는 layermap, display.drf 등이 없어서 직접 작성해 주어야 했다. (시간 나면 virtuoso 용 laye..