Quantcast
Channel: Cadence Custom IC Design Blogs
Viewing all 824 articles
Browse latest View live

Virtuosity: Cdsenv Editor – Simplifying Virtuoso Customization

$
0
0

Virtuosity-logo_Cdsenv_Editor

Customization is the need of the day. From picking an ice cream flavor to outfitting a premium car, we all want a product customized according to our needs and expectations.

Virtuoso users are no exception.

Yes, you can customize many features in the Virtuoso environment by changing values of variables that control these features. These variables stored across various .cdsenv files are shipped with each Virtuoso release and they determine how Virtuoso looks or behaves.

Traditional Methods of Setting Environment Values

Values of cdsenv variables can change during the course of using Virtuoso either through the forms with which these environment variables are associated or by updating them using the Virtuoso Command Interpreter Window (CIW).

If you want to ensure that certain values are loaded every time you launch Virtuoso, you can create a private .cdsenv file and save it in your home or work directory.

One of the biggest challenges of using these methods is the need to know and remember the names of all cdsenv variables associated with the Virtuoso tool you are using. Otherwise, you will have to look up the variable names from the default .cdsenv files shipped with Virtuoso. This can be a daunting task even for expert users, let alone the new or infrequent users.

Cdsenv Editor Changes the Picture

Introduced with the IC6.1.8 and ICADVM18.1 base releases, Cdsenv Editor lets you see a list of all Virtuoso tools and how they can be customized using cdsenv variables. You can expand each tool directory to view related cdsenv variables and edit these variables based on your needs.

To  launch Cdsenv Editor, in CIW, choose Options – Cdsenv Editor or run startCdsenvEditor().

Cdsenv Editor Environment Variable Editor

Notable Capabilities of Cdsenv Editor

Check name and value of variables

You can scroll through the tools listed in Cdsenv Editor to examine the cdsenv variables that are supported in Virtuoso.

Search for a variable name

Cdsenv Editor supports non-case-sensitive, substring search that lets you easily search for different types of cdsenv variables supported in the Virtuoso release being used. The tool is especially useful to look for a cdsenv variable when you only remember its partial name.

For example, if you want to look for a cdsenv variable that allows you to use right-click to zoom in the design, all you need to do is type mouse in the search field. All variables, values, and tool names that contain the substring mouse will be listed in the results.

Cdenv Editor Search

Search for other information

In addition to searching for cdsenv variables by their names or by string within their name, you can perform search for all other information displayed in the editor, such as Type or Status . For example, if you search for the term modified, all modified environment variables will be listed. This information is useful in finding settings that are different from default settings in Virtuoso.

You can also search for different types of variables, such as boolean, string, or cyclic.

No need to remember valid values

If you are an expert Virtuoso user, you might already know valid values for cdsenv variables that you use frequently. However, even experts can be overwhelmed if there are several variables to update. This issue is easily taken care of in Cdsenv Editor that takes guess work out of variable settings. All valid values for the variables are visible in the editor and you can easily set the required value. The following screenshot shows valid values of a cyclic cdsenv variable.

Cdsenv Editor Modifying Values

Easily modify values

Being an editor, the main function of this tool is to let you modify the value of a selected cdsenv variable. For this, click in the Value column of the selected variable. The Value field will provide you with options to modify the values based on the type of variable. For example, if you are modifying the value of a boolean variable, the associated drop-down list lets you choose between t or nil. If the variable takes an integer value, you can either type in an integer within the valid range or use the spin box to increase or decrease the integer value. Similarly, a variable that takes string values provides a text box to let you type in a string.

Save to and load from files

Cdsenv Editor lets you save the modified variables into a .cdsenv file. You can also load the same file, or any other .cdsenv file that your CAD engineer asks you to load in the next Virtuoso session.

Revert to default values in a single click

For variables with numerical values, it is often difficult to remember the default values that were shipped with Virtuoso, especially after a long designing session. You can easily revert to default values by right-clicking a modified variable and selecting Set to default value.

Related Resource

Virtuoso Design Environment User Guide

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

About Virtuosity

Virtuosity has been our most viewed and admired blog series for a long time that has brought to fore some lesser known, yet very useful software and documentation improvements, and also shed light on some exciting new offerings in Virtuoso. We are now expanding the scope of this series by broadcasting the voice of different bloggers and experts, who would 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… Click Subscribe to visit the Subscription box at the top of the page in which you can submit your email address to receive notifications about our latest Virtuosity posts.

Happy customizing.

Sucharita, Teng-Kiat Lee


Virtuoso IC6.1.8 ISR3 and ICADVM18.1 ISR3 Now Available

$
0
0
The IC6.1.8 ISR3 and ICADVM18.1 ISR3 production releases are now available for download. (read more)

Virtuoso Video Diary: Creating and Previewing Stimuli

$
0
0
If you've ever tried to add stimuli to your design using the Stimuli form, you'll agree it needed a revamp. Most people tend to use a vsource or isource component or a file to set up stimuli. But wouldn't it be nice if you could create a library of stimuli to share between designs, and to preview your stimuli waveforms without having to simulate the entire circuit. Well in Virtuoso ADE Assembler and Virtuoso ADE Explorer from IC6.1.8 ISR3/ICADVM18.1 ISR3 we have introduced a new form, that not only allows you to define and assign stimuli and share them between designs, but preview them too.(read more)

Spectre Tech Tips: Measuring Noise in Digital Circuits

$
0
0
As a designer, verification engineer, or CAD expert, you use Spectre APS for analyzing your designs. Sometimes, you use Spectre to measure noise in digital circuits. Are you confused which method to use for noise measurement since Spectre provides different methods for measuring noise? This blog discusses the different noise measuring methods and explains why they may provide different results.(read more)

Virtuosity: Filtering Plots!

$
0
0
If you're a regular reader of the Virtuosity series, you'll have seen a few blogs recently on filtering in Virtuoso ADE Assembler and Virtuoso ADE Explorer. Well, we've extended this capability and the same filters are now available for your plots in Virtuoso Visualization and Analysis.(read more)

Virtuoso Video Diary: What's New in Reliability Setup

$
0
0
Read this blog to know about the enhancements made to the reliability options form and to the overall reliability setup(read more)

Virtuosity: The Top 3 Post-Layout Enhancements in Analog Design Environment

$
0
0
Have you ever wanted to sweep DSPF files across corners, plot terminal current and voltage and ensure that the simulator name maps correctly to the schematic name in Virtuoso ADE Assembler and Virtuoso ADE Explorer? If so, IC6.1.8 ISR3/ICADVM12.8 ISR3 will be the release for you.(read more)

Virtuosity: Did my checks pass or they just did not run

$
0
0
If you've ever tried to run the Checks/Asserts flow in Virtuoso ADE Assembler and Virtuoso ADE Explorer, you might have found it difficult to distinguish between “all checks passed” and “no checks were run”. In both the cases, the message “No violations” was displayed. Now, in IC6.1.8 ISR3 and ICADVM18.1 ISR3, you can differentiate when checks were not run or if they were ignored with syntax errors. (read more)

Virtuosity: Spring-Cleaned Virtuoso Doc Closet

$
0
0
Most of us know how a spring-cleaned house can look like. But, do you know how the spring-cleaned Virtuoso documentation closet could look like?(read more)

Virtuoso Video Diary: The Next Big Thing — ADE Verifier Teams Up with Cadence vManager

$
0
0
Need to perform functional verification of a mixed-signal design? Using the connection between Verifier and vManager, analog and digital engineers get to work together with two different tools using the same data. A single view allows a project manager to look up all the results together and the engineers to sign off the project. You have fulfilled traceability and tracking of results for internationally acknowledged IEC and ISO standards. Another amazing feature is the ability to concurrently edit and simulate plans. You get a formal way to interact with other teams for interface definitions, specification values, assumptions and much more. (read more)

Virtuoso Video Diary: Comparing Multiple Tests and Sharing Settings

$
0
0
Have you been in the situation where you want to change a particular simulation setting in several of your tests in Virtuoso ADE Assembler? This can be a tedious process as you have to figure out which tests have that setting and what it is set to, then you have to go in to each test in turn to change it. From IC6.1.8 ISR3/ICADVM18.1 ISR3, we have added a tool to do just that. You can compare all the simulator settings across all or some tests, you can check what the simulator defaults are and you can even copy settings from one test to others. I think you'll agree this will be a great time saver and sanity check.(read more)

Spectre Tech Tips: Spectre APS Save Overview - Part 1

$
0
0

 As an analog/mixed-signal designer, verification engineer, or CAD expert, you use Spectre® APS for analyzing your designs. Saving node voltages, element, and subcircuit port currents and power is an essential part when simulating your designs. Over the years, incremental additions to the Spectre waveform writing functionality have made it more complex. In SPECTRE17.1 ISR15, and SPECTRE18.1 ISR7 releases, we’ve consolidated the save options, eliminated obsolete options, and cleaned up the related documentation in spectre -h. This blog provides an overview of the essential Spectre save functionality.

 Spectre High-Level Simulation Options

Compared to other simulators, Spectre has a more complex way of saving waveforms because it combines the higher-level save options with the lower-level individual save statements. Spectre provides the following four high-level options for creating waveforms:

  • Node voltage waveformssave option
    The recommended, most common, and the default value for the save option is selected, which enables you to define individual save statements for the waveforms to be printed. For example:
    opt1 options save=selected
    Other important values are allpub, which saves all node voltages, voltage source currents, inductor currents, and iprobe currents, and lvlpub, which in combination with the nestlvl=level option provides the same functionality as allpub, but is limited to the top hierarchy levels. For example:
    opt2 options save=allpub
    opt3 options save=lvlpub nestlvl=2 (prints waveforms for the top level and one level below)
  • Element current waveformscurrents option
    The recommended, most common, and the default value for the currents option is selected, which enables you to define individual current save statements for the waveforms to be printed. For example:
    opt4 options currents=selected
    Another important value is all, which saves the current waveforms for all terminals of all devices and elements. For example:
    opt5 options currents=all
  • Subcircuit port current waveforms – subcktprobelvl option
    The subcktprobelvl option defines the level down to which subcircuit terminal currents are saved. Value 1 represents the top level, value 2 represents the top level and one level below, and so on. For example:
    opt6 subcktprobelvl=2
  • Element, subcircuit, and total power waveformspwr option
    The pwr option enables you to print the power for all subcircuits (pwr=subckt), power for all elements and devices (pwr=devices), the total circuit power (pwr=total), or a combination of all  (power=all). Default is none.
    opt7 options pwr=total

Be cautious about saving a large number of waveforms, or all waveforms, because waveform calculation and writing may significantly slow down the simulation and increase the waveform file size. Especially, currents=all and  subcktprobelvl=n options significantly degrade Spectre simulation performance.

Individual Save Statement

 If save=selected and currents=selected options are enabled, which is also the default behavior of Spectre APS, you can define individual save statements, as shown below.

  •  Node voltage waveforms
    save I1.net5– saves the voltage of net net5 inside subcircuit instance I1
    save vdd– saves the voltage of top-level net vdd
  • Element current waveforms
    save R1:1– saves current flowing into terminal 1 of resistor instance R1
    save I1.M1:d– saves current flowing into terminal d of MOSFET instance I1.M1

 You can also define individual subcircuit terminal currents, or element/subcircuit power, as shown below.

  •  Subckt terminal current waveforms
    save I1:1– current flowing into port 1 of subcircuit instance I1
    save I1.I2:vdd– current flowing into port vdd of subcircuit instance I1.I2

  • Element and subcircuit power waveforms
    save I1:pwr  – power consumed by subcircuit instance I1
    save I1.M1:pwr– power consumed by MOSFET instance I1.M1

Individual Save Statement with Wildcarding

Individual save statements support wildcarding in instance and net names. Wildcarding isn’t supported for device and subcircuit terminal names in the current save statements.  In the examples below, wildcard “*” matches any set of characters, including the delimiter “.”.

save *.n1 sigtype=node

save u_dig.u_clkgen*.n1 sigtype=node

save u_dig.*.n* sigtype=node

save u_dig.u_clkgen*:d sigtype=dev

save u_dig*:inh_VDD sigtype=subckt

save *:pwr sigtype=subckt

save u_di*:pwr sigtype=subckt

Although wildcard matching statements work fine without the sigtype statement, if you find any of your wildcard settings not working, you may add the sigtype statement to specify the type of signal – node voltage, device terminal current, subcircuit terminal current, or power to be saved.

Waveform-Related Information in the Spectre Logfile

Spectre reports the number of save statements defined in the netlist, as shown below.

Output statements:

               save 8    

If save with wildcarding is used, the Spectre logfile provides information about the number of waveforms that match each individual save statement with wildcard. For example, the statements discussed above create the following wildcard match summary.

 Wildcard match summary:

               save *.n1  nodes:         16069

               save u_dig.u_clkgen*.n1  nodes: 154  

               save u_dig.*.n*  nodes:   22129

               save u_dig.u_clkgen* d devices: 312  

               save u_dig* inh_VDD subcircuits: 35405

               save * pwr subcircuits:   35406

               save u_di* pwr subcircuits: 35405

After parsing, Spectre reports the number of waveforms that are saved. A large number of waveforms may degrade simulation performance. For such cases, Spectre also generates a warning, as shown below.

 Output and IC/nodeset summary:

                 save   355350(current)

                 save   130338(voltage)

WARNING (SPECTRE-294): Too many saved signals. Slow initialization is expected!

If you see the above warning, we recommend that you reduce the number waveforms being saved.

Summary

In this blog, we reviewed the following important options related to waveform writing: save, nestlvl, currents, subcktprobelvl, and pwr. You can find more information about these options  in the Output parameters section when using spectre -h options in SPECTRE17.1 ISR15, and SPECTRE18.1 ISR7 releases.

In the second part of the blog (to be published by June end), we'll discuss advanced save features, subcircuit and device terminal current calculation, and index versus name saving in global waveform writing statements.

We also learned that saving a large numbers of voltage and currents may degrade Spectre performance, and therefore, we have to be cautious about what we save.

Related Resources

 You may also contact your Cadence support AE for guidance.

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

 About Spectre Tech Tips

Spectre Tech Tips is a blog series aimed at exploring the capabilities and potential of Spectre®. In addition to providing insight into the useful features and enhancements in Spectre, this series broadcasts the voice of different bloggers and experts, who share their knowledge and experience on all things related to Spectre. Enter your email address in the Subscriptions box and click SUBSCRIBE NOW to receive notifications about our latest Spectre Tech Tips posts.

Virtuoso Video Diary: Device-Level Routing for Advanced Nodes

$
0
0

Part I: Using the Finish Trunk Command to Automate Device-Level Routing in a User Assisted Flow

This is the first part of a mult-part blog series that will highlight features in Virtuoso that address device-level routing of interconnect for advanced node designs.

Below is short video showing what can be done today using the Finish Trunk command with the ICADVM18.1 ISR3 version of Virtuoso when the design has WSPs (Width Space Patterns) defined, has connectivity, and is setup to run the Pin to Trunk route flow:

You will notice that the video above makes use of the Finish Trunk command, which can be accessed when clicking on the Right Mouse Button (RMB) when in the Create Wire command or by just clicking the bindkey 2:

One of the most powerful options of the Finish Trunk command is the Trunk Extending option that can be set to Both Directions. When the user executes the Finish Trunk command with this option, the trunk is extended in both directions from the last location of the wire being created by the Create Wire command. If Trunk Trimming is turned on (as in the case of the video above), the trunk will be trimmed to the last via connecting the last pin to the right and left of the wire. The image below shows how to access the Trunk Extending options from the Pin to Trunk toolbar and the image to the right shows the last pin in the row to the right and left of the wire to which the trunks will be extended and connected to:

The images below show the routed results after the Finish Trunk command was executed with Trunk Extending set to Both Directions and Trunk Trimming turned on (note that yellow highlights indicate the last device pin to the right and left in the row):

For more detailed info on how to use the Finish Trunk command for both device level and block level designs, please download the following Pin to Trunk RAKs:

Link to Pin To Trunk Device Level Routing RAK:

https://support.cadence.com/apex/articleattachmentportal?id=a1O0V000006De3JUAS&pageName=ArticleContent&attachId=0690V000004fQoHQAU&sq=null

Link to Pin To Trunk Block Level Routing RAK:

https://support.cadence.com/apex/articleattachmentportal?id=a1O0V000006De3YUAS&pageName=ArticleContent&attachId=0690V000004fRgOQAU&sq=null

 

Since the resulting interconnect created by the Finish Trunk command is converted to Trunk objects, the EM Trunk Optimization can be later run to automatically fix EM violations. For more detailed information about EM Trunk optimization please download the EM Trunk Optimization RAK:

Link to EM Trunk Optimization RAK:

https://support.cadence.com/apex/articleattachmentportal?id=a1Od0000007MVZ5EAO&pageName=ArticleContent&attachId=069d0000003JLttAAG&sq=null

Virtuoso IC6.1.8 ISR3 and ICADVM18.1 ISR3 Now Available

$
0
0
The IC6.1.8 ISR3 and ICADVM18.1 ISR3 production releases are now available for download. (read more)

Virtuoso Video Diary: Can I Put Sticky Notes on Nets When Resolving EM Violations?

$
0
0
Do you know the Virtuoso Electrically Aware Design flow provides a sticky notes-kind of feature called point-to-point info balloons. These info balloons provide critical information that you would find handy while working with critical nets to resolve EM violations. Read more...(read more)

Virtuosity: Device-Level Routing for Advanced Nodes - Using Finish Trunk

$
0
0
The first blog of the series talks about features that are not new but capabilities that are ground-breaking and can support your device-level routing requirements for advanced nodes with the use of the Finish Trunk command.(read more)

Virtuoso Video Diary: Tune In to the MPT Video Channel

$
0
0
Tune In to the MPT Video Channel to check out a wide range of features easily accessible through the MPT toolbar.(read more)

Virtuosity: Spring-Cleaned Virtuoso Doc Closet

$
0
0
Most of us know how a spring-cleaned house can look like. But, do you know how the spring-cleaned Virtuoso documentation closet could look like?(read more)

Virtuosity: Cdsenv Editor – Simplifying Virtuoso Customization

$
0
0

Virtuosity-logo_Cdsenv_Editor

Customization is the need of the day. From picking an ice cream flavor to outfitting a premium car, we all want a product customized according to our needs and expectations.

Virtuoso users are no exception.

Yes, you can customize many features in the Virtuoso environment by changing values of variables that control these features. These variables stored across various .cdsenv files are shipped with each Virtuoso release and they determine how Virtuoso looks or behaves.

Traditional Methods of Setting Environment Values

Values of cdsenv variables can change during the course of using Virtuoso either through the forms with which these environment variables are associated or by updating them using the Virtuoso Command Interpreter Window (CIW).

If you want to ensure that certain values are loaded every time you launch Virtuoso, you can create a private .cdsenv file and save it in your home or work directory.

One of the biggest challenges of using these methods is the need to know and remember the names of all cdsenv variables associated with the Virtuoso tool you are using. Otherwise, you will have to look up the variable names from the default .cdsenv files shipped with Virtuoso. This can be a daunting task even for expert users, let alone the new or infrequent users.

Cdsenv Editor Changes the Picture

Introduced with the IC6.1.8 and ICADVM18.1 base releases, Cdsenv Editor lets you see a list of all Virtuoso tools and how they can be customized using cdsenv variables. You can expand each tool directory to view related cdsenv variables and edit these variables based on your needs.

To  launch Cdsenv Editor, in CIW, choose Options – Cdsenv Editor or run startCdsenvEditor().

Cdsenv Editor Environment Variable Editor

Notable Capabilities of Cdsenv Editor

Check name and value of variables

You can scroll through the tools listed in Cdsenv Editor to examine the cdsenv variables that are supported in Virtuoso.

Search for a variable name

Cdsenv Editor supports non-case-sensitive, substring search that lets you easily search for different types of cdsenv variables supported in the Virtuoso release being used. The tool is especially useful to look for a cdsenv variable when you only remember its partial name.

For example, if you want to look for a cdsenv variable that allows you to use right-click to zoom in the design, all you need to do is type mouse in the search field. All variables, values, and tool names that contain the substring mouse will be listed in the results.

Cdenv Editor Search

Search for other information

In addition to searching for cdsenv variables by their names or by string within their name, you can perform search for all other information displayed in the editor, such as Type or Status . For example, if you search for the term modified, all modified environment variables will be listed. This information is useful in finding settings that are different from default settings in Virtuoso.

You can also search for different types of variables, such as boolean, string, or cyclic.

No need to remember valid values

If you are an expert Virtuoso user, you might already know valid values for cdsenv variables that you use frequently. However, even experts can be overwhelmed if there are several variables to update. This issue is easily taken care of in Cdsenv Editor that takes guess work out of variable settings. All valid values for the variables are visible in the editor and you can easily set the required value. The following screenshot shows valid values of a cyclic cdsenv variable.

Cdsenv Editor Modifying Values

Easily modify values

Being an editor, the main function of this tool is to let you modify the value of a selected cdsenv variable. For this, click in the Value column of the selected variable. The Value field will provide you with options to modify the values based on the type of variable. For example, if you are modifying the value of a boolean variable, the associated drop-down list lets you choose between t or nil. If the variable takes an integer value, you can either type in an integer within the valid range or use the spin box to increase or decrease the integer value. Similarly, a variable that takes string values provides a text box to let you type in a string.

Save to and load from files

Cdsenv Editor lets you save the modified variables into a .cdsenv file. You can also load the same file, or any other .cdsenv file that your CAD engineer asks you to load in the next Virtuoso session.

Revert to default values in a single click

For variables with numerical values, it is often difficult to remember the default values that were shipped with Virtuoso, especially after a long designing session. You can easily revert to default values by right-clicking a modified variable and selecting Set to default value.

Related Resource

Virtuoso Design Environment User Guide

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

About Virtuosity

Virtuosity has been our most viewed and admired blog series for a long time that has brought to fore some lesser known, yet very useful software and documentation improvements, and also shed light on some exciting new offerings in Virtuoso. We are now expanding the scope of this series by broadcasting the voice of different bloggers and experts, who would 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… Click Subscribe to visit the Subscription box at the top of the page in which you can submit your email address to receive notifications about our latest Virtuosity posts.

Happy customizing.

Sucharita, Teng-Kiat Lee

Virtuoso IC6.1.8 ISR3 and ICADVM18.1 ISR3 Now Available

$
0
0
The IC6.1.8 ISR3 and ICADVM18.1 ISR3 production releases are now available for download. (read more)
Viewing all 824 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>