• 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 Design
  3. Prevent simulation of specific cell views

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 124
  • Views 8300
  • 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

Prevent simulation of specific cell views

FormerMember
FormerMember over 5 years ago

Hello,

I have a cell for a layouted cell, which contains a schematic and an extracted view. The schematic is required for LVS and must be called 'schematic', but it should not be simulated directly. Is it possible to somehow prevent the simulator to run the simulation, if the schematic instead of the extracted view is netlisted? I thought of some additional cell, placed in the schematic, which is ignored for LVS but generates an error if netlisted. Or may be a netlistProcedure for the cell directly, which checks if the schematic is used?

  • Cancel
Parents
  • ShawnLogan
    ShawnLogan over 5 years ago

    Dear Paul,

    Is there a reason you cannot create a config view of your test bench and instantiate the extracted view name of your circuit under test in lieu of the schematic view? It seems as this will totally avoid the possibility that your schematic view is used in netlisting. However, I may not fully appreciate your problem.

    I can think of a few ways to verify a netlist does not use the schematic view of a given cell, but using a config view appears to eliminate the possibility.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to ShawnLogan

    Hi Shawn, of course the config view is the default method used. It is just a safety measure, since 'schematic' is part of the standard view list, but the config has to be manually activated. It happend before, that people simulated with the schematic without noticing.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to ShawnLogan

    Dear Paul,

    Unknown said:
    It is just a safety measure,

    I now understand your motivation - thank you!

    The following article details one method in which you essentially "black box" your device under test with a symbol that contains its inputs and outputs. The netlist you wish to actually use in your simulation is added as an include file. Hence, the netlister does not netlist your design when it is invoked as the black box. This assumes you have a copy of the netlist created from the extracted view of interest.

    https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nXEGEA2&pageName=ArticleContent

    A second method might be to run a script before running a simulation where the script examines the netlist and verifies the cell under test uses an exracted view. Assembler supports the use of a pre-run script using ocean. Ocean can access the UNIX shell - so your script might also be a shell script using sed and awk to examine the netlist. A link to setting up a pre-run ocean script in Assembler is:

    https://support.cadence.com/apex/techpubDocViewerPage?xmlName=assembler.xml&title=Virtuoso%20ADE%20Assembler%20User%20Guide%20--%20Running%20Simulations%20-%20Running%20Pre-run%20Scripts%20before%20Simulation%20Runs&hash=pgfId-1059142&c_version=ICADVM18.1&path=assembler/assemblerICADVM18.1/asmSimulating.html#pgfId-1059142

    Hope this provides some help anyway...

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to ShawnLogan

    Dear Paul,

    Unknown said:
    It is just a safety measure,

    I now understand your motivation - thank you!

    The following article details one method in which you essentially "black box" your device under test with a symbol that contains its inputs and outputs. The netlist you wish to actually use in your simulation is added as an include file. Hence, the netlister does not netlist your design when it is invoked as the black box. This assumes you have a copy of the netlist created from the extracted view of interest.

    https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nXEGEA2&pageName=ArticleContent

    A second method might be to run a script before running a simulation where the script examines the netlist and verifies the cell under test uses an exracted view. Assembler supports the use of a pre-run script using ocean. Ocean can access the UNIX shell - so your script might also be a shell script using sed and awk to examine the netlist. A link to setting up a pre-run ocean script in Assembler is:

    https://support.cadence.com/apex/techpubDocViewerPage?xmlName=assembler.xml&title=Virtuoso%20ADE%20Assembler%20User%20Guide%20--%20Running%20Simulations%20-%20Running%20Pre-run%20Scripts%20before%20Simulation%20Runs&hash=pgfId-1059142&c_version=ICADVM18.1&path=assembler/assemblerICADVM18.1/asmSimulating.html#pgfId-1059142

    Hope this provides some help anyway...

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to ShawnLogan

    Paul,

    A couple of approaches I can think of for this, and I've attached a small example (mylib/lvsblock - with three views, schematic (the LVS schematic), schematicSim (for simulation), and schematicAssert (using a different approach to block simulation)).

    The simplest approach is to just place two voltage sources in parallel in your LVS schematic (I had them with different voltages just in case we ever do some optimisation to collapse identical voltage sources in the future). The vdc component in analogLib already has lvsIgnore=true so it will get skipped for CDL netlisting. Spectre will then fail with:

    Fatal error found by spectre during topology check.
        FATAL: The following branches form a loop of rigid branches (shorts) when added to the circuit:
            I0.V1:p (from I0.net8 to I0.net7)

    Looking at the schematic for I0, the user would see a big label describing why it fails and that this is for LVS purposes.

    A second approach can seen in the view schematicAssert. This has an instance of a component called failSim (in the same library) which I just created a symbol with no pins, and then defined CDF to netlist it as a spectre assert statement (note I didn't need to write any custom netlist procedure - you can do this just with appropriate CDF settings, as can be seen in the CDF for failSim). The simulation then fails with:

    Fatal error found by spectre at time = 1 ns during transient analysis `tran'.
        FATAL (SPECTRE-4055): I0.I0: This schematic is for LVS purposes only. Expression `1' is true.

    This might be a bit more explicit. The downside is that asserts can be turned off (-docl on the spectre command line, and dochecklimit=no on the Simulation->Options->Analog Check tab). The failSim also has lvsIgnore=t on it, plus nlAction=ignore on the auCdl view for good measure (shouldn't be necessary, but just in case!)

    Anyway, a couple of choices for you to explore.

    Regards,

    Andrew.

    https://community.cadence.com/cfs-file/__key/communityserver-discussions-components-files/38/lvsSchematic.tgz

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • FormerMember
    FormerMember over 5 years ago in reply to Andrew Beckett

    Hi Andrew, thank you for the effort. The approach with the assert is exactly what I was looking for. I can even specify the message directly for the simulator output.

    • 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