• 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 search for specific devices/models into spectre netlist...

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 144
  • Views 2177
  • 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 search for specific devices/models into spectre netlist?

marcelpreda
marcelpreda over 11 years ago

 Hi there,

 I want to know if it is possible with SKILL functions to scan a spectre netlist for specific devices.

We have a spectre netlist file and we want to search for devices of a specific model or devices with specific properties (e.g. w < 0.XX um ).

If such devices/instances are found  to warn the deigner:

            In cell ABC we found device D (model=model_X, w=0.zz )

And based on those info he shoudl decice if really want to run the simulation of not.

 

 Do we have such things in SKILL?

I want to run it from command line, some other scripting is OK if SKILL has no such functionality.

Best Regards,

Marcel

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    Hi Marcel,

    Not sure SKILL is really the right way to do it for a spectre netlist. You can do this directly in spectre though using spectre's assert statement. For example:

    //
    // example of showing an assert statement to range check
    // a transistor size

    model nch bsim4 type=n
    model pch bsim4 type=p

    subckt block1 (a y vdd vss)
    MP1 (y a vdd vdd) pch w=0.4u l=0.2u
    MN1 (y a vss vss) nch w=0.5u l=0.2u
    ends block1

    subckt block2 (a y vdd vss)
    I1 (a b vdd vss) block1
    I2 (b y vdd vss) block1
    ends block2

    top (n1 n2 vdd 0) block2
    v1 (n1 0) vsource type=pulse val0=0 val1=1 rise=1n period=20n width=10n
    vdd (vdd 0) vsource dc=1

    // here's the check
    smallMos assert mod=pch param=w min=0.5u message="nch transistor too small"
    // in this case I've told it to write to a file; if this is not given, it
    // will write in the simulation log file (see spectre -h options for other check options)
    myOptions options checklimitfile="asserts.out"

    tran tran stop=1u

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • marcelpreda
    marcelpreda over 11 years ago

     Hi Andrew,

    The assert and checklimit statements solved a part of my problem: I can find the small devices.

    But I'll need one more thing: I want to not allow some specific devices in the netlist, or at least to provide a warning if they exists.

    The problem is that those devices are defined as "inline subckt.."

    E.g.

    inline subckt phx (d g s b)
    parameters
    *
    + w             = 1
    + l             = 1
    ...

    ends  phx

    And I want to warn the designer if the the netlist I have at least one phx `device'.

    I've try to use something like:

    // check for unwanted devices

    // 0.01u is below minimum allowed by technology

    notAllowedModel assert mod=phx param=w max=0.01u message="model phvt not allowed"

    But I get next warning in the log: Specified model `phx' was not found. Assert is ignored.

    Of course I can write a script in any other languge and parse the ascii file,but we have the include statements.Files that include other files that include other files that... and so on. I guess that if there is a buitin command in spectre it will be much faster.

    Best Regards,

    Marcel

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    Hi Marcel,

    For a subckt (or inline subckt) model, you can't use mod=... - you need to use sub= or subs=. For example, one of these:

     badMos assert sub=phx param=w max=0.01u message="not allowed to use phx"

    or

     badMos assert subs=[phx] param=w max=0.01u message="not allowed to use phx"

    The subs option allows you to give a list of subckt masters instead.

    I tried this using this netlist:

    //
    // example of showing an assert statement to range check
    // a transistor size

    model nch bsim4 type=n
    model pch bsim4 type=p

    inline subckt nchbad (d g s b)
    parameters w=1u l=1u
    nchbad (d g s b) nch w=w l=l
    ends nchbad

    subckt block1 (a y vdd vss)
    MP1 (y a vdd vdd) pch w=0.4u l=0.2u
    MN1 (y a vss vss) nchbad w=0.5u l=0.2u
    ends block1

    subckt block2 (a y vdd vss)
    I1 (a b vdd vss) block1
    I2 (b y vdd vss) block1
    ends block2

    top (n1 n2 vdd 0) block2
    v1 (n1 0) vsource type=pulse val0=0 val1=1 rise=1n period=20n width=10n
    vdd (vdd 0) vsource dc=1

    // here's the check
    smallMos assert mod=pch param=w min=0.5u message="nch transistor too small"
    //badMos assert subs=[nchbad] param=w max=0.01u message="not allowed to use nchbad"
    badMos assert sub=nchbad param=w max=0.01u message="not allowed to use nchbad"
    // in this case I've told it to write to a file; if this is not given, it
    // will write in the simulation log file (see spectre -h options for other check options)
    myOptions options checklimitfile="asserts.out"

    tran tran stop=1u

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • marcelpreda
    marcelpreda over 11 years ago

     Hi Andrew,

    "subs" is exactly what I want.

    Started to read Spectre Circuit Simulator User Guide :D, it seems to be extreamly powerful.

    BR,

    Marcel

    • 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