디지털 집적회로 설계 LAB HOMEWORK31. Schematic2. Layout3. spice 파일***simulation mux*****.lib 'TSMC018.l' MOS****condition*****.option scale=0.06u.global VDD GND.temp=25****input signal*****Vdd VDD GND 3.3Va S GND pwl(0n 0 199n 0 200n 3.3 399n 3.3 400n 0 r)Vb IN_1 GND pwl(0n 0 49n 0 50n 3.3 99n 3.3 100n 0 r)Vc IN_2 GND pwl(0n 0 99n 0 100n 3.3 199n 3.3 200n 0 r)M0 Inv_s S Vdd Vdd CMOSP w=8 l=3+ ad=0 pd=0 as=0 ps=0M1 Inv_s S Gnd Gnd CMOSN w=8 l=3+ ad=0 pd=0 as=0 ps=0M2 Out S IN_1 Vdd CMOSP w=8 l=3+ ad=0 pd=0 as=0 ps=0M3 IN_1 Inv_s Out Gnd CMOSN w=8 l=3+ ad=0 pd=0 as=0 ps=0M4 Out Inv_s IN_2 Vdd CMOSP w=8 l=3+ ad=0 pd=0 as=0 ps=0M5 IN_2 S Out Gnd CMOSN w=8 l=3+ ad=0 pd=0 as=0 ps=0.tran 100n 1u.measure tpdr+ trig=v(IN_1) val=1.65 rise=2+ targ=v(out) val=1.65 rise=2.measure tpdf+ trig=v(in_2) val=1.65 fall=1+ targ=v(out) val=1.65 fall=2.measure tpd param='(tpdr+tpdf)/2'.probe.END4. waveform5. delay5. 고찰이번 실습 시간과 과제는 2-to-1 mux를 layout 해보고 tr레벨로 설계해 보는 것이었습니다. 먼저 실습 시간에 했던 layout이 spcie파일을 추출해서 시뮬레이션을 해보았는데 결과가 이상하게 나와서 다시 layout을 하게 되었습니다. 이번 2-to-1 mux 에서는 pass트랜지스터 기법을 사용하여서 layout을 하였습니다. 이번 layout을 통해서는 또 하나 알 수 있었던 것이 메탈1과 메탈2를 어떻게 잘 활용해야 하는지에 대한 부분 이였습니다. 아웃풋이나 인풋을 m1으로 해야지만 magic tool에서 잘 인식이 되어서 정확한 결과가 나올 수 있다는 것을 알 수 있었습니다.tr레벨로 spice파일을 설계 한 후에는 delay를 구하는 부분에서 조금 고민이 되었습니다. mux로 하다 보니 sel 신호에 따라서 결과가 나오는 것이 일정하기 때문입니다. 그래서 서로 다른 두 개의 인풋 신호에 의해 겹쳐지는 부분을 활용하여서 delay를 측정할 수 있도록 spice파일을 작성하였습니다. delay를 측정해본 결과 layout을 한 경우와 tr레벨로 설계한 경우 모두 같은 delay를 가지는 것을 확인 할 수 있었습니다.
디지털 집적회로 설계 LAB HOMEWORK21. FULL XOR GATE Schematic2. FULL XOR GATE Layout3. transistor level 설계(1) waveform(2) sp 파일**************Simulation input file************.lib 'TSMC018.l' MOS********************************************************Condition***********************.option scale=0.06u.global VDD GND.temp=25*******************************************************Input Signal***********Vdd VDD GND 3.3Va A GND pwl (0n 0 49n 0 50n 3.3 99n 3.3 100n 0 r)Vb B GND pwl (0n 0 99n 0 100n 3.3 199n 3.3 200n 0 r)************************************************************************************Cell Name : xor_tsmc*******************************M0 w_a A Vdd Vdd CMOSP w=8 l=3+ad=0 pd=0 as=0 ps=0M1 w_a A Gnd Gnd CMOSN w=8 l=3+ad=0 pd=0 as=0 ps=0M2 w_b B Vdd Vdd CMOSP w=8 l=3+ad=0 pd=0 as=0 ps=0M3 w_b B Gnd Gnd CMOSN w=8 l=3+ad=0 pd=0 as=0 ps=0M4 w_c w_a Vdd Vdd CMOSP w=8 l=3+ad=0 pd=0 as=0 ps=0M5 w_c w_b Vdd Vdd CMOSP w=8 l=3+ad=0 pd=0 as=0 ps=0M6 Out A w_c Vdd CMOSP w=8 l=3+ad=0 pd=0 as=0 ps=0M7 Out B w_c Vdd CMOSP w=8 l=3+ad=0 pd=0 as=0 ps=0M8 Out w_a w_d Gnd CMOSN w=8 l=3+ad=0 pd=0 as=0 ps=0M9 w_d w_b Gnd Gnd CMOSN w=8 l=3+ad=0 pd=0 as=0 ps=0M10 Out A w_e Gnd CMOSN w=8 l=3+ad=0 pd=0 as=0 ps=0M11 w_e B Gnd Gnd CMOSN w=8 l=3+ad=0 pd=0 as=0 ps=0.tran 100n 1u.measure tpdr+trig=v(out) val=1.65 rise=1+targ=v(a) val=1.65 rise=1.measure tpdf+trig=v(out) val=1.65 fall=1+targ=v(a) val=1.65 rise=2.measure tpd param='(tpdr+tpdf)/2'.probe.END(3) propagation delay4. Layout 추출(1) waveform(2) sp 파일* SPICE3 file created from xor_new.ext - technology: tsmc.lib 'TSMC018.l' MOS.option scale=0.06u.global VDD GND.temp=25*****input signal**********Vdd VDD GND 3.3Va A GND pwl (0n 0 49n 0 50n 3.3 99n 3.3 100n 0 r)Vb B GND pwl (0n 0 99n 0 100n 3.3 199n 3.3 200n 0 r)M0 w_a A Vdd Vdd CMOSP w=8 l=3+ ad=0 pd=0 as=0 ps=0M1 w_b B Vdd Vdd CMOSP w=8 l=3+ ad=0 pd=0 as=0 ps=0M2 Vdd w_a a_94_33# Vdd CMOSP w=8 l=3+ ad=0 pd=0 as=0 ps=0M3 a_94_33# w_b Vdd Vdd CMOSP w=8 l=3+ ad=0 pd=0 as=0 ps=0M4 Out A a_94_33# Vdd CMOSP w=8 l=3+ ad=0 pd=0 as=0 ps=0M5 a_94_33# B Out Vdd CMOSP w=8 l=3+ ad=0 pd=0 as=0 ps=0M6 w_a A Gnd Gnd CMOSN w=8 l=3+ ad=0 pd=0 as=0 ps=0M7 w_b B Gnd Gnd CMOSN w=8 l=3+ ad=0 pd=0 as=0 ps=0M8 a_108_n82# w_a Gnd Gnd CMOSN w=8 l=3+ ad=0 pd=0 as=0 ps=0M9 Out w_b a_108_n82# Gnd CMOSN w=8 l=3+ ad=0 pd=0 as=0 ps=0M10 a_142_n82# A Out Gnd CMOSN w=8 l=3+ ad=0 pd=0 as=0 ps=0M11 Gnd B a_142_n82# Gnd CMOSN w=8 l=3+ ad=0 pd=0 as=0 ps=0C0 Vdd GND 3.0fF.tran 100n 1u.measure tpdr+trig=v(out) val=1.65 rise=1+targ=v(a) val=1.65 rise=1.measure tpdf+trig=v(out) val=1.65 fall=1+targ=v(a) val=1.65 rise=2.measure tpd param='(tpdr+tpdf)/2'.probe.END(3) propagation delay5. 고찰이번 실습 과제는 XOR 게이트를 layout을 통해서 구현한 모델과 트랜지스터 레벨 모델을 직접 hspice를 통해 구현해 보고 비교해보는 실습입니다.먼저 XOR 게이트를 layout을 할 때 diffusion을 서로 공유해서 하는 부분이 어려웠습니다. 하나의 트랜지스터에서는 drain 이지만 그 부분이 다른 트랜지스터에 의해서는 source가 될 수 도 있다는 부분이 조금은 낯설게 느껴졌습니다. 처음에 layout을 할 때는 그래서 서로 diffusion을 공유하지 않게 그렸지만 그러다 보니 size가 커지는 걸 알게 되었습니다. 그 후에 diffusion을 공유하는 방식으로 layout을 하게 되었습니다.그 후에 sp파일을 만들고 시뮬레이션을 하는데 계속 에러가 났습니다. 그래서 layout을 살펴보니 input B 부분에서 m1과 m2를 연결하는 부위에서 via를 해주지 않아서 일어난 에러인 것을 확인하고 수정하니 정상적으로 시뮬레이션이 되었습니다.트랜지스터 레벨을 통해서 설계하는 부분은 wire를 적절히 선어해 줌으로써 생각보다는 쉽게 구현 할 수 있게 되었습니다.두 개의 방법으로 구현한 XOR 게이트를 시뮬레이션 한 결과는 아래의 표와 같습니다.Input AInput Btr레벨 outlayout out*************100시뮬레이션 결과 두 개의 방법 모두 같은 XOR게이트를 구현하는 것을 확인 할 수 있었습니다. 또한 propagation delay의 경우는 트랜지스터 레벨을 통해서 구현한 경우 2.5073E-08이였고 layout을 통해서 구현한 경우 2.5066E-08로 거의 비슷한 결과가 나오는 것을 알 수 있었습니다. 이번 실습을 통해서 내가 구현하려는 회로를 먼저 트랜지스터 레벨로 구현해 보고 그것을 시뮬레이션으로 검증해보고 그 후에 Layout을 한다면 보다 정확한 회로를 구현 할 수 있다는 것을 알 수 있었습니다.
디지털 집적회로 설계 LAB HOMEWORK 11. Inverter(1) schematic(2) Layout(3) Spice file2. NAND(1) schematic(2) Layout(3) spice file3. AND(1) schematic(2) Layout(3) spice file4. 고찰이번 과제는 그 동안 해왔던 inverter, nand, and 게이트를 직접 그려보고 spice 파일로 추출해 보는 과제 였습니다. 먼저 schematic은 수업시간에 주신 강의 노트를 참고로 하여서 그리게 되었습니다. and 게이트의 경우가 이론과 실습 강의 노트 모두에 나와 있지 않아서 조금 고민하였는데 실습 시간에 nand게이트를 만들고 그 output에 inverter를 붙였기 때문에 schematic도 동일하게 nand게이트에 inverter를 붙이는 형태로 작성하였습니다.Layout의 경우에는 drc를 따라야 해서 drc 따르기전에 그렸던 Layout 보다는 다소 면적과 크기가 커진 것 같습니다. 최소한의 면적으로 구동하게 해야지 좋은 chip이 나오기 때문에 그러한 부분들을 계속 연습해 봐야겠습니다.그 다음에 spice 파일을 추출하는 부분에 대해서 말하겠습니다. spice 파일 같은 경우는 2학년때 했던 기초실험에서의 orcad 사용시 netlist와 비슷한 점이 많은 것 같습니다. 그리고 spice파일을 통해서 port를 지정하고 그 후에 나중에 배우겠지만 시뮬레이션을 할 수 있다는 사실이 직접 Layout 전에 해봄으로써 먼저 가능 한지를 알 수 있기 때문에 좋은 tool인 것 같습니다.