一种PCB设计中检查并设定约束值的方法与流程

文档序号:11286800阅读:519来源:国知局
一种PCB设计中检查并设定约束值的方法与流程

本发明涉及一种pcb设计中检查并设定约束值的方法,属于服务器系统技术领域。



背景技术:

目前在市场上有多款pcb设计软件,cadence作为业界应用最广泛的软件,不仅是它拥有强大的功能和多款相关软件做支撑,还因为它提供了开放式的二次开发接口和较为完善的开发语言库,用户可根据自身的需要进行开发。

skill语言是cadence软件内置的一种基于c语言和lisp语言的高级编程语言,cadence为skill语言提供了丰富的交互式函数,研究skill语言继而编写工具,投入应用可以大大提高工作效率。

但是,目前的pcb设计软件中对约束值的检查和设定均是采用人工手动操作,人工手动操作不仅效率低,而且还经常出现遗漏和错误。



技术实现要素:

针对上述不足,本发明提供了一种pcb设计中检查并设定约束值的方法,其能够实现一键检查并设定约束值的功能。

本发明解决其技术问题采取的技术方案是:一种pcb设计中检查并设定约束值的方法,其特征是,它通过编写skill程序进行一键检查并设定约束值,同时根据修改后的约束值更新drc。

进一步地,所述skill程序包括以下步骤:

步骤1,对设计单位进行检查:通过axldbgetdesignunit函数对设计单位进行检查,axldbgetdesignunit函数的返回值为设计单位和精度的字符串,约束值的设定是只需要设置数值,约束值以mils为单位(约束值的单位参考当前设计,因此需要对当前设计单位进行检查);

步骤2,创建新约束集:创建新约束集用于设定特殊约束;

步骤3,获取当前约束集约束项目的关键词列表;

步骤4,采用两层循环嵌套的方式逐个获取每个约束集下的每一约束项目的约束值;

步骤5,检查获取的约束值数值,如果约束值数值大于等于标准值则跳过,否则修改为标准值;

步骤6,根据设计规范设定特殊的约束值;

步骤7,运行约束管理器显示设计效果。

进一步地,在步骤1中,约束值以以两位精度的mils为单位,设定约束值过程中预置的检查标准为两位精度的mils。

进一步地,在步骤2中,新约束集参照默认值新建,用于设定特殊对象、敏感信号的约束值。

进一步地,新约束集包括电源特殊约束集。

进一步地,在步骤5,所述标准值为6mils,如果约束值数值大于等于6mils则跳过,否则修改为6mils。

进一步地,所述对约束值进行检查并设定的操作过程包括以下步骤:

1)进行skill程序软件配置文件及快捷键的修改,首先,在pcb设计布线工具的配置文件allegro.ilinit中添加loadskill的语句,其次,在env文件中添加快捷键;

2)打开pcb设计布线工具allegro软件,按下快捷键,点击cm_set即可运行skill程序;

3)运行完毕后打开约束值设置窗口进行检查添加的约束值是否正确。

进一步地,在pcb设计布线工具的配置文件allegro.ilinit中添加loadcns_set.il源程序文件。

进一步地,所述快捷键包括按键f3。

本发明的有益效果是:

本发明通过编写检查并设定约束值的skill程序,可以实现一键检查并设定约束值,采用本发明的方法可快速检查并设定约束值,简化了设计中手动检查并设定约束值的过程,在提高效率的同时也避免了手动添加可能带来的遗漏和错误。

本发明的优点在于可实现一键检查并设定约束值,且不同设计中变化的部分都通过变量控制可以自动获取,没有应用限制,也不需手动修改。

附图说明

下面结合说明书附图对本发明进行说明。

图1为本发明的方法流程图;

图2为本发明所述skill程序的方法流程图;

图3为本发明运行skill程序后跳出弹窗的示意图。

具体实施方式

为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。

本发明的一种pcb设计中检查并设定约束值的方法,它通过编写skill程序进行一键检查并设定约束值,同时根据修改后的约束值更新drc。如图1所示,本发明的实现过程为:首先编写快速检查并设定约束值的skill程序,其次在pcb设计布线工具中执行skill程序,然后点击运行skill程序后跳出弹窗里的设定约束值功能按钮进行一键检查并设定约束值,最后根据修改后的约束值更新drc,从而完成约束值的检查和设定操作。

进一步地,如图2所述,所述skill程序包括以下步骤:

步骤1,对设计单位进行检查:通过axldbgetdesignunit函数对设计单位进行检查,axldbgetdesignunit函数的返回值为设计单位和精度的字符串,约束值的设定是只需要设置数值,约束值以mils为单位(约束值的单位参考当前设计,因此需要对当前设计单位进行检查);

步骤2,创建新约束集:创建新约束集用于设定特殊约束;

步骤3,获取当前约束集约束项目的关键词列表;

步骤4,采用两层循环嵌套的方式逐个获取每个约束集下的每一约束项目的约束值;

步骤5,检查获取的约束值数值,如果约束值数值大于等于标准值则跳过,否则修改为标准值;

步骤6,根据设计规范设定特殊的约束值;

步骤7,运行约束管理器显示设计效果。

在pcb设计中,前期需要设定约束值对设计进行约束,这些约束包含物理约束、间距约束、电气约束等不同约束集,而每一约束集下分为多个约束项目及其数值,检查与设定过程繁琐。同时,设计过程中可能修改会对约束值数值有所修改。在后期检查过程中,所有的约束值必须是正确的设定,这样才能正确显示出drc并进行相应的修改。其中,drc指的是designrulechecking,即设计规则检查,此检查是基于用户设定的约束值进行,不符的结果用drc符号标记。综上,设计后期的检查依靠drc检查,而drc检查是参照约束值,因此约束值的正确设定与检查十分重要。采用本发明的方法可快速检查并设定约束值,简化了设计中手动检查并设定约束值的过程,在提高效率的同时也避免了手动检查设定可能带来的遗漏和错误。

通过编写快速检查并设定约束值的skill程序,在allegro(pcb设计布线工具)中执行程序后会跳出弹窗,点击弹窗里的设定约束值功能即可一键检查并设定约束值,设定完成后软件默认更新drc(设计规则检查)。程序运行后的弹窗如图3所示,cm_set按钮即为检查并设定约束值的按钮,直接点击运行即可。

图2为本发明所述skill程序的方法流程图,skill程序的具体设计流程如下。首先第一步,需要通过axldbgetdesignunit函数对设计单位进行检查,函数的返回值为设计单位和精度的字符串,约束值的设定是只需要设置数值,单位以当前设计的单位为准,例如当前设计单位为mils,约束值就以mils为单位,因此单位不同,设定完的结果完全不同。我司的设计是以两位精度的mils为单位的,因此设定约束值的程序中预置的检查标准为两位精度的mils。接下来第二步,需要创建新约束集,用于设定特殊约束,这个新约束集可以参照默认值新建。在此处是以电源为例添加特殊约束集,事实上,设计中还会添加到其他的特殊约束集,用于设定特殊对象、敏感信号的约束值,不与普通约束集通用。此类特殊约束集根据不同的设计规范会有差异。第三步,获取当前约束项目的关键词列表,这一步骤非常重要。第四步是采用两层循环嵌套的方式逐个获取每个约束集下的每一约束项目的约束值,此处在后文中详细介绍。第五步,检查第四步中获取的约束值的数值,大于等于6mils的跳过,小于6mils的则改为6mils。对于间距类的约束值,数值越大,则更难达到,要求更严格,,此处选择的数值6是我司规范中设定的通用默认值,可视为最低标准。第六步,根据设计规范设定特殊的约束值,这一设定各司会有差异。最后,程序会自动运行约束管理器,让使用者确认、查看结果。

本发明的核心技术要点在于获取当前约束项目的关键词列表和采用两层循环嵌套的方式逐个获取每个约束集下的每一约束项目的约束值。首先,获取当前约束项目的关键词列表是十分必要的,因为软件可以识别的关键词与通用名称有差异,例如’via_via指的是viatoviaspacing,而uvia_line指的是microviatolinespacing,同时,先后顺序不确定,例如uvia_line和line_uvia在理论上都是指microvia和line对象之间的spacing,但软件只能够识别uvia_line,line_uvia是无效参数。实现方法是通过axlcnsgetspacing函数的参数全部缺省实现,参数不缺省时获取的是特定间距的约束值,全部缺省则返回约束项目关键词列表。其次,采用两层循环嵌套的方式逐个获取每个约束集下的每一约束项目的约束值,随后进行检查及设定。设计中含有多种约束,每种约束下包含若干约束集,每一约束集下包含若干约束项目,为达到遍历的效果,需要进行两层循环嵌套。外循环对约束集名称循环遍历,内循环对项目关键词循环遍历,两层循环嵌套可以达到覆盖全局的效果。

本发明实现遍历设定特殊约束值的功能的代码如图3所示。其实现方法是获取约束集列表,依次将约束集列表中的每个对象赋给j,再对j中的特殊约束值进行设置,这个特殊约束值可能根据各个公司的设计规范要求有所变化。其中:’via_via指的是viatoviaspacing,而thrupintosmdpin只设定bottom层面。

本发明的优点在于可实现一键检查并设定约束值,且不同设计中变化的部分都通过变量控制可以自动获取,没有应用限制,也不需手动修改。采用本发明可快速检查并设定约束值,简化了设计中手动检查并设定约束值的过程,在提高效率的同时,也避免了手动添加可能带来的遗漏和错误。

为将本发明的使用方法和优点表述清楚,以下详细叙述实施方式:

1)进行软件配置文件及快捷键的修改,首先,在allegro.ilinit文件中添加load(“cns_set.il”),其中,cns_set.il为源程序文件,此命令用于加载程序;其次,在env文件中添加快捷键,以按键f3为例,funckeyf3cns_set,其中,cns_set为在程序中定义的命令,执行此命令后即运行本发明所指的程序,现在,此命令以快捷键f3代替.

2)打开allegro软件,按下字母f3,点击cm_set即可运行程序。

3)运行完毕后打开约束值设置窗口,用户可检查添加的是否正确。

现在对上述实施方式的具体实施例结果进行展示:打开一个brd文件可以查看运行程序后得到的结果,以便对约束值的检查与设定。由于此brd文件为空,只有一个默认约束集,名称为default。

以上所述只是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也被视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1