《HSIM仿真工具研究使用报告》

《HSIM仿真工具研究使用报告》
《HSIM仿真工具研究使用报告》

《HSIM仿真工具研究阶段汇报》

---- 胡滨 2006.1.4

张雷鸣修正2007 10.9

1).HSIM简介:

HSIM(基于Nassda公司的专利层次化数据存储和同构匹配算法)是全球第一个满足深亚微米设计需求的全电路、层次化的晶体管级仿真器。

HSIM可以准确的仿真电路的各种行为,包括:电路的功能、电压和电流波形、时序和功耗信息、电源网络的电压降、串扰噪声等。由于采用了创新的层次化数据存储和同构匹配算法,HSIM对仿真的电路规模几乎没有限制,真正能够对HSIM仿真产生影响的决定性因素是仿真的硬件平台。因为随着仿真的进行,迭代次数越来越多,观测点的数据也越来越大。而想观察这些观测点必须使用第三方软件,比如debussy,但是第三方软件支持的观测数据容量是有限的,因此在使用改软件进行仿真时应该适当的控制仿真的精度与观测信号的数量。目前已知的极限情况是512M内存,P4 3.0配置的机器在对DLL仿真时,如果精度较高可能需要20个小时才能完成25us的仿真,需要注意的是DLL中有很多的寄存器单元,而寄存器单元正是在所有仿真软件中最耗时的电路。所以建议最好是使用配置较高的双核CPU 比较大的内存来运行HSIM及其仿真波形观测软件debussy。层次化数据存储免除了仿真器处理电路冗余单元和子电路对内存的需求,因此HSIM可以容易地做到高容量的全电路仿真;同构匹配可以减少对冗余单元和子电路的计算量。目前,该算法已经获得美国专利。

HSIM可以象SPICE一样用于任何电路的瞬态扫描、交流扫描、直流扫描和蒙特卡罗分析扫描仿真,而且它比SPICE快很多倍。HSIM的强项在于它维持一定精度和快速的情况下,对数以千万计晶体管的仿真能力。HSIM的用户可以用它来对大的电路模块、一组电路模块或者整个电路做晶体管级仿真,尤其是对于包含大量寄存器与存储器单元的大型电路系统。虽然hsim的精度相对hspice和其他仿真器要差一些,但是如果只关注系统在模拟仿真的环境下的功能是否正确的话还是可以尝试一下大的,尤其是在包含较大数字模块较小模拟模块的混合信号系统中使用hsim是具有很大优势的。因为HSIM是根据I/V LUT的原理来进行工作的,而I/V LUT的有效数字位数决定了仿真的精度和速度,这就决定了他在高速的情况下不精确而在精确的情况下不高速的特性。因此对于hsim而言比较合理的使用方案是先使用nclaunch、Hspice或者Spectre进行底层模块单元的数字与模拟仿真,得到对应的延迟与

功耗仿真结果,然后再使用HSIM进行全芯片的模数混合仿真,验证功能是否正确。

HSIM不同于其它同类仿真器之处在于它的全电路仿真器能力免去了用户烦琐的划分子电路的工作。同时,HSIM也免去了用户编写模拟电路高层次模型的工作,这类模型只是在用户描述电路功能时有用,而在实现整个设计时却毫无用处。HSIM可以高速处理超大容量电路,它保留了接近于SPICE的精度。HSIM在轻微增加CPU时间的前提下,也可以处理电路的耦合与感应现象。它的完美的RC约减能力可以有效地减少布局寄生参数的数量。另外,HSIM的自动层次化抽取能力可以自动的从"打平"的网表中生成层次化网表以用于HSIM独到的层次化仿真。

基于Nassda专有的技术,HSIM结合了全芯片晶体管级验证所需的特殊技术,包括:层次化存储技术:以减少工作站内存和磁盘空间占用,能为当今高端的数百万晶体管级电路提供一个高效率的层次化数据处理机制;层次化的RC精简算法:用以在层次化电路数据结构中压缩寄生电阻电容的个数同时保持很高的精度;高效的层次化的矩阵方程求解器:使得电路仿真能在实现层次化的同时保持SPICE精度。

Hsim支持的仿真格式有verilog、vhdl、spice的网表格式(比如cdl和spi格式,前者只能看到展平后顶层端口的信号而不能看到模块内部的信号,后者则可以根据需要观测任何一级的信号),同时也支持数模混合仿真,还可以通过文件调用实现对c、verilog等其他语言的调用。因此hsim是一种非常灵活仿真工具。一般在使用hsim作全芯片的模拟仿真时,使用spice格式的网表和语法更为方便。

层次化反标:使用高效的参数精简技术,全芯片的SPICE精度晶体管级分析方法能够识别出今天设计中的纳米效应。今天先进的post-layout工具能够把寄生参数反标到pre-layout层次化网表中,这种方法在保持SPICE精度的同时显著得增加了验证的能力和减少了验证的时间。

同构匹配技术:Nassda专利的同构匹配技术,能极大得提高仿真性能。使用这种技术,仿真器对于重复的电路元件不再进行重复计算,这极大得提高了运行速度和计算容量。这种高性能、大容量的仿真能力帮助设计队伍能进行高效的纳米设计验证。

HSIM使用推荐和限制:HSIM推荐在分析电源网络的电压降对电路性能的影响,进行芯片的串扰分析,以及在带寄生参数的全芯片后仿真时使用。HSIM并不适用于少于100个晶体管的电路仿真,也不适用于仿真有很多测试向量的电路,如果必须要带很多激励,那就用更强大的计算机来缩减仿真时间。

2).阶段使用心得:

本次使用软件为Nassda公司的HSIMPLUS v5.0,没有自带看波形的工具,于是使用Debussy作为波形显示工具。需在网表中定义HSIM输出文件格式为fsdb,当然工具允许的情况下其他形式的输出格式也是可以的。

语法为: .param hsimoutput=fsdb

针对仿真时所需要的库调用可以使用参数HSIMFMODLIB或者使用spice的函数.inc 与.LIB来调用库文件。

语法:.param HSIMFMODLIB=”./log22.l”tt(corner)

或.LIB 'D:\MPW_csmc\MPW05\h05mixddst02v231.lib' capacitor

或.inc 'log022.l' tt

对于仿真温度的设定可以使用参数.TEMP

语法:.TEMP 25.0000

全局信号的使用需要调用参数.global

语法:.global pbvdd! vdd! gnd!

需要定义的全局信号名pbvdd、vdd、gnd

对全局信号进行电平定义可以在仿真文件后面的激励列表中给出。

语法:vvdd vdd! 0 2.5

vpbvdd pbvdd! 0 2.0

注意gnd!不需要给出,因为默认是参考电位。

确定扫描模式与仿真的精度和时间长短可以用参数“.TRAN 精度时间”来实现。

语法:.TRAN 50n 1600n

HSIM兼容SPICE和SPECTRE格式的网表,依靠设置一些仿真控制参数达到精度与速度之间的折衷。

语法: .param HSIMparameter_name=value1

HSIMTIMEFORMAT 决定了CPU输出时间的格式。默认为1,此时是以s为单位的。为2时以m为单位,为3时为m/s,为4时为h,为7时为h/m/s,为8时为days hsimspeed:数值可选0到8之间的整数,可在顶层或子模块中设置。

Hsimspeed=0,仿真结果与SPICE结果非常匹配,推荐在仿真小于1000个元件的小型模拟电路时使用。

Hsimspeed=1,速度比0有很大提高,但精度损失非常小,特别是在大型电路仿真中。需要指出的是,在两种情况下,设置速度1会损失很多精度:一是对漏电流的仿真,二是对很低电源电压的电路模拟。

Hsimspeed=2,速度进一步提高,精度损失很小。

Hsimspeed=3,缺省值,由于对于不同模块设置了不同的步长,总的步长数减少,速度

自然提高,精度的区别在于仿真高敏感度的模拟电路。一般情况下,并不需要把速度值设置小于3,可利用hsimanalog控制模拟电路精度。

Hsimspeed=4,建议仿真数字电路,存储器电路,低敏感度模拟电路。

Hsimspeed=5,建议使用在存储器和混合信号电路功能验证,仿真速度的提升会带来5-10%的时延误差。

Hsimspeed=6,建议使用在数字电路或低敏感度模拟电路的功能验证。

Hsimspeed=7,与6类似,也可用于ROM和CAM的验证。

Hsimspeed=8,建议使用在混合信号或Flash存储器电路功能验证。包含两种子模式,hsimspeed=8.4和hsimspeed=8.8可以使速度更快,特别适用于包含电压调整和电荷泵的电路。

hsimstep2taumax:如果hsimstep2taumax=1,则.tran命令中的步长值将作为hsimtaumax的值(hsimtaumax是hsim中定义的最大步长值),也就是说,当此参数为0时,.tran中定义的步长值并不影响hsim的仿真速度。

hsimpostl:后仿真中寄生RC网络是降低仿真速度的主要原因,因此在hsim中可以设置hsimpostl来控制是否以等效的精简RC网络来替代繁杂的寄生RC网络。缺省值是0,并没有精简RC,值为1、2、3时,后仿真的速度递增,可视情况设置。此参数可对顶层也可对子模快进行设置。

hsimanalog:为了优化hsim在模拟和混合信号仿真中的性能,可以设置此参数控制模拟电路仿真算法的复杂度,值越高,模拟仿真的算法越精确也越耗时。如果只是仿真数字电路,可设置hsimanalog=-1;如果仿真全定制或存储器电路,可设置hsimanalog=0或1;如果仿真带隙基准电压发生电路、高增益放大器、VCO、开关电容滤波器、锁相环、A/D和D/A 转换电路,建议设置hsimanalog=2;设置为3是最精确最耗时的。此参数可对顶层也可对子模快进行设置。

hsimspice:此参数确定在hsim仿真中MOSFET模型的复杂度,因此可以调低此参数值提高仿真速度。Hsimspice=0是缺省值,对某些敏感于小电压变化的电路有小的精度损失。最大值为3,也是最高精度,hsim会计算栅/漏/源/衬底之间的耦合效应,相应速度会减慢。

仿真测试网表(HSPICE格式):320*240ROIC数字部分寄生参数后仿真网表;

bq24020前仿真网表(纯模拟)。

在对ROIC的后仿真中,由于是全定制的数字电路,以及重复单元比较多,因此采用缺省设置的hsim仿真速度比hspice快几倍,如果设置hsimpeed=8.8,则又会提高几倍速度,

另一个提高速度的方法是设置hsimpostl=3,可以将RC网络精简70%。

在对bq24020前仿真中,由于是全定制的模拟电路,几乎没有重复单元,因此采用缺省设置的hsim仿真速度并没有比hspice快,而且hspice可以依靠设置大的步长值来提高速度,但是hsim中用hsimstep2taumax引入步长对模拟电路速度没有太大提高,而设置hsimspeed可以提高速度,但感觉在这个模拟电路的前仿真中,hsim的速度并没有比hspice 有太大优势。

3).遇到的问题:

应该测试不同规模、不同类型(模拟,数字,混合信号)的电路,并与相应的hspice 及spectre仿真进行比较,包含精度和速度的比较,所以试验应该增加多的样本。

由于我现在使用的版本是网上下载的版本,有些功能没有license支持,所以需要寻找更全面的hsim版本。

在bq24020仿真中发现hsim结果与hspice结果不一致,说明hsim中的设置与hspice 仿真的设置或语法仍有不同的地方,有待查证。

hsim提供层次化的反标和同构匹配的提速方法,这就需要我们的电路设计具有较好的层次性,也需要有后端工具来提供可层次化反标的版图寄生网络,才可以使hsim发挥最大性能。层次化反标功能有待研究。

4).小结:

由于是首次接触hsim仿真工具,因此本阶段研究主要集中在调研hsim资料和初步使用上。Hsim可以提高仿真速度,但仍需在速度和精度之间折衷,视具体情况不同而采取不同的参数设置,可以先用最快速度粗略的仿真一次,尽快查找错误和调试电路,然后再使用精确的仿真验证。Hsim的优势应该在于VLSI全芯片级后仿真,可针对一些由于规模太大而无法全面仿真带寄生参数的芯片级验证的电路。总之,hsim对后端验证很有帮助,可以进一步研究。

5).Hsim语法小结

a.激励的表示:

分段线性源:

一般形式: PWL <(> t1 v1 >

<)>

其中:

v1... 电流或电压值。

t1... 分段点时间。

R 定义分段重复功能

repeat 定义分段重复的波形起始点

TD 定义实际分段线性开始前的延迟时间的关键字

delay 规定了分段线性的延迟时间

**例如:vEN_PA EN_PA 0 pwl( 0 2.5 33n 2.5 33.01n 0) 信号名正节点参考点激励信号类型起始时间电压值 33ns 电压值 33.01ns 电压值

b.脉冲源

一般形式:PULSE <(> V1 V2 >>> <)>

或: PU <(> >>> <)>

其中:

V1: 脉冲源开始前的初始值

V2: 脉动值

td: 第一个脉冲开始前的延迟时间,缺省值为0.0

tr: 脉冲上升时间,缺省值为TSTEP

tf: 脉冲下降时间,缺省值为TSTEP

pw: 脉冲宽度,缺省值为TSTEP

per: 脉冲周期,缺省值为TSTEP

**例如:vCK_PA CK_PA 0 pulse( 2.5 0 32n 10p 10p 4.6n 5n) 周期名正节点参考节点信号类型第一第二延迟时间上升时间下降时间脉冲脉冲

电压电压宽度周期

c.独立电压源V 和独立电流源I

一般形式:VXXX n+ n-<<DC=>dcval><tranfun >

+ <AC=acmag,<acphase>>

或 IYYY n+ n-<<DC=>dcval><tranfun >

+ <AC= acmag,<acphase>>

其中:

VXXX: 独立电压源名。必须以“V”开始,后面字符串不得超过15

个字符。

IYYY: 独立电流源名。必须以“I”开始,后面字符串不得超过15

个字符。

n+/n-: 电源的正负节点,电流源的电流正方向是使电流从n+节点流

出,经过电流源流入n-节点。正的电压源是使电流从n+节

点流出,通过电压源流入n-节点。注意电源不必接地。若将

零值的电压源接到电路某支路中,这样可得到流经该支路的

电流值。零值电压源就是短路线,所以不影响电路的工作。

DC: 电源直流值

tranfun: 电源的瞬态功能

AC: 表示电源用来作交流小信号分析

acmag: 交流幅度

acphase: 交流初相位(缺省值为0.0)

M: 电流源并联数(缺省值为1.0)

**例如:vOE_W OE_W 0 2.5

信号名正节点参考结点信号电压值

vVDD VDD 0 2.5

信号名正节点参考节点信号电压值

观察信号

若要观察每个端口的电压值,或要观察某个点的电流值,使用下面的函数:

.print tran v/i( ) v/i( ) v/i( ) v/i( )...

若要观察到某一层的所有信号:.print tran v(*) level=n ( n=1,2,3,4.... 表示自顶向下的层数)。

若观察某一个模块某个管脚的信号: .print tran v/i(模块名.模块名.管脚名)

d.反相器中各MOS管的描述:

.SUBCKT B_INV_55_28_G35 A ZN

子电路开语句电路名称输入输出

M0 ZN A GND! GND! NCH L=240E-9 W=2.8E-6 元件名漏极节点电位栅极结点电位源极衬底模型参考名沟道长度沟道宽度M1 ZN A VDD! VDD! PCH L=240E-9 W=5.5E-6

.ENDS B_INV_55_28_G35

子电路终止语句子电路名

e.必须加的文件

BN.sp spice file

仿真文件名

.inc 'log022.l' tt

.inc 库文件拐点

注释语句:* s使用*表示本行为注释,行结束注释结束

例如:* END OF SUBCIRCUIT DEFINITION.

f.元件的描述:

elname

或 elname

elname: 元件名,是一个带有一个关键字母的不超过15 个字符的

字符串。

HSPICE 中表示元件的关键字母的含义:

C-电容 K-耦合互感

L-电感 R-电阻

T-无损耗传输线 U-有损耗传输线

node1... 节点名,用来说明元件所连接的节点,节点名的第一个

字符必须是字母,整个字符串不超过16 个字符(连第一个

字母在内)。=()′. ′[ ]等符号不能出现在节点名中。

mname: 模型参考名,对除了无源器件外所有元件都是必需的。

pname1... 元件参数名,用来标明一些元件的参数值。

val1... 赋于的参数值或模型节点,这些数值可以是数值,也可以

是代数表达式。

M=val 元件的倍增因子。

为了利用hsim实现v100的全芯片仿真,建议以下参数如此设置:

因为全芯片电路是包含ram的混合电路,所以Hsimspeed为5、8、8.4或者8.8;tran步长最好设置为最小的单位延迟,这样可以减少I/V查找表的迭代次数;hsimstep2taumax设置为0,避免tran设置的精度对系统仿真素服造成影响;hsimpostl控制后仿真中是否精简RC等效模型,建议设置为2或者3来提高仿真速度;将hsimanalog设置为0或1,来减少对模拟电路仿真精度的要求以提高仿真速度。

.param hsimspeed=8

.param hsimanalog=1

.param hsimpostl=2

.param hsimstep2taumax=0

相关主题
相关文档
最新文档