시뮬레이션/hspice

SPICE & ADE Simulation : hspice clk 선언하는 법

코라자비 2024. 2. 10. 16:20

Hspice simulation 을 돌리려면 input signal 을 짜줘야합니다. 그 중에서도 digital signal input 과 clk 을 선언하는 경우가 많죠. 오늘은 clk signal 을 짜는 기본적인 틀 중 하나를 제시해보려 합니다. 바로 보시죠.

 

.param vh = 1

.param vl = 0

.param td = 10n

.param tr = 10p

.param tf = 10p

.param freq = 1000M

.param period = 1/freq

.param duty = 0.5

vclk clk 0 pulse vh vl td tr tf 'period*duty-tr/2-tf/2' period

 

 

이런식으로 clock signal 을 선언하게 되면 jitter 를 제외한 대부분의 상황을 고려해서 시뮬레이션 할 수 있습니다. 여기서 각각의 parameter 가 어떤 것을 의미하는지 알려드리겠습니다. vh 는 logical high voltage 로 일반적으로 VDD 를 의미합니다. vl은 logical low voltage 로 일반적으로 VSS 를 의미합니다. td 는 delay time 으로 몇 초 후에 clk 이 toggle 하는지를 정의할 수 있습니다. tr 과 tf 는 각각 rising time, falling time 으로 클락 시그널의 기울기를 설정할 수 있죠. 그 다음으로 freq, period, duty 가 있습니다. 각각 clock signal 의 스피드, 주기, clk 의 duty 를 의미하죠. 위와 같은 clk signal 을 선언하면 몇 개의 parameter 를 조절해서 다양한 simulation 을 할 수 있습니다.

 

일반적으로 시스템은 한 가지 포인트에서만 동작하도록 설계하면 거의 망할 가능성이 높습니다. Process 와 Voltage 그리고 Temperature를 sweep 하여 여러개의 환경에서도 전부 동작할 수 있는 칩을 설계해야 문제가 발생하지 않죠. 따라서 위와 같은 clock signal 을 설계하고 여러 개의 parameter 를 sweep 해서 설계한 시스템이 제대로 동작해야하는지 확인해야합니다.

 

아래는 몇가지 parameter 를 sweep 하면서 어떤 부분을 점검할 수 있는지를 간단히 보겠습니다.

 

 

1. Input clock buffer 점검

먼저 첫번째로 parameter 중 vh, vl, tr, tf 등을 조절하여 input clock bufffer 를 점검할 수 있습니다. Input clock buffer 의 경우 input capacitance 는 작고 driving strength 는 크게 설계되어야 합니다. 만약 input cap 이 크게 설계되었다면 tr, tf 등을 조금 키운다면 system 이 죽게 되겠죠. 또한 vh 와 vl 을 조절하였을 때도 system 이 사는지 체크해야합니다. 사실 이 경우에는 clock signal 의 vh 와 vl 만 조절하는 것이 아니라 system 이 사용하는 supply voltage 를 같이 sweep 해줘야 제대로 system 을 체크할 수 있습니다. sweep 하는 예시는 아래와 같습니다.

 

.

.

.

.tran 0.01n 100n sweep vh 0.9 1.2 0.1

 

위와 같이 tran 시뮬레이션을 설정하고 뒤에 sweep 구문을 붙여 sweep 하고 싶은 parameter 를 선언하면 됩니다. 이 경우에는 100ns simulation 을 0.01ns resolution 으로 실행하돼, vh parameter를 0.9 에서 1.2 까지 0.1 단위로 sweep 해서 시뮬레이션하겠다는 의미입니다.

 

 

2. Clock frequency 에 따른 system check

다음으로는 clock frequency 에 따라 system check 를 할 필요성이 있습니다. 우리가 일반적으로 동작 frequency 를 정할 때 clock frequency 를 기준으로 설계합니다. 예를 들어 1GHz clock frequency 로 설계했다고 해보죠. 실제 동작 환경은 이상적인 시뮬레이션 환경과는 완전히 다르기 때문에, 1GHz clock frequency 가 안 가해질 수도 있습니다. 5~10% 증가나 감소가 있을수도 있죠. 만약 1GHz 환경에서 최적화를 엄청 예쁘게 해놨는데, clock frequency 가 5% 만 증가하여도 system 이 죽는다? 이러면 상당히 위험한 칩일 수 있습니다. 따라서 frequency parameter 에 약간의 variation 을 주어서 system 이 제대로 동작해야하는지 확인해야합니다.

 

3. Clock duty 에 따른 system check

마지막으로 가장 쉽게 간과할 수 있는 clock signal 의 duty 입니다. 사실상 input buffer 와 clock frequency 의 경우 5~10% 정도 variation 을 준다고 하더라도 칩이 죽지 않을 가능성이 큽니다. 하지만 duty 의 경우에는 크게 고려 안 하는 경우도 많아서 칩이 죽을 수 있는 가능성이 있죠. 외부에서 클락 시그널을 줄 때 이상적으로 50% 의 duty 가 있다고 생각하지만 실제로는 그렇지 않습니다. PVT 나 여러 요인에 의해 duty 가 최악의 경우에 +- 10 %  틀어질 수 있다고 생각해야 하죠. duty 50% 인 상황에서만 동작하도록 설계하면 duty 가 조금만 틀어질 경우 chip 이 죽을 수 있습니다. 따라서 duty 를 40, 50, 60 인 상황에서 sweep simulation 을 해 system 이 robust 한지 확인해야 합니다.

반응형