ALLEGRO约束设置文档格式.docx
《ALLEGRO约束设置文档格式.docx》由会员分享,可在线阅读,更多相关《ALLEGRO约束设置文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
![ALLEGRO约束设置文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/5/36159d28-c963-425d-8422-23b29f1a6413/36159d28-c963-425d-8422-23b29f1a64131.gif)
全局约束设置。
在PCBeditor界面下,点击“Setup→Constraints”或点击图标
打开“ConstraintsSys”窗口,将出现下图所示窗口。
点击“Setstandardvalues”,弹出“Defaultvaluesform”界面,在此可设置默认值,且窗口中所有设置值各自分属于spacingrule和Physicalrule中名为“Default”的约束集。
此处我们取默认值。
图1
下面步骤2-步骤4为Physical(Line/vias)rule物理特性(线宽和过孔)约束设置过程
步骤2:
线宽约束设置。
点击“Physical(Line/vias)ruleset→setvalues”,在出现的窗口上方空白处填入新约束名称,如“LVDS_SIG”,然后点击“ADD”,新的约束就产生了。
如果需要设置这是某一层的约束,还要在“subclass”中选择相应的层面。
接下来就在相应栏填入需要的值。
如下图所示:
图2
如果还有其它信号的线宽要求,请重复上述步骤。
Minlinewidth:
最小线宽
Maxlinewidth:
最大线宽,填0=∞
Minneckwidth:
Neck模式最小线宽
Maxnecklength:
Neck模式最大走线长度
DiffPairprimarygap:
首选差分间距(单端线可不填)
DiffPairneckgap:
Neck模式差分间距(单端线可不填)
过孔规格在“Vialistproperty”中设定,一般设定在默认约束规则下。
在左侧数据库可用via列表中点击所需规格钻孔,右侧“Currentvialist”就会显示选中钻孔,可多选。
步骤3:
绑定约束类型。
点击“Physical(Line/vias)ruleset→Attachproperty”后可以直接框选板上各Net来选取,也可以点击右侧的more,在弹出的“FindbyNameorProperty”选择框中选取。
“Namefilter”处填写要绑定的Net名,“?
”可以代替任意一个字符,“*”可以代替任意长字符,如我们要给LVDS差分线添加“LVDS”的“Net_Physical_Type”属性,就可以输入“LVDS*”,就可以将所有LVDS的Net过滤出来,如图:
图3
点击“All”选定net,点击“Apply”,出现“EditProperty”窗后,在左侧下拉选项中选择约束类型“Net_Physical_Type”,然后在右侧相应内容后填入约束名称“LVDS”,
点击“Apply”,这样就完成了约束类型绑定,如图:
图4
图5
步骤4:
约束规则分配。
点击“Physical(Line/vias)ruleset→Assignmenttable”出现约束规则分配列表,分配不同情形下适用怎样的规则。
Physicalrule的约束分配列表如下:
图6
第一列“NetPhysicalProperty”:
在步骤3“Attachproperty”中绑定的约束类型
第二列“AreaProperty”:
约束绑定区域,在第三部分介绍。
第三列“PhysicalConstraintSet”:
在步骤2“Setvalues”中设置的约束特征值
关于约束绑定区域我们以后再说,那么这三行的意思就是:
绑定约束“NO_Type”的信号在“NO_Type”区域内应用Physical约束“DEFAULT”
绑定约束“LVDS”的信号在“NO_Type”区域内应用Physical约束“LVDS_SIG”
下面步骤5-步骤7为“Spacingrule”间距约束设置过程
步骤5:
点击“Spacingrule→Setvalues”设置约束特征值。
由于LVDS差分对要求线间距为7mil,所以我们在窗口上方空白处填入新约束名称“SPACE_7”,然后点击“ADD”,新的约束就产生了,在对应的各个距离内填上相应的数值即可。
图7
步骤6:
点击“Spacingrule→Attachproperty”绑定约束类型。
Spacingrule的绑定约束类型的操作和Physicalrule设置基本相同。
选取LVDS信号绑定约束类型“LVDS_SPACE”,如图:
图8
图9
步骤7:
点击“Spacingrule→Assignmenttable”进行约束规则分配。
Spacingrule的约束分配列表如下:
图10
上图中三行的意思是(关于约束绑定区域第三部分会有介绍):
绑定Spacing约束“No_Type”的信号和绑定Spacing约束“No_Type”的信号在“No_Type”区域内应用Spacing约束“DEFAULT”
绑定Spacing约束“LVDS_SPACE”的信号和绑定Spacing约束“No_Type”的信号在“No_Type”
区域内应用Spacing约束“SPACE_7”
绑定Spacing约束“LVDS_SPACE”的信号和绑定Spacing约束“LVDS_SPACE”的信号在“No_Type”区域内应用Spacing约束“SPACE_7”
下面步骤8到步骤10为差分对等长约束设置过程
步骤8:
差分对配对。
点击“setup→electricalconstraintspreadsheet…”或点击
,打开Allegroconstraintmanager窗口。
选择“net→Routing→DifferentialPair”,选中LVDS_A0_P和LVDS_A0_N右击,在弹出的菜单中选择“create→differentialpair”,如下图所示。
点击后会弹出“createdifferentialpair”界面,在此界面就可以依次对所有差分对配对。
图11
图12
步骤9:
建立ECSet。
在左边工作窗体选择区选择“ElectricalConstraintSet→Routing→DifferentialPair”。
在你的brd文件名(此处为unnamed)上右击→Create→ElectricalCSet,在弹出的对话框中输入约束名,这里起名为“LVDS_LENGTH”,并在图示位置填入允许的长度差值75mil。
图13
如果需要对LVDS信号布线总长度设置约束,则在左边工作窗体选择区选择“ElectricalConstraintSet→Routing→TotalEtchLength”。
在此我们可以看到刚才新建的约束“LVDS_LENGTH”,在其后面的“MinimumEtchLength”和“MaximumEtchLength”中添加布线长度的最小和最大值,如图。
图14
步骤10:
为差分对绑定ECSet。
打开“Net→Routing→DifferentialPair”,在右侧可以看到已经配对的差分线,在“ElectricalCsetReferences…”下单击,在弹出的对话框中选择刚才设置好的约束“LVDS_LENGTH”。
也可以一次填多对,按住左键拖曳选择多个,右键菜单选“Change…”。
这样就给差分线添加了长度约束“LVDS_LENGTH”。
如图:
图15
同理,在“Net→Routing→TotalEtchLength→ElectricalCsetReferences…”下添加“LVDS_LENGTH”约束。
设置好后就可以布线了。
在最上面的字段名称上及项目名、Net名上,按下鼠标右键可以展开下拉菜单,其中的“Sort”可以将对象重新排序,“Analyze”可以立即执行分析,分析后各种颜色的图示如下,也就是常说的红绿灯。
Pass–分析的结果符合设定值。
Fail–分析的结果不符合设定值。
Analysiserror–无法执行分析。
Directlyset–字段的设定值是由使用者直接输入的
图16
提示:
没有红绿灯的,请打开Setup→UserPreferences…,展开左边Etch项,右边allegro_dynam_timing选择on即可。
下面的一项allegro_dynam_timing_fixedpos是设置红绿灯位置锁定还是跟着光标跑的。
设置好后,还要在“constraintmanager”窗口中,点击“anslysis→analysismodes”,在弹出的界面中打开相应的DRC检查项即可,如下图
图17
第二部分:
非差分信号约束设置
非差分信号的约束设置与差分信号的约束设置大致过程相同。
下面我们通过对VGA信号的约束设置分步骤的讲解各个设置过程,其约束条件如下表:
最小线距
最大线长
信号间最大布线差值(mil)
VGA
6
20
5000
设置过程同“第一部分:
差分对约束设置/步骤1”,取默认值即可。
差分对约束设置/步骤2”。
此处线宽约束命名为“VGA_SIG”。
图18
差分对约束设置/步骤3”。
此处“Net_Physical_Type”命名为“VGA”。
图19
差分对约束设置/步骤4”。
图20
设置约束特征值。
差分对约束设置/步骤5”。
VGA信号间距要求20mil,因此此处约束命名为“SPACE_20”。
图21
差分对约束设置/步骤6”。
选取VGA信号绑定约束类型“VGA_SPACE”,如图:
图22
差分对约束设置/步骤7”。
图23
等长约束设置。
在左边工作窗体选择区选择“NET→Routing→RelativePropagationDelay”。
在主窗体利用Ctrl、Shift键,将VGA_BLUE/VGA_GREEN/VGA_RED三根线全部选定,“右击→Create→Match”,在弹出的对话框中填入组名“VGA_RGB”。
这样就将这3根线加入到了一个group中。
在RelativeDelay下的Delte:
Toleranc处填入长度约束200mil。
如图,
图24
填入时可以直接输入数字,不用输入单位。
可以在“VGA_RED”对应的输入框“右击→setastarget”指定其中某根net为target。
如果需要对VGA的信号进行布线总长度约束设置,则在左边工作窗体选择区选择“ElectricalConstraintSet→Routing→TotalEtchLength”。
在此新建约束“VGA_LENGTH”(新建过程参考“第一部分:
差分线约束设置/步骤9”),在其后面的“MinimumEtchLength”和“MaximumEtchLength”中添加布线长度的最小和最大值。
设定完以上约束就可以绕等长了,在右侧的Length上右击→Analyze,可以看到每根Net的长度,当每个字段都以绿色显示时,就说明它们满足设置的长度约束了,如图:
图25
第三部分:
区域约束设置
在PCB的布线过程中有些区域过于严格的约束是不可能达到的,比如在第二部分中的VGA信号,在连接器管脚上是不可能达到20mil间距的。
这时一个解决办法就是把这些地方划为一个Area,然后给它加上Net_Physical_Type和Net_Spacing_Type属性。
针对这些Area,设定合适的、比较宽松的约束值。
如果不设置,也就是没有区域约束的地方,就是“No-Type”。
具体做法是在第一和第二部分的约束设置后,布线开始前,增加以下步骤:
1、参考“第一部分/步骤2和步骤5”在“Setvalues”中各添加Physical和Spacing的约束值“VGA_CONN_AREA”,填上相对比较宽松的、合理的值。
2、在“Constraintareas”中选Add,(注意这时的绘图层为constraintarea),选择好画shape的工具,在工作区绘制shape。
如图:
图26
3、点击“Attachproperty,shapes”选刚才画的shape,绑定约束Net_Physical_Type和Net_Spacing_Type。
绑定后shape属性如图:
图27
图28
增加上述约束区域后,我们就可以开始布线了。
在区域之外我们执行的是前面设置的约束条件VGA_SIG和VGA_SPACE,当进入此区域后,则执行VGA_CONN_AREA的约束条件。
第四部分:
XNet等长设置
我们把连续的几段由无源元件(如电阻,电容或电感)连接的net合称为一段Xnet。
前面说的方法只能对Net设置等长,既差分对的每根线、group中的每根线,操作的对象都是Net。
而下面这种情况中要求Net1A+Net1B=Net2A+Net2B,那我们如何设置呢?
图29
步骤如下:
1、在AllegroPCBeditor中点击菜单“Analyze→SI/EMISim→Model…”,在弹出来的提示界面中直接点击“Yes”即可,然后出现下面的Model设置窗体:
图30
2、直接在“DevTypeValue/Refdes”中选择要设定Model的器件或直接在板子上点选要设置Model的器件。
如果所选器件是电阻、电容、电感之类的双引脚元件,那么直接点“AutoSetup”,出现下图所示内容,然后点击“OK”即可。
如果是多引脚器件则请参考相应工具书,此处暂不做介绍。
图31
3、点击“setup/electricalconstraintspreadsheet…”或点击
,进入约束管理器ConstraintManager的“Net→Routing→RelativePropagationDelay”,在右边就会显示整块板子所有的Net或Xnet。
建立需要等长的PinPair,在需要建立PinPair的Xnet上右击→Create→PinPair:
图32
4、选择起始Pin和结束Pin:
图33
这一步的目的是指定一个XNet等长时计算长度的起始Pin和结束Pin。
如上图中,SIG_A1长度值就是J2.11-R1.1和R1.2-J3.11的长度和。
设好PinPair之后,就可以用设置一般的Net等长的方法来设置XNet的等长,不同的只是将XNet的PinPair选定添加到一个等长组里。
图34
图35
5、在新建组“SIG_XNET”的RelativeDelay/Delte:
Toleranc处填入长度约束20mil。
如下图:
图36
至此,XNET的约束就设置好了,下面可以布线了。