Cadence原理图Tcl/Tk脚本学习笔记

背景

        本篇主要介绍Cadence原理图脚本简单的使用方法。默认使用者已经了解Tcl脚本的基本语法,如果不清楚,也可以百度搜索,语法也相对简单。本文的内容基本上都出自软件《OrCAD_Capture_TclTk_Extensions》文档作为参考资料。文档在软件安装路径的tclscripts目录下,本文参考的文档是1.2版本。下文连接附件有机器翻译的参考文档资料,有需要的也可下载。https://download.csdn.net/download/qq_26536391/88573418

加载脚步

参考下图软件安装路径下新建一个tcl文件,打开Orcad是会自动加载新建的tcl脚步,本文以test.tcl为例。

打开软件显示自动加载test.tcl脚步,用户需注意,如果修改test.tcl内容后,则需要关闭软件重新加载test.tcl文件,否则修改内容不能生效。

当然还可以增加一条指令,修改保存test.tcl文件,重新加载test.tcl文件即可,这样就不用每次修改后需要关闭软件重新加载。 

proc qq {} {
    #重新加载脚本
  source "E:\\Softwave\\Cadence\\Cadence\\Cadence_SPB_16.6\\tools\\capture\\tclscripts\\capAutoLoad\\test.tcl"
  puts "Load successed"
}

使用时在命令行输入 qq 即可。

数据库命令调用

参考文档《OrCAD_Capture_TclTk_Extensions》第3.2.1.1 章节对数据库命令的调用给了介绍,有两种方法,如下图,一种是静态方法调用,一种是类方法调用。实际使用的时候,使用类调用的方法较多。

下面以获取器件管脚名为例,介绍使用方法

proc ww {} {
    set lStatus [DboState]
    set lSelObjs [GetSelectedObjects]
    set lPropNameCStr [DboTclHelper_sMakeCString]
    foreach lObj $lSelObjs {
        $lObj GetPinName $lPropNameCStr
        puts [DboTclHelper_sGetConstCharPtr $lPropNameCStr]
        set lPropNameCStr [DboPortInst_sGetPinName $lObj $lStatus]
        puts [DboTclHelper_sGetConstCharPtr $lPropNameCStr]
    }  
}

静态函数调用参考

DboPortInst_sGetPinName $lObj $lStatus

类调用参考

$lObj GetPinName $lPropNameCStr

 原理图指令框中执行ww命令,输出如下图,两种方法均可得到选中的Pin Name值。

 

类调用的方法

        类可调用的方法在参考文档的第18/19/20章节有描述,可自行查找。然而当我们选中原理图中的某个器件(不限于元器件、网络、页连接符等)时,为了快速了解当前选中的器件对应的类有哪些函数可调用,可以通过输入一个错误的调用方法,查看返回的提示参考可调用的函数。如下图所示。

通过 set lSelObjs [GetSelectedObjects] 指令获得当前原理图中被选中的器件,通过 foreach 将被选中的器件逐一取出。

proc ww {} {
    set lStatus [DboState]
    set lSelObjs [GetSelectedObjects]
    set lPropNameCStr [DboTclHelper_sMakeCString]
    foreach lObj $lSelObjs {
        $lObj lObj $lObj
    }  
}

 最后通过一个 $lObj lObj $lObj 这错误的调用获得系统的提示,如下图。

 复制图中系统打印数据,如下

Invalid method. Must be one of: configure cget -acquire -disown -delete GetObjectType GetOwner GetContainingLib GetDefiningPin GetWire GetNet GetDisplayPropsPermitted GetId GetPinName GetPinNumber GetPinSwapId GetPinType GetIsLong GetIsClock GetIsDot GetIsLeftPointing GetIsRightPointing GetStartPoint GetOffsetStartPoint GetHotSpot GetOffsetHotSpot GetIsVisible GetIsShared GetIsNumberVisible GetIsGlobal GetIsNetStyle GetIsNoConnect IsBundlePin IsBundleObject GetEffectivePropStringValue GetEffectivePropValueType GetPinPosition GetDispPropArray GetIsUserDefinedShape GetCachedPinShapePtr GetObjectOccurrence GetObjectOccurrences GetParentObj NewDisplayPropsIter NewEffectivePropsIter SetPinName SetPinNumber DeleteUserProp SetUserPropStringValue DeleteUserPropValue SetPinType SetIsLong SetIsClock SetIsDot SetIsLeftPointing SetIsRightPointing SetStartPoint SetHotSpot SetIsVisible SetIsGlobal SetIsNetStyle SetIsNoConnect SetId SetCachedPinShapePtr NewDisplayProp NewUserProp 

通过上提示,我们可以看到在当前类下,我们可以调用的函数,再通过参考手册里面找到对应的类描述, 给函数输入相应的参数即可得到想要的结果。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值