您的当前位置:首页正文

hspice-一些注解(进阶)

来源:个人技术集锦


hspice-一些注解(进阶)

runlvl 用来设置仿真速度与精度 最高精度级别 runlvl=6 ,1=fast(事实上设为零,将回到早先的未加入些功能

的版本) 6=most accurate 。默认的值是runlvl=3。较低数值适合于纯数字电路或大部分数字电路。 Hspice使用的是最好保存的runlvl设置。 通常是结合.option runlvl=5

If you set .option ACCURATE then HSPICE limits the RUNLVL value to 5 or 6.

p1 input1 0 z0=50 port=1 pulse(0 1.5 100p 40p 40p)

对输出部分,没有源,所以无须加source部分。 Pterm dut_out 0 z0=50 port=2

这里要区别在.meas p(m1) ,p()组合是表现功率。

t 无损传输线,结点,阻抗,延迟 T1 dut_in 0 node1 0 Z0=50 td=1n

par 可复用par(..)输出作为其他端口的输入电压

Reusing the PAR(...) Output as Input to Other Elements 可使用于.print .probe 的输出

Psource dut_in 0 z0=zref port=1 pulse(vlo vhi td tr tf) p 代表port 元件

Psource dut_inp dut_inn 0 z0=zref port=1 pulse(vlo vhi td tr tf) 这里定义的是差分的port元件

.print tran v(5) par('5*cos(6.28*v(10)*v(5)*k/360)') 式子要加单引号括起来

IBIS模型使用 Input buffer:

B_INPUT nd_pc nd_gc nd_in nd_out_of_in Output buffer:

B_OUTPUT nd_pu nd_pd nd_out nd_in [nd_pc nd_gc] Input ECL Buffer:

B_INPUT_ECL nd_pc nd_gc nd_in nd_out_of_in Output ECL Buffer:

B_OUTPUT_ECL nd_pu nd_ou t nd_in [nd_pc nd_gc]

Tri-state buffer:

B_3STATE nd_pu nd_pd nd_out nd_in nd_en [nd_pc nd_gc] Input/Output buffer:

B_IO nd_pu nd_pd nd_out nd_in nd_en nd_out_of_in [nd_pc nd_gc]

(pu and pd are pull-up and pull-down; pc and gc are power clamp and ground clamp; nd simply stands

for node.) 例子如下:

b_out1 nd_pu nd_pd out1 in1 + file = 'at16245.ibs' + model = 'AT16245_OUT'

Search 组合使用.option search (自动寻找库以及包含文件所在的路径)

hspice.ini file sets th e default search paths. (sa_146)

例子:.OPTION SEARCH='$installdir/parts/signet' 定位到安装路径下去扫描寻找

S参数 与外部电路连接 (si_69)

Sxxx nd1 nd2 ... ndN ndRef 所有的节点,其中最后一个点为地参考节点,除地结点共n,共有n个结点。当各结点参考结点不同时,可写成nd1+ nd1- nd2+ nd2- ... ndN+ ndN- 形式 + [MNAME=Smodel_name] s参数标号

+ [TYPE=s|y] [Z0=value|vector_value] s参数/y参数 特征阻抗

+ [FBASE = base_frequency] [FMAX= maximum_frequency] 时域运算,傅里叶运算的基带频率,默认

为瞬态响应单位间隔的倒数 FMAX 取2倍Knee frequency可以保证相对的准确 + [INTERPOLATION=STEP|LINEAR|SPLINE|HYBRID] 运算数据外推方式

+ [INTDATTYP=RI|MA|DBA] 数据类型:RI 复数 MA 幅度角 DBA 分贝 + [HIGHPASS=1|2|3|4] [LOWPASS=0|1|2|3] 低频为了抽取接近DC 的响应

+ [DELAYHANDLE=1|0|ON|OFF] [DELAYFREQ= val ] 对于类似传输线延迟时,为准确,选on

+ [MIXEDMODE=0|1] [DATATYPE= data_string] 其中data_string d _diff c_comm s_sing n_n port + [NOISE=[1|0]] [NoiPassiveChk=1|0] [DTEMP= val ] 热噪声 + [RATIONAL_FUNC=[0|1]] [RATIONAL_FUNC_REUSE=[0|1|2]] + [PASSIVE=0|1] [PASSIVE_TOL=val ] [COLSUM_LIMIT=val ] + [ENFORCE_PASSIVE=0|1][STAMP=S|Y|YSTS|SSTS|DEEMBED] + [M=int ] [PRECFAC=val ] [FQMODEL=sp_model_name ]

为了提高精度,保持准确

1 外推DC响应,设置好lowpass

2 max frequency 最好设置为 3倍最快瞬变频率。

用model 来描述指定S 模型

.MODEL Smodel_name S [N=dimension] 指定为S模型,为N端口。

+ [TSTONEFILE=filename | CITIFILE=filename | touchstone 文件是比较常用的模型,调用可见下边 + RFMFILE= file_name.rfm | BNPFILE= filename ] 还有一个可用的FQMODEL=SFQMODEL + [TYPE=s|y] [Z0=value | vector_value]

+ [FBASE=base_frequency] [FMAX= maximum_frequency]

POI non-uniform spacing 非一致间隔 DATA

对如下类型的不同列组的数据,即层数据。 File D File E File F d1 d2 d3 e4 e5 f6 d1 d2 d3 e4 e5 f6 使用如下样板

.DATA dataname LAM FILE=‘file1’ p1=1 p2=2 p3=3 FILE=‘file2’ p4=1 p5=2 FILE=‘file3’ p6=1 .ENDDATA

传输线模型 (si 125)

其中W代表精确建模的传输线,包括了导体与介质损耗,T代表相对简单的无损传输线。 有关传输线损耗的两个公式: 趋肤损耗:

介质损耗:

对W模型,考虑频率相关性模型:INCLUDEGDIMAG=yes 开启了使用复杂介质损耗的模型

频率相关复介质旁路损耗

其中wp是与极化时间常数相关的角频率

Wtest win 0 wout 0 N=1 RLGCMODEL=WE1 L=0.3

+ INCLUDEGDIMAG=yes

.MODEL WE1 W MODELTYPE=RLGC, N=1 1维矩阵,对于多维的情况,L0=val1 val2 val3…. + Lo = 3.8e-07 + Co = 1.3e-10 + Ro = 2.74e+00 + Go = 0.0 + Rs = 1.1e-03 + Gd = 8.2e-12

+ wp= 0.07 不输入极化常数时,此项不要。

PRINTZO 输出w 元件的复特征阻抗到.wzo 格式的文件(low half) W1 N=2 in1 in2 gnd out1 out2 gnd RLGCMODEL=2_line l=0.1 + PRINTZO=POI 3 1e6 1e9 1e12 其中2_line.wzo 保存输出

* w-element model [2_line] Characteristic Impedance Matrix: .MODEL ZO SP N=2 SPACING=POI MATRIX=SYMMETRIC + DATA=3 + 1.0e6

+ 175.362 -156.577

+ 3.54758 -2.53246 175.362 -156.577 + 1.0e9

+ 48.7663 -1.3087

+ 1.69417 -0.0073233 48.7663 -1.3087 + 1e12

+ 48.9545 0.238574

+ 1.66444 0.0348332 48.9545 0.238574

混合阻抗矩阵

对于一个简单的养分传输线

对于一个弱耦合的对称双微带线,单线的特征阻抗Z11=Z22=50欧,Z21=Z12=0欧

传输线连接的系统模型

Delayopt 准确的建立延迟模型,以保证时域仿真的准确

DELAYOPT=0|1|2 to deactivate, activate, and automatically determine,默认设置为0 不使用 DCACC 保证低频部分的准确与收敛 DCACC=0 为关闭 完整的W 语法 (si 125) 其中5个例子在128页 Wxxx i1 i2 ... iN iR o1 o2 ... oN oR N= val L= val 输入(输出)/输入(输出)参考节点 + [RLGCMODEL= name | RLGCFILE=name | UMODEL= name

+ FSMODEL= name | TABLEMODEL=name | SMODEL= name] fsmodel 来自场求解器

+ [ INCLUDERSIMAG=YES|NO FGD=val ] [ DELAYOPT=0|1|2|3 ] includersimag 默认考虑趋肤效应的虚部

项 fdg 指定材料介质损耗的截止频率

+ [ INCLUDEGDIMAG=YES|NO] [NODEMAP=XiYj[DCACC=[1|0]] + [NOISE=[1|0]] [DTEMP= val ]

+ [PRINTZO=frequency_sweep MIXEDMODEZO=0|1] printzo 输出复阻抗 可使用lin deco ct poi + [SCALE_RS=val ]

一个完整的包含W- 同时调用W的例子 * W-Element example, four-conductor line

W1 N=3 1 3 5 0 2 4 6 0 RLGCMODEL=example_rlc l=0.97 调用W 元素 V1 1 0 AC=1v DC=0v pulse(4.82v 0v 5ns 0.1ns 0.1ns 25ns) .AC lin 1000 0Hz 1GHz .DC v1 0v 5v 0.1v .tran 0.1ns 200ns

* RLGC matrices for a four-conductor lossy

.MODEL example_rlc W MODELTYPE=RLGC N=3 使用.model对W进行详细地定义

+ Lo= + 2.311e-6 + 4.14e-7 2.988e-6 + 8.42e-8 5.27e-7 2.813e-6 + Co= + 2.392e-11

+ -5.41e-12 2.123e-11

+ -1.08e-12 -5.72e-12 2.447e-11 + Ro= + 42.5

+ 0 41.0 + 0 0 33.5 + Go= + 0.000609 + -0.0001419 0.000599

+ -0.00002323 -0.00009 0.000502 + Rs= + 0.00135 + 0 0.001303 + 0 0 0.001064 + Gd= + 5.242e-13

+ -1.221e-13 5.164e-13

+ -1.999e-14 -7.747e-14 4.321e-13 .end

UMOEDL 详情参考 135(157) U 模型中的RLGC是以自/互阻抗感抗的形式表示的。 W 格式中 R(f)=R0+sqrt(f)*(1+j)*Rs

U 格式中,R=Rc+Rs Rc就是上式中的直流电阻。而 计算趋肤效应的起始频率Fskin=1/(15*risetime)

例子

* W Element example, four-conductor line, U model W1 1 3 5 0 2 4 6 0 Umodel=example N=3 l=0.97

.MODEL example U LEVEL=3 NL=3 Elev=2 Llev=0 Plev=1 Nlay=2 + L11=2.311uH

+ L12=0.414uH L22=2.988uH

+ L13=84.2nH L23=0.527uH L33=2.813uH + Cr1=17.43pF

+ C12=5.41pF Cr2=10.1pF

+ C13=1.08pF C23=5.72pF Cr3=17.67pF + R1c=42.5 R2c=41.0 R3c=33.5 + Gr1=0.44387mS

+ G12=0.1419mS Gr2=0.3671mS

+ G13=23.23uS G23=90uS Gr3=0.38877mS + R1s=0.00135 R2s=0.001303 R3s=0.001064

V1 1 0 AC=1v DC=0v pulse(4.82v 0v 5ns 0.1ns 0.1ns 25ns) .AC lin 1000 0Hz 1GHz .DC v1 0v 5v 0.1v .TRAN 0.1ns 200ns .END

频率相关表格模型Frequency-Dependent Tabular Model 见(si 161) 可用来模拟传输线的任意频率特性(不支持RC传输线)

S model

Nodemap 端口节点表 近端/输入端用 I, I N 远端/输出端使用O ,F 示例如下: NODEMAP = I1I2O1O2

**** W Element Example: S Model *** rout out 0 50

vin in gnd LFSR (1 0 0 0.1n 0.1n 1g 1 [5,2] rout=50) 其中LFSR 是伪随机序列产生器or线性反馈移位寄存

器?

*+ pulse(0 1 0 0.1n 0.1n 0.9n 2n)

W1 in gnd out gnd SMODEL=smodel N=1 l=0.3 + NODEMAP=I1O1

.MODEL smodel S TSTONEFILE=w.s2p

+ XLINELENGTH=0.3 XLINELENGTH表明的是所用S参数来自的系统模型的线长。A must term for .sp file

and W element

.opt accurate post .opiton accurate 自动设置RUNLVL value to 5 or 6. .tran .01n 20n .end

W-element passive noise model 无源噪声模型(热噪声)( .NOISE and .LIN noisecalc=1 [多端口时] + [NOISE=[1|0]] [DTEMP= val ] =1时,会产生2N*2N噪声-电流源相关矩阵

T-element 阻抗和延迟(无损)

简单的示例

T1 in gnd t_out gnd model_name1 L=200m U1 in gnd u_out gnd model_name1 L=200m

.model model_name1 U LEVEL=3 PLEV=1 ELEV=1 wd=2m ht=2m th=0.25m 几何描述 ELEV=1,planar

structure即平面结构 PLEV=1 ,wd导体宽度 ht,th 介质维度 + KD=5 KD为介质常数

理想传输线示例

Txxx in refin out refout Z0=val TD=val [L=val ]

+ [IC=v1,i1,v2,i2] IC= 为设定传输线的初始条件,各端口初始输入电压,电流

Txxx in refin out refout Z0=val F= val [NL= val ] F与NL,在频率F时,归一化电气长度(默认为1/4单位波长)为NL + [IC=v1,i1,v2,i2]

利用场求解器来求解抽取传输线参数 对应的是W element page si_188 要求解趋肤阻抗,设置

.FSOPTIONS COMPUTE_RS=yes 场求解器对应声明 .MATERIAL

.LAYERSTACK 用来声明介质与金属层,但不包括导线部分,导线部分在最后的场求解指令里用conductor .SHAPE 声明形状 rectangle. circle strip polygon多边形Trapezoid 梯形

示例 .shape rect rectangle width=400e-6 height=40e-6 这一系列的都是类似的布局:先 名称,类型 .FSOPTIONS 求解选项

.MODEL w modeltype=fieldsolver 指定传输线类型为场求解器 语法

.MODEL mname W MODELTYPE= FieldSolver

+ LAYERSTACK= name [FSOPTIONS=name] cood 为选定座标系

+ [RLGCFILE=name] [COORD=0|DESCART|1|POLAR] RLGC文件名首字母必须为字母,不能为数字 + [OUTPUTFORMAT=RLGC|RLGCFILE] 设置.FSOPTIONS PRINTDATA t=YES 为输出RLGC文件

+ CONDUCTOR=SHAPE= name [MATERIAL=name] + [ORIGIN=(val1,val2)]

[TYPE=SIGNAL|REFERENCE|FLOATING] .. 导体类型:默认signal 设置为w-element中的信号节点 Floating 浮空的导体,w-element中没有参考 抽取RLGC表格模型

.FSOPTIONS name [ACCURACY=HIGH|MEDIUM|LOW] + [GRIDFACTOR=val ]

+ [COMPUTE_GO=YES|NO] [COMPUTE_GD=NO|YES]

+ [COMPUTE_RO=YES|NO] [COMPUTE_RS=NO|YES|DIRECT|ITER] + [COMPUTE_TABLE=frequency_sweep] + [PRINTDATA=NO|YES|APPEND]

对于介质损耗项Gd,必须定义材料的损耗值 才会在矩阵里出现 材料声明如下Gd=2*p*tan0*Co .MATERIAL die1 DIELECTRIC ER=4.1 LOSSTANGENT=.012 详例见194 ???

考虑到导体损耗的二阶效应 粗糙表面

两种方法:比例因子 计算表面粗糙高度的均方值(RMS) 见 si 196 比例因子 :

Wxxx ni1 ni2… ref_in no1 no2… ref_out + [SCALE_RS=value] 取均方值;

.material copper metal conductivity=value [roughness=value]

一个完整的场求解器指令例子:(此例主要是生成RLGC) *** use copper_roughs w/ roughness=2um *** P3 in2 0 port=3 ac=1 P4 out2 0 port=4

W2 in2 gnd out2 gnd FSmodel=line1_rough N=1 l=0.1 .material diel dielectric er=4.3

.material copper metal conductivity=57.6meg .material copper_rough metal conductivity=57.6meg +ROUGHNESS=2e-6 计算介质材料的粗糙高度的均方值

.shape rect rectangle width=400e-6 height=40e-6 分别定义形状

.layerstack stack1 background=air 叠层结构,注意顺序是从下至上,即铜层为最下层,上一层是介质

+layer=(copper,10e-6) 1 layer 包含两个项:材料material 厚度 0.5mm +layer=(diel,200e-6) 2

.fsoptions opt1 printdata=yes computeGd=no computeRs=yes 控制选项,不计算介质损耗Gd

.model line1_rough W Modeltype=fieldsolver, 在model 中完整陈述所求解的结构 +layerstack=stack1, +fsoptions=opt1,

+Rlgcfile=line1_rough.rlgc, 使用line1_rough.rlgc这个文件来存储矩阵,在同路径文件夹内 +conductor=(shape=rect,origin=(0,110e-6),material=copper_rough) conductor作用是声明导线的部分,包括三个项,material ,shape ,origin ,如有多个导体,依次书写,如下 +conductor=(shape=rect,origin=(0,110e-6),material=copper_rough) .opt post

.ac dec 100 1e6 1e10 .end

使用多核进程技术加速场求解器 pp si_198

主要用于加速趋肤效应部分电阻Rs的计算,相对另外三部分指令+ [COMPUTE_GO=NO|YES]

[COMPUTE_RS=NO|YES|DIRECT|ITER] 其中direct 和 yes 一样,使用加速,iter 使用迭代的矩阵算法

Gridfactor= .fsoption 中的指令,只能使用整数,用来指定确定求解形状的最终分割数乘法因子,当

compute_rs=yes 时,场求解器不会计算Ro.Rs.

蒙特卡罗 si_207页关于蒙特卡罗的和生产工艺上尺度误差相关的例子非常好。 下面是一个使用polar座标的共轴线模型 (完整例子参见 si_209页)

.SHAPE circle_1 CIRCLE RADIUS=0.5m * [[ Layer Stack ]]

.LAYERSTACK coaxial LAYER=(diel_1 11m)) $ only one 因为外围导体为无穷地,不要定义,所以这里只定义了中间部分的介质,而最中间部分的导体在下面的conductor中定义。

.MODEL coax W MODELTYPE=FIELDSOLVER FSOPTIONS=myOpt COORD=polar 声明使用极座标 + LAYERSTACK=coaxial, RLGCFILE=coax.rlgc

+ CONDUCTOR = ( SHAPE=circle_1, MATERIAL=copper, ORIGIN=(0, 0) )

.MODEL twin W MODELTYPE=FIELDSOLVER FSOPTIONS=myOpt COORD=polar + LAYERSTACK=coaxial, RLGCFILE=twin.rlgc

+ CONDUCTOR = ( SHAPE=circle_1, MATERIAL=copper, ORIGIN=(4.5m, 0) )

+ CONDUCTOR = ( SHAPE=circle_1, MATERIAL=copper, ORIGIN=(4.5m, 180) )

由于使用polar座标系,只须定义半径与角度

而且Only one diel ectric is permitted and the dielectric layer is surrounded by ground. 就是只要定义中央的导体部分,外围为无穷地,且把介质完全包围起来。 (见si_208)

IBIS 模型支持DC,AC,transient analysis

bxxx node_1 node_2 ... node_N 所有外部结点

+ file=' filename ' model='model_name' 指定所用到的 IBIS 的名字以及相关的 model + keyword_1=value_1 ... [ keyword_M=value_M] 可选关键词 + M=num 乘法因子,正整数 解决超频以及输入过载带来的问题, si_217

rm_dly_rwf= default | rdly_time_value 值设为正数值

rm_dly_fwf= default | fdly_time_value rm_tail_rwf= default | rtail_time_value rm_tail_fwf= default | ftail_time_value

各种buffer

Input 输入BUFFER si_218

B_INPUT nd_pc nd_gc nd_in nd_out_of_in 共4个节点,node_in的观测电压可在node_out_of_in探测看

+ file=' filename ' model='model_name'

+ [typ={typ|min|max|fast|slow}] [power={on|off}] 如果设置power=on,那么地/电钳位连接并开启(所以不要再把它们连接到电源或地上),如果power=off,那么就要另外通过RLC或传输线来连接电源到这些结点 + [buffer={1|input}] + [interpol={1|2}] + [nowarn]

+ [c_com_pc=c_com_pc_value] + [c_com_gc=c_com_gc_value] + [pc_scal=pc_scal_value ] + [gc_scal=gc_scal_value ] 打印时,.PRINT V(nd_pc) V(nd_gc)

Output 输出BUFFER

B_OUTPUT nd_pu nd_pd nd_out nd_in [nd_pc nd_gc] 4到6个结点(两个可选)如果括号里钳位没定义,那默认为各自连接到地/电 pull up/down

+ file=' file_name' model='model_name'

+ [typ={typ|min|max|fast|slow}] [power={on|off}] power=on,同上,不再再去连接power/ground clamp + [buffer={2|output}]

+ [xv_pu=state_pu ] [xv_pd=state_pd ] + [interpol={1|2}]

+ [ramp_fwf={0|1|2}] [ramp_rwf={0|1|2}]

+ [fwf_tune=fwf_tune_value] [rwf_tune=rwf_tune_value] + [nowarn]

+ [c_com_pu=c_com_pu_value] + [c_com_pd=c_com_pd_value] + [c_com_pc=c_com_pc_value] + [c_com_gc=c_com_gc_value] ………………….

探测流经C_comp的电流 si_223 Tristate buffer 三态buffer

B_3STATE nd_pu nd_pd nd_out nd_in nd_en [nd_pc nd_gc] 三态没有钳位,多了一个使能 + file=' file_name' model='model_name'

+ [typ={typ|min|max|fast|slow}] [power={on|off}] + [buffer={4|three_state}]

+ [xv_pu=state_pu ] [xv_pd=state_pd ]

同上输出buffer,对no_out结点并没有规定的规则。这个结点上的电压受到结点nd_in 与nd_en控制。电压源必须连接到nd_in,nd_en也要设置。nd_in,nd_en是代表0、1的控制信号。

V_in nd_in gnd 0V pulse( 0V 1V 1n 0.1n 0.1n 7.5n 15n ) V_en nd_en gnd 0V pulse( 0V 1V 3n 0.1n 0.1n 7.5n 15n )

Input/Output Buffer

B_IO nd_pu nd_pd nd_out nd_in nd_en nd_out_of_in [nd_pc nd_gc]

Open Drain, Open Sink, Open Source Buffers

Open drain and open sink没有pullup电路,Open source buffers没有pulldown电路

但它们的card 同output buffer一样,可像output 一样正常指定pullup 和pulldown ,尽管open …可能并不包含. 不过,下面的要注意

Because open drain and open sink buffers do not have pullup circuitry, do not specify the xv_pu=nd_state_pu option.

I/O Open Drain, I/O Open Sink, I/O Open Source Buffers si_230

详细的IBIS语法可见242页

file = 'file_name' 完整路径,如在同一文件夹中,只要使用文件名就行了 model = 'model_name' 指定ibis文件中的模型 model = 'ABC_1234_out' buffer = {Buffer_Number | Buffer_Type} typ = {typ|min|max|fast|slow}

hsp_ver = hspice_version hsipce_version 默认为当前使用软件的版本 power = {on|off}

interpol = {1|2} 默认为1,I/V V/T 曲线需要内插,1为线性内插,2为quadratic bi-s pline interpolation xv_pu = nd_state_pu 这两个用来描述驱动器的任一时刻的状态,如驱动器主拉低时,设置 St_pu=0, St_pd=1.

xv_pd = nd_state_pd 从拉低到拉高变化过程中, St_pu=0变为1, 而St_pd=1变为0

如果要no知道瞬变如何发生的,xv_pu=nd_state_pu, xv_pd=nd_state_pd 提供了信息

nd_state_pu and nd_state_pd 是增加节点的名称, 打印 .PRINT V(nd_state_pu) V(nd_state_pd)]

ramp_fwf = {2|1|0} 默认为2,0使用ramp data,1,对于有多个下升/下降时,使用第一个上升/下降。 ramp_rwf = {2|1|0} 2,对于有多个下升/下降时,使用最先出现的两个上升/下降。--选择显示波形 fwf_tune = fwf_tune_value 取值0-1,仅用在两种情况,+-上面的ramp date默认为0.1,sigle VT波形,

ramp_f/rwf 为1时0.25

rwf_tune = rwf_tune_value 指定了pullup/pulldown电路的on off瞬变时间 详见 si_250

rwf_pd_dly = rwf_pd_dly_value 可用来提高单VT 波形的ibis模型的精度。取值0-1,默认值为单VT波

形非

fwf_pu_dly = fwf_pu_dly_value 开关时间与VT波形整个转换时间之间的比值。

Use fwf_pu_dly only when ramp_fwf=1

A rwf_pd_dly parameter is used with a rwf_tune parameter to provide a more real pulldown circuit turn off transition for a rising edge

详见 si_253

pd_scal=pd_scal_value 这四个放大因子可放大相关buffer的 I-V 曲线。 pu_scal=pu_scal_value 放大I-V 曲线能有效地放大驱动强度 pc_scal=pc_scal_value gc_scal=gc_scal_value

rwf_scal=rwf_scal_value 这两个放大因子可以放大 上升/下降V-T 曲线的。会影响上升/下降时间,与

buffer

fwf_scal=fwf_scal_value 延迟

ss_state = {on|off} 开启/关闭ibis文件中的状态电气模型 ,默认为on,仅适用于series switch

buffer model

rm_dly_rwf={default | rdly_time_value} 这四个语句用来移除ibis模型中VT 曲线模型中的非开关时间 rm_dly_fwf={default | fdly_time_value} dly 移除最开始的上升/下降延迟,最好保证两值一样 rm_tail_rwf={default | rtail_time_value} tail语句用来移去上升/下降拖尾部分 rm_tail_fwf={default | ftail_time_value} 每个都取正值, 见 si_255

nowarn 不提示warning,不要用作nodes list 的第一个关键词, c_com_pu = c_com_pu_value 这四个如果不设置,那为默认的 C_comp_die_capacitance c_com_pd = c_com_pd_value 为了模拟电源/地弹噪声,要用这4个寄生电容选项(-node_out)。 c_com_pc = c_com_pc_value expected that c_com_pu + c_com_pd + c_com_pc + c_com_gc = c_com_gc_value c_com_gc = 1.V_out_of_in根据input_buffer规则计算得

出。

detect_oti_mid={1|0} 仅用于input (io) buffer默认为1,为0时,用作接受器时,

V_out_of_in does not take the value 0.5 if V_in is between Vinl and Vinh. 仍取上次的值。

time_control=1|0 默认为1,使能ibis的时间步进控制 。 .OPTION D_IBIS 指明IBIS文件的路径。

differential pin si_259 疑问 si_261 一个完整的使用ibis的例子 si_262

Hspice 创建buffer si_263

buffer_name = ' cname'_' pin_name ' syntax

file=’file_name ’

component= ’component_name’

package = [0|1|2|3] 0 不把封装参数RLC

package 加入到元件中

1 使用ibis 中定义的RLC package

2 添加ibs文件中的 pin

3 l 默认设置,另设封装RLC model,如果没,设置封装pin pkgfile = 'pkg_file_name ' mod_sel =

'selName_1=modName_1,...,selName_n=modName_n' 选择模型 其他可选 si_266 例子 .ibis p_test + file = 'comp.ibs'

+ component = 'cpu_133mhz_ff' + hsp_ver = 2002.4 nowarn + package = 3

+ pkgfile = 'test.pkg' cad 包含了.ibis和.pkg 文件

设置元件component 调用 spice verilog-a格式

的pins si_270

Buffer nodes 的输入输出格式

‘buffer_name’_node_name cname is defined in the .ibis card in the .sp netlist. buffer_name =’cname’_’ pin_name ’

加入component .ibis component_name + file = 'pinmap.ibs'

+ component = 'NO_PINMAPPING' + nowarn + package = 0

Vin1 pcomp_1_i 0 0V pulse ( 0V 1V 1n 0.1n 0.1n 7.5n 15n )

Vin2 pcomp_2_i 0 0V pulse ( 0V 1V 1n 0.1n 0.1n 7.5n 15n )

Rout1_1 pcomp_1 0 50 Rout2_1 pcomp_2 0 50

用ibis创建封装 .pkg p_test

+ pkgfile=’processor_clk_ff.ibs’ + model=’FCPGA_FF_PKG’

.EBD Electrical Board Description

一个完整的ibis,ebd完整网表例子 .sp网表

* Analysis And Options .op

.tran 10p 30n

.option post=2 probe * Stimulus

Vin cmp1_5_i 0 0V pulse ( 0V 3V 2n 0.1n 0.1n 7.5n 15n ) Vpu cmp1_1 0 2.5v vpc cmp1_2 0 2.5v vpd cmp1_3 0 0v vgc cmp1_4 0 0

* Rload Rd1 ebd1_a3 0 50 Rd2 ebd1_a4 0 50

* Define Component .ibis cmp1

+ file = 'pinmap.ibs'

+ component = 'Component1' + hsp_ver = 2003.3 + package = 0

* Define EBD .ebd ebd1

+ file = 'pinmap.ebd' + model = 'Board1' + component = 'cmp1:u21'

* Output .probe

tran inp

+ cmp1_5_out = v(cmp1_5) $ buf_5(Output):

ut/output,对应Tab26中的第二

cp1_m

5

,(

tab

线

+ cmp1_5_in = v(cmp1_5_i) $ no package , so the out node is cmp1_5, not cmp1_5_o

+ ebd1_a3 + ebd1_a4 .end

= v(ebd1_a3) = v(ebd1_a4) input/output 驱动器输入端 ,实际上为信号源的输入,即pwl 输入

Vin

cmp1_5_i 0 0V pulse ( 0V 3V 2n 0.1n 0.1n 7.5n 15n )

.ibis文件 (部分内容)

|*************************************************************************** [Ibis Ver] 3.1

[File Name] pinmap.ibs 对应网表中的声明 .ibis cmp1 file = 'pinmap.ibs' [File Rev] 0.5

[Date] Fri Mar 02 15:09:08 2001

[Notes] This is just for testing .EBD & .IBIS command in HSPICE

|*************************************************************************** |

[Component] Component1 对应网表中声明 + component = 'Component1' [Manufacturer] IBIS [Package]

| typ min max R_pkg 20.000000m NA NA L_pkg 0.200000nH NA NA C_pkg 0.720000pF NA NA |

[Pin] signal_name model_name R_pin L_pin C_pin

1 power POWER vpu cmp1_1 0 2.5v

2 power POWER vpc cmp1_2 0 2.5v

3 gnd GND vpd cmp1_3 0 0v power/ground 钳位可选项 4 gnd GND vgc cmp1_4 0 0v 而未做改动

5 data Output Vin cmp1_5_i 0 0V pulse 因为输出,所以加i | 其中所有的cmp1 对应ibis例化.ibis cmp1 [Pin |

1 NC PWRBUS 2 NC PWRCLMP 3 GNDBUS NC 4 GNDCLMP NC

5 GNDBUS PWRBUS GNDCLMP PWRCLMP

.EBD 文件 (部分内容) 这里描述的主要是板上的互连部分(传输线) | Electrical Board Description

[File Name] pinmap.ebd 对应网表中.ebd声明部分的file = 'pinmap.ebd'

[Begin Board Description] Board1 对应

Mapping]

pulldown_ref

pullup_ref

gnd_clamp_ref power_clamp_ref

网表中.ebd声明部分的model = 'Board1' |

[Number Of Pins] 4 |

[Pin List] signal_name A1 POWER A2 GND

A3 data1 为传输线的网表中Rd1 ebd1_a3 0 50

A4 data2 为传输线的网表中 Rd2 ebd1_a4 0 50 |

[Path Description] CAS_1 Pin A3

Len = 0.5 L=8.35n C=3.34p R=0.01 / Fork 分支

Len = 1.0 L = 1.0n C= 2.0p / Fork 分支

Len = 0.0 L = 1.0n C= 2.0p / Endfork Endfork

Len = 0.5 L=8.35n C=3.34p R=0.01 / In 对应out 对应 类

似于传输线的描述 Node u21.5

Len = 0.5 L=8.35n C=3.34p R=0.01 / Pin A4

[Reference Designator Map] | This keyword is ignored by HSPICE

| Ref Des File name Component name u21 pinmap.ibs Component1 component = 'cmp1:u21'

要注意到.ibis在应网表中的声明 .ibis cmp1

要注意到.ebd在应网表中的声明 .ebd ebd1 元component = 'cmp1:u21'

[End Board Description] | End: Board1 [End]

因为前面有些内容忽略了,也没看懂,所以导致这上一个例子中的网表一开始老是没有看懂。这里补充Using the IBIS Component Command

si_262

用ibis 创建 buffer

buffer_name = ' cname'_' pin_name ' 其中的cname 是网表中.ibis card的例化名 pin_name 是.ibis中的 pin 的关键记事 连接方式 节点

name of node 1: 'cname'_'pin_name'_i i 指明节点为 input

:'cname'_'pin_name'_o

output

'cname'_'pin_name'_en 对三

态,使能节点 enable

'cname'_'pin_name'_outofin.

Input/output节点 outofin

上个例子为input/output buffer,为第二类,所以‘cname’_’pin_name’ (for out node)

完整的眼图分析例子 si_371 *Incident port definitions p1 tx_in+ tx_in- 0 port=1 p2 in 0 port=2 *Probe port definitions p3 rxout+ rxout- 0 port=3

p4 out 0 port=4 *Analysis statement .stateye T = 400p trf=20p + incident_Port= 1, 2 + probe_port = 3, 4

*Print, probe, and measure statements .print stateye eye(4) .print stateye ber(3)

.print stateye bathtubV(3, 0.9) .print stateye bathtubT(4, 1n) .probe stateye eye(4) .probe stateye ber(3)

.probe stateye bathtubV(3, 0.9) .probe stateye bathtubT(4, 1n)

.measure stateye eyevert Veye 4 time=1n tol=0.1n eyetype=1

.measure stateye eyehorz Heye 4 volt=0.9 tol=0.05 eyetype=2

.measure stateye badbithigh WorstBits 3 time=1n state=high *Circuit Example * StatEye example circuit

.param _BW=0.05n .param trf = '_BW*0.01' .param opfreq = '1.0/_BW' * define ports

P1 in 0 port=1 LFSR (1 -1 0 'trf' 'trf''opfreq' 1 [5,2] )

P2 out 0 port=2 X1 in out CONN .stateye

T='_BW'

trf='0.1*_BW'

incident_port=1 probe_port=2 .options post accurate .subckt CONN _in _out

Rtest _in _out 50 RS=1e-3 $ skin effect resistor Cin _in 0 0.3p Cout _out 0 0.3p .ends

* print and probe * eye and ber

.probe stateye eye(2) ber(2) eyeBW(2) .print stateye eye(2) ber(2) eyeBW(2) * bathtub curve

.probe stateye bathtubT(2,1e-11)

bathtubV(2,0.0)

.print stateye bathtubT(2,1e-11) bathtubV(2,0.0) * eye size

.probe stateye eyeV(2,0.0) eyeT(2,1.0e-11) .print stateye eyeV(2,0.0) eyeT(2,1.0e-11) * measurements

.measure stateye veye1 Veye 2 time=1e-11 tol=1e-10

.measure stateye heye1 Heye 2 volt=0.0 tol=1e-10

.measure stateye worst1 WorstBits 2 time=10p .end

.LIN 的使用,这个主要用来计算例如传输的噪声,群延迟之类信息,也可生成相应的touchstone,以及s参数文件。

对于多port情况,port1为输入,port2为输出,而其他的端口则端接(端接阻抗为特征阻抗)。这种配置等效于仅有port 1 与port 2的二端口网络(从多端口网络矩阵里抽取出来似的)。

Group delay in .sc file(文件)

.LIN

[

mixedmode2port=

dd|dc|ds|cd|cc|cs|sd|sc|ss ] Sxy|Yxy|Zxy nm (t)

因篇幅问题不能全部显示,请点此查看更多更全内容