2017年1月4日 星期三

Spice 簡介

簡單瞭解 simulation-hspice
前言: 
如果你希望把layout做好的話,你就應該知道的
多一些,再多一些!
總之多瞭解一些東西畢竟沒有什麼壞處,知識在肚子裡也不會壞掉。
 
一、簡述
首先來瞭解一下SPICE的發展歷程,以及常見的SPICE仿真軟件。
SPICE(Simulation Program with Integrated Circuit Emphasis)
is the de-facto standard for circuit simulation。
最早於1972年於美國加州大學伯克利分校開發,主要用於集成電路的分析。
1975年正式推出,並於1988年被定為美國國家標準。
常見縮寫UCB(University of California/Berkeley) BSIM(Berkeley Short-channel IGFET Model),BPTM(Berkeley Predictive Technology Model)

  相關的spice有:PSPICE(可以運行於PC及相兼容的機器),TSPICE,SBTSPICE,Spectre等。
  spice通過描述一些模型,並由foundry廠提供參數值進行仿真,以達到模擬真實生產的情況,決定是否能夠通過,
並以此進行調整,減少不必要的損失。

二、實例
以nand2為例進行仿真,所需hspice file內容如下:(nan2.sp):
simulation for NAND2
.option node post
.option accurate
.MODEL N NMOS LEVEL = 1 CGDO=.2N CGSO=.2N CGBO=2N
.MODEL P PMOS LEVEL = 1 CGDO=.2N CGSO=.2N CGBO=2N
MI01 NET01 B VSS VSS N L=0.5U W=1.0U
MI02 OP A NET01 VSS N L=0.5U W=1.0U
MI03 OP A VDD VDD P L=0.5U W=1.0U
MI04 OP B VDD VDD P L=0.5U W=1.0U
.tran 5ns 100ns
.temp 25
.op
VDD vdd 0 5v
VSS vss 0 0
vA A 0 pulse(0,5v,10ns,5ns,5ns,15ns,50ns)
vB B 0 pwl(0,0v 10ns,0v 15ns,5v 60ns,5v 65ns,0v)
.end

%hspice nand2.sp >nand2.lis
生成的後綴文件對照列表所示:
File Description                        Suffix
 
 output listing                          .lis
transient analysis results               .tr*
transient analysis measurement results   .mt*
DC analysis results                      .sw*
DC analysis measurement results          .ms*
AC analysis results                      .ac*
AC analysis measurement results          .ma*
FFT analysis graph data                  .ft*
subcircuit cross listing                 .pa*
output status                            .st*
initial conditions                       .ic*
用nWave打開nand2.tr0,查看的結果,如圖所示:

以上運行hspice的一個實例,下面將來重點分析nand2.sp 中每一句的意義何在。

三、重點分析
simulation for NAND2
標題,標注作用。
.option node post
.option accurate
選項,控制包括輸出類型、精確度、速度及收斂等情況
node 表示輸出node點的信息 post 表示輸出當前option的信息
accurate會增加cup運算時間,但精確度會得到提高。
.MODEL N NMOS LEVEL = 1 CGDO=.2N CGSO=.2N CGBO=2N
.MODEL P PMOS LEVEL = 1 CGDO=.2N CGSO=.2N CGBO=2N
模型,不同的model有不同的參數,提取這些值應該由流片的foundry廠提供。
MOSFET Model Levels:
public models & modified BSIM1
Level = 4 or 13 :BSIM1
Level = 5 or 39 :BSIM2
Level = 49 :BSIM3.3
Level = 8 :SBT MOS8
Level 48 :IBM ,Level 32 :AMD ,Level 45:Lucent ,...
MI01 NET01 B VSS VSS N L=0.5U W=1.0U
MI02 OP A NET01 VSS N L=0.5U W=1.0U
MI03 OP A VDD VDD P L=0.5U W=1.0U
MI04 OP B VDD VDD P L=0.5U W=1.0U
netlist,對應下圖結構.

這個通常的netlist格式,完整的應該有
.subckt nand op a b
...
.end
M表示MOSFET,語法如下:
Mxxx D G S B mtype L=value W=value
其它,X:subcircuit,C:cap,R:resistor,Q:bjt等
常用單位,如表所示:
Unit   Factor  Unit  Factor
     1E-15    FT   .305
     1E-12      1e3
     1E-9     MEG  1e6
     1E-6       1e9
 MI    25.4e-6    1e12
     1E-3     DB   20log10
.tran 5ns 100ns
.temp 25
.op
設定,這裡也屬於控制部分,其實寫在哪裡都無所謂。
.tran設定仿真時間在5ns為一個step,100ns這個範圍
.tmp設定溫度
.op表示輸入控制。.OP,.IC,.NODESET為DC控制點,屬於analysis Type & Orders,
最先計算。
.op輸出如節點電位,目標電流,半導體器件電流,電容等信息。
VDD vdd 0 5v
VSS vss 0 0
power設定,vdd設定apply voltage的值。vss默認在0v。
vA A 0 pulse(0,5v,10ns,5ns,5ns,15ns,50ns)
vB B 0 pwl(0,0v 10ns,0v 15ns,5v 60ns,5v 65ns,0v)
灌輸入信號,語法如下:
pulse是一個脈衝信號。
Vxxx n1 n2 pulse(v1 v2 td tr tf tpw tper)
 
pwl是分段線性信號,每一點都說明,否則就保持最後值不變。
可以用repeat+delay進行循環設定。
Vxxx n1 n2 pwl(t1 v1,t2 v2,...)
 
.end
結尾語句
如果你認為把什麼都放在一起,不易於管理,也可以分門別類
比如把subcircuit放在一起叫netlist,把model都放在一起叫xx.mdl
在sp file可以使用.include對這些文件進行調用,如:
.include netlist
.include xx.mdl

四、調整
根據波形進行調整,這才到了最重要的地方。
分析手段各異,但最終的目標相同。當你每天對著這些波形發愣的時候,你就會懷念起
童年時的美好生活。

沒有留言:

張貼留言