EDA365电子论坛网

标题: 请问有没有allegro自动布线的skill [打印本页]

作者: chenxiumei    时间: 2023-12-15 16:18
标题: 请问有没有allegro自动布线的skill
大家好,请问有没有allegro自动布线的skill,针对一些短线的连接。。。

作者: Cadence_skill    时间: 2023-12-16 20:04
自带的不是可以?
作者: Omar_Felix    时间: 2023-12-17 10:35
  1. axlCmdRegister("Cline_Link" 'Cline_Link ?cmdType "interactive")

  2. procedure( Cline_Link()
  3. let((selbox mark mypopup sels file port segs cline0 cline1 linex startxy0 startxy1 tt tt0 line0xy line1xy)
  4.         mark = axlDBTransactionStart()
  5.         mypopup = axlUIPopupDefine(nil
  6.                 list(
  7.                         list("Done" "axlDBTransactionCommit(mark) axlUIPopupSet(nil) axlFinishEnterFun()")
  8.             list("Oops" "axlDBTransactionOops(mark)")
  9.             list("Cancel" "axlDBTransactionRollback(mark) axlUIPopupSet(nil) axlCancelEnterFun()")
  10.                 )
  11.         )
  12.         axlSetFindFilter(?enabled '("NOALL" "ratsnests") ?onButtons '("all"))
  13.         axlClearSelSet()
  14.         axlUIPopupSet(mypopup)
  15.         while(selbox = axlEnterBox(?prompts list(">>\307\353\312\344\310\353\265\332\322\273\270\366\265\343" ">>\307\353\312\344\310\353\265\332\266\376\270\366\265\343"))
  16.                 axlUIPopupSet(mypopup)
  17.                 axlDBTransactionMark(mark)
  18.           axlSingleSelectBox(selbox)
  19.           sels = axlGetSelSet()
  20.                 axlClearSelSet()
  21.                 foreach(n0 sels
  22.                         file = car(axlShowObjectToFile(n0))
  23.                         port = infile(file)
  24.                         while(gets(line port)
  25.                                 when(rexMatchp("end points:+" lowerCase(line))
  26.                                         gets(line port)
  27.                                         tt = member("xy" parseString(line " ()\t\n"))
  28.                                         line0xy = list(atof(cadr(tt)) atof(nth(2 tt)))
  29.                                         if(member("xy" cdr(tt)) then
  30.                                                 line1xy = list(atof(nth(4 tt)) atof(nth(5 tt)))
  31.                                         else
  32.                                                 gets(line port)
  33.                                                 tt = member("xy" parseString(line " ()\t\n"))
  34.                                                 line1xy = list(atof(cadr(tt)) atof(nth(2 tt)))
  35.                                         )
  36.                                 )
  37.                         )
  38.                         close(port)
  39.                         deleteFile(file)
  40.                         segs = '()
  41.                         foreach(n1 n0->net->branches~>children
  42.                                 foreach(n2 setof(x0 n1 ((x0->objType == "path" && x0->segments != nil) || x0->objType == "via" || x0->objType == "pin"))
  43.                                         when(n2->segments
  44.                                                 segs = append(n2->segments segs)
  45.                                         )
  46.                                         when(n2->objType == "via" || n2->objType == "pin"
  47.                                                 segs = cons(n2 segs)
  48.                                         )
  49.                                 )
  50.                         )
  51.                         cline0 = car(setof(x0 segs (member(line0xy x0->startEnd) != nil)))
  52.                         via0 = car(setof(x0 segs (line0xy == x0->xy && x0->objType == "via")))
  53.                         pin0 = car(setof(x0 segs (line0xy == x0->xy && x0->objType == "pin")))
  54.                         cline1 = car(setof(x0 segs (member(line1xy x0->startEnd) != nil)))
  55.                         via1 = car(setof(x0 segs (line1xy == x0->xy && x0->objType == "via")))
  56.                         pin1 = car(setof(x0 segs (line1xy == x0->xy && x0->objType == "pin")))
  57.                         when(cline0 && cline1
  58.                                 if(axlLineSlope(cline0->startEnd) != axlLineSlope(cline1->startEnd) then
  59.                                   linex = axl_ol_ol2(cline0->startEnd cline1->startEnd)
  60.                                         startxy0 = car(remd(line0xy cline0->startEnd))
  61.                                         startxy1 = car(remd(line1xy cline1->startEnd))
  62.                                         while(car(linex) != cadr(linex)
  63.                                                 tt = list(startxy0 axlMUniVector(startxy0 car(linex) axlDistance(startxy0 car(linex))+nth(2 linex)))
  64.                                                 tt0 = list(startxy1 axlMUniVector(startxy1 cadr(linex) axlDistance(startxy1 cadr(linex))+nth(2 linex)))
  65.                                                 linex = axl_ol_ol2(tt tt0)
  66.                                         )
  67.                                        
  68.                                         tt = ncons(nil)
  69.                                         tt->width = cline0->width
  70.                                         tt->layer = cline0->layer
  71.                                         tt->netname = cline0->net->name
  72.                                         tt0 = ncons(nil)
  73.                                         tt0->width = cline1->width
  74.                                         tt0->layer = cline1->layer
  75.                                         tt0->netname = cline1->net->name
  76.                                         axlDeleteObject(cline0)
  77.                                         axlDeleteObject(cline1)
  78.                                         axlDBCreateLine(list(car(linex) startxy0) tt->width tt->layer tt->netname)
  79.                                         axlDBCreateLine(list(car(linex) startxy1) tt0->width tt0->layer tt0->netname)
  80.                                         when(via0
  81.                                                 axlChangeNet(via0 tt->netname)
  82.                                         )
  83.                                         when(via1
  84.                                                 axlChangeNet(via1 tt->netname)
  85.                                         )
  86.                                         unless(car(linex) == via0->xy || car(linex) == via1->xy
  87.                                                 when((tt->layer != tt0->layer)
  88.                                                         axlDBCreateVia(car(axlCnsGetViaList("")) car(linex) tt->netname)
  89.                                                 )
  90.                                         )
  91.                                 else
  92.                                         linex = axl_ol_ol2(cline0->startEnd cline1->startEnd)
  93.                                         when(axlLineSlope(cline0->startEnd) == axlLineSlope(list(car(linex) cadr(linex)))
  94.                                                 axlDBCreateLine(list(car(linex) cadr(linex)) cline0->width cline0->layer cline0->net->name)
  95.                                                 unless(car(linex) == via0->xy || car(linex) == via1->xy
  96.                                                         when(cline0->layer != cline1->layer
  97.                                                                 axlDBCreateVia(car(axlCnsGetViaList("")) cadr(linex) cline0->net->name)
  98.                                                         )
  99.                                                 )
  100.                                         )
  101.                                 )
  102.                         )
  103. ;                        when(cline0 && pin1 || cline1 && pin0
  104. ;                                println(axlLineSlope(list(line0xy line1xy)))
  105. ;                                println(axlLineSlope(cline1->startEnd))
  106. ;                                println(pin0)
  107. ;                        )
  108.                 )
  109.         )
  110.         axlDBRefreshId(nil)
  111.         axlDBTransactionCommit(mark)
  112.         axlUIPopupSet(nil)
  113. )
  114. )
复制代码

作者: ccwwbb2013    时间: 2023-12-17 21:44
执行了 没什么反应
作者: chengyingwudi    时间: 2023-12-18 09:45
请大佬说明使用方法,没有反应
作者: Omar_Felix    时间: 2023-12-18 13:08
chengyingwudi 发表于 2023-12-18 09:45
请大佬说明使用方法,没有反应

执行命令后点飞线

作者: ms19961009    时间: 2023-12-22 10:47
113
作者: 雞翅加辣    时间: 2024-4-19 10:33
我17.4
load "Cline_Link.il"後
跳到command下 ˋ執行Cline_Link 會出現 >> 亂碼
就算點了鼠線也沒作用,請問跟語言或版本有關係嗎?


作者: zwzlove    时间: 2024-6-29 22:28
66666666666666
作者: zwzlove    时间: 2024-6-29 22:34
ccwwbb2013 发表于 2023-12-17 21:44
执行了 没什么反应

果然没什么反应





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2