Need to find end of path command point in virtouso.

Discussion in 'Cadence' started by eric.d.fitzsimmons, Dec 5, 2008.

  1. 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
     
    eric.d.fitzsimmons, Dec 5, 2008
    #1
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.