• 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. Blogs
  2. Analog/Custom Design
  3. Virtuosity: Mystery Behind the .simrc File and Netlist …
Rashmi G
Rashmi G

Community Member

Blog Activity
Options
  • Subscribe by email
  • More
  • Cancel
CDNS - RequestDemo

Have a question? Need more information?

Contact Us
ic design methodology
AMS
Analog Design Environment
ic analog design
Cadence blogs
programming
mixed-signal simulators
custom/analog
Analog Simulation
analog
Mixed-Signal
full custom ic design
Virtuoso Analog Design Environment
Virtuoso
Spectre
Virtuosity
cadenceblogs
ICADVM20.1
Circuit Design
mixed signal
analog design
Custom IC Design
IC6.1.8
SKILL
Schematic
Analog IC Design
custom design technology
custom integrated circuit

Virtuosity: Mystery Behind the .simrc File and Netlist Customization

24 Jun 2021 • 7 minute read

Netlisting is an integral part of design simulation. We generate netlists to send out the connectivity and mapping information to the simulator to achieve the desired simulation results. However, there are times when instead of using the default netlist we might want to add a few customizations. So, what should we do? When we want to change a few settings in our simulation environment, we customize the .simrc file.

What is the .simrc File and Why Do We Need It?

The .simrc file is the SIMulation Run Control file. This file is loaded during the netlisting process by various Virtuoso tools and helps in overriding the simulation interface settings. These settings are loaded through a si.env file, which loads the default settings to prepare your design environment for simulation. The role of the .simrc file is to let you customize these default settings.

Now, let's take an example. Most of us love our morning cup of coffee, don’t we? Coffee comes in different variants, but we all have our favorite mix. This mix or recipe is what appeals to us, and that’s why, out of all available coffee shops, we frequent one specific café to appease our taste buds. Multiple .simrc files

Similarly, you can have multiple .simrc files located in different locations, but only one file is selected for netlist customization. Have you ever wondered how and which .simrc file is picked? If yes, then you have reached the right place, because today, we will discuss in detail why we might want to customize our netlist and how Virtuoso locates the .simrc file for us.

The Dilemma

Depending on your project requirements, you may choose to keep the .simrc file at different locations, or you might have inadvertently saved multiple copies of the file. For example, you have a .simrc file at the test level /root/user2/design/test/ but you are unaware that another file exists at the project level at /root/user2/design/. In such a scenario, you would wonder why the test-level settings of your choice are not applied and the netlist is not customized. This is because you have saved the .simrc file at a correct location, but you are not aware of the second file, which exists at a location that is first read by Virtuoso.

 Given below are a few more example scenarios when you might want to locate the currently engaged .simrc file:

  • You see that your schematic and netlist are not in sync and the netlist does not show the correct name formats, and you want to adjust your net names or some netlist properties but want to automate this process.

  • You have a .simrc file at 'pwd'/ and another at ~/, which are both valid locations. Now, you want to check which file is picked first and place the file with your preferred settings at the correct location.

  • You have been loading the .simrc file from the path pointed by the $SIMRC variable, but can no longer do so, and now you want to know how Virtuoso is finding the .simrc file.

  • You want to customize your .simrc to change the way auCDL netlists. Possibly, this change breaks the Virtuoso Analog Design Environment (ADE) netlisting, and you want to know how you can customize your .simrc file so that your netlist is generated with the customizations in auCDL but as usual in case of ADE.

When Does Virtuoso Call the .simrc File?

Based on how you start the netlisting process, the sequence in which a call is made to the .simrc file varies. For example,

  • When you use a product UI from the Virtuoso custom IC design platform, the netlister continues with the current state of settings and after loading the simulation interface settings, locates and loads the .simrc file.

  • When you use the OCEAN script at the command line, the netlister first loads the OCEAN run control file, then the simulation interface settings, and finally makes a call to the .simrc file.

  • When the simulation interface or a product UI from the Virtuoso custom IC design platform runs the netlister in background mode, a separate background process is launched to perform netlisting. In this case, the simulation interface settings are loaded, libraries are initialized, the .simrc file is loaded, but the .cdsinit file is not read.

If your simulation environment is configured to use the Cadence Setup Search File (CSF) mechanism, the cdswhich command can be used to find out which .simrc file has been selected. Know that by default, CSF does not identify the .simrc file, and that's why, the cdswhich command will not find the .simrc file even if it has been defined using the shell variables $SIMRC, $ossUserSimrc, or even $PWD.

In all these scenarios, if a .simrc file is not found, the netlist is not customized.

The Mystery Decoded

To help you understand the nitty-gritty of how Virtuoso locates the .simrc file, we have included a flowchart in Simulation Environment Help that explains the details of the .simrc file lookup process.

What Gets Priority Over .simrc?

This was all about when the .simrc file is loaded, but did you know that you could also define a file other than the .simrc file to customize your netlisting process? Yes, that’s correct. This is where the $ossUserSimrc shell variable fits the bill. As a bonus, this variable lets you temporarily override or disable the loading of the .simrc file. The only condition is that the file should contain the customization details in the same format as the .simrc file, which is SKILL.

What Else Can the .simrc File Do for Me?

The .simrc file helps in overriding simulation interface settings, defining custom procedures, custom locations, and conditional statements for multiple simulators, such as Spectre or AMS simulator, in your design environment. So, rather than making one change at a time, you can specify all your customizations in one go! This is especially helpful when you want to use a distinct custom flow in each area of your design environment. On the other hand, this functionality also comes in handy when you want a team of design engineers to use a single customized flow.

Check out the documentation to know more about the locations and the sequence in which Virtuoso looks for a .simrc file. Also find out about the best location to place the .simrc file so that Virtuoso can use it for netlist customization.

Related Resources

 Product Manual

Simulation Environment Help


For more information on Cadence circuit design products and services, visit www.cadence.com.

Contact Us

For any questions, general feedback, or even if you want to suggest a future blog topic, write to custom_ic_blogs@cadence.com.

Happy reading, and stay safe!

Rashmi Girdhar

About Virtuosity

Virtuosity has been our most viewed and admired blog series for a long time. The series has brought to the fore some less well-known yet very useful software and documentation improvements and has also shed light on some exciting new offerings in Virtuoso. This series broadcasts the voices of different bloggers and experts, who continue to preserve the legacy of Virtuosity and try to give new dimensions to it by covering topics across the length and breadth of Virtuoso, and a lot more. To receive notifications about the new blogs in this series, click Subscribe and submit your email ID in the Subscriptions box.


CDNS - RequestDemo

Try Cadence Software for your next design!

Free Trials

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information