allegro的二次开发
Cadence应用如何在allegro中使用skill
Cadence应⽤如何在allegro中使⽤skillCadence软件应⽤:如何在Allegro中执⾏SkillHow to Perform Skills in Allegro ToolsDoc Scope : Allegro SkillDoc Number : SFTEC11005Author : Daniel ZhongCreate Date : 2011-11-09Rev : 1.00⽬录1Skill简介 (3)2在Allegro命令⾏中加载和调⽤Skill (3)2.1命令⾏加载Skill (3)2.2命令⾏调⽤Skill (4)3在Allegro启动时加载Skill (5)3.1allegro.ilinit⽂件 (5)3.2编辑allegro.ilinit (7)4在Allegro菜单栏上调⽤Skill (8)4.1Allegro系列⼯具的菜单⽂件(.men) (8)4.2菜单⽂件搜索路径 (10)4.3定制菜单 (11)1Skill简介Skill是Allegro软件⼆次开发的接⼝,⽤此语⾔编译的⽂件可以在Allegro中载⼊和调⽤。
我们可以通过编写不同的Skill程序⽂件,在Allegro⼯具中实现各种原有命令不能实现或不⽅便实现的功能。
Skill语⾔的语法结构和C++语⾔类似,⼯程师如果有⼀定C语⾔编程基础,使⽤Skill语⾔时就会很⽅便了。
对于Skill程序的⽤户,不需要对Skill语⾔有过多的了解,只需要知道如何在Allegro中加载和调⽤Skill即可,本⽂就是介绍了如何加载和调⽤Skill,可以采⽤两种⽅式:■在Allegro命令⾏中加载和调⽤■在Allegro启动⾃动加载,在Allegro菜单上调⽤2在Allegro命令⾏中加载和调⽤Skill本章介绍如何在Allegro命令⾏中加载和调⽤Skill,分为以下两个⼩节:■命令⾏加载Skill■命令⾏调⽤Skill2.1命令⾏加载Skill以本站资源下载中的⼀个skill程序clinecut.il为例,将此⽂件移动或复制allegro设计⽂件(.brd)所在⽬录。
Allegro模块复用的详细步骤
Module reuse1.在orcad中画好模块的原理图,设定好封装,做好drc,做好元件编号。
2.在annotate-->allegro reuse中,选中generate reuse module, renumberdesign for using modules,在选中unconditional之后将renumber design for using modules前的钩取消(即取消选择),其它不选。
3.生成netlist.4.将netlist导入到allegro,布线,布局,PCB如果没有rename等需要与orcad进行back Annotate的交互动作,则可直接选tools-->create modules生成mdd文件;5.mdd文件的文件名一定要定义为:DSN NAME_ROOTSCHEMATIC NAME.mdd。
DSN NAME是orcad中的dsn文件名(如上图的),ROOT SCHEMATIC NAME是这个文件中的原理图页所在的文件夹的名字(如上图所示的)。
注意:如果这里定义不对,那么reuse时就无法找到mdd文件。
定义好的mdd文件如下图所示:6.对PCB进行网络导出,然后在orcad中back annotate如下所示;(1)如图1所示图1(2)选择网表导出的路径,如图2所示(3)打开模块PCB所对应的原理图(并且此原理图必须是导出网络到此模块PCB的原理图)对原理图进行back Annotate 操作,如下图所示1)将TO.DSN项目高亮显示2)选择Tools-back Annotate,选择Allegro页面,勾选上Generate Feedback fil;Allegro PCB Editor的路径选择模块PCB所在的路径;Netlist路径选择刚刚模块PCB导出的网表所在的文件夹即可,Output保持不变,在Back Annotation 中勾选上Update Schematic;(如下图所示)点击确定完成PCB反编回原理图。
Cadence PCB教程(Allegro)
Cadence软件教程(二)(Allegro基础教程)仅供内部学习使用PCB Allegro软件启动如左图示,单击PCB Editor,弹出右下图对话框,作图示选择设置。
3Allegro界面4Allegro界面介绍Allegro软件界面除主菜单,功能图标,主窗口外,还有五个子窗口Command,World View,Options,Find,Visibility。
当鼠标靠近功能图标时,会显示英文功能注释。
Options:当前命令参数;Find:操作对象选项;Visibility:可视层开关;7Visibility层开关在Visibility窗口,Views的下拉菜单中有Gerber参数设置,结合Etch,Via,Pin,可快速显示每层数据信息。
GTA,GBA:装配层;(A ssembly)GTL,GP1,GP2,GBL:电气层;GTO,GBO:丝印层;(O verlayer)GTS,GBS:阻焊层;(S oldermask)GTP,GBP:钢网层;(P astemask)GD1:钻孔层;(D rawing)GM1:拼板外形;(M echanical)如:GTO + TOP(All):TOP层信息。
Views下拉菜单中的view文件是怎么来的?8Display\Color设置层及网络颜色,控制所有层的开关;9由原理图导出网表在ORCAD中打开*.dsn格式原理图(原理图是由电路设计师提供,要求调用标准CIS库设计),依如下图示导出网表,网表默认存放在allegro文件夹中。
10在Allegro中导入网表在成功导出网表后,接下来就是在allegro中导入网表。
打开该*.brd文件,依如下图示操作。
11画PCB外形用线宽为0.1mm的2D Line线在Board Geometry\Outline层绘制。
点图一所示图标,或菜单Add\Line,同时Options作图二示设置,在主窗口点左键绘制(坐标点不好控制),或在Command窗口输入坐标。
allegro 技巧
allegro 技巧Allegro 技巧Allegro 是一个流行的开源软件库,用于在音频和视频应用中实现实时流处理。
它提供了一套丰富的工具和功能,使开发者能够轻松地创建高性能的音频和视频处理应用程序。
在本文中,我们将探讨一些使用 Allegro 的技巧,以帮助您更好地利用这个强大的库。
一个重要的技巧是使用 Allegro 的资源管理系统。
在开发过程中,我们经常需要加载和卸载各种资源,例如图片、音频和字体文件。
使用 Allegro 的资源管理系统,我们可以方便地统一管理这些资源,避免内存泄漏和资源浪费。
通过使用 Allegro 提供的函数,我们可以通过文件名加载资源,并在不再需要时进行释放。
这样,我们就可以更好地管理我们的资源,并确保程序的性能和稳定性。
另一个重要的技巧是使用 Allegro 的位图操作功能。
在许多图形应用中,我们需要对位图进行各种操作,例如缩放、旋转和裁剪。
Allegro 提供了一套强大的位图操作函数,可以方便地实现这些操作。
例如,我们可以使用 Allegro 的函数来缩放一个位图,使其适应不同的屏幕分辨率。
此外,我们还可以使用 Allegro 的函数来旋转一个位图,以实现一些特殊效果。
通过充分利用 Allegro 的位图操作功能,我们可以轻松地实现各种复杂的图形效果,提升我们应用程序的用户体验。
使用 Allegro 还可以方便地处理用户输入。
在许多应用程序中,我们需要响应用户的各种输入事件,例如鼠标点击和键盘按键。
Allegro 提供了一套简单易用的输入处理函数,可以方便地获取和处理用户的输入。
例如,我们可以使用 Allegro 提供的函数来检测用户是否按下了某个键,以及鼠标是否在某个区域内被点击。
通过使用 Allegro 提供的输入处理函数,我们可以实现用户友好的交互界面,并提供更好的用户体验。
另一个重要的技巧是使用 Allegro 的音频处理功能。
在许多音频应用中,我们需要对音频文件进行播放、录制和处理。
Allegro 的一些实用操作技巧
Allegro的一些实用操作技巧生成并导入常用的参数设置文件在设计过程中生成自己习惯的参数设置文件会大大提高效率。
首先,设置好自己习惯的color,design,parameter和artwork等选项卡,然后点击File --> Export --> Parameters 将所有设置导出,保存为.prm 文件。
之后在下一次设计时便可以使用File --> Import --> Parameters 的操作将保存的.prm 文件导入,将参数设置为自定义的。
设置常用布局的布局模式复用在应用大型复杂的工程中,有些布局需要多次复用,采用这种方法可以极大程度的减少冗余操作。
首先完成一组需要布局的元件的布局设计选择Placement edit ,选中布局好的一组元件,点击place replicate create,右键done , 再选择原点(pick origin , 一般左键点击空白处即可),便可生成.mdd 文件保存。
选择需要进行重复布局的未布局元件,点击place replicate apply ,便可以看到已保存的布局设置,直接应用即可快速布局。
allegro 丝印对齐_Cadence Allegro 17.2高级功能- Label Tune 批量字符对齐功能在Allegro17.2的版本里面有个AllegroProductivity Toolbox可选高级组件,勾选该复选框可以使能高级组件所带来的众多高级命令。
直接选择Allegro Enterprise PCB Designer Suite,这个功能比较全AllegroProductivity Toolbox组件所带来了很多高级命令,今天我们一起学的Label Tune就是其中一个。
Label Tune是用来做批量的元件字符对齐操作的命令,可以支持对丝印、显示、装配层的字符对齐操作。
我们知道PCB设计里面,丝印可以给贴片和识图的工程师提供一个位置参考,可以让工程师能够快速的找到元件在PCB上的位置。
电子设计开发平台PADS2Allegro切换方案
电子设计开发平台PADS2Allegro切换方案推荐设计平台:Cadence Allegro电子产品设计开发平台推荐产品类型:原理图设计+ 原理图功能仿真+高速PCB设计平台切换前提:见1.1详细说明电子设计平台切换方案概要1.1 设计平台切换方案软件要求软件要求:PADS Logic原理图工具DxDesigner原理图工具PADS Layout布局布线工具Cadence Design Entry CIS原理图工具Cadence Allegro PCB Designer布局布线工具1.2 原理图切换方案PADS Logic原理图可以通过EDIF格式的原理图数据,直接导入Cadence Design Entry CIS 原理图环境中,可以实现PADS Logic原理图向Design Entry CIS原理图的数据切换,其具体过程如下所述。
(1)PADS Logic环境中设计原理图(2)DxDesigner环境中导入PADS Logic原理图数据执行File/Import/PADS命令,在Symbol &Schematic Translators: PADS Logic to DxDesignerNetlist对话框中,设置转换参数即可将PADS Logic设计的原理图*.sch文件,转换为DxDesigner原理图。
其中转换窗口中的设置如下:Schematics——设置需要转换的PADS Logic原理图设计;Libraries——设置器件库;Mapping——设置PADS Logic环境中符号属性与DxDesigner环境中符号属性的对应关系。
(3)DxDesigner原理图导出EDIF原理图在DxDesigner环境中执行File/Export/EDIF Schematic命令,将DxDesigner原理图导出EDIF格式原理图数据*.eds。
(4)Design Entry CIS环境导入EDIF原理图在Cadence Design Entry CIS原理图设计环境中,执行File/Import Design命令,在弹出的Import Design窗口中,选择需要切换的原理图数据*.eds文件,如下图所示:其中Import Design转换设置如下:Open——需要转换的原理图EDIF格式数据;Save As——指定EDIF原理图切换至Design Entry CIS原理图的设置;Configuration——选择原理图切换进程的配置文件EDI2CAP.CFG。
allegro模块复用的详细步骤
allegro模块复用的详细步骤哎呀,咱今儿个就来唠唠这个 allegro 模块复用的详细步骤哈!这可真是个有意思的事儿呢!你想想看,就好像搭积木一样,咱有了一些已经搭好的模块,现在要把它们巧妙地组合起来,变成一个更厉害的大玩意儿。
首先呢,你得清楚自己有哪些模块可以用,这就像是整理你的玩具箱,知道每个玩具都长啥样,有啥特点。
然后呢,你得仔细研究这些模块,搞明白它们的接口呀、功能呀这些关键的地方。
接下来,就可以开始动手啦!把那些合适的模块挑出来,就像挑出你最喜欢的积木块一样。
然后呢,把它们按照一定的规则拼接在一起。
这可不是随便拼拼就行的哟,得考虑好各种因素,比如说兼容性啦、稳定性啦。
在这个过程中,可别马虎大意呀!要像对待宝贝一样细心地处理每个模块。
比如说,有些模块可能需要一些小调整,就像给积木块修修边儿,让它们能更好地契合在一起。
然后呢,还得测试一下你拼好的这个东西能不能正常工作。
这就好比你搭好了一个积木城堡,得推一推,看看会不会倒。
如果有问题,那就得赶紧回去找原因,重新调整模块。
再然后呀,就是不断地优化和完善啦!让这个复用的模块组合变得越来越厉害,越来越好用。
就像给你的积木城堡加上各种装饰,让它变得更加漂亮和独特。
你说这是不是很有趣呢?通过这种模块复用的方式,咱能省好多事儿呢,不用每次都从头开始搭建。
这就像你有了一套万能工具,啥时候想用就拿出来用,多方便呀!总之呢,allegro 模块复用可不是一件简单的事儿,但只要你认真对待,一步一步来,肯定能把它做好。
加油吧,小伙伴们!让我们一起在这个神奇的技术世界里畅游,创造出更多精彩的东西来!。
allegro skill 干货1-制作焊接丝印图
allegro skill 干货1-制作焊接丝印图1.Allegro skill 提供了PCB editor 二次开发的可能,它可以使某些繁琐的操作自动化,简单化,例如,在某些情况下我们需要手工焊接时,需要对照原理图,丝印图一一去找器件,这样既浪费了很多时间,同时还导致手工焊接出错。
2.本文讲到方法是,通过写一个skill 脚本的方法,可以使电阻或者电容的值直接标注在相应器件的丝印上,这样可以非常直观的进行焊接。
类似下面这张图一样,是不是非常容易查找到对应的阻容进行焊接。
3.开始讲解实现的过程。
贴上一段代码。
首先注册一个函数,就是allegro加载skill脚本时的名称,脚本可以设置打开allegro时加载,也可以设置成手工加载,后面会详细说明。
下文中黄色高亮的事注释部分,commen Lisp中注释使用;开头。
;申请一个函数axlCmdRegister("AutoHandSilk",'AutoHandSilk);实现这个函数;定义函数为AutoHandSilk,与上文申请的函数名称一致defun(AutoHandSilk ();关闭所有class和subclassaxlVisibleDesign(nil);打开BOARD GEOMETRY/OUTLINE层等等,为后面选中做准备,这里为什么打开; DEVICE TYPE/ASSEMBLY_TOP层呢,是因为只有这个层会有阻容值得信息,例如这;样R_R0603_2.2KaxlVisibleLayer("BOARD GEOMETRY/OUTLINE" t);axlVisibleLayer("PIN/TOP" t)axlVisibleLayer("DEVICE TYPE/ASSEMBLY_TOP" t)axlVisibleLayer("PACKAGE GEOMETRY/PLACE_BOUND_TOP" t);过滤选中的关键字,这里过滤的是textaxlSetFindFilter(?enabled list("noall" "text")?onButtons list("noall" "text"));选中页面上以上显示层的text,这个和实际在allegro环境中框选一样axlAddSelectAll();将选中的text信息赋值给对象allall = axlGetSelSet();去除显示,相当于去除高亮axlClearSelSet();这里是打印一条logaxlMsgPut("DEVICE TYPE/Assy place started.");这里是skill语言也就是commen Lisp语言的for循环foreach(i all;将text值取出来赋值给变量texttext = i ->text;下面这句相当于split字符串的功能,就是把类似R_R0603_2.2K的字符串;中有用的信息2.2K取出来text_list = parseString(text,"_")text=car(last(text_list));去阻容丝印等的原点坐标,注意丝印的原点坐标不是字的正中心,是字底;部的中心xy = i ->xy;取当前丝印的旋转角度txt_rot = round(i ->rotation);将180度都统一用0度表示,90度的统一用270表示cond((txt_rot == 180, txt_rot = 0)(txt_rot == 90, txt_rot = 270));这里是对每个丝印进行具体处理了,下面就是把丝印放在什么位置呢,;这里的方法是取place_bound_top层的长方形算中心foreach(childid, i ->parent ->childrenwhen(childid ->layer == "PACKAGE GEOMETRY/PLACE_BOUND_TOP" || childid ->layer == "PACKAGE GEOMETRY/PLACE_BOUND_BOTTOM"sym_x = (xCoord(car(childid ->bBox)) + xCoord(cadr(childid ->bBox))) / 2.0sym_y = (yCoord(car(childid ->bBox)) + yCoord(cadr(childid ->bBox))) / 2.0));前面说过丝印的xy并不是字的正中心,所以这里算出偏移量并根据具体;情况加或者减halfT extHeight = axlGetParam(sprintf(nil, "paramTextBlock:%d", 1)) ->height / 2.0case(txt_rot( 0, sym_y = sym_y - halfT extHeight)( 90, sym_x = sym_x + halfT extHeight)(180, sym_y = sym_y + halfTextHeight)(270, sym_x = sym_x - halfTextHeight));这里的xy才是要把丝印最终放置的位置xy = list(sym_x, sym_y);定义要创建文字的属性,字体默认使用1号了,使用者可以根据实际情况修;改合适的字体,然后再使用此脚本textOrientation = make_axlT extOrientation( ?textBlock "1", ?rotation txt_rot, ?mirrored i ->isMirrored, ?justify "CENTER");下面是注释掉的语句,实现的是直接在assemble_top上创建丝印,并删除;掉旧的丝印,实际上就是相当于移动丝印。
Allegroskill基本语法
2.对第1步读取的值,执行car,读取其第一元素。
3.对第2步读取的值,执行car,读取其第一元素。
实例:caaar('(((1 2 3)(4 5 6))(7 8 9))) => 1等同于car( car( car( l_list)))
caadr('(((1 2 3)(4 5 6))(7 8 9))) => 7等同于car( car( cdr( l_list)))
let( ()
println("Hello World!")
)
); end procedure
1.1.4
SKILL支持2种注释方式:
a. /*…*/用于注释多行,像C一样
b. ;用于注释单行,类似C的//
1.1.5
integer5
float5.0
string"abc defg"
list'(1 2 3 "a")
1.1 SKILL
SKILL是用于Cadence软件二次开发的语言。我们关于SKILL的介绍基于SKILL语言参考档和llegro SKILL的应用。
1.1.1
SKILL语法支持lisp格式的语法,但是我们不推荐,推荐类C的语法格式。
Lisp示例:(max 5 3) => 5
C示例:max(5 3) => 5
第一个位置保存List的首个数据元素,第二个位置保存后面的List单元(除第一个元素之外的所有元素组成的表),它可以为空数据。
用car函数可以得到保存在第一个位置的List元素:car( aList) => 2
用cdr函数可以得到保存在第二个位置的List单元:cdr( aList) => (3 4) List
allegro二次开发语法大全
allegro skill简介1. AXL-SKILL专用于allegro的skill被称为AXL-SKILL,只有使用这些专用的函数才可以直接访问allegro的database。
结合skill语法和这些专用函数可以编写出实现各种功能的命令。
专用于allegro的skill都是以axl开头,比如axlClearSelSet()。
2. 运行AXL-SKILL在allegro中输入skill就得到了AXL-SKILL的运行环境,在这样的环境中可以直接调用AXL-SKILL命令/函数,另外输入set telskill可以得到一个尺寸大小可调的skill开发窗口。
(万一没有弹出窗口,尝试在allegro菜单里面,选择setup->user prference->skill->telskill----OK)3. AXL-SKILL Databaseallegro中的每个对象object(比如IC元件,net)都有一个对应的dbid(database identifiers),AXL-SKILL操作allegro的也正是这些dbid。
dbid对象:在不同的级别上的dbid是不一样的,比如在Design以及包含的database对象有Property Dictionary,Lines,Text,Polygons,Shapes,Property Definitions,DRCs,Vias that are Padstack object types,Symbols that are Symdef object types,Components,Nets;而在Symbol级别上则是PPins that are Padstack object types,Vias that are Padstack object types,Lines,Arcs,Text,Polygons,Shapes。
allegro skill database对象类型1. database对象描述1.1 对象类型 Figure objects: Arcs,Branches ,Design Files,Drcs,Lines,Paths ,Polygons ,Ppins,Shapes ,Symbols ,Tees,Vias,Pads,Padstacks,Symdefs; Logical objects:Components ,Functions,Function Pins,Nets; Property dictionary objects; Parameter objects:Design,Display,Layer Group,Layer,Textblock Group,Textblock。
Allegro skill基本语法
1.1 SKILL 语言简介SKILL 是用于Cadence 软件二次开发的语言。
我们关于SKILL 的介绍基于SKILL 语言参考档和Allegro SKILL的应用。
1.1.1 语法格式SKILL语法支持lisp 格式的语法,但是我们不推荐,推荐类C 的语法格式。
Lisp示例:(max 5 3) => 5C 示例:max(5 3) => 5Max是求最大值的函数,lisp 格式的不便阅读。
1.1.2 简单的SKILL 运行环境Allegro 的SKILL 运行环境:在Allegro 的命令窗口输入set telskill 窗口就可以用来运行就可以打开一个新的窗口,这个SKILL 命令。
窗口的大小可以手动调节。
1.1.3 Load Skill可以直接在SKILL development里面运行SKILL,可以把写好的代码放load命令一次性装载。
在说明load 之前,先说一下getSkillPath和setSkillPath 这2 个函数。
因为load 要找到SKILL 来装载,通常我们都不喜欢通过绝对路径来装载一个文件,因为那样包含的字符太多了。
文件getSkillPath() 将得到当前Allegro 设置的SKILL 加载路径,而setSkillPath 用来指定加载路径。
目前先不用考虑这个setSkillPath。
我的Allegro当前默认的SKILL 路径是Allegro 的工作路径和C:\home\pcbenv\skill这样我先把hello.il文件放在C:\home\pcbenv\skill\函数。
下面,下一步来加载这个文件,然后运行定义的函数Hello.il的源代码:procedure( hello()let( ()println("Hello World!"))) ; end procedure1.1.4 注释SKILL支持2种注释方式:a. /* … */ 用于注释多行,像C一样b. ; 用于注释单行,类似C 的//1.1.5 基本的数据类型integer 5float 5.0string "abc defg"list '(1 2 3 "a")boolen t/nil1.1.6 变量SKILL的变量定义比较随便,不需要指定其类型,赋什么类型的值就是什么类型。
allegro模块复用
复用流程:1.将需要复用的原理图单独做一个工程,注意下面的工程项目名和单元模块名,PCB中的模块封装名命名方式为工程项目名_单元模块名(testboard_power.mdd)如下图画好模块原理图后给各元器件加上相关PCB封装,加上port( place→port),port 当然就是跟其它电路连接的接口.记住该模块所有与外部接线的地方都要这样处理,就像留出芯片的引脚一样用PORT 连接,这里还要注意模块引进的电源也要这样表示2.产生原理图的resume module.tools→annotate勾选Generate Reuse module,点击OK,产生单元模块3.产生网表,4.在PCB中导入网表,做好布局5.生成Module框选全部器件,再单击,保存。
模块封装名命名方式为工程项目名_单元模块名(testboard_power.mdd) 6.PCB需要设置模块库路径手动放置模块7.原理图中调用模块8.原理图调用完模块后需要重排位号9.最后生成网表。
做reuse时的几个注意事项:1:当reuse模块已经放在电路中使用,重新修改reuse模块的port口后,在使用的原理中右击这个模块,选synchronize up,则实现修改的同步。
2:在reuse模块中,不能使用room属性,不然可能与使用reuse的电路图混淆。
3: reuse模块中不能使用全局变量,特别是电源和地,使用port口传递数据。
4: reuse模块内部修改后,只要port口没有变,则在使用它的原理图不用同步。
5: 做好的模块文件用在pcb中后,若需要修改这部分文件,在修改完成后,在原pcb中使用update symbol功能,选相应的moddle,之后更新就行了,注意生成mdd文件时,原点的选择,这然更新后一些线会错位。
6:当导入到allegro的模块出现dummy net的错误时,怎么办?出错的可能原因是由于模块的orcad文件造成的,可能是对原始的orcad取一部分进行修改,这些元件带有原来文件的一些属性。
浅谈Cadence电路板设计、EDA软件二次开发在PCB设计中应用(一)
Function:功能。
Nets:网络。
Pins:引脚。
Via:过孔。
Cline:具有电气属性的线段。
Lines:没有电气属性的线段。如元器件的丝印,外
框等。
Shape:形状。
Voids:任意多变形的挖空部分。
Cline segs:部分 Cline 线段。
Other segs:Line 中的部分线段。
图 16 Views:将目前的层面颜色存储为 View 文件,随后 就可在“Views”下拉菜单中选取该 View 文件,系统会 自动调整其层面颜色。 Conductors:针对所有的布线层做开与关。 Plane:针对所有的电源 / 地层做开与关。 Etch:布线。 Via:过孔。 Pin:元器件的引脚。 Drc:错误标志。 All:所有的层面及标志。 4) 工作区:创建、编辑 PCB 的工作区域。 5) 整体视窗:可以看到整个 PCB 的轮廓,在整体 视窗上单击鼠标右键弹出一个菜单,如图 17 所示。
图 17 6) 状态栏:显示正在执行命令的名称、光标的位置, Cmd 有 3 种状态。 绿色:动作正常状态。 红色:命令执行状态。 黄色:命令执行状态,但可以通过单击下面的“Stop” 按钮或按“Ese”键退出、旁边显示当前执行的命令, “Move”命令。如果当前有命令执行,单击“P”按钮, 会出现“Pick”对话枢。
【关键词】EDA;Cadence;Skill;规范
第一章:Allegro 的属性设置
1 ALLEGEO 界面介绍
在经行 PCB 设计时,主要用到 PCB Edtior 和 Pad designer 两个程序。
A)PCB Edtior:PCB 设计和元器件封装设计。 B)Pad Designer:创建和编辑焊盘,包括设计焊盘 参数、创建通孔、盲孔、埋孔和过孔焊盘。 下面对 PCB Edtior 界面经行介绍。 执 行 菜 单 命 令“Allegro Spb16.6” ——“PCB Edtior”,弹出窗口对话框,如图 1 所示。 其中 Allegro PCB Design GXL 功能最强大,可以 选择“Design Partition ”和“RF PCB”选项,其他产 品不具有这两个功能。 C)“Design Partition ”功能允许多个 PCB 设计者 同时在一个 PCB 设计平台上,设计可以被分配成多个
Allegro软件基于Form格式的框架开发
A l l e gr o 软件基于F o r m 格式的框架开发*付深圳1,2,刘涛1,2,张柱1,2(1.高效能服务器和存储技术国家重点实验室,济南250014;2.浪潮电子信息产业股份有限公司)*基金项目:山东省自然科学基金智慧计算联合基金(Z R 2019L Z H 006)㊂摘要:在E D A 设计领域,C a d e n c e 作为最大电子设计自动化供应商,旗下的A l l e gr o 软件是业界知名的P C B 设计软件,提供了丰富的二次开发接口和完善的开发语言㊂本文主要是基于A l l e gr o 软件的S k i l l 语言二次开发,开发带有F o r m 格式的编程框架,工程师使用该框架开发的工具能够通过U I 界面实现人机交互,另外,工程师在改变A l l e gr o 内部D a t a -b a s e 时,能够对操作进行回滚㊁取消㊁完成等,方便工程师快速操作㊂该框架为二次开发者提供一种高效的编程思想,提高了开发效率和质量㊂关键词:S k i l l 语言;P C B 设计;E D A 设计;A l l e g r o 中图分类号:T P 31 文献标识码:AA l l e g r o F r a m e w o r k D e v e l o pm e n t B a s e d o n F o r m F o r m a t F u S h e n z h e n 1,2,L i u T a o 1,2,Z h a n g Zh u 1,2(1.S t a t e K e y L a b o r a t o r y o f H i g h -e n d S e r v e r &S t o r a g e T e c h n o l o g y,J i n a n 250014,C h i n a ;2.I n s p u r E l e c t r o n i c I n f o r m a t i o n I n d u s t r y Co .,L t d .)A b s t r a c t :I n t h e f i e l d o f E D A d e s i g n ,c a d e n c e a s t h e l a r g e s t s u p p l i e r o f e l e c t r o n i c d e s i g n a u t o m a t i o n ,i t s A l l e gr o s o f t w a r e i s a w e l l -k n o w n P C B d e s i g n s o f t w a r e i n t h e i n d u s t r y ,p r o v i d i n g r i c h s e c o n d a r y d e v e l o p m e n t i n t e r f a c e s a n d p e r f e c t d e v e l o p m e n t l a n g u a g e .T h i s p a p e r i s m a i n l y b a s e d o n t h e s e c o n d a r y d e v e l o p m e n t o f s k i l l l a n g u a g e o f A l l e g r o s o f t w a r e t o d e v e l o p a p r o g r a mm i n g fr a m e w o r k w i t h f o r m f o r -m a t .E n g i n e e r s c a n u s e t h e t o o l s d e v e l o p e d b y t h e f r a m e w o r k t o r e a l i z e h u m a n -c o m p u t e r i n t e r a c t i o n t h r o u gh U I i n t e r f a c e .I n a d d i t i o n ,w h e n c h a n g i n g A l l e g r o 's i n t e r n a l d a t a b a s e ,e n g i n e e r s c a n r o l l b a c k ,c a n c e l a n d c o m p l e t e o p e r a t i o n s ,w h i c h i s c o n v e n i e n t f o r e n gi n e e r s t o o p e r a t e q u i c k l y .T h e f r a m e w o r k p r o v i d e s a n e f f i c i e n t p r o g r a mm i n g i d e a f o r s e c o n d a r y d e v e l o p e r s ,a n d i m p r o v e s t h e d e v e l o p m e n t e f f i c i e n c ya n d q u a l i t y.K e yw o r d s :S k i l l l a n g u a g e ;P C B d e s i g n ;E D A d e s i g n s o f t w a r e ;A l l e g r o 0 引 言目前在市场上有多款P C B 设计软件,C a d e n c e 作为业界应用最广泛的软件,不仅拥有强大的功能和多款相关软件作支撑,还因为它提供了开放式的二次开发接口和较为完善的开发语言库,用户可以根据自身的需求进行二次开发㊂S k i l l 语言作为A l l e g r o 软件的核心编程语言,语法完善㊁功能强大,并且提供了丰富的A P I 接口,开发者可以根据需求定制开发一些软件自身不具有的功能㊂笔者根据多年开发经验开发出了一套高效的编程框架,开发者可通过使用该框架提高编程效率和质量㊂同时,P C B 设计者使用该框架编写的S k i l l 工具能够提高P C B 设计效率㊂1 背 景近几年随着电子信息技术的发展,P C B 产业链发展迅速,在P C B 设计领域有多款软件,每款软件都各有优缺点㊂A D (A l t i u m D e s i g n e r )软件是入门级硬核设计软件,也是国家各大高校必选的软件课程,但是它更适合设计简单的板卡[1],由于规则管理器约束性不强,针对高速信号处理,使用A D 会有更大的难度[2];P A D S (P o w e r P C B )软件规则简单,画图快,管理起来也不算混乱,方便使用,擅长低速射频类的设计;与A D ㊁P A D S 相比,A l l e go (C a d e n c e A l l e g r o )软件在高速信号及高密度设计领域具有一定的优势,拥有功能完备的规则约束管理器,让高速设计更加容易,尤其在大的服务器主板方面,由于高速信号设计要求比较高㊁走线密度高,更适合使用A l l e gr o 软件设计㊂在P C B 设计过程中,有些重复性的操作,或者软件自身不具有㊁工程师需要花费大量时间的操作,以及无法实现的操作,通过二次开发都能够协助或者代替工程师快速操作,提高工程师工作效率,从而节省人力成本㊂由于国内研究A l l e g r o 二次开发的人很少,基本都是停留在应用层面上,只有极少数的大公司设有专门的A l l e g r o 二次开发岗位㊂当前市面上,S k i l l 语言没有系统学习的教程,即便是市面上放出的S k i l l 工具,出于商业利益或个人保密原因,大多是经过加密处理的,开发者很难去学习研究,笔者总结多年的开发经验,开发了一套带有F o r m 格式的A l l e g r o 二次开发框架,开发者只要在该框架基础上定制开发,就能实现相应需求,并且该框架集成了命令模块,方便工程师在误操作时快速实现取消㊁回滚等操作㊂2 S k i l l 语言简介S k i l l 是一种人工智能的高级㊁交互式编程语言,它基于L i s p 语言发展而来,类似传统的C 语言高级编程,通过S k i l l 语言调用A X L 接口函数可以直接操作软件底层系统应用,结合底层应用可以开发出新的应用程序㊂A X L S k i l l 是A l l e gr o 内置的语言翻译工具,如图1所示㊂在A l l e gr o 中,可以通过U I 界面㊁菜单窗口㊁命令窗口㊁快捷键和通过编写S k i l l 代码激活内置翻译器,对P C B E d i t o r 内部数据进行操作来实现特定功能㊂图1 A X L S k i l l 运行方法3 框架设计3.1 整体框架本框架主要功能是实现F o r m 创建㊁U I 界面调用㊁命令调用以及人机交互[3]㊂工程师通过右击A l l e gr o 软件操作窗口空白处,点击相应的命令,实现操作的取消㊁完成㊁回滚等㊂系统框架主要由主函数模块㊁F o r m 创建模块㊁F o r m 初始化模块㊁F o r m 运行模块㊁功能模块(开发者根据具体需求开发)㊁命令模块(命令初始化模块㊁命令完成模块㊁命令取消模块㊁命令回滚模块㊁命令回调模块)组成,如图2所示㊂3.2 系统运行流程系统运行时首先检测是否定义了全局变量,没有定义图2 框架图说明工程师首次运行该系统,需创建F o r m 文件,生成F o r m 全局变量,调用F o r m 文件显示U I 界面;如果系统运行时检测到已经定义F o r m 全局变量,则直接调用全局变量㊁显示U I 界面,进入循环状态等待事件触发(编写的功能模块,工程师对A l l e gr o 中的D a t a b a s e 操作)㊂工程师每一次有效操作系统都会记录,相应地进行操作次数累计,点击 回滚 命令,系统取消当前操作,回滚到前一个状态,等待下一次执行;点击 取消 命令,系统取消所有操作,跳出循环并退出;点击 完成 命令,系统保存所有操作,跳出循环并退出,工作流程如图3所示㊂图3 工作流程3.3 应用实例设计以该框架为基础,在P C B 差分信号线上,T r o u gh P I N 创建R o u t e k e e p o u t s h a pe 并且能够避开走线的功能,能够实现U I 界面输入设定参数,通过循环点击P I N 和周围C l i n e s ,在R o u t e K e e p o u t 层面上快速创建s h a pe ,以及通过右击P C B 窗口点击 C a n c e l 命令取消所有创建的s h a pe并退出命令,当工程师误操作时点击 O o p s 命令能够回滚到上一个状态,点击 D o n e 命令能够完成所有的操作保存并退出命令㊂(1)主函数模块主函数作为程序的入口,主要包含F o r m 创建模块㊁F o r m 初始化模块㊁F o r m 运行模块,其中F o r m 创建模块主要是用来创建F o r m 文件,系统调用F o r m 文件展示U I界面,F o r m 初始化模块主要是对U I 界面上默认参数进行设定,F o r m 运行模块主要实现人机交互以及工具功能㊂(d e f u n C r e a t e R o u t e k e e po u t M a i n () (p r o g () ;F o r m 创建模块C r e a t e R o u t e k e e p o u t F o r m=C r e a t e R o u t e k e e p o u t F o r m (C r e -a t e R o u t e k e e po u t F o r m ) C r e a t e R o u t e k e e p o u t F o r m I n i t (C r e a t e R o u t e k e e p o u t F o r m );F o r m 初始化模块C r e a t e R o u t e k e e p o u t F o r m A c t i o n (C r e a t e R o u t e k e e p o u t F o r m );F o r m 运行模块 ))(2)F o r m 创建模块F o r m 创建模块主要是用来创建F o r m 文件,文件保存在系统的t e m p 路径下㊂通过接口函数调用生成U I 人机交互界面并嵌入到软件中的 O p t i o n 选项中,本模块能够避免在用户多次点击命令时生成多个U I 界面现象的发生,保证只打开一个U I 界面,程序不会跑飞㊂固定格式部分如下,其余显示部分开发者可根据实际需求自行添加,该实例中添加 a v o i d V a l u e 和 e x pa n d V a l u e 参数值㊂;用b o u n d p 函数创建全局变量,保证系统中变量唯一u n l e s s (b o u n d p ('C r e a t e R o u t e k e e p o u t F o r m )C r e a t e R o u t e k e e p o u t -F o r m =n i l)[4](d e f u n C r e a t e R o u t e k e e po u t F o r m (f o r m ) (p r o g (f o r m F i l e P a t h f o r m F i l e ) ;判断全局变量是否存在,存在说明U I 界面已经打开,直接;调用F o r m 变量打开界面(i f f o r m t h e na x l U I W E x p o s e (f o r m ) r e t u r n (f o r m ) );获取系统t e m p 路径 f o r m F i l e P a t h =a x l T e m p F i l e () ;创建F o r m 文件f o r m F i l e =o u t f i l e (f o r m F i l e P a t h) f p r i n t f (f o r m F i l e "F I L E _T Y P E=F O RM _D E F N V E R S I O N =2\n ") f pr i n t f (f o r m F i l e "F O RM \n ") f pr i n t f (f o r m F i l e "F I X E D \n ") ;W ㊁H 分别为U I 界面的宽度高度f pr i n t f (f o r m F i l e "P O R T W H \n ") ;C r e a t e R o u t e k e e p o u t 为U I 界面的标题 f p r i n t f (f o r m F i l e "H E A D E R \"C r e a t e R o u t e k e e po u t \"\n ") f p r i n t f (f o r m F i l e "T I L E \n ");根据实际开发需求,定义相关f i e l d ㊁t e x t ㊁p o p u p ㊁g r i d 等,该;实例只需要定义一个外扩值参数f pr i n t f (f o r m F i l e "F I E L D a v o i d V a l u e \n \n ") f pr i n t f (f o r m F i l e "F L O C 146\n ") f p r i n t f (f o r m F i l e "R E A L F I L L I N 8100\n ") f pr i n t f (f o r m F i l e "E N D F I E L D \n ") f p r i n t f (f o r m F i l e "F I E L D e x p a n d V a l u e \n \n ") f pr i n t f (f o r m F i l e "F L O C 149\n ") f p r i n t f (f o r m F i l e "R E A L F I L L I N 8100\n ") f p r i n t f (f o r m F i l e "E N D F I E L D \n ")f pr i n t f (f o r m F i l e "E N D T I L E \n ") f p r i n t f (f o r m F i l e "E N D F O RM \n ") c l o s e (f o r m F i l e ) ;创建F o r m;f o r m =a x l F o r m C r e a t e ('C r e a t e R o u t e k e e po u t F o r m f o r m -F i l e P a t h n i l 'C r e a t e R o u t e k e e po u t F o r m A c t i o n t )[5];嵌入到O pt i o n 中 a x l C o n t r o l R a i s e ('o p t i o n s ) f o r m=a x l M i n i S t a t u s L o a d (g e n s ym ()f o r m F i l e P a t h n i l t ) a x l F o r m D i s p l a y (f o r m ) r e t u r n (f o r m ) ;返回全局变量f o r m 值) ))(3)F o r m 初始化模块F o r m 初始化模块主要用来设置U I 界面的默认参数,初始化F o r m 中的表格(g r i d )以及变量㊂该实例中初始化了 a v o i d V a l u e 和 e x p a n d V a l u e 变量,其余代码为该模块的其他实用部分,开发者可以根据实际开发进行增删㊂(d e f u n C r e a t e R o u t e k e e po u t F o r m I n i t (f o r m ) (p r o g (c o l u m n ) ;变量初始化 ;f o r m >v a r 1=n i l ;f o r m >v a r 2=0;默认参数设定 ;(f o r m "f i e l d 1"v a l u e 1) ;a x l F o r m S e t F i e l d (f o r m "f i e l d 2"v a l u e 2);gr i d 行初始化(根据实际需求判断是否需要有g r i d );c o l u m n =m a k e _f o r m G r i d C o l () ;第一列初始化 ;类型设置(T E X T /S T R I N G /L O N G /R E A L /E N UM S E T /;C H E C K I T E M );c o l u m n >f i e l d T y p e = ;列宽设置(数值) ;c o l u m n >c o l W i d t h = ;排列方式设置(L E F T /R I G H T /C E N T E R ) ;c o l u m n >a l i gn = ;c o l u m n >h e a d T e x t = ;显示标题 ;a x l F o r m G r i d I n s e r t C o l (f o r m "g r i d "c o l u m n );第N 列 ;c o l u m n >f i e l d T y p e = ;c o l u m n >c o l W i d t h = ;c o l u m n >a l i gn = ;c o l u m n >h e a d T e x t = ;a x l F o r m G r i d I n s e r t C o l (f o r m "g r i d "c o l u m n ) ;gr i d 显示刷新 ;a x l F o r m G r i d U p d a t e (f o r m "gr i d ") f o r m >m a r k =n i lf o r m >m a r k C n t =0f o r m >p o p u p O r i gn =n i l f o r m >p o p u p G r a y=n i l a x l F o r m S e t F i e l d (f o r m "a v o i d V a l u e "1) a x l F o r m S e t F i e l d (f o r m "e x p a n d V a l u e "1) ))(4)F o r m 运行模块F o r m 运行模块主要是人机交互以及功能实现,系统功能部分在此模块中添加㊂系统运行时首先标记初始状态,系统处于循环状态,等待事件触发(功能事件),事件触发一次就累计一次,该模块中嵌入命令模块( 完成命令㊁ 取消命令 ㊁ 回滚命令)㊂(d e f u n C r e a t e R o u t e k e e p o u t F o r m A c t i o n (f o r m ) (p r o g (l E v e n t M a s k e v e n t I D ) ;命令模块初始化 P o p u pF o r m I n i t () ;命令菜单调用 a x l E v e n t S e t S t a r t P o p u p ('P o p u pF o r m C a l l b a c k ) ;操作开始标记 f o r m >m a r k =a x l D B T r a n s a c t i o n S t a r t () l E v e n t M a s k =l i s t ('P I C K 'D B L P I C K )(w h i l e d o F l a g e v e n t I D =a x l E n t e r E v e n t (l E v e n t M a s k n i l n i l ) a x l D B T r a n s a c t i o n M a r k (f o r m >m a r k ) (c a s e e v e n t I D >t y pe ('P I C K a x l D B T r a n s a c t i o n M a r k (f o r m >m a r k ) ;操作次数记录累加 f o r m >m a r k C n t =a d d 1(f o r m >m a r k C n t ) ;功能模块添加位置 P o p u p F o r m C h e c k (f o r m ) );操作完成命令 ('D O N E d o F l a g =n i l );操作取消命令 ('C A N C E Ld o F l a g =n i l ) ) ) ))系统运行时,右击窗口弹出菜单中自动添加 D o n e㊁ O o ps ㊁ C a n c e l 命令,选择 D o n e 命令完成所有操作(A ~N 状态之间所有的操作都有效), C a n c e l 命令取消原来所有操作(A~N 状态之间所有的操作都无效), O o ps 命令回滚上一次状态㊂命令执行状态如图4所示㊂图4 命令执行状态(5)命令模块命令模块由命令初始化模块㊁命令完成模块㊁命令取消模块㊁命令回滚模块㊁命令回调模块组成,代码部分固定㊂1)命令初始化模块命令初始化模块主要是初始化完成㊁取消㊁回滚命令,右击菜单中调用命令初始化模块㊂(d e f u n p o p u pF o r m I n i t () f o r m >p o p u p O r i g n =a x l U I P o p u pD e f i n e (n i l l i s t (l i s t ("D o n e "'p o p u p F o r m D o n e ) l i s t ("O o p s "'p o p u p F o r m O o ps ) l i s t ("C a n c e l "'p o p u p F o r m C a n c e l ) ) )f o r m >p o p u p G r a y =a x l U I P o p u p D e f i n e (n i l l i s t (l i s t ("D o n e "'p o p u pF o r m D o n e ) l i s t ("C a n c e l "'p o p u pF o r m C a n c e l ) ) ))2)命令完成模块命令完成模块被调用时,取消状态标记,循环参数设置为n i l,并跳出循环模式,保存整个操作,可以通过右击P C B 窗口,选择 D o n e命令,完成整个操作㊂(d e f u n P o p u pF o r m D o n e () ;如有标记,跳转到标记位置,跳出w h i l e 循环 (W h e n f o r m >m a r k a x l D B T r a n s a c t i o n C o mm i t (f o r m >m a r k) )a x l C l e a r S e l S e t() a x l F i n i s h E n t e r F u n () a x l U I C m d P o p u p S e t (n i l ) a x l U I P o p u pS e t (n i l ))3)命令回滚模块系统处于循环状态,回滚命令触发时,系统根据记录的状态,返回到前一个状态,可返回次数等于操作累计次数㊂P C B 设计者对D a t a b a s e 操作失误时,可通过点击回滚命令返回到上一个状态㊂(d e f u n P o p u p F o r m O o ps () ;返回到最后一次标记 (I f !a x l D B T r a n s a c t i o n O o ps (f o r m >m a r k )t h e n f o r m >m a r k =0 e l s ea x l U I W P r i n t (n i l "O o p s ") ;操作次数累计减1 f o r m >m a r k C n t =s u b 1(f o r m >m a r k C n t) a x l C l e a r S e l S e t () ) I n s p u r _P o p u pF o r m C h e c k (f o r m );右击菜单回调)4)命令取消模块命令取消模块被调用时,取消状态标记,循环参数设置为n i l,并跳出循环模式,取消所有操作,可以通过右击P C B 窗口,选择 C a n c l e命令完成整个操作㊂(d e f u n P o p u pF o r m C a n c e l () (W h e n f o r m >m a r k;从标记开始的操作到现在的操作全部取消 a x l D B T r a n s a c t i o n R o l l b a c k (f o r m >m a r k ) )a x l C l e a r S e l S e t() a x l C a n c e l E n t e r F u n () a x l U I C m d P o p u p S e t (n i l ) a x l U I P o p u pS e t (n i l ));右击菜单命令加载函数(d e f u n P o p u pF o r m C h e c k (f o r m ) a x l U I C m d P o p u p S e t (f o r m >p o p u p O r i gn ) (i f f o r m >m a r k C n t >=1t h e na x l U I P o p u p S e t (f o r m >p o p u p O r i g n ) e l s ea x l U I P o p u p S e t (f o r m >p o p u p G r a y ) ));事件触发函数(d e f u n P o p u p F o r m C a l l b a c k (e v e n t ) P o p u pF o r m C h e c k (f o r m ))(6)功能模块功能模块设计主要是通过提供的A P I 函数获取到图5 主界面P I N 或者V I A 的P A D ,然后获取到P A D 的形状P o l y ,再根据输入的外扩值放大形状,在相应的R o u t e K e e p o u t 层面上创建s h a pe ㊂功能模块根据实际需求定制开发,本实例中不再展示相关代码㊂(7)测 试1)主界面根据上面实例,能够实现U I界面嵌入到软件自带的 O p t i o n s 菜单中,如图5所示㊂2)右击菜单右击菜单能够添加相应的图6 右击菜单D o n e ㊁ O o p s 和 C a n c e l 命令,如图6所示㊂3)命令执行结果该实例主要在T h r o u gh P i n 上创建R o u t e K e e p o u t 区域,通过执行命令能够实现完成㊁取消以及回滚功能㊂图7为点击D o n e 命令全部完成的效果,图8为点击 O o p s 回滚一次后的效果㊂图7 D o n e命令后的效果图4 结 语A l l e gr o 二次开发主要是开发软件自身不具19图2 软件验证活动问题处理流程的修改工作,修改完成后执行步骤5㊂步骤5(重新验证):由软件验证人员对修改后的软件进行重新验证,验证结束后则完成问题的处理工作,流程结束㊂4 结 语本文以软件安全生命周期模型为基础,详细说明了某嵌入式实时操作系统在各阶段输出的文档,以及针对文档的审查和分析内容;对在软件验证活动中发现的问题还给出了完整的闭环处理流程,为软件功能安全验证活动的执行提供有效支撑㊂在整体软件测试结束后,还应由软件确认人员执行确认活动,对软件确认活动的总结将作为下一步研究内容㊂参考文献[1]杨春晖,刘奕宏.功能安全标准白皮书,2017.[2]王瑞,徐宁,王财进,等.安全软件验证确认在B TM 开发中的应用[J ].铁路技术创新,2015(2):8890,112.[3]郑琼,刘锦峰,陈晓轩.E N 50128:2011在轨旁安全平台验证和确认过程中的应用,2019,55(11):1114.[4]I E C 61508.F u n c t i o n a l s a f e t y o f e l e c t r i c a l /e l e c t r i c /p r o gr a m -m a b l e e l e c t r o n i c s a f e t y r e l a t e d s ys t e m s [S ].S w i t z e r l a n d :I E C ,2010.刘鹏辉(工程师),主要研究方向为嵌入式领域安全关键技术的测试与验证;王淑玲(工程师),主要从事军用嵌入式软件的第三方测评工作㊂(责任编辑:薛士然 收稿日期:2020-08-14)图8 点击一次 O o ps 命令的效果图备的功能,以及人工操作比较麻烦的功能,用于提高P C B 设计和检查效率㊂由于S k i l l 语言应用具有局限性,国内研究的人比较少,在进行带有F o r m 格式的功能开发时,开发者往往找不到一种合适的框架,并且开发的工具往往不带有完成㊁取消以及回滚功能,而完成㊁取消㊁回滚命令又是P C B 设计者常用的功能,工具如果不包含这几项功能,会导致P C B 设计者在使用该工具误操作时无法快速回滚以及取消操作,给设计者带来不便㊂本文提出的基于F o r m 格式的框架开发,能够在用户误操作D a t a b a s e 时,实现对操作的取消㊁回滚以及完成㊂另外,该框架也能避免因F o r m 嵌入循环语句导致软件进入死循环的现象发生㊂参考文献[1]凡亿p c b .P C B 设计主流软件分析[E B /O L ].[202009].h t -t p ://w w w.f a n y e d a .c o m /p c b x i n w e n /1285.h t m l .[2]十四_S I .P C B L a y o u t 软件分析对比(A D ㊁P a d s ㊁A l l e g r o )[E B /O L ].[202009].h t t p s ://w w w.ji a n s h u .c o m /p /6e 71972452d 9.[3]C a d e n c e .A l l e gr o S k i l l R e f e r e n c e ,2019.[4]C a d e n c e .C a d e n c e S k i l l L a n g u a ge R ef e r e n c e ,2019.[5]v i v i e n l u o .F O RM 创建函数a x l F o r m C r e a t e [E B /O L ].[202009].h t t p ://w w w.a l l e gr o s k i l l .c o m /t h r e a d 17911.h t m l .(责任编辑:薛士然 收稿日期:2020-09-14)。
浅谈Cadence电路板设计、EDA软件二次开发在PCB设计中应用(三)
83PCB InformationSEP 2019 NO.6规则设置分为SpacingRules 和Physical Rules。
Spacing Rule 决定元件、线段、管脚和其他的布线层保持多远的浅谈Cadence 电路板设计、EDA 软件二次开发在PCB 设计中应用(三)文/金百泽电子科技股份有限公司 石恒荣 李享 梁群(接上期)File-->Import-->Logic(图49)【摘 要】随着电子产品的日益增多,PCB行业的技术要求也越高,对于软件的要求就更高。
Cadence公司在EDA领域处于国际领先地位,旗下PCB设计领域有市面上众所周知的OrCAD和Allegro SPB两个品牌。
Allegro SPB为Cadence公司自由品牌。
经过10余年的整合,Allegro覆盖中高端市场,与Mentor和Zuken竞争。
而EDA软件平台二次开发在PCB设计中起到了重要作用。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
【关键词】EDA;Cadence;Skill;规范第一作者简介:石恒荣,北京邮电大学本科毕业,现任深圳市金百泽电子科技股份有限公司设计事业部总监。
二、网表导入三、设置规则图49图50图51距离;Physical Rule 决定使用多宽的线段和在布线中采用什么类型的贯穿孔。
在网络与元件或分组网络与元件中采用不同的布线。
如图50、51、52、53。
2019年9月第6期84图53在设计中,布局是一个很重要的环节。
布局的好坏将直接影响布线的效果,因此可以这样认为,合理的布局是PCB 设计成功的第一步。
布局的方式分两种:一种是交互式布局,另一种是自动布局。
一般是在自动布局的基础上用交互式布局进行调整。
在布局时还可根据走线的情况对门电路进行再分配。
首先,要考虑PCB 尺寸大小,PCB 尺寸过大时印制线路长,阻抗增加,抗噪声能力下降,成本也会增加;过小,则散热不好,且临近走线易受干扰。
allegro的二次开发
• • • • • • • • • • • • • • • • • • • • • •
MENUITEM "10du", END
"tune"
/*************************** 丝印工具 ********************/ POPUP "3.Siklscreen tools" BEGIN MENUITEM "Standard Text Set", "replay text_standard.scr" MENUITEM "Move Ref to Center", "move_refdes_to_center" MENUITEM "Import Refdes", "silkin" MENUITEM "Export Refdes", "silkout" POPUP "Check Silk Direction" BEGIN MENUITEM "Check Top Silk Direction", "check_top_silk_direction" MENUITEM "Check Bottom Silk Direction", "check_bottom_silk_direction" MENUITEM "Check Both Silk Direction", "check_both_silk_direction" END MENUITEM "Check Symbols Without Refdes", "check_symbos_without_refdes" MENUITEM "Check_refdes_cross", "ch_cross" MENUITEM "Check_refdes_direction", "ch_dir" MENUITEM "Text Overlap", "ch_text_overlap" END MENUITEM "Add Layer Text", MENUITEM "Valor Report View", END "add_each_art_notes" "replay valor_review.scr"
基于AXL-SKILL语言的Allegro封装工具的二次开发
基于AXL-SKILL语言的Allegro封装工具的二次开发黄琦;李伟;葛立峰【期刊名称】《计算机应用与软件》【年(卷),期】2012(29)7【摘要】着重研究基于AXL-SKILL语言的Cadence Allegro封装设计的二次开发技术.介绍AXL-SKILL语言,分析自建封装工具的方法和步骤,并针对几种不同焊盘和封装类型加以研究.结合实际经验,制定封装规则,实现封装工具的二次开发.%This paper focuses on the secondary development technology for AXL-SKILL language based Cadence Allegro package and design, introduces AXL-SKILL language, analyzes methods and procedures for packaging creation tools, then researches on a few different pad types and package types, combining with practical experiences, establishes package rules and realizes the secondary development of package tools.【总页数】4页(P157-159,167)【作者】黄琦;李伟;葛立峰【作者单位】安徽大学电气工程与自动化学院安徽合肥230601;安徽大学电气工程与自动化学院安徽合肥230601;安徽大学电气工程与自动化学院安徽合肥230601【正文语种】中文【中图分类】TP311.5【相关文献】1.AutoCAD二次开发语言及工具介绍 [J], 任仓钰2.IDEAS中的二次开发工具Ideal语言概述 [J], 邓益民;沈连官3.AutoCAD二次开发语言及开发工具应用分析 [J], 郑军红4.基于Eplan二次开发的电气辅助设计工具集的设计与实现 [J], 张旭;姚璋;袁友汶;黄鹏5.基于HyperMesh二次开发的汽车碰撞仿真模型定位工具 [J], 刘乾因版权原因,仅展示原文概要,查看原文内容请购买。
Cadence基于CIS的模块复用
关于allegro模块复用问题孙海峰在使用Allegro PCB进行复杂电路设计时候,往往会遇到一部分电路被反复使用的情况,设计者可以按照之前的经验很快的做出相同的设计,但是这无疑浪费了不少时间。
尤其对于大规模复杂设计,如果设计者浪费时间在反复的工作上,这是严重的损失。
Allegro PCB允许设计者一开始就将复用模块设计好,以后只要直接调用复用模块就可以直接用以设计更复杂的电路板了。
这对于大规模集成设计无疑是非常好的选择,它不仅让设计者不必花费时间在相同模块反复设计上,更有利于电路的模块化设计和团队合作设计。
接下来我从Allegro PCB出发,详细阐述模块复用设计的具体步骤。
一、设计复用模块首先在复杂设计之初,确定复用模块,然后对它进行设计。
复用模块的设计与普通PCB设计流程相似,包括原理图设计,DRC佥查,导出网表,PCB设计和原理图反标的整个流程。
1、在Capture页面中画好复用模块的原理图,设定好元件封装,完成DRC检查,做好元件编号等原理图设计如下图;注意:检查元件属性是否设为curre nt properties ,其它设定可能出错。
2、对设计执行Tools/Annotate 进行原理图标注,在PCB Editor Reuse选项卡中勾选Gen erate reuse module ,Renu mber desig n for using modules ,选中Un co nditio nal 如下图。
3、执行Tools/Design Rules Check 进行电路DRC检查,正确无误后执行Tools/Create Netlist 命令生成网表,并导入PCB设计中。
4、复用模块的PCB设计在Allegro PCB Editor 中对该复用模块进行设计,完成设计后执行Tools/Create Module 命令,并框选复用模块所有元件、网络、连线等信息Crtlie Nodalje..F&dzt«ckIJen ve ConnftctEinty.. Q Reports.Q UL^ Kejor laIe«hm>lo£y File Ccwnpar?I Satup AdviserI BA-t-abasa Ch»ck匹Update IREI UUlitics然后输入坐标值,或者按Enter键即开始对该模块进行保存,这里注意模块的取名。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• • • • • • • • • • • • • • • • • • • • • •
MENUITEM "10du", END
"tune"
/*************************** 丝印工具 ********************/ POPUP "3.Siklscreen tools" BEGIN MENUITEM "Standard Text Set", "replay text_standard.scr" MENUITEM "Move Ref to Center", "move_refdes_to_center" MENUITEM "Import Refdes", "silkin" MENUITEM "Export Refdes", "silkout" POPUP "Check Silk Direction" BEGIN MENUITEM "Check Top Silk Direction", "check_top_silk_direction" MENUITEM "Check Bottom Silk Direction", "check_bottom_silk_direction" MENUITEM "Check Both Silk Direction", "check_both_silk_direction" END MENUITEM "Check Symbols Without Refdes", "check_symbos_without_refdes" MENUITEM "Check_refdes_cross", "ch_cross" MENUITEM "Check_refdes_direction", "ch_dir" MENUITEM "Text Overlap", "ch_text_overlap" END MENUITEM "Add Layer Text", MENUITEM "Valor Report View", END "add_each_art_notes" "replay valor_review.scr"
如果想研究的话可以试着更改下面的文件,可以生成ALLEGRO的菜单栏
• C:\Cadence\SPB_16.6\share\pcb\text\cuimenus\allegro. men • 有关于SKILL的开发,语法的介绍可以看看EDA365网站 里面的相关资料,希望对各位有帮助
• • • • • • • • • • • • • • • • • • • • • • • • •
/****************************工具版本1.0(XLL)***************/ POPUP "MV-SKILL(&XLL) V1.0" BEGIN /****************************常用工具***********************/ MENUITEM "[Work Directory]", "filemgr" MENUITEM "Save By Time", "wxsf" MENUITEM "Set Grids", "quick_grids" MENUITEM "Auto-Resize Extent", "arzNEED!" MENUITEM "Layer Change", "LCNEED!" /*待完成*/ POPUP "Colorset" BEGIN MENUITEM "color1" , "quick_colorset1" MENUITEM "color2" , "quick_colorset" MENUITEM "color3" , "quick_colorset2" END /*************************** 布局工具 ********************/ POPUP "1.Placement tools" BEGIN MENUITEM "One key syn to circuit diagram", "***" END /*************************** 布线工具 ********************/ POPUP "2.Routing tools" BEGIN MENUITEM "Cut cline", "clinecut"
上下左右 funckey w "roam y -$roamInc" funckey a "roam x -$roamInc" funckey s "roam y $roamInc" funckey d "roam x $roamInc"
上 左 下 右
建议:将同一类的操作的快捷键集中设定,比如Shape的修改、挖空、选定等放在键盘的 同一区域。 funckey 5 shape select funckey 6 eda365_cutshape funckey 7 shape void delete funckey 8 shape void element funckey 9 shape void rectangle
• • •
下面有两种操作,和快捷键有一样的效果,甚至还要好一些: 1. 使用ALT键快捷调用菜单栏; 2. 使用手势操作。
• •
注意:在定义快捷键的时候不能与软件 自带的快捷键冲突,比如F1是软件的帮
•
助键,ix 、iy、x、y等
。
• funckey的高级应用 :可以用来定义快捷键为命令行
自动对齐 funckey y "prepopup;pop dyn_option_select 'Snap pick to@:@Via'" funckey u "prepopup;pop dyn_option_select 'Snap pick to@:@Segment'" funckey i "prepopup;pop dyn_option_select 'Snap pick to@:@Pin'" funckey o "prepopup;pop dyn_option_select 'Snap pick to@:@Segment Vertex'"
• 二、录制文件
• 1、目的:录制文件可以让我们避免很多重复的操作,以更快达到我们的使用需求; 比如格点的录制再配合快键键可以帮助我们更快的切换格点、切换层面、出光绘相关 文件的操作录制可以让我们更快的出Gerber等。
•
• • • • • • • • • •
2、如何录制:File-Script,如右图。
Allegro的使用技巧及二次开发
为了更方便我们使用Allgero,达到快速操作(使用快捷键和录制文件)、良好分工(丝印导入导出)最终加快 画板效率,所进行的Allgero配置和程序的研发。在这里我讲三个方面:快捷键、录制文件、skill文件的使用及开发。
William
• • • • • • • • • • • • • • • • • • • • • • • • • •
• 三、skill文件的使用及开发。 • skill存放于allegro的环境变量目录&home\pcbenv里,需要在相同目录下的
• allegro.ilinit里面加载后才能使用,如:load("tune_10.il")。 一般skill里面的文件会定义函数,红色方框内为CMD命令,可以在Allegro中直接 使用,此命令也可以设定快捷键。
•
• •
一、快捷键的设定
# alias alias F1 add connect alias:别名,化名;假名。 # May use function keys F2-F12, most Alpha-numberic keys with control 功能键、Ctrl+阿拉伯数字字母 # modifier (although Control - C, V and X are reserved for copy, paste and cut) # and Navigation Keys定位键 (Home, Up arrow, Esc, etc.) These items may be modifed # by the following: # Modifier(修饰按键) Indicator(指示符) Example # Shift S SF2 # Control C (function keys) CF2 # Control ~ (alpha-numeric) ~N 在ENV编写的时候字母一定要大写 # Meta A AF2 Alt键 # Modifiers may be combined. Some examples: +(组合按键) # CSF2 Control-Shift F2 # ASF2 Meta-Shift F2 # CAF2 Control-Meta F2 # CASF2 Control-Meta-Shift F2 # SUp Shift-Up # ~SZ Control-Shift Z # CUp Control-Up # funckey # use the funckey when you wish to have alphanumeric keys operate # like the Function keys when the cursor is in the Allegro canvas. 当鼠标的光标在Allegro画布中的时候,可以像使用功能键 一样使用阿拉伯数字字母操作,且不用输入回车键。 # # Example -- following starts the move command without a Enter key # funckey m move 总结:alias适用于功能键,funckey适用于字母数字键