IC6.X question

Discussion in 'Cadence' started by PolyPusher, Sep 30, 2010.

  1. PolyPusher

    PolyPusher Guest

    Hi,

    I am new to Virtuoso IC6.X and wish to do the following.

    I want to make a "bus"(in this case I mean "a collection of nets to be
    routed together" not a vectored bus) in a defined channel. From
    reading the manual it appears I need to make a bus of Geometric Wires
    in the channel and the router will hook up to the bus. Sounds
    good! How do I collect the nets to be routed in the channel and lay
    the bus of Geometric Wires?(I have code to get the nets in a list box
    if that helps us, see how I pulled you and I into a "us")

    What router do I use? Can I specify my bus as routes to be routed?

    Any and all feedback is appreciated.

    Thank you,
    Eric
     
    PolyPusher, Sep 30, 2010
    #1
  2. Which version do you use?
    Why do you think you need *geometric* wires?

    AFAIK, automatic routing and assisted wire edition works only with
    "symbolic" wires, ie. pathsegs in route.
    I'm far from knowledgeable in the automatic router, but in principle:

    - create a bus constraint to collect all the nets
    (this can be already imported from the schematic if you used a constraint
    driven flow)
    - use the "constraints" workspace
    - select the net in the navigator (on the left)
    - create the constraint with the constraint manager:
    (second icon, routing constraint, bus)
    - launch the autorouter (Route|Automatic routing...)
    - selected nets (I assume they are still selected from previous step)
    - route net of type BUS (in the middle)
    - (other settings as wanted...)
    - run

    You can create pre-route which will be used by the router if they are
    deemed helpfull with the CreateWire command. If you do so, you may want to
    use the option "lock existing routes" (options button just below the route
    net of type setting).

    Yours,
     
    Jean-Marc Bourguet, Sep 30, 2010
    #2
  3. PolyPusher

    PolyPusher Guest

    Hello,

    I am using 6.1.4.

    How I came up with Geometric paths is from the manual:

    "Geometric wires are created using paths, pathSegs, and vias that are
    not contained within a route. Paths cannot be placed in routes,
    therefore, paths are always geometric data. Geometric wires can be
    created in L, XL, and GXL. Geometric wires are used for special
    routing (power, ground, clock, and so on). Geometric wires can be used
    to create custom interconnect that auto signal routers do not modify
    when re-routing, ripping-up, and pushing wires. The autorouter does
    not create, delete, or re-route geometric data but it may connect to
    geometric data."

    The last sentence is why I think I want Geometric. I do not want the
    router to attempt to route all these nets ever. I want the router to
    route from my "bus" to each block.

    Maybe if I speak of the floor plan and what I want a bit it will make
    sense, I have a synthesed block that has control signals going to
    three other blocks.

    1. I need all the excusive nets between my synth block and the three
    others in a list of some sort.
    2. From this list I want to lay down wires with nets attached that
    the router can connect to but not change
    3. After placement of the wires from step two(what I was calling the
    "bus") I want the router to route from each block to my wire in the
    shortest distance.

    So, at this point I am confused. It would be ok to use Geometric
    wires and NOT ok to use Symbolic since I cannot have the router change
    the bus, is that correct? However, it sound like you can use
    CreateWire which produces symbolic and lock it. Seems like in this
    case it does the same thing?

    Sounds like I will have to write a script for step 1 above to get a
    list, anyway given to the user to draw a bus from a list(a function)?

    Thank you for your help!
    Eric
     
    PolyPusher, Sep 30, 2010
    #3
  4. Yes. There was a misunderstanding on my part: I though you wanted the
    router to create geometric wires.

    How to make your choice? My understanding (that's not really my area of
    expertise) is that when you DEF out, geometric wires will appear in the
    special net section of DEF, symbolic one in the normal net section and so
    usually you want symbolic one.
    Starting CW/CGW and then (leSetEnv "netNames" "n1,n2,n3") should do what you
    want.

    Constraints are needed for the router considering the nets are a bus and
    apply bus related algorithms.

    If you start from a pin whose net has a bus constraint, CW will
    automatically picks all the other nets of the bus, starting from related
    pins.

    Yours,
     
    Jean-Marc Bourguet, Sep 30, 2010
    #4
  5. PolyPusher

    PolyPusher Guest

    In this case I am calling a bus a subset of parent nets, not a
    vectored bus. I am worried that that
    distinction matters.

    You wrote:
    Starting CW/CGW and then (leSetEnv "netNames" "n1,n2,n3") should do
    what you
    want

    Are you saying start Create Wire OR Create Geometric Wire and for each
    net I can do the above
    Such as:

    Start command
    leSetEnv "MyVectorEdBusName" "n1,n2,n3"
    leSetEnv "NoVectoredVregCNTRLNet"
    leSetEnv "KeepDoingThisUntilYouHaveEnteredAllNetsOfInterest";bus as I
    defined it NOT just a vector.

    Pick a place on the canvas and draw this bus.

    To be careful my list that makes up my bus that I need to draw with
    one CW/CGW could look like this

    "Cat"
    "Dog"
    "Fish"
    "Frog"
    "AnimalControl<0:32>"
    "PETA"

    So from the list above, I want to draw all of them at one time.
    This is possible or no?

    Thanks!
    Eric
     
    PolyPusher, Sep 30, 2010
    #5
  6. No. Interactive commands act on any set of nets (as long as they don't
    have conflicting constraints), automatic one use bus constraints. There is
    purposely no relationship with vectored bits: it is wanted too often to
    split vectored bits in several busses and to group other signal as a bus.
    (leSetEnv "netNames" "Cat,Dog,Fish,Frog,AnimalControl<0:32>,PETA")

    should do what you want (if not, try expanding AnimalControl in individual
    bits: AnimalControl<0>,AnimalControl<1>...)

    Yours,
     
    Jean-Marc Bourguet, Sep 30, 2010
    #6
  7. PolyPusher

    PolyPusher Guest

    Wow, that is great!

    One more thing, do you understand these two sentences from "Wire
    Elements" in the manual

    Geometric Wires
    Geometric wires are created using paths, pathSegs, and vias that are
    not contained within a route.

    Symbolic Wires
    Symbolic wires are created using pathSegs and vias that are contained
    within routes.

    What does the word "route" mean as used in this sentence? Symbolic
    Wires ... "within routes."

    Geometric Wires.... "not contained within a route."

    Thank you for your help,
    Eric
     
    PolyPusher, Sep 30, 2010
    #7
  8. Route is an object in the database. They represent a linear connection
    between two end points (which are terminals, instTerms or "steiner",
    junctions between several routes). Pathsegs, vias (and guides) may be put
    in a route.

    They are used by the routers and my understanding is that interoperability
    implies that it is preferable that they are present.

    Yours,
     
    Jean-Marc Bourguet, Oct 1, 2010
    #8
  9. PolyPusher

    PolyPusher Guest

    Ok, I get it now. Can you place your explanation in the manual ;)
    You have been a great help. I really appreciate it.

    Regards,
    Eric
     
    PolyPusher, Oct 1, 2010
    #9
  10. PolyPusher

    PolyPusher Guest

    Actually I think you meant leSetEnv( "netName" "CAT,Dog,Whatever") ie
    netName not netNames.
    I am not posting this to be difficult, but in case someone tries to
    use the info.

    Thank you,
    Eric
     
    PolyPusher, Oct 1, 2010
    #10
  11. Typo can be a pain to track out. Especially when you don't know if it is a
    typo or a misunderstanding at the source of your problem.

    Yours,
     
    Jean-Marc Bourguet, Oct 1, 2010
    #11
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.