menu and nesting/bindkeys

Discussion in 'Cadence' started by eric.d.fitzsimmons, Nov 20, 2008.

  1. Hello All,

    This is my first post.

    I have been a IC Layout Designer for over 11 years, but had been
    working for Intel which mostly uses Intel tools(galaxy and genesis).
    The company I work for uses Vitruoso and I really like it, especialy
    the cross probe feature as Intel tools do not have this. Our group
    is mostly analog and hand routes everything.

    My question

    I am trying to write a small procedure that calls the contact form
    (code below) and fills out the form for a 2x2 via2 and bind this to a
    key(this part works fine). The problem is the form comes up but the
    values do not get changed. If I bring up the form and then change the
    values it works fine. How do I make a procedure that brings up the
    form and changes the value in one procedure?

    procedure(via2x2()
    leHiCreateContact()
    le0ContactForm->contactType->value = "v23"
    le0ContactForm->rows->value = 2
    le0ContactForm->columns->value = 2
    )

    Thank you in advance for any help,
    Eric
     
    eric.d.fitzsimmons, Nov 20, 2008
    #1
  2. eric.d.fitzsimmons

    jack Guest

    Hi Eric,

    Try putprop function it will change the form properties online.

    Example,

    putprop(get(eval(le0ContactForm) 'contactType) "v23" 'value)


    Regards,
    Jagadeesh.
     
    jack, Nov 21, 2008
    #2
  3. Hi Jagadeesh,

    I took your advice with some success, the putprop has the same problem
    I was running into as it isn't passing the values back to the form.

    Do you have any idea?

    Thank you for replying,
    Eric


    procedure(via2()
    leHiCreateContact()
    putprop(get(eval(le0ContactForm) 'contactType) "v23" 'value)
    putprop(get(eval(le0ContactForm) 'rows) 2 'value)
    )
     
    eric.d.fitzsimmons, Nov 21, 2008
    #3
  4. eric.d.fitzsimmons

    Guest Guest

    I'm pretty sure that using the arrows is the same as using putprop.

    The problem is if the form fields are set by the procedure that brings up the
    form, then setting what you are trying to do just won't work.

    You could try setting the default values as well as the values (form->field->
    defValue = <whatever>). That might help. However, if the form is recreated
    each time, that won't help either.

    If there are envvar values that correspond to the form values, changing those
    might help.

    (I'm not familiar with the contact form, so I can't be more specific.)

    -Pete Zakel
    ()

    "Go placidly amid the noise and waste, and remember what value there may
    be in owning a piece thereof."
     
    Guest, Nov 21, 2008
    #4
  5. eric.d.fitzsimmons

    eyn Guest

    The problem lies with the leHiCreateContact() function, it basically
    waits for form inputs and the code after this function will not be run
    until the form is unmapped. Assuming that the le0ContactForm has been
    displayed at least once, you could rearrange your code as follow:

    procedure( via2x2()
    le0ContactForm->contactType->value = "v23"
    le0ContactForm->rows->value = 2
    le0ContactForm->columns->value = 2
    leHiCreateContact()
    )

    That will probably work. Not at work right now so I'm not able to test
    it out myself. :p
     
    eyn, Nov 25, 2008
    #5
  6. I ended up with attaching a replay file to the bindkey using
    hiReplayFile. It works.

    Thanks,
    Eric
     
    eric.d.fitzsimmons, Dec 2, 2008
    #6
  7. Eric, if you do the following:

    procedure(via2x2()
    leSetEnv("contactName" "v23")
    leSetEnv("contactRows" 2)
    leSetEnv("contactColumns" 2)
    leSetEnv("contactResetRowCol" nil)
    leHiCreateContact()
    )

    It will do what you want. The Create contact form takes values from the cdsenv
    settings, and so these can be seeded - that way you don't hit the problem with
    the form being blocking.

    Alternative approaches (to using a replay file) are to use hiRegTimer() to
    register a bit of SKILL which fills in the form when the UI toplevel has
    returned - but that's unnecessary in this case.

    Regards,

    Andrew.
     
    Andrew Beckett, Dec 20, 2008
    #7
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.