• 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 SKILL
  3. How to select all floating wires in a schematic (both connected...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 143
  • Views 4427
  • 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

How to select all floating wires in a schematic (both connected to terminals or not connected to a terminal)

tramt
tramt over 1 year ago

Hi

How to select all the floating nets in a cell at one time (including floating wires that already connected to a terminal or not connected to a terminal)

I read an article here but it only helps to delete floating nets that are not connected to anywhere

community.cadence.com/.../how-to-select-and-delete-all-the-floating-nets-in-a-cell

Thanks and regards

  • Cancel
  • RobMan
    RobMan over 1 year ago

    A net connected to a terminal is not floating.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • AurelBuche
    AurelBuche over 1 year ago in reply to RobMan

    I'm surprised RobMan as your answers are usually more constructive!

    I believe tramt implied wires that are not connected to anything, and wires that are connected to only one terminal.

    Both would raise 'floating net' warnings during check and save but the latter ones are not considered in the script provided in the mentioned support article.

    I would achieve this using schCheck and retrieving the wires associated to the generated warnings (I might have a code to do something similar, if I find an example I will post it later)

    This is the simplest way as it uses the checker which already does what you want.

    It might be overkill as it implies extracting the connectivity etc. and might impact the schematic.

    Otherwise you can analyze wires ends, associated labels etc. but this is much more complicated

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • RobMan
    RobMan over 1 year ago in reply to AurelBuche

    Apologies if you feel I was not constructive. There is no indication that this question relates to a schematic. The need to identify floating nets/shapes is usually more frequently associated with a layout. To be honest I had never paid detailed attention to the schematic check. If a wire is connected to only one pin then I expect the warning. I now see this does indeed say "floating".

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • AurelBuche
    AurelBuche over 1 year ago

    Here's the code that get the floating wires using schCheck

    tramt don't hesitate if you have questions about it as this can appear complex SKILL++ if you are not familiar with Scheme

    ;; `inScheme' used as this is SKILL++ file
    ;; if current file extension is .ils, this can be skipped
    (inScheme
    (let ()
    
      (defun get_floating_wires (cv)
        "Run `schCheck' to extract CV connectivity then return
     the list of wires having an associated 'floating' marker"
        (schCheck cv)
        (foreach mapcan marker cv->markers
          (and (pcreMatchp "floating" marker->msg (pcreGenCompileOptBits ?caseLess t))
               (forall obj marker->objects (equal "line" obj->objType))
               marker->objects
               )))
    
      (defun get_connected_wires (wire)
        "Return the list of wires connected to WIRE (including itself)"
        (let ((done_wires  (makeTable t nil))
              (to_do_wires (list wire))
              )
          ;; to_do_wires is a list of all wires whose neighbours have not been fetched yet
          ;; wires in this list are processed one by one until the list is empty
          (while to_do_wires
            ;; Fetch next wire to process, mark it as done immediately to avoid
            ;; reprocessing it
            (setq wire (pop to_do_wires))
            (setf done_wires[wire] t)
            ;; Add connected wires that have not been processed yet to to_do_wires list
            (foreach obj (dbProduceOverlap wire->cellView wire->bBox 0)
              (when (and (equal "line" obj->objType)
                         (equal obj->net wire->net)
                         (not done_wires[obj])
                         )
                (push obj to_do_wires)
                )))
          ;; Return the list of done wires
          done_wires[?]
          ))
    
      (defglobalfun ab_select_floating_wires ( @key  (cv (geGetEditCellView))
                                               @rest _
                                               )
        "Select floating wires in CV (this implies running `schCheck' which extracts connectivity)"
        ;; Make sure input cellview is a schematic one
        (assert (equal "schematic" cv->cellViewType) "Not a schematic view: %s/%s/%s"
          cv->libName cv->cellName cv->viewName)
        ;; Fetch and select floating wires
        (mapc 'geSelectFig (mapcan get_connected_wires (get_floating_wires cv)))
        )
    
      );closure
      );inScheme
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • AurelBuche
    AurelBuche over 1 year ago in reply to RobMan

    No need to apologize, I was just surprised

    RobMan said:
    There is no indication that this question relates to a schematic.

    You cannot say that though...

    • 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