【本节目的】 学习对IBIS模型进行语法检测并将IBIS模型转换为DML模型(Cadence的模型格式)。
【使用工具】 Model Integrity能够进行模型建立、处理和校验,在使用仿真模型前,必须先验证仿真模型。Model Integrity可分析IBIS模型和DML(Device Model Library)模型的语法错误,可以实现IBIS、Quad和Cadence DML文件的互相转换。模型校验包括语法检查、单调性检查、模型完整性检查和数据合理性检查。
【使用文件】 physical\ ep1sgx25f_1.ibs。
(1)在程序文件夹中选择“PCB Editor Utilities 17.4-2019”→“Model Integrity 17.4”,弹出“Model Integrity”窗口,如图2-4-1所示。
图2-4-1 “Model Integrity”窗口
(2)在“Model Integrity”窗口执行菜单命令“File”→“Open”,打开D:\physical\ ep1sgx25f_1.ibs文件,如图2-4-2所示。
当打开IBIS文件时,一个解析程序ibischk4.2.0开始运行。运行完成后,会显示错误和警告信息,必须处理这些错误和警告。
(3)在左边“Physical View”栏单击“ep1sgx25f_1”前面的“+”号,浏览IOCell模型,树列表中显示所有的IOCell模型,如图2-4-3所示。
图2-4-2 ep1sgx25f_1.ibs文件内容
(4)在“Physical View”栏双击“1sgx_sstl25c2_io_dm”,单击按钮 ,在编辑窗口出现警告标志,并且最下面的输出窗口会显示警告信息(提示警告所在的位置及警告的原因),如图2-4-4所示。
图2-4-3 IOCell模型
图2-4-4 警告信息
(5)在输出窗口可以看到第1行被高亮显示,并且输出窗口提示“WARNING(line 1260)-GND Clamp Minimum data is non-monotonic”(第1260行,GND Clamp的最小数据是非单调的),对于这个IOCell,在编辑窗口会看到电压为2.1500e+000V时对应的最小电流为-3.1180e-010A,上一行(1259行)的2.0000e+000V对应的最小电流为-4.9080e-012A,第1258行的1.8500e+000V对应的最小电流为-8.5730e-011A,如图2-4-5所示。
图2-4-5 具体警告信息
(6)在“Physical View”栏选择“1sgx_sstl25c2_io_dm”,单击鼠标右键,选择“View Curve”→“GND_Clamp”→“Min”,弹出SigWave窗口,如图2-4-6所示。
图2-4-6 SigWave窗口
(7)SigWave窗口显示Pulldown Maximum IV曲线,波形非单调处在1.85~2.15V之间,但由于电流值差别过小,在图中不能正确显示。在当前目录会产生波形文件,文件名为IOCell的名字,扩展名为sim。
(8)执行菜单命令“File”→“Exit”,退出SigWave窗口。
需要注意的是,该非单调性发生的位置在电压序列的末端,而且变化很小(变化范围为1.0e-10A),对仿真结果影响甚小,不需要纠正IBIS文件。
(9)在窗口底部的信息栏中查看警告信息,找到警告“WARNING-Model'1sgx_sstl25c2_io_dm':Model_type'I/O' must have Vinl set”(模型“1sgx_sstl25c2_io_dm”:I/O模型必须有Vinl设置)和“WARNING-Model'1sgx_sstl25c2_io_dm':Model_type'I/O' must have Vinh set”(模型“1sgx_sstl25c2_io_dm”:I/O模型必须有Vinh设置),如图2-4-7所示。
图2-4-7 查看警告信息
(10)在“Physical View”栏双击“1sgx_sstl25c2_io_dm”,编辑窗口显示该IOCell模型信息,并且模型名被高亮显示,如图2-4-8所示。
(11)在编辑窗口可以看到,1sgx_sstl25c2_io_dm 下面Model_type I/O部分没有Vinh和Vinl,在“Vmeas=1.2500”语句的上面添加输入“Vinl=1.0700”和“Vinh=1.4300”,如图2-4-9所示。
(12)执行菜单命令“File”→“Save As”,保存文件于当前目录,文件名为ep1sgx25f_11.ibs。
(13)在“Physical View”栏选择“ep1sgx25f_11.ibs”,单击鼠标右键,选择“Parse Selected”,Model Integrity会运行ibischk解析器,并且在当前目录下建立ep1sgx25f_11_ibisparse.log文件。同时,在“ep1sgx25f_11”前面有一个红色的“×”标志,如图2-4-10所示。
图2-4-8 1sgx_sstl25c2_io_dm模型参数
图2-4-9 修改1sgx_sstl25c2_io_dm模型参数
图2-4-10 错误标志
(14)在“Physical View”栏双击“ep1sgx25f_11”,在编辑窗口会弹出错误标志,双击编辑窗口的错误标志,在输出窗口会显示提示信息,如图2-4-11所示。
图2-4-11 文件名错误标志及提示信息
(15)Model Integrity要求文件名和“File Name”一致,在编辑窗口中改变“File Name”后的“ep1sgx25f_1.ibs”为“ep1sgx25f_11.ibs”,保存文件。
(16)在“Physical View”栏选择“ep1sgx25f_11”,单击鼠标右键,选择“Parse Selected”,解析文件,发现错误标志消失,如图2-4-12所示。
图2-4-12 错误标志消失
(1)在“Physical View”栏选择“1sgx_sstl25c2_io_dm”,单击鼠标右键,选择“Simulate Buffer…”,弹出“Buffer Model Simulation”对话框,如图2-4-13所示。在“Physical View”栏有一个新的文件,这是由IBIS模型转换的DML模型,PCB SI运行仿真需要DML模型,所以Model Integrity自动产生DML文件。
图2-4-13 “Buffer Model Simulation”对话框
(2)在“Buffer Model Simulation”对话框中选择“Output”页面,可以看到“Vref”自动读取模型中的设定值“1.25”,“Cref”自动读取模型中的设定值“0.03n”,Tperiod为仿真周期,和“Input”页面一样。更改参数“Rref”为50,如图2-4-14所示。
图2-4-14 设置测试负载电阻参数
(3)单击“Simulate”按钮,运行仿真,并在SigWave窗口显示波形,如图2-4-15所示,波形被写入当前目录,波形名为“Waveform.sim”。当仿真其他IOCell模型时,波形文件会被重写。
(4)关闭SigWave窗口。
图2-4-15 仿真波形
(5)在“Buffer Model Simulation”对话框中单击“Close”按钮,关闭“Buffer Model Simulation”对话框。
(1)在“Physical View”栏单击IBIS文件ep1sgx25f_11,执行菜单命令“Tools”→“Translation Options ...”,弹出Translation Options对话框,如图2-4-16所示。
(2)默认选中“Make model names unique(-u)”单选按钮,这个设置为每个IOCell模型名附加了IBIS文件名。单击“OK”按钮,关闭Translation Options对话框。
(3)在“Physical View”栏选择IBIS文件ep1sgx25f_11,单击鼠标右键,选择“IBIS to DML”,系统会提示是否重写,这是因为软件先前已经自动生成了一个DML文件,单击“是”按钮,重写文档,如图2-4-17所示。
图2-4-16 Translation Options对话框
图2-4-17 提示框
(4)查看编辑窗口中的第3行,第1个IOCell模型为EP1SGX25F_11_1sgx_dhstl15c2_out,ep1sgx25f_11已经被添加到IOCell模型名的前面,如图2-4-18所示。
图2-4-18 在IOCell模型名前附加IBIS文件名
当将一个IBIS文件转换为DML文件时,dmlcheck解析器开始运行,在输出窗口显示错误和警告信息。
(1)在工具栏单击按钮 ,输出窗口提示52个警告和0个错误。在输出窗口滚动查看警告信息“WARNING @line 237:EP1SGX25F_11_1sgx_dhstl15c2_out GroundClamp:Overall typical area exceeds overall maximum area”。
(2)在输出窗口双击警告信息,在编辑窗口顶部会高亮显示第237行,如图2-4-19所示。
图2-4-19 警告信息
(3)注意关键词“VICurve”和下面的数据点,在DML格式没有提示哪一栏中是最小值、典型值或最大值,并且单位统一为伏特(V)和安培(A),最左边一列为电压值,紧靠着这一列右边的是典型电流值,下一列是最小电流值,最后一列是最大电流值。这些数据没有IBIS文件容易读取,所以需要查看IBIS文件中正在运行的模型,试图找出dmlcheck警告的变化。
(4)在“Physical View”栏双击IBIS IOCell模型1sgx_dhstl15c2_out,在编辑窗口单击鼠标右键,选择“Replace”,弹出“Replace”对话框,在“Find what”框中输入“POWER_Clamp”,不勾选“Match case”复选框,如图2-4-20所示。
图2-4-20 “Replace”对话框
(5)单击“Find Next”按钮,在编辑窗口中IOCell模型1sgx_dhstl15c2_out的Power_clamp被高亮显示,单击“Cancel”按钮,关闭“Replace”对话框。
(6)查看VI Curve数据的电流值,在“Max”栏的电流值应该比“Min”栏和“Typ”栏的大,但发现在-3.10~-1.85V之间的数据在错误的栏里。
(7)在“Physical View”栏选择IBIS IOCell模型1sgx_dhstl15c2_out,单击鼠标右键,选择“View Curve”→“Power_clamp”→“All”,弹出SigWave窗口,显示最小(Min)、最大(Max)、典型(Typ)3条曲线,发现Max并不是总比Min和Typ大,而Typ并不是总比Min大,这就是dmlcheck产生警告的原因,如图2-4-21所示。
图2-4-21 Power_clamp曲线
注意
需要确定这些值是否正确,但若没有SPICE模型做对照,则很难确定这些值是否正确。
(8)关闭SigWave窗口,关闭IBIS文件ep1sgx25f_11和DML文件ep1sgx25f_11。
使用ESpice to Spice转换器可以把Cadence ESpice文件转换为标准的Spice文件。在PCB SI中需要设置仿真参数,从“Probe”窗口选择要仿真的网络,在报告或波形窗口保存电路文件,这些动作都会将ESpice文件写到signoise.run/case#/sim#目录下,#代表数字,sim目录包含名为main.spc的文件和其他几个需要的文件。
(1)在Model Integrity窗口执行菜单命令“File”→“Open”。在D:\SQAdv_14_2\mi\ ESpice\signoise.run\case1\sim1目录下打开main.spc,如图2-4-22所示。
图2-4-22 main.spc文件内容
(2)在“Physical View”栏选择“main”,执行菜单命令“Tools”→“Translation Options…”,弹出Translation Options对话框,在对话框底部选择“ESpice to Spice”选项卡,如图2-4-23所示。不选择任何选项,main.spc文件包含传输线元素。
图2-4-23 Translation Options对话框
(3)在Translation Options对话框单击“OK”按钮,在“Physical View”栏选择“main”,单击鼠标右键,选择“Translate Selected”→“Generic Spice”,main.spc已经被转换为标准Spice文件,文件名为mainspc_gen.spc,如图2-4-24所示。
(4)在“Physical View”栏选择“mainspc_gen”,执行菜单命令“File”→“Save As”,保存文件,文件名为mainspc_gen_default。
图2-4-24 mainspc_gen文件内容
(5)执行菜单命令“Tools”→“Translation Options…”,弹出Translation Options对话框,在对话框底部选择“ESpice to Spice”选项卡,勾选“Use W element for all transmission line models”复选框,如图2-4-25所示。
图2-4-25 Translation Options对话框
(6)单击“OK”按钮,关闭Translation Options对话框。W-element文件用于Hspice仿真,在“Physical View”栏选择“main”,单击鼠标右键,选择“Translate Selected”→“Generic Spice”,弹出提示框,单击“Yes”按钮,重写mainspc_gen文件,如图2-4-26所示。
图2-4-26 重写mainspc_gen文件
(7)在“Physical View”栏选择“mainspc_gen”,执行菜单命令“File”→“Save As”,保存文件于当前目录,文件名为mainspc_gen_welement。
(8)在“Physical View”栏选择“main”,单击鼠标右键,选择“Close Selected”,关闭main.spc。
(9)执行菜单命令“Window”→“Tile Horizontally”(横向平铺),这两个文件上下显示,这样很容易将两个文件进行比较,如图2-4-27所示。
(10)在文件中查找Trace模型定义,W-element指向其他文件,关键词“RLGCfile=文件名”,这就意味着当提取W-element Spice文件到Hspice时,也需要提取它的RLGC文件。
图2-4-27 比较两个模型文件
(11)在名为subckt COMPLETE_Interconn的W-element文件中查看子电路定义,在spc2spc转换的过程中,这些文件被转换为标准Spice文件,Trace定义被从Allegro PCB SI电路板文件提取并被存储在interconn.iml中。
(12)查看W-element声明的第1行“WTL_XSTLX3090Y9732L1X3090Y9775L1”,“WTL_X”表示“W-element”声明,“STL”表示单传输线,“X3090”、“Y9732”和“L1”表示 X 坐标和 Y 坐标及互连线连接的层号,这表示连接到子电路的外部节点。“X3090”、“Y9775”和“L1”表示 X 坐标和 Y 坐标及互连线连接的层号,这表示连接到子电路的内部节点。
(13)后面的“RLGCfile=STL_1S_1R_41.rlc l=0.0010922”表示子电路引用名为ntl_rlgc.inc的Allegro PCB SI的模型,模型文件是Stl_1s_1r_41.rlc,长度是0.001 092 2m(43mil)。
(14)在编辑窗口查看W-element文件的子电路定义.subckt COMPLETE.U15 2,注意提示信息,如图2-4-28所示。
图2-4-28 子电路定义
(15)注释信息“bdrvr 18 3 19 23 22 20 21 File=ibis_models.inc Model=GTL_IO_Typical”说明使用的节点连接点和缓冲模型。
(16)执行菜单命令“File”→“Close All”,关闭所有窗口。
(17)执行菜单命令“File”→“Exit”,退出Model Integrity窗口。