30
CAD Tool Manual Exp 4. VLSI Design Using CAD Tools VLSI Systems Lab

CAD Tool Manual

Embed Size (px)

Citation preview

Page 1: CAD Tool Manual

CAD Tool Manual

Exp 4. VLSI Design Using CAD

Tools

VLSI Systems Lab

Page 2: CAD Tool Manual

이번 실험의 design flow는 다음과 같습니다.

위와 같은 순서로 design이 이루어집니다. 처음으로 1) Cadence tool(Composer-

Schematic)로 schematic level의 회로를 그리고 난 뒤에 2) schematic으로부터 netlist를

추출합니다. 3) 추출된 netlist에 환경설정을 해 준 뒤에 4) HSPICE로 Simulation을 하고,

결과를 wave viewer로 관찰합니다. spec을 만족하지 못하는 경우 여러 가지 parameter들

(nmos/pmos W/L ratio, nmos/pmos size)을 바꾸어 가며 simulation을 반복하여 spec을

만족시킵니다. 5) 이렇게 spec을 만족하는 design이 확정되면 layout을 하여 LVS(Layout Vs

Schematic)을 통과합니다.

Page 3: CAD Tool Manual

1. Cadence Tool로 Schematic 제작

1) 실행

① cadence shell을 실행시키기 위해서 cadence용 cshrc를 불러온다.

% source ~/opus50.cshrc

② % icfb & 를 통해서 tool을 불러온다.

③ 성공적으로 실행이 되어 있으면 다음과 같은 창이 뜬다.

2) Library 생성

① icfb 창에서 File/New/Library를 선택하면 다음과 같은 창이 뜬다. 그러면

아래와 같이 자신이 만들 cell이 들어갈 library의 이름을 적는다.

② 위에서 Technology file을 compile한다고 했으므로 다음과 같이 file을

설정해준다. ( anam018_2.tf )

③ 제대로 library가 만들어지면 Technology file ‘anam018_2.tf’ loaded

successfully. 라는 메시지가 든 창이 뜰 것이다.

Page 4: CAD Tool Manual

3) Cell 생성

① FileNewCellview를 실행하면 다음과 같은 창이 뜬다. Cell name을 적고

view name은 schematic, tool은 Composer-Schematic으로 선택한다

② 제대로 file이 만들어 졌다면 다음과 같은 창이 뜬다.

Page 5: CAD Tool Manual

4) Cell Edit

① icfb 초기화면에서 ToolsLibraryManager 를 클릭하면 다음과 같은 창이

뜬다.

② Library column에서 편집하고자 하는 cell이 포함되어 있는 library선택

③ Cell column에서 편집하고자 하는 cell 선택

④ View column에서 schematic선택, 더블클릭

5) Schematic Design

① Instantiation

PMOS나 NMOS와 같이 library cell들은 instatiation을 통해서 불러온다.

이렇게 생긴 버튼을 누르거나 hotkey “i”를 누르면 다음과 같이 Add

Instance window가 뜬다.

Page 6: CAD Tool Manual

② Browse 버튼을 이용해서 원하는 cell을 읽어온다.

MOSFET들은 sample에 나머지 VDD, GND는 basic에 존재한다.

MOS의 parameter를 바꾸기 위해서 해당 mos를 선택하고 다음과 같은

버튼을 누르면(Hotkey는 ‘q’) property를 바꿀 수 있다.

누르거나 오른쪽 마우스를 클릭하면 다음과 같은 창이 뜨고 property

를 바꿀 수 있다.

Page 7: CAD Tool Manual

③ Instantiation 한 결과

6) Wiring

MOS Width

Gate Length

Page 8: CAD Tool Manual

① 단축키는 “w”이고 시작지점과 꺾어지는 지점, wire가 끝나는 지점을

pointing해주면 된다.

② Wiring 결과

7) Pin 연결

① Add/pin 이나 hotkey ‘p’를 이용해서 다음의 창을 띄운다.

② 위와 같이 pin의 이름을 적고 direction을 결정해주고 Schematic에

넣어주면 다음과 같은 schematic 완성도가 나온다.

Page 9: CAD Tool Manual

③ Design/Check&Save를 해주지 않으면 netlist 를 뽑을 때 error가 납니다.

Save가 아닌 Check & Save를 해주세요

2. Sell 창에서 netlist를 export

1) shell창에서 fileexportCDL을 택하고 input file을 찾아서 넣고 output

netlist file을 정한 후에 OK하면 netlist가 current dir에 생성되었음을 볼 수

있다. (주의점 : 중간에 Analog라고 되어 있는 부분을 Digital로 바꿔주세요.)

shell 창

Page 10: CAD Tool Manual

fileexportCDL 선택시

netlist 생성 성공 시

3. Netlist 환경 설정

이 과정은 cadence에서 추출된 회로의 소자에 parameter를 주고 input과 output, dc

전압 등의 source를 setting해주는 과정입니다.

1) Netlist 수정 과정

1) .lib 명령을 이용해서 simulation에 필요한 lib를 불러옵니다.

.lib '~/tech/1833hp05S_rev2p1.lib' TT_LV

2) 필요한 option들을 넣어서 환경을 맞추어줍니다

(command일람 참조)

3) example

Page 11: CAD Tool Manual

① inverter.netlist

.subckt inverter out in

MP0 vdd in out vdd p w=0.36u l=0.18u

MN0 out in gnd gnd n w=0.18u l=0.18u

.ends inverter

② inverter.sp

inverter simulation

.lib '1833hp05S_rev2p1.lib' TT_LV

.include inverter.netlist

.option post

.global gnd vdd

vvdd vdd 0 1.8V

vgnd gnd 0 0

V1 1 0 pwl(0 0 5n 0 6n 1.8V 20n 1.8v 21n 0 40n 0 41n 1.8V)

X1 2 1 inverter

C1 2 0 100fF

.tran 0.01n 50n

.end

2) 주의사항

4) cadence에서 추출된 netlist는 library형식이기 때문에 어디서든 불러 쓸 수

있도록 .subckt 의 형식을 띄고 있습니다. Library에서 부른 module이 top

module일 때는 .subckt과 .end (subckt 이름)의 code를 제거해 주어야

합니다.

5) Netlist file(*.sp)의 제일 윗줄은 simulation의 title을 적어주고 시작해야

합니다. (주석을 넣을 시에 simulation 시 에러 발생)

3) Netlist command 일람

6) Input file control

① .include

* .include statement의 아래에 file의 내용을 그대로 patch한다.

Page 12: CAD Tool Manual

* Format

.include ‘[filepath]filename’

② .lib statement

* library 호출문의 일반적인 형태

* device, model, subcircuits등은 library file에 두고 이 명령으로 불러

올 수 있다.

* Format

.lib ‘[filepath]filename’ entryname

* .include와는 달리 library내의 한정된 부분(entry)만이 호출된다.

③ Independent source

A. DC source

[source_name] [to_node] [from_node] voltage_value

ex) v1 1 2 5V

B. Transient Source

i. Pulse function

* Format

pulse( [v1] [v2] [td] [tr] [tf] [pw] [per] [period] )

* example

vck clk 0 pulse(0 5 2n 1n 1n 5n 10n 20n)

ii. Piecewise Linear Function

* Format

PWL t1 v1 t2 v2 t3 v3 ……

* example

Page 13: CAD Tool Manual

vck 1 0 PWL 10n 2 20n 5 30n 3

C. .end statement

모든 input netlist는 적어도 하나의 .end statement를 가져야 하며

마지막 줄에 위치해야 한다.

D. .global statement

* Format

.global node1 node2 node3…

* global 명령은 subcircuit이 input data file에 이용될 때

사용되어진다.

* 구성된 cell의 호출

x_name n1 [n2 n3 …] subname [param = val …]

* input netlist file에서 subckt의 이름은 x로 시작해야 함.

E. .subckt statement

* Format

.subckt subname n1 [n2 n3 …] [param = val … ]

$ cell 구성

.end subname

7) Output file control

① .measure

* .measure statement는 회로의 사용자가 정의한 전기적인 spec을

print한다. 보통은 propagation, delay, rise & fall time등을 잰다.

* Format

.measure [dc|tran|ac] result trig … targ … [goal=val] +

[minval=val][weight=val]

Page 14: CAD Tool Manual

=> result : measure한 값이 저장되는 variable의 이름.

Trig… trag… : measure한 variable과 measure의 시작,끝에

관한 기술. Trig 조건보다 trag조건을 먼저 만나면

result값에 (-)값이 저장됨.

Goal,minval,weight : optimization에서 error계산시에 쓰임

* Example

*** inverter의 propagation delay측정

*** 10ns 이후 v(in)이 2.5V를 지나는 두번째 rising edge에서

*** v(out)dl 2.5V를 지나는 두번째 falling edge까지의 시간을

*** 측정하여 tdelay에 저장

vdd vdd gnd 5

vin in gnd pulse( 0V 5V 2n 2n 2n 8n 20n)

m1 out in vdd vdd pch3 w = 10u l = 2u

m2 out in gnd gnd nch3 w = 5u l = 2u

c1 out gnd 0.01p

.option post

.measure tran tdelay trig v(in) val=2.5 td=10n rise=2

+ targ v(out) val=2.5 fall=2

.end

Page 15: CAD Tool Manual

4. Simulation and Verification

1) hspice를 사용하기 위해서는 미리 조교가 만들어 놓은 cshrc를 불러 path

를 잡아야 합니다.

% source~/train_hspice.cshrc

2) hspice [netlist(sp file)] 으로 simulation

3) Error가 없었을 시에 Avanwaves를 통해서 signal을 보고 성능을

검증한다.

4) AvanWaves 사용법

① % awaves [simulation 결과 file ] (ex) %awaves inv.tr0 (or inv.sp)

② Result Browser에서 보고 싶은 signal을 더블 클릭하면 wave를

보여주는 창에 signal이 뜬다.

Result Browser

main window

Page 16: CAD Tool Manual

③ Main window에 있는 icon들은 다음과 같은 기능을 가지고 있다.

Result Browser 를 숨기거나 나타나게 한다.

Measure 할 수 있는 cursor 상태로 만들어 준다. 왼쪽은 한 지점만의 값을

측정하고 오른쪽은 두 지점의 차이도 측정할 수 있다.

Waveform 을 확대하거나 축소해서 볼 수있는 icon 이다. 왼쪽부터 순서대로

XY 축 확대, X 축 확대, Y 축 확대, XY 축 축 소, X 축 축소, Y 축 축소이다.

④ 명령창에서 measure에서 point로 각각의 시간마다의 signal특성을 볼

수 있고 propagation delay같은 것을 측정할 때는 pointTopoint

option을 써서 시간을 측정한다.

Page 17: CAD Tool Manual

5) NMOS/PMOS W/L ratio 조절

① NMOS와 PMOS의 특성이 다르므로 두 MOS간의 W/L ratio조정이

필요하다.

② inverter를 예로 들어보자.

③ 아래 결과는 NMOS의 W를 1.8um로, L을 0.6um로 고정하고, PMOS 의

L을 0.6um로 고정한 후 PMOS의 W를 변화시키면서 rising time과

falling time을 관찰한 것이다.

④ 결과에서 볼 수 있듯이 W/L ratio에 따라 rising time과 falling time이

변하고 이를 이용하여 원하는 spec을 만족시킬 수 있다.

Page 18: CAD Tool Manual

3 3.2 3.4 3.6 3.8 4 4.2 4.4 4.6

x 10-6

5

5.5

6

6.5

7

7.5

8x 10

-10 C=120f

6) Tr sizing

① W의 절대적인 크기에 따라서도 특성이 달라진다.

0 0.5 1 1.5 2 2.5 3

x 10-5

7

7.5

8

8.5

9

9.5

10

10.5x 10

-10 120f

② 그림은 NMOS/PMOS의 L을 0.6um로 고정한 후 WNMOS = A, WPMOS

= 2xA로 하여 A에 따른 변화를 본 것이다.

③ rising time과 falling time을 최소로 하는 W가 있음을 알 수 있다.

Falling time

Rising time

WPMOS

SEC

CL = 120f

Falling timeRising time

A

Page 19: CAD Tool Manual

5. Layout

1) Cell 생성

① icfb 초기 화면에서 FileNewCellview를 선택하면 다음과 같은 창이

뜬다

② schematic과 다른 점은 tool을 Virtuoso로 선택하는 것뿐이다.

2) Display setting

① 나중에 LSW 창이 보이기 위해서는 display.drf 파일을 설정해주어야

하는데, 이를 하기 위해서 다음과 같은 일을 사전에 해야한다.

② icfb 초기 화면에서 Tools/Display resource Manage를 클릭하면 아래

그림과 같은 창이 뜬다.

③ 위의 창에서 Merge를 클릭하고 ok를 누르면 다음과 같은 창이 뜨면

아래의 그림과 같이 입력해주고 ok를 누른다.

Page 20: CAD Tool Manual

3) Cell edit

① icfb 초기화면에서 ToolsLibraryManager 를 클릭하면 다음과 같은

창이 뜬다

Page 21: CAD Tool Manual

② schematic과 다른 점은 View column에서 layout을 선택하는 것뿐이다.

4) LSW(Layer Selection Window)

① Layout을 하기 위해 Cell을 열면 두 개의 창이 뜨는데 그 중의 하나가

그림과 같은 LSW 이다.

Page 22: CAD Tool Manual

② 이름에서 알 수 있듯이 이 창에서는 Virtuoso에서 그릴 layer를 선택하게

된다.

5) Virtuoso(Layout Editor)

① Layout을 하기 위해 Cell을 열었을 때 뜨는 또 하나의 창이다.

② 실제 Layout이 진행되는 곳이다.

③ Design tab에서 저장을 할 수 있다.

④ 오른쪽 위의 ‘Cmd:’는 현재 선택된 command를 가리킨다.

⑤ ESC를 누르면 선택된 command가 해제된다.

⑥ create object

A. LSW에서 원하는 layer를 선택한다.

B. Create tab에서 원하는 모양(rectangle, polygon, path)을

선택한다.

C. 시작 위치에 왼쪽 클릭, 끝나는 위치에 왼쪽 클릭(혹은 더블 클릭)

⑦ edit object

A. edit tab에서 원하는 동작을 선택.

B. edit하고자 하는 object에 마우스 포인터를 가져가면 선택될 object

의 색이 달라지며 활성화되는 것이 보인다. 이 때 왼쪽 클릭을 하면

그 object가 선택된다.

C. 원하는 동작을 수행한다.

Page 23: CAD Tool Manual

⑧ window

A. window tab에서 다양하게 window를 조절할 수 있다.

B. 직접 사용해보면 쉽게 알 수 있다.

⑨ Pin

A. input, output, vdd, gnd 등의 설정은 createpin 에서 할 수 있다

B. LSW에서 pin이 연결되는 layer를 고른다.(ex. metal1)

C. 아래와 같은 창이 뜨면 Terminal Names에 pin이름을 넣고

‘Display Pin Name’을 check하면 된다.

D. 필요한 경우 ‘Display Pin Name Option’을 클릭하여 아래와 같은

창에서 Pin의 layer를 바꿀 수 있다.(이 layer는 Pin name의 색을

결정하므로 LSW에서 고른 layer와 같게 해주는 것이 좋다.)

Page 24: CAD Tool Manual

.

⑩ Instantiation

A. Schematic에서와 마찬가지로 미리 만들어둔 cell들을 불러와서

사용할 수 있다.

B. 예를 들어 contact과 같이 자주 쓰이는 것들을 design rule에 맞게

미리 만들어두고 불러서 사용하면 편하다.

C. 또는 실험 2주차와 같이 1 bit adder를 8bit adder로 확장할

경우에도 이미 만들어진 1 bit adder를 불러서 사용하게 된다.

D. CreateInstance를 선택하면 아래와 같은 창이 뜨고, ‘Browse’를

이용해서 원하는 cell을 불러온다.(cell view가 layout이라는 것을

제외하고는 schematic의 경우와 같다)

Page 25: CAD Tool Manual

E. Instantiation을 하기 위해서 주의 해야 할 것이 있다.

i. 예를 들어 inverter와 3 input NAND를 불러서 사용하려고

한다고 하자.

ii. 이 때 inverter와 NAND의 VDD와 GND를 각각 연결

시켜주어야 하는데 만약 두 cell의 height가 다르다면 곤란하게

될 것이다.

iii. 따라서 단지 그 cell의 height를 최소화 하려고 하지 말고 전체

디자인을 고려하여 적당한 height(가장 height가 클 것이라

생각되는 cell의 height)를 정한 후에 거기에 맞추어서 layout을

진행하는 것이 좋다.

⑪ Hotkey

A. Virtuoso에 있는 다양한 hotkey를 이용하면 layout을 훨씬

Page 26: CAD Tool Manual

효율적으로 할 수 있다.

B. SP: start point, EP: end point, MP: middle point

C. Zoom in

i. z + ‘click SP’ + ‘click EP’

ii. z + ‘drag region’

D. Ruler

i. k + ‘click SP’ + ‘click EP’

ii. K : delete all ruler

E. Rectangle

i. r + ‘click SP’ + ‘click EP’

ii. r + ‘drag region’

F. Stretch

i. s + ‘click edge’ + ‘click EP’

G. Copy

i. c + ‘click object’ + ‘click destination’

H. Delete

i. d + ‘click object’

I. Path

i. p + ‘click SP’ + ‘click MP’ + … + ‘click EP’

J. Full view

i. f : view through the bottom level layout

ii. ^F : view only the top level layout

⑫ DRC(Design Rule Check)

A. DRC는 Calibre를 이용한다.

B. CalibreRun DRC하면 다음과 같은 창이 뜬다.

C. ‘...’을 클릭하면 browse창이 새로 뜨고 거기서 DRC rule file을

찾아서 넣는다.(여기서는 cal1833MX05S_pre.drc)

D. 왼쪽의 항목들이 모두 녹색이 되어야 한다.

Page 27: CAD Tool Manual

E. 이제 아래와 같은 창이 뜨면 ‘Run DRC’ 한다.

Page 28: CAD Tool Manual

F. DRC가 끝나면 아래와 같은 창이 두 개 뜬다.

Calibre – DRC RVE

DRC Summary Report

G. DRC RVE창에서 text로 표시되는 에러의 위치로 가서 design을

수정한다.

H. 모든 에러를 수정하여 더 이상 에러가 나지 않게 되면 LVS를

Page 29: CAD Tool Manual

수행한다.

⑬ LVS(Layout Vs Schematic)

A. LVS 는 Calibre를 이용한다.

B. CalibreRun LVS 하면 아래와 같은 창이 뜬다.

C. DRC와 마찬가지로 LVS rule file을 찾아 넣는다.

D. 그리고 Inputs에서 ‘Layout vs Netlist’를 선택하고 앞에서

schematic에서 추출한 netlist를 입력한다.

E. ‘Run LVS’

F. 아래와 같이 두 창이 뜨고, DRC에서와 같이 LVS RVE에서 에러를

찾아서 design을 수정한다.

Page 30: CAD Tool Manual

Calibre – LVS RVE

LVS Report File