
- •Contents
- •Preface
- •Related Documents
- •Typographic and Syntax Conventions
- •Creating HDL Modules for CDBA Cellviews
- •Creating HDL Data as You Save CDBA Cellviews
- •Creating HDL Data from Pre-existing CDBA Cellviews
- •Quick-Start Tutorial
- •The Circuit
- •AMS Designer Tools
- •Setting Up the Tutorial
- •Running from a Script
- •Running within the AMS Environment
- •Opening the Command Interpreter Window
- •Netlisting and Compiling
- •Elaborating and Simulating the Design
- •Summary
- •Setting Up the AMS Environment
- •Overview
- •The hdl.var File
- •The ams.env Files
- •AMS Designer Supports Design Management
- •Specifying the Text Editor to Use
- •Specifying Fonts for the Cadence Hierarchy Editor
- •Preparing to Use AMS Designer from the Hierarchy Editor
- •Netlisting
- •Netlisting Modes Supported by the AMS Netlister
- •Automatic Netlisting of a Cellview
- •Netlist Updating and Netlisting of Entire Designs
- •Netlisting from the UNIX Command Line
- •Library Netlisting
- •Netlisting of Cells in Response to Changes in CDF
- •Preparing Existing Analog Primitive Libraries for Netlisting
- •Specifying the Behavior of the Netlister and Compilers
- •Opening the AMS Options Windows
- •Setting Netlister Options from the Hierarchy Editor
- •Opening the CIW AMS Options Window
- •Setting Compiler Options
- •Viewing the AMS Netlister Log
- •Understanding the Output from the AMS Netlister
- •How Inherited Connections Are Netlisted
- •Inherited Signal Connections
- •Inherited Terminal Connections
- •Instance Values for Inherited Connections
- •Third-Party Tools and Other Cadence Tools
- •How Aliased Signals Are Netlisted
- •How m-factors (Multiplicity Factors) Are Netlisted
- •How Iterated Instances Are Netlisted
- •Passing Model Names as Parameters
- •Effect of the modelname, model, and modelName Parameters
- •Handling of the model* and componentName Parameters
- •Precedence of the model* and componentName Parameters
- •Specifying Parameters to be Excluded from Netlisting
- •Ignoring Parameters for Entire Libraries
- •Example: Specifying Parameters to Ignore
- •Ensuring that Floating Point Parameters Netlist Correctly
- •Working with Schematic Designs
- •Setting Schematic Rules Checker Options for AMS Designer
- •Creating Cellviews Using the AMS Environment
- •Preparing a Library
- •Creating the Symbol View
- •Using Blocks
- •Descend Edit
- •Inherited Connections
- •Global Signals in the Schematic Editor
- •Inherited Connections in a Hierarchy
- •How Net Expressions Evaluate
- •Net and Pin Properties
- •groundSensitivity and supplySensitivity Properties
- •Making Connect Modules Sensitive to Inherited Connection Values
- •Using External Text Designs
- •Overview of Steps for Using External Text Designs
- •Bringing Modules into a Cadence Library
- •Specifying the Working Library
- •Compiling into Libraries
- •Compiling into Temporary Libraries
- •Listing Compiled Modules
- •Using Text Blocks in Schematics
- •Using Modules Located in a Cadence Library
- •Preparing for Simulation
- •Using Analog Primitives
- •Using SPICE and Spectre Netlists and Subcircuits
- •Preparing to Use SPICE and Spectre Netlists and Subcircuits
- •Placing SPICE and Spectre Netlists and Subcircuits in a Schematic
- •Using Test Fixtures
- •Creating and Using a Textual Test Fixture
- •Creating a Textual Test Fixture
- •Using a Test Fixture
- •Example: Creating and Using a Test Fixture
- •Using Design Configurations
- •Ensuring HDL Design Unit Information Is Current
- •Preparing a Design for Simulation
- •Overview of AMS Design Prep
- •What AMS Design Prep Does to Prepare a Design for Simulation
- •When to Use AMS Design Prep
- •Specifying the Behavior of AMS Design Prep
- •Setting Options for Global Design Data
- •Specifying Global Signals
- •Specifying Design Variables
- •Specifying Model Files to Use During Elaboration
- •Running AMS Design Prep
- •The cds_globals Module
- •Global Signals
- •Design Variables
- •Setting Elaborator Options
- •Setting Simulator Options
- •Setting Waveform Selection Options
- •Creating Probes
- •Selecting Instances from the Virtuoso Schematic Editing Window
- •Selecting Buses
- •Selecting Instances from the Scope Navigator
- •Copying and Pasting Within Tables
- •Elaborating and Simulating
- •Viewing Messages
- •Plotting Waveforms After Simulation Ends
- •Starting the SimVision Waveform Viewer
- •Plotting Waveforms Selected on a Schematic (Direct Plot)
- •Using the amsdesigner Command
- •Examples
- •Producing Customized Netlists
- •Producing Customized Netlists
- •Identifying the Sections of a Netlist
- •Using ams.env Variables to Customize Netlists
- •Using Netlisting Procedures to Customize Netlists
- •Examples: Problems Addressed by Customized Netlists
- •Example: Adjusting Parameter Values to Account for Number of Fingers
- •Example: Using Symbols that Represent Verilog Test Code
- •Data Objects Supported for Netlisting
- •Netlister Object
- •Formatter Object
- •Cellview Object
- •Parameter Object
- •Instance Object
- •SKILL Functions Supported for Netlisting
- •Default Netlisting Procedures
- •Netlisting Helper Functions
- •Variables for ams.env Files
- •How AMS Designer Determines the Set of Variables
- •Why AMS Designer Uses ams.env Files, Not .cdsenv Files
- •List of ams.env Variables
- •Detailed Descriptions of ams.env Variables
- •aliasInstFormat
- •allowDeviantBuses
- •allowNameCollisions
- •allowSparseBuses
- •allowUndefParams
- •amsCompMode
- •amsDefinitionViews
- •amsEligibleViewTypes
- •amsExcludeParams
- •amsExpScalingFactor
- •amsLSB_MSB
- •amsMaxErrors
- •amsScalarInstances
- •amsVerbose
- •analogControlFile
- •bindCdsAliasLib
- •bindCdsAliasView
- •cdsGlobalsLib
- •cdsGlobalsView
- •checkAndNetlist
- •checkOnly
- •checktasks
- •compileAsAMS
- •compileExcludeLibs
- •compileMode
- •connectRulesCell
- •connectRulesCell2
- •connectRulesLib
- •connectRulesView
- •detailedDisciplineRes
- •discipline
- •excludeViewNames
- •hdlVarFile
- •headerText
- •ieee1364
- •ifdefLanguageExtensions
- •incdir
- •includeFiles
- •includeInstCdfParams
- •initFile
- •instClashFormat
- •iterInstExpFormat
- •language
- •lexpragma
- •logFileAction
- •logFileName
- •macro
- •maxErrors
- •messages
- •modifyParamScope
- •ncelabAccess
- •ncelabAnnoSimtime
- •ncelabArguments
- •ncelabCoverage
- •ncelabDelayMode
- •ncelabDelayType through ncelabMessages
- •ncelabMixEsc
- •ncelabModelFilePaths
- •ncelabNeverwarn through ncelabVipdelay
- •ncsimArguments
- •ncsimEpulseNoMsg through ncsimExtassertmsg
- •ncsimGUI
- •ncsimLoadvpi through ncsimStatus
- •ncsimTcl
- •ncsimUnbuffered through ncsimUseAddArgs
- •ncvhdlArguments
- •ncvlogArguments
- •ncvlogUseAddArgs
- •netClashFormat
- •netlistAfterCdfChange
- •netlistMode
- •netlistUDFAsMacro
- •neverwarn
- •noline
- •nomempack
- •nopragmawarn
- •nostdout
- •nowarn
- •paramDefVals
- •paramGlobalDefVal
- •pragma
- •processViewNames
- •prohibitCompile
- •runNcelab
- •runNcsim
- •scaddlglblopts
- •scaddltranopts
- •scale
- •scalem
- •scannotate
- •scapprox
- •scaudit
- •sccheckstmt
- •sccmin
- •sccompatible
- •scdebug
- •scdiagnose
- •scdigits
- •scerror
- •scerrpreset
- •scfastbreak
- •scgmin
- •scgmincheck
- •schomotopy
- •sciabstol
- •scic
- •scicstmt
- •scignshorts
- •scinfo
- •scinventory
- •sclimit
- •sclteratio
- •scmacromod
- •scmaxiters
- •scmaxnotes
- •scmaxrsd
- •scmaxstep
- •scmaxwarn
- •scmethod
- •scmodelevaltype
- •scmosvres
- •scnarrate
- •scnotation
- •scnote
- •scopptcheck
- •scpivabs
- •scpivotdc
- •scpivrel
- •scquantities
- •screadic
- •screadns
- •screlref
- •screltol
- •scrforce
- •scscale
- •scscalem
- •scscftimestamp
- •scscfusefileflag
- •scskipcount
- •scskipdc
- •scskipstart
- •scskipstop
- •scspeed
- •scstats
- •scstep
- •scstop
- •scstrobedelay
- •scstrobeperiod
- •sctemp
- •sctempeffects
- •sctitle
- •sctnom
- •sctopcheck
- •sctransave
- •scusemodeleval
- •scvabstol
- •scwarn
- •scwrite
- •simRunDirLoc
- •simVisScriptFile
- •status
- •templateFile
- •templateScript
- •timescale
- •update
- •use5xForVHDL
- •useDefparam
- •useNcelabNowarn
- •useNcelabSdfCmdFile
- •useNcsimNowarn
- •useNowarn
- •useScaddlglblopts
- •useScaddltranopts
- •useScic
- •useScreadic
- •useScreadns
- •useScwrite
- •useSimVisScriptFile
- •useProcessViewNamesOnly
- •verboseUpdate
- •vlogGroundSigs
- •vloglinedebug
- •vlogSupply0Sigs
- •vlogSupply1Sigs
- •wfDefaultDatabase
- •wfDefInstCSaveAll
- •wfDefInstCSaveLvl
- •wfDefInstSaveCurrents
- •wfDefInstSaveVoltages
- •wfDefInstVSaveAll
- •wfDefInstVSaveLvl
- •wfDefInstVSaveObjects
- •Updating Legacy SimInfo for Analog Primitives
- •The ams Fields
- •Special Handling of model, modelName, modelname, and componentName
- •Converting an Existing Analog Primitive Library
- •Designing for Virtuoso AMS Compliance
- •Terminals
- •Buses
- •Component Description Format
- •Parameters
- •Using Inherited Parameters
- •Using Cell Parameters
- •Parameterized Cells
- •VHDL-AMS Component Declarations
- •Properties
- •Properties to Avoid Completely
- •Avoid the portOrder Property Unless Required by Special Circumstances
- •Properties to Use Only in AMS Compatibility Mode
- •Properties That Have No Special Meaning in the AMS Environment
- •Properties Fully Supported by the AMS Environment
- •SKILL Functions
- •amsCheckCV
- •amsIsPresent
- •amsNetlist
- •amsProcessCellViews
- •amsUIOptionsForm
- •amsUIRunNetlisterForm
- •ddsCvtAMSTranslateCell
- •ddsCvtAMSTranslateLib
- •ddsCvtToolBoxAMS
- •vmsUpdateCellViews
- •Customization Variables
- •schHdlNotCreateDB
- •schHdlUseVamsForVerilog
- •vmsAnalysisType
- •vmsCreateMissingMasters
- •vmsNcvlogExecutable
- •vmsPortProcessing
- •vmsRunningInUI
- •vmsTemplateScript
- •vmsVerboseMsgLevel
- •Compiling Cadence-Provided Libraries
- •Purpose of the amsLibCompile Tool
- •Running the amsLibCompile Tool Manually
- •Example

Virtuoso AMS Environment User Guide
Netlisting
The AMS netlister translates this top-level schematic into the following Verilog-AMS netlist. In the netlist, notice the attributes (set off between (* and *)) used to pass information to the elaborator. Notice too, the out-of-module references to objects in the cds_globals module.
//Verilog-AMS netlist generated by the AMS netlister
//Cadence Design Systems, Inc.
‘include "disciplines.vams" ‘include "constants.vams"
module top ( );
vsource #(.type("dc"), .dc(3)) (*
integer library_binding = "analogLib"; *) V0 ( cds_globals.\vdd! , cds_globals.\gnd! );
vsource #(.type("dc"), .dc(-3)) (*
integer library_binding = "analogLib"; *) V1 ( cds_globals.\vss! , cds_globals.\gnd! );
vhdl_clock (* integer library_binding = "diglib"; *) I5 ( .out1( clkSig ) );
sareg (* integer library_binding = "diglib"; *) I3 ( .b2( b2 ),
.endOfConv( endOfConv ), .b5( b5 ), .b6( b6 ), .b3( b3 ), .b7( b7 ),
.b0( b0 ), .clkSig( clkSig ), .b4( b4 ), .b1( b1 ),
.result( compOut ), .trigger( endOfConv ) );
daconv #(.refVolt(5.000000)) (* integer library_binding = "amslib"; *) I4 ( .b2( b2 ), .b5( b5 ), .b6( b6 ), .b3( b3 ),
.compSig( dacOut ), .b7( b7 ), .b0( b0 ), .b4( b4 ), .b1( b1 ) );
signalSrc (* integer library_binding = "amslib"; *) I0 ( .sig( inSig ) );
comparator (* integer library_binding = "amslib"; *) I2 ( .inn( dacOut ),
.inp( holdSig ), .out( compOut ) );
samplehold (* integer library_binding = "amslib"; *) I1 ( .inSig( inSig ),
.holdSig( holdSig ), .trigger( endOfConv ) );
endmodule
The previous netlist does not illustrate how the AMS netlister handles inherited connections, which, as described in the following sections, are also translated as attributes.
How Inherited Connections Are Netlisted
An inherited connection is a net expression associated with either a signal or terminal. You use inherited connections to selectively override global names within your design.
The syntax for the net expression used in the Virtuoso® Schematic Editor is:
[@property_name:%:default_net_name]*
where property_name is the name of the property whose value can redefine the global signal name and default_net_name is the global signal name if it is not redefined by the specified property.Thedefault_net_name must not be a nested netlist property expression; if it is, the net expression is not evaluated.
April 2004 |
127 |
Product Version 5.3 |

Virtuoso AMS Environment User Guide
Netlisting
As described in the next sections, the AMS netlister translates the inherited connections information into attributes in the Verilog-AMS netlist. The AMS elaborator uses these attributes to resolve inherited connections in the same way that other DFII tools do.
See the “Inherited Connections” section, in the “Understanding Connectivity and Naming
Conventions” chapter of the Virtuoso Schematic Editor User Guide for detailed information about inherited connections.
Inherited Signal Connections
In Virtuoso Schematic Editor, an inherited signal connection is created by associating a net expression with the wire that represents the signal. The net expression acts like a wire name; that is, in the same manner that a wire name specifies the name of the net, the default name in the net expression specifies the name of the underlying net.
The AMS netlister translates inherited connection net expressions into net attributes that become part of the Verilog-AMS netlist. The translation of the net expression in the schematic, which has the form
[@property_name:%:default_net_name]*
occurs in accordance with the following syntax:
inh_conn_net_exp_declaration ::=
wire net_exp_attribute_list net_identifier;
net_exp_attribute_list ::=
(* integer inh_conn_prop_name = property_name; integer inh_conn_def_value = default_net_name; *)
property_name ::= string
default_net_name ::= string
For example, the AMS netlister translates the CDBA inherited connection net expression
[@xground:%:vdd!]*
into the following code in the Verilog-AMS netlist:
wire
(* integer inh_conn_prop_name="xground";
integer inh_conn_def_value="cds_globals.\\vdd! "; *) \vdd! ;
April 2004 |
128 |
Product Version 5.3 |

Virtuoso AMS Environment User Guide
Netlisting
Inherited Terminal Connections
In Virtuoso Schematic Editor, an inherited terminal connection is created by associating a net expression with the pin that physically represents the terminal. The pin can exist in a schematic, a layout, or schematicSymbol cellview.
The AMS netlister translates inherited terminal connection expressions into port attributes that become part of the Verilog-AMS netlist. The port attributes use the same syntax as net attributes. The only difference is that port attributes are attached to port declarations rather than net declarations.
Instance Values for Inherited Connections
In the Virtuoso Schematic Editor, you can override the default name associated with an inherited connection by creating or modifying the appropriate netSet property name and value pair on the component instance that represents the branch of the hierarchy that is affected. The AMS netlister translates netSet properties into cds_net_set attributes, which are stored in the Verilog-AMS netlist.
Then, when the elaborator encounters a net or port inherited connection attribute, it searches the hierarchy for a cds_net_set attribute that lists the inherited connection property name. If it finds the property name, the elaborator connects the net or terminal to the signal name specified in thecds_net_set attribute as the value of the property. If the elaborator cannot
find the property, it uses the default connection.
The CDBA netSet properties are represented, in Verilog-AMS netlists, as cds_net_set attributes. The syntax is:
cds_net_set_declaration ::=
module_identifier net_set_attribute_list instance_identifier (port_list_connection);
net_set_attribute_list ::=
(* integer cds_net_set[0:n] = { property_name {,property_name} }; property_list *)
property_list ::=
property_declaration; {property_declaration;}
property_declaration ::= simple_property
| inh_conn_expression
simple_property ::=
property_name = property_value
inh_conn_expression ::=
integer property_name[0:1] = { property_name, def_net_name }
n ::=
positive_integer
April 2004 |
129 |
Product Version 5.3 |

Virtuoso AMS Environment User Guide
Netlisting
property_name ::= string
property_value ::= string
def_net_name ::= string
The cds_net_set attribute is an array of one or more elements that stores the names of the netSet properties. Each element in the array has a corresponding property_name attribute.
In most cases, the property_value is a string specifying the override connection. The property_value can also be an inherited connection expression. In this case, the property_name is represented as a two-element array, using the first element as the new property name and the second element as the new default connection name. For example, consider the following CDBA netSet properties and values.
Property Value
vdd |
3.3v! |
xground [@new_ground:%:gnd5!]
These translate to the following cds_net_set attributes in the Verilog-AMS netlist:
comparator
(* integer library_binding = "amslib";
integer cds_net_set[0:1]= {"xground","vdd"};
integer xground[0:1] = {"new_ground","cds_globals.\\gnd5! "}; integer vdd = "cds_globals.\\3.3v! "; *)
I2 ( .inn( dacOut ), .inp( holdSig ), .out( compOut ) );
Third-Party Tools and Other Cadence Tools
The attributes added to netlists by the AMS netlister are Cadence-specific extensions to the Verilog-AMS language. As a consequence, some third-party tools and some Cadence tools, such as Verilog-XL, interpret the attributes as illegal code so parsing fails. To make sure that the Verilog-AMS netlist that is generated by the AMS netlister can be read by other tools, select the Netlister – Verilog-AMS category of the AMS options and turn on Conditionally include language extensions. This option encloses the cds_net_set attributes in compiler directives so the attributes are used only when the netlist is compiled by the AMS netlister.
For example, with Conditionally include language extensions turned on, the previous cds_net_set attributes are written to the netlist as follows.
comparator ‘ifdef INCA
April 2004 |
130 |
Product Version 5.3 |