EDA365电子工程师网

标题: 用axlShell调用一个Script后,所以铜皮的dBid都removed,是怎么回事儿啊?(已解决) [打印本页]

作者: CAD_SI    时间: 2010-6-2 21:46
标题: 用axlShell调用一个Script后,所以铜皮的dBid都removed,是怎么回事儿啊?(已解决)
本帖最后由 CAD_SI 于 2010-6-2 23:11 编辑

如题,哪位大侠指点一下,谢谢!

调用 Script 的代码如下:

sScriptFile = "C:/Cadence/SPB_15.7/HOME/pcbenv/xx.scr"
axlShell(
      sprintf( nil
          "replay %s"
          sScriptFile
      );end fprintf
);end axlShell


debug时打印的信息:
(dbid:removed dbid:removed dbid:removed)
作者: scc_yangy    时间: 2015-6-10 14:22
本帖最后由 scc_yangy 于 2015-6-10 14:23 编辑

请问是怎么解决的,我也遇到了类似的问题,能不能帮忙解答一下啊,不甚感激,代码如下,问题是调试的时候所有shape的ID都是removed:
  1. axlVisibleDesign(nil)
  2. axlVisibleLayer( "Etch/TOP" t )
  3. axlSetFindFilter(?enabled '(noall shapes) ?onButtons '(noall shapes))
  4. axlClearSelSet()       
  5. all_shapes = axlGetSelSet(axlAddSelectAll())
复制代码



作者: deargds    时间: 2015-6-13 08:43
scc_yangy 发表于 2015-6-10 14:22
请问是怎么解决的,我也遇到了类似的问题,能不能帮忙解答一下啊,不甚感激,代码如下,问题是调试的时候所 ...

这部分代码没有问题,可能是其它地方的原因

作者: betamelody    时间: 2015-6-13 10:20
dbid只是临时的存在,如果获取的dbid没有立即使用而是中间进行了 ‘用户操作’ (运行axlDBxxxx函数或者script也是一种模拟用户操作),这些dbid就会失效
作者: scc_yangy    时间: 2015-6-16 20:21
betamelody 发表于 2015-6-13 10:20
dbid只是临时的存在,如果获取的dbid没有立即使用而是中间进行了 ‘用户操作’ (运行axlDBxxxx函数或者scr ...

在cadence的官方论坛里也看到了这样的问题,应该就是这个原因,但是这样的话就有点不方便了,比如我要先存储选中shape的dbid,然后再选中shape上vias的dbid,这时候vias的dbid就可以记录,而shape的dbid就显示为removed,但是程序在整体运行的时候是可以的,在分步调试的时候不行。

作者: scc_yangy    时间: 2017-1-20 10:39
betamelody 发表于 2015-6-13 10:20
dbid只是临时的存在,如果获取的dbid没有立即使用而是中间进行了 ‘用户操作’ (运行axlDBxxxx函数或者scr ...

我又碰到了这样的问题,这次是希望dbid的属性更新,但是没有,很想知道怎么解决,求指点,下面是部分代码:
lRefdes = list()
compidlist = axlDBGetDesign()->components
foreach(comp compidlist lRefdes = cons(comp->name lRefdes))     ;获取所有器件位号,假设得到结果lRefdes = ("U3" "C2" "U1")
axlRenameRefdes("C2" "U2")   ;把C2的位号修改为U2,返回结果为t,丝印上C2也自动变成U2
;循环上面的操作,得到新的器件位号列表
lRefdes = list()
compidlist = axlDBGetDesign()->components
foreach(comp compidlist lRefdes = cons(comp->name lRefdes))

;此时得到的lRefdes = ("U3" "C2" "U1") ,相当于重新获取位号列表时,位号没有变化,如果再执行走线,走线结束,然后再通过上述代码获取位号列表,就可以得到
新的列表lRefdes = ("U3" "U2" "U1")
我试过中间加一句更新DRC,然后获取新的位号列表,也没有用。请问如何在程序运行的时候就让它更新?

作者: scc_yangy    时间: 2017-1-20 10:49
本帖最后由 scc_yangy 于 2017-1-20 10:51 编辑

我现在暂行的方法是在获取新的位号列表之前,加以下两句,以进行版主提示的“用户操作”:
axlShell("add connect")
axlShell("done")
但总感觉这样的解决办法怪怪的......
作者: breaking_good    时间: 2017-1-20 13:11
axlDBRefreshld 这个有用吗
作者: wcjcn    时间: 2017-6-9 08:44
学习中,谢谢。。。。




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2