• 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. Try to create bus by dbCreateNet in PCell

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 143
  • Views 10751
  • 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

Try to create bus by dbCreateNet in PCell

morrris
morrris over 4 years ago

Hi, Cadence Family

Is dbCreateNet only for one bit net? Cannot for bus?

I've created nets like IN<3:0> and try to assign IN<3> to pin "S" of mos, but it's not work.

Here is my code

let((library pcellId)
  library="test"

  unless(ddGetObj(library) error("Couldn't open library %L" library))
  ;{{{Schematic
  pcellId=pcDefinePCell(
    list(ddGetObj(library) "test" "schematic" "schematic")
    ;Formal parameters
    (
    )

    ;Build itself
    let((pcCV tsx tsy instId)
      pcCV=pcCellView
  tsx=0.0625 ;x space
  tsy=0.04375 ;y space
  masterIopinCv=dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
  masterIpinCv=dbOpenCellViewByType("basic" "ipin" "symbol" nil "r")
  masterOpinCv=dbOpenCellViewByType("basic" "opin" "symbol" nil "r")
  dbCreatePin(dbCreateNet(pcCV "VPP") dbCreateInst(pcCV masterIopinCv "VPP" 1-tsx:1 "R0"))
  dbCreatePin(dbCreateNet(pcCV "IN<3:0>") dbCreateInst(pcCV masterIpinCv "IN<3:0>" 1:0.875 "R0"))
  dbFindNetByName(pcCV "VPP")->term->direction="inputOutput"
       dbFindNetByName(pcCV "IN<3:0>")->term->direction="input"

  masterCv=dbOpenCellViewByType("analogLib" "nmos4" "symbol" nil "r")
  setq(x 1.5) setq(y 1)
  instId=dbCreateInst(pcCV masterCv "MN0" (x:y) "R270" 1)
  dbCreateInstTerm(dbFindNetByName(pcCV "VPP") instId dbFindTermByName(masterCv "B"))
       dbCreateInstTerm(dbFindNetByName(pcCV "IN<3>") instId dbFindTermByName(masterCv "S"))


  dbClose(masterIopinCv)
  dbClose(masterIpinCv)
  dbClose(masterOpinCv)
  dbClose(masterCv)
  t
  );end let
  );}}}end pcDefinePCell
  dbSave(pcellId) dbClose(pcellId)
);let

Your help will be appreciated.

Virtuoso version IC6.1.7-64b.500.21

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    When you create a bused net, it creates "signals" (sometimes referred as "implicit nets") for each of the members of that bus, but you need an explicit net called IN<3> to use for the instTerm. You could use:

      dbCreateInstTerm(dbMakeNet(pcCV "IN<3>") instId dbFindTermByName(masterCv "S"))

    to do this (dbMakeNet returns the net if it exists, or creates it otherwise; it will be an explicit net that is a member of the bus net).

    Andrew.

    • 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