EDA365电子论坛网

标题: [求問]中斷axlShell [打印本页]

作者: 雞翅加辣    时间: 2025-3-17 14:15
标题: [求問]中斷axlShell
本帖最后由 雞翅加辣 于 2025-3-17 14:17 编辑

Hi 各位大佬,
最近正在研究Phase tune 自動抓constraint maker 數值。
但是我想要當我在進行Phase tune時,可以再度判斷cline的cm數值.
  1. p_3w=sprintf(nil "FORM mini dptune_length %0.2f" rule_3w)
  2. p_2s=sprintf(nil "FORM mini dptune_height  %0.2f" rule_s) ;v2 add
  3. p=sprintf(nil "setwindow pcb;phase_tune;setwindow form.mini;%s;%s;setwindow pcb;" p_3w,p_2s)

  4. bDoFlag = 0 ;先用數字進行測試,以防當機
  5. lEvent =list('PICK 'DBLPICK 'DONE )

  6. while(bDoFlag<2
  7.         rEventID=axlEnterEvent(lEvent nil nil)
  8.         axlClearDynamics()
  9.         bDoFlag=bDoFlag+1
  10.         caseq( rEventID->type
  11.                 (PICK
  12.                         ;取得每次點的cline對象
  13.                         println("pick~~~~~~")
  14.                         result=m_as_3w2s_getcline_byPick(pform)
  15.                         println("~~~1111")
  16.                         if( result then        
  17.                                 printf("~~~~Run Shell:%s \n" p)
  18.                                 println("222222")
  19.                                 axlShell(p)
  20.                                 println("!!!!!go next!!!!?")
  21.                         else
  22.                                 ;bDoFlag=nil
  23.                                 axlFinishEnterFun()  ; 自動結束 Enter 狀態
  24.                         )
  25.                 )
  26.                 (DBLPICK
  27.                         ;取得每次點的cline對象
  28.                         println("dblpick~~~~~~")
  29.                         result=m_as_3w2s_getcline_byPick(pform)
  30.                         println("~~~dbl---1111")
  31.                         if( result then        
  32.                                 printf("~~~dbl~Run Shell:%s \n" p)
  33.                                 axlShell(p)
  34.                                 println("!!!!!dbl --go next!!!!?")
  35.                         else
  36.                                 ;bDoFlag=nil
  37.                                 axlFinishEnterFun()  ; 自動結束 Enter 狀態
  38.                         )
  39.                
  40.                 )
  41.                 (DONE
  42.                         ;bDoFlag=nil
  43.                         axlFinishEnterFun()
  44.                 )
  45.         )
  46. )
复制代码

复制代码
當我不斷點選cline要進行tune線時=>依照log的顯示,看上去並不會一值進入迴圈
  1. "~~~1111"
  2. ~~~~Run Shell:setwindow pcb;phase_tune;setwindow form.mini;FORM mini dptune_length 21.00;FORM mini dptune_height 8.00;setwindow pcb;
  3. "222222"
  4. Pick a Diff Pair Segment for Phase Tune.
  5. "!!!!!go next!!!!?"
  6. last pick: 2423.79 2012.21
  7. last pick: 2349.33 2018.06
复制代码


若我把p="stwindow pcb;phase_tune;setwindeow form.mini;FORM mini dptune_length 17.40;FORM mini dptune_height  4.50;setwindow pcb;DONE",自然也是不可行
會變成完全無法Phase tune.


有沒有人可以指點迷燈QQ

謝謝了!






作者: awesome    时间: 2025-3-17 15:18
我最近也在学SKILL,太难了,遇到问题没法解决
作者: 雞翅加辣    时间: 2025-3-17 15:50
awesome 发表于 2025-3-17 15:18
我最近也在学SKILL,太难了,遇到问题没法解决

因為大家通常都是上來要程式碼的比較多XD
畢竟又會畫圖又會寫skill的人相對少數


作者: db-_-    时间: 2025-3-17 18:18
看不到完整代码,不好判断。
可以先把?cmdType从interactive改成general试试。
作者: 雞翅加辣    时间: 2025-3-24 18:11
db-_- 发表于 2025-3-17 18:18
看不到完整代码,不好判断。
可以先把?cmdType从interactive改成general试试。
  1. (defun m_as_3w2s_main_class () ;執行3
  2.                 prog((cline1_netname  cline2_netname rule_3w rule_2s)
  3.                         when(length(ClineInfo_table[0]) > 0
  4.                                 ;-------------------------------------------------------------------------------------------------------------------------------------
  5.                                 ;cline1's net-name |cline2's net-name | cline1's layer| 2s | 3w | airgap(s)|width(w)|ads_count|static_phase_value|differ_value |ads_s
  6.                                 ;-------------------------------------------------------------------------------------------------------------------------------------
  7.        
  8.                                 ;phase_tune script帶入3w2s
  9.                                 cline1_netname=nth(0 ClineInfo_table[0])
  10.                                 cline2_netname=nth(1 ClineInfo_table[0])
  11.                                 rule_3w=nth(4 ClineInfo_table[0])
  12.                                 rule_2s=nth(3 ClineInfo_table[0])
  13.                                 rule_s=nth(5 ClineInfo_table[0])
  14.                                 ads_s=nth(10 ClineInfo_table[0])
  15.                                 p_3w=sprintf(nil "FORM mini dptune_length %0.2f" rule_3w)
  16.                                 ;p_2s=sprintf(nil "FORM mini dptune_height  %0.2f" rule_2s)
  17.                                 p_2s=sprintf(nil "FORM mini dptune_height  %0.2f" ads_s) ;
  18.                                 p=sprintf(nil "setwindow pcb;phase_tune;setwindow form.mini;%s;%s;setwindow pcb;" p_3w,p_2s)

  19. bDoFlag = t
  20.                                 lEvent =list('PICK 'DBLPICK 'DONE )
  21.                                 while(bDoFlag
  22.                                         rEventID=axlEnterEvent(lEvent nil nil)
  23.                                         axlClearDynamics()
  24.                                         bDoFlag=bDoFlag+1
  25.                                         printf("bDoFlag:~~~~~~%d \n" bDoFlag)
  26.                                         caseq( rEventID->type
  27.                                                 (PICK
  28.                                                         ;取得每次點的cline對象
  29.                                                         println("pick~~~~~~")
  30.                                                         result=m_as_3w2s_getcline_byPick(pform)
  31.                                                         println("~~~1111")
  32.                                                         if( result then       
  33.                                                                 printf("~~~~Run Shell:%s \n" p)
  34.                                                                 println("222222")
  35.                                                                 axlShell(p)
  36.                                                                 println("!!!!!go next!!!!?")
  37.                                                                 axlCancelEnterFun()
  38.                                                                
  39.                                                         else
  40.                                                                 bDoFlag=nil
  41.                                                                 axlFinishEnterFun()  ; 自動結束 Enter 狀態
  42.                                                         )
  43.                                                 )
  44.                                                 (DONE
  45.                                                         bDoFlag=nil
  46.                                                         axlFinishEnterFun()
  47.                                                 )
  48.                                         )
  49.                                 )

  50.                         )
  51.                 )
  52.         )
复制代码
我貼了那一段的程式碼,不過我後來還是放棄這個做法了,實在無解。
您可以試試,就會發現axlShell(p) 沒辦法結束...
p="setwindow pcb;phase_tune;setwindow form.mini;FORM mini dptune_length 14.4;FORM mini dptune_heightaxlShell(p)










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