시뮬레이션/hspice

HSPICE & ADE simulation : 변수 선언 순서

코라자비 2024. 4. 3. 23:56

 

 

오늘은 변수 선언 순서에 대해 다뤄보겠습니다. 일반적으로 hspice 를 사용할 때 변수를 선언하고 해당 변수에 원하는 값을 배정하는데요. 여러가지 파일을 include 하거나 library 로 사용하는 경우 어느 변수값을 물리는지에 대해 헷갈릴 수 있습니다.

 

먼저 다른 sp 파일이나 option 파일을 물리는 방식으로는 일반적으로 include 와 lib 방식이 있습니다.

 

Lib 파일에는 보통 여러가지 상황을 가정하고 그 상황에 따른 변수를 설정합니다. 예를 들어 High voltage 와 Low voltage 가 가해지는 상황을 가정하면 아래와 같이 lib 파일을 선언할 수 있습니다.

** LIB name = VDD.lib
.LIB HIGH_VDD
.param VDD = 2.5
.param VSS = 0.2
.ENDL

.LIB LOW_VDD
.param VDD = 2.2
.param VSS = 0
.ENDL

 

이런식으로 library 를 선언해봅시다. 해당 lib 을 library 방식으로 물리고 어떤 library 를 사용할지 아래와 같이 선언할 수 있습니다.

.lib (파일 경로)/VDD.lib      HIGH_VDD

 

위와 같이 선언하면 HIGH_VDD 일 때의 parameter 를 물리게 됩니다. 이 경우에는 VDD = 2.5 V , VSS = 0.2 V 가 배정되죠. 반대로 아래와 같이 선언하면

.lib (파일 경로)/VDD.lib     LOW_VDD

 

VDD 에는 2.2 V , 그리고 VSS = 0V 가 배정되게 됩니다. 이런 식으로 어떤 VDD 인지 혹은 Corner 인지, Temperature 인지 등의 PVT 상황에 따라 library 를 선언해주고 parameter 를 그 안에 선언하면 쉽게 parameter set 을 바꿀 수 있습니다.

 

lib 에는 주의해야할 점이 있는데 여러 개의 lib 을 선언해준 경우, 그리고 그 lib 에서 중복된 parameter 를 선언한 경우에는 마지막 lib 에서 선언한 parameter 값을 물리게 됩니다. 아래와 같은 lib 이 있다고 해봅시다.

 

** LIB name = TEMP.lib

.LIB HT
.param temp = 100
.param VDD = 2.4
.param VSS = 0
.ENDL

.LIB CT
.param temp =-20
.param VDD = 2.1
.param VSS=0
.ENDL

 

그리고 이번엔 TEMP.lib 과 VDD.lib을 둘다 물리면

 

.lib (파일경로)/VDD.lib   HIGH_VDD
.lib (파일경로)/TEMP.lib  HT

 

이렇게 하면 HT 과 HIGH_VDD 에서 모두 VDD 와 VSS 라는 parameter 를 정의하게 됩니다. 중복된 parameter 가 선언되서 error 가 날 수도 있을거라 생각하지만 실제로는 더 마지막에 선언된 TEMP.lib 의 parameter 값을 따라갑니다. 결국 이 경우에 parameter 값들은 temp = 100, VDD=2.4, VSS=0 이 배정되죠. 이상입니다.

반응형