基于CadenceAllegroSI16.3的信号完整性仿真信号完整性是指信号在信号线上的质量。信号具有良好的信号完整性是指当在需要的时候,具有所必需达到的电压电平数值。差的信号完整性不是由某一因素导致的,而是由板级设计中多种因素共同引起的。特别是在高速电路中,所使用的芯片的切换速度过快、端接元件布设不合理、电路的互联不合理等都会引起信号的完整性问题。具体主要包括串扰、反射、过冲与下冲、振荡、信号延迟等。信号完整性问题由多种因素引起,归结起来有反射、串扰、过冲和下冲、振铃、信号延迟等,其中反射和串扰是引发信号完整性问题的两大主要因素。反射和我们所熟悉的光经过不连续的介质时都会有部分能量反射回来一样,就是信号在传输线上的回波现象。此时信号功率没有全部传输到负载处,有一部分被反射回来了。在高速的PCB中导线必须等效为传输线,按照传输线理论,如果源端与负载端具有相同的阻抗,反射就不会发生了。如果二者阻抗不匹配就会引起反射,负载会将一部分电压反射回源端。根据负载阻抗和源阻抗的关系大小不同,反射电压可能为正,也可能为负。如果反射信号很强,叠加在原信号上,很可能改变逻辑状态,导致接收数据错误。如果在时钟信号上可能引起时钟沿不单调,进而引起误触发。一般布线的几何形状、不正确的线端接、经过连接器的传输及电源平面的不连续等因素均会导致此类反射。另外常有一个输出多个接收,这时不同的布线策略产生的反射对每个接收端的影响也不相同,所以布线策略也是影响反射的一个不可忽视的因素。串扰是相邻两条信号线之间的不必要的耦合,信号线之间的互感和互容引起线上的噪声。因此也就把它分为感性串扰和容性串扰,分别引发耦合电流和耦合电压。当信号的边沿速率低于1ns时,串扰问题就应该考虑了。如果信号线上有交变的信号电流通过时,会产生交变的磁场,处于磁场中的相邻的信号线会感应出信号电压。一般PCB板层的参数、信号线间距、驱动端和接收端的电气特性及信号线的端接方式对串扰都有一定的影响。在Cadence的信号仿真工具中可以同时对6条耦合信号线进行串扰后仿真,可以设置的扫描参数有:PCB的介电常数,介质的厚度,沉铜厚度,信号线长度和宽度,信号线的间距.仿真时还必须指定一个受侵害的信号线,也就是考察另外的信号线对本条线路的干扰情况,激励设置为常高或是常低,这样就可以测到其他信号线对本条信号线的感应电压的总和,从而可以得到满足要求的最小间距和最大并行长度。过冲是由于电路切换速度过快以及上面提到的反射所引起的信号跳变,也就是信号第一个峰值超过了峰值或谷值的设定电压。下冲是指下一个谷值或峰值。过分的过冲能够引起保护二极管工作,导致过早地失效,严重的还会损坏器件。过分的下冲能够引起假的时钟或数据错误。它们可以通过增加适当端接予以减少或消除。在Cadence的信号仿真软件中,将以上的信号完整性问题都放在反射参数中去度量。在接收和驱动器件的IBIS模型库中,我们只需要设置不同的传输线阻抗参数、电阻值、信号传输速率以及选择微带线还是带状线,就可以通过仿真工具直接计算出信号的波形以及相应的数据,这样就可以找出匹配的传输线阻抗值、电阻值、信号传输速率,在对应的PCB软件Allegro中,就可以根据相对应的传输线阻抗值和信号传输速率得到各层中相对应信号线的宽度(需提前设好叠层的顺序和各参数)。选择电阻匹配的方式也有多种,包括源端端接和并行端接等,根据不同的电路选择不同的方式。在布线策略上也可以选择不同的方式:菊花型、星型、自定义型,每种方式都有其优缺点,可以根据不同的电路仿真结果来确定具体的选择方式。信号延迟是电路中只能按照规定的时序接收数据,过长的信号延迟可能导致时序和功能的混乱,在低速的系统中不会有问题,但是信号边缘速率加快,时钟速率提高,信号在器件之间的传输时间以及同步时间就会缩短。驱动过载、走线过长都会引起延时。必须在越来越短的时间预算中要满足所有门延时,包括建立时间,保持时间,线延迟和偏斜。由于传输线上的等效电容和电感都会对信号的数字切换产生延迟,加上反射引起的振荡回绕,使得数据信号不能满足接收端器件正确接收所需要的时间,从而导致接收错误。在Cadence的信号仿真软件中,将信号的延迟也放在反射的子参数中度量,有Settledelay、Switchdelay、Propdelay。其中前两个与IBIS模型库中的测试负载有关,这两个参数可以通过驱动器件和接收器件的用户手册参数得到,可以将它们与仿真后的Settledelay、Switchdelay加以比较,如果在Slow模式下得到的Switchdelay都小于计算得到的值,并且在Fast的模式下得到的Switchdelay的值都大于计算得到的值,就可以得出我们真正需要的两个器件之间的时延范围Propdelay。在具体器件布放的时候,如果器件的位置不合适,在对应的时延表中那部分会显示红色,当把其位置调整合适后将会变成蓝色,表示信号在器件之间的延时已经满足Propdelay规定的范围了。PCB仿真设计的一般流程:原理图设计阶段:编制元件表、建立连线网表、建立元器件封装库、确定电路逻辑符号与物理器件的映射(指定元器件封装)PCB前仿真:高速PCB的前仿真包括以下几个方面:信号完整性(SI)仿真,时序(TIMING)仿真,电磁兼容性(EMI)仿真。PCB布局布线:模板设计、确定PCB尺寸、形状、层数及层结构、元件放置、输入网表、设计PCB布线规则、PCB交互布局、PCB走线、PCB光绘文件生成、钻孔数据文件。PCB后仿真:高速PCB的后仿真:信号完整性(SI)后仿真,电源完整性(PI)后仿真,电磁兼容性(EMI)后仿真。功能、性能、EMI测试:单板调试、性能测试、设计验证、温度试验、EMI测试等。Cadence高速设计流程中的仿真条件及实施:高速仿真实施条件实施顺序实现方式器件模型1由第三方提供或者Cadence的EditModel生成模型验证和管理2ModelIntegrity器件工作参数3在DatabaseSetup中设置、在SigXP中进行Analsyspreference设置互联模型4PCB叠层结构设置信号互联模型5原理图信号拓扑结构6从(预)布局、布线中抽取、在SigXP中直接生成信号激励模式7在SigXP中定义约束生成8在SigXP中,使用setConstraint生成约束,直接在CM约束管理器中定义和编辑约束管理和实施9在CM约束管理器中进行设计以下将逐个介绍如何在Cadence的高速设计流程中实现这些仿真条件,通过仿真分析,得到高速设计的约束条件和实施设计约束。一、获取模型1、、到器件厂商的官方网站下载二、模型验证和管理用Cadence集成工具ModelIntegrity打开模型,此工具将自动检查验证模型。如果没有错误,将模型转换成DML格式。注意:DML是Cadence专用的模型语言,在Cadence的高速设计环节中所有的器件模型都以DML格式存储并使用。不管用户使用的是什么文件,在仿真之前都要转换成DML格式的文件才能被Cadence的仿真引擎所识别并使用。三、仿真库的建立和设置上一步得到了经过验证的DML模型库,下面将把这个模型库加入到设计中使用。在PCBSI菜单中,选择Analyze---SI/EMIsim---ModelBrowser,出现如下模型库管理界面:选择SetSearchPath,出现以下界面,可以通过选择AddDirectory指向我们之前保存的模型库文件夹。四、仿真分析条件设置通过菜单Tools=》SetupAdvisor命令打开DatabaseSetupAdvisor窗口,打开的窗口如下图所示:Cross-section:定义在Layout中使用的叠层和材料参数;DCNets:定义直流电压值,也即系统静态工作点;Device:指定器件的类型和Pinuse属性;SIModule:为器件的指定电气模型;SIAudit:对前面的设置进行检查以确保能够进行正常地进行抽取和仿真。点击Next,选择EditCross-section,出现PCB叠层参数设置界面:在此对话框中,可以添加或者删除叠层,也可以改变每一层的类型、材料、厚度、电导率、介电常数、线宽和特征阻抗等参数。做完并关闭叠层参数的设计之后,回到DatabaseSetupAdvisor界面,点击Next,进入直流电源网络的设置界面,如下:选择左侧列表框中的待选网络,在右侧的文本框中可以指定该网络直流电压值。设置好直流电压后,回到DatabaseSetupAdvisor界面,点击Next,出现以下界面:点击DeviceSetup,进入器件类型设置界面:在此界面中,用户可以指定以特定字符开始的器件标号属于某一类器件。对于DefaultValue,原理图中标明的是多大就标多大。设置好后继续Next,进入模型分配界面:Devices目录显示了所有网表中导入的元器件,要指定模型,先选中,然后点FindModel,弹出模型分配对话框:在ModelNamePattern中输入“*”,按“Tab”键,库目录中所有的模型将列出来,选择合适的,点击Assign,模型就被分配好了。当以上所有的仿真条件及参数设置完成之后,在DatabaseSetup的最后一步我们可以用SIAudit进行一下验证,以确保我们所关心的网络上所有和仿真相关的因素都已经处理好了。如果Audit的结果出错,对照结果的提示,找到出错的原因,重复前面的某些步骤,对仿真条件进行修改和完善,如果没有问题就可以进入下一步的高速信号仿真了。以上对仿真的各项条件进行了详细讲解,下面将结合具体例子来说明如何来仿真。如图所示一个预布局好的PCB,以下将对PCB中一对差分信号进行仿真,首先必须进行阻抗控制,器件模型分配,前面已经讲过具体的操作过程,这里不再赘述,接下来我们需要对差分对进行拓扑提取。1、设置互联模型参数从AllegroPCBSIGXL窗口选择Analyze---SI/EMISim---Preference命令,弹出AnalyzePreferences窗口,选择“InterconnectModels”如下图:在“UnroutedInterconnectModels”部分,设置“PercentManhattan”为100,“DefaultDiff-Impedance”为100ohm,在“TopologyExtraction”部分确保选择“DifferentialExtractionMode”,如果没有选择,差分对拓扑将仅使用理想传输线模型。为了使用理想的耦合传输线模型,必须选择“DifferentialExtractionMode”。2、提取拓扑在“AllegroConstraintManager”窗口选择“Net”---“Routing”---“DifferentialPair”如下图:选择“DP_LOOPIN”差分对(差分对可以在原理图或者导入PCB之后设置),单击右键,选择“SigXplorer”命令,弹出“SigXplorerPCBSIGXL”窗口,显示了提取的有理想耦合的传输线模型的差分对拓扑,如下图所示:在窗口的右侧有一个“Parameters”设置表格,为了直观,可以把“tlineDelayMode”的“time”改为“length”。保存拓扑结构。3、分析差分对网络:选择“Analyze”---“Preference”选项,弹出“AnalyzePreference”窗口,设置“PulseStimulus”(记录参数)、“SimulationParameters”(仿真参数)、“SimulationModes”(仿真模式)和“MeasurementModes”(测量模式),如下图:MeasurementCycle:设置仿真器在第几个周期进行参数测量。一般情况下,由于驱动器的瞬态效应,我们对于时钟信号从第三个周期进行测量,对于其它的信号从第一个周期进行测量。SwitchingFrequency:开关频率或称