Need to find end of path command point in virtouso.

Guest
I work in a small analog layout group. Currently routing is done by
using create path command and Create Contact command. I am trying
to create code that would start a path in say Metal 1 by pressing the
1 key, press 2 and a via1 would drop and path would start with a set
width, press 3 and a via2 would drop and path would start with a set
width.

My first problem I ran into is I cannot capture the exact coordinate
of the termination of the path. I would need the the coordinate of
the center-end of the wire and drop the via there. Currently using
hiGetPoint(hiGetCurrentWindow() only gets one coordinate. For
example if I am routing metal 1 horizontally the hiGetPoint.. will get
the Y coordinate but the X would come from my cursor position.

I have all the code below except the Replay files mentioned, but I
have an example of what is in the replay at the bottom if anybody
wants to try to work it out.

Thank you for any help in advance,
Eric



;=====================================================================
;=====================================================================
;This code produces a fixed width of 1.2(via cut of 1 high) for M1, M2
and M3.
;Pressing key 1 will start path at 1.2 width, pressing key 2 will drop
via1 and
;start metal2 at 1.2 width, pressing 3 will drop via2 and start path
for M3
;=====================================================================
;=====================================================================

;=====================================================================
;=====================================================================
;Code below is for vias. One by two for via1 and one by two for
via2
;=====================================================================
;=====================================================================


procedure(drop_via2()
w = windowId = hiGetCurrentWindow()
cv = cellViewId = leGetEditWritableLayout(windowId t)
point=hiGetPoint(hiGetCurrentWindow())
leCreateContact(cv "v23" point "R0" 0.6 0.6 1 2 1.2 1.2 "center"
"center" )
)

procedure(drop_via1()
w = windowId = hiGetCurrentWindow()
cv = cellViewId = leGetEditWritableLayout(windowId t)
point=hiGetPoint(hiGetCurrentWindow())
leCreateContact(cv "v12" point "R0" 0.6 0.6 1 2 1.2 1.2 "center"
"center" )
)



;=====================================================================
;=====================================================================
;Procedures for path command(replay file) and via drops. These
procedures are
;attached to bindkeys next
;=====================================================================
;=====================================================================

procedure(metal1at1point2()
mouseApplyOrFinishPoint()
hiReplayFile("/home/fitzsied/c05hma/metal1.rec")
)

procedure(metal2at1point2()
mouseApplyOrFinishPoint()
drop_via1()
hiReplayFile("/home/fitzsied/c05hma/metal2.rec")
)

procedure(metal3at1point2()
mouseApplyOrFinishPoint()
drop_via2()
hiReplayFile("/home/fitzsied/c05hma/metal3.rec")
)

hiSetBindKeys( "Layout" list(
list("1" "metal1at1point2()");
list("2" "metal2at1point2()");
list("3" "metal3at1point2()");
))



;==================================================================
;========Example of hiReplayFile above
;===================================================================
;\a leiMouseSetEntryLayer(11)
;\a leHiCreatePath()
;\a le0PathForm->changePathLayer->value = '(71304596 102 26 "metal3
(drawing)")
;\a le0PathForm->pathWidth->value = 1.2
 

Welcome to EDABoard.com

Sponsor

Back
Top