• 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. Behavioral simulation of standard cells: How? (AMS and other...

Stats

  • Locked Locked
  • Replies 11
  • Subscribers 125
  • Views 20785
  • 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

Behavioral simulation of standard cells: How? (AMS and other attempts fail)

itos
itos over 8 years ago

Hi,

I am struggling for many hours with the following: The standard cells in my PDK have the views cmos_sch (transistor level), abstract, adms_vhdlams, verilog.

I would like to perform basic functional testing of basic, custom logic but the transient sim takes forever.

My hope is that abstract, adms_vhdlams or verilog could be used as behavioral model, speeding up the sim by multiple orders of magnitude. However, I have no idea what I am even supposed to do.

I tried the following:

1.) Use the HED to change the views of the cells to abstract and verilog and use Spectre, APS or XPS MS.

In all cases, references to the standard cells do NOT appear in the netlist. Subcircuits containing only standard cells become empty. Hence, the result browser does barely contain any signals and the one it contains are zero.
I am not sure if this is supposed to be the case or not.
Maybe the View List or Stop List needs to be modified? (I tried adding "verilog" to both without success)

If I set the views to adms_vhdlams, then I get an error like:

    ERROR (SFE-23): "input.scs" 22: The instance `I0' is referencing an undefined model or subcircuit, `C12T28SOI_LL_IVX4_P0(VHDLAMS_WRAPPER)'. Either include the file containing the definition of `C12T28SOI_LL_IVX4_P0(VHDLAMS_WRAPPER)', or define `C12T28SOI_LL_IVX4_P0(VHDLAMS_WRAPPER)' before running the simulation.

2.) Using AMS. My normal setup uses ic/6.17.701 and spectre/16.10.187; now I additionally load ius/8.20.006. I again use HED to create a new config and use AMS as a template. I select Plugins -> AMS and AMS -> Initialize.

Now weird things start already because I cannot close the HED any more, nor the CIW (I can only kill virtuoso). An attempt to close either just results in:

*Error* eval: unbound variable - _amsaIeConnectRulesInfo

In any case, I can continue by selecting opening the schematic/ADE L with the config and running the sim with AMS. However, then I get the following error in the CIW:

[...]
---------- End of netlist configuration information   ----------
INFO (VLOGNET-80): The library 'playground_ams', cell 'inv2_ams', and view 'config' has been netlisted successfully.

End netlisting Mar 22 00:19:51 2017
INFO (AMS-1243): AMS OSSN netlisting has completed successfully.
To view the modules, choose Simulation->Netlist->Display.
      ...successful.
create cds_globals...
*Error* IE cards generation failed.
      ...unsuccessful.
      
I tried the same with incisive/14.20.003; or even without either; same results.

3.) Use again HED and pick spectreVerilog as template. However, when opening ADE L, I cannot choose spectreVerilog as simulator. I do not know which configuration/package is necessary to make this visible.


Any ideas of either of these questions/problems??

Thank you!














  • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    OK, there's a lot of things here, but let me try to give a few pointers and hopefully that will move you forward.

    1. An abstract view is for layout purposes. It's a simplified representation of the layout containing pins and blockages and is to help routing tools be able to route more efficiently. It has no use for simulation.
    2. The adms_vhdlams view is almost certainly for Mentor's AdvanceMS mixed-signal simulator and won't work with Cadence simulators. We do have a native VHDL-AMS view type which would work with AMS Designer, but you would almost certainly need to copy the model contents (by creating a new view of the right type and then copying the text from one to the other). Unless you have the Mentor integration you may find you can't open the view in Virtuoso because it doesn't know how to handle it. 
    3. I suspect that the verilog view is just a stopping view for netlisting purposes and doesn't contain the textual verilog description. Usually if it did the view would have been called something like functional or behavioral instead. You can check that by opening up the verilog view.
    4. None of these would work with spectre/APS/XPS anyway, because spectre is a circuit simulator not a logic or mixed-signal simulator. It can understand Verilog-A (which is a subset of Verilog-AMS that only contains the analog portions of the language), but not digital verilog.
    5. If you're going to use AMS with the UNL netlister, you are going to need to use a far newer version than IUS8.2. This is from April or May 2009 - and long predates the UNL netlister. You should use INCISIVE151 or INCISIVE152. That's why you had the _amsaIeConnectRulesInfo errors and the IE cards generation failed messages, and almost certainly why it went horribly wrong.
    6. You probably don't want to use the AMS Plugin in HED; I'd create the config but then use ADE instead (you can start ADE from HED, or you can launch ADE from the configured schematic window as usual and set the simulator to "ams").
    7. If you have picked the view to use as "verilog" in the config, I suspect you'll need to find a verilog definition of the standard cells and include this (via the Simulation->Options->AMS menu)
    8. spectreVerilog was end-of-lifed about the time of the last ice age, and it's finally been removed in IC617 (although there are some small vestiges of it remaining, such as the templates for HED). So don't go there... (it was a very old link between spectre and Verilog-XL, which is a good 20 years or so old).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • itos
    itos over 8 years ago

    Thanks, Andrew, this is so helpful and clarifies a lot! I was not aware of most of the things.

    5. - I will try to get INCISIVE152 (as said I also tried incisive/14.20.003 but maybe that's too old as well).

    For 3.: You are right, it does only contain the symbol, no Verilog. However, now I found files "behavior/Verilog/*.v" in the standard cell directory - probably to be included as you wrote in 7.

    Regarding 4: I know that Spectre is a circuit simulator but in High Performance simulation, there is the choice of digital blocks in "XPS MS". When I select all my (digital) instances of the standard cells as "Digital Subcircuits"/"Digital Instances" I run into the same issue that it runs fast but in turn all the output signals in the results browser are missing ... So at maximum I could use "APS" which is still way too slow.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • itos
    itos over 8 years ago

    Regarding 5-6, I got INCISIVE15.20.022! Unfortunately both issues persists.

    The fact that I cannot close Cadence any more and get the "unbound variable - _amsaIeConnectRulesInfo" error is annoying but not the most important problem.

    However, do you know what *Error* IE cards generation failed means? What are IE cards?
    In the ams/config folder I cannot see any more errors except in artSimEnvLog:

    generate netlist...
    ...successful.
    create cds_globals...
    *Error* IE cards generation failed.
    ...unsuccessful.
    generate netlist...
    ...successful.
    create cds_globals...
    *Error* IE cards generation failed.
    ...unsuccessful.
    generate netlist...
    ...successful.
    create cds_globals...
    *Error* IE cards generation failed.
    ...unsuccessful.

    and .printhdl:

    nchelp: 15.20-s022: (c) Copyright 1995-2017 Cadence Design Systems, Inc.
    nchelp: *W,NOVARF: Unable to find an 'hdl.var' file to load.

    cds_globals.vams contains:

    // Verilog-AMS cds_globals module for top-level cell:
    // playground_ams/inv3_ams.
    // Generated by ADE.
    // Cadence Design Systems, Inc.

    // This is an autoGenerated file, any changes done to this file may get lost.

    `include "disciplines.vams"
    `include "userDisciplines.vams"

    module cds_globals;

    // Global Signals
    wire \vdd! ;
    wire \vdds! ;
    wire \gnds! ;
    electrical \gnd! ;
    ground \gnd! ;

    // Design Variables

    endmodule


    ie_card.scs (whatever that is) is empty.

    (I should also mention that my new test case I created from scratch and only contains one vpulse, res and a cap)

    EDIT: To debug further I created a bare new environment with nothing loaded except ic/6.17.701, spectre/16.10.187, INCISIVE/15.20.022 in a new directory; to make sure it has nothing to do with the PDK. Same IE cards error ...

    EDIT2: The problem is the ic version. With ic/6.16.110 (and below) it works; with ic/6.17.701 I get the issues described.

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

    itos said:
    Regarding 4: I know that Spectre is a circuit simulator but in High Performance simulation, there is the choice of digital blocks in "XPS MS". When I select all my (digital) instances of the standard cells as "Digital Subcircuits"/"Digital Instances" I run into the same issue that it runs fast but in turn all the output signals in the results browser are missing ... So at maximum I could use "APS" which is still way too slow.

    XPS is a FastSPICE mode, which means it's still transistor level (it's not a logic simulator) but the digital transistors can be accelerated considerably. I wouldn't expect that to be a problem if you've saved the signals you want to see. You probably should follow this up via your support channel (Europractice maybe?).

    Anyway, you may well want to pursue an AMS simulation if you have any significant amounts of digital.

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

    The error message reporting in ISR1 of IC617 was problematic, from what I can see from some CCRs, and this was improved in IC617 ISR4 (IC6.1.7.500.4).

    I think the issue is probably that either you don't have a library called connectLib in your cds.lib or it's pointing at a version not from the INCISIVE152 release (oh, and you should have run the configure step when installing INCISIVE152).

    You might want to add this to your cds.lib:

    INCLUDE $(inst_root_with:tools/bin/irun)/tools/inca/files/cds.lib

    that should add a bunch of libraries from the INCISIVE installation into your available libraries, including connectLib, which is needed for the connect models (instances of which are known as "Interface Elements", which is what the "IE card" is all about). These control how digital <-> analog conversion is done at the boundaries between the digital and analog domains.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • itos
    itos over 8 years ago
    Hi Andrew,

    You are absolutely amazing!

    Yes, the cad admin forgot to run the script to generate the connectLib. I generated the files locally, manually running the script, included connectLib and the inca cds.lib as suggested and now it works - even for IC617 up to this point!

    I figured some parts out meanwhile (like I need this connectLib) but these things are so complex that it is extremely hard to get it done from scratch.

    I gave up finding a solution on this.

    Thanks again!
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • itos
    itos over 8 years ago

    Well, there is unfortunately one small thing left: I have a bunch of VEC files which drive my input nets and work perfectly when used in spectre.

    Now with AMS, they seem to be ignored; the nets are always at 0V. I figure the simulation files setup is slightly different (hlCheck missing) for AMS in ADE L but I get the message in the output log that my file has been read.

    I found your remark on this: community.cadence.com/.../28218
    and connected 1fF cap on all input networks to ground. Now I see 0V (instead of "invalid").

    I also created a testnet "TEST" with 1M to ground (so definitely no digital network) driven by this vec file:


    radix 1
    vname TEST
    io    i
    ; waveform parameter setting
    tunit 1e-09
    slope 0.1
    vol   0
    voh   1
    vil   0
    vih   1

    ; tabular data
    0.000000e+00   1
    2.000000e+01   0



    Is there anything known about vec files that work perfectly with the same circuit in spectre but not AMS?

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

    This is a scoping problem. Because of how irun works, you can actually have multiple top-level modules (as  you can tell by the fact there is both the design and the cds_globals module), and so it needs to know which module the signals in the vector file are related to.

    The vname entries are normally hierarchical paths with "." as the hierarchy separator. You have to include the top cell name at the beginning though (this is the module name), so if your top level cell (the test bench) was called topCellName you'd have to change it to:

    vname topCellName.TEST

    I tested this with the vector file you posted with the 1Mohm resistor example, and it solved the problem.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • itos
    itos over 8 years ago
    Again - worked immediately. Would have never guessed.

    Thank you!!
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Daniel Xu
    Daniel Xu over 7 years ago in reply to itos

    Hi itos and somebody who found this post with the same problem

    I just would like to add one more solution here.

    In ADE, Setup --> Connect rules/IE Setup --> Check Connect Rule/Connect Module Based Setup

    Then, it would work. The default one is "Interface Element/IE-card Based Setup (OSS/UNL), and I think this is the reason why the netlister did not work since nothing was setup.

    I think maybe in previous versions of IC617, the default  one was not "IE-based".

    Regards!

    • 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