티스토리 뷰

연구/HSPICE

[HSPICE] HSPICE에서 Alter구문 사용

태양의티아 2019. 6. 29. 12:38

ALTER 기능은 위와 동일하되 ALTER에 나온 부분만 값을 바꾸거나 교체하는 것이다.

즉, ALTER를 쓰면 앞에서 적었던 조건들을 다시 쓰면서 용량과 우리의 시간을 낭비하는 것을 방지할 수 있다.

그래서 Manual에 있는 예제를 중심으로 정리하고자 한다.

 

** alter를 이용할 경우, 명령어를 그대로 가져다 쓰지 말고 Parameter로 값을 받아오고 Parameter를 변경하자

** 시뮬레이션의 경우 종류가 같아야(tr, dc, ac) 꼬이지 않고 시뮬레이션 가능하다.

** alter에서 Netlist의 경우 같은 이름으로 만들면 이전 Netlist를 대체한다.

** 아주 잘 쓰는 방법 중 하나로 if else 구문이 존재한다.

 

1. 온도 변경

회로 시뮬레이션에서 온도는 중요한 요소이다.

.temp 는 온도를 지정하는 명령어로 시뮬레이션 온도 환경을 설정할 수 있다.

 

우선은 잘못 돌아갈 수 있는 예시를 먼저 가지고 왔다.

V1	n1	0	pulse 0 1 0 1n 1n 2n 4n
R1	n1	n2	1k tc1=0.01
R2	n2	0	1k tc1=0.005
.temp 60
.tran 1n 20n

.alter 1
.temp -40

.alter 2
.temp 110

.end

이 회로는 R1, R2를 Voltage dividing 하는 회로로

입력 신호로는 Voltage Source를 통해 Pulse를 주고 있다.

R1, R2는 모두 1k-Ohm의 크기를 지니고 있으며, 1차항의 온도계수로 tc1 값이 지정되어 있다.

 

이 sp 파일을 시뮬레이션 돌리면 다음과 같이 나온다.

Top level:	*.tr0 @ temp=60

Alter 1:	*.tr1 @ temp=60
		*.tr2 @ temp=-40
            
Alter 2:	*.tr3 @ temp=60
		*.tr4 @ temp=-40
		*.tr5 @ temp=110

우리가 원한 것은 Alter 1일 때 -40만 돌리고, Alter 2일 때 110만 돌리는 것이다.

이는 alter를 실행할 때, .temp 명령어가 대체되는 것이 아닌 Simulation Que에 추가하는 구조이기 때문이다.

 

때문에 .temp는 한 번만 실행하고, 값을 Parameter로 주는 방식을 택해야 한다.

.param pTemp=60 $ temperature control

V1	n1	0	pulse 0 1 0 1n 1n 2n 4n
R1	n1	n2	1k tc1=0.01
R2	n2	0	1k tc1=0.005

.temp 'pTemp'
.tran 1n 20n

.alter 1
.param pTemp=-40

.alter 2
.param pTemp=110

.end

이렇게 변경할 경우 각각 한 번씩 시뮬레이션을 진행하게 된다.

 

2. 시뮬레이션 변경

이번에도 의도와 맞지 않게 돌아갈 수 있는 것을 먼저 가지고 왔다.

.param pw=10n per=20n

V1 1 0 pulse 0 1 0 1n 1n 'pw' 'per'
R1 1 2 1k
R2 2 0 1k

.tran 1n 20n

.alter 1
.param pw=7.5n per=15n
.tran 1n 15n

.alter 2
.param pw=5n per=10n
.tran 1n 10n

.end

Schematic 부분부터 보자.

동작은 온도 때와 동일하다. Voltage Divider동작이고 입력으로 Pulse가 들어온다.

특징은 Pulse를 Parameter를 통해서 정한다는 점이다.

해당 방법은 매우 좋은 방법이다.

 

그러나 밑의 .tran 명령어의 경우 그렇지 않다.

이 경우도 .tran 명령어가 대체되는 것이 아닌 Simulation Que에 추가하는 구조이다.

따라서 해당하는 것을 Parameter화 시켜서 변경할 경우 다음처럼 만들 수 있다.

.param pw=10n per=20n
.param ts=20n $ tstop value

V1 1 0 pulse 0 1 0 1n 1n 'pw' 'per'
R1 1 2 1k
R2 2 0 1k
.tran 1n 'ts'

.alter 1
.param pw=7.5n per=15n
.param ts=15n

.alter 2
.param ts=10n
.param pw=5n per=10n

.end

HSPICE 메뉴얼의 예제를 가지고 온 것인데, ts 대신 그냥 per을 그대로 가져다 써도 된다.

( 왜 굳이 따로 설정했는지 이해가 불가능하다.)

 

3. ALTER 관련 Option (20.06.21. 추가)

.option ALTCC

alter에서 input netlist를 1번만 읽는다. 원래는 매번 Netlist를 읽게 되는데, 이러한 시간을 줄이는 효과를 낸다.

 

해당 option은 parameters, source stimulus, analysis, passive elements들을 바꾸는 경우에만 동작하고 그 외에는 무시되게 됩니다.

.option ALTCHK

alter에서 다시 정의된 elements에 대해 Topology checking을 안 하도록 하는 option.

댓글