基于Sigrity的常规SI仿真流程(上)
“ 一般的SI仿真流程分为三个步骤:
1) 初次仿真发现问题
2) 定位问题
3) 优化设计、解决问题
上述三个步骤分别对应的仿真手段为:
1) 使用高效精确的电磁场仿真工具实施模型参数的提取,得到信号无源互连链路的频域S参数结果,S参数可以从频域辅助分析信号质量,也作为后续第二步问题定位的重要依据;然后结合芯片IO模型(ibis/spice模型等)搭建链路拓扑,实施时域仿真,查看最终的时域波形、眼图或误码率等指标
2) 定位问题一般首先通过S参数的插入损耗、回波损耗初步判断问题,如损耗过大、还是阻抗不匹配造成的反射或是其他原因。结合时域波形、眼图等结果,详细分析可能造成信号质量问题的原因。其中分析链路阻抗一致性的重要手段是进行TDR仿真,找到阻抗不连续的地方,进行有针对性的优化
3) 优化设计、重新仿真验证,循环迭代直到信号质量满足要求。其中仿真手段包括在设计文件中修改可能导致信号问题的不良版图设计、修改去耦电容等原理方案以及常见的在仿真软件中实施的过孔扫描等过程
上述三个步骤对应的Sigrity工具:
1) PowerSI&Clarity用于提取模型参数,SystemSI用于搭建时域链路获得时域结果
2) 在获得S参数情况下,可基于S参数在BroadbandSpice模块中获得TDR曲线
3) 优化迭代仿真过程使用软件同1,其中过孔扫描可用3DEM中的HSSO特定流程(HSSO功能预计2021年的版本会放到新的3D电磁场工具Clarity中,操作方式与3DEM基本一致)
下面以一个信号处理系统级仿真case描述上述过程,该case的信号处理板上有4片DSP芯片,信号从信号处理板1的每个芯片发出经过背板再回到信号处理板2的相同芯片上, 4路LVDS差分信号传输,以每路中的CLK信号举例分析传输性能。
”
01
—
初次仿真发现问题
在进行仿真项目前,对于常规的SI仿真来讲,需要准备的仿真输入文件包括:
-
PCB设计文件
-
PCB的阻抗/叠层结构信息
-
板材信息
-
关注的信号网络名
-
关注的信号高速率或频率
-
信号的spec要求(协议要求、产品要求等,如插损不超过多少、电平幅度需要达到多少等)
-
芯片IBIS模型(IBIS-AMI模型)、器件S参数/SPICE模型等
-
PowerSI模型提取
1) 打开Sigrity PowerSI软件,先进行文件转换设置如下:
2) 导入PCB设计文件,.brd文件可直接导入:
3) 版图导入后,设置层叠结构及板材:
需要检查设置的主要有层叠结构、每层厚度、金属层/介质层的材料、金属层填充介质材料等,是否与设计的板厂给的阻抗层叠结构图中的一致。在这里可以通过view material添加、编辑自己的材料。
4) 选择需要仿真的网络:
选择需要仿真的信号网络、信号参考的地网络(不做电源AC仿真或power-aware信号仿真不需要选择电源网络)。如果是差分网络,可右键classify—as diff pair,然后auto assign polarity自动设置正负极。
5) 设置电容模型,电源AC仿真与power-aware信号仿真才需要,本case略。
6) 生成端口:
选好了仿真的网络后,可自动生成端口。
7) 仿真频率设置:
仿真频率设置的原则是至少3倍或5倍信号基频,本case信号频率为300MHz,因此设置仿真频率为2GHz。扫频模式选择AFS自适应。
8) 版图切割:
上图均为版图切割操作快捷键,如果要根据使能的信号网络切割,直接点击summary cutting polygon打开切割界面即可。
切割操作如上所示,最后保存切割后的版图即可。切割版图进行信号仿真能够在几乎不牺牲精度的情况大大提高仿真效率,特别适用于单纯的信号SI仿真模型提取。对于考虑电源网络的仿真来讲,不适合做切割,因为切割会影响电路板谐振,改变电源平面模型提取的结果。
9) PowerSI模型提取其他相关设置:
提高CPU运算性能的设置。
以上选项勾选上可提高仿真精度。
勾选上上面这个选项,软件会把所有信号参考的平面使能,保证信号走线回流与真实参考回流路径一致。
最后让软件处理一下整板铜皮,保存文件,运行仿真。仿真得到的结果为S参数,如下图:
10) 保存S参数为.bnp或.snp格式文件,勾选MCP output选项,可输出网络pin脚连接关系信息,方便后续链路拓扑的搭建。
本case是一个包括子卡、背板的系统级仿真,所以按上述方法分别提取子卡和背板关注信号的S参数模型。然后需要到SystemSI中级联两个子卡和背板的S参数(有连接器模型的就加上)得到整条链路的S参数结果。
2. SystemSI S参数级联提取操作步骤
1) 打开SystemSI,选择System Explorer模块,新建瞬态仿真工程:
按上述操作,建立了一个System Explorer的空白工程:
2) 放置三个spice或S参数的block(如果是powersi提取的带mcp的模型,那用spice block导入.ckt头文件,这样可以省去编辑mcp的过程),修改block名字:
3) 导入提取的子卡和背板的S参数,这里导入头文件.ckt,它关联着对应的S参数文件,且包含了mcp互连信息
导入后,可以点击view S Parameter查看S参数。
4) 三个S参数都导进来后,对应的差分信号和地网络互连起来。因为想要得到添加差分信号端口提取差分信号S参数,所以System Explorer中还需要在芯片端添加TX与RX:
TX和RX控件双击打开,选择差分模型后才可与xinchu_out和xinchu_in的差分信号相连。
5) 上述S参数和模块级联完成后,打开S参数提取器,如下:
选择differential mode,勾选并选中xinchu_out模块,左键选择差分正极,右键选择差分负极,点击中间的箭头按键即可生成一个差分端口。
同样的方法生成其他差分端口。
6) 设置仿真频率及扫频方式,选择输出的S参数格式,提取级联后的整条链路S参数:
7) 提取整条链路差分S参数结果如下,保存S参数文件:
3.SystemSI时域仿真操作步骤
1) 打开System Explorer模块,新建一个工程,放置一个S参数block并导入上面生成的全链路S参数:
2) 导入后,打开mcp编辑窗口,定义两个连接端口如下图:
3) 放入TX_IBIS和RX_IBIS模块,分别导入准备好的IBIS模型(从供应商那儿要到,或者网上下载),本case为TS201.ibs:
双击放置的Tx1打开模块,点击load ibis打开载入模型界面,选择对应模型导入即可,选择对应的差分信号pin脚及model。
导入完成后,如上图。使能封装寄生参数如下:
相同方法导入RX的IBIS模型,差分信号是选择接收端处的信号网络、pin脚和model。
4) 将Tx与S参数以及Rx互连,对应差分信号互连、地网络互连。完成后该case还需要在接收端端接一个100欧姆电阻,直接放置discrete模块,电阻改为100欧:
全部互连后,拓扑如下:
5) 仿真设置,速率为600Mbps(300MHz),检查一下IO model等参数,仿真时间选择Auto:
RX端只需要检查一下IO Model
6) 运行瞬态分析仿真,波形结果如下:
长链路和短链路对比结果如下:
明显长链路的电平值小很多,这个case是需要复现板子调试发现的问题,实测长链路电平衰减接近一半,此处基本复现了问题(本case还未考虑连接器损耗)。
未完待续....
更多技术文章与讨论欢迎关注微信公众号:

封装与高速技术前沿
微信号 : APDtech