• 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. Need to highlight a net in layout using Skill

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 143
  • Views 11030
  • 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

Need to highlight a net in layout using Skill

BabaiVLSI
BabaiVLSI over 3 years ago

Need to highlight a net in the layout using Skill. Also would like to customize the result of the highlight by selecting specific metal & VIA layers in the script.

  • Cancel
Parents
  • ebecheto
    ebecheto over 3 years ago

    Hi,

    The function you are looking for is lntAddTrace
    Also it requires Layout XL license to load i think. Here below an example to compile many pictures into one gif extracted for a layout view. Highlighting A<1> B<1> C<1>


    ; while viewing BLOC layout win = hiGetCurrentWindow();=> window:25 colors='("blue" "purple" "red" "orange"  "lime"  "magneta" "pink" "yellow" "cyan")
    ia=308 j=-151 k=457 pattern="mv60_" pin2probe(list(sprintf(nil "A_%d" ia+imv) sprintf(nil "B_%d" j+imv) sprintf(nil "C_%03d" k+imv))) defun(pin2probe (@optional (pinList list("A_18" "B_0" "C_17") )) lntRemoveAllTraces() foreach(mapcar i linRg(0 length(pinList)-1 1);=> (0 1 2) lntAddTrace(win nth(i pinList) ?hilightColor nth(i colors)) ) geRefresh()) for(imv 0 291 names=list(sprintf(nil "A_%d" ia+imv) sprintf(nil "B_%d" j+imv) sprintf(nil "C_%03d" k+imv)) lntRemoveAllTraces() pin2probe(names) filename=sprintf(nil "%s%03d.png" pattern imv) hiWindowSaveImage(?target win ?path filename ?centralWidget t) ) sh(sprintf(nil "convert -delay 5 %s* -layers OptimizeTransparency +map gif_%s.gif" pattern pattern )) sh(sprintf(nil "animate gif_%s.gif&" pattern))

    Hope it helps,

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • ebecheto
    ebecheto over 3 years ago

    Hi,

    The function you are looking for is lntAddTrace
    Also it requires Layout XL license to load i think. Here below an example to compile many pictures into one gif extracted for a layout view. Highlighting A<1> B<1> C<1>


    ; while viewing BLOC layout win = hiGetCurrentWindow();=> window:25 colors='("blue" "purple" "red" "orange"  "lime"  "magneta" "pink" "yellow" "cyan")
    ia=308 j=-151 k=457 pattern="mv60_" pin2probe(list(sprintf(nil "A_%d" ia+imv) sprintf(nil "B_%d" j+imv) sprintf(nil "C_%03d" k+imv))) defun(pin2probe (@optional (pinList list("A_18" "B_0" "C_17") )) lntRemoveAllTraces() foreach(mapcar i linRg(0 length(pinList)-1 1);=> (0 1 2) lntAddTrace(win nth(i pinList) ?hilightColor nth(i colors)) ) geRefresh()) for(imv 0 291 names=list(sprintf(nil "A_%d" ia+imv) sprintf(nil "B_%d" j+imv) sprintf(nil "C_%03d" k+imv)) lntRemoveAllTraces() pin2probe(names) filename=sprintf(nil "%s%03d.png" pattern imv) hiWindowSaveImage(?target win ?path filename ?centralWidget t) ) sh(sprintf(nil "convert -delay 5 %s* -layers OptimizeTransparency +map gif_%s.gif" pattern pattern )) sh(sprintf(nil "animate gif_%s.gif&" pattern))

    Hope it helps,

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • ebecheto
    ebecheto over 3 years ago in reply to ebecheto

    Hi,

    I have discovered that lntAddTrace uses a default constraint group that track the nets trouhgh the polysilicium GATE of the transistor. That can highlight unwanted path (not knowing if it's an open or closed transistor :)

    so you probably wants to change the constraint group to another one : example

    win=getCurrentWindow();=> window:91
    cv=geGetWindowCellView();=> db:0x46c4161a
    techFile = techGetTechFile(cv)
    cstG=car(setof(c techFile~>constraintGroups c~>name=="virtuosoDefaultSetup"));=> cst:0x2371bf1d
    ;or
    cstG = cstFindConstraintGroupIn(techFile "virtuosoDefaultSetup");=> cst:0x2371bf1d
    validLayers=car(setof(o cstG~>objects o~>defName=="validLayers"));=> cst:0x2371ba9d
    validLayers~>??;=> (cst:0x2371ba9d tech db:0x2371c99a cellView nil objType "simpleConstraint" name "C__3" defName "validLayers" layers nil 
    value ("TOP_M" "TOP_V" "M5" "V5" "M4" "V4" "M3" "V3" "M2" "V2" "M1") params nil hard t ID nil description nil)
    ; default Layout XL constraintGroup == "virtuosoDefaultExtractorSetUp" lntAddTrace(win sprintf(nil "Y<%d>" 85) ?constraintGroup "virtuosoDefaultSetup") geRefresh() lntRemoveAllTraces() foreach(mapcar j linRg(0 20 1) lntAddTrace(win sprintf(nil "R<%d>" j) ?constraintGroup "virtuosoDefaultSetup"))

    ++

    • 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