아날로그 연구실

HSPICE 명령어 모음

EthanShin 2021. 4. 20. 16:29

리눅스 실행법

----------------------------------------------------------------------------------------------------------------------------

내가 제일 많이 쓰는것

----------------------------------------------------------------------------------------------------------------------------

hspice -mt [num] -i [sp 파일 이름] -o [출력 파일이름]

 

 

 

SP File 작성법

 

Power

----------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------

DC(vdd에 DC A(5v) voltage 추가

 

vdd vdd 0 dc A

.param A=5

 

vdd는 vdd와 0 사이에 있는 dc Voltage 이고 크기는 A이다.

A는 5이다.

----------------------------------------------------------------------------------------------------------------------------

 

 

Signal

----------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------

pwl (ramp)

일반   vstart start 0 pwl A B C D E F

EX)    vstart start 0 pwl 0 0 0.1n 4 0.2n 0

 

vstart 는 start와 0 사이에 있는 pwl 값이고 A초에는 B값 C초에는 D값 E초에는 F값.............계속

 

----------------------------------------------------------------------------------------------------------------------------

pulse

 

vrefclk refclk 0 pulse A B C D E F G

A=v1

B=v2

C=delay

D=rising time

E=falling time

F=pulse width

G=period

 

ex1)

vrefclk refclk 0 pulse 4 0 0 0.1n 0.1n 1n 2.2n

ex2)

vclk clk 0 pulse 0 supply 1p 20p 20p '1/freq/2-30p' '1/freq'

.param freq = 1giga

----------------------------------------------------------------------------------------------------------------------------

random pulse

 

ex)

vd d 0  LFSR (0 supply 0 10p 10p 400meg 2 [1, 4, 2, 8])

----------------------------------------------------------------------------------------------------------------------------

Sine wave

 

vsine sine 0 sin A B C D E

 

A = Offset voltage

B = Amplitude  [ 차동신호 입력시 -V 랑 V 입력]

C = Frequency

D = Initial delay

E = Damping factor

 

ex)

vinp inp 0 sin 0.6 0.6 4.05G 0 0

vinm inm 0 sin 0.6 -0.6 4.05G 0 0

----------------------------------------------------------------------------------------------------------------------------

Analysis

----------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------

.tran 1p 100n

1ps단위로 100ns 동안 transiant analysis 를 진행한다.

 

 

Parameter Sweep

----------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------

Digital

 

.tran 10p 10n sweep data=TEMP

TEMP 의 data sweep을 하여 10ps time step 으로 10ns 시뮬레이션을 진행한다.

 

.data TEMP CTRL<4> CTRL<3> CTRL<2> CTRL<1> CTRL<0>

+    0  0  0  0  0

+    0  0  0  0  1

+    0  0  0  1  0

+    0  0  1  0  0

+    0  1  0  0  0

+    1  0  0  0  0

 

CTRL<4:0> = 00000

CTRL<4:0> = 00001

CTRL<4:0> = 00010

CTRL<4:0> = 00100

CTRL<4:0> = 01000

CTRL<4:0> = 10000

의 Data sweep 진행

 

Alter

 

여러조건에서 시뮬레이션을 돌리는 방법 ( PVT Variation이나 여러 조건, Parameter sweep과 유사하나 출력이 result.tr0, result.tr1, result.tr2과 같이 분리됨)

 

본 예시에서는 PVT Variation에 대한 시뮬레이션을 진행함

ex)

---example.sp---

.lib '라이브러리 경로' tt  ## TT Conner

 

v_vdd vdd 0 dc supply

v_vss vss 0 dc 0

 

본문

 

.tran 1p 1u

.probe v(*) 

.probe i(*)

 

.temp 'pTemp' $$ 온도 조건을 변수로 선언

.param pTemp = 27 $$ TT Corner에서의 온도

.param supply = 'pSupply'

.param pSupply = 1 $$ TT Corner에서의 전압

 

.alter

.del lib '라이브러리 경로' tt ## TT Corner 라이브러리 선언 제거

.lib '라이브러리 경로' ff  ## FF Corner 재선언

.param pTemp = -50 $$ FF Corner에서의 온도

.param pSupply = 1.1 $$ FF Corner에서의 전압

 

.alter

.del lib '라이브러리 경로' FF ## FF Corner 라이브러리 선언 제거

.lib '라이브러리 경로' SS  ## SS Corner 재선언

.param pTemp = 100 $$ SS Corner에서의 온도

.param pSupply = 0.9 $$ SS Corner에서의 전압

 

.end ## .end는 꼭 제일 마지막에 위치

 

위 sp파일을 hspice로 진행시

.tran으로 선언되어 있기때문에  tr0(TT) tr1(FF) tr2(SS) 로 3개로 출력됨

.ac 나 .dc 시뮬레이션을 진행한다면 ac0 ac1 ac2 혹은 dc0 dc1 dc2로 출력됨.