시뮬레이션/hspice

HSPICE & ADE simulation : Parameter 설정하는 법, parameter sweep simulation

코라자비 2024. 3. 30. 09:07

 

오늘은 hspice simulation 할 때 시뮬레이션을 더 편하게 돌릴 수 있도록 parameter 를 설정하는 법에 대해 알아보겠습니다. Parameter 는 input vector 에서 특정 변수가 계속해서 반복되거나 자주 바꾸는 경우에 사용하면 상당히 유용합니다. 먼저 예시를 들어보겠습니다.

 

vclk clk 0 pulse (1.1 0 10n 10p 10p 90p 200p)

 

일반적으로 위와 같이 clock signal 을 정의할 수 있습니다. Logical high 전압이 1.1 V, Logical low 전압이 0 V, 10ns 의 delay 후에 10p 의 rising, falling time 을 가진, 200ps 의 주기를 가진 duty 50 의 clock 신호입니다. 특정 클락 주파수만 설정해놓고 시뮬레이션을 돌리면서 회로를 설계하게 되면 robust 한 회로를 설계하지 못합니다. 실제 칩은 전압이 바뀔수도, duty 가 바뀔수도, frequency 가 일부 틀어질 수도 있기 때문이죠. 이번에는 변수를 활용해서 clock 을 선언해보겠습니다.

.param vdd = 1.1
.param vss = 0
.param delay = 10n
.param tr = 10p
.param tf = 10p
.param duty = 0.5
.param period = 200p
vclk clk 0 pulse (vdd vss delay tr tf 'period*duty-tr/2-tf/2' period)

 

똑같은 클락 시그널도 위와 같이 변수를 이용해서 선언할 수 있습니다. 변수를 선언하는 것은 처음에는 좀 귀찮을 수 있지만, 계속해서 input vector를 바꿔가며 시뮬레이션을 돌릴 시에는 매우 편안하죠. 그리고 회로를 설계할 때는 여러가지 환경에 변화를 주었을 때도 회로가 제대로 동작하는지를 꼭 확인해야 합니다. 그렇기 때문에 더더욱 변수 설정이 필수적이죠. 변수를 바꾸는 방법은 간단합니다. 

.tran 0.1n 100n sweep vdd 0.9 1.1 0.02

 

일반적으로 tran simulation 을 돌릴 때 .tran (시간간격) (끝나는시간) 으로 simulation 을 돌리고 있을텐데요. 그 뒤에 위와같이 sweep 하고 싶은 parameter 를 선언해주면 됩니다. 위와 같이 simulation 을 돌리면 vdd 전압을 0.9 V 에서 1.1 V 까지 0.02 V 간격으로 시뮬레이션이 돌아가게 됩니다. 그럼 이 경우엔 0.9, 0.92, 0.94, 0.96, 0.98, ... 1.08, 1.1 V 의 전압에 대해 simulation 이 돌아가죠. 이 모든 전압에 대해서 설계한 회로가 동작을 제대로 하게 된다면 비로소 제대로 동작할 가능성이 높은 칩을 설계했다고 볼 수 있습니다. 아래 몇가지 다른 sweep 예시문을 들어보며 글 마치겠습니다.

.tran 0.1n 100n sweep tr 5p 20p 5p

 

드라이버 strength 에 따라 tr 혹은 tf 가 더 커지거나 작아질 수 있습니다.

.tran 0.1n 100n sweep duty 0.47 0.53 0.01

 

외부에서 들어오는 clock signal 이 완벽한 50% 의 duty 를 갖는 것이 아니라 duty 가 깨질 수도 있습니다.

.tran 0.1n 100n sweep period 180p 220p 20p

 

외부에서 들어오는 clock signal 이 완벽히 원하는 frequency 가 아니라 10 % 정도 틀어질 수 있습니다.

반응형