Allegro DEVICE文件详解-原创
一、什么是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 NUMBERGROUND:描述器件的地网络及地管脚。与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属性、替代封装、交换网络等等。
很详细很详细的解释
谢谢分享辛苦了 :) 很好很实用 感谢分享!!!!! 本帖最后由 hui10152010 于 2014-11-7 18:42 编辑
你好,我感觉ALT_SYMBOLS属性属性不起作用
我的device如下:
(DEVICE FILE: CAP_CHIP)
PACKAGE 0805
CLASS IC
PINCOUNT 2
PINORDER CAP_CHIP 1 2
FUNCTION F1 CAP_CHIP 1 2
PACKAGEPROP ALT_SYMBOLS '(0402,0603,0805)'
END
网表入下:
$PACKAGES
0402 ! 'CAP_CHIP' ; C1
$A_PROPERTIES
VOLTAGE 50V ; C1
$FUNCTIONS
'CAP_CHIP' ! 'CAP_CHIP' ; F1
$NETS
2N515 ; C1:F1.1 C1:F1.2
$SCHEDULE
$END
但是导入出现如下错误:
****ERROR: Refdes C1 target for function F1 device CAP_CHIP
: is found in a differing device CAP_CHIP.
NO ASSIGNMENT OCCURRED
****ERROR: Refdes C1 target for function F1 device CAP_CHIP
: is found in a differing device CAP_CHIP.
NO ASSIGNMENT OCCURRED
我主要是就是想要一个device有多个封装对应
谢谢 感谢分享!!!!!:lol 谢谢楼主的分享,学习一下。 感謝分享 收益良多 学习了,谢谢分享! 32个{:soso_e179:} 学习了,感谢分享
页:
[1]
2