Board logo

标题: 编写属于自己的PCB设计规则检查器 [打印本页]

作者: yuyang911220    时间: 2016-12-24 14:58     标题: 编写属于自己的PCB设计规则检查器

本帖最后由 yuyang911220 于 2016-12-29 17:11 编辑

编写属于自己的PCB设计规则检查器具有很多优点,尽管设计检查器并不那么简单,但也并非高不可攀,因为任何熟悉现有编程或脚本语言的设计人员完全能够设计检查器,这项工作的好处是不可估量的,本文介绍编写PCB设计规则检查器的技巧。
        本文阐述了一种编写PCB设计规则检查器(DRC)的系统方法。利用电路图生成工具得到PCB设计后,即可运行DRC以找到任何违反设计规则的故障。这些操作必须在后续处理开始之前完成,而且开发电路图生成工具的开发商必须提供大多数设计人员都能轻松掌握的DRC工具。
        然而,市场销售的通用工具通常不具备足够的灵活性以满足特定的设计需要。因此,客户必须将新特性需求反映给DRC工具开发 商,而这通常需要耗费一定的资金和时间,尤其当需求不断更新时。幸运的是,大多数工具开发商均可为客户提供编写属于自己的DRC以满足特定需求的便捷方 法。但是,这种具有强大功能的工具尚未得到广泛认同或使用。本文提供了利用DRC工具获取最大收益的实用指南。
        由于DRC必须遍历 PCB设计的整个电路图,包括每个符号、每个引脚、每个网路、每种属性,如有必要还能创建数目不限的“附属”文件。如4.0节所述,DRC可以标示出任何 违反设计规则的细微偏差。例如其中一个附属文件就可能包含设计用到的全部去耦电容。如果电容数低于或高于期望值,就将在可能出现电源线dv/dt问题的地 方标注红色记号[1]。这些附属文件或许必不可少,但并非任何商用DRC工具都一定能创建这些文件。
        DRC的另一优势是便于更新,以适应新设计特性(如那些可能影响设计规则的新特性)的需要。而且,一旦在该领域获得充分经验,那么还能实现许多其它功能。
        例如,如果能编写属于自己的DRC,那么就能编写属于自己的物料清单(BOM)创建工具,这样就能更好地处理特定用户需求, 如如何获取本身不属于电路图数据库一部分的器件“额外硬件”(如插座、散热装置或螺丝刀)。或者设计人员可以编写属于自己的Verilog网表分析器,该 分析器在设计环境下具有充分的灵活度,如怎样获取适用于特定器件的Verilog模型或时间文件。实际上,由于DRC遍历了整个设计电路图,因此可以收集 全部有效信息以输出PCB设计Verilog网表分析所需的仿真和/或BOM。
        在不提供任何程序代码的前提下讨论这些话题实在有些牵强,为此,我们将以一种电路图获取工具为例进行说明。本文采用了 Mentor Graphics公司开发的附属于PADS-Designer产品线的ViewDraw工具。此外,我们还采用了ViewBase工具,这是一个可被调用 并对ViewDraw数据库进行存取操作的简化C例行程序库。利用ViewBase工具,设计人员可以轻松地采用C/C++语言为ViewDraw编写完 整且高效的DRC工具[2] [3]。需要注意的是,这里讨论的基本原则同样适用于任何其它的PCB电路图工具。
输入文件
        除了电路图数据库,DRC还需要一些可以描述特定情况处理的输入文件,如自动连接到电源平面的合法电源网路名称。例如,如果 电源网路名为POWER,那么电源平面将采用后端封装设备(如适用于ViewDraw的pcbfwd)自动连接到电源平面。下面给出了输入文件列表,这些 文件必须放在固定的全局位置,这样DRC就能自动找到并读取,然后在运行时将这些信息保存在DRC内部。
* 文件legal_pwr_net_name可选,该文件包含POWER信号全部合法网路名称,如VCC、V3_3P和VDD。在PCB布局/路由工具中, 需要对名称的大小写进行区分,一般VCC并不等同于Vcc或vcc。VCC可以是5.0V的电源,而V3_3P则可以是3.3V的电源。
* 文件legal_pwr_net_name可选,因为后端封装设备的配置文件通常必须包含一组合法电源线网路名称。如果采用Cadence设计系统公司的Allegro布线工具,那么pcbfwd的文件名则为allegro.cfg并且具有如下入口参数:
接地:VSS CGND GND GROUND

电源:VCC VDD VEE V3_3P V2_5P +5V +12V
        如果DRC可以直接读取allegro.cfg文件,而非legal_pwr_net_name,那么将能得到更好的结果(即引入误差的几率较小)。
        电源线引脚通常并不外接到器件符号上,相反,该符号的一个属性(这里称为SIGNAL)描述了哪个引脚是电源引脚或接地引脚并描述引脚应当连接的网络名称。
SIGNAL = VCC:10

SIGNAL = GROUND:20
        DRC可读取该属性并确保网路名称保存在legal_pwr_net_name文件中,如果legal_pwr_net_name中不包含网路名称,那么电源引脚将不会连接到电源平面,而这个问题确实非常严重。
        一些符号必须具有外接电源线引脚,因为这些符号并不连接到常规电源线层。例如,ECL器件的VCC引脚要么连接到VCC,要么连接到GROUND;其VEE引脚则可连接到GROUND或-5.0V平面。此外,电源线引脚在到达电源线层之前也可连接到滤波器。
        引脚与滤波器之间的网路可具有任意名称,而DRC很难检测到这一点。DRC可以错误形式汇报这一点,而用户则必须将其标示出 或在legal_pwr_net_name文件中添加该网路名称。这就是我们需要类似legal_pwr_net_name文件的一个原因。最后,DRC 将读取legal_pwr_net_name,以1)找到上拉电阻,2)在设计中检查POWER网路名称的大小写,3)检测任何与POWER直接相连但尚 未使用的引脚。
* 包含GROUND信号(如GROUND、VSS和F_GND)中所有合法网路名的legal_gnd_net_name文件可以随意创建。而需要再次注意 的是,符号的大小写可能会对一些PCB布线工具产生影响。而且,如果DRC可以直接读取上述allegro.cfg文件,而非 legal_gnd_net_name文件的话,无疑可以得到更好的设计结果。
        legal_gnd_net_name不仅具有与legal_pwr_net_name相同的功能,而且DRC还可读取该文件,以1)找到下拉电阻,2)检查POWER网路名称的大小写,3)检测任何与POWER直接相连但尚未使用的引脚。
* 包含全部合法符号库路径和名称的legal_lib_path_name文件可以随意创建,这一点非常重要。例如,一个常见的严重错误是使用未授权程序库 中的符号。在PCB设计阶段,根据测试需要,通常要求创建临时器件符号并保存在本地符号库目录中。最终用到的器件符号来源于此并将保存在联合或全局的程序 库目录中,这些符号具有一些不同于本地器件符号的重要特征。设计人员通常会因为没有采用共同符号取代本地符号而引入设计错误。
        legal_lib_path_name可选,因为对于大多数电路图工具,程序库信息包含在启动工具所需的初始化文件中。 对于ViewDraw工具,该文件称为viewdraw.ini,当工具启动时,该文件就自动创建(利用脚本程序):目录 [r] /corp_lib/pcb/symbol_libraries/viewdraw/fct (fct)。
        Fct(快速CMOS技术)是ViewDraw众多子库中的一个,也是fct器件各符号的来源。如果初始化文件存在,那么DRC不仅可以而且也应当直接读取该文件,因为设计人员可以及时地添加新程序库。
* 可以创建包含合法上拉电阻的legal_pullup_res文件以检测那些被终止以及未被使用的输入引脚。通常,可以限定一组设计人员能使用的电阻,当然电阻值本身也是一个重要因素。如果上拉了未使用的输入引脚,那么该电阻的阻值将为5K或更高。
* 可以创建包含合法下拉电阻的legal_pulldown_res文件以检测那些被终止以及未被使用的输入引脚。如果下拉了未使用的输入引脚,那么阻值将会很小以阻止任何电流泄漏,从而使引脚电压高于触发阀值。
* 可以创建包含合法去耦电容的legal_decoup_cap文件,而且公司还可要求设计人员只使用特定的合格器件以满足电源线dv/dt要求。
* 可以创建一个包含器件符号全部属性的legal_comp_attr文件,如PART_NO、GEOM、REFDES和SIM_CLASS。BOAM创建工具、Verilog网表分析器及其它工具都能使用这些属性。
* 可以创建一个包含器件符号全部引脚属性的legal_pin_attr文件,如PIN_NAME、PINTYPE和PIN_NO。
设计目录结构
        运行DRC必须满足的第二个条件就是需要可被所有PCB设计共享的单独设计目录结构。没有该目录结构,DRC将难以确定如何 找到电路图数据库并存储输出文件。该架构可以极复杂的分层架构支持全部PCB设计业务,如设计规则检查、BOM创建、Verilog仿真、静态时序分析、 信号完整性分析、布线、PAL/FPGA设计(综合与仿真)及文档控制。但对于DRC本身,如果采用了ViewDraw,那么下述条件就完全充分:

        pcb_info应最少包含两个文件:design_def和design_type。design_def应包含PCB器 件(组合)数目及其它所需信息,这不仅仅对于DRC,对于其它所有工具也同样如此。design_type应当包含设计类型信息,即PCB信息。如果其它 类型的设计(如ASIC或FPGA)可以共享该设计目录结构,那么design_type将指定该目录,这样设计自动化工具将能根据不同的设计类型进行适 当的操作。如果没有pcb_info目录或该目录内容为空,这就意味着设计目录并非标准设计目录。在这种情况下,DRC应当退出并发送出错信息。
        Schem目录包含电路图数据库并可由DRC使用的ViewBase直接存取。sch子目录包含了在图表上描述符号位置的电路图文件及其它信息,wir子目录则包含设计网表分析及全部符号属性。ViewBase例程可直接存取这些内容。drc目录应存储DRC输出文件。
封装程序
        本文提出的DRC工具采用C语言和C例程ViewBase库编写,C例程ViewBase库可提供对ViewDraw电路图 数据库进行存取的便捷方法。每个例程均对一个数据项进行存取或在两个数据项之间建立联系。但DRC不能直接运行:DRC应“包装”在一个采用Perl或 UNIX命令解释语言编写的封装程序中。该封装程序具有如下形式:
* 检查如图1所示的PCB设计目录结构是否有效。

* 可以运行后端封装程序(如应用于ViewDraw的pcbfwd)。该程序可检测一些违反规则的设计缺陷(如网路名称的数目和类型特性),而这通常很难采用DRC工具检测。此外,还能赋值给那些尚未赋值的符号参考标志符特性 (如R4)。

* 检测2.0.1节中讨论的输入文件是否存在,并将其注入DRC。

* 找到PCB设计名称并将其注入DRC。

* 将其输出文件的路径和名称注入DRC。

* 建立所需的工具环境变量,如用于ViewDraw和ViewBase的WDIR。

* 调用DRC程序。

* 按需求打印帮助信息。

* 打印用户和运行时间信息。

* 执行后处理。这既可以像修正控制工具检测DRC输出文件那样简单,也可以像主动处理DRC输出文件那样复杂(如从其它数据源添加更多的信息或执行排序操 作)。C或许不是最佳的数据排序或文件分析工具,因为如果按数字顺序排列文件,采用UNIX排序命令更为简单:sort +1n source_file > sorted_file。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0