Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 9635|回復: 10
打印 上一主題 下一主題

[問題求助] 自动调用2个via/contact的问题

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-7-23 16:33:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
3Chipcoin
因为tf或其他的设置使得我用o键调用在tf中建立好的symbolic的cont or via时。默认都是1行一列。而我希望能自动一次调用1行2列或2行1列的cont/via 。我用skill写了一个简单的程序,如下所示:但是由于leHiCreateContact是一个交互命令,会弹出一个窗口。所以目前从第二行开始的语句没有作用。但是我从icfb窗口中逐条输入skill程序中的命令时就可以正确实现我要的功能(即一步操作就可以调用2个cont,而以前要在弹出窗口操作,需要3步)。我也尝试了在.leBindKeys.il 和.cdsenv中相应设置。但没有成功。可能用leCreateContact代替leHICreateContact就可以实现。但这样就不能调用tf中定义的标准symbolic cont/via ,改tf可以实现,但自动填充时就会有问题。并且tf也没权限改。大家帮忙看下如何解决?9 b# I2 L1 c) n% l6 V; S8 k7 `
程序主体如下:9 E- |, R$ Z# D& b& d/ A  ]- D: n
    leHiCreateContact()
1 K4 }- }0 @9 d2 J8 M4 N* H       cv=hiGetCurrentForm()
9 m6 @! Y3 j7 D0 y% v) H      cv->contactType->value="via"
, \1 H0 S& @3 r6 Z5 v# L9 J      cv->rows->value=2
8 i* m5 k8 o7 ~. X$ X; S0 e1 r     hiiToggleEnterForm()

最佳答案

查看完整內容

Hi lnxmj, 既然你懂SKILL,那就請自己參考以下的SKILL code,應該就會找到你要的答案。當然,你該看的懂要改哪裡。有進一步問題,我們再討論看看。 Hope this help, Veteran ====================================================================================== /* This is code to help user quickly set a bindkey for their specific Via by setting row to 2. It combines three actions. 1. Invoke "Create->Contact ...
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2009-7-23 16:33:39 | 只看該作者
Hi lnxmj,& {/ E( c4 z  o$ }3 j! m' t
' p6 Y0 y" f) _  ^
既然你懂SKILL,那就請自己參考以下的SKILL code,應該就會找到你要的答案。當然,你該看的懂要改哪裡。有進一步問題,我們再討論看看。
$ z% t# K# t0 _6 `1 m, X( B0 X
$ D7 R  X/ E! W( kHope this help,
, l% \! x9 V0 U' {' aVeteran
2 \; f' }. R0 F& j& E6 [/ f6 w! l  q  i1 G2 E# k- o' W
======================================================================================) Q& `9 \2 I" e7 H# |2 S
/* This is code to help user quickly set a bindkey for their specific Via by setting row to 2. It combines three actions.
+ c( }1 a$ `% N! D# k! {( X( {; n, x1. Invoke "Create->Contact" function.
. q5 i5 L! N1 {' A- G3 w0 b% p% O4 y2. Pick one specific via type.
# Y1 W6 e% c( C( k3. Set row to 2.
! l" \  E0 J& b( g. lOf course, you can modify the code to fit your environment, ex which via, ex row value, ex which bindkey. And you can also follow the same syntax to add more via you want to use. The following example is to set for 2 kind of Vias, M2_M1 and M3_M2. And the bindey is "1" for M2_M1, "2" for M3_M2.
/ a! C; |  a1 O# n
  M  g- W8 ?( j$ i( MHow to use it?& s2 V, {) f( A" R- H
1) Load this code.
; I! c/ R: Q3 j1 K' J( |2) Press your bindkey to invoke such function.
0 z, }& y) F. h& i9 P7 n/ |) H*/
: U) k* d( K$ Y, B7 b. ], j* c! p% a. H; f% A/ s( Y: g1 t
procedure(CCSRegProc(args)
/ B* D: ~5 z  D% _& M9 K             args
$ w8 r- y! f' e; k' t$ Y" D$ T% e3 ]) Q& |% W( ~
/* Check if the callback for contactType field is present
2 D2 Y# h4 f8 ~$ l3 J) ^4 lBy default there is no callback */% C' _8 g+ y) t  u

8 c1 G$ u$ l. A) ^% ?9 A   unless(boundp('le0ContactForm)9 G( B# k; n' i7 z: x; n
     hiRegTimer("CCScancel()" 1)
! C0 O- n. B9 p- {     leHiCreateContact()6 a9 Z% L+ U- U- l7 t4 d
    ) ;unless
& y% u  [& _" ]8 }) ;proc
+ F  S/ Z7 q" ?/ k6 J: {7 }# l9 A$ b. t" \% Q  k$ ^+ U$ ]
procedure(CCScancel()
7 g* u/ t6 z* I1 z6 O* v& F    hiFormCancel(le0ContactForm). O" u7 G" e! `' [
    cancelEnterFun(le0ContactForm)! [/ s/ C2 Q5 U, w4 j! d
) ;proc  w( T" c6 k' F4 {! Q
# K; V1 K, b; i
+ I/ [% \* N  m  w( l6 C# O
procedure(creatCont_via21_2x1()# p2 U4 ~: Q: z. N
    hiRegTimer("le0ContactForm->contactType->value =\"M2_M1\"" 2)
+ d' i6 `5 S0 a    hiRegTimer("le0ContactForm->rows->value = 2" 5)
8 i+ M, t7 T, |% `    unless(hiIsFormDisplayed(le0ContactForm) leHiCreateContact())
# |2 @* _- V9 k$ e& x9 L);end procedure* N1 J: |8 V, p& _9 a* [
hiSetBindKey("Layout" "<Key>1" "creatCont_via21_2x1()" ). [' [7 X- @. D. D& N

: I9 h$ S' ~7 e& E) t& s  Z
) z! \: a" U3 N6 Y* Rprocedure(creatCont_via32_2x1()
0 h3 M. }7 U9 X: t& O    hiRegTimer("le0ContactForm->contactType->value =\"M3_M2\"" 2)$ e" L: d6 I, |* v1 J/ V. Y* b
    hiRegTimer("le0ContactForm->rows->value = 2" 5)9 l% p6 B% }& b8 `
    unless(hiIsFormDisplayed(le0ContactForm) leHiCreateContact())* c$ i* [/ d: P  X4 t8 D* [- |' E
);end procedure
& h, W' v4 d* w! v6 ChiSetBindKey("Layout" "<Key>2" "creatCont_via32_2x1()" )
8 _* F4 c) t( B! _2 x0 K* r" L" C: T( H4 d* r; R3 a* F
;;you can add more Via like above from here.
回復

使用道具 舉報

3#
發表於 2009-7-23 22:23:22 | 只看該作者
幫頂,我也想知道實現方法。4 I( E5 T8 i' c0 S1 [
4 b6 z5 @) `% f. e6 }4 a# K5 Q

* C' A; K9 D$ p9 o( J! z& v% A* K9 t4 Q另外向樓主請教一個問題,你寫的這個程序保存成什麽格式?放在哪�然後在virtuoso�面就可以調用了?
回復

使用道具 舉報

4#
 樓主| 發表於 2009-7-24 09:11:26 | 只看該作者

就是一般的skill程序

就是一般的skill程序,上述的程序主体做在一个procedure中。在icfb输入行中load就可以了。
回復

使用道具 舉報

5#
發表於 2009-7-25 22:59:01 | 只看該作者
原帖由 lnxmj 於 2009-7-24 09:11 AM 發表 2 |, D5 Q1 d6 m7 ^
就是一般的skill程序,上述的程序主体做在一个procedure中。在icfb输入行中load就可以了。
( J  q3 {" g9 h5 a& T
# H2 E7 i- _* V: `' N
( ~1 R/ @7 f2 }' t9 C
做在一個procedure中具體怎麽做? touch一個文件,然後保存為.cal文件嗎?
回復

使用道具 舉報

6#
發表於 2009-7-25 23:00:57 | 只看該作者
记录下所谓手动三步的操作(可以再log文件查看),写成skill文件,做成快捷键就可以了。
回復

使用道具 舉報

7#
 樓主| 發表於 2009-7-27 09:14:10 | 只看該作者

procedure是skill语言中的类似子程序。

procedure是skill语言中的类似子程序。具体可以看下skill的帮助。
9 F/ @: d( q1 N0 N四楼说的太笼统了。还是没明白我的意思,不知你自己有没有实际run过。: f2 C' K3 z- }" I' ~( |# T
查看手工三步的操作,可以设置完log filter后,更方便的查看。我就是查看完后写的上述语句。也设置了快捷键。
回復

使用道具 舉報

8#
 樓主| 發表於 2009-7-28 15:40:05 | 只看該作者

非常感谢Veteran帮我解答了这个问题。。。。

非常感谢Veteran在百忙之中抽出时间,帮我解答了这个问题。
7 L9 {4 X2 G( L* V0 r( [$ {" R(1)按Veteran您的程序,我修改了相应处,运行成功了。真的非常感谢您。我也明白了:以前我试程序时,为什么不能在leHicreateContact 命令使用前对rows and contactType  赋值。2 G: _0 E  d" d: Q4 s/ _
(2)对您的CCSRegProc procedure,我还是有点不太理解。后面的creatCont_via21_2x1() 主程序并没有调用它。而且他带的输入参数args是指什么?这个procedure是检查是否存在le0ContactFrom 吗?
2 D$ g  h6 Y+ P- P(3)我想实现不出现leHicreateContact 的交互窗口,而直接调用2个via/cont,即在leHicreateContact 后,自动进行类似hiFormCancel(le0ContactForm)的操作。这有办法实现吗?我试了一下不行。感觉是因为只有彻底执行完leHicreateContact,  即关闭le0ContactForm后,才进行后面的语句。是不是要实现这种功能就不能用leHicreateContact,而需要用类似leCreateContact 这样的命令了。" F5 F! F$ \8 G) W) E3 D* [# K
(4)呵呵,问个菜菜的问题。如何将悬赏变成已解决,并给您悬赏的RDB啊。
回復

使用道具 舉報

9#
發表於 2009-7-28 20:37:19 | 只看該作者
回答你相關問題..
- O+ p( c; D# d- n$ v1 B3 h  O9 N# |( t. y2 R: J. F2 Q
Ans2: creatCont_via21_2x1() 就是主程式之一。就是用來打開Create Contact form,然後將symbolic contact選成"M2_M1"那個contact,把row欄位改成2,最後自動在5秒後close create contact form,以便下次又要重新啟動來用。而le0ContactFrom應該就是create contact form的from name。這個不是我寫的,但根據我的理解是如此。但這招用來改變Cadence form的值很好用。' d' U1 b2 u8 w/ j/ S% U4 V
$ ?1 o$ N* z2 j7 \$ @$ ]: K
Ans3: 我不知道你那種方式該如何實現。但其實我連這種使用SKILL去將Create contact變成1x2的方式也不是很喜歡。我寧願設環境變數,讓我可以keep上次的值就好。也就是說,一旦這個Via我上次用成1x2,下次我再挑到這個via時,它就自動記得我上次用的是1x2的。這樣我當然也不用再去改它。6 P7 f& d( y; A
$ c3 z: ^! g( ]* p  R* b
Ans4:我也不知道你要如何給我RDB,哈哈..因為我也不曾給過人家。有幫上忙就好..3 a  H& J8 R) Z- ~; f2 n

2 z: h7 p; O9 k3 u. n+ kVeteran
回復

使用道具 舉報

10#
 樓主| 發表於 2009-7-29 09:52:50 | 只看該作者

呵呵,多谢veteran帮忙。。。。。。。。。。。

verteran:
3 z2 ]" t& t! |/ ~1 U5 B  谢谢您再次详细的帮我解答问题:)
4 ~0 g* w& }% o/ J- Q: f) n  (1)le0ContactFrom就是create contact form的from name,好像是系统默认的。就比如建立path的From,叫le0PathFrom
7 k2 P: S$ `! W$ t' F   (2)您Ans3中的提到的想法很好,肯定也很方便。并且实现这个可能只改.cdsenv就行了。呵呵,我回去试试。
/ _- @& N+ o2 W) u3 _7 k% y  呵呵再次谢谢您的帮助。有机会再向您请教问题。
回復

使用道具 舉報

11#
發表於 2012-5-4 15:06:48 | 只看該作者
不明白 不明白  。。。。。
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-11-16 04:49 PM , Processed in 0.173010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表