- •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
Producing Customized Netlists
Data Objects Supported for Netlisting
The data used for netlisting is organized into objects. The AMS netlister objects include netlister, formatter, cellview, parameter, and instance. Each of these is described in detail in the following sections.
Netlister Object
The netlister object contains the global options applicable to the AMS netlister. You obtain the
ID of the netlister object by calling the amsGetNetlister function, with a command like
A_netlisterId = amsGetNetlister()
The netlister object is available throughout the life of the UNIX process that is running the AMS netlister and is a unique object for that process. The netlister object ID does not change as long as the process remains the same. However, the values of the fields of the netlister object can change with every netlist run as the netlister rereads the ams.env file.
Running a command like
A_netlisterId->?
you find that the netlister object contains the following fields. With the exception of thevlog and vhdl fields, each field corresponds to anams.env variable described in Appendix A, “Variables for ams.env Files.”
Field |
Values |
Corresponding ams.env |
|
Variable |
|||
|
|
||
|
|
|
|
lsbMsb |
boolean t/nil |
amsLSB_MSB |
|
scalarizeInstances |
boolean t/nil |
amsScalarInstances |
|
includeInstCDFParams |
boolean t/nil |
includeInstCdfParams |
|
excludeParams |
l_params |
amsExcludeParams |
|
expScalingFactor |
‘no | ‘sci | ‘dec |
amsExpScalingFactor |
|
modifyParamScope |
‘no | ‘warn | ‘yes |
modifyParamScope |
|
vlog |
The ID of the |
|
|
|
Verilog-AMS formatter |
|
|
|
object. |
|
|
vhdl |
Always nil. No VHDL |
|
|
|
formatter is supported. |
|
|
|
|
|
April 2004 |
327 |
Product Version 5.3 |
Virtuoso AMS Environment User Guide
Producing Customized Netlists
All of these fields are read-only. Attempting to change their values results in an error.
When you add new data to the database, be sure that the data adhere to the format and content requirements set by the values of these fields.
Formatter Object
The formatter object contains information about the netlist procedures for the formatter it represents. You use a command like the following to obtain the ID of the formatter:
A_formatterId = A_netlisterId->vlog
In this release, the only available formatter is the Verilog-AMS (vlog) formatter.
The formatter object is created when the vlog field of the netlister object is accessed for the first time. After that, the formatter object is available throughout the life of the UNIX process that is running the AMS netlister and is a unique object for that process. The formatter object ID does not change as long as the process remains the same. However, the values of the
fields of the formatter object can change with every netlist run as the netlister rereads the ams.env file.
Running the command
A_formatterId->?
you find that the formatter object contains the fields listed in the next two tables. Some of the fields correspond toams.env variables described in Appendix A, “Variables for ams.env Files.”
Table 13-2 Fields of the Formatter Object
Field |
Values |
Corresponding ams.env |
|
Variable |
|||
|
|
||
|
|
|
|
comments |
string |
None |
|
headers |
string |
None |
|
ifdefLanguageExtensions |
boolean t/nil |
ifdefLanguageExtensions |
|
useDefparam |
boolean t/nil |
useDefparam |
|
includeFiles |
l_strings |
includeFiles |
|
paramDefVals |
l_paramValPairs |
paramDefVals |
|
paramGlobalDefVal |
paramGlobalDefVal |
paramGlobalDefVal |
|
netlister |
A_netlisterId |
None. |
|
|
|
|
April 2004 |
328 |
Product Version 5.3 |
Virtuoso AMS Environment User Guide
Producing Customized Netlists
All of these fields are read-only. Attempting to change their values results in an error.
The formatter object also lists the netlisting procedures that are in effect. The sections of the netlist that each procedure is responsible for generating are listed in the right column. The entries in that column are the same as the labels shown in Figure 13-1 on page 301.
Table 13-3 Netlisting Procedures Listed in the Formatter Object
Field |
Value |
Netlist Section |
|
|
|
commentsProc |
amsPrintComments or current |
Comment |
|
override procedure |
|
headersProc |
amsPrintHeaders or current |
Header |
|
override procedure |
|
moduleProc |
amsPrintModule |
All sections except: |
|
|
Comment, Header, |
|
|
Includes list, Footer |
footersProc |
amsPrintFooters |
Footer (not shown) |
moduleNameProc |
amsPrintModuleName |
Mapped name |
portsProc |
amsPrintPorts |
Port declarations |
iosProc |
amsPrintIOs |
Port declarations |
parametersProc |
amsPrintParameters or current |
Parameter declarations |
|
override procedure |
|
wiresProc |
amsPrintWires |
Signal declarations |
aliasesProc |
amsPrintAliases |
Alias list (not shown) |
instanceProc |
amsPrintInstance or current |
Instances |
|
override procedure |
|
instanceMasterNameProc |
amsPrintInstanceMasterName |
Instance master |
|
or current override procedure |
|
instanceParametersProc |
amsPrintInstanceParameters |
Instance parameters |
|
or current override procedure |
|
instancePortsProc |
amsPrintInstancePorts or |
Instance connections |
|
current override procedure |
|
attributesProc |
amsPrintAttributes or current |
Attributes |
|
override procedure |
|
|
|
|
April 2004 |
329 |
Product Version 5.3 |
Virtuoso AMS Environment User Guide
Producing Customized Netlists
Cellview Object
The cellview object contains fields that characterize a cellview.
The cellview object is created when netlisting begins for the cellview and is destroyed when netlisting ends. As a consequence, to view the fields you need to ask for the information during the netlisting run. You might, for example, use statements like the following in your netlisting procedures override file to obtain a list of the fields.
;; Define a print comments functions (defun MyProc (formatter cellview )
(printf "Var = %L\n" cellview->??)
)
Running these statements, you find that the cellview object contains the following fields. Notice that some of these fields return information that is collected indirectly, and is therefore more costly in terms of processing time and memory. For efficient netlisting, try to use such indirectly collected information sparingly.
Field |
Values |
Meaning of the Value |
|
|
|
libName |
string |
Name of the library. |
cellName |
string |
Name of the cell. |
viewName |
string |
Name of the cellview. |
ID |
DB??? |
ID of the cellView |
primitive |
boolean t/nil |
Whether the master is a Spectre primitive. |
|
|
(Ports must be printed by order for |
|
|
instances of primitives.) |
compName |
string |
componentName field from the simInfo. |
termOrder |
l_strings |
List of terminals for the component. (The |
|
|
list can change for each instance.) |
ports |
l_ports |
Not yet supported. Always returns nil. |
parameters |
l_parameters |
Collected indirectly. The parameters of the |
|
|
cellview. |
|
|
|
All of these fields are read-only, so attempting to change their values results in an error.
April 2004 |
330 |
Product Version 5.3 |