• 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. SKILL - lemarknet() highlighting only particular layers

Stats

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

SKILL - lemarknet() highlighting only particular layers

JRP29
JRP29 over 3 years ago

I want to highlight or mark a net in a layout with only particular metal using SKILL. I tried using leMarkNet() with inputs - XY and start layer. But there is no provision to give the stop layer.

Is there any way to highlight a net with only particular layer using SKILL?

  • Cancel
  • AurelBuche
    AurelBuche over 3 years ago

    Hi

    I made you a code snippet from different scripts I had
    Hope this does the job you want

    Don't hesitate if you have any question

    Cheers
    Aurélien


    ;; SKILL++ is necessary for several reasons
    ;; - Parameters can be dependent as they are
    ;; defined in sequential orders (same as letseq)
    ;; - It allows to define local functions but
    ;; provide only the specified ones in global name space
    (inScheme

      ;; Closure so functions are defined locally by default
      ;; Variables defined here are shared between those functions
      ;; but do not pollute global name space
      (let (hl_set)

        (defun reset_hl_set (win)
          "Delete previous highlight set and make sure current one is valid"
          ;; Delete hl_set when it exists already
          (when hl_set (geDeleteHilightSet hl_set))
          ;; Create an highlight set and enable it
          (setq hl_set (geCreateWindowHilightSet win '("hilite" "drawing1")))
          (setf hl_set->enable t)
          (geSetHilightSetHaloParameters hl_set "over" "fadeout" "thin" 20)
          )

        ;; The following function is global thanks to defglobalfun
        (defglobalfun custom_highlight_net_shapes (@key (win (hiGetCurrentWindow))
                                                        (cv  (geGetWindowCellView win))
                                                        ;; Here you can provide either ?net_names as a list of strings
                                                        ;; or ?nets as net dbobjects
                                                        net_names
                                                        (nets (foreach mapcar name net_names (dbFindNetByName cv name)))
                                                        layer_names
                                                   ;; Safety measure and support for future developments
                                                   ;; This avoid issues in case the function arguments change
                                                   @rest _args)
          "Highlight NETS shapes in LAYERS"
          ;; Reset highlight set
          (reset_hl_set win)
          ;; Browse nets
          (foreach net nets
            (when (and net (dbIsId net) (equal "net" net->objType))
              ;; Highlight net figs of the specified layers
              (foreach fig net->figs
                (when (member fig->layerName layer_names)
                  ;; Highlight fig
                  (geAddHilightFig hl_set fig)
                  ))
              ;; Fetch net instance pin shapes as well
              (foreach conn net->memInstTerms
                (setq conn (car conn))
                (let ((inst conn->inst))
                  (foreach pin conn->term->pins
                    (foreach fig pin->figs
                      (when (member fig->layerName layer_names)
                        ;; Best I found here is to highlight instance shapes rectangles
                        ;; Instance figs are not highlighted using geAddHilightFig
                        ;; I believe it would be highlighting the master fig and
                        ;; not the instanciated one
                        (geAddHilightRectangle hl_set (dbTransformBBox fig->bBox inst->transform))
                        ))))
              ));foreach net
          );def

        );closure
      );SKILL++
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • JRP29
    JRP29 over 3 years ago in reply to AurelBuche

    Hi  Aurélien,

    Thanks for the Reply.  Based on my understanding of the script you provided, we need net info to highlight the net. 

    But I only have the XY coordinate information and the desired metal layer information to highlight a net.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 3 years ago in reply to JRP29

    You could create an options file something like this:

    # Do not remove or change these header lines.
    # markNetOptions file version 1.0
    viaLayers(
    Metal3 y0 Metal4 t
    )

    I am wanting to do a mark net with Metal3 - so I created a dummy via using y0 as the via layer (so that doesn't exist), and hence it will only mark Metal3 (if I start from Metal3). Then you can pass ?optionFile to the leMarkNet function.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • JRP29
    JRP29 over 3 years ago in reply to Andrew Beckett

    Thanks Andrew. 
    The above method solved my issue.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • RicardoGV1
    RicardoGV1 over 3 years ago in reply to AurelBuche

    Hi  Aurélien,

    How Am I supposed to use that script? I call the function custom_highlight_net_shapes with different arguments and none works. also called the whole script and don't work. 

    I'm already using .ils file. Also tried with toplevel('ils)

    In case this is the problem, I added a ")" at the end, cause there was missing one and didn't allow me to load the script without it


    getVersion()->virtuoso version 6.1.8-64b
    getVersion("virtuoso")->sub-version IC6.1.8-64b.500.22



    • 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