一、什么是DEVICE文件
Device是给器件提供逻辑信息的一个文件,在调入网表过程中,allegro通过device文件去获取关于器件完整的信息描述。 Device主要包含以下信息: l 封装构造(比如DIP、SIP) l 器件类型(比如 IC、DISCRETE、IO) l 封装的管脚数量 l 封装管脚的电气描述(比如逻辑使用和PIN Swap等信息) l 封装的物理功能块数量 l 各个功能与封装的映射关系 l Pin Use(即PIN使用的功能),比如输入、输出、输入输出。 l 逻辑功能与物理PIN脚的对应关系 l 电源、地管脚 l 属性定义,比如alternatesymbols功能,可以将同一器件用不同封装替代。 (比如LM124A,其内部包含4相同运放,每个运放就是一个独立的物理功能块)
DEVICE文件与网络的对应关系 Device 文件仅适用于调第三方网表的情况。网表文件主要包含各个器件的封装信息,管脚互连关系。 在网表文件中多个部分都需要DEVICE文件名: $PACKAGES部分 该部分网表格式如下: 封装名 ! DEVICE文件名 ! 器件VALUE值 ; 器件位号
该部分主要用于识别BRD中需要调入的器件。每行代表一个器件,在每个器件信息中,需要提供该器件对应的DEVICE文件(注意各个参数之间的分割符号) $FUNCTIONS部分(可选) 该部分用于定义器件的功能,网表文件中若存在该部分,那么必须在这儿提供完整的DEVICE文件名。一般情况我们调网表可以省略。
二、DEVICE 文件包含信息说明
Device 文件由多行数据来记录器件的逻辑信息。每一行包含一个关键词,后面紧跟一个或多个数据字段。一个关键词就是描述器件的一个属性。各个字段主要提供关于该属性的值。 DEVICE文件完整格式如下:
(comment line) PACKAGE <matching_package_symbol_name> CLASS <type> PINCOUNT <number_of_pins> PINORDER <function_type> <list_of_pin_name> PINUSE <function_type><list_of_pin_use_codes> PINSWAP <function_type> <list_of_pin_names> FUNCTION <slot_name> <function_type><list_of_pin_numbers> POWER <net_name> ; <list_of_pin_numbers> GROUND <net_name> ; <list_of_pin_numbers> NC ; <list_of_pin_numbers> PACKAGEPROP <property_type> <property_value> END
各参数说明如下: (comment line):注释部分,无意义。括号中的内容可以任意字符,一般可写成封装名。 PACKAGE:该DEVICE对应的封装。 CLASS: 对应的器件类型,共三种:IC(一般为有源器件);IO(一般指接口器件);DISCRETE(无源器件,比如电阻电容) PINCOUNT:该器件具有的PIN数量。 PINORDER:该部分用于描述单个独立的功能块,可结合后面的PINUSE、PINSWAP、FUNCTION来详细描述该功能块;<function_type>是功能块的名称,<list_of_pin_name>是各个功能块对应的管脚名,比SCLK、SDATA。顺序需与后面的PINUSE、FUNCTION所对应。 PINUSE:各个功能块对应PIN的逻辑功能,比如IN(输入)、OUTPUT(输出)、BIDIRECTIONAL(输入输出)、TRI(三态)。 PINSWAP:各个功能块内部对应PIN之间的互换关系。<function_type>为功能块的名称,需要与PINORDER所定义的对应。<list_of_pin_names>该功能块可互换的管脚名。 FUNCTION:各个功能块的PIN NAME与PIN NUMBER的对应关系。<slot_name>为功能块下的单个模块名,名字可为任意字符串;<function_type>需与PINORDER所对应;<list_of_pin_numbers>为PIN NUMBER,与前面PINORDER的PIN NAME顺序对应。 POWER:描述器件的及电源网络及对应的电源管脚。<net_name>为电源的网络名;<list_of_pin_numbers>为电源所对应的PIN NUMBER GROUND:描述器件的地网络及地管脚。与POWER功能一样 NC:描述了器件未使用的管脚,即不包含任何功能的管脚。 PACKAGEPROP:用于指定器件的某些属性,比如VALUE值、可替换的封装、高度信息等等。 <property_type>为属性名,共有以下几种类型: 1) DEVICE_LABEL 目前已经不再适用 2) VALUE 器件VALUE值,比如”sn74ls00” 3) PART_NUMBER 不适用于PCB EDITOR,因此PCB设计中用处不大 4) INSERTION_CODE 自动插件零件分类码,常用于将器件自动分类 5) TERMINATOR_PACK 不适用于PCB EDITOR,因此PCB设计中用处不大 6) HEIGHT 记录器件高度信息 7) ALT_SYMBOLS 设计过程中,通过该属性可以指定一个替代的封装。其基本格式如下: PACKAGEPROP ALT_SYMBOLS'(Subclass:Symbol,...;Subclass:Symbol,...)' 注意每个Subclass直接需要用分号隔开。 Subclass:代表所在层可替换的封装,可以设置为TOP或者BOTTOM层。可省略Subclass,省略后,默认是表底层都可使用替换封装。比如当前设置Subclass为TOP(也可用T),那么当前封装只有在表层时,才能使用替代的封装。 Symbol:为allegro的封装名,指定与当前封装替换的封装名。 例如:当前板上有C0402的封装,我们需要使用C0402-BGA与之替换,且只有器件在底层时才可以替换,那么C0402封装DEVICE中的ALT_SYMBOLS可设置如下:
PACKAGEPROP ALT_SYMBOLS '(B:C0402,C0402-BGA)'
如果忽略层面的话,可直接设置如下:
PACKAGEPROP ALT_SYMBOLS '(C0402,C0402-BGA)'
例如:当前板上有SOP16的封装,我们需要使用DIP16或者QFN16与之替换,且只有器件在表层时可使用DIP16和QFN16;底层只能使用QFN16替换,那么SOP16封装DEVICE中的ALT_SYMBOLS可设置如下:
PACKAGEPROP ALT_SYMBOLS '(T: SOP16, DIP16,QFN16;B:SOP16, QFN16)'
注:当我们只需要将C0402替换为C0402-BGA时,只需要在C0402的DEVICE里面添加ALT_SYMBOLS属性即可,不需要在C0402-BGA中添加ALT_SYMBOLS属性。有时导出的库里面有很多同样的DEVICE,比如c0402__1.txt、c0402__2.txt等等,我们可以直接删除,只打开原始的c0402.txt,将其中的PACKAGEPROP VALUE参数删除(即该DEVICE可对应所有VALUE值的封装),再添加ALT_SYMBOLS属性就可以赋给所有c0402封装。 END:DEVICE文件结束。
三、DEVICE文件使用举例
下面以一个SN74LS00为例,说明DEVICE与封装的对应关系。 74LS00为2输入4通道与非门逻辑器件。内部包含四个相同的功能模块。每个功能块有两个输入脚,一个输出脚。如下图所示:
以上DEVICE文件描述了74ls00的基本信息。共有四个功能块(G1 G2 G3G4),每个功能块有三个引脚。分别对应为A B Y,其中A B为输入,Y为输出。1、4、10、13脚为每个模块的A输入,2、5、9、12为每个模块的B输入,3、6、8、11为每个模块的Y输出。每个模块可以在A、B之间互相交换。
注:当器件内部有多个不同的功能块(FUNCTION)时,其DEVICE文件中需要单独定义每个功能块,定义方法与上面的类似。
例如排阻,一般内部有四个电阻组成,现在我们需要定义其单个电阻的两个脚可以互换,且四个电阻间也能够互换,其DEVICE文件内容如下:
当使用命令swap pins(菜单Place à Swap à Pins执行)时,点击排阻的单个引脚,只能在其单个电阻内部交换网络。当使用swap functions(菜单Place à Swap à Functions执行)时,点击排阻的单个PIN,可直接将排阻内部电阻与其余几个电阻交换。
在PCB设计中,可适当利用好DEVICE文件,提升设计效率。除了以上提到过的功能外,还可以充分运用DEVICE创建更多的功能,比如FPGA的各个BANK之间的SWAP属性、替代封装、交换网络等等。
|