背景
Specctra设计规则和Altium Designer的设计规则就定义和执行方式而言有很大不同。成功地从Altium Designer转移到Specctra将会是一个巨大的挑战,以下概念上的差异能够说明这一点:
Specctra已更正了(hard-coded)规则结构,这也决定了规则执行的顺序(如:基于网络的规则总是先于基于网络组的规则执行) 。 Altium Designer有一个更强大,更灵活的规则体系。这个体系既不是优先权,也不是固定的范围(规则)。您可以完全自由地使用表达式的方式去定义规则的范围,并且按照设计规则要求定义优先级。因此,你也可以定义网络组规则优先于单网络规则的执行方式。 在Specctra里面,范围定义可以被看为相关规则的集合,这些规则适用于一个范围的例子。但是在Altium Designer里面,情况并非如此。除了默认的"所有"的范围,所有其他范围的所有定义的规则都可能有所不同。 Specctra的规则可以看成是基于基础目标上的一种属性,比如说网络A需要和其它所有目标保持8mil的安全间距。一些Altium Designer的设计规则(二进制规则比较特殊)永远也不能被应用到基础目标。比如,网络A和网络B的间距可能与网络A和网络C的间距不同—是因为没有对网络A进行单独的统一设置。
总之,我们可以更加公正的评价说Altium Designer的范围系统比Specctra规则系统更具有可执行性,或者,是Specctra系统的超指令集。
在Altium Designer里面定义规则
如果您计划使用Specctra来布线您的Altium Designer的PCB设计,那强烈建议您遵循Specctra规则定义的架构(在规则定义的时候),这样能最大限度地提高转换的正确性和布线的正确性。下表提供了一种规则的定义准则。它总结了各种在Specctra方面和Altium Designer方面的各种范围和优先级,并且这些都是被转换器所支持的。而这些"对应"目的就是为了对Specctra而言使规则输出更加简化并避免后期手工修正所带来的麻烦。
高效率输出到Specctra的规则定义规范
注
多个简单的Altium Designer表达式都可以使用{{OR}}操作符-减少设计里的总的规则设计。例如:
InNet('N1') OR InNet('N2') OR InNet('N3')- 让规则适用于任一网络N1,N2, orN3. OnLayer('L1') OR OnLayer('L2')- 让规则适用于层L1or layer {{L2}}上的任意对象.
对于Altium Designer里面的优先级设置,{{1}}具有最高的优先级并且会被最早执行。 基于对象的修改器
以下的表示式被范围修改器所支持
IsPad IsThruPin IsSMDPad IsVia IsTrack IsFill IsPolyRegion IsTestPoint TestPoint
这些修改表达式对于你想设置不同间距的地方非常有用,比如说过孔和管脚,过孔和走线。以下的例子表示了这些表达式在间距控制的定义中的使用方法。
网络N1上,管脚对过孔间距的设置:InNet('N1') AND IsVia vs IsPad 网络N1在顶层上面走线和走线的间距InNet('N1') AND IsTrack vs IsTrack AND OnTopLayer 范围别名
通俗地说,当定义规则范围时,可以使用多种方式定义相同的目的。以下俗语对于基于层定义的方式中被支持:
OnToporOnTopLayer- 也可以写做OnLayer('TopLayerName') OnBottomorOnBottomLayer--也可以写做{{OnLayer('BottomLayerName')}} OnMid- 效果等同于对Mid1和Mid3设置 (如. 除了正面和背面层的信号层) OnSignal- 效果等同于对所有信号层的设置 TestPoint和IsTestPoint效果相同.