• 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. Verilog A: Error on altering 'paramerized' module

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 125
  • Views 1532
  • 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

Verilog A: Error on altering 'paramerized' module

akak
akak over 6 years ago

Below's the exact violation I get. How can I fix it?
FATAL (SFE-2218): "/users/Projects/alpha/models/bsim-cmg_110.00/benchmark_test/modelcard_ak_verilog.nmos.lib" 206: It is not permitted to alter the paramerized module for the instance (`Mmain') currently.

Some background:

1. I downloaded the BSIM-CMG Verilog-A model. Then I followed the instructions from Andrew Beckett in this post 1332112 to create a simulatable cell cell. Everything works fine.

2. I made some edits to original BSIM-CMG model file (added additional white_noise to drain current in bsimcmg_body.include). This works fine the first time I simulate.

3. When I make any edits to my schematic (either related to the cell) or edits to my ADE-L testbench (e.g. change the SP simulation frequency range), I get the error listed above.

4. If I re-save the bsimcmg_body.include file, then I'm able to simulate again without issue.

I don't want to have to re-save every time I make a change in ADE-L or the schematic. Please let me know what I'm doing wrong.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago

    That's a bit odd, because I'd have expected that changing the schematic would definitely cause the simulator to exit and restart - which I would have assumed would have avoided this issue.

    However, I did find a number of reports of this error which were fixed some time ago. Which spectre subversion are you using? This should appear at the top of the spectre log (spectre.out if using ADE) - that would be a useful piece of information to know.

    As I think I've said in other posts, bsimcmg is integrated into spectre as a built-in model, so I can't really see why you'd need (or want) to use the Verilog-A model instead - the performance will undoubtedly be better with the built-in compiled model.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • akak
    akak over 6 years ago in reply to Andrew Beckett

    The spectre version is: 15.1.0.727.isr15 64bit -- 22 Feb 2017.

    I have to use the original BSIMCMG Verilog-A model because I am changing some of the equations in the Verilog-A code. I don't think this is possible with built-in compiled model, correct?

    Let me add some more information. 

    • The bsimcmg model code has a file called bsimcmg.va. This is a top level code which calls several other code files, such as common_defs.include, bsimcmg_binning_parameters.include, bsimcmg_body.include, etc.
    • I created a cell and verilog view for *only* the top level bsimcmg.va. I call this cell nfinfet_va. In this cell, using the Cadence VerilogA-Editor, I added two lines: 
      • (* compact_module *)
      • (* instance_parameter_list = {TFIN, L, NFIN, NF, NRS, NRD, ASEJ, ADEJ, PSEJ, PDEJ} *) --> This is a subset of all the possible instance instance parameters listed in bsimcmg_body.include.
    • The other code files are text files that do not have cell views in Cadence. They are saved as files in the same Linux directory path as the Cadence cell nfinfet_va.
    • I made a minor modification to the bsimcmg_body.include, which is the addition of a white_noise source for a specific current path.

    Before running any simulation, or if I make a change to either schematic or the ADE testbench, I *must* resave one of the include files in the directory. Actually, I don't have to resave, but just update the timestamp of a file (e.g. using Linux "touch bsimcmg_body.include" or "touch common_defs.include" works).

    Do I need to make a Cadence cell view for each of these Verilog-A code files called by the main code?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to akak

    You shouldn't need to touch the include file. That's almost certainly triggering a recompilation, but I can't see why that would be needed. So this is very strange...

    So my suggestion would be to:

    1. Try again with the latest hotfix (of SPECTRE17.1 or SPECTRE18.1) to see if it still happens
    2. If it does, contact customer support.

    Creating a view for each of the include files doesn't make sense because they are not modules in their own right.

    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