• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. VLS-XL Assign instance pin to net - automatically create...

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 130
  • Views 4146
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

VLS-XL Assign instance pin to net - automatically create net on clicked target?

caver456
caver456 over 8 years ago

For this case, we are starting with a layout mostly done in L that has pcells but has no nets at all.

In XL, when using Connectivity -> Nets -> Assign to assign an instance pin to a net, the desired target (i.e. the second thing that it prompts you to click) is a shape or another instance terminal that has no net.  In other words, "we want to connect this pin on this pcell resistor to this other simple connectivity-free piece of metal over here."  Apparently, in the Assign command, the target has to be (a shape or via on) an existing net.

While VLS does make it easy to assign a net to the target before running Assign (set the net property on the target shape/via, or add a label and Extract Layout, etc), in this case, we don't really care what VLS thinks the net name is - we just want to see the flight and drag lines.

Is there a way to have Assign automatically create an arbitrary net with a unique net name on the clicked target, which would get rid of the need to take steps to make sure the target is a net before running Assign?

  • Cancel
  • Alex Soyer
    Alex Soyer over 8 years ago

    Hello,

    In the past we had such capability to auto assign net on floating shapes but it has been removed because we had nobody using it.

    Could you please open a ticket on the customer support in order for us to have a good case to resurrect this functionality?

    As Mark explained it is much better/easier to have a schematic or a LVS result in order to bring back the connectivity.

    A way to do what you want to do but which is much more painful is to select the instances one by one and to assign their terminals with Connectivity > Net > Propagate (assigning the terminals to a net which has the same name as the terminal ). The connectivity extractor would then propagate automatically the connectivity to shapes touching the instance terminals. The problem with that could be to have same net name assigned which is not what you want. 

    Thanks,

    Alex

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Marc Heise
    Marc Heise over 8 years ago
    Hi,

    I can't understand the motivation behind doing that. It's a lot of effort to build a connectivity out of nothing in the layout space, basically negating the
    intention of Layout XL to provide semi automation and doing layout with much less effort. You may have reasons.

    Maybe it's easier and faster to manually build the schematic? Place your pins and devices ( ignore parameters to speed it up ) and wire them. Do the binding
    to the layout. If the devices are bound you can update the schematic parameters from the layout source.

    For creating nets out of thin air:
    Can you do SKILL? I can't provide a complete solution but give some pointers.

    You basically need a routine to:
    1. get the selected shape and test if there is a net allready ( shape=car(geGetSelSet()); if !shape~>nets ... )
    2. if there is no net/netTerm, you need to create a new one in the db ( net = dbCreateNet(cv "B") ; netTerm = dbCreateTerm(net net~>name "inputOutput") )
    ofcourse you have to make sure the new netname does not exist already.
    3. add the shape to the net and make it sticky ( dbAddFigToNet(shape net) shape~>lxStickyNet=t )

    Kind regards,
    Marc
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • caver456
    caver456 over 8 years ago
    I've got to agree that this limited case would probably not be a compelling enough reason for Cadence to bring this feature back - would we be the first and only to mention it, or, are you looking for more votes to help decide whether it's worthwhile? If it turns out to be something we use a lot, Marc's suggestions will probably work out nicely.

    The instance pins are not yet touching the floating shapes - the goal is to see flight and drag lines between the two disjoint items, so, it doesn't sound like Propagate would be a fit there. So far I've been using two methods to create new nets: 1) add a label somewhere on the floating shape or something already connected to it, then extract layout with Layout XL Options -> Connectivity -> Controls -> Connectivity Assignment -> Assign shapes from attached labels checked; and 2) edit a floating shape and give it a (new, unique) net name directly. Basically we go with option 1) where we've already drawn labels during the VLS-L layout process, and option 2) elsewhere. Keeping the Navigator open and viewing the list of nets is a good way to make sure you can pick a unique net name; I've just been going with the alphabet but zero-padded numbers would probably work better for viewing in the navigator.

    The schematics we use are not from Cadence, so, we use a CDL-like spice-like netlist to LVS against and that's really the only "connectivity source" we have to go from. As far as VLS-XL goes, there is no connectivity source. I've messed with SpiceIn a bit, and gotten it to work a few times for small test cases, but massaging our netlists to be fully usable by SpiceIn may not be an effective use of time. We've got some SKILL code to do a limited equivalent of "Generate all from source" by reading the netlist, and it's been a big help so far, but this was built for VLS-L and does not yet do connectivity - just devices. Now that we may have more access to XL for the long term, we'll probably try to add connectivity generation to that code.

    Still, that code enhancement would address the case where we are starting a new cell, with an existing CDL as the "source". What we're really looking for here is a workflow to address the mid-stream case, where a lot of layout work has been done using VLS-L in a given cell (i.e. all the fets) and we want to use the flight lines and drag lines in VLS-XL for the remainder of the layout (analog devices, blocks, etc).
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • caver456
    caver456 over 8 years ago
    Creating a schematic from scratch to get the connectivity for the bits that we want sounds like an interesting option. Will probably try that out and see how it stacks up against other options (i.e. making the nets by hand like we're doing now, or working the SKILL).

    It sounds like the SKILL solution would be fairly straight forward like you point out, and could mimic the user behavior of Connectivity -> Nets -> Assign, and maybe even map it to that menu entry. Would it be better and more expedient to ask for a CCS SKILL routine, or, to code it ourselves?

    After you mentioned it, I just read up some on the sticky net topic. How does lxStickyNet interact with Layout XL Options -> Connectivity -> Controls -> Connectivity Assignment -> Keep shape assignment? The docs on that checkbox are a bit vague.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information