Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 34982|回复: 17

[教程] Allegro DEVICE文件详解-原创

[复制链接]
发表于 2014-2-18 20:44:07 | 显示全部楼层 |阅读模式
一、什么是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 ; 器件位号
image001.png
该部分主要用于识别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封装。
ENDDEVICE文件结束。

三、DEVICE文件使用举例

下面以一个SN74LS00为例,说明DEVICE与封装的对应关系。
74LS002输入4通道与非门逻辑器件。内部包含四个相同的功能模块。每个功能块有两个输入脚,一个输出脚。如下图所示:
image003.png

image005.png

以上DEVICE文件描述了74ls00的基本信息。共有四个功能块(G1 G2 G3G4),每个功能块有三个引脚。分别对应为A B Y,其中A B为输入,Y为输出。141013脚为每个模块的A输入,25912为每个模块的B输入,36811为每个模块的Y输出。每个模块可以在AB之间互相交换。

注:当器件内部有多个不同的功能块(FUNCTION)时,其DEVICE文件中需要单独定义每个功能块,定义方法与上面的类似。

例如排阻,一般内部有四个电阻组成,现在我们需要定义其单个电阻的两个脚可以互换,且四个电阻间也能够互换,其DEVICE文件内容如下:

image007.png
当使用命令swap pins(菜单Place à Swap à Pins执行)时,点击排阻的单个引脚,只能在其单个电阻内部交换网络。当使用swap functions(菜单Place à Swap à Functions执行)时,点击排阻的单个PIN,可直接将排阻内部电阻与其余几个电阻交换。
image009.png       image011.png

在PCB设计中,可适当利用好DEVICE文件,提升设计效率。除了以上提到过的功能外,还可以充分运用DEVICE创建更多的功能,比如FPGA的各个BANK之间的SWAP属性、替代封装、交换网络等等。


发表于 2014-3-12 14:32:48 | 显示全部楼层
很详细很详细的解释
谢谢分享  辛苦了
发表于 2014-3-12 18:59:07 | 显示全部楼层
很好很实用 感谢分享!!!!!
发表于 2014-11-7 18:35:52 | 显示全部楼层
本帖最后由 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有多个封装对应

谢谢

test.rar

9.95 KB, 下载次数: 4, 下载积分: 贡献 1

测试文件

发表于 2015-1-15 22:36:45 | 显示全部楼层
谢谢楼主的分享,学习一下。
发表于 2015-5-10 13:33:48 | 显示全部楼层
感謝分享 收益良多
发表于 2015-5-29 10:49:20 | 显示全部楼层
学习了,谢谢分享!
发表于 2015-6-2 15:55:10 | 显示全部楼层
32个{:soso_e179:}
发表于 2015-8-12 17:09:55 | 显示全部楼层
学习了,感谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-4-18 14:51 , Processed in 0.173640 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表