• 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. Getting report() into a list

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 143
  • Views 13410
  • 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

Getting report() into a list

PhilipN
PhilipN over 9 years ago

I want to get the operating point of a device into a list so I can fiddle about with it....but report() just writes to terminal....how do I get it into a list ?

I do not want to write it to a file.

For example

ocean> report(?param '("vds" "vgs"))


/MN2           
         vds    = 636.4m                   vgs    = 636.4m         
/MNbias        
         vds    = 636.4m                   vgs    = 636.4m  

But I want to put each device into a list with the vds, vgs etc

Thanks

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    Several ways:

    selectResult('dcOpInfo)
    stdobj@0x22fff920
    outputs()
    ("/I7/Q3" "/I7/Q2" "/I7/Q4" "/I7/Q0" "/I7/Q1"
    "/I7/C0" "/IPRB0" "/IPRB1" "/I7/IPRB0" "/I4"
    "/I7/M3" "/I7/M1" "/I7/M2" "/I7/M5" "/R1"
    "/R0" "/I7/R0" "/V2" "/I3/V2" "/I3/V0"
    )
    getData("/I7/M1")->??
    ("ids" -0.0001740973 "vgs" -2.231023 "vds"
    -5.967942 "vbs" 2.768977 "vth" -1.251779
    "vdsat" -0.8417994 "gm" 0.000353436 "gds"
    1.794715e-06 "gmbs" 4.537263e-05 "gameff" 0.4972989
    "betaeff" 0.0003707575 "cbd" 0.0 "cbs"
    0.0 "cgs" 5.84188e-13 "cgd" 2.432e-14
    "cgb" 4.857061e-14 "ron" 34279.34 "id"
    -0.0001740973 "ibulk" 2e-14 "pwr" 0.001039003
    "gmoverid" -2.030106 "isub" 0.0 "stress"
    0.0 "age" 0.0 "he_vdsat" 0.0
    "region" 2 "degradation" 0 "reversed"
    0 "type" 1
    )

    Or you could just do something like this:

    listOfInfo=foreach(mapcar device outputs(?type "mos2") ; change "mos2" to "bsim4" or whatever your models are called
      list(device pv(device "vgs") pv(device "vds"))
    )

    which produced:

    (("/I7/M3" -2.231284 -5.623888)
      ("/I7/M1" -2.231023 -5.967942)
      ("/I7/M2" 1.607134 1.263081)
      ("/I7/M5" 1.607134 1.607134)
    )

    In my simple test case.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • PhilipN
    PhilipN over 9 years ago
    Thanks Andrew - I did something to your last solution but what I did not know about was the "->??" operator - very nice.

    One quick thing - if I use report() I may get something like:

    Type : vcvs
    /Ebuffer
    model = vcvs
    i = -4.374z v = 636.4m pwr = -2.784z
    lx0 = 636.4m lx1 = -4.374z lx2 = 636.4m

    I want to get access to the "model" value (which here is "vcvs")...can't work out how to do this ?
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    The public function for doing this is:

    ocnGetInstancesModelName()
    (("/I7/Q3" "trpnp")
    ("/I7/Q2" "trpnp")
    ("/I7/Q4" "trpnp")
    ("/I7/Q0" "trnpn")
    ("/I7/Q1" "trnpn")
    ("/I7/C0" "capacitor")
    ("/I4" "isource")
    ("/I7/M3" "trpmos")
    ("/I7/M1" "trpmos")
    ("/I7/M2" "trnmos")
    ("/I7/M5" "trnmos")
    ("/R1" "resistor")
    ("/R0" "resistor")
    ("/I7/R0" "resistor")
    ("/V2" "vsource")
    ("/I3/V2" "vsource")
    ("/I3/V0" "vsource")
    )

    which can be given an optional argument which is either an instance name or list of instance names:

    ocnGetInstancesModelName("/I7/M2")
    ("/I7/M2" "trnmos")

    so you could do:

    cadr(ocnGetInstancesModelName("/I7/M2"))
    "trnmos"

    Regards,

    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