Professional Documents
Culture Documents
SpyGlassPredictiveAnalyzerUserGuide PDF
SpyGlassPredictiveAnalyzerUserGuide PDF
SpyGlassPredictiveAnalyzerUserGuide PDF
Version 4.4.1
October 2010
Atrenta, Inc.
2077 Gateway Place, Suite 300
San Jose, California 95110
1-866-ATRENTA (1-866-287-3682)
http://www.atrenta.com
Preface........................................................................................................................... 25
About This Book .....................................................................................................................25
Contents of This Book ...........................................................................................................25
Typographical Conventions ..................................................................................................27
Table of Contents
Table of Contents
Table of Contents
Table of Contents
Table of Contents
Table of Contents
Table of Contents
Table of Contents
Table of Contents
Table of Contents
DEFAULT_PRAGMA ..............................................................................................................767
DEFAULT_BBOX_MODEL .....................................................................................................767
AUTOENABLE_RULEGROUP_PARAMETER_CONTROL ...................................................768
AUTOENABLE_MEMORY_HANDLING .................................................................................768
AUTOENABLE_HUGE_SCHEMATIC_DISPLAY ...................................................................769
SDE_CONFIG_OPTIONS.......................................................................................................769
AUTOENABLE_BUILTIN_CHECKS_FOR_POLICY ..............................................................769
Configuration Settings for VHDL Designs ........................................................................770
VHDL_LIB_MAP .....................................................................................................................770
AUTOENABLE_VHDL_SORT ................................................................................................771
DEFAULT_VHDL_SORT_METHOD.......................................................................................771
Configuration Settings for Verilog Designs ......................................................................772
AUTOENABLE_INFERBLACKBOX........................................................................................772
AUTOENABLE_PRECOMPILED_VLOG................................................................................773
Other Configuration Settings ............................................................................................773
COMMAND_OPTION_FILENAME .........................................................................................773
COMMAND_FILE_ARGS .......................................................................................................774
SGDC_INCLUDE_FILE_PATH...............................................................................................774
OVERLOAD ............................................................................................................................775
SPYGLASS_DISPLAY_LANGUAGE......................................................................................776
DEFAULT_SLF_CONFIG_FILE..............................................................................................777
AUTOENABLE_GATESLIB_AUTOCOMPILE ........................................................................778
Table of Contents
Index.............................................................................................................................791
Chapter Describes...
Introducing the SpyGlass Predictive About the SpyGlass Predictive
Analyzer Analyzer
The SpyGlass Predictive Analyzer The SpyGlass Predictive Analyzer
Concepts Concepts
Using the SpyGlass Design Environment The SpyGlass Design Environment
Basic Operating Principles
Chapter Describes...
The SpyGlass Design Environment Menus The SpyGlass Design Environment
and Toolbar Menu Bar and Toolbar
The SpyGlass Design Environment The SpyGlass Design Environment
Windows windows and their purpose
Analyzing VHDL Designs Working with VHDL source
Analyzing Verilog Designs Working with Verilog source
Analyzing Mixed-Language Designs Working with Mixed-Language
source
Analyzing DEF Designs Working with DEF source
Controlling the RTL Synthesis Engine Features to control synthesis of your
source design
Working with SpyGlass Messages Features to control SpyGlass
Messages
Working with Large Designs Features to analyze very large
source designs
Managing the Design Hierarchy Features to control the design
hierarchy
Using SpyGlass Design Constraints SpyGlass Design Constraints feature
Special Features Special features like the Lib2RTL
feature and Memory Reduction
feature
Mixed-Language Design Syntax and Commonly acceptable Mixed-
Semantics Requirements Language design syntax and
semantics
SpyGlass Functional Signal Processing How SpyGlass works with special
signals like clocks, resets, etc.
Using SpyGlass in the Batch Mode How to use SpyGlass from
command-line
Typographical Conventions
This document uses the following typographical conventions:
Convention Indicate...
Square brackets “[ ]” An optional entry or parameter.
Braces “{ }” An entry that can be specified one or more times
Vertical bar “|” A list of choices out of which you can choose one
Horizontal ellipsis “. . .” Other items that are normally provided
SpyGlass Features
SpyGlass provides the following special features:
• Full language support for Verilog (IEEE 1364, Verilog 2001, and
SystemVerilog) and VHDL (VHDL-87 and VHDL-93).
• A rich suite of built-in rules, including:
• File checks, such as file names, design units per file and headers
• Naming checks on signals, ports, parameters, constants, clocks
and other constructs
• Style and related checks
• Coding for synthesis and related checks
• Design practice and related checks
• Area, timing and synchronization checks
• Clock and reset checks
• DFT, LowPower, Constraints, ERC and similar checks (cost
options)
• A variety of report format options so you can set up your own
reports
• Built-in engines, including RTL synthesis and flattening, to enable
detailed implementation tests including clocking, reset and
synchronization of asynchronous signals
• Two interfaces:
• A Graphical User Interface (GUI) called the SpyGlass Design
Environment or SDE
• A Batch execution for integration in corporate design flows
Additional features allow you to customize SpyGlass to meet your
company’s unique needs. See the SpyGlass Policy Customization
Guide for more details. Customization features include:
Toolbar
File/De-
sign/Con-
straints/
Instances
window
Source
window
Message
window
Status Bar
• The Source Window that displays the source description (HDL files,
SpyGlass Design Constraints files, Rule-generated text files, etc.)
• The HDL Navigator Window that displays the loads and drivers
declared for a signal.
• The Message Window that shows the message information in many
useful formats
• The Status Bar that shows information about the currently loaded
design
• The Modular Schematic Window (not shown in the illustration) that
displays the schematic view of the source design
• The Incremental Schematic Window (not shown in the illustration)
that displays the schematic view of the source design across
hierarchies
• The Waveform Viewer Window (not shown in the illustration) that
displays the waveform related to the selected message
• The Legend Window (not shown in the illustration) that displays
details of selected objects
You can trace SpyGlass GUI open and close operations. The GUI trace
details are logged in the spyglass_cmdline_debug.log file. For details
refer to section Files Generated to Support Special Features.
Schematic Data
Options
Source Files
SpyGlass
SpyGlass
Design Environment
Library Files
are specified and in the order the rules are defined within the
policies.
3. SpyGlass checks style/Lint rules.
SpyGlass next orders the objects in your RTL design and performs
any checks you request for standard style and Linting rules. It then
logs rule messages and the location of each message in the Violation
Database for processing by the report generator. For each unit in the
design, SpyGlass checks first for HDL syntax and structural errors.
Then it reports with different levels of severity (see section below on
SpyGlass error messages). If you request only style or Linting
checks, SpyGlass ends its run at this point.
4. SpyGlass checks inference rules.
If SpyGlass detects no syntax messages in step 3, and if you have
asked for additional rule checks requiring inferred logic, SpyGlass
next transparently invokes its RTL synthesis engine. This creates an
internal gate-level, hierarchical design built around generic gates
that allows SpyGlass to accurately detect inferred logic such as
latches, flip flops and counters. The gate-level logic naming is
controlled within SpyGlass so any messages found in inferred logic
can easily be mapped back to the RTL code that caused it, which
simplifies debugging.
5. SpyGlass checks connectivity rules.
Once SpyGlass has checked the inferred logic, and if you have asked
for further checks, SpyGlass transparently flattens your design so it
can check complex connectivity rules. These include issues such as
correct synchronization logic at clock domain crossings, reset rules,
combinational loop detection, and DFT and cone analysis. In effect,
this phase can encompass any form of net list checking. As in the
synthesis phase, controlled naming maps any errors SpyGlass
detects back to your source code.
6. SpyGlass uses additional analysis engines
Depending on the complexity of a given rule, SpyGlass will also
NOTE: Some of the rules in SpyGlass policies are mapped to the SpyGlass
built-in messages. Thus, when you run SpyGlass with rule-checking, some of
the standard warning and error messages are suppressed and equivalent rule
messages are generated in their place.
NOTE: If SpyGlass detects an internal software error, it reports the error as a
WARNING message. These errors are normally associated with a specific
rule’s implementation and the rule name is also reported. Any such error
messages should be reported to Atrenta Customer Support.
Analyze
Start Exit
Design
Exit1
Analyze
Start Exit
Design
Exit2
Exit1
line option.
5. ELABDU type rules
The ELABDU type rules work on the elaborated design units.
An ELABDU type rule is checked once on each design unit,
elaborated with unique set of parameters/generics with which it has
been instantiated. For example, if a module is instantiated 4 times
with a parameter value of 5 and 2 times with a parameter value of 7,
then the module would be elaborated only twice, (instead of 4+2)
once with 5 as the parameter value and once with 7 as the parameter
value.
6. RTLTOPDU type rules
The RTLTOPDU type rules are run on the top design unit,
determined by SpyGlass after design elaboration.
7. LEXICAL type rules
The LEXICAL type rules check on each design file, one at a time.
This category generally contains non-electronic and text-based
rules, such as line-length, tabs, indentation, naming conventions, etc.
By default, the LEXICAL type rules do not run on precompiled RTL
files. To enable rule checking on such design units, specify the -
hdllibdu command-line option.
8. VSDU type rules
The VSDU type rules check upon a synthesized object model of a
design unit.
A VSDU type rule is checked once on each synthesized design unit.
9. VSTOPDU type rules
The VSTOPDU type rules are run on the synthesized object model
for each top module hierarchy.
Since the RTL view is not available, such rules’ checking is limited
to only the synthesized object model.
10.BLOCKDU_CD type rules
top top
Flattened area
flattened design unit and each specified block under the design unit
once.
Consider the following example where the design unit top has a
partition named blk1:
top top
Flattened area
Mandatory Rules
In each SpyGlass run, some mandatory set of rules are automatically
run to check for various issues in the SGDC file, waiver file, sglib files,
design read and command line. Currently, these mandatory rules are
run even if you do not specify any SGDC or waiver file. This issue will
be fixed in some future SpyGlass release.
Following is the list of mandatory rules that are automatically run in
each SpyGlass run:
AnalyzeBBox checkDupCell CMD_template02 DetectTopDesig
nUnits
ElabSummary GenerateConfMa HdlLibDuCheck InferBlackBox
p
PrecompileLibC PrecompileLibCh PrecompileLibCh PrecompileLibCh
heck01 eck02 eck03 eck04
• -policy P1
This will run the rule, R1.
• -policy P1 -p1
This will run both the rules, R1 and R2.
• -policy P1 -rules R2
This will run the rule, R2. In this case, adding command line -p1
will give the same result.
For example, in the lint policy, if the fast parameter is set, the
following rules would not run:
checking summary.
The rule severity-classes are reported in the order of decreasing
severity.
SpyGlass allows you to upgrade the severity of all the rules, whether
the rule is a built-in rule or not. However, to downgrade the severity of
a rule (built-in or non-built-in), you need to check for the following
cases:
• If a rule is a mandatory built-in rule that can be ignored,
downgrading the severity of that rule is allowed.
• If a rule is a mandatory built-in rule that cannot be ignored,
downgrading the of severity of that rule should NOT be allowed.
• If a rule is a non-built-in rule, downgrading the of severity of that
rule can be allowed as this does not impact the basic design OM.
The first count set in the summary indicates the number of FATAL
severity-class messages found in the design. This column is not printed
if there are no FATAL severity-class messages.
The subsequent count sets indicate the count of messages found for
other severity-classes (ERROR, WARNING, and INFO). If there are no
messages found for one of these severity-classes, the corresponding
count set is reported as zero.
In case, you have set a rule message reporting limit using the -lvpr
command-line option and some messages are suppressed, the count of
suppressed messages is reported as in the following example:
...
Number of Overlimit Messages : 25
(2 errors, 11 warnings, 12 Infos
...
checking aborted)
Rectify the Save/Restore related options in the command-line to
solve this issue
Print Next
Message
Save Find
######################################################
New Messages -> BuiltIn
<New BuiltIn messages>
New Messages -> Non-BuiltIn -> Template=<NoTemplate>
<New Non-BuiltIn messages of the rules which do not
belong to any of the templates>
New Messages -> Non-BuiltIn -> Template=T1
<New Non-BuiltIn messages of the rules belonging only to
the template T1>
New Messages -> Non-BuiltIn -> Template=T1, T2
<New Non-BuiltIn messages of the rules belonging to both
the templates T1 and T2>
New Messages -> Non-BuiltIn -> Template=T2
<New Non-BuiltIn messages of the rules belonging only to
the template T2>
######################################################
######################################################
PreExisting Messages -> BuiltIn
<PreExisting BuiltIn messages>
PreExisting Messages -> Non-BuiltIn ->
Template=<NoTemplate>
<PreExisting Non-BuiltIn messages of the rules which do
not belong to any of the templates>
PreExisting Messages -> Non-BuiltIn -> Template=T1
<PreExisting Non-BuiltIn messages of the rules belonging
only to the template T1>
PreExisting Messages -> Non-BuiltIn -> Template=T1, T2
<PreExisting Non-BuiltIn messages of the rules belonging
to both the templates T1 and T2>
PreExisting Messages -> Non-BuiltIn -> Template=T2
<PreExisting Non-BuiltIn messages of the rules belonging
only to the template T2>
######################################################
######################################################
Fixed/Missing Messages
<Fixed/Missing messages>
######################################################
template T2>
######################################################
######################################################
Fixed/Missing Messages
<Fixed/Missing
messages>##################################################
####
Other Reports
In addition to the standard reports, SpyGlass also provides other reports
(custom reports) that are designed for specific customer requirements
but can be used by all SpyGlass users.
You can generate these custom reports in the SpyGlass Design
Environment by specifying the following addition commands while
invoking SpyGlass Design Environment:
... -I <your-inst-dir>SpyGlass-x.y.z/SPYGLASS_HOME/
auxi/custom_reports -report <report-name> ...
Here, <your-inst-dir> is the location where SpyGlass is installed
and <report-name> is the name of the custom report.
1. First, sort the messages by 2sa, that is, sort by the value of the
second argument (2) which is a string argument (s) in ascending
order (a).
2. For messages with the same second argument value, sort by 1nd,
that is, sort by the first argument (1) which is a numeral argument
(n) in descending order (d).
3. For messages with the same first argument value, sort by 3e/
val1/val2/val3, that is, sort by the third argument (3) which is
an enumerated type argument (e) based argument values val1, val2,
and val3 in that order.
In addition to the argument-based sorting orders described above, you
can specify message sorting order by file (specified as f) and by line
number (specified as l), both in either ascending order (specified as a)
or descending order (specified as d). Thus, fd means that sort the
messages by file name in descending order. la means that sort by line
number in ascending order.
Consider the -sortrule specification in the above example with
addition values as follows:
-sortrule Verilog+R1+2sa+1nd+3e/val1/val2/val3+fd+la
This specification means that any sorting after the argument-based
sorting will be done first by file names in descending order and then by
line numbers in ascending order.
By default, the argument values are sorted in a case-sensitive manner.
Specify i (for ignore case) to indicate that the argument values are to
be sorted in a case-insensitive manner. Consider the following
example:
-sortrule Verilog+R1+2sai+1nd+3e/val1/val2/val3+fdi+la
The above specification indicates that argument-based sorting indicated
by 2sa and file-based sorting indicated by fd should be performed in
a case-insensitive manner.
sign-off.rpt.
In addition, SpyGlass also stores policy-specific reports such as
Audit-RTL.rpt and adv_cdc.rpt in the spyglass_reports directory. For
more information on reports, refer to the About the Message Reports
section.
• spyglass.out
This file is the screen-out file of SpyGlass in which runtime
information (output) and rule-checking information is saved.
By default, the screen-out file name is spyglass.out and is saved in
the current working directory along with spyglass.log. However
during runtime, if spyglass.log name or location is changed, the
screen-out file is also changed accordingly.
This file is not generated in batch Console and DesignWare batch
runs.
• spyglass_spysch
This is a directory that stores the internally generated files used for
internal SpyGlass processing or to support GUI features. This
directory is saved in the current working directory of SpyGlass.
Overview
This chapter describes the Atrenta® SpyGlass® Design Environment’s
basic working procedures.
You can add or remove source design files in the current profile by
using the Setup > Source... menu option. You can also rearrange the
design files by dragging and dropping as described in Rearranging
Files.
You can edit a source design file using the Edit > Edit Current Display
File menu option.
You can print the currently displayed source design file File > Print
RTL menu option.
Overview
This chapter describes the features and uses of the SpyGlass Design
Environment menu bar, toolbar, and status bar.
• Help Menu
File Menu
When you click the File menu, the following options appear:
get updated to the new profile. The Design View page and Message Window
information gets removed until SpyGlass is run again.
When you select this menu option, the Open dialog appears. You can
navigate through your directory structure to locate the .spp file that
contains the information that you want to analyze. Open the .spp file by
either double-clicking the file, or clicking the file and then clicking
Open.
When you open an existing profile, all the option settings will
propagate to their proper positions in the SpyGlass Design
Environment.
When you select this menu item, the SpyGlass Design Environment
will check to see if you have made any changes to the existing profile
settings. If changes have been made, the SpyGlass Design Environment
prompts you to save those changes. To save the changes, you must
select the .spp file name. If the .spp file with the current name already
exists or you have not chosen a name for the .spp file, SpyGlass Design
Environment prompts you to rename your .spp file.
The Modular Schematic window, Incremental Schematic window, and the
Waveform Viewer window, if open, gets cleared (and the buttons are
disabled) when you load a new profile.
You can trace the GUI operation for opening a profile. The GUI
operation trace details are logged in the spyglass_cmdline_debug.log file.
For details refer to section Files Generated to Support Special
Features.
In the above dialog, click the Yes button to save the current profile as a
profile file, that is, with design file details.
Click the Save Without Files button to save the current profile as a
template, that is, without design file details.
You can select the Set Don’t show this dialog again option to clear the
Prompt to select Profile saving style preference for the current and
subsequent SpyGlass runs. That is, the profile files will always be
dialog appears when you choose the File > Exit menu option:
In the above dialog, click the Yes button to exit SpyGlass Design
Environment, or click the No button to cancel and continue working in
the SpyGlass Design Environment.
You can select the Don’t show this dialog again option to clear the Prompt
before exit from SpyGlass Design Environment preference for the current
and subsequent SpyGlass runs. That is, the SpyGlass Design
Environment will exit without confirmation when you choose the File >
Exit menu option.
If you have not set the Prompt before Exit from SpyGlass preference (from
the Misc Page of the Tools > Preferences... menu option), the SpyGlass
Design Environment exits without confirmation.
You can also use the <Ctrl> + <Q> key combination on the keyboard to
open the Exit confirmation dialog.
Edit Menu
When you click the Edit menu, the following options appear:
When you select this menu option, the SpyGlass Design Environment
will launch your text editing program of choice, as defined by the
Specify Editor program setting in the Misc Page of the Tools >
Preferences menu option. If you have not specified a text editor in this
setting, the text editor pointed to by the EDITOR environment variable
is invoked. Otherwise, SpyGlass attempts to invoke the commonly-
used text editor of your operating platform.
The file currently being viewed in the Source window will open for
editing.
NOTE: If you have set gedit, kedit, or kwrite as the editor of your choice (as
defined by the Specify Editor program setting in the Misc Page of the Tools >
Preferences menu option), the cursor in the editor program will not be set to the
line highlighted in the Source window. Note that this behavior is specific to
editors, such as gedit, kedit, and kwrite. However, if VI or GVIM is set as editor,
the cursor in the editor is automatically set to the line highlighted in the Source
window of SpyGlass.
You can also launch your editor to modify the current file by pressing
the <E> key on the keyboard.
In the above dialog, enter the text that you want to search in the Find
Text textbox. Next, select any of the following options from the Find In
pull-down list and click the Search button.
You can select any of the following options in the Find In drop-down
list:
Option Description
Source This option is used to search your current source file (HDL
file or SpyGlass Constraints file) for a given string or
regular expression
Session Log This option is used to search the Session Log page in the
Message window for a given string or regular expression
File Tree This option is used to search the File view page for a
given filename
Design Tree This option is used to search the Design view page for a
given module name
Constraints Tree This option is used to search the Constraints view page
for a given file name
Setup Menu
When you click the Setup menu, the following options appear:
Verilog Tab
If you start the SpyGlass Design Environment with the -verilog
option, selecting the Setup > Run Options menu option will open the
Options window to this tab.
VHDL Tab
If you opened the SpyGlass Design Environment with the -vhdl
option, selecting the Setup > Run Options menu option will open the
Options window to this tab.
Synthesis Tab
Selecting the Synthesis tab will bring up the following window:
Other Tab
Selecting the Other tab will bring up the following window:
Select a file(s) from the Selected Directory section and click Add to
add the file(s).
Setting this field is equivalent to using the -sglib command-line
option.
• SpyGlass Output File Directory (-wdir)
Enter the full path name of the directory where SpyGlass output files
should be created.
Setting this field is equivalent to using the -wdir command-line
option.
• LEF Library File(s) (-lef)
Enter the name of the LEF file to specify the LEF files.
Setting this field is equivalent to using the -lef command-line option.
Language Tab
Selecting the Language tab will bring up the following window:
Relevant SpyGlass run options of this tab include: Verilog, VHDL, Mixed,
and Def. When this tab is selected, the current language setting options
will be turned on.
• Verilog
Click this option if you wish to change the language selection from
VHDL, Mixed, or Def to Verilog.
• VHDL
Click this option if you wish to change the language selection from
Verilog, Mixed, or Def to VHDL.
• Mixed
Click this option if you wish to change the language selection from
Report Tab
Selecting the Report tab will bring up the following window:
Specific Options tab of the Setup > Library... menu option that have the
file extension specified using the Library file extension(+libext) field in the
Verilog Specific Options tab of the Setup > Library... menu option:
Move the required files from the Found Files list to the Design Files list
as required and then click OK.
To add a library, click the Add button. The following dialog appears:
To add a library, you must provide both the logical name and the
physical library name. The logical library name is the name of the
library as you used it when creating a pre-compiled Verilog library or in
your VHDL description. The physical library name is the full pathname
of the library file.
You can add a physical directory to store the physical libraries. To add a
physical directory, click the ( ) button. The Directory Selection dialog
appears, as shown in the following figure:
In the above dialog, click the Create Directory button to open the Create
Directory window in which you can specify the name of your directory.
After creating the directory click the OK.button. This adds the created
directory in the Directory Selection window.
To remove a library file from the Library File list, click the Filename in
Library File list and then click Delete.
If you delete a library that is being used in the Precompile Mapping
page, the following dialog appears:
Clicking the Ok button will also delete the corresponding entries for
that logical library from the Precompiled Mapping page.
To modify the information of a library file from the Library File list,
click the Filename in Library File list and then click Edit or double-click
the Filename in the Library File list. The Modify a Library window
selection is changed.
When you have made the changes, click OK. If the Precompile libraries
contain errors, then the following dialog appears:
Clicking the Ok button also deletes the corresponding entries for the
logical library from the Precompiled Mapping page.
have been already defined in the Library Mapping page. Then, click
( ) and browse to select the source file list from the preferred location.
After specifying the required information, click the OK button.
When you change an entry in the Precompile Filelist Mapping page,
SpyGlass performs similar sanity checks as done in Precompile Mapping
page.
Using this page, you can add library files, library directories, include
directories, and library file extensions.
• Library Files/Dirs(-v/-y)
Use this field to specify space-separated pathnames of the library
files and/or directories that you need. Alternatively, click Browse -v
to select the required library files and/or Browse -y to select the
required directories.
The library files added using this window are passed to the analysis
The library file extensions added using this window are passed to the
analysis run using the +libext command line option. For example, if
you entered +libext+.v in the Library file extension(+libext) field,
the equivalent command-line addition would be:
+libext+.v
To change the current working directory, enter the full path of the new
working directory or click ( ) to browse and select the new working
directory. Then, click Change.
NOTE: Special care should be taken when changing the working directory
because all source and library files will become relative to the new working
directory. You must open a given Profile or Violation Database file from the
same relative current working directory from which it was originally created.
Setting Indicates
New RTL block (Default) The GuideWare templates for the New_RTL
development methodology (installed at <your-inst-dir>/
SPYGLASS_HOME/GuideWare/New_RTL directory)
IP (RTL) The GuideWare templates for the IP_RTL
methodology (installed at <your-inst-dir>/
SPYGLASS_HOME/GuideWare/IP_RTL directory)
IP (Netlist) The GuideWare templates for the IP_netlist
methodology (installed at <your-inst-dir>/
SPYGLASS_HOME/GuideWare/IP_netlist directory)
Soc Integration & The GuideWare templates for the SoC methodology
Implementation (installed at <your-inst-dir>/SPYGLASS_HOME/
GuideWare/SoC directory)
SpyGlass Sub- The SpyGlass templates for various methodologies
Methodology Templates (installed at <your-inst-dir>/SPYGLASS_HOME/
Methodology/<methodology-name> directory
Setting Indicates
Custom Any user-specified directory containing
methodologies/templates as an absolute path or a
path relative to the current working directory
SPYGLASS_LOCAL Any user-specified directory containing
methodologies/templates if the SPYGLASS_LOCAL
environment variable is set
SPYGLASS_TEAM Any user-specified directory containing
methodologies/templates if the SPYGLASS_TEAM
environment variable is set
The templates located in the directory specified by this menu option are
shown in the Methodology/Template Selector.
You can also use the ( ) button on the toolbar to open the
Methodology/Templates dialog.
The dialog shows a treeview of Methodologies/Templates in the
current template directory. For each methodology or template, a short
description about the purpose of the methodology/template is shown.
Additionally, if you click the short description of a methodology or
template, a detailed description of the methodology/template is shown
in a small balloon window.
Use the Change... button (at the top-right corner of the Methodology/
Templates dialog shown above) to specify a different template
directory. See Setup > Set Template Directory... menu option for more
details.
To select/unselect a template, check/uncheck the button before its
name. To select multiple templates, check the Allow Multiple Selection
setting and then select multiple templates.
To unselect all currently selected templates, click Unselect All.
On completion, click OK to save the settings and exit.
NOTE: Clicking the OK button also reloads an already selected template.
You can trace template selection/expansion GUI operations. The GUI
trace details are logged in the spyglass_cmdline_debug.log file. For
details refer to section Files Generated to Support Special Features.
You can trace policy, rule, and rule parameter related GUI operations.
These include the following:
• Selecting/unselecting a policy/rule
• Selecting/unselecting a full/default policy
• Modifying rule parameter values
These operations are logged in the spyglass_cmdline_debug.log file. For
details refer to section Files Generated to Support Special Features.
Selecting Policies
To include a policy for analysis, select the check box for that policy
in the Policies selection window. When a policy is selected, it
becomes active and will be used in the SpyGlass analysis.
The Power Estimation policy of SpyGlass uses a targeted SpyGlass
core version. As a result, you cannot run the Power Estimation
policy with any other SpyGlass policy. Thus, if you select the Power
Estimation Policy and some other SpyGlass policy, the following
dialog appears:
You can now either clear all other policies or clear the Power
Estimation Policy.
Selecting Rules
The Rules section of the Policies/Rules/Parameters Window displays
the Rules Selection window where all the rules for a policy, classified
follows:
If you are not sure where a specific rule is defined, you can enter its
name or description (or partial name/description) in the Search String
field and click the Find button. The rule hierarchy expands to display
the first rule matching the string. If the display shows only the rule
name, a short description of the rule appears above the Search String
field. You can click Find again to locate the next match of the string.
NOTE: The rule search only works from the selected rule/group onwards in the
displayed rules. To search the complete set of rules, first select the top entry in
the Rules Selection screen.
To view the help on a particular rule, right-click the rule and select Help
from the context menu. This will open up a browser window and
display the rule description in HTML.
You can also right-click a rule and select the Customize This Rule... menu
option to customize the rules based on your requirements.
See the SpyGlass Policy Customization Guide for more details.
<your-inst-dir>/SPYGLASS_HOME/htmlhelp/
<policy-name>/<rule-name>.htm
Where <policy-name> is the rule mnemonic (for example,
lint for SpyGlass Lint Policy or dft for SpyGlass DFT Policy)
and <rule-name> is the rule name. Thus, if you right-click the
Clock_sync01 rule of SpyGlass Clock-Reset Policy, the SpyGlass
Design Environment will look for the following file:
<your-inst-dir>/SPYGLASS_HOME/htmlhelp/clock-reset/
Clock_sync01.htm
If this HTML file is found, a browser window opens and displays
the HTML file.
2. If the Rule HTML file is not found, the SpyGlass Design
Environment looks for the following file:
<your-inst-dir>/SPYGLASS_HOME/htmlhelp/
<policy-name>/<policy-name>.htm
Where <policy-name> is the rule mnemonic.
If this HTML file is found, a browser window opens and displays
the HTML file.
3. If both the Rule and Policy HTML files are not found, the SpyGlass
Design Environment creates an HTML file named help.htm (in the
current working directory) that contains the Rule Description (pod-
cut section) in the Policy Ruledeck file. Then, a browser window
opens and displays the generated HTML file.
To customize the Rule HTML Help for site-specific description,
language, formatting, etc., create Help HTML files named
<rule-name>.htm for each rule and copy them to the
<your-inst-dir>/SPYGLASS_HOME/htmlhelp/<policy-name>
directory.
The SpyGlass Design Environment will then display your customized
HTML file when you right-click a rule name in the Rule Selection
window.
Selecting Parameters
When a policy has been selected in the Policies section, the rule
parameters for that policy are displayed in the Parameters section of the
Policies/Rules/Parameters window. The parameters are arranged
alphabetically in the Parameters section of the Policies/Rules/Parameters
window. This section displays the default value for each parameter in
the Value field. You can change this default value by either selecting a
value from the available values in the drop-down list or by specifying a
value in the textbox. For example, if a policy includes a parameter with
a selection of values (for example yes and no), you can use the
drop-down list to select the value that you wish to use for analysis.
If a policy includes a parameter with an undefined value, the Value field
will be empty for this parameter. If you do not enter a value for an
undefined parameter when selecting the policy, the SpyGlass Design
Environment assumes a NULL value ("") for the parameter.
You can also set all the parameters to their default values by selecting
the Restore Defaults button.
When you click on a parameter, SpyGlass displays the help of that
parameter along with the help of the related rule(s) in the Help window
(below the Parameters section). The following example shows the
description of the casesize rule parameter used by the W453 rule of
the Lint policy:
NOTE: In case the parameter description is lengthy and does not fit in the Help
window, you can either use the scroll-bar of the Help window or resize the
window by dragging the upper edge of the window to view the full parameter
description.
You can also view the rules that are affected by a specific rule
parameter in the Parameters section of the Policies/Rules/Parameters
that the value of that rule parameter is consistent/same for that run. If
however, conflicting values have been set for that rule parameter in the
policies that are included for a run, then SpyGlass displays the
following warning dialog message (when the Run button is clicked)
indicating that there is a conflict in some of the parameter values in the
current policy selection:
Here, you can either click Ok to reset all the rule parameter values to the
value that is set for that rule parameter in the alphabetically last policy.
For example, if the value of the rule parameter allviol is set as “no”
in the “morelint” policy and “yes” in the “openmore” policy and both
the policies are included in a specific SpyGlass run, then clicking Ok in
the above dialog will reset the value of the allviol rule parameter as
“yes” (the value set in the “openmore” policy) because alphabetically,
“openmore” comes after “morelint”.
To override this behavior and set a value of your choice for all the
conflicting rule parameter values, click the Modify button. Then, the
following window appears listing all the conflicting parameter values:
Here, you can select a single value for all the conflicting rule parameter
values by using the pull-down list alongside the rule parameters, which
lists the permissible values for each rule parameter.
You can click Cancel to abort the current run and go back to the Policies
Browser Window to explicitly correct the conflicting rule parameter
values.
The Basic set of policies now have one consolidated license feature for
all policies/rule-libraries whereas the other categories (Advanced and
Custom) continue to have individual license feature for each policy/
rule-library.
When you select this menu option, the License Manager window
appears:
appears:
Check the policies for which design information should be saved even
if no rules of these policies have been selected to run.
setting. Then, specify the location of the directory where the design
was saved earlier in the Save/Restore Cache Directory setting. Use the
Browse... button to browse and select the directory.
Click Preferences... to set your Design Save/Restore preferences. The
Save/Restore Preferences dialog appears. Check the Enable Quick
Restore setting if the current SpyGlass settings are not compatible with
the SpyGlass settings specified during design save. This setting
disables the rules that may require re-parsing and/or re-synthesis of the
design.
NOTE: If Save/Restore fails due to some reason, then the current profile file is
reloaded in SDE so that the previous run conditions are not lost.
NOTE: When you invoke SpyGlass with the -enable_save_restore
command-line option, then the Enable Save/Restore check box is
automatically selected and the Save/Restore Cache Directory and the
Preferences button are enabled. However, if you invoke SpyGlass without the
-enable_save_restore command-line option then all options are
disabled.
Run Menu
When you click the Run menu, the following options appear:
If you have not specified any source files or policies, the SpyGlass
Design Environment prompts you for them before it will run.
When you select this menu item, the SpyGlass Design Environment
will check to see if a Violation Database file already exists with the
current name. If a Violation Database file with the current name
already exists, or you have not chosen a name for the Violation
Database file, the SpyGlass Design Environment will prompt you to
name your Violation Database file. If the Violation Database file
already exists, the SpyGlass Design Environment will ask you if you
want to save the impending analysis results with a different name.
When you are working with the default Violation database name
(spyglass.vdb), you are not prompted for the name.
You can also click the Run Button ( ) in the toolbar to start an analysis.
a45.sglib.
• Standard SpyGlass output files but with different names
The log file is created with the name spyglass_lc_<libfile>.log and
the Violation Database file with the name spyglass_lc_<libfile>.vdb.
• Standard SpyGlass automatic report (moresimple report)
2. Check the automatic report.
In case, there are error messages, you need to fix the corresponding
problems. Refer to the log file for other details.
3. If the library has compiled without errors, use the generated
SpyGlass-compatible format library files in the SpyGlass Library
file(s) (-sglib) field of Other Tab of Setup > Run Options... menu
option.
4. Run SpyGlass analysis as before.
NOTE: After pre-compiling your gate libraries, you need not specify the
Gates Library files from the Synopsys Gates Library (-gateslib) field of Other
Tab of Setup > Run Options... menu option.
Tools Menu
When you click the Tools menu, the following options appear:
Enter the name of the new waiver file (normally with .swl extension).
Check Set as default if you want this new waiver file to be the default
waiver file. Click OK.
NOTE: The waiver files can have any extension. When you are creating a new
waivers file, the SpyGlass Design Environment suggests the .swl extension to
facilitate better recognition and handling. If you do not specify the file extension
for a waiver file, then by default, the .swl file extension is appended to the
waiver file name.
The new waiver file is created and added to the Waiver Files treeview.
However, the actual disk file is not created until you explicitly save the
file using the Save file as... option from the context menu. Waiver files
that are not yet saved on the disk are indicated with a red-colored icon
in the Waiver treeview.
right-clicking on the file name and then selecting Enable File. The
enabled file is added to the treeview and is removed from the Unused
File treeview.
To disable a selected Waiver file, right-click on the file name in the
Waiver Files treeview and then select Disable File. The disabled file is
removed from the treeview and is added to the Unused File treeview.
To remove a selected Waiver file from the treeview (including the
Unused Files treeview), right-click the file name and select Remove File
from the context menu. The file is removed from the treeview.
NOTE: Default waiver files that are not yet saved, indicated by a red colored
file icon with the alphabet “D” ( ), cannot be removed from the Waiver treeview
until they are first disabled.
waiver file name in the treeview (including the Unused Files treeview)
to select it. The waivers available in the file are displayed in the top
right table. The name of the selected file is displayed in the Waivers
Window title bar.
To add a new waiver, click Add Row button available in the top right
corner of the Waivers window. A new row is added to the table. To
delete an existing waiver, select the row corresponding to the waiver to
be deleted and click Delete Row button available in the top right corner
of the Waivers window. The selected waiver is deleted from the table.
You can also add/delete row(s) for waivers by using the right-click
menu options (discussed later in Right-click Menu Options).
You can view the list of rules for which waivers have been applied. The
count of such rules is displayed as a hyperlink in the Matched column of
the spreadsheet. When you click the count in the Matched column a list
rules for which the waiver has been applied is displayed in the context
menu. You can also click a rule to locate the message in the Waived
tree.
Make the required settings in the entry fields available in the bottom
right section of the Waivers window. The fields available in this section
are:
File: Use this field to specify the files for which the rule messages need
to be waived. You can also click ( ) and select a file from the File
Selection dialog.
Line: Use this field to specify the line for which the rule messages need
to be waived.
IP: Use this field to waive rule messages for the specified design unit
(IP blocks) or all design units specified in the IP library. You can also
click ( ) and select a file from the IP Selection dialog.
DU: Use this field to waive rule messages for the specified design unit
or all design units in the specified library. You can also click ( ) and
select a file from the DU Selection dialog.
Rule: Use this field to specify the rules, rule groups, or policies for
which the messages need to be waived.
Severity: Use this field to specify the severity class or severity label for
which the rule messages need to be waived.
Except: Use this field to specify the rules, rule groups, or policies for
which the messages need to be excluded.
Weight: Use this field to specify the weight of the rules that need to be
waived.
Comment: Use this field to add a comment for the specified waiver. By
default, when a row is added in the spreadsheet, the comment text box
displays information about the user who created the waiver and the
time when the waiver was created.
Message: Use this field to specify the message that needs to be waived.
In this section, at least one of the fields must be specified from one of
the following field groups:
Group 1: File/Line, IP, DU
Group 2: Rule, Severity
When more than one field is specified from Group 1, a message is
waived if any one of the Group 1 field criteria is met. When more than
one field is specified from Group 2, a message is waived only if all the
Group 2 field criteria are met. If fields from both Group 1 and Group 2
are specified, a message is waived only if any one of the Group 1 field
criteria is met and all Group 2 field criteria are met.
When you type a value in the File, Line, IP, DU, Rule, Severity, Except, or
Weight fields, the Waiver Expression column is dynamically updated with
the value entered by you. For example, if you enter the value
“NoXInCase-ML” in the Rule field, the Waiver Expression column is
dynamically updated as follows:
waive -rule “NoXInCase-ML”
NOTE: These waiver settings are same as those available in the SpyGlass
selected row.
• Insert Import Waiver > Row Above
Select this option to import a new hierarchical waiver row above the
currently selected row. When you select this menu options then a
new row with the waive constraint is added above the selected row.
When you select the new row, the Waiver Editor window appears as
shown below.
You can specify the block to import the waivers specified in the
selected block-level design into the chip-level design in the Block
text box. Alternatively, you can click ( ) and browse to the
directory containing the required block.
You can specify the path of the waiver file in the File text box.
Alternatively, you can click ( ) and browse to the directory
containing the required file.
See the Support for Hierarchical Waivers section for details.
• Insert Import Waiver > Row Below
Select this option to import a new hierarchical waiver row below the
currently selected row. See the Support for Hierarchical Waivers
section for details.
• Delete Row(s)
Select this option to delete the currently selected row(s).
• Display Comment
Select this option to view the complete text of the User Comment
field in a pop-up box.
• Set Row Height...
Select this option to set the row height between 1 (default) to 5 units
for the entire table. This option is useful if the table contains long
message expressions that do not fit in the default row height.
• Insert common Comment
Select this option to add a common comment to all the selected
waiver commands. When you select this option, SpyGlass displays
the Add Common Comment dialog. In this dialog, add the required
comment in the textbox, and click the OK button. This adds the
specified comment to all the selected waiver commands.
When the required settings have been made, click OK to apply the
current waiver settings and exit, click Apply to apply the current waiver
settings and continue, or click Save All to save the modifications and
continue. Click Cancel to abandon the unapplied modifications and exit.
If SpyGlass analysis has already been run on the current design and the
Msg Tree is displayed in the Message window, then any modifications
in the waivers settings are reflected in the current Msg Tree. However,
the Msg Tree itself is persistent and retains its expanded state.
NOTE: It is recommended that you save (or discard) the settings made in the
Waivers window before starting a new SpyGlass analysis. Otherwise, there
can be mismatch between the number of messages actually displayed in the
SpyGlass Design Environment (this is based on the current settings of Waivers
window) and the number of messages that should be displayed based on the
saved (physical) waiver files. The SpyGlass Design Environment also prompts
you if such a mismatch exists at the time of starting a SpyGlass analysis run.
Saving Files
To save a waiver file with its current waiver settings, right-click the
waiver file name and select Save file.
To save a waiver file with a different name or location, right-click the
waiver file name and select Save file as... The File Save As window
appears. Browse your file system to select the location and specify the
new waiver file name. Click Save. The original file is removed from the
treeview and the new file is added in its place.
NOTE: The waiver files are not saved automatically. You need to explicitly
save them or abandon them as required. You are also prompted to save the
unsaved waiver files, if any when you close the Waivers Window.
want to use a specific filter file (.sfl file) listed here, right-click the file
and select Enable File option from the context menu. The Filters Error
dialog appears (as shown below) prompting you to confirm whether or
not you want to convert the selected filter file to a waiver file.
Here again, if you click “Yes”, the filters present in the listed filter
file (.sfl file) are first converted to corresponding waivers (in .swl
file) and then the waivers are applied for the current SpyGlass run.
The waiver file is also added to the Waiver Files treeview and saved
in the current working directory.
If you click “No” in the above window, the current SpyGlass
analysis run continues with the filters applied as waivers but the
waivers are not saved as a disk file.
preferences.
When you select this menu option, the Preferences window will open at
the Severity page.
Message Page
Use the Message page to set the color for each severity in the Msg Tree
and Msg Summary pages.
FIGURE 24. The SpyGlass Design Environment Preferences Window - Message Page
You can set the color for each severity class so that a message of the
given severity class is highlighted in the selected color. To set the
color, click the displayed color and the Choose color dialog appears:
selected color.
The sample text is also displayed for each severity class.
Set the color scheme to your liking and click OK to apply the color
scheme to the Source window.
Fonts Page
Use the Fonts page set the font style and size of source code and that of
messages in the Source window and the Message window.
FIGURE 25. The SpyGlass Design Environment Preferences Window - Fonts Page
Page.
• Message Tree Font Size
Use the Message Tree Font Size drop-down menu to select the font
size in which the messages will be displayed in the Msg Tree page.
• Msg Summary Font
Use the Msg Summary Font drop-down menu to select the font in
which the messages will be displayed in theMessages: Msg
Summary Page.
• Msg Summary Font Size
Use the Msg Summary Font Size drop-down menu to select the font
size in which the messages will be displayed in the Msg Summary
page.
• Menu Font
Use the Menu Font drop-down menu to select the font in which the
menu options will be displayed in the menu bar.
• Menu Font Size
Use the Menu Font Size drop-down menu to select the font size in
which the menu options will be displayed in the menu bar.
Schematic Page
Use the Schematic page to set the appearance of the schematic
windows.
FIGURE 26. The SpyGlass Design Environment Preferences Window - Schematic Page
You can set the following preferences for the schematic windows:
• Show Annotation on Schematic Viewer
Set this option to disable the functions related to the Modular and
Incremental schematic windows. The Schematic Viewer is enabled
by default. However, when you disable this option, then you will not
be able to make changes in the schematic windows.
• Expand all signals of the Pinbus on Double Clicking
Set this option to have the schematic expanded to show all
connected nets and the objects connected to these connected nets
when a pinbus is double-clicked.
• Show List/Trace Connected Nets Dialog on Double Clicking
Set this option to show the List/Trace Connected Nets dialog whenever
a pinbus/netbundle/portbus is double-clicked.
• Show Tool-tip On Schematic Objects
Set this option to view a ToolTip whenever the mouse-cursor is
placed over an object in the schematic windows. The ToolTip
displays the full name of the object (net, pin, port, pin-bus, or
instance). By default, this option is set and the ToolTip is displayed
whenever the mouse-cursor is placed over an object in the schematic
windows.
• Show Instance Names
Set this option to turn on the display of instance names in the
schematic windows.
NOTE: This option is useful because in a netlist design, the debugging of a
violation message using the schematics becomes difficult if the instance
names are too long. In such a scenario, part of the instance name of the first
gate is overwritten by the instance name of the next gate and thus the
information becomes unreadable.
• Show Module Names
Set this option to turn on the display of module names in the
schematic windows.
• Show Atrenta Primitive Names
Set this option to turn on the display of module names of Atrenta
generic primitives (such as RTL_FD, RTL_AND, RTL_BUFF, etc.)
in the schematic windows. By default, this option is set and the
module names of the Atrenta primitives are not displayed in the
schematic windows. If this option is modified while the schematic
window(s) are open, then the schematic windows must be reloaded
to view the modified display.
• Maintain Relative Hierarchies for Instances in IS
This option is used to add the parent hierarchies of the instances that
are loaded/appended or cross-probed into Incremental Schematic
from any other window (such as, from RTL, Instance Browser,
Power Browser, Design Tree etc.). By default, this option is set to
on.
• Show All Possible Paths while extracting Fanin/Fanout Cone
Set this option to display all possible paths in the schematic
windows while extracting the fanin/fanout cone. By default, not all
paths are displayed.
• Show net Bundles in IS
Set this option to enable the display of netBundles in the Incremental
Schematic (IS). The netBundle takes the attributes of the constituent
nets. For example, if a net contained in the netBundle is partial
(dashed) or highlighted (colored), then the netBundle would also
appear the same.
• Disable Auto Filtering in Schematic Find
Set this option to disable the auto-filtering feature in the Find in
Modular Schematic dialog.
• HighlightWidth
Choose the highlighting width of the selected object in the schematic
windows from 1(thinnest) to 9 (thickest). The default width is 3.
• HighlightColor
Choose the highlighting color of the selected object in the schematic
windows by clicking the displayed color and by selecting a different
color from the color palette.
• GreymodeColor
Choose the color of the schematic display (except the message path)
when a message is cross-probed to the schematic windows (from the
Message treeview in Msg Tree page of the Message window) by
clicking the displayed color and selecting a different color from the
color palette.
• BackgroundColor
Misc Page
Use the Misc page to set the miscellaneous preferences.
FIGURE 27. The SpyGlass Design Environment Preferences Window - Misc Page
Tree windows.
• Show Tool-tip in Msg Tree, Msg Summary etc.
Set this option to enable or display the information that is displayed
as a tool-tip in the Msg Tree window, Msg Summary window and so
on.
• Show Message ID in Msg Tree, Msg Summary, etc.
Set this option to enable or disable unique hexadecimal message ids
in the relevant sections of The Message Window, such as Messages:
Msg Tree Page, Messages: Msg Summary Page, etc. (by default, this
is enabled). These indexes (when enabled) allow you to cross-probe
between the Message Window and other SDE windows.
• Annotate Message ID in Reports
Set this option to enable or disable unique hexadecimal message ids
in the standard SpyGlass reports (by default, this is enabled). These
ids (when enabled) allow you to cross-probe between standard
SpyGlass reports and other SDE windows. See Cross-probing from
Standard Reports for more details.
• Cross-probe from File/Module Tab to Message Tree
Set this option to enable/disable cross-probing from the File/Design
page to the Msg Tree page.
• Show dialog for fatal messages
Set this option to enable the display of fatal messages in a pop-up
window.
• Show warning if loading 32bit VDB on a 64bit Machine
Set this option to display a dialog informing the user that a .vdb file
created on a 32bit machine is being opened on a 64bit machine.
• Show Message Count Limit Exceeded Dialog
Set this option for the SpyGlass Design Environment to show a
dialog when the total message count for a rule has exceeded the limit
specified using the Maximum violations per rule (default) (-lvpr) setting in
the Other Tab of the Setup > Run Options... menu option or using
the -lvpr command-line option.
• Show Message Count Limit per rule Exceeded Dialog
Set this option for the SpyGlass Design Environment to show a
dialog when the total message count for a rule has exceeded the limit
specified using the Maximum violations by rule name (-lvpr) setting in
the Other Tab of the Setup > Run Options... menu option or using
the -lvpr command-line option.
• Wrap text in RTL Window
Set this option to wrap the text displayed in the RTL tab of the
Source window so as to fit the text in the current width of the Source
window and hence avoid the use of horizontal scroll bar.
• Wrap text in Constraint Window
Set this option to wrap the text displayed in the Constraint tab of the
Source window so as to fit the text in the current width of the Source
window and hence avoid the use of horizontal scroll bar.
• Wrap Messages in Message, Waiver Tree
Set this option to wrap the message text displayed in the Msg Tree
page and Waived page of the Message window.
• Prompt while writing SpyGlass.vdb for a unique name
Set this option for the SpyGlass Design Environment to prompt for a
new unique name for the Violation Database file when you run
analysis in the SpyGlass Design Environment.
Clear this option to always save the Violation Database file as
spyglass.vdb in the current working directory.
With this option set and a valid source file open in the SpyGlass
Design Environment, the following dialog appears when you click
the Run/Stop Toggle Button or choose Run > Analysis menu option:
Click Yes to specify a new unique name for the Violation database
file. Then, the Save As window appears. You can navigate through
your directory structure to locate the desired location for the
Violation Database file that will be created when the SpyGlass
analysis is run. Enter the file name with the .vdb suffix and click
Save.
NOTE: The new Violation Database file will not be created until after you
have successfully run the SpyGlass analysis.
Click No to save the new Violation Database file as
spyglass.vdb in the current working directory. This action is
equivalent to clearing the Prompt while writing SpyGlass.vdb for a unique
name preference for the current SpyGlass run.
Click Cancel to abort the current SpyGlass run.
Set Don’t show this dialog again to clear the Prompt while writing
SpyGlass.vdb for a unique name preference for the current and
subsequent SpyGlass runs.
The Setup > Set VDB File Name... menu option overrides the Prompt
while writing SpyGlass.vdb for a unique name preference. That is, the
Violation Database file will be saved by the name set using the Setup
> Set VDB File Name... menu option and you would not be
promoted to enter a Violation Database file name even if the Prompt
while writing SpyGlass.vdb for a unique name preference is set.
• Prompt while overwriting vdb file
Set this option for the SpyGlass Design Environment to prompt for
confirmation while overwriting an existing Violation Database file
(set using the Setup > Set VDB File Name... menu option).
Clear this option for the SpyGlass Design Environment to overwrite
an existing Violation Database file without confirmation (set using
With this option set and a valid source file open in the SpyGlass
Design Environment, the following dialog appears when you choose
the File > Save Profile menu option:
Click Yes to save the current profile as a Profile file with design file
details.
Click Save Without Files to save the current profile as a Template File
without design file details.
Set Don’t show this dialog again to clear the Prompt to select Profile
saving style preference for the current and subsequent SpyGlass runs.
That is, the current profile will be always saved as a Profile File with
design file details.
Click Cancel to abort the Save Profile operation.
• Prompt before Exit from SpyGlass
Set this option for the SpyGlass Design Environment to prompt for
confirmation when you exit the SpyGlass Design Environment using
the File Menu menu option.
Clear this option to exit the SpyGlass Design Environment without
confirmation (using the File Menu menu option).
With this option set, the following dialog appears when you choose
File Menu menu option:
Environment.
Set Don’t show this dialog again to clear the Prompt before exit from
SpyGlass preference for the current and subsequent SpyGlass runs.
That is, the SpyGlass Design Environment will exit without
confirmation when you choose the File Menu menu option.
• Show SpyGlass Progress Indicator
Set this option for the SpyGlass Design Environment to show a
Progress Indicator on The Status Bar while performing major tasks.
As the Progress Indicator consumes resources, you may want to
switch off the Progress Indicator if you find deterioration in
performance.
• Overwrite old waivers while saving waivers file
Set this option to overwrite old waivers with the new ones while
saving the waivers file. If this option is not set, then old waivers are
commented out and new waivers are appended to the waivers file
while saving the file.
• -regexp option ‘on‘ by default while generating waiver
Set this option to keep the regular expression support on by default
while creating waivers.
• Handle meta characters in waiver generation
Set this option to handle meta characters (such as *) while
generating waivers in GUI.
This option is used to handle meta characters when waivers are
generated in any of the following ways:
• By selecting the Waive -> Selected Message(s) option from the
right-click menu of a violation message or a rule header in the
Msg Tree.
• By selecting the Waive -> This Exact Message option from the
right-click menu of a violation message or rule header in the Msg
Tree.
• Waiver
This option sets whether a message selected for waiving is added to
the Waivers table and also waiving immediately (select Apply when
created) or the message is just added to the Waivers table and is
waiving only when you click Apply or Ok in the Waivers table (select
Apply From Spread Sheet).
• Color Allocation
Select Absolute to use the severity class colors as the probe or
message colors, select Round-robin to automatically assign probe or
message colors from the color palette on round-robin basis, or select
Severity to automatically assign colors by message severity.
In the Absolute mode, the probe or message colors in the schematic
windows can be as decided by the policy (for example, the Clock-
reset policy) or can be the same as the severity class colors (set in the
Message Page of the Tools > Preferences menu option). The probe
or message colors in the Source window will be the same as the
severity class colors (set in the Message Page of the Tools >
Preferences menu option).
In Round-robin mode, the probe or message colors in Source
window and schematic windows are always same.
• Probing Mode
Use this option to set the probing modes. See Probing Modes for
more details.
• Auxiliary Message Display Mode
This option specifies the mode of combined schematic display of
multiple messages. See Working with Multiple Messages for further
details.
• Max No. of Messages
This option sets the maximum number of rule messages to be
displayed in the Msg Tree page. By default, 100000 messages are
displayed.
Tabs Page
Use the Tabs page to set the additional Severity Class pages to be
displayed in the Message window, and to set up the Summary page of
the Message window.
FIGURE 28. The SpyGlass Design Environment Preferences Window - Tabs Page
Use this option to view the location of the signal declared in the
Source window.
• Show Drivers
Use this option to show or hide the columns of the table that contains
information about drivers declared for a signal.When you select the
Detailed View option, the ( ) button is enabled. Clicking the ( )
button displays the Configure Columns dialog as shown below.
To hide a column, select the name of the column from the Visible
Columns list and click the ( ) button. To make a hidden column
visible, select the column from the Hidden Columns list and click
the ( ) button. You can also change the order in which the columns
appear in the table by using the ( ) and ( ) buttons. For example,
in the above figure, if you want to display the HDL column before
the File column, then select the HDL column and click the ( )
button.
• Show Loads
Use this option to show or hide the columns of the table that contains
information about loads declared for a signal. When you select the
Detailed View option, the ( ) button is enabled. Clicking the ( )
button displays the Configure Columns dialog. You can configure
the columns as explained for the Show Drivers section.
• Show Properties
Use this option to show or hide the Properties field in the HDL
Navigator window
• Detailed View
Use this option to view detailed information, about the drivers and
loads that are declared for a signal in the Source window. When you
select this option, the information about the drivers and loads
appears in the The HDL Navigator Window in a tabular format with
columns containing information such as the file name, line number,
and the HDL code.
You can set the following options in the Version Control page:
• Enable Version Control
Use this option to disable the version control tool.
• Run Version Control Command before invoking the file editor
Use this option to specify the version control command that should
be executed before editing a file. Select a command that you want to
execute from the drop-down list, before invoking the file editor.
NOTE: Only the commands that have been specified in the Version Control
Commands section are displayed in the drop-down list.
• Show Version Control command status of severity in popup dialog
Use this option to view the success result of the version control
command that you have executed for a file defined on the File View
Page.
You can select from the following available options:
• Environment Variables
Use this section to add, modify, or delete the system configuration
variables related to the version control tool that you are using.
To add a variable, click ( ). The Add a Variable dialog appears
as shown below:
Enter the variable name in the Variable field and the value of the
Add a label for the command name in the Menu Label text field and
the version control command in the Command field. Click OK to add
the command.
You can also modify an already specified command. To do so, select
the command that you want to modify in the Version Control
Commands section and click ( ). Modify the command in the
Modify System Variable dialog that appears and click OK to save the
new command setting.
To delete a command, select the command and click ( ).
Click the Restore Default button restore the default values of CVS,
which is the default version control tool used by SpyGlass.
When the selection is to your liking, click OK.
Report Menu
When you click the Report menu, the following options appear:
• One item for each policy that was run and for which reports can be
generated
See the respective Rules Reference to know more about the policy
reports available.
• Item named Default that lists the standard SpyGlass reports
Selecting the corresponding menu option will open a Report window.
Report windows give the option of either saving the report as a file or
printing the report.
NOTE: All those reports that do not have any relevant information appear
disabled in the available list of reports. SpyGlass provides a tool-tip for such
disabled reports explaining the reason of not generating that report.
To find a string in the displayed report, use Find. The search can be
case-sensitive or case-insensitive, both forward and backward in the
file, and by regular expressions.
To print the displayed file, use Print.
NOTE: If the SpyGlass Design Environment is opened without a VDB loaded,
the Reports menu options can be directed to run on any VDB without actually
loading it into the SpyGlass Design Environment. First, select the report you
wish to run. Then, in the dialog that follows, select the VDB file on which to run
the selected report.
Help Menu
When you click the Help menu, the Help options appear.
You can also use the <Ctrl>+F1 key combination on your keyboard to
invoke the Shortcut Keys window.
The Toolbar
The SpyGlass Design Environment toolbar is primarily used after you
have set up the SpyGlass Design Environment (using the menu bar
options) and are ready to run SpyGlass analysis (or have already run
the analysis). From the toolbar, you can select a predefined-setup,
begin an analysis run, open the schematic windows, navigate through
the source files, and set waivers.
Methodology/Template Selector
You can select multiple templates to be run on your design. By default,
the following templates are selected:
• The templates specified using the -template command-line
option
• Or, the default template set using the DEFAULT_TEMPLATE
configuration file setting
• Or the templates used if you have opened an existing Violation
database file that was created using templates
The Methodology/Template selection section of the toolbar includes
the following:
• The View Selected Templates List text-box that displays the number
of templates currently selected and the name(s) of the currently
selected template. Clicking this templates list text-box displays a
balloon window with a short description about each of the currently
selected methodologies/templates.
• The Select Template(s) icon ( ) that is used to select the templates.
Refer to the Setup > Templates... section for more details.
Policies/Rules/Parameters Button
The Policies/Rules/Parameters button ( ) is used to invoke the Rule/
Parameters window. Refer to the Setup > Policies/Rules/Parameters...
section for more details.
NOTE: The Policies/Rules/Parameters button is hidden by default.
Run Button
The Run button ( ) is used to run the SpyGlass analysis.
NOTE: Clicking the Run button is equivalent to running the SpyGlass analysis
using the Run > Analysis menu option.
When you click this button, the SpyGlass Design Environment starts an
analysis run with parameters that you have set up. You can view the
SpyGlass status using the Session Log Page in the Message window.
If you have not specified any source files, the SpyGlass Design
Environment will prompt you for them before it will run. Additionally,
if you have not specified any policies, the SpyGlass Design
Environment will use the lint, openmore, and morelint policies for its
run.
When you select this menu item, the SpyGlass Design Environment
will check to see if a Violation Database file already exists with the
current name. If a Violation Database file with the current name
already exists, or you have not chosen a name for the Violation
Stop Button
The Stop button ( ) is used to stop SpyGlass analysis run (initiated by
the Run Button or the Run > Analysis menu option).
The stop button is available only when a SpyGlass analysis is running.
When you click the stop button, the SpyGlass analysis is aborted and
the following message is printed to the Session Log Page of The
Message Window:
SPYGLASS Execution Stopped by User
As the SpyGlass analysis was not completed, the Violation Database
file generated till now may not have the complete or usable
information. Thus, you are asked:
Click Yes to load the Violation Database as it is. Clicking the No button
does not load the Violation Database.
Preferences Button
The Preferences button ( ) is used to invoke the Preferences window.
Refer to the Tools > Preferences section for more details.
Overview
The SpyGlass Design Environment screen is organized into two
toolbars (the menu bar and the toolbar discussed in the previous
chapter) and three windows (the File/Design/Constraints/Instances
window, the Source window, the Message window, and the HDL
Navigator window). Additional windows (the Modular Schematic
window, the Incremental Schematic window, and the Legend window)
can also be opened, but they are not automatically opened with the
SpyGlass Design Environment.
Files
Source files
Library files
Design Units
Design units that are not synthesized
NOTE: For other related icons, refer to the Help > Icons Quick Reference
section.
shown in ( ).
You have the option to add a remove a precompiled file. To do this,
right-click a file and select the Add/Remove Precompile File context
menu option. The Verilog/VHDL Library window appears. You can
add or remove a precompile on the Precompile File Mapping tab of the
VHDL/Verilog Library window.
command:
spyglass -verilog
Then, you add the /SPY/verilog/version1/sourcefiles/chip.v file as a source
file, once you set up the rest of the SpyGlass Design Environment
options (such as policy and rule selections), you are ready to run the
SpyGlass analysis.
Suppose, that you DO NOT run the analysis at this point in time.
Instead, you save the setup that you have made in a profile file (such as
testcase1.spp) for analysis at a future time (such as later that night).
In Scenario2, suppose that the working directory (/SPY/verilog/version1/
sourcefiles/analysis1/) does not have a spyglass.vdb file. If you launch the
SpyGlass Design Environment from the working directory using the
following command:
spyglass -verilog
Then, you add the /SPY/verilog/version1/sourcefiles/chip.v file as a source
file, once you set up the rest of the SpyGlass Design Environment
options (such as policy and rule selections), you are ready to run the
SpyGlass analysis.
Suppose, again, that you DO NOT run the analysis at this point in time.
Instead, you save the setup that you have made in a profile file (such as
testcase2.spp) for analysis at a future time (such as later that night).
Now, the predicament occurs when the current working directory’s full
path name has changed. In this case, if someone were to rename the /
SPY/verilog/version1 directory to /SPY/verilog/version2. If everything else was
left the same, then testcase1.spp from Scenario1 would still be valid
while testcase2.spp from Scenario2 would be unable to find the chip.v
file.
The reason for this result is the difference in how the source files are
recorded. With the relative relationship that the profile file and the
source files maintain in Scenario1, changing the path does not affect
the relationship of the files. However, with Scenario2, there is no
relative relationship, and a change in the full directory path will cause
the profile file to look for the source files in a directory that no longer
contains them (or even exists).
Searching Files
To search for a file in the File view page, right-click anywhere in the
File view page and select Find File... or choose Edit > Find. The Find
dialog appears. Select the File Tree option from the Find In pull-down
list, enter a search string and click Search. The first file whose name
contains the search string, is highlighted in the File view page.
Continue clicking Search to find more file names containing the search
string.
Adding Files
To add a file in the File page, right-click a node and select the Add file
option from the context menu. The Source dialog appears as shown
below:
Type the file name in the File Name text field and click Add.
Alternatively, browse to the directory that contains the file.
Click OK after you have added the required file(s).
Refer to the Setup > Source... section for more details.
Editing Files
To edit a file by selecting it in the File view page, right-click the file
name and select Edit File. The SpyGlass Design Environment launches
your text editing program of choice, as defined by the Specify Editor
program setting in the Misc Page of the Tools > Preferences menu
option and displays the selected file. If you have not specified a text
editor in this setting, the text editor pointed to by the EDITOR
environment variable is invoked. Otherwise, the SpyGlass Design
Environment attempts to invoke the commonly-used text editor of your
operating platform.
If you edit and save a source file listed in the File view page, the file
name is displayed in Red color to indicate that the file has been
modified since last analysis run.
Removing Files
To remove a file from the File view page, select the file and press the
<Delete> key on the keyboard or right-click the file name and select
Remove File.
The ‘deleted’ file is only removed from the File view page; it is not
physically deleted from the hard disk. Also, the messages for the
‘deleted’ file will remain displayed till you run the SpyGlass Analysis
again.
Viewing Files
Double-click a file name in the File view page and the corresponding
file is displayed in The Source Window.
Double-click a design unit name in the File view page and the file
containing the design unit is displayed in The Source Window with the
cursor at the first line of the design unit description (commented lines
at the beginning of the file are skipped).
Select the Rule groups (using the pull-down list) or enter the rule
names for which you want to waive rule messages for the selected
source file.
Clicking the More Options button displays additional settings as shown
below:
invoke the help related to the use of regular expressions by clicking the
( ) button. When you click this button, the help related to the use of
regular expressions appears in a pdf format.
On completion, click Ok.
Remove Stop > File(s) from the context menu. Similarly, to reset a stop
directory as normal directory, right-click a design file of the parent stop
directory and select Remove Stop > Dir(s) from the context menu. All the
design files within the parent directory will also be reset as normal
files.
You can view the collective list of all the stop files/directories by right-
clicking on any file in the File view page and selecting the
Stop > File(s) & Dir(s) or Remove Stop > File(s) & Dir(s) options from the
context menu. Then, the Stop File(s)/Dir(s) dialog appears as follows:
The top section of this dialog displays the list of files (in the File List
tab) and directories in the (Dir List tab). The bottom section of this
dialog displays the list of Stop Files (indicated by ) and Stop Dirs
(indicated by ).
To specify a file as Stop File, select the check-box for the file from the
list of files displayed in the File List tab. The specified file is added to
the list of Stop Files in the bottom section. To remove a file from the
list of Stop Files, simply clear the check-box for the file and the file is
removed from the list of Stop Files.
To specify a directory as Stop Dir, select the directory from the list of
directories displayed in the Dir List tab and click the Add Dir button.
The specified directory is added to the list of Stop Dirs in the bottom
section. To remove a directory from the list of Stop Dirs, select the
directory in the Stop Dirs list and click the Delete Dir button. The
selected directory is removed from the list of Stop Dirs.
You can also specify the above settings for stop files/directories using
the List of stop file(s)(-stopfile) & stop dir(s)(-stopdir) option in the Other Tab
of the Setup > Run Options... menu option.
NOTE: When you try to reset a stop file whose parent directory is marked as
stop directory, then you are prompted to confirm if you want to reset the parent
directory as normal directory. If you confirm to do so, then the parent directory
(and consequently all the files within that directory) are reset as normal files.
Rearranging Files
You can rearrange the source files shown in the File view page by
dragging and dropping files. Click on a file name and drag it up or
down (keeping the mouse button pressed). The mouse cursor changes
to indicate drag/drop operation. The name of source file being moved is
highlighted in Red color. As you move up and down the target file is
highlighted in Blue color. (The selected file is always moved to be
under the target file.) When you are at the desired location, release the
mouse button to drop the file. The source file view is updated.
This feature is especially useful for arranging VHDL files where the
order of processing is important.
the modules and instances in each source and library file that you are
analyzing with the current profile. This page will remain blank until
after the SpyGlass analysis has been completed or a valid Violation
Database file is loaded.
Searching Modules
To search for a module in the Design view page, right-click anywhere
in the Design view page and select Find Module... or choose Edit > Find.
This opens the Find dialog. Select the Design Tree option from the Find In
pull-down menu, enter a search string and click Search. The first
module whose name contains the search string, is highlighted in the
Design view page. Continue clicking Search to find more module
names containing the search string.
Viewing Modules
Double-click a module name in the Design view page and the source
file containing the module is displayed in The Source Window with the
first line of the module description highlighted (initial commented lines
are skipped). Similarly, the corresponding gate is also highlighted in
The Modular Schematic Window.
NOTE: If the list of instances is long and does not fit in this window, you can
resize the window by right-clicking anywhere in the window and selecting
Configure page Size... option from the context menu.
In the Instances window, the instances are listed along with the full
hierarchical path of the instance. You can view the properties of the
instances listed here by right-clicking on the instance and selecting
Properties... from the context menu. The Instance List: Properties
window is displayed, as shown below:
Here, the instance name, the master module name, and the full
hierarchical path of the instance are displayed. The contents of this
window can be individually copied (using the right-click context menu
option or <Ctrl>+<C> key combination) and pasted at a different
location.
The instances that are encrypted are shown in ( ).
Here, all the columns that are currently displayed are listed along with
the sorting order for each column (by default, each column is sorted in
ascending order). You can set the sorting order for columns in the Black
Box Viewer window by selecting the check box for the columns and
changing the sorting order from the corresponding Order pull-down
list. Then, the information in the Black Box Viewer window will be
sorted for the columns (and their order) selected here. You can also
change (increase or decrease) the priority of the columns for sorting the
information within the entire table. To do so, select the entire row for
the column for which you want to change the priority and use the
move-up ( ) or move-down ( ) arrow to increase or decrease the
priority for the selected column. Then, the information within the
columns of the Black Box Viewer window will be sorted as per the
priority set for the columns. For example, if you want the information
in the Black Box Viewer window to be first sorted by Line, then by
Cause, and last by Remedy, then:
1. Select the check boxes for the Line, Cause, and Remedy columns.
2. Select the entire row for the Line column.
3. Click the move-up arrow as many times as required to place the row
for the Line column at the top level.
4. Similarly, change the priority for the Cause column and the Remedy
column by selecting the corresponding rows and using the move-up
or move-down arrows to place these columns in the required priority
(Line > Cause > Remedy).
When the sorting order is set as per your requirement, click Ok to
confirm. The information in the Black Box Viewer window will be
rearranged according to new sorting order.
Setting Filters You can set filters on each column to view selective information in the
Black Box Viewer window. To filter the information displayed in a
column, right-click anywhere in the column and from the context
menu, select the required entry (that you want to view) from the list of
available entries for the column (by default, All is selected to display all
the entries for that column). You can also set custom filters for each
column. To do so, select the Custom... option from the right-click
context menu for the column. The Custom Filter window for the column
is displayed, as shown below:
Here, you can set filters for the selected column. To do so, select the
filter criteria (such as “Equals”, “Greater than”, and so on) from the
Filter Criteria pull-down list. Then, select the value for the filter criteria
from the Value pull-down list, which contains all the possible values for
that column. You can also add more than one filter on a column by
using the More button at the top-right corner of the Custom Filter
window. To delete a filter, click the delete icon ( ) for that particular
filter. When more than one filter is used, you can specify whether to
match any of the created filters or match all of the created filters (use
the corresponding check boxes at the top of the Custom Filter window).
When the filters are defined, click Ok to confirm. The defined filters
will be applied to the information in the Black Box Viewer window.
NOTE: You can clear all the applied filters by clicking the Clear all applied
filters icon ( ).
blackbox module in the Black Box Viewer window and select Show
Instance List... from the context menu. The Instances window appears, as
shown below:
Here, all the instances of the selected blackbox module are listed along
with the full hierarchical path.
NOTE: If the list of instances is long and does not fit in this window, you can
resize the window by right-clicking anywhere in the window and selecting
Configure page Size... option from the context menu.
You can view the properties of the blackbox instances listed here by
right-clicking on the instance and selecting Properties... from the context
menu. The Instance List: Properties window is displayed, as shown
below:
Here, the instance name, the master module name, and the full
Select the Rule groups or enter the rule names for which you want to
waive rule messages for the selected module.
Clicking the More Options button displays additional settings as shown
below:
( ) button. When you click this button, the help related to the use of
regular expressions appears in a pdf format.
On completion, click Ok.
Select the Rule groups or enter the rule names for which you want to
waive rule messages for the selected IP.
Clicking the More Options button displays additional settings as shown
below:
All the files in the Constraints view are listed under appropriate
categories. For example, all the SGDC files included for design
analysis in the current SpyGlass run are listed under the SGDC Files
category. Similarly, all the CPF and UPF files are listed under the CPF
Files and UPF Files categories, respectively.
After SpyGlass analysis is run, the SGDC file names in the Constraints
view page are appended with the number of rule messages generated (if
any) for each SGDC file.
Searching Files
To search for an SGDC file in the Constraints view page, right-click
anywhere in the Constraints view page and select Find File... from the
context menu or choose Edit > Find. This opens the Find dialog. Select
the Constraints Tree option from the Find In pull-down menu, enter a
search string and click Search. The first SGDC file whose name
contains the search string, is highlighted in the Constraints view page.
Continue clicking Search to find more SDGC file names containing the
search string.
The ‘deleted’ file is only removed from the Constraints view page; it is
not physically deleted from the hard disk. Also, the messages for the
‘deleted’ file remain displayed in the Message window till the
SpyGlass Analysis is run again.
Select the Rule groups (using the pull-down list) or enter the rule
names for which you want to waive rule messages for the selected
constraints file.
the design unit instances in each source and library file that you are
analyzing with the current profile. This page remains blank until after
the SpyGlass analysis has been completed or a valid Violation
Database file is loaded.
Pagination of Instances
You can configure the page size for the Instances view page to set the
number of instances that are simultaneously displayed for each level in
the instance hierarchy. To do so, right-click anywhere in the Instances
view page and select the Configure Page Size... option from the context
menu. Set the required page size either by selecting a pre-defined size
from the Set Page Size pull-down list or by entering a number in the text
field for the page size.
For a design unit instance, if the number of instances in a hierarchy
level exceed the current page size, then pagination for that level is
automatically displayed in the third column of the Instances view page.
This column displays the current page of instances at a hierarchy level
and the total number of pages for the instances at that level. Use the
forward and backward arrow buttons to view the instances listed in
other pages of that hierarchy level.
Searching Instances
To search for an instance in the Instances view page, select the item to
be searched (module or instance) from the Find pull-down list, enter a
search string, and click the search icon ( for forward search or for
backward search). The first module/instance whose name contains the
search string, is highlighted in the Instances view page. Continue
clicking the search buttons to find more module/instances names
containing the search string.
You can qualify your search to include regular expression in your
search, case insensitive search, and searching hierarchical path by
selecting the corresponding check-box(es) in the instances view page.
NOTE: When the Hier. Path option is selected, the RegEx and Case
Insensitive options are disabled.
Viewing Instances
Double-click an instance name in the Instances view page and the
source file containing the instance is displayed in The Source Window
with the first line of the instance description highlighted (initial
commented lines are skipped). Similarly, the corresponding gate is also
highlighted in The Modular Schematic Window.
Here, the instance name, the master module name, and the full
hierarchical path of the instance are displayed. The contents of this
window can be individually copied (using the right-click context menu
option or <Ctrl>+<C> key combination) and pasted at a different
location.
Selecting Text
You can select a given portion of text by holding down the left mouse
button and dragging the highlight over the desired area.
When you invoke a search dialog with a string selected in the Source
window, the selected string is automatically displayed in the search
dialog. Alternatively, you can select any string from the source
description and paste it in any search dialog using <Ctrl>+<C> and
<Ctrl>+<V> key combinations.
Probing Nets
The net and all its end connections in the current module are
highlighted in the Modular Schematic window.
The net and all its end connections up to ports or leaf-level instances
are highlighted.
The Modular Schematic window is designed to provide highlighting,
both from the source to the schematic, and back-annotation from the
schematic back to the source. See The Modular Schematic Window for
more information on the Modular Schematic window.
To view the schematic pathway(s) or gate(s) associated with a given
object, open the Modular Schematic window and double-click the
object in the Source window. Similarly, double-click an object in the
Modular Schematic window and the corresponding file is opened in the
Source window, if not already open and the name is highlighted.
NOTE: You can also select more than one objects for probing or remove an
object from a set of probed objects in the schematic windows by clicking the
relevant object while holding down the <Ctrl> key on the keyboard.
Select the Display objects option and enter the number of objects that
you want to cross-probe in the text field. Select the Display All objects
option to consider all objects for cross-probing.
You can also enter the number of objects that need to be cross-probed
by selecting the Select maximum number of objects that can be cross-probed
from SGDC file option from the Misc Page of the Tools > Preferences
window.
NOTE: Selecting a large number of objects for cross-probing may require more
memory.
NOTE: You can use the -disable_sgdc2sch command-line option to
disable SGDC to schematic cross-probing.
NOTE:
You can also view the SGDC constraints set on an object. Refer to the
Viewing SDC/SGDC Constraints Set on an Object section for details.
following buttons in the Source window that enable you to keep a track
of the highlighted lines for better debugging:
• Previous button ( ): This button is enabled if the highlighting
information is available in the history. On clicking the Previous
button, the previously highlighted file and line is fetched from the
history and highlighted in the Source window. You can also view the
complete history by right-clicking the Previous button and selecting
the All History... option from the context menu. Then, the Cross-
probing History window appears that provides a list of all
highlighted lines.
NOTE: If you click the back button several times and then cross-probe from
different sections, then the new highlighted information is inserted in the
current position of the history (instead of at the end). Therefore, some of the
highlighted history might be lost.
• Next button ( ): This button is enabled when a previously
highlighted line is fetched from the history using the Previous
button. You can also view the complete history by right-clicking the
Next button and selecting the All History... option from the context
Right-click Options
Right-click a signal in the Source window to get the context menu that
contains the following options:
• Help
NOTE: This option is visible only when a violation is selected in the
message window.
Use this option to view the html help for the selected violation in the
message window. When you select this option, a browser window
appears that displays information about the rule.
• Jump To > Signal
Displays the name of the signal/instance.
• Jump To > Declaration
Use this option to navigate to the location where the signal is
declared. When you click the blue link located below the Jump To >
Declaration option, the location where the signal is declared is
highlighted in the Source window.
In case an instance is selected, then the Jump To > Declaration option
would appear as Jump To > Definition.
• Jump To > Drivers
Use this option to navigate to the location where the driver is
declared for the selected signal. When you click the blue link(s)
located below the Jump To > Drivers option, the location where the
driver is declared for a signal is highlighted in the Source window.
• Scope
A signal may span across the design hierarchy and therefore, may
have different loads and drivers declared at different levels. You can
set the scope of a signal in the Scope field. However, SpyGlass, by
default, selects the most relevant scope for you. You can edit this
scope based on your requirements. If the signal has only one scope
then the Scope field is updated automatically. If the signal has more
than one scope, then you can select the relevant scope from the
Scope pull-down menu.
You can set the scope from the Instance window or by selecting a
violation message.
• Signal
This section contains a list of the signals selected in the Source
window. You can select a signal from the pull-down list to view the
drivers and loads declared for that signal.
• Declaration
This section contains the file name and line number of the RTL
source code where the signal is declared. By default, the Declaration
option is not visible in the HDL Navigator window. To display this
option in the HDL Navigator window, select the Display > Signal
Declaration option from the HDL Navigator Page of the Preferences
window.
You can also invoke the Preferences window by selecting the
Preferences option from the Options pull-down list.
• Drivers
This section contains the drivers declared for the signal selected in
the Signal section. When you click a driver in this section, the line
where the driver is declared is highlighted in the Source window.
You can also find the file and line number of the RTL source code
where the driver is declared by placing the mouse cursor over the
driver. Then, the file name and line number of the RTL source is
displayed in a balloon window.
Click the Next button to view the next driver location in the Source
window.
To view all the drivers declared for the signal, click All. When you
click All, the SpyGlass Drivers window opens that displays the list of
all drivers declared for the signal. You can click on a driver in the
SpyGlass Drivers window to view the location where the driver is
declared in the Source window.
load is declared by placing the mouse pointer over the load. Then,
the file name and line number of the RTL source is displayed in a
balloon window.
Click the Next button to view the next load location in the Source
window.
To view all the loads declared for the signal click All. When you click
All, the SpyGlass Loads window opens that displays the list of all
loads declared for the signal. You can click on a load in the SpyGlass
Loads window to view the location where the load is declared in the
Source window.
name, signal type, and the full hierarchical name of the signal.
You can show or hide the Properties section in the HDL Navigator
window by selecting the Display > Properties option from the HDL
Navigator Page of the Preferences window.
• Left
Use this option to dock the HDL Navigator window to the left of the
SpyGlass Design Environment. When you select the Left option,
then the HDL Navigator window is docked on top of the File/
Design/Constraints/Instances window and a new tab Navigator is
added next to the Instances tab in the File/Design/Constraints/
Instances window.
• Right (Default)
Use this option to dock the HDL Navigator window to the right of
the SpyGlass Design Environment.
• Bottom
Use this option to dock the HDL Navigator window to the bottom of
the SpyGlass Design Environment. When you select the Bottom
option, then the HDL Navigator window is docked on top of the
Message window and a new page Navigator is added in the Message
window.
NOTE: All pages in the Message window (except the Session Log page) are
enabled only when SpyGlass is run or a .vdb file is loaded.
Waiving Messages
You can waive the messages shown in all pages of the Message
window (except the Session Log page).
To waive the messages, select the Tools > Waiver Editor menu option
or click the The Waiver Button in the toolbar.
The Msg Summary page has three sections. At the top of the Msg
Summary page is the Msg Summary Toolbar. The lower-left section
contains an interactive Summary Matrix Window with the number of
messages categorized in a tabular form. The lower-right section
contains an interactive Message List Window with the individual
violation messages arranged in a tabular form.
details.
NOTE: The Options pull-down menu is hidden by default. To display the
Options pull-down menu, right-click on the Msg Summary toolbar and select
the Option(s) check box from the context menu.
Adding a Tag
To add a tag to a rule message, click and drag the mouse cursor on a
row(s) in the Message List window and click the Add Tag icon on the
Msg Summary toolbar OR right-click the message and from the Tag >
context menu options select a tag from the set of predefined visual tags.
See the Tagging Messages section in Msg Tree Page for more details.
Modifying a Tag
To modify a tag to a rule message, click and drag the mouse cursor on a
row(s) in the Message List window and click the Modify Tag icon on
the Msg Summary toolbar OR right-click the message and select the
Tag > Modify... option from the context menu. See the Tagging Messages
section in Msg Tree Page for more details.
NOTE: The Tag > Modify context menu option is enabled only if you have
added a tag to a rule message.
Deleting a Tag
To delete a tag to a rule message, click and drag the mouse cursor on a
row(s) in the Message List window and click the Delete Tag icon on the
Msg Summary toolbar OR right-click the message and select the Tag >
Delete option from the context menu. The tag that was applied to the
message is deleted.
NOTE: The Tag > Delete context menu option is enabled only if you have
added a tag to a rule message.
This menu provides various options using which you can perform
different functions.
The rule violations in the Message List window are sorted based on
severity. If a rule has multiple severities, the related rule messages are
displayed separately with the severity. For example, if a rule (say
Ac_cdc04b) has two severities: Error and Warning, then the messages
for the Error and Warning severity labels will be displayed separately in
the Message list window.
More columns (other than the above default columns) can also be
added to the Message List window by using the Options pull-down
menu located on the Msg Summary toolbar or by right-clicking a
message and selecting the Configure Columns... context menu option.
Refer to the The columns displayed in the Message List window
section for details.
If the mouse pointer is placed over a message row in the Message List
window, a small balloon window is displayed with the following
information about the message:
• The tag applied to the message
• The template that contains the rule corresponding to the displayed
message
• The severity of the message
• The policy that contains the rule corresponding to the displayed
message
• The rule name corresponding to the displayed message
By default, the page size of the Message List window is set to 10, that
is, 10 message rows are displayed per page. If the number of message
rows are more than the current page size, then the message rows are
spread across multiple pages in the Message List window. In such
cases, you can use the pagination buttons ( ) provided in the
Message List window to move across the pages of the Message List
window.
NOTE: If the number of messages is less than or equal to the current page
size, then the pagination buttons are not displayed.
NOTE: When you show or hide a button in the Msg Summary toolbar, then the
same button will also be hidden in the Msg Tree, File Tree, Waived Tree, and
Module toolbars.
The message tree displayed in the Msg Tree page shows messages
found in the design for all policies run.
The hierarchical list displays the fatal messages at the top of the
hierarchy.
When the messages in the Msg Tree page are sorted based on severity,
the violation messages of rules having multiple severities are grouped
under different severity labels. For example, in the above figure, the
violation messages for the Ac_cdc04b rule are displayed under the
Error and Info categories.
When the messages, are not grouped by severity, then the severity of
the violation messages can be identified based on the following
severity icons:
NOTE: The messages in the Msg Tree page are displayed according to the
following default color scheme:
The rule is prefixed by a red icon and the serial numbers and total
number of messages are shown.
If the message text is long and does not fit in the Msg Tree page, then
you can view the full message text by right-clicking the rule message
and selecting the Display Message option from the context menu. Then,
a balloon window opens up to display the full message text.
To view an in-depth description of a particular rule message, right-click
the message and select Help from the context menu. A browser window
appears that displays information about the selected rule.
If a message is an AnalyzeBBox violation, detailed information about
the cause and remedy of that blackbox can be viewed. To view this
information, right-click any AnalyzeBBox violation in the Message
Tree and select the Show BlackBox Info... context menu option. See the
Viewing Blackbox Information section for details.
All rule messages and rule descriptions that have associated schematic
data are shown prefixed with the schematic icon ( ).
When you double-click a specific message under such rule messages,
the corresponding design unit is displayed in the Source window and
the complete message path is highlighted in the Modular Schematic
window.
For other rule messages, only the containing design unit is displayed.
All rule messages and rule descriptions that have associated text data or
are multi-line messages are shown prefixed with the Text icon ( ).
All rule messages and rule descriptions that have associated waveform
are shown prefixed with the Waveform icon ( ).
All rule messages and rule descriptions that have associated FSM are
shown prefixed with the FSM icon ( ).
the message.
You can view or modify the current settings for the applicable rule
parameters.
Sanity checks have been added in the SpyGlass Design Environment to
identify the valid values for a rule parameter. For more information on
parameter sanity checking refer to the Performing Sanity Checks for
Parameters section.
Waiving Messages
To waive messages, select the messages using <Ctrl>+<Click> and then
right-click on the message and select Waive > Selected Message(s) or
press <Ctrl>+<D>. All the selected messages will be added as rows in the
Waivers dialog.
To waive a specific message, right-click on the message and select
Waive > This Exact Message. The specific message (irrespective of
whether the message was selected or not) will be added in a new row in
the Waivers dialog. (See Tools > Waiver Editor menu option
description for more details.)
To waive all messages of a particular rule, right-click the rule and select
the Waive >Waive All Messages Of Selected Rule(s) context menu option.
To waive all messages of a specific file, module, rule, or severity,
right-click on any message of that file/module/rule/severity and select
any of the following options from the context menu:
• All Messages Of This File: Select this option to waive all messages of
the selected file. Alternatively, press the <Ctrl>+<I> key on your
keyboard to waive the selected file.
• All Messages Of This Module: Select this option to waive all messages
of the selected module.
• All Messages Of This Rule: Select this option to waive all messages of
the selected rule. Alternatively, press the <Ctrl>+<E> key on your
keyboard to waive the selected rule.
• All Messages Of This Severity: Select this option to waive all messages
of the selected severity.
Then, all the corresponding messages will be waived and a row will be
added in the Waivers window indicating the specified file/module/rule/
severity for which all the messages have been waived. Moreover, other
related fields in the Waivers window are also updated accordingly. For
example, if all the messages of a file are waived, then the name of that
file appears in the File field of the Waivers window.
NOTE: The Msg Tree in the Message window remains persistent even after
applying or modifying waivers. That is, whenever waivers are applied or
modified, the Msg Tree retains its expanded state and refreshes only to reflect
the modifications in waivers.
To customize a waiver definition from a message, right-click on the
message and select Waive > Custom... The Customize Waiver dialog
appears:
Grouping Messages
Using the Group By pull-down list, you can group the rule messages by
the grouping orders listed therein. The Group By text-box displays the
first level of the currently selected grouping order. You can view all the
levels of the currently selected grouping order by placing the mouse
pointer over the Group By text-box. A small balloon window is
displayed indicating all levels of the grouping order. Similarly, you can
view all the levels of the grouping orders listed in the Group By
pull-down list by placing the mouse pointer over the grouping orders
listed therein.
NOTE: By default, messages are grouped according to Severity > Rule >
Message(s).
You can define the default grouping order for the rule messages in the
.spyglass.grouping_order file which is automatically created and stored in
the $HOME/.atrenta directory when you select the grouping order in
SDE.
You can also store the .spyglass.grouping_order file at the following
locations:
• SpyGlass installation directory ($SPYGLASS_HOME). Storing the
.spyglass.grouping_order file in the SpyGlass installation directory
($SPYGLASS_HOME) is useful when multiple SpyGlass users are
working on the same project/design and consistent usage of message
grouping order is required. However, the settings specified in the
$HOME/.atrenta directory override the settings specified in the
SpyGlass installation directory ($SPYGLASS_HOME). Therefore, if
you require consistent usage of message grouping, ensure that you
do not change the grouping order in SDE.
• Any directory other than $SPYGLASS_HOME and $HOME/.atrenta:
You can save the the .spyglass.grouping_order file in any directory of
your choice, and set the SPYGLASS_CONFIG_PATH environment
variable to point to that directory. Then, the settings specified in the
directory override the settings in the SpyGlass installation directory
($SPYGLASS_HOME). However, the settings specified in the $HOME/
.atrenta directory override the settings specified in the directory that
is specified using the SPYGLASS_CONFIG_PATH environment
variable.
The .spyglass.grouping_order file is automatically read whenever
SpyGlass starts and the message grouping order specified in this file is
automatically loaded.
NOTE: Since the .spyglass.grouping_order file is automatically read and
loaded whenever SpyGlass starts, there is no need to use the -f command-
line option to specify this file.
Sample .spyglass.grouping_order file
Severity#Severity->Rule->Message(s)
Template#Template->Severity->Rule->Message(s)
Tag#UserTag->Severity->Rule->Message(s)
All#Built-In->UserTag->Template->Policy
->RuleGroup->Rule->Message(s)
Here, you can change the grouping order by selecting a group level
and moving (up or down) or deleting the selected group level by
using the corresponding icons listed at the right-hand side of the
window.
• Grouping Levels
Use this section to set additional levels for grouping rule messages,
first by these additional levels and then by Policy, Severity-Label,
Severity-Class, Severity-Preference, or RuleGroup (as the case may
be). You can set the following additional levels:
Level Description
Level1: File/Module Groups messages by File or module
Level 2: Built-in/ Groups rule messages by SpyGlass built-in rules and
Non-Builtin other policies.
If this level is selected and grouping by Policy is also
selected at the sub-level, then the rule messages within
the Built-in group of this level are still grouped by
RuleGroup > Severity-Class, or RuleGroup > Severity-
Label, or RuleGroup > Severity-Preference, because
SpyGlass built-in rules do not belong to any sub-level
policy.
Level Description
Level 3: User Tag Groups rule messages by the tags assigned to them
(discussed later in this section)
Level 4: Template Groups rule messages by the templates selected for
SpyGlass design analysis
NOTE: A rule message belonging to more than one
template is displayed under a separate template group.
For example, a rule message belonging to Block-
Design|Creation and Block-Design|Reuse templates will
appear separately under each of these templates.
These levels specified in the above table are applied with a higher
priority (over policies, severity-label, severity-class, severity
preference, or rule group) for grouping rule messages. Moreover, if
more than one additional level is selected, then these levels are
applied for grouping rule messages in the order of the level (Level 1
has highest priority, then Level 2, and so on).
SpyGlass provides you with the following sub-levels which you can
Level Description
Level 5 Groups rule messages by policy, rule group, severity-class,
severity label, or severity preference.
NOTE: Selecting Policy or RuleGroup at Level 5 will group
only the Non-Builtin rule messages by policy or rule group.
At this level, when you select the Rule-Group option,
SpyGlass displays the Depth drop-down menu from which
you can select the required value. This value specifies the
number of subgroups to be displayed in the Message Tree
Level 6 Groups rule messages by rule group, severity class, severity
label, or severity preference. At this level, when you select
the Rule-Group option, SpyGlass displays the Depth
drop-down menu from which you can select the required
value. This value specifies the number of subgroups to be
displayed in the Message Tree.
NOTE: Level 6 appears only if you select Policy,
Severity-Class, Severity-Label, or Severity-Preference at
Level 5.
Tagging Messages
You can tag rule messages either with certain predefined identifiers
such as Investigate, Fixed, ToFix, and VerifiedFixed or with your own
tags. Tagging of messages with identifiers helps you keep track of the
rule violations in your design that are flagged as a result of SpyGlass
design analysis. For example, in a single SpyGlass analysis run, you
can analyze a number of rule violations and assign appropriate tags
based on the actions that you have performed (such as Fixed or
VerifiedFixed) or intend to perform later (such as Investigate or ToFix).
This way, you need not repeatedly run SpyGlass analysis to update the
status of rule violations after performing a set of corrective actions in
your design to address those rule violations.
Adding a Tag
To add a tag to a rule message, select the message in the Msg Tree page
and click the Add Tag icon ( ) OR right click the message and from
the Tag > context menu options, select a tag from the set of predefined
visual tags OR press the <Ctrl> <T> key combination on your keyboard.
A set of visual tags (identified by corresponding graphical icons) are
available through the Tag > context menu option. When any of these
Here, you can either select a predefined tag from the Tag pull-down list
or specify your own tag by typing a tag name in the Tag field. Click the
Ok button and the message will be tagged with the specified tag
(indicated by the tagged icon ( ).
NOTE: New tags that are specified by you here are added to the list of already
available tags.
Deleting a Tag
To delete a tag from a rule message, select the message in the Msg Tree
page and click the Delete Tag icon ( ) or right-click the message and
select the Tag > Delete option from the context menu. The tag that was
applied to the message will be deleted.
NOTE: The Tag > Delete context menu option is enabled only if you have
added a tag to a rule message.
Modifying a Tag
To modify the tag for a rule message, select the message in the Msg
Tree page and click the Modify Tag icon ( ) in the Msg Tree toolbar or
right-click the message and select the Tag > Modify option from the
context menu. The Modify Message Tag window is displayed with the
selected rule message and its tag, as shown below:
To modify the tag for the message, click the tag name in the Tag field.
A pull-down list of all the available tags is displayed. Once again, you
can either select a tag from the pull-down list of available tags or
specify your own tag by typing a name in the Tag field. Click Ok to
apply the modified tag to the selected message.
NOTE: The Tag > Modify context menu option is enabled only if you have
added a tag to a rule message.
NOTE: You can also add/delete/modify the tags for more than one message at
a time by selecting multiple messages (either by dragging the mouse pointer
across the messages or by individually clicking the messages while holding
down the <Ctrl> key on the keyboard) and applying the tag settings as
described above.
The upper section of the advance search window is where the search
criteria can be specified. The lower section displays the resultant
messages that match the search criteria.
To specify the search criteria, click the Search Criteria pull-down list and
select the relevant criteria from the list of available items, such as Tag,
Template, Policy, Severity, RuleGroup, Rule, Weight, Message Text (Contains
or Does Not Contain), or Message ID (hex). Based on the selected search
criteria, the Value pull-down list is populated with all the available
values for the selected search criteria. Select the value of the search
criteria from this list. You can specify more than one search criteria or
delete a search criteria by using the or icons, respectively. You can
also specify whether to match any of the specified search criteria
(similar to the OR operation) or all of the search criteria (similar to the
AND operation) while performing the search (use the corresponding
check-boxes at the top of the search criteria section). In addition, you
can use the options available below the search criteria to specify
whether to highlight (in the Msg Tree) the first found message or all the
messages that match the specified search criteria.
To perform the search (based on the specified search criteria), click the
search icon ( ). Then, the messages that match the search criteria are
listed in the results section of the advance search window, as shown
below:
Using the pagination support, you can specify the maximum number of
messages displayed per page of the results section (by selecting a
number from the corresponding pull-down list) and move between the
pages by using the previous page and next page icons ( ).
In the results section of the advance search window, each row
represents the information about the found messages. This information
includes the individual message text, the file name and the line number
of the file where the message is reported, and the unique hexadecimal
violation id associated with each message (see the Show Message ID in
Msg Tree, Msg Summary, etc. section for details).
Tags can be applied/modified to the messages listed in the results
section of the advance search window by selecting the check-box for
the messages and using the corresponding tagging icons ( ). See the
If you place the mouse over a module then a balloon window appears
that displays the total number of messages in a module, the total
number of messages in the module hierarchy, and the total number if
instances of that module.
You can save the message present in a module in a text format or html
format. To save the message in an html format, right-click on the
module name, and select the Save Message List->Html Format context
menu option. This displays the Save Report As dialog in which you can
specify the name, type, and path of the file in which you want to save
the message. Similarly, to save a module in a text format select the Save
Message List->Text Format context menu option.
You can also view the list of instances of a module. To do so, right click
the module in the Module Hierarchy page and select the Show Instance
List... context menu option. Refer to the Viewing List of Instances
section for details.
File Page
The File page is optional and appears only if you have selected to
display the File page from the Tabs Page of Tools > Preferences... menu
option.
The File page of the Message window displays the count of the total
number of messages, the total number of messages in the source file,
and the total number of waived messages. In addition, the File page
also displays the list of messages found in a selected source file.
To view the messages found in a source file, double-click the file in the
File view page and the File page in the Message window displays the
messages found in the selected source file.
For the selected source file, the File page displays the name of the
source file and the messages found in the source file grouped either by
Severity (default) or by Policy.
When the messages in the File page are sorted based on severity, the
violation messages of rules having multiple severities are grouped
under different severity labels. For example, in the above figure, the
violation messages for the Ac_cdc04b rule are displayed under the
Error and Info categories.
When the messages, are not grouped by severity, then the severity of
the violation messages can be identified based on the following
severity icons:
A toolbar similar to the Msg Tree Toolbar is also available in the File
page which can be used for grouping messages, tagging messages,
Module Page
The Module page of the Message window displays list of messages
found in a selected design unit. In addition, the Module page displays
the count of the total number of the messages, the number of messages
in the selected design unit, and the total number of waived messages.
violation messages for the Ac_cdc04a rule are displayed under the
Error and Info categories.
When the messages, are not grouped by severity, then the severity of
the violation messages can be identified based on the following
severity icons:
Line Page
The Line page is optional and appears only if you have selected to
display the Line page from the Tabs Page of Tools > Preferences...
menu option.
The Line page of the Message window displays a list of the messages
associated with the selected line of code in the Source window.
If there are no messages found in the design, then the Line page is
grayed out.
To view the messages associated with a source code line, click the
source code line in the Source window. The messages, if any associated
with the selected source code line are displayed in the Line page.
For example, selecting a given source code line could produce the
following messages in the Line page:
(W123) Warning: Variable ’thing’ declared but never set
(149)
(W120) Warning: Variable ’thing’ declared but not used
(149)
Each message shown in the Line page has the rule name, the severity of
the message, the number of times a message is generated for the
particular source code line, and the source code line number where the
message occurred.
To view an in-depth description of a particular rule message, right-click
the message. A browser window appears that contains the rule
description.
Serious Page
NOTE: The Serious page is optional and appears only if you have selected to
display the Serious page from the Tabs Page of Tools > Preferences menu
option.
The Serious page of the Message window shows the details of serious
messages that is, the messages of FATAL and ERROR severity class.
The Serious page label shows the total number of serious messages
found in the design for all policies run. If there are no serious messages
found in the design, then the Serious page is grayed out.
The Serious page shows the total number of serious messages by
policy. Then, individual serious messages are listed sorted by their rule
severity.
Warning Page
NOTE: The Warning page is optional and appears only if you have selected to
display the Warning page from the Tabs Page of Tools > Preferences menu
option.
The Warning page of the Message window shows the details of
warning messages, that is, the messages of WARNING severity class.
The Warning page label shows the total number of warning messages
found in the design for all policies run. If there are no warning
messages found in the design, then the Warning page is grayed out.
The Warning page shows the total number of warning messages by
policy. Then, individual warning messages are listed sorted by their
rule severity.
Info Page
NOTE: The Info page is optional and appears only if you have selected to
display the Info page from the Tabs Page of Tools > Preferences menu option.
The Info page of the Message window shows the details of
informational messages that is, the INFO severity class messages.
The Info page label shows the total number of informational messages
found in the design for all policies run. If there are no informational
messages found in the design, then the Info page is grayed out.
The Info page shows the total number of informational messages by
policy. Then, individual informational messages are sorted by their rule
severity.
Summary Page
NOTE: The Summary page is optional and appears only if you have selected to
display the Summary page from the Tabs Page of Tools > Preferences menu
option.
The Summary page of the Message window shows the list of all the
rule messages for the policies selected in the current analysis.
The messages for these severity classes are highlighted in red if you
have selected to highlight the messages for that category from the Tabs
Page of the Tools > Preferences menu option.
The Summary page also displays the rule parameters with their values
and the unselected rules of all selected policies if you have set the
corresponding options from the Tabs Page of the Tools > Preferences
menu option.
You can save the message summary to a file. To save the message
summary, right-click anywhere on the Summary page and from the
context menu, select the Save As... context menu option to save the
message summary.
Waived Page
The Waived page of the Message window displays the Waiver Tree
containing the rule messages waived based on the user-specified
waive constraints. SpyGlass also displays the comment applied to
each of these messages.
The Waived page displays the count of the total number of messages
waived. The waived messages in the Waiver Tree are grouped either
according to the waiver expressions specified by you or by the
Severity/Policy of the rule messages. You can set the order in which the
waived messages are grouped in the Waiver Tree by specifying your
preference using the Options pull-down list on the Waived Tree toolbar.
Using the Options pull-down list, you can select/clear the option for
grouping the Waiver Tree by waiver expression first and/or set
miscellaneous preferences by selecting Preferences... option from the
Options pull-down list, which displays the Misc Page (same as
displayed by the Tools > Preferences menu option).
The toolbar at the top of the Waived page also allows you to group/tag
messages, wrap text, and search within the Waived page. See the Msg
Tree Toolbar for details about using the toolbar.
menu. A balloon window is displayed with the full text of the rule
message.
Sorting Results
You can sort the displayed results on the basis of the columns and the
sorting order of the column values (that is, ascending or descending
order).
To sort the CSV results, click a column header. For example, to sort the
results on the basis of the ID column, click on the header of the ID
column. The down arrow on the column header (indicated by )
means that the column is sorted in the Ascending order. Clicking again
Filtering Results
To apply filters on the results, right-click a column header of the
window. This displays the values of the column. Selecting a particular
value will display the rows having that column value.
To set multiple filters, right-click the required column header and select
Custom context menu option. This displays the Custom Filter dialog, as
shown in the following figure:
In the Custom Filter window, you can select the Filter Criteria and set the
corresponding filter Value. To apply more than one filter, click the More
button on the top-right corner of the window. This inserts another row
to specify a new filter criteria and value.
You may choose to set the filter to match all or any of the specified
filter criteria by selecting Match all of the following or Match any of the
following options on the top of the window.
Setting filters enables you to view only those rows that match the
criteria specified in the Custom Filter window.
SpyGlass also provides the following filtering options in the right-click
menu of the column header of the Spreadsheet Viewer:
• (All): Use this menu option to display all the results of the particular
column and clears any filter criteria specified for that column.
• Custom: Use this menu option to set filter criteria on the results
displayed in the Spreadsheet Viewer. This menu option opens the
Custom Filter window.
• <column-values>: The column values <column-value1, column-
value2,...> are displayed in the context menu to filter the column on
the basis of the displayed value. You can select a particular column
value to filter the results based on that value. Note that only some of
the column values will be displayed on the context menu. To set
filter on the basis of other values of the column, select the (Other...)
menu option.
• Other: Use this menu option to set the filter on the basis of a
specified filter criteria and a corresponding value. This menu option
displays the Custom Filter window.
Single-Clicking
Single-clicking any un-probed schematic component in the Modular
Schematic window removes all other probes and starts the probing of
that component. See Interaction with Other Windows for more details.
Repeatedly single-clicking the object in the Modular Schematic
window cycles through all occurrences of the object name in the design
using simple text search of the object name.
Control+single-clicking any unprobed object probes the object and
Control+single-clicking any probed object deselects its probe without
affecting the other probes.
If an object is already selected and you Control+single click another
object, then both objects are selected.
Using Control+single click, you can select only upto 32 objects in the
Modular Schematic window. If you select more than 32 objects, then a
warning popup dialog is displayed prompting you to deselect some of
the selected objects.
Double-Clicking
When you double-click a schematic component in the Modular
Schematic window, the module, gate, or net opens (drills-down) to the
schematic of that component (if available). Additionally, the section of
code describing the component in the source file is highlighted in the
Source window. If the component is a module that has its own
description file, then the source file is opened in the Source window,
and highlighted in the File/Design/Constraints/Instances window.
Click-Drag Combinations
Holding down the left mouse button and dragging the mouse pointer
causes viewing changes in the Modular Schematic window. When the
mouse button is released, the viewing changes as per the direction of
the mouse course. If you consider the Modular Schematic window as a
navigational map (with north being the top of the window, south being
the bottom, East being the right-hand side of the window, and West
being the left-hand side), then the following click-drag combinations
produce results:
Northwest-to-Southeast
Dragging the mouse with the left button depressed in this direction
causes a “zoom in” area to form. When the mouse button is released,
the Modular Schematic window will zoom until the area selected fills
the window.
Northeast-to-Southwest
Dragging the mouse with the left button depressed in this direction
instructs the Modular Schematic window to increase or reduce
magnification of the schematic as determined by the current settings.
As a result, when the mouse button is released, the current module of
the schematic will be completely visible in the Modular Schematic
window. This is called “zoom to fit.”
Southeast-to-Northwest
Dragging the mouse with the left button depressed in this direction
instructs the Modular Schematic window to “go up” the hierarchical
tree and displays the parent module’s schematic. When the mouse
button is released, the parent module’s schematic will be displayed in
Modular Schematic window. If the parent module had already been
displayed in the past, it will inherit the zoom settings of the prior visit.
If the parent module had not been previously viewed, it will open in
“zoom to fit” mode.
Southwest-to-Northeast
Dragging the mouse with the left button depressed in this direction
instructs the Modular Schematic window to decrease magnification of
the schematic. The length of the dragging determines how far the
Modular Schematic window will “zoom out.” A short drag in this
direction will cause the viewing area to zoom out by a small multiplier,
while dragging from one corner of the screen to the other will cause the
viewing area to zoom out by a large multiplier. When the mouse button
is released, the Modular Schematic window will zoom out with the
selected modifier.
Right-Clicking
Right-click a component in the Modular Schematic window to get the
context menu that contains the following options:
Component Name
The type and name of the selected component is shown in the first line
of the context menu.
In the above dialog, you can select the object type to be searched from
the object type drop-down list (Net/NetBundle selected by default). For
example, to find a port or port bus, select the Port/Portbus option from
the drop-down list.
Depending upon the object type selected from the drop-down list, the
object list is redrawn to show only nets in the schematic. Now, you can
specify the starting characters of the net name. As you start specifying
the starting characters in the search text field, the object list is
progressively filtered to show only those nets whose names start with
those characters. You can disable this auto-filtering feature by selecting
the Disable Auto Filtering option.
NOTE: The name search is case-insensitive. Thus, typing foo will find and
show foo, fOo1, FOO, Foo23, etc.
When the required net is easily accessible in the object list, click the net
name and click the find icon ( ). The corresponding net is highlighted
in the Modular Schematic window.
You can also change the highlight color for the searched net by clicking
the color indicator icon ( ) that shows the currently selected highlight
color.
You can also view the sinks and sources for the searched net using the
Next Source, Previous Source, Next Sink, and Previous Sink options
available from NSS Options button.
A searched net is also highlighted in the Source window and added to
the Legend window, if open.
Similarly, you can find and view the following objects:
• A port or port bus by selecting the Port/Portbus field from the object
type pull-down list
• A pin or pin bus by selecting the Pin/Pinbus field from the object type
pull-down list
• An instance by selecting the Instance field from the object type
pull-down list
You can also search the objects by hierarchical names, as discussed
below:
Searching Objects by Hierarchical Name
The Find dialog of the Modular Schematic Window enables you to
search the objects (instances, nets, and ports) by hierarchical name. To
implement such hierarchical search, select the Hierarchical Search option
from the drop-down list. When you select this option, additional search
options are displayed in the Find dialog, as shown in the following
figure:
Here, the names of the top design units are displayed in the result list
box. As you start specifying the starting letters of a valid hierarchical
name (using the dot hierarchy separator), the results are updated
accordingly in the result list box. You can also dive down the hierarchy
of a displayed object by double-clicking the object name in the result
listbox. The type of the objects (such as, Net, NetBundle, Port, PortBus
etc.) is also displayed along with the object names in the result listbox
(module name is displayed for instances).
You can also filter the displayed objects in the result listbox to
selectively view Instances, Ports, or Nets (or a combination of these).
To do so, select the appropriate check-box(es) and the objects displayed
in the result listbox are updated accordingly.
You can also perform case-insensitive search for finding objects by
hierarchical name in the VHDL and mixed-language modes. For this
purpose, the Use Case-Insensitive search for VHDL field has been added,
which gets enabled (only in VHDL and mixed-language modes) when
you select the Hierarchical Instance search option.
You can qualify your search to include regular expression in your
search. To do this, select the Use Advanced Search option.
NOTE: The Use Case-Insensitive search for VHDL field is selected by default
in the VHDL/mixed-language modes. Case insensitive search is performed
only inside the VHDL modules. For Verilog modules in the mixed-language
mode, this feature is switched off.
Setting Colors
Select Colors to set the color for the selected instance. The Color dialog
box appears. Choose a color and click OK. The color of the selected
instance is updated in all windows.
Here, the object properties are listed, such as the object name, object
type, the full hierarchical name of the object, and text attributes
attached to the object (if any).
NOTE: Text attributes set by auxi violations or case-analysis are also shown. In
case of netbus, portbus, or pinbus, the text attributes are shown in a tabular
form, listing only those bits which have some text attributes attached.
You can also copy the text of the object properties, and paste it to
another application. To copy the text, right-click the text and select the
Copy Text option (to copy the full text) or Copy Custom option (to copy
only partial text). When you select the Copy Custom option, SpyGlass
displays the entire message text in a separate Schematic Properties
window, as shown in the following figure:
To view/hide the subgroups within the selected group, you need to click the
Enable Groups button ( ) located on the toolbar.
NOTE: If the constraints of a particular type, say SGDC are not set for an
object then they will not be displayed in the Constraints List window.
NOTE: If no constraints are set on an object, the Cross-Reference to
Constraints... context menu option of that object would be disabled.
appears that lists the cell name, cell type, cell source library (.sglib file),
inferred pin interface, and inferred functionality. You can print the
displayed information by clicking the Print button.
Generating Constraints
You can generate the following constraints on an object (port, net, and
terminal only):
• test_mode
• set_case_analysis
• reset
• clock
• cdc_false_path
To generate a constraint, perform the following steps:
1. Right-click on the object and select the Set SGDC Constraints... option
from the context menu. When you select this option the SGDC
Constraints Editor window is displayed as shown below.
Here, the name of the object is displayed in the object name text field.
The Preview Constraint section displays the options selected for the
option.
2. Select the type of constraint from the Select Constraint Type: pull-
down list.
When you select a constraint, the Constraints Argument section of
the SGDC Constraint Editor window is populated with the
arguments that apply on the selected constraint.
The test_mode constraint contains the following arguments:
• soft: Specifies that the reset is to be used for both initial state
search as well as during functional analysis.
• sync: Specifies that the reset type is synchronous.
The clock constraint contains the following arguments:
• name (mandatory): Specifies the clock port/pin name.
• value: Specifies the value of the clock port/pin.
• fflimit: Specifies the maximum number of flip-flops that can be
driven by the clock.
• period: Specifies the clock period that needs to used in clock
domain crossing checks.
• edge: Specifies the clock edge value. By default, the clock edges
are assumed to be 0, 50, 100 and so on.
• domain: Specifies the clock domain name.
• polarity: Specifies the polarity of the clock.
• testclock: Specifies that the clock used is a testclock.
The cdc_false_path constraint contains the following
arguments:
• from (mandatory): Specifies The name of a clock, a master design
unit, a flip-flop output net, or a pin (of a master design unit)
• through: Specifies the name of a internal net, master design unit,
or a pin (of a master design unit).
• to (mandatory): Specifies the name of a clock, a master design
unit, a flip-flop output net, or a pin (of a master design unit)
NOTE: You can enter the name of the objects in the from, through, or to
fields or right click any field and select the last selected object from the
Select Object from MS/Select Object from IS context menu options.
You can also add the cdc_false_path constrains for the
clock_sync01 rule through the spreadsheet viewer. See Creating
cdc_false_path Constraints for more details.
3. Click the Generate button to generate the constraints for the selected
object. When you select this option, the generated constraint(s) is
displayed at the bottom of the Constraint Editor window, as shown
below:
NOTE: If the number of constraints added exceeds the page size (specified
using the Pg.Size button), then you can click the ( ) buttons to go to the
previous or next pages.
4. Type the name of the constraint file to which you want to add the
constraints. You can also click to select a constraint file. If the
constraint file does not exist in the list then you can click the Select
SGDC File button and browse to the directory that contains the
required SGDC file.
5. Click the Append button to add the new generated constraints to the
specified SGDC file.
6. Click the Append & Run button to apply your settings and run
SpyGlass analysis with the new commands.
NOTE: You need not specify the current design in the SGDC Constraint
Editor window. SpyGlass automatically inserts the appropriate current
design whenever required.
7. Click Close to close the SGDC Constraint Editor window.
The Constraints Editor window also contains the following buttons:
• Bit Select: Enables you to select multiple bits for a constraint.
Consider an example in which you want to specify the bit range for a
four dimensional vector net. In this case, when you click the Bit
Select button, the Select Vector Bits for MultiDim Object dialog is
displayed, as shown in the following figure:
name.
NOTE: Clicking Save in Save As dialog does not save the schematic to a
postscript file; it only sets the file name. You still need to click OK in the Print
Dialog to save the schematic to a postscript file.
• Orientation
Select Landscape to print or save the schematic in a landscape
orientation, select Portrait to print or save the schematic in a portrait
orientation, or select Auto to let SpyGlass decide the best-fit
orientation.
• Color Mode
Select Inverted Color to print or save the schematic in a reverse color
mode, select Mono to print or save the schematic in monochrome
mode, or select Color to print or save the schematic in a color mode.
• View
Select full to print or save the full schematic or select current to print
or save the currently displayed view of the schematic.
• Size
Select the target paper size from the supported paper sizes.
• Highlight Info
If you have selected to print or save the schematic in Color mode,
you can set this option to print the highlighted objects with their
respective colors.
You can also invoke the Schematic Print dialog by using the <Ctrl>+P
key combination on your keyboard or by clicking the ( ) button on
the Modular Schematic toolbar located below the menu bar.
shown below.
You can also pan down by pressing the down arrow key on the
keyboard.
Help
Use this menu to view SpyGlass Help options. See Help Menu for more
detail on SpyGlass Help options.
IS Probes
The Incremental Schematic window uses a different type of probe
called IS Probes that are different from the normal probes.
An IS Probe is created when:
• A component is loaded from the Modular Schematic window to the
Incremental Schematic window. See Loading or Appending to the
Incremental Schematic Window for details.
Single-Clicking
Single-clicking any un-probed schematic component removes all other
probes and starts the probing of that component. See Interaction with
Other Windows for more details.
Repeatedly single-clicking the object in the Incremental Schematic
window cycles through all occurrences of the object name in the design
using simple text search of the object name.
Control+single-clicking any unprobed object probes the object and
Double-Clicking
When you double-click a port or pin schematic component in the
Incremental Schematic window, the schematic is expanded to show the
connected net and all its end connections (instances or ports).
When only one component is connected to the IS Probed port or pin,
the connected component is displayed with a solid line connection.
However, if there are multiple components connected to the IS Probed
port or pin, the first found component is displayed with a dotted line
connection. Double-click the dotted line connection and the next found
component connected to the IS Probed port or pin is displayed. If it is
the only other component connected to the IS Probed port or pin, then
the component is displayed with a solid line connection. Otherwise, the
component is displayed with a dotted line connection. Continue
double-clicking the dotted line connection till all connected
components are added with solid line connections.
When you double-click an instance schematic component in the
Incremental Schematic window, the schematic is expanded to show the
pins of that instance.
Click-Drag Combinations
Holding down the left mouse button and dragging the mouse pointer
causes viewing changes in the Incremental Schematic window. When
the mouse button is released, the viewing changes as per the direction
of the mouse pointer. If you consider the Incremental Schematic
window as a navigational map (with north being the top of the window,
south being the bottom, East being the right-hand side of the window,
and West being the left-hand side), then the following click-drag
combinations produce results:
Northwest-to-Southeast
Dragging the mouse with the left button depressed in this direction
causes a “zoom in” area to form. When the mouse button is released,
the Incremental Schematic window will zoom until the area selected
fills the window.
Northeast-to-Southwest
Dragging the mouse with the left button depressed in this direction
instructs the Incremental Schematic window to increase or reduce
magnification of the schematic as determined by the current settings.
As a result, when the mouse button is released, the current module of
the schematic will be completely visible in the Modular Schematic
window. This is called “zoom to fit.”
Southwest-to-Northeast
Dragging the mouse with the left button depressed in this direction
instructs the Incremental Schematic window to decrease magnification
of the schematic. The length of the dragging determines how far the
Incremental Schematic window will “zoom out.” A short drag in this
direction will cause the viewing area to zoom out by a small multiplier,
while dragging from one corner of the screen to the other will cause the
viewing area to zoom out by a large multiplier. When the mouse button
is released, the Incremental Schematic window will zoom out with the
selected modifier.
NOTE: The Southeast-to-northwest click-and-drag combination available in the
Modular Schematic window (for going up the module hierarchy) is not
applicable for the Incremental Schematic window.
Southeast-to-Northwest
Dragging the mouse with the left button depressed in this direction
instructs the Incremental Schematic window to “go up” the hierarchical
tree of the object under the starting point of the dragging action and to
display the parent module’s boundary.
Right-Clicking
Right-click a component in the Incremental Schematic window to get
the context menu:
Component Name
The name of the selected component is shown in the first line of the
context menu.
Schematic window.
NOTE: When you right-click on a signal in the Incremental Schematic window,
this option may appear as Convert to RTL probe/Waveform Viewer (instead of
Convert to RTL probe). This occurs if the selected violation message has a
Waveform Viewer associated with it and that signal is also present in that
Waveform Viewer.
NOTE: SpyGlass does not allow you to cross-probe to the RTL of encrypted
design units. If you try to cross-probe to RTL of such design units, SpyGlass
displays a message in the RTL viewer specifying that the file is encrypted.
You can view the SDC/SGDC constraints set on an object (port, net,
instance, or terminal). To do so, right-click on the object and select
Cross-Reference to Constraints ... menu option from the context menu.
When you select this option, the constraints (SDC/SGDC) set on the
object are displayed in the Constraints List window, as shown below.
NOTE: If the constraints of a particular type, say SGDC are not set for an
object then they will not be displayed in the Constraints List window.
NOTE: If no constraints are set on an object, the Cross-Reference to
Constraints... context menu option of that object would be disabled.
NOTE: When you right-click a net and select the Cross-Reference to
Constraints... option from the context menu, you can also see the constraints
set on ports of connected nets in addition to the constraints set on the net.
Here, the name of the object is displayed on the top and the SDC/
SGDC constraints set on the object are listed in a tree format in the
section below. The Constraint column contains the name of the
constraint, the File column contains the name of the corresponding
SDC/SGDC file, the Line No. column contains the line number of the
constraints file where the constraint is defined, and the BitRange column
contains the bit range of the selected constraint.
To view the object (on which the constraints are set) in the Modular
Schematic window, click the name of the object on the Constraint List
window. This will highlight the object in the Modular Schematic
window.
You can also view the definition of each of the listed constraints in the
Here, the object properties are listed, such as the object name, object
type, the full hierarchical name of the object, and text attributes
attached to the object.
NOTE: Text attributes set by auxi violations or case-analysis are also shown. In
case of netbus, portbus, or pinbus, the text attributes are shown in a tabular
form, listing only those bits which have some text attributes attached.
You can also copy the text of the object properties (using the <Ctrl>+<C>
key combination or the context menu) and paste it to another
application.
Tracing Cones
You can also trace the input cone (for input or inout pins) or output
cone (for output or inout pins) of any pin in the schematic portion
displayed in the Incremental Schematic window.
Right-click a pin to get the component context menu.
For an input or inout pin:
• Select Show Input Cone > To Primary Inputs to view all components in
the fanin cone of the selected pin up to primary inputs.
• Select Show Input Cone > To Flops to view all components in the fanin
cone of the selected pin up to flip-flops.
• Select Show Input Cone > To Flops/Latches to view all components in
the fanin cone of the selected pin up to flip-flops and latches.
• Select Show Input Cone > To Flops/Latches/BlackBoxes to view all
components in the fanin cone of the selected pin up to flip-flops.
latches, and blackboxes.
• Select Show Input Cone > Define End Point... to set the end points
(instances) up to which you want to view the fanin components.
Then, the Define End Point dialog appears listing all the master
modules instantiated in the design:
Select the master module(s) and then click Show Cone. The
Incremental Schematic window is updated to show all components
in the fanin of the selected pin up the instances of the selected master
module(s). You can search for an instance by entering its name in the
Find Text field and clicking Search. As you type the starting letters of
a valid module name, the results are updated accordingly.
• Select Show Input Cone > To Module Boundary to display the input cone
till the boundary of the current design unit in which the cone is being
seen.
The procedure for tracing output cones for output or inout pins is same
using the Show Output Cone option in the context menu.
• Color Mode
Select Inverted Color to print or save the schematic in a reverse color
mode, select Mono to print or save the schematic in monochrome
mode, or select Color to print or save the schematic in a color mode.
• View
Select full to print or save the full schematic or select current to print
or save the currently displayed view of the schematic.
• Size
Select the target paper size from the supported paper sizes.
• Highlight Info
If you have selected to print or save the schematic in Color mode,
you can set this option to print the highlighted objects with their
respective colors.
You can also invoke the Schematic Print dialog by using the <Ctrl>+P
key combination on your keyboard or by clicking the ( ) button on
the Incremental Schematic toolbar located below the menu bar.
NOTE: Before selecting a case analysis option, set the Display mode to
Selective before performing case analysis.
Initially, the Legend window does not show any display annotations.
When you select any probe or message in the Source window,
schematic windows, or Message window, the corresponding details are
added to the Legend window.
Probing Modes
The Legend window has the following probing modes that can be
selected from the Probing modes button:
1. Normal (Single Color)
Selected probes or messages are highlighted with only one color (the
highlight color set in the Schematic Page of the Tools > Preferences
menu option).
All un-probed instances are shown in blue color and all un-probed
nets are shown in yellow color in both schematic windows.
2. Grey (Single Color)
Selected probes or messages are highlighted with only one color (the
highlight color set in the Schematic Page of the Tools > Preferences
menu option).
All un-probed instances and nets are shown with grey mode color
(set in the Schematic Page of the Tools > Preferences menu option).
3. Grey (Multiple Colors)
Selected probes or messages are highlighted with different colors
automatically selected from the color palette.
All un-probed instances and nets are shown with grey mode color
(set in the Schematic Page of the Tools > Preferences menu option).
are still displayed for you to highlight them again in the Incremental
Schematic window.
• In Current?
This indicator shows y if the probe or message is in the hierarchy
currently shown in the schematic windows. Otherwise, this indicator
shows n.
• Top
This indicator shows the name of the top module containing the
selected probe.
• Details
This description shows the sinks and sources of the net and ports,
gate type for instances, clock signals for clock domains, and rule
details for messages.
To see the complete details, bring the cursor over the details entry.
In the example, above the formula is displayed as A1+B1 for the cell C3.
Adding/Modifying/Deleting Formula
To add/modify a formula in a cell, you need to type “=” followed by the
formula. For example, if you want to display the sum of the values of
cell A1 and cell A2 in cell A3, then you need to enter the following
formula in cell A3:
=A1+A2
If you replace the data of a cell that has a formula associated with it, the
formula is deleted.
A B C
1 =B3+A2
2
3 =A1+C3
In the above table, the value in cell A1 depends on the value in cell B3.
However, the value in cell B3 also depends on the value in cell A1. In
such a scenario, the program may fall into an infinite loop while
evaluating the result of cell A1.
SpyGlass generates an error message when it encounters any cyclic
dependency.
Enter the name of the SDC file in the text box provided and click OK.
NOTE: The Generate SDC.... option is enabled only when you select a
violation message corresponding to the SDC_GenerateIncr rule of the
Constraints policy.
Type the file name in the File name: text field and select the directory
where you want to save the file. Next, click Save to save the file.
In the above dialog, select the required font and font size from the
Source Font and Font Size drop-down list, respectively, and click the OK
button.
Enter the number of rows in the Enter Rows combo box and click OK to
add the specified number of rows.
Select the Source Clk, Dest Clk option if you want to create the
cdc_false_path constraint using this options and click the Ok
button. The SGDC Constraint Editor window is displayed where you
can edit the selected constraint. See Setting SGDC Constraints for more
details.
Select the Don’t show this dialog again option if you do not want to
display the Select Flop/Clock dialog the next time when you create the
cdc_false_path constraint. When you select this option, the Don’t
Show cdc_false_path setup dialog again option is automatically selected in
the Misc Page of the Preferences window. To display this dialog again,
deselect the Don’t Show cdc_false_path setup dialog again option in the
Preferences window.
You can also create constraints for all violations by clicking the ( )
toolbar button to select all the rows in the spreadsheet.
Sorting Results
The Spreadsheet Viewer allows you to sort the displayed results on the
basis of the columns and the sorting order of the column values (that is,
ascending or descending order).
To sort the CSV results, click a column header of the Spreadsheet
Viewer. For example, to sort the results on the basis of the ID column,
click on the header of the ID column. The down arrow on the column
header (indicated by ) means that the column is sorted in the
Ascending order. Clicking again on the column header, sorts the
column in the descending order.
Alternatively, you can also sort the CSV results by performing the
following steps:
1. Select the Options > Sort... menu option in the Spreadsheet Viewer.
This displays the Set Sort Order window as shown in the following
figure:
The Set Sort Order window contains two columns, Column and Order.
2. Select a column then select Ascending or Descending in the Order
column to set the order of the selected column values. Click the OK
button. This sorts the results in the Spreadsheet Viewer on the basis
of the selected column.
To sort the results on the basis of more than one column, perform the
following steps:
1. Select Option > Sort... menu option in the Spreadsheet Viewer. Select
the required first column in the Set Sort Order window and then set
the sort order (ascending or descending).
2. Move the selected column up the column hierarchy by pressing the
Move Entry Up button (indicated by ).
3. Select the second column by which you want to sort the results.
Click the OK button. This sorts the results by column one and then
by column two.
SpyGlass also provides the following sorting options in the right-click
menu of the column header of the Spreadsheet Viewer:
• Sort Ascending: Use this option to sort the column in the ascending
order
• Sort Descending: Use this option to sort the column in the descending
order
• Set Sorting Order: Use this option to set the sorting order on the basis
of multiple columns. This menu option displays the Set Sort Order
dialog.
Filtering Results
To apply filters on the results, right-click a column header in the
Spreadsheet window. This displays the values of the column. Selecting
a particular value will display the rows having that column value.
To set multiple filters, right-click the required column header and select
In the Custom Filter window, you can select the Filter Criteria and set the
corresponding filter Value. To apply more than one filter, click the More
button on the top-right corner of the window. This inserts another row
to specify a new filter criteria and value.
You may choose to set the filter to match all or any of the specified
filter criteria by selecting Match all of the following or Match any of the
following options on the top of the window.
Setting filters enables you to view only those rows that match the
criteria specified in the Custom Filter window.
SpyGlass also provides the following filtering options in the right-click
menu of the column header of the Spreadsheet Viewer:
• (All): Use this menu option to display all the results of the particular
column and clears any filter criteria specified for that column.
• Custom: Use this menu option to set filter criteria on the results
displayed in the Spreadsheet Viewer. This menu option opens the
Custom Filter window.
• <column-values>: The column values <column-value1, column-
value2,...> are displayed in the context menu to filter the column on
the basis of the displayed value. You can select a particular column
value to filter the results based on that value. Note that only some of
the column values will be displayed on the context menu. To set
filter on the basis of other values of the column, select the (Other...)
menu option.
• Other: Use this menu option to set the filter on the basis of a
specified filter criteria and a corresponding value. This menu option
displays the Custom Filter window.
save graph as
Use this menu option to save the FSM graph in the PDF format. You
can use any PDF file viewer to view the saved FSM graph.
Selecting this menu option displays the selFile dialog as shown below:
Select the required directory and specify a filename in the filename field
to save the current FSM graph. Click the OK button.
zoom in
Use this menu option to zoom in the current FSM view.
You can also zoom in by pressing the <z> key on the keyboard.
zoom out
Use this menu option to zoom out from the current FSM view.
You can also zoom out by pressing the <Z> key on the keyboard.
zoom fit
Use this menu option to display the complete FSM graph of the current
design unit in the FSM Viewer window.
You can also zoom fit by pressing the <Ctrl>+<Z> key combination on
the keyboard.
quit
Use this menu option to close the FSM Viewer.
all labels on
Use this menu option to display the RTL description (labels) for all the
transition paths.
find node
Use this menu option to search for a node or label in the FSM Viewer.
Selecting this menu option displays the popup dialog as shown below:
Specify the node name or label that you want to find and click the OK
button. This displays the specified node or label in the FSM Viewer.
find such problems. To fix clock definition related problem you can
provide the correct definition of the clock in the constraint file.
• Other special ports: Ports such as test mode should be properly
constrained. By looking into the waveform signals, the failure may
be attributed to such signals.
• Initial state: A wrong initial state may cause a false violation.
Specifically, if registers are left free (not assigned to neither a “0”
nor “1”), then Auto-Verify will assign them to appropriate values to
make assertions fail. By looking into registers file report “.reg” file
and/or the waveform one can quickly determine if a violation is
caused by such un-initialized registers.
The above dialog is divided into two sections, Hidden Signals and Visible
Signals. To hide a signal, select that signal from the Visible Signals
section, and click the button. Similarly, to unhide a signal, click that
signal from the Hidden Signal section and click the button.
From the available list of signals, you can search for the required signal
to be hidden/unhidden. To do so, specify the search criteria in the Find
textbox and click the Next or All button. If you click the Next button,
SpyGlass highlights the first found signal that matches the search
criteria. You can again click the Next button to highlight the next
Option Description
Hide Selected Signal(s) Hides the selected signal(s)
Show Only These Displays only the selected signals in the Waveform
Signals(s) Viewer window and hides all the other signals
Expand Bus <-> Expands all the collapsed busses to its individual
Collapse Bus signals. Similarly, collapses all the signals into a bus.
Change Signal Color Changes the color of the selected signal. When you
select this menu option, SpyGlass displays the Color
dialog from which you can select the required color.
Change Signal Line Changes the appearance of the line (normal, dashed,
Type dotted, etc.) of the selected signal. When you select this
menu option, SpyGlass displays a sub-menu from
which you can select the desired line type (such as
Normal, Dash, Dot, Dash-Dot, etc.)
Change Signal Radix Changes the radix of the selected signal. When you
select this menu option, SpyGlass displays a sub-menu
from which you can select the required value (such as
hex, bin, dec, signed, real, etc.)
Fanin Loads the selected signal in the fanin cone of the
selected signal for which a waveform is available.
The fanin signals for the selected signal are highlighted
in the Schematic Viewerv/RTL viewer.
Fanin Cone Displays a complete set of signals in the fanin cone
Option Description
Fanout Loads the selected signal in the fanout cone of the
selected signal for which a waveform is available.
The fanout signals for the selected signal are
highlighted in the Schematic Viewerv/RTL viewer.
Fanout Cone Displays a complete set of signals in the fanout cone
Save Saves the current set of signals as the current filter
Save As Saves the current set of signals as a new filter
Overview
The SpyGlass Design Environment processes VHDL Only designs and
VHDL part of a Mixed-Language design using the VHDL-specific
settings.
This chapter describes how to:
• Specify a VHDL design to the SpyGlass Design Environment.
• Tell the SpyGlass Design Environment which version of VHDL you
are using.
• Use VHDL libraries.
• Tell the SpyGlass Design Environment the order in which the design
needs to be processed.
language you are using to develop your source code so it can run its
built-in tests properly.
To tell the SpyGlass Design Environment that you are running a VHDL
design:
1. Set the language to VHDL from the Language Tab of the Setup >
Run Options... menu option, if not already set.
2. Select the source files from the Setup > Source... menu option.
3. If you specify more than one source file, you need to select them in
the correct compilation sequence. Alternatively, you can let the
SpyGlass Design Environment sort the source files automatically by
setting the Automatically sort VHDL files (-sort) field in the VHDL Tab of
the Setup > Run Options... menu option.
See Determining and Setting Design Dependencies for more details.
2. Set the physical location of the library (using the Library Mapping
tab of the Setup > Library... menu option to set the logical to
physical mapping).
3. Specify the VHDL library files to be compiled using the Setup >
Source... menu option.
4. If your VHDL library files are fully debugged, there should be no
need to run SpyGlass rule-checks on them and you should un-select
all rules from the Setup > Policies/Rules/Parameters... menu option.
5. Click the Run button to compile.
Once compiled, the library can then be used in a normal SpyGlass
Analysis run.
NOTE: The VHDL library compiled with one version of SpyGlass may not be
compatible with another version of SpyGlass and may required to be
recompiled with the other version.
name from a library and they are brought together to top-level. In such
cases, only one library with that logical name can be used in the
top-level.
For example, consider two hierarchical blocks, IP1 and IP2, that use
the same package, PKG, as shown below:
IP1: IP2:
library L1; library L1;
use L1.PKG.all; use L1.PKG.all;
For IP1, the PKG package For IP2, the PKG package that has
totally different contents than the
is compiled into the physical location,
PKG package of IP1 is compiled
dir1, by using logical to physical into the physical location, dir2,
mapping, as shown below: by using logical to physical
-lib L1 ./dir1 mapping, as shown below:
-lib L1 ./dir2
The top-level design, TOP, has instances of IP1 and IP2. Now if you
want to specify logical to physical mapping for the L1 library, you can
specify only one mapping (that is, either L1 to dir1 or L1 to dir2),
as shown below:
-lib L1 ./dir1
In the above case, SpyGlass picks up only one package, that is, PKG
from IP1. However, the second PKG package is not available for IP2
in this case.
NOTE: As the contents of both the packages are different, the design is
incomplete.
Now in the TOP design, IP1 and IP2 are picked from the T1 and T2
libraries, as shown below:
Library T1;
Use T1.all;
Library T2;
Use T2.all;
In the above case, there is no reference to L1. Therefore, correct
packages are picked from IP1 and IP2 intermediate libraries, as
shown below:
-libmap T1 IP1
-lib IP1 ../dir1
-libmap T2 IP2
-lib IP2 ../dir2
NOTE: Please note the following points for the intermediate library support:
• Do NOT specify intermediate library name in the -libhdlfiles/
-libhdlf command, as shown in the following example:
-libmap L1 IP1
-lib IP1 ./P1
-libhdlfiles IP1 "case1.vhd case2.v"
Record Flattened
Element Bus Mapping
field1 sig1[2:0] sig1[2] <=> sig1.field1(2), sig1[0] <=> sig1.field1(0)
field2 sig1[3] sig1[3] <=> sig1.field2
field3 sig1[4] sig1[4] <=> sig1.field3
field4 sig1[7:5] sig1[7] <=> sig1.field4(0), sig1[5] <=> sig1.field4(2)
NOTE: Arrays with range defined as (n downto 0) or (0 to n) in
RTL maps to (0 to n) or (n downto 0) order at the flattened level.
type record_data_type is
record
data1 : std_logic;
data2 : std_logic_vector(7 downto 0);
data3 : simple_record;
end record;
// sig1.data3.data4
set_case_analysis -name sig1_data3_data4 -value 1
All record elements in the net-bundle are accessed using indices while
applying constraints.
The following example applies constraint on an array of record sig1
bits:
// Applying the set_case_analysis constraint on the
// record array sig1(0).data1
set_case_analysis -name sig1[0] -value 1
Overview
The SpyGlass Design Environment processes Verilog Only designs and
Verilog part of a Mixed-Language design using the Verilog-specific
settings.
This chapter covers the following topics:
• Specifying Verilog Design Files
• Defining the Verilog Version
• Working with Verilog Libraries
• Precompiled Verilog Library Support
• Specifying Verilog Libraries Using the 'uselib Statement
• Including Defined Macros
• Including Common and Global Code
• Specifying Compressed Verilog Designs
• Defining the top of a Dependency Tree
• Generate blocks
map the library’s logical name (the name used in your HDL design) to
its actual physical location (the directory where the compile library is
stored). You can do so using the -lib option.
--middle.vhd
entity middle is
end middle;
//bottom.v
module bottom;
endmodule
In this example, Verilog module top instantiates VHDL DU middle
that in turn instantiates Verilog module bottom.
To perform a multiple step compilation, follow these steps:
1. Compile the bottom.v file as follows:
spyglass -batch -verilog -enable_precompile_vlog \
bottom.v -work mylib1 -lib mylib1 ./MYLIB1
2. Compile the middle.vhd file as follows:
spyglass -batch -vhdl \
middle.vhd -work mylib1 -lib mylib1 ./MYLIB1
and resolved. Once the bottom.v file is analyzed, the DUs in the file
are also compiled and stored in the WORK library for future use.
• You can also compile and store all the DUs of the above example in
a single command as follows:
spyglass -batch -mixed -enable_precompile_vlog \
top.v middle.vhd -v bottom.v \
-work mylib1 -lib mylib1 ./mylib1
Then, all DUs are compiled and stored in the mylib1 directory.
Now, suppose you have used the pre-compiled module named top in
another design file named mytop.v. You can compile the complete
hierarchy as follows:
spyglass -batch -mixed -enable_precompile_vlog \
mytop.v -work mylib2 -lib mylib1 ./mylib1 \
-lib mylib2 ./mylib2
The above command would use the -lib mylib1 ./mylib1
part to find and bind the instantiation of the DU named top.
• It is not required to specify the -lib command-line option for
various parts of the sub-hierarchy. Instantiation information is
picked from the .dep file for each compiled DU.
NOTE: Also refer to the Handling BuiltIn Messages While Using Precompiled
Dump topic.
The architecture containing the foreign attribute will not be part of the
design hierarchy and hence will not be elaborated and synthesized in
case search for Verilog master is successful.
If you have not specified any Verilog library name, then SpyGlass
searches for Verilog master in current Verilog source files only.
Library... menu option to name the directories that contain these files.
The SpyGlass Design Environment first searches the current directory
for the 'include files. It then searches the directories specified by
the Include Dirs(+incdir) field in the Verilog Specific Options tab of Setup
> Library... menu option in the sequence in which you list them.
SpyGlass returns an error message and terminates if it cannot find all
the required 'include files in your directory structure.
When using this feature with relative pathnames, you cannot have
duplicate file names in the directory list. The file corresponding to the
second instance of the duplicate file name will never be read because
the SpyGlass Design Environment searches the directory structure until
it finds the first instance of the file and then stops.
Inferring Blackboxes
When SpyGlass analyzes a design containing ASIC cell instances or
instances of modules not defined in the source files, SpyGlass looks for
the corresponding cell or module definition in the associated Synopsys
Library (.lib file). For the instances where the corresponding cell or
module definition is found, SpyGlass inserts the correct port interface.
Port Direction
Net connected to the port is... is inferred as...
A hanging net or is also connected to an inout inout
port of a synthesizable module
Set at least once and may or may not be read input
Never set and is read at least once output
For each (actual) blackbox wrapper module, you should also inspect
parameter inferred because at least those many parameters have
been used for parameter value override at time of instantiation.
However, almost all existing SpyGlass Design Environment
functionality does not depend on use of these blackbox instance
parameter overrides. Hence, you can specifically look at the
parameter interface only if the parameters actually affect the port
size of some of the blackbox module ports.
Overview
The SpyGlass Design Environment provides the capability for handling
mixed-language designs which contain HDL description in both
Verilog and VHDL syntax. Such mixed-language description is read
and processed by the SpyGlass Design Environment in exactly the same
method that a Verilog Only design or a VHDL Only design is read and
processed by the SpyGlass Design Environment, subject to the changes
described in this chapter.
Example
Consider the following VHDL code (mixed.vhd) that results in the
WRN_405 violations:
-- pragma synthesis_off
-- synopsys translate_off
-- some VHDL code
-- synopsys translate_on
-- pragma synthesis_on
Notes
Please note the following points:
• As builtin messages may change across releases, you must
precompile your libraries for each release in which you want to use
the precompiled dump. This is because SpyGlass restores the builtin
messages of only those precompiled units that have been compiled
in the current version.
• If you want some policy-specific builtin checks to be reported on the
usage of precompiled design units, then during the RTL
precompilation step, you must set the value of the
AUTOENABLE_BUILTIN_CHECKS_FOR_POLICY configuration
key to an appropriate policy name in the spyglass.setup file.
for the rule are not reported during the precompiled dump usage if you
specify the -hdllibdu option.
Current Limitations
1. VHDL design units instantiated in a Verilog module cannot have
unconnected terminals in the port mapping.
2. Port mapping across language boundaries is case-sensitive.
3. In some designs, there can be multiple reporting of same SYNTH
and Elaboration errors.
4. Syntax errors are suppressed during synthesis of a Mixed-Language
design with 'define macro declaration of the following type:
'define macro(A,B,C) A|B|C
Overview
The SpyGlass Design Environment processes DEF designs using the
DEF-specific settings.
This chapter describes how to specify a DEF design to the SpyGlass
Design Environment.
You can specify the LEF files by using the -lef command line option
from the Other command line options field of Other Tab of Setup > Run
Options... menu option of the SpyGlass Design Environment.
NOTE: If you are analyzing a design containing DEF language constructs, you
also need to specify the -enable_pgnetlist option from the Other
command line options field of Other Tab of Setup > Run Options... menu
option of the SpyGlass Design Environment or on the command-line while
working in the batch mode. This option enables processing of post-layout
netlist files.
When working in the batch mode, to tell SpyGlass to analyze a design
saved in mydesign.def file using the gates libraries mygates1.lib and
mygates2.lib, enter:
spyglass -batch -def mydesign.def -lef mylef1.lef
-gateslib mygates1.lib -gateslib mygates2.lib
-policy=lowpower -enable_pgnetlist
You can also specify compressed LEF files and DEF that have been
generated by using the gzip utility, as shown in the following example:
spyglass -batch -def mydesign.def.gz -lef
mylef1.lef.gz
SpyGlass-x.y.z/SPYGLASS_HOME/auxi/target_libs/generic/
rtlc.prim.v and <your-inst-dir>/SpyGlass-x.y.z/
SPYGLASS_HOME/auxi/target_libs/generic/rtlc.prim.vhdl for Verilog and
VHDL cells respectively.
NOTE: If SpyGlass detects HDL syntax messages in your RTL design, it will
not synthesize your code and will not proceed to the second and third steps.
3. Synthesis converts your high-level circuit description into a
hierarchical netlist of generic gates. If you still need to do rule
checks that are best performed on a flat netlist (such as
synchronization logic, combinational loops, and reset rules),
SpyGlass runs a flattener on the hierarchical netlist. Checks in this
final step can include any form of netlist checking.
During the flat netlist rule-checking, empty top-level design units
are ignored as it serves no purpose to perform netlist-level rules on
empty design unit.
NOTE: SpyGlass reports how many bits of memory it finds in each module as
part of its standard runtime dialog. You can decide on a reasonable memory
limit after running one pass without using this feature.
We recommend that you define large memories in a separate module.
This allows SpyGlass to continue checking your design in greatest
detail, since if it encounters a large memory it black boxes that module
and has no impact on any other part of the design. This also makes it
easier to replace the RTL definition of a memory with an explicit array
if you’re using one for a particular ASIC.
Applicable for...
Whether
Synthesis Pragma Verilog VHDL interpreted?
translate_off/translate_on Yes Yes Yes
synthesis_off/synthesis_on No Yes Yes
analysis_off/analysis_on No Yes No
force_off/force_on No Yes No
dc_script_begin/dc_script_end Yes Yes No
full_case, parallel_case Yes NA Yes
state_vector Yes No No
enum Yes No Yes
template Yes No No
map_to_module Yes No No
return_port_name Yes No No
resource Yes No No
but not for analysis. Thus, SpyGlass will run syntax checking and RTL
Description-level rules on the design code block. However, if you
supply the -hdlin_translate_off_skip_text command-line option from
the Other command line options field of Other Tab of Setup > Run
Options... menu option, the design code block lines are assumed to be
comment lines and even syntax checking and RTL Description-level
rules will not be performed.
The -hdlin_translate_off_skip_text option has no effect
on the interpretation of Synopsys synthesis_off/
synthesis_on pragmas.
For Verilog designs, SpyGlass ignores the design code between
Synopsys translate_off/translate_on pragmas for synthesis
as well as analysis.
This mode is the multiple message selection and display mode that
was existing up to SpyGlass 3.4.0.
NOTE: When you change the selection of the Auxiliary Message Display Mode
field in the Misc Page of the Tools > Preferences menu option, the all selected
probes/messages are removed.
NOTE: These modes are not applicable for RTL-type messages as they have
no associated schematic data.
wise as well as default limit. The individual rule limit supersedes the
default limit, if specified.
Waiving Messages
If a particular message does not represent a serious problem, you may
want to mask the corresponding message.
To waive messages, you can use one or both of the following features:
• Use the waive keywords in a design constraints file to waive
messages for source files, design units etc. See Waiving Messages
Using the SpyGlass waive Constraint for more details.
• Use the embedded SpyGlass waiver pragmas to waive messages for
design code blocks. See Waiving Messages using SpyGlass Pragmas
for more details.
Using the waive constraint is the preferred method as this approach
does not affect the source files. The waivers are written in a separate
file and can be used with modified source files as long as the
modifications do not invalidate the design constraints. However, you
have to use the embedded SpyGlass waiver pragmas if you need to
waive messages at any level below the design unit level in the source
file.
<keyword> ::=
ALL | ALL_INFO | ALL_WRN | ALL_ELAB
| ALL_SYNTHERR | ALL_SYNTHWRN
Where:
<file-list> is a space-separated list of source file names.
<file-line> is a space-separated pair of source file name and line
number in the following format:
<file-name> <line-num>
<file-sline-eline> is a space-separated tuple of source file name,
start line number, and end line number in the following format:
Explanation of Arguments
Use the -file argument to waive all messages for the specified files.
Use the -file_line argument to waive the rule messages for a
particular line of a source file.
Use the -file_lineblock argument to waive the rule messages for
a block of lines in a source file.
Use the -du argument to waive the rule messages for the specified
design units or all design units in the specified library.
Use the -ip argument to waive the rule messages for the specified
design units (IP blocks) including the ones which are below its
hierarchy or all design units in the specified IP library.
When you specify a design unit name in the -du or -ip fields, the
comments specified above a module/entity definition are also included
in the span of the module/entity, and violations reported on these lines
are waived. This holds true for use clauses in VHDL. In addition,
violations reported on packages used by entity specified in -du or -ip
fields also get waived.
NOTE: To determine whether a violation belongs to the IP block, SpyGlass
uses the following two criteria:
• If violation highlights schematic, violation is assumed to belong to the IP
block if the whole highlighted data lies completely inside the IP block.
• If violation does not highlight schematic, violation is assumed to belong to
the IP block if the file and line on which the violation is reported belongs to
the IP block.
Use the -rule/-rules argument to waive messages of the specified
rules, rule groups, or policies or by rule type keywords.
Use the -except argument to exclude the specified rules, rule groups,
or policies or by rule type keywords from the scope of the waive
constraint.
Use the -msg argument to waive a message.
NOTE: The message waived in the last release may change in the current
release because of which the waiver file of the last release becomes
incompatible for use in the current release. To make it compatible in the current
release, use the -gen_compat_waiver command-line switch. For more
details on this switch, see the Application Note, Generating Compatible
Waivers.
NOTE: It is higly recommended to use the -rule option in all waive
commands as it improves the runtime of applying that waive command. Also,
the -gen_compat_waiver utility gives better results when -rule
option is specified.
Notes
Please note the following while using the SpyGlass waive Constraints:
Use To waive
ALL_INFO All the analyzer (language) info messages
ALL_WRN All the analyzer (language) warning messages
ALL_ELAB All elaboration messages
ALL_SYNTHERR All synthesis error messages
ALL_SYNTHWRN All synthesis warning messages
ALL All of the above plus all rule messages
NOTE: You can waive all types of built-in rules except the built-in STX error
rules as these rules are mandatory checks.
NOTE: If you specify the ALL keyword, then all (built-in and rule)
messages will be waived for files and/or design units for which it is
specified.
NOTE: You cannot waive policy rules of severity class FATAL.
Please note that all keywords are case-sensitive. You can also
provide a combination of these keywords to waive messages of more
than one type.
10.For waive constraint, all the occurrences of multiple consecutive
spaces (spaces or tabs) between message words are reduced to just
one space. Hence, you are advised not to adopt such messaging.
Also, messages that extend to two or more lines cannot be waived.
11.While using the waive constraint to waive messages, you must
enclose the exact message in double quotes, q/.../, or m/.../
depending on whether you want the string to be interpreted as a
wildcard, literally, or as a regular expression respectively.
12.To get the exact message string for the -msg argument of the
waive constraint, run a SpyGlass Analysis that will generate that
message. Then, open the Violation Database file in any ASCII text
editor and copy the exact message string. Enclose the whole
Database.
You can use the disable_block and enable_block pragmas to
disable and enable rules, as given below:
//spyglass disable_block R1
...
...<cmd>
...
//spyglass enable_block R1
Here, SpyGlass disables rule checking for the rule, R1, in the lines after
//spyglass disable_block R1. However, SpyGlass resumes
rule checking for the rule, R1, in the lines after
//spyglass enable_block R1 is specified. Here, <cmd> will
continue to work, if specified correctly, irrespective of the pragmas.
You can also use # instead of // while specifying the
disable_block and enable_block pragmas. For example:
#spyglass disable_block R1
...
...
#spyglass enable_block R1
The disable_block and enable_block pragmas can be nested.
However, the scope of the pragmas depends upon the way they have
been specified. For example:
...
rule1 active
//spyglass disable_block rule1
... rule1 waived
//spyglass disable_block rule1
... rule1 still waived
//spyglass enable_block rule1
... rule1 still waived
//spyglass enable_block rule1
rule1 active
...
You can also specify a comma-separated list of rule names or the name
of the rule group, as shown in the following examples:
• //spyglass disable_block R1,R2
Where, R1 and R2 are the rules to be waived
• //spyglass disable_block R1,G1
Where, G1 is the rule group name. In this case, all the rules
belonging to this group will get waived.
You can use the ALL keyword to waive messages of all the rules. After
specifying ALL keyword in the disable_block pragma, you cannot
explicitly turn on a particular rule by specifying that rule name in the
enable_block pragma. For example:
//spyglass disable_block ALL
...
//spyglass enable_block R1
...
Here, rule checking for R1 will still remain off. In this case, you need
to use //spyglass enable_block ALL to enable rule checking
of all the rules.
You can create a top-level waiver file, say, top.swl that contains the
above mentioned waive commands. Creating the top.swl file serves the
following purposes.
• You have to specify just one waiver file on command line instead of
multiple waiver files (waive_designblkA.swl,
waive_designblkB.swl and so on)
• SpyGlass will process the waive commands of the file
waive_designblkA.swl only if i designblkA is instantiated in
the design hierarchy of the current run. SpyGlass processes the other
import commands in a similar manner.
Additional Information
Please note the following about the waive -import constraint:
• SpyGlass also supports nested imports of waiver files, that is, one
import command can be specified inside another import
command, as shown below:
top.swl: waive -import b1 b1.swl
b1.swl: waive -import b2 b2.swl
b2.swl: waive -file test.v
NOTE: All the waiver files to be imported (b1.swl and b2.swl in the above
example) should be accessible from the current working directory.
• The -disable argument is also supported with the waive
-import constraint, as shown below:
waive -import b1 b1.swl -disable
The above specification will disable the waive -import
command.
NOTE: Only the -disable and -comment arguments are supported
with waive -import constraint. No other argument is supported with
waive -import constraint.
• File names in the imported waive -file/file_line/
file_lineblock command are converted to file names
matching under the hierarchy of the block being imported. This is to
ensure that the migration is done for and according to the block
being imported.
• If the -ip/-du fields are regular expressions in the waive
command to be imported, then the regular expressions are converted
to names matching under the block hierarchy only. This is to ensure
that the regular expressions do not match any name outside the block
hierarchy.
• It may happen that a block-level waiver file is written in an older
version of SpyGlass release, and the top-level designer importing
...
--spyglass enable_block <rule-list> | ALL | $VAR
...
(See VHDL Example of Using Waiver Pragmas for a Block of Code)
where <rule-list> is a space-separated list of rule names or rule
group names for which the messages are to be waived. Using the ALL
keyword waives all messages of all rules for the block of source code.
Using the $VAR variable name waives messages for the rules defined in
a variable using the -waiver command-line option.
Code)
for VHDL:
<design-line> --spyglass disable <rule-list> | ALL
(See VHDL Example of Using Waiver Pragmas for Single Line of
Code)
Where <rule-list> is a space-separated list of rule names or rule
group names for which the messages are to be waived for the single
line of source code. Using the ALL keyword waives all messages of all
rules for the single line of source code.
...
rule1 active
//spyglass disable_block rule1
... rule1 waived
//spyglass disable_block rule1
... rule1 still waived
//spyglass enable_block rule1
... rule1 still waived
//spyglass enable_block rule1
rule1 active
...
Similarly, if you have waived for a rule group, you can selectively
activate the rules in the rule group in the same manner.
NOTE: You can not selectively activate a rule for a source code block that has
been waived using the ALL keyword.
entity top is
end top;
architecture rtl of top is
signal s1 : bit_vector( 2 downto 0);
signal s2 : bit_vector( 3 downto 0);
signal s3 : boolean;
begin
process
begin
case s1 <= s2 is --spyglass disable W116
when TRUE => s3 <= (s2 = s1);
when others => null;
end case;
end process;
end rtl;
For VHDL
Use // to insert a comment in pragma line for VHDL code, as shown
in the following example:
case s1 <= s2 is --spyglass disable W116 //This is a comment
For Verilog
Use - to insert a comment in pragma line for Verilog code, as shown in
the following example:
if (data <= (a[1] + b[2]) ) //spyglass disable W362 -This is comment
see a warning that the size of an expression does not match the size of
the object to which it is assigned, you may decide that this is known but
not important. On the other hand, you may realize that due to this
problem, a value may be truncated or extended where no such
modification was expected.
NOTE: You can limit the number of WRN messages logged in the Violation
Database as described in Waiving Messages.
Overview
The Atrenta® SpyGlass® Predictive Analyzer supports large, multi-
million gate designs by automatically choosing the optimal level of
system sources to use as well as providing manual control of the run
flow to control peak resource usage.
Rule Categorization
SpyGlass categorizes rules in the following categories:
1. Rules that works on RTL description only and thus, require only the
RTL view of the design
2. Rules that works on Netlists only and thus, require only the Netlist
view of the design
3. Rules that works on both RTL description and netlist and thus,
require both RTL view and the Netlist view of the design
Rules designed for earlier versions of SpyGlass are assumed to work on
both RTL description and netlist and thus, require both RTL view and
the Netlist view of the design.
Depending on the type of rules you are running, SpyGlass controls the
Views in the memory.
FIGURE 1. An illustration of design hierarchy for use of Top-Level and Stop Features
A*
SpyGlass
Processing Verilog design VHDL design
Design Input All design files should be specified at command-line as before. The whole
design should not contain any Syntax Errors. Although SpyGlass may try to
skip syntax error in design units outside the specified top-level design unit
hierarchy, such behavior cannot be guaranteed and is discouraged.
Design Analysis Syntax errors and warnings are Analysis of all VHDL design units is
reported in design hierarchy within performed, and hence VHDL Syntax
the specified top design unit(s) only. errors are reported for all design
Such semantics is compatible with units.
use of the +topmodule option The reasoning for such behavior is
in other Verilog tools. that Top-Level feature in VHDL
design is processed during
elaboration stage and hence
requires analysis of full VHDL
design.
Design Elaboration - VHDL design elaboration is done
starting at design unit specified with
the Top-Level feature.
This step determines the exact
design hierarchy under the specified
‘top’ design unit, and takes care of
binding as per the VHDL language
requirements.
SpyGlass
Processing Verilog design VHDL design
Design Unit list of RTL This list is computed based on This list is computed from VHDL
rule-checking Verilog Object Model created after elaboration of specified design unit.
use of Top-Level feature at Verilog All SpyGlass rules are checked on
analysis time. this list, excluding VHDL language
All SpyGlass rule (excluding Verilog syntax error and semantic error or
language syntax error) are checked warnings.
on this list.
Design units for The design synthesis is performed for design units under specified (Top-
hierarchical and flat Level) design units only. Hence, the netlist rules are checked on such
netlist rule checks design units only.
Lexical Rules Lexical rules are checked on input Verilog or VHDL design source. The list
of RTL modules falling within specified design hierarchy is passed to lexical
rules. Hence, rule-check within design unit (or module) boundary is
restricted to specified design units only. However, for HDL code not within
any design unit, the rule-checking shall depend on the nature of lexical rule.
Also, note that working of the Stop feature is closely linked with the
Top-Level feature, and hence VHDL language syntax error and
semantic error or warning would be reported on the design units
specified with the Stop feature as well.
Summary
The following main points are expected to be clearly conveyed
regarding use of any of above features:
• The options for hierarchical inclusion/exclusion of design units are
the Top-Level and Stop features. These options cannot be used
simultaneously with the equivalent Design Unit feature, which is for
immediate analysis of specified design units.
• Syntax error in design source may not be fully controlled by use of
these options. The design is expected to be free from syntax and
Overview
The Atrenta® SpyGlass® Predictive Analyzer supports design
constraints concept to supply additional design information which is not
apparent in the RTL description. For example, the SpyGlass Clock-
Reset policy requires you to specify the names of the clock nets to be
checked. While SpyGlass can infer clocks in the design, you may want
to restrict the analysis to only a handful of clocks or add other clocks
that could not be inferred. In DFT policy, most of the rules work in
testmode where a testmode signal needs to be set for the design to be in
testmode.
Currently, the following Atrenta standard policies use SpyGlass Design
Constraints:
Clock-Reset Constraints DFT ERC LogicVision Latch
LowPower STARC STARC2002 STARC2005
All such information that is not evident from the RTL description can
be supplied using the SpyGlass Design Constraint directives that are
written in a file and specified using the Setup > Source... menu option
of the SpyGlass Design Environment or using the -sgdc command-line
option.
NOTE: The earlier method of supplying design constraints using embedded
design pragmas is still supported for backward compatibility. However, you are
strongly recommended to use the Design Constraints file method that is
superior. If both the design constraints file and embedded design pragmas are
specified, SpyGlass uses the design constraints file only and ignores the
embedded design pragmas. Similarly, if you have not specified a design
constraints file but have embedded design pragmas in the source code,
SpyGlass reads these pragmas and creates a design constraints file named
pragma2constraints.sgdc (in the <vdbname>_spysch/constraints directory
where <vdbname> is the name of the Violation Database file [default name
is spyglass) containing equivalent constraints.
For primary ports, you can also specify the simple port name as in
the following example:
current_design top
set_case_analysis -name in15 -value 1
Or
voltage_domain
...
-isosig top.isig1 -isosig top.isig2
...
Further, when two arguments of the same constraint has inter-
dependency, you must specify the exact matching number of values
with each argument. For example, the -isosig argument and the
-isoval argument of the voltage_domain constraint of
SpyGlass LowPower policy are inter-dependent which can be specified
as in the following examples:
voltage_domain
...
-isosig top.isig1 top.isig2
-isoval 0 1
...
Or
voltage_domain
...
-isosig top.isig1 -isosig top.isig2
-isoval 0 -isoval 1
...
Or
voltage_domain
...
-isosig top.isig1 -isosig top.isig2
-isoval 0 1
...
As seen from the last example, the style used in one argument can be
different from the style used in the other (inter-dependent) argument.
NOTE: Purpose and function of each design constraint keyword is policy-
specific and is described in the policy rules reference document of the
respective policy where the design constraint can be used. For example, the
SpyGlass Clock-Reset policy uses the clock and reset design constraint
keywords (besides many other design constraint keywords) and the SpyGlass
Clock-Reset Rules Reference describes how these design constraints are
used for the policy. In addition, a policy can have its own policy-specific design
constraint keywords.
NOTE: Application of a design constraint keyword may be different in different
policies. For example, the -domain argument of the clock design
constraint keyword is important when used with the SpyGlass Clock-Reset
policy but is ignored when used with SpyGlass DFT policy. Similar, the
-testclock argument is important in SpyGlass DFT policy but is ignored
by the SpyGlass Clock-Reset policy.
design unit and all the constraints related to that top-level design unit
must follow the corresponding current_design line.
You can specify more than one current_design line for each
design unit.
Thus, when the design has two top-level design units, then there must
be corresponding entries for each design unit in the design constraints
file as in the following example:
current_design B1
clock -testclock -name tclk1 -value rtz
test_mode -name tm1 -value 1
current_design B2
clock -testclock -name tclk2 -value rto
test_mode -name tm2 -value 0
current_design B1
clock -testclock -name tclk3 -value rto
Here, there are two current_design lines for design unit B1 that
specify two clocks (tclk1 and tclk3) and one testmode (tm1).
You can specify more than one current_design blocks for one
design unit.
When you are specifying a configuration name with the
current_design keyword, you should ensure that the specified
configuration is not present in multiple precompiled libraries. In such a
case, avoid using the configuration name; instead use
<entity-name>.<arch-name> for which the intended
configuration is defined.
NOTE: For multi-architecture VHDL designs, use the
<entity-name>.<arch-name> format only to specify the
current_design when analyzing with the -hdllibdu command-line
option specified.
If the design unit specified in current_design is not a top-level
...
set_hsep @
current_design top
clock -name top@clk1 ...
...
Defining Variables
To define a variable in a SpyGlass Design Constraints file, use the
following syntax:
setvar <var-name> <var-value>
Where <var-name> is the name of the variable and <var-value>
is the value of the variable.
Please note the following:
• Only one variable can be defined per line.
• A variable definition can be spanned over multiple lines using the
backslash continuation character.
• There is no = or := between variable name and its value, to keep it
consistent with Tcl format.
• Variable names must start with an alphabet and can contain
alphabets, numerals, and underscore characters.
• Variable names are case-sensitive. Thus, xyz and XYZ are different
variables.
• The variable value can be any string consisting of one or more
words. Multi-word values must be enclosed within double quotes.
mode:
• clock validation: checks whether the top-level clocks reach the
block clock ports
• clock domain validation: checks whether the top-level clocks
connected to the block clock ports comply with the block-level
domain specifications
If any discrepancy is found in the above mentioned checks, then
SpyGlass will report violations appropriately. You then need to correct
the chip-level specifications for clock.
After correcting the chip-level specification, you need to re-run the
validation step with the new specifications, and if there are no
violations reported, you can use the final SGDC file in the subsequent
chip-level analysis.
NOTE: The sgdc -import command should be used only in the -
gen_hiersgdc and -validate_hiersgdc flow. It should not be used in the normal
SpyGlass run.
In the above specification, let's say there are two instances of M, namely
top.mi1 and top.I1.mi2. Then, the wildcard specification will
first expand to -name "top.mi1.*.net
top.I1.mi2.*.net". Now, the following cases may arise:
• If -name is registered with --wildcard or
--wildcard_inline_expand, then '*' will match to one level
of hierarchy. For example, it will match to top.mi1.L3I1.net
and top.I1.mi2.L4I1.net and NOT to
top.mi1.L3I1.L4I1.net.
• If -name is registered with --wildcard_support or
--wildcard_support_full, the wildcard expression will be
left as it is for the policy to handle it.
NOTE: The options, --wildcard_support and
--wildcard_support_full mean that '*' is expected to match
multiple levels of hierarchy i.e., it should also match
top.mi1.L3I1.L4I1.net. Kernel does not provides this support
and therefore, such specifications are currently handled by policies
themselves.
me> "
Please note the following points:
• The interface port is named as escape name, and therefore, it
should end with a space.
• The naming convention for interface port will be changed in
Spyglass 4.4 release to SDC compatible name, that is,
"<interface-instance-name>_<interface-port-
name>".
• Handling SystemVerilog interface containing a modport
Consider the following example in which a SystemVerilog interface
referred in SGDC contains a modport:
interface intf;
wire z_intf,a_intf;
modport M1 (output z_intf, input a_intf);
modport M2 (output a_intf, input z_intf);
endinterface
module top;
intf i1();
intf i2();
top_low T1(i1.M1,i2.M2);
endmodule
module top_low(intf.M1 inst1, intf.M2 inst2);
wire inst1_z_intf, inst2_a_intf;
assign inst1_z_intf = inst2_a_intf;
mid M1(inst1.z_intf,inst1.a_intf);
mid M2(inst2.a_intf,inst2.z_intf);
endmodule
module mid(output z, input a);
assign z = ~a;
endmodule
current_design top
test_mode -name "top.T1.\inst1.z_intf " -value 1
test_mode -name "top.T1.\inst2.a_intf " -value 0
Here, the modport interface port is named as
"\<interface-instance-name>.<interface-port-na
me> ".
NOTE: The naming convention for modport interface port would be
changed in Spyglass release 4.4 to SDC compatible name, that is,
"<interface_instance_name>_<interface_port_name>".
• Handling SV structure or union
For SV structure or union or for the cases in which a net is declared
with these complex types, you should specify the SGDC constraints
on the flattened bus (with size equal to structure or union size) as
follows:
typedef struct packed {
logic [1:0] data_sel;
logic [1:0] ctl_sel;
} selects_t;
//above structure size = data_sel size + ctl_sel
size=2
// + 2 = 4
module index_test
(input selects_t selects,
input logic [3:0][15:0] data_in,
output logic [3:0][15:0] data_out);
always_comb begin
data_out[0] = data_in[ selects.data_sel[1] ];
data_out[1] = data_in[ selects.data_sel[0] ];
data_out[2] = data_in[ selects.ctl_sel[1] ];
data_out[3] = data_in[ selects.ctl_sel[0] ]; end
endmodule : index_test
For the above example, you can specify SGDC constraints for the
instance, m1, and wire, w1, inside for-generate, as given below:
current_design test
test_mode -name "\genblk1[0].genblk1[0].m1 .a"
-value 1
test_mode -name "\genblk1[0].genblk1[1].m1 .a"
-value 1
test_mode -name "\genblk1[1].genblk1[0].m1 .a"
-value 1
test_mode -name "\genblk1[1].genblk1[1].m1 .a"
-value 1
test_mode -name "\genblk1[0].w1 " -value 1
Auto-VerifyPolicy
clock reset define_tag
set_case_analysis special_module breakpoint
watchpoint
Clock-Reset Policy
assume_path breakpoint cdc_false_path
cdc_filter_path clock deltacheck_stop_instance
define_tag deltacheck_ignore_instance deltacheck_ignore_module
deltacheck_start deltacheck_stop_module deltacheck_stop_signal
fifo input ip_block
network_allowed_cells noclockcell_start noclockcell_stop_instance
noclockcell_stop_module noclockcell_stop_signal noclockcell_stop_instance
noclockcell_stop_module noclockcell_stop_signal num_flops
output output_not_used port_time_delay
reset set_case_analysis signal_in_domain
watchpoint quasi_static define_reset_order
allow_combo_logic
Constraints Policy
DFT Policy
balanced_clock bypass clock
clock_gating_cell clock_pin force_ta
initialize_for_bist initialize_for_bist
memory_read_pin memory_type memory_force
memory_write_pin module_bypass memory_write_disable
nofault no_scan module_pin
pullup require_path pulldown
reset -async reset_pin require_value
scan_chain scan_ratio scan
scan_wrap seq_atpg set_pin
shadow_ratio test_mode test_point
gating_cell tie_x dbist
tristate_cell
DFT-DSM Policy
clock clockgating clock_root
false_path pll reset
test_mode testclock_frequency clock_shaper
gating_cell expect_frequency complex_cell
ERC Policy
set_case_analysis clock reset
set
Latch Policy
assume_path set_case_analysis
LowPower Policy
always_on_cell always_on_pin always_on_buffer
aon_buffered_signals antenna_cell cell_hookup
clock ignore_crossing input_isocell
isolation_cell levelshifter assertion_signal
multivt_lib non_pd_inputcells power_down_sequence
domain_signal pg_cell pg_pins_naming
pin_voltage power_down domain_inputs
domain_outputs power_switch power_state
ram_instance ram_switch retention_instance
retention_cell set_case_analysis cell_pin_info
cell_tie_class special_cell supply
switchoff_wrapper_instance voltage_domain power_data
OpenMore Policy
set_case_analysis
STARC Policy
set_case_analysis test_mode
STARC2002 Policy
test_mode
STARC2005 Policy
test_mode
STARCAD21 Policy
test_mode
Txv Policy
initstate quasi_static reset
simulation_data
Balloon View
When you point the mouse on the Design option, the balloon window
displays the following:
• Total number of blackboxes in the design
• Total number of latches in the design
• Total number of flip-flops in the design
Detailed View
When you click the Design option, the Design Information dialog
appears as shown below.
Click the Registers tab to view the information about the modules,
latches and flip-flops present in the design. Double-click a module to
highlight the module in the Design View Page.
To view the blackbox information click the blackbox tab. See Viewing
Blackbox Informationfor more details.
Balloon View
When you point the mouse on the Clock-Reset option, the balloon
window displays the total number of unsynchronized clocks, resets,
and clock domains.
Detailed View
When you click the Clock-Reset option, the Clock Information dialog
Balloon View
When you point the mouse on the Constraints option, the balloon
window displays the total number SDC and SGDC files.
Detailed View
When you click the Constraints option, the constraints files are
displayed on the Constraints View Page of The File/Design/
Constraints/Instances Window.
Balloon View
When you point the mouse on the TXV option, the balloon window
displays the following in a tabular format:
• False paths and multi-cycle paths declared as passed
• False paths and multi-cycle paths declared as failed
• False paths and multi-cycle paths declared as incomplete
• False paths and multi-cycle paths declared as inconclusive
Detailed View
When you click the TXV option, then the false paths and multi-cycle
paths are displayed in the tree format having two parent nodes; one for
the false paths and the other for the multi-cycle paths as shown below:
The False Path and Multi-cycle Path nodes are further categorized into
Passed, Failed, Incomplete, and Inconclusive sub-nodes that contain
the violation messages.
Balloon View
When you point the mouse on the DFT option, the balloon window
displays the test coverage and fault coverage for the top modules
Detailed View
When you click the DFT option, the DFT Information dialog is
displayed as follows:
Balloon View
When you point the mouse on the Power option, the balloon window
displays the estimated power consumption and power savings.
Detailed View
When you click the Power option, then the Power Information window
appears as shown below:
Wildcard Mode
The wildcard mode is the default mode. A string is treated as a wildcard
if it includes an * (asterisk) or ? (question mark). However, if the
characters * and ? are escaped (prefixed with \ (backslash)), then they
are treated as literals. For example, \?, \*, and \\ are treated as ?, *, and
\ respectively.
All other characters are treated as normal strings.
NOTE: Earlier, [] (square brackets) were treated as wildcards. However, now,
square brackets are treated as literals.
NOTE: Interpretation of * and ? is similar for escaped design names as well.
For example, if you want to specify a design object, '\abc* ', then you must
specify it as '\abc\* '. On the other hand, if you want to specify all design
objects whose names start with '\abc' then you need to write '\abc* '
(Verilog only) or '\abc*\' (VHDL only).
A few parameters (examples taken from clock-reset policy) which
support wildcards:
• synchronize_cells
• synchronize_data_cells
• clock_gate_cell
• glitch_protect_cell
• reset_synchronize_cell
Constraint Policy
memory_ype DFT
require_path DFT
test_mode DFT
clock_gating_cell DFT
power_down_sequence lowpower
domain_outputs lowpower
Some SGDC commands do not support wildcards in escaped
identifiers, e.g., 'fifo' and 'input' SGDC commands of Clock-Reset
policy. Out of such commands, some accept '*' or '?' only at the end of
the identifier, e.g., 'powerdomainoutputs' SGDC command of
LowPower policy.
For a complete list of constraints and parameters supporting wildcards,
please refer to the respective policy documentation.
Normal Mode
A string that is prefixed with q/ and terminated with / is treated literally,
that is, if a string contains *, ?, or \, it will be treated literally. The
delimiters explained in the Regular Expression Mode can also be used
in place of /.
If a string does not contain a escaped *, ?, or \ , it is treated as a
wildcard string. To make a string containing * or ? or a \ to be treated as
a normal string, you need to escape the *, ?, or \ characters or prefix the
string with q/ and terminate it with /.
Hierarchy Separator
All character except the following are treated as hierarchy separators in
a hierarchy string:
• Any alpha numeric character
• $ (dollar)
• _ (underscore)
• [ (opening square bracket)
• ] (closing square bracket)
• : (colon)
• \ (backslash)
The hierarchy string contains only one hierarchy separator, that is, the
first character that is not from the above set is taken as the hierarchy
separator and the rest of the string is treated by using this character as
hierarchy separator.
NOTE: For files and directory type objects, / is the only hierarchy separator.
NOTE: Pattern matching when used in a hierarchy, matches only a single
hierarchy. This holds true for all objects, such as design objects (net, port,
instance, terminals and so on), files, and directories that use pattern matching.
The DFT debug data for a terminal includes information, such as the
simulation value in the shift and capture modes, controllability,
blocked path due to the terminal in shift mode (BPShift), and
blocked path due to the terminal in the capture mode (BPCapture).
6. To view the DFT debug data for an instance, right-click the instance
and select the Show Debug Data-> DFT menu option from the context
menu. This displays the DFT Debug Data window, as shown in the
following figure:
Design Design
Rule Type Reparsing Re-synthesis Runtime Improvement
Rule Type 1: Rules that work on the No No Maximum
synthesized netlist view or the
flattened netlist view (most of the
rules in the Advanced Policies and
the Clock-Reset Policy)
Rule Type 2: Rules that work only on Yes No Not applicable as
the RTL view (most of the rules in the synthesized design view
Base Policies except the Clock- is not used by rules of this
Reset Policy) type.
Rule Type 3: Rules that work on the Yes Yes No change as the
synthesized netlist view or the behavior is as if the
flattened netlist view but require RTL Design Save-Restore is
information (some rules in base not enabled.
policies and advanced policies)
During a SpyGlass run in the design restore mode, SpyGlass runs the
rules of Rule Type 1 on the restored design view. However, SpyGlass
flags the WARNING [238] message listing the rules of Rule Type 3, if
selected to run and disables the design restore mode (since the design
restore is not possible for such rules.) Similarly, SpyGlass flags the
WARNING [237] message listing the rules of Rule Type 2, if selected
to run and disables these rules.
NOTE: SpyGlass only reports rules of Rule Type 3, if present and does not
additionally reports the rules of Rule Type 2 since design restore is disabled
and the limitation of Rule Type 2 is no longer applicable.
By default, the design view is saved under directory named
spyglass.db under the current working directory. You can specify a
different directory/location.
You can also force a design save during an analysis run. For example,
you would want to re-save the design view when you want to run
another set of policies and/or a different set of analysis options. Also,
you are required to re-save the design view when it was created with an
earlier version of SpyGlass. Design restore does not work in such
cases.
You can use the saved design view even when you have changed the
source files. However, the message back-annotation may not be correct
in this case.
Licensing Requirements
During design save, SpyGlass requires the licenses for all policies
being run and for policies that are additionally specified using the
-savepolicy command-line option.
During design restore, SpyGlass requires the licenses for only those
policies being run.
However, during the restore run, SpyGlass does not display these
messages. To view these messages, specify the -
enable_save_restore_builtin option along with the
-enable_save_restore option during the restore run.
To see parsing messages on design units picked from the precompiled
dump during design save, you should specify the -hdllibdu option (if
precompiled dump is not encrypted in which case, the -
disable_encrypted_hdl_checks option, if present, should be removed).
Messages on precompiled dump are restored if the dump was created
with the -dump_precompile_builtin option.
If you do not specify the -enable_save_restore_builtin
option, SpyGlass reports a message to indicate that builtin messages are
not restored as the corresponding option is not specified.
SpyGlass will not display that message during the restore run even if
you have specified the -enable_save_restore_builtin option.
In such cases, you need to forcefully save the database again by using
the -addrules option to make that message available in the restore
run. If you do not save the database forcefully, SpyGlass reports a
message in the restore run to indicate that the specified builtin message
has actually not run in the restore run and the user needs to save the
database again by using -force_save option with this builtin enabled.
If you disable a builtin rule during the restore run by using the -
ignorerules option, but that rule was enabled during the save run,
messages of such rules are not displayed during the restore run if you
specify the -enable_save_restore_builtin option.
The following table describes the impact of -addrules/
-ignorerules options on builtin messages during save-restore
runs:
parsing and/or re-synthesis may be required. You can skip such rules by
specifying the -skip_rules_for_fast_restore command-
line option along with the -enable_save_restore command-line
option.
NOTE: Please refer the Known Problems and Solutions document for the
current issues and limitations of the Design Save/Restore feature.
NOTE: The Auto_Verify policy does not support for the Design Save/Restore
feature.
You can also combine the above two methods and specify them as a
single command-line option. For example, you can specify the libraries
mylib1.lib, mylib2.lib, and mylib3.lib as follows:
spyglass_lc -gateslib “mylib1.lib mylib2.lib” \
–gateslib mylib3.lib
Then, the SpyGlass Library Compiler creates one consolidated
SpyGlass-compatible format library file named as aggregate_lib.sglib.
You can also specify a different name for the consolidated SpyGlass-
compatible format library file using the -outsglib command-line
option as in the following example:
spyglass_lc -gateslib mylib1.lib -gateslib mylib2.lib
-outsglib myMergedLib
• Verilog
Re-run the SpyGlass Library Compiler specifying the Verilog RTL
description files directly, using the -v/-y/+libext command-line
option, or using the -lib command-line option as follows:
spyglass_lc -gateslib <libfile-name>
<vlog-file-name>
or
spyglass_lc -gateslib <libfile-name>
-v <vlog-file-name>
or
spyglass_lc -gateslib <libfile-name>
-lib <logical-lib-name> <physical-lib-name>
You can also specify any combination of the above options.
• VHDL
Re-run the SpyGlass Library Compiler specifying the VHDL RTL
description files directly or using the -lib command-line option as
follows:
spyglass_lc -gateslib <libfile-name> <rtl-file-name>
or
spyglass_lc -gateslib <libfile-name>
-lib <logical-lib-name> <physical-lib-name>
You can also specify any combination of the above options.
• Mixed-Language
Re-run the SpyGlass Library Compiler specifying the Verilog and
VHDL RTL description files directly (for both Verilog and VHDL),
using the -v/-y/+libext command-line option (for Verilog), or
using the -lib command-line option (for both Verilog and VHDL).
In this case, the SpyGlass Library Compiler searches for cell
descriptions first in the Verilog domain, then in the VHDL domain,
and lastly in the gates library files.
This step generates the functional view from the RTL description in to
the SpyGlass-compatible format library file for the corresponding cells.
You can overwrite the functional view of any gate cell using the
procedure described above.
In case, the functional description for a cell is available both in the
library and in a user-specified HDL source file, SpyGlass stores the
functional view as follows:
As you can see in the above table, SpyGlass Library Compiler gives
preference to user-specified definition over cell definition. To give
preference to cell definition over user-specified definition, specify the
-use_lib_models command-line option. Consider an example in
which a cell is defined in test.lib as well as in test.v. Now,
consider that you specify the following command:
spyglass_lc -gateslib test.lib -v test.v
-use_lib_models
In the above case, SpyGlass would give priority to cell definition in
test.lib. However, if the functional view of the cell is not present
in test.lib, SpyGlass considers the cell definition from test.v.
SDE you can add this option in the Other Tab of the Options
window and invoke the SpyGlass run. On completion of the run, you
can view the generated report by double-clicking the message of the
rule ReportSglibSummary.
• If your sglib files are generated using any release prior to SpyGlass
3.8.2, you must recompile your gates library files with SpyGlass
3.8.2 or a later release to generate the debug_sglib report.
• If you specify multiple technology libraries of the same name,
SpyGlass considers the first occurrence of the library and ignores the
rest.
In such a scenario, if you are compiling technology libraries with
SpyGlass library compiler, SpyGlass reports the LIBINFO_703
violation. However, if you are using such libraries during SpyGlass
run, SpyGlass reports the ReportDuplicateLibrary violation.
• If there is not even a single output pin in the cell with the
function, state_function, or internal_node attribute,
then the cell is not compiled.
• Cells where functionality represented by the state table cannot be
inferred, are not compiled.
directory.
2. Precompile L2:
spyglass –batch –mixed –policy=none rtl_3.vhd
rtl_4.v –enable_precompile_vlog –lib L1 lib2 –work
L2
3. Precompile L3:
The above set of commands are now executed in a single SpyGlass run
by using the single step precompilation feature.
Overview
Synthesizing memories (2-dimensional arrays) in RTL designs has
Overview
SpyGlass allows you to report flat-level rule messages up to the
instance boundaries of specified module types (Verilog 'celldefine
modules, Library modules, and user-specified modules).
Flat-level rule-checking in SpyGlass assumes only leaf-level instances
in the flat netlist. These instances can be SpyGlass synthesis tool
primitives/macros instances, .lib instances, or blackbox instances. But at
times, you may want to treat specified module definition, as single unit
for flat-level rule-checking, which basically means that rule-checking
engine should work as if there are only instances of these modules in
the flattened netlist.
A typical case in which you would prefer this behavior, is for ILM
(Interface Logic Model) models of blackboxes. Here, you provide the
basic interface details of blackbox modules that are sufficient for rule-
checking and want SpyGlass to use whatever it needs from inside the
module definition (in terms of connectivity of input to output etc.) but
should not report any messages for nodes inside it.
NOTE: This feature works does not work for built-in messages; it only works for
messages of those policy rules that have been enhanced for this feature.
SpyGlass refers to such module definitions as BBOX_MODEL type
modules since these are effectively blackboxes from point-of-view of
SpyGlass reporting and nothing would be reported inside these
modules.
Identifying Modules
The current implementation understands the following type of modules
as BBOX_MODEL type modules:
assume_path
-name <bbdu-name>
-input <input-pin-name>
-output <output-pin-name-list>
• set_input_delay
• set_output_delay
create_clock If the clock is virtual, that is, no ports/pins/nets are mentioned to serve
as sources of the clock, it is to be dumped in a commented form in the
SGDC file.
The clock constraint dumped in the SGDC file has the -name option
that whose value is the name of the object serving as clock source.
However, in case of virtual clock where the source object is empty, this
field is filled in the following manner:
• A real clock is found in the design which matches the virtual clock.
• If a real clock-mapping to virtual clock is not found, the clock's
actual name itself (that is, the field specified with the -name option
in the SDC file) is used in the generated sgdc file.
Limitations
The SDC-to-SGDC functionality has the following limitations:
//Verilog
uselib lib=L1
To know more about using precompiled libraries in a design, refer to
the following topics:
Overview
A violation message waived in the last release may change in the
current release. This makes the waiver file of the last release
incompatible for use in the current release. To make it compatible in the
current release, use the -gen_compat_waiver command-line
option. When you specify this option, spyGlass migrates old waiver
commands to new waiver commands.
NOTE: For details on the -gen_compat_waiver option, refer to the
Generating Compatible Waivers application note.
On-the-Fly Migration
During the migration of waiver commands, some waiver commands
might remain un-migrated due to some reasons. In such cases,
SpyGlass adds the --on_the_fly_compat_check field to such
waiver commands to invoke the feature of on-the-fly migration of
violation messages.
When the feature of on-the-fly migration is on, SpyGlass first tries to
waive/match the violation message with the waiver message specified
in the waiver file. If it does not match, it tries a match of old violation
message with the waiver message. The old violation message is
internally formed by SpyGlass if the message of that rule (which is
reported in that violation message) has been changed across SpyGlass
releases. If a match is found, that violation message is waived. Else, it
is reported.
Therefore, SpyGlass is able to use waiver file of the current release as
well as the old releases.
Decision to invoke this flow can only be taken by SpyGlass as this flow
-rule/-addrule/-ignorerule(s) Specification
SpyGlass ignores the -ignorerule specification for a particular rule
in the included/inherited template file if the -rule/-addrule
specification for the same rule is provided in the parent, included, and/
or inherited template file. In addition, SpyGlass reports an appropriate
warning message in such cases.
Consider a parent template file that contains the following
specifications:
-policies=lint
...
-include_goal included-mixed.spq
-addrule W18
...
-ignorerule W391
....
Now when the parent template is executed, SpyGlass ignores the W18
and W391 rules and reports the following warning for these rules:
WARNING [342] Rule/Group 'W18' specified at File:
parent-mixed.spq, Line: 6 has been ignored due to the
following -ignorerule(s) specifications -
-ignorerule W18(File: included-mixed.spq, Line: 6)
Parameter Specification
If a rule parameter is specified more than once in an included/inherited
template or the parent template, SpyGlass considers the last parameter
specification.
Consider a parent template file that contains the following
specifications:
...
-use_inferred_clocks=no
-include_goal included-mixed.spq
...
In addition, consider the included-mixed.spq included template
file (given in parent template) that contains the following specification:
...
-use_inferred_clocks=yes
...
In this example, SpyGlass considers the
-use_inferred_clocks=yes specification and reports the
following warning:
WARNING [341] Parameter 'use_inferred_clocks' specified
multiple times at following locations -
-use_inferred_clocks=no (File: parent-mixed.spq, Line:
22)
define_severity Specification
If the define_severity specification for a rule in the parent,
included, and/or inherited template is specified more than once,
SpyGlass decides the define_severity specification to be
considered in the following manner:
• The first define_severity specification, if present in the parent
template, is considered.
• Else, the first define_severity specification present in the
included/inherited templates is considered.
Consider a parent template file that contains the following
specifications:
...
-include_goal included-mixed.spq
...
-define_severity Audits+Audit3run+Warning
...
In addition, consider the included-mixed.spq included template
file (given in the parent template) that contains the following
specifications:
...
-define_severity Audits+Audit3run+ERROR
...
In this example, SpyGlass reports the following warnings:
WARNING [345] Severity for 'Audit3run' defined
multiple times for policy 'Audits' in included/inherited
template and parent template ( parent-mixed.spq ) at
following places -
overloadrule Specification
If multiple overloadrule specifications are present for a particular rule
in the template file, the specified overload specifications are overridden
and merged with subsequent specifications.
If different severity labels are specified in these specification, SpyGlass
considers the last severity label and reports a warning message.
Consider a parent template file that contains the following
specifications:
...
-overloadrules=Ac_sanity05+severity=Warning
-overloadrules=W226+severity=Info+verilog
...
Also consider the included-mixed.spq included template file
(given in the parent template) that contains the following
specifications:
...
-overloadrules=Ac_sanity05+severity=Error+verilog+vhdl
-overloadrules=W226+severity=Error+vhdl
...
The W226 rule of the lint policy is registered in both Verilog and
VHDL. Therefore, in the above example, SpyGlass applies severity
label for both Verilog and VHDL versions of the W226 rule and does
not report any warning. However, SpyGlass reports the following
warning for the Ac_sanity05 rule:
WARNING [347] Multiple severity overload
specifications found for rule 'Ac_sanity05' (registered
in language 'Verilog+VHDL') in included/inherited
template and parent template (parent-mixed.spq) at
following places -
Warning (Language: Undefined) (File: parent-mixed.spq,
Line:4)
Error (Language: Verilog+VHDL) (File: included-mixed.spq,
Line:7)
Only last severity class would be used.
• Command line options can appear in any order, as long as they are
followed immediately by any argument(s) that apply to them.
• As a rule, option names are separated from an argument by a space
(-report simple) or equal sign (-report=simple). Where
you specify an argument list, arguments are separated by a space and
enclosed in quotes (-du ‘unit1 unit2 unit3’ or
-du =‘unit1 unit2 unit3’). One category of exceptions are
those Verilog-specific options preceded by a + sign. In these cases,
arguments are separated from the options name and from other
arguments by + signs. For Example:
(+block1+block2).
Another category of exceptions are policy-specific options which
have (-option=value) characteristics. These options contain no
spaces. For example:
-policies=lint,openmore or -clocks=clk1,clk2,clk
• If the value of an option has an environment variable that needs to
recognized (expanded), you should enclose the value in double
quotes. For example:
-wdir=”$MYPROJECTAREA/p1”
• In the UNIX environment, the continuation character (\) is used to
signify that a command line continues on another line.
• You can use both the singular version and the plural version for all
applicable command-line options that can accept either one value or
a list of values. Till now, this facility was available for the -
policy/-policies command-line option only.
Following is the list of all the command-line options that are an alias
and can be used interchangeably:
NOTE: You do not need to specify the -batch command-line option with the
above-mentioned informational command-line options as it is implicit.
The purpose of the informational command-line options is as follows:
-quickstart (Optional) Prints the SpyGlass Quick Start help (that is, information in
<your-inst-dir>/SPYGLASS_HOME/doc/quickstart.txt) to the stdout and
exits.
-usage (Optional) Prints the help of various options based on the mode
(Console or batch) in which you want to run SpyGlass.
• If -usage is specified alone, Console help is shown and a reference
of getting batch help is shown.
• If -usage is specified with any Console-related option, Console
help is shown.
• If -usage is specified with any Console related options as well as a
batch-related option, a message is displayed indicating that the
options specified are not compatible, and only Console-related help
is shown.
• If -usage is specified with any batch-related option then
batch-related help is displayed.
-version (Optional) Prints the SpyGlass version to the stdout and exits.
If several versions of SpyGlass are available on your company’s
network, it is important to know which version of SpyGlass you are
using. You may also be asked for this information should you contact
Atrenta Customer Support.
To print the release number of the SpyGlass version you are using,
enter the -version option in a SpyGlass command line:
spyglass -version
When the optional argument -policies (or -policy) is also
specified with one or more registered policy names, SpyGlass prints the
version and the minimum required SpyGlass version for each specified
policy to stdout and exits.
-vhdl Specifies that the operating language is VHDL. Thus, you can process
VHDL Only design files or generate information about VHDL policies
and reports.
To tell SpyGlass that you are running a VHDL design, enter the -vhdl
option and the name(s) of your design file(s).
For example, to specify that your design file mydesign.vhd is a VHDL
file, enter:
spyglass -batch -vhdl -policy=lint mydesign.vhd
NOTE: If you specify more than one file name, you need to list them in the
correct compilation sequence.
-verilog Specifies that the operating language is Verilog. Thus, you can process
Verilog Only design files or generate information about Verilog
policies and reports.
To tell SpyGlass that you are running a Verilog design, enter the
-verilog option and the name of your design file.
For example, to specify that your design file mydesign.v is a Verilog file,
enter:
spyglass -batch -verilog mydesign.v
-printgroups (Optional) Prints the list of all rule groups and their rules in the
specified policies to the stdout and exits. If you do not specify any
policy, the rule groups and their rules in the policies included in the
default template under the specified language mode are printed to the
stdout.
session file (for example, a template file), use the following command-
line:
spyglass -batch -vhdl
-printgroups
-f /usr/john/projects/mytemplate-vhdl.spq
Then, SpyGlass prints the list of registered rule groups in policies
included in the mytemplate-vhdl.spq file.
-printreportformats (Optional) Prints the list of all registered VDB-based reports in all
registered policies including the SpyGlass standard reports.
-printrules (Optional) Prints the list of all rules available in the specified policies
to the stdout and exits. If you do not specify any policy, the rules in the
default template under the specified language mode is printed to the
stdout.
All the rules in a SpyGlass policy are referred to as registered rules.
Registered rules can be enabled (switched on) or disabled (switched
off). When SpyGlass runs with a specified policy, only those rules that
are enabled are checked. However, it is useful to see the complete set of
registered rules in case there are some available that would be useful to
switch on. To print a list of all the registered rules, you use the
-printrules command-line option.
[ <VerilogOnlyOptions> ]
[ <OtherOptions> ]
[ <RuleParameters> ]
<SourceFileOptions>
Rules Options
RulesOptions::=
[ { -addrules <rule-list> } ]
[ { -define_severity <severity-expression> } ]
[ -disallow_view_delete ]
[ -fullpolicy ]
[ -higher_capacity ]
[ -ignore_undefined_rules ]
[ -ignorewaivers ]
[ -norules
| [ -policies | -policy={<policy-name>,} ]
[ { -rules {<rule-name>} } ]
[ { -ignorerules {<rule-name>} } ] ]
[ -overload {<named-overload>,} | none ]
[ -overloadpolicy {<policy-name>,} | all | none ]
[ { -overloadrules <overloadrule-expression> } ]
[ -run ]
[ -sortrule ]
[ { -template {<template-name>,} | none} ]
[ -templatedir <dir-name> ]
[ -checkTopDu ]
[ -check_celldefine ]
-addrules SYNTH_5116
• Add a rule to an existing rules specification
For example, you are running a template named myTempl and want
to run an additional rule myRule23. You can then use the following
command:
-template myTempl -addrules myRule23
-disallow_view_delete
(Optional) Disables the Large Design Processing Mode. Then, all rules
run as in versions before SpyGlass version 3.2.0. Also, both the RTL
view and the Netlist view remain in the memory for all types of rules.
NOTE: You cannot use the -higher_capacity and
-disallow_view_delete command-line options together as they are
complementary.
-fullpolicy (Optional) Specifies to run all rules (except those rules that are
controlled by parameters, which run based on the parameter values) of
all selected policies.
All Atrenta standard policies have been reorganized to run only a
selected set of rules when you select to run the complete policy (by
specifying the policy name using the -policy/-policies
command-line option and not specifying one or more rules of that
policy using the -rules command-line option). The selected set of
rules have been chosen to quickly highlight the value of the particular
policy.
Earlier, such specification used to run all rules of the specified policy.
You can still run all rules (except those rules that are controlled by
parameters, which run based on the parameter values) of a policy by
specifying the -fullpolicy command-line option.
NOTE: There is no change in SpyGlass behavior when you use the -rules
command-line option to specify rules to be run or when you run a template.
-higher_capacity (Optional) Disables rules designed for SpyGlass version 3.2.0 that
require both the RTL view and the Netlist view, if any. In addition,
SpyGlass deletes the RTL view from memory before executing rules
designed for SpyGlass version 3.2.0 that require the Netlist view only.
-ignore_undefined_rules
(Optional) Allows SpyGlass to continue after issuing a warning
message if an undefined rule is specified at the command-line.
By default, SpyGlass exits with an error if you specify a rule that does
not exist in any of the specified policies.
-ignorerules (Optional) Specifies the rule names or rule group names to be ignored
in rule checking. You can specify multiple rule names, rule group
names, or a combination of both.
If the value of the RULE_SELECTION_ON_CL_POSITION option is
set to yes in the spyglass.setup file, then the priority of the rules is
decided based on their position. For example, if the -ignorerules
command-line option is given before the -rules command-line option
for a particular rule, then the -rules command-line option will have a
higher priority than the -ignorerules command-line option and the
rule will not be ignored. However, if the
RULE_SELECTION_ON_CL_POSITION option is set to no
(default), then the -ignorerules command-line option has higher
priority than the -rules command-line option.
NOTE: There are certain rules in SpyGlass that cannot be ignored. If you
specify such rules with the -ignorerules option, SpyGlass flags
WARNING [38]. For example, most of the rules of the following categories
cannot be ignored:
BuiltIn rules Prerequisite rules
-norules (Optional) Suppresses rule checking; the design is analyzed for syntax
errors or warnings only.
You can run SpyGlass on your design without rule-checking to check
the design for HDL syntax and structure integrity.
It is often useful to check that the design environment (files, libraries,
include files, macro definition files) are all present and correctly
defined before any rules are checked. Also, VHDL libraries must be
pre-compiled and checked for HDL syntax errors before you do a rules
check. To keep SpyGlass from checking any rules, use the -norules
option.
To exclude all rules from a rules check in a design file, use the
following command-line depending on the language type:
spyglass -batch -norules -verilog <source-file>
spyglass -batch -norules -vhdl <source-file>
spyglass -batch -norules -mixed <source-file>
function.
-overload (Optional) Runs the specified named overloads for all specified
policies.
To learn about using named overloads, see the SpyGlass Policy
Customization Guide.
-overloadpolicy (Optional) Runs the specified policies with the overloaded components,
if any.
NOTE: The rule-checking results with overloaded policies may be different
from results from normal policies.
If you do not specify this option, overloaded policy components, if any
are ignored and normal policies are run.
SpyGlass provides the feature to overload a policy to meet local
preferences of user base. This feature is typically required when you
want to use Atrenta-standard policy but with certain customization
such as different severity-labels, pod-cut description, alias name, etc.
Under this feature, you need to create another file named <policy-name>-
policy-overload.pl where <policy-name> is the name of the original
policy you want to overload. Thus, to overload the Lint policy, you
need to create a file named lint-policy-overload.pl file.
To learn about creating policy overload files, see the SpyGlass Policy
Customization Guide.
The policy overload files are searched using the same -I command-line
option mechanism as used for custom policies.
Use of policy overload feature is controlled by the
Command-line
Specification Effect
-overloadpolicy Apply Policy overload on all policy being selected to
run. This is subject to policy overload file being found
in the specified search path.
-overloadpolicy=none Disables search and loading of overload files.
or not specified
-overloadpolicy=a,b Apply policy overload to policy named ‘a’ and ‘b’ only
(assuming one or more of these policy are selected to
run.
-overloadpolicy=all Apply policy overload on all policy selected to run. If
policy overload file is not found for any policy, it is
considered as an error condition, and (frequently) may
be because of incorrect or no ‘-I’ specification.
-overloadrules (Optional) Overloads the severity or weight of a rule for the current
SpyGlass run.
The formats of using the -overloadrules command-line option
are as follows:
-overloadrules
<rule-name>+<lang>+severity=<severity-label>+weight=<value>
Where:
<rule-name> is the name of the rule being overloaded.
<lang> is the language for which you want to overload the rule. The
allowed values are VHDL, Verilog, Verilog+VHDL
(case-insensitive). Language of the -overloadrules specification
should be same as used in the corresponding rule registration. For
example, if a rule is registered with Verilog + VHDL language, its
-overloadrules specification should also be Verilog + VHDL.
NOTE: The -overloadrules specification is used in conjunction with
NOTE: You can run SpyGlass without any policies by specifying the none
value (for example, -policies=none). Then, only the SpyGlass built-in
rules are run on your design files (HDL files, SpyGlass Design Constraints files,
Library files, etc.), that is, your design files are effectively syntax-checked.
NOTE: Also, see the -norules command-line option that has a similar function.
-run (Optional) Specifies to analyze the design with the specified settings
after invoking the SpyGlass Design Environment.
Use the -run command-line option when you want to work in the
SpyGlass Design Environment and want the design to be immediately
analyzed after invoking the SpyGlass Design Environment.
You must provide all essential SpyGlass command-line options with
the -run command-line option. Otherwise, the design will not be
analyzed.
-sortrule (Optional) Specifies the sort order for messages in SpyGlass reports.
See Sorting Messages in SpyGlass Reports for more details.
-template “<method1-name>/<template1-name>
<method2-name>/<template2-name> ...” ...
SpyGlass prints the best possible matches for the templates, which are present
in the above mentioned paths.
Before running the specified templates, SpyGlass generates the
following informational message on the stdout:
INFO: SpyGlass will run command-line specified
template(s) ‘<method1-name>/<template1-name>’,
‘<method2-name>/<template2-name>’.
You can specify the -template=none command-line option to
indicate that no templates should be used during the SpyGlass analysis
run. All the templates specified after specifying the -
template=none option are ignored. However, the templates
specified before specifying the -template=none option are
processed as before.
Also refer to the Customizing a Template File topic.
-templatedir (Optional) Specifies the directory where the templates specified using
the -template command-line option are to be searched.
If the -templatedir command-line option is specified, SpyGlass
searches for the specified templates in the following order:
1. The directory specified using the -templatedir command-line
option
2. The paths specified using the -I command-line option
3. In the <your-inst-dir>/SPYGLASS_HOME/Methodology directory
If the -templatedir command-line option is not specified,
SpyGlass searches for the specified templates first in the directory
specified using the DEFAULT_TEMPLATE_DIRECTORY
configuration file setting and then in the other directories mentioned
above.
NOTE: The template directory structure may contain one or more methodology
directories within which the templates are present. In such cases, you should
set the -templatedir option one level up than the methodology directory
-checkTopDu (Optional) This is a kernel parameter that causes the specified rules to
be checked at the top-level only. Use the -checkTopDu parameter to
specify a comma-separated list of rule names. For example:
-checkTopDu="UndrivenOutPort-ML,UndrivenNet-ML"
In the above example, the UndrivenOutPort-ML and UndrivenNet-ML
rules will check top-level design unit only.
You can also set the value of the -checkTopDu parameter to yes and
all the rules will check at the top level.
NOTE: The behavior of post flattening rules is not affected by the
-checkTopDu parameter. For such rules, you need to create waive
commands to waive the hierarchical violations.
General Options
GeneralOptions::=
[ -classic_mode ]
[ -configfile <config-file-name> ]
[ -est_mode [ -use_scan_flops ]]
[ -preserve_mux ]
[ -esynth_mode ]
[ -enable_pass_exit_codes ]
[ { -f <session-file-list> } ]
[ -LICENSEDEBUG ]
[ -logfile <file-name> ]
[ -lvpr (<number> | <rulename>=<number>) ]
[ -noispy ]
[ -noreport
| [ { -report { <format-name>, } } ]
[ -reportfile <file-name> | stdout ]
[ -report_per_policy ]
[ -report_adjustment_waiver ]
[ -report_ip_waiver ]
[ -report_max_size=<value> ]
[ --report_style=<list-values> ]
[ -rulegroup_display_depth=<number> ]
[ -nosch ]
[ --perflog ]
[{ -pragma <string> } | -pragma nopragma ]
[{ -pragma_varfile <file-list> }]
[ -vdbfile <file-name> ]
[ -w ]
[ -wdir <dir-name> ]
[ --write_vdb_reports_in_wdir ]
[ -enable_sgdc_debug ]
[ -cell_library ]
[ -enable_const_prop_thru_seq ]
[ -use_goal_rule_sort ]
[ -enable_save_restore_builtin ]
[ -dump_precompile_builtin ]
[ -show_sdc_progress ]
-classic_mode (Optional) Executes the CLASSIC mode rules only (which run on non-
optimized netlist) and disables rules of EST and ESYNTH mode.
-configfile (Optional) Specifies the SpyGlass Configuration file with the highest
priority.
See the Overview section of The SpyGlass Configuration File chapter.
-est_mode (Optional) Executes the EST mode rules only (which run on optimized
and techmapped netlist) and disables rules of CLASSIC and ESYNTH
mode.
-use_scan_flops (Optional) Enables SpyGlass to pick scan flops from the technology
library for mapping flops in the design.
When this switch is specified, SpyGlass gives priority to the scan flops
rather than normal flops in the technology library for mapping. If scan
cells are not present in the technology library, SpyGlass selects the
normal flops for mapping in the design.
The -use_scan_flops switch can be specified only when the -
est_mode switch is used or EST mode compatible rules are specified.
-preserve_mux (Optional) Enables SpyGlass to pick mux cells from the technology
library for mapping muxes in a user design.
When this switch is specified, SpyGlass gives priority to the mux cells
present in the technology library rather than a mux implementation in
terms of more basic cells from the technology library. If mux cells are
not present in the technology library, SpyGlass selects the mux
implementation in terms of more basic cells from the technology
library.
The -preserve_mux switch can be specified only when the -
-esynth_mode (Optional) Executes the ESYNTH mode rules only (which run on
optimized netlist) and disables rules of CLASSIC and EST mode.
NOTE: SpyGlass displays an error message if you specify a combination of
-est_mode, -esynth_mode, or -classic_mode options.
NOTE: While running SpyGlass in -enable_save_restore mode along with any
of the -est_mode/-esynth_mode/-classic_mode option, it is recommended that
you specify different precomplile work directory (using the -lib WORK <WORK-
DIR> option) for each mode. If you do not specify a different precompile work
directory for each mode, SpyGlass may synthesize the design everytime you
run SpyGlass in a different synthesis mode and re-save the database for each
synthesis mode.
-enable_pass_exit_codes
(Optional) Causes SpyGlass to print more detailed exit status codes and
messages.
See SpyGlass Exit Status for more details.
-LICENSEDEBUG (Optional) Prints the following license debug information on the screen
and in the SpyGlass log file, spyglass.log, in the given order:
• Values of ATRENTA_LICENSE_FILE and LM_LICENSE_FILE
The host IP(s) set in these variables are used to search for licenses.
NOTE: ATRENTA_LICENSE_FILE is given preference over
LM_LICENSE_FILE.
-logfile (Optional) Sets the name and location of the SpyGlass log file.
By default, the log file name is spyglass.log and it is created in the
-lvpr (Optional) Specifies the maximum number of messages per rule for all
rules in the ruledeck or the maximum number of messages for the
specified rule.
SpyGlass lets you limit the number of messages that are saved in the
Violation Database for each rule using the -lvpr (limit messages per
rule) command-line option. This feature is helpful when errors are
difficult to identify because one or more rules are producing many of
the same error messages (for example, a name that is used frequently in
a design that violates the defined naming convention). The -lvpr
command-line option lets you limit the number of repetitions of an
individual rule message, which makes it easier to see the other errors.
You can also specify the maximum number of messages you want to
have recorded for any rule.
-noispy (Optional) .This option is same as the -nosch option except that the
module schematic is also not available in SpyGlass GUI with the
-noispy option.
Refer to the -nosch command-line option description for more details
3. inline
4. waiver
5. count
6. summary
Other reports (score, browse, more, emacs, vim, and tags reports)
remain unchanged as report-by-policy does not make much sense.
When you supply the -report_per_policy command-line option,
SpyGlass splits the specified report by policy and generates report files
named <report-name>_<policy-name>.rpt files (one per policy) where
each file contains the specified report <report-name> for the policy
<policy-name>.
For example, when you specify the following:
spyglass -report simple -report_per_policy
-policy=lint,starc,custom ...
Then, the following set of files are generated:
1. simple_lint.rpt
2. simple_starc.rpt
3. simple_custom.rpt
4. simple_spyglass.rpt
First three files contain the Lint policy, STARC policy, and custom
policy rule messages respectively and the last file has the built-in rule
messages.
You can also specify the -reportfile command-line option to change the
name of the generated report files. For example, when you specify the
following:
spyglass -report simple -report_per_policy
-policy=lint,starc,custom -reportfile mysimple ...
Then, the following set of files are generated:
1. mysimple_lint.rpt
2. mysimple_starc.rpt
3. mysimple_custom.rpt
4. mysimple_spyglass.rpt
If you specify the stdout argument with the -reportfile
command-line option, the generated reports are printed to the stdout as
if the following command is given:
%>cat simple_lint.rpt; cat simple_starc.rpt;
cat simple_custom.rpt; cat simple_spyglass.rpt
NOTE: The printing order of files can be different.
NOTE: The -report_per_policy command-line option has no impact
on policy-specific reports.
-report_adjustment_waiver
(Optional) Causes the actual waived messages to be printed in the
Waiver report even when the -ignore argument of the waive
constraint has been specified.
By default, only the waived message count is reported in the Waiver
report when the -ignore argument of the waive constraint has been
specified.
These waived messages are printed in the Adjustments Waiver Report
section of the Waiver report.
specified.
These waived messages are printed in the IP/Legacy Waiver Report
section of the Waiver report.
-rulegroup_display_depth
(Optional) Enables you to specify the number of the subgroups to be
displayed in reports and message tree.
By default, the value of the -rulegroup_display_depth option
is set to 2. You can change this value to specify different number of
subgroups to be displayed.
If you specify the value of this option as 0 then all the subgroups are
displayed.
NOTE: The -rulegroup_display_depth option can be specified
only if the display_rulegroup option is used.
-reportfile (Optional) Sets the name and location of the SpyGlass report file
generated by the -report command-line option.
By default, SpyGlass generates a report file named
<report-name>.rpt in the current working directory. For example, if
you have specified the moresimple report using the -report
command-line option, the tags report will be saved as moresimple.rpt file
in the current working directory.
If you specify the -reportfile command-line option, the report file name
and location are determined as with the -logfile command-line option
To print the generated report to the stdout, use the stdout argument.
The argument is accepted in case-insensitive manner.
NOTE: If you generate the same report again with same settings, the existing
report file is overwritten by the new information.
however, that if you use this option to define one or more pragma
families, the default pragma support no longer applies. You must
therefore include -pragma synopsys, -pragma $s, and
-pragma $S in your list of pragma families if you plan to use these
default pragmas along with the newly defined pragma sources.
If you do not plan to use pragmas in your design, you can use the
-pragma option with nopragma argument to turn off all pragmas
including the Synopsys default.
-vdbfile /usr/john/myprojects/atrenta/errors.vdb \
-policy=openmore design.vhd ...
The /usr/john/myprojects directory path must exist. SpyGlass would
create the atrenta directory under it if it does not exist.
When the -batch command-line option is not specified, specifies the
Violation Database file to be opened in the SpyGlass Design
Environment. All other command-line options are then ignored.
As SpyGlass checks your design, it records messages in a file named
spyglass.vdb. The report generators use this file to produce the message
report.
You may want to store messages in a different file or location. Use the
-vdbfile command-line option to specify a different file or location
for the Violation Database. Once you redefine the Violation Database,
the report generators will work with this database rather than the
default.
For example, to have SpyGlass log messages detected in the file
design.vhd in the database file errors.vdb, use the following command-
line:
spyglass -batch -vhdl -vdbfile errors.vdb \
-policy=openmore design.vhd
NOTE: When you invoke SpyGlass with only the -vdbfile option
(assuming that the .vdb file exists), this means that you are invoking SpyGlass
for debugging the violations or generating reports. Therefore, the SpyGlass
Design Environment will open without any error message. However, if you
specify the -vdbfile option along with any other option, for example,
-reportfile, this means that SpyGlass is being invoked for a another re-
run. In such cases, the Violation Database file is not loaded and a message
appears at the command-line prompting you to specify the language.
you can get more information about these problems by specifying the
-w (warning) option and running SpyGlass again. The warning option
allows SpyGlass to display more details while running, identifying
each rule as it is checked. With this feature, you can easily identify the
failing rule, since it will be the last rule listed before the error message.
Once you have identified the rule causing the problem, you can exclude
it using the -ignorerules option. This lets you continue analyzing
your design while the specific rule problem is being fixed.
NOTE: If for some reason, there is a problem in the SpyGlass environment, it is
sometimes difficult to reproduce the problem outside of your company without
the design files. These may however be so confidential that it is impossible to
make them available, even with a non-disclosure agreement. In order to
provide as much debug information as possible without the design files,
SpyGlass supports a -DEBUG option. This saves information about what
processes SpyGlass was running at the time of the problem, allowing Atrenta
development to gain additional insight into the problem. This information is
stored by default in a spyglass.log file in the working directory, although this
can be changed using the -logfile option. You should send this file to
Atrenta Customer support when reporting the problem.
-wdir (Optional) Specifies the output directory for SpyGlass if you would
like SpyGlass output to be generated at a location different from the
current working directory.
Then, the SpyGlass output (SpyGlass schematics, Violation Database
file, Log file, and Reports files) will be written to this new path.
--write_vdb_reports_in_wdir
-enable_sgdc_debug
(Optional) Causes SpyGlass to generate the debug_sgdc report under
the directory, spyglass_reports/SpyGlass.
The debug_sgdc report contains decompiled SGDC commands with
back reference information. You can generate this report by specifying
the -enable_sgdc_debug option on command-line.
NOTE: The debug_sgdc report is available only in the batch mode. It cannot be
generated from the SpyGlass Design Environment.
-enable_const_prop_thru_seq
(Optional) Allows constant propagation beyond sequential elements
during logic simulation.
By default, constant propagation stops at sequential elements.
-use_goal_rule_sort
(Optional) Sorts violation messages in the moresimple report based on
the order of rules specified in the goal file.
-enable_save_restore_builtin
(Optional) Displays builtin messages (parsing, elaboration, and
synthesis) during restore run that were reported during the save run.
SpyGlass saves builtin messages (parsing, elaboration, and synthesis)
reported during save run as a part of the saved design database. To view
these messages during the restore run, specify the
enable_save_restore_builtin option.
For details, refer to the Handling Built-in Messages during Save-
Restore Flow topic.
-dump_precompile_builtin
(Optional) Enables SpyGlass to save parsing-related builtin messages
while creating a precompiled RTL dump. These messages are stored as
a part of that RTL dump and can be restored while using precompiled
dump by using the -hdllibdu option (messages are restored by default
for encrypted design units unless option -
disable_encrypted_hdl_checks option is specified).
For details, refer to the Handling BuiltIn Messages While Using
Precompiled Dump topic.
-show_sdc_progress
(Optional) Shows the SDC parsing progress bar on standard output
during SDC parsing.
PERL-related Options
PERLOptions::=
[ -I<dir-name> ]
filename *-policy.pl).
Using the -I option, however, you can redefine the path to the Perl
script directory and the policy directory, and have SpyGlass start
looking for its files in your custom path first. Whatever is defined using
the -I option is prefixed to the already defined default search path.
SpyGlass also looks in your directory first to find any subsequently
referenced files not qualified by full paths. Similarly, it uses your
directory as a starting point for relative path references.
[ -dbdir <dir> ]
[ -force_save ]
[ -savepolicies <policy-name-list>
| -savepolicy <policy-name> ]
[ -nosavepolicies <policy-name-list>
| -nosavepolicy <policy-name> ]
[ -skip_rules_for_fast_restore ] ]
[ { -gateslib <lib-file> } ]
[ -enable_sglib_debug ]
[ -gen_hiersgdc ]
[ -handlememory ]
[ -hdllibdu ]
[ -lef <file-name>]
[{ -lib <logical-lib-name> <physical-lib-name> } ]
[{ -plib <plib-filepath-list> } ]
[ -define_incr_dirmap <value1> <value2> ]
[ -mthresh <number> ]
[ -nobb ]
[ -nopreserve ]
[ { -param {<key=value>} } ]
[ -remove_work ]
[ -sdc2sgdc ]
[ -sdc2sgdcfile <file-name> ]
[ -sdc2sgdc_mode <mode-name> ]
[ -mapVirtualClkByName = <yes | no> ]
[ -mapSuffixList <suffix-names> ]
[ { -sgdc <file-name> } ]
[ { -sglib <sglib-name> } ]
[ --sgsyn_loop_limit <value> ]
[ --sgsyn_enable_latch_removal ]
[ -stop <du-name> ]
[ -stopdir <dir-name> ]
[ -stopfile <file-name> ]
[ -support_sdc_style_escaped_name ]
[ -testsynth ]
[ -top <name-list> ]
[ -validate_hiersgdc ]
[ { -waiver <file-name> } ]
[ { -filter <file-name> } ]
[ -work <dir-name> ]
[ -noelab ]
[ -checkip ]
[ -checkdu ]
[ -disable_encrypted_hdl_checks ]
[ -macro_synthesis_off ]
[ -write_sdc ]
[ -debug_proc ]
[ -net_osc_count_limit <limit> ]
[ -nodefparam ]
[ -sgsyn_clock_gating ]
[ -sgsyn_clock_gating_threshold <num> ]
[ -target <lib-name-list> ]
-add_hdllibdu_lexical_checks
This command-line option has been deprecated. You can enable lexical
rule-checking on precompiled design units by specifying the -hdllibdu
command-line option.
-dbdir (Optional) Specifies the design save directory when working in the
Design Save/Restore mode.
By default, the design is saved in (and later restored from) a directory
named spyglass.db under the current working directory. You can
specify a different location using the -dbdir command-line option.
You can specify an absolute path name or a relative path name.
If you have used the -dbdir command-line option during design
save, you MUST specify the -dbdir command line option during
design restore also with the correct design save directory name.
NOTE: The -dbdir command-line option works only when the
-enable_save_restore command-line option is also specified.
-dump64bit (Optional) Causes SpyGlass to create the 64-bit version of the pre-
compiled HDL sources also while creating the 32-bit version on a 32-
bit architecture machine.
You can create the 64-bit version of the pre-compiled HDL sources on
a 32-bit architecture machine by using the -dump64bit command-
line option.
NOTE: The -dump64bit command-line option has been deprecated. Use
the -dump_all_modes command-line option instead.
-dump_all_modes (Optional) Causes SpyGlass to create both 32-bit and 64-bit versions of
the pre-compiled HDL sources irrespective of the architecture.
-enable_hdl_encryption
(Optional) Enables encryption of VHDL/Verilog libraries during
compilation.
See Encrypting Compiled VHDL Design Units and Encrypting
Precompiled Verilog Design Units for details.
By default, the encryption feature is disabled.
NOTE: When you specify the -enable_hdl_encryption
command-line option, a precompile dump is created on both 32-bit and 64-bit
platforms irrespective of the platform on which SpyGlass is run. By default, the
-dump_all_modes command-line option is turn on with the
-enable_hdl_encryption command-line option.
-enable_save_restore
(Optional) Enables the Design Save/Restore feature. See Saving and
Restoring Designs for more details.
-enable_sglib_debug
(Optional) Causes SpyGlass to generate the debug_sglib and
sglib_version_summary reports.
NOTE: The -enable_sglib_debug option can only be used with the -
sglib option.
The debug_sglib report contains the inferred functionality for each gate
that was successfully synthesized by the SpyGlass Library Compiler.
The sglib_version_summary report lists the enhancements made in the
subsequent SpyGlass library compiler releases starting from the oldest
version of the library files used in the current SpyGlass run. If all the
used library files were compiled using the current version, then this
report will not be generated.
To generate the report, specify the -enable_sglib_debug
command-line option.
NOTE: The debug_sglib report is only available in the batch mode; it cannot be
generated from the SpyGlass Design Environment. However, in SDE you can
add this option in the Other Tab of the Options window and invoke the
SpyGlass run. On completion of the run, you can view the generated report by
double-clicking the message of the rule ReportSglibSummary.
NOTE: You must recompile your gates library files with SpyGlass 3.8.2 or
higher to generate the debug_sglib report.
-gateslib NOTE: The -gateslib command-line option has been superseded by the -
MATH, enter:
spyglass -batch -vhdl -sort -lib MATH ../lib/MATH \
-work MATH -norules math_pkg.vhd math_pkb.vhd
Once compiled, the library can then be used in a normal SpyGlass
run. For example, if the MATH library compiled above is used in
design.vhd, enter:
spyglass -batch -vhdl -lib MATH ../lib/MATH \
-policy=lint design.vhd
Mapping VHDL libraries
To tell SpyGlass where to find a VHDL library, you must map the
library’s logical name (the name used in your HDL design) to its actual
physical location (the directory where the compile library is stored).
You can do so using the -lib option.
In case of incorrect library path specifications, SpyGlass behavior is as
follows:
1. If a library path is not specified and the library is used only in the
use clause and not used in any design unit, then SpyGlass generates
a warning message and continues. If the library is being used in a
design unit, then SpyGlass generates additional error message and
may abort depending on the criticality of library usage.
2. If the library path does not exist, then SpyGlass generates an error
message and aborts before analysis. This is irrespective of whether
the specified library is used or not.
NOTE: The 32-bit version of user-compiled libraries are created in a
sub-directory named 32 under the specified working directory. The 64-bit
version of user-compiled libraries are created in a sub-directory named 64
under the specified working directory.
To map a single logical name to a single physical location
To map a single logical library name to its physical location, enter the
-lib option followed by the logical name, the path to its physical
location, -vhdl, the policy, and your design file.
For example, to map the VHDL library named alu to the physical
directory mylibs, enter:
spyglass -batch -lib alu ~libs/mylibs \
-vhdl -policy=openmore mydesign.vhd
To map multiple logical names to multiple physical locations
You can map multiple VHDL libraries to their physical locations by
entering more than one -lib option in a single SpyGlass command
line.
For example, to map the NEW and MATH libraries to their physical
VHDL files, enter:
spyglass -batch -policy=lint -lib NEW ~libs/new \
-lib MATH ~/libs/math -vhdl design.vhd
To map multiple libraries located in one location
You can map multiple VHDL libraries located in a single location using
the others argument of the -lib command-line option. Thus, you
do not need to provide individual -lib specifications for each library.
Consider an example where you need to map one project-specific
library (say PROJLIB located in the ~lib/projectlibs directory) and
multiple company-specific libraries (say MAINLIB1, MAINLIB2 and
so on located in the ~lib/mainlibs directory). You can map all libraries as
follows:
spyglass -batch -vhdl -lib PROJLIB ~lib/projlibs
-lib others ~lib/mainlibs
NOTE: If you map a single logical library to multiple physical locations, the last
specified location is used.
-define_incr_dirmap
(Optional) Provides mapping for different locations of RTL files. It is
used by the incremental algorithm to find if the RTL files in the current
run are the same as the RTL files in old SpyGlass run with respect to
the incremental analysis that is being performed.
The -define_incr_dirmap option takes two input values.
-mthresh (Optional) Specifies the bit-count threshold for the compilation of net/
variables in a design unit.
If the individual net/variable size (bit-count) is more than the specified
threshold, the module is not compiled and is treated as a blackbox and
the SYNTH_ERROR[5273] is flagged. To solve the problem, specify
the threshold value greater than or equal to the value displayed in the
error message. However, please note that this higher value may not be
feasible due to system memory size limitations.
NOTE: If handlememory option is specified the individual memory size is
reduced memory size.
The default setting is 4K bits.
-param (Optional) Sets the new user-specified values of the VHDL generics
and Verilog parameters.
If there are more than one generic or parameter with the specified
name, the values of all such generics or parameters are set to the
specified value.
all design units even if some of the existing precompiled design units
did not need recompilation.
When working in the 32-bit mode, the -remove_work command-
line option causes SpyGlass to remove/recompile only the 32-bit
version of the precompiled design units. Similarly, SpyGlass removes/
recompiles only the 64-bit version of the precompiled design units
when working in the 64-bit mode. However, if you specify the -
dump64bit command-line option while working in the 32-bit mode,
SpyGlass also removes/recompiles the 64-bit version of the
precompiled design units, if present.
When you save a design view using the -enable_save_restore
command-line option and also specify the -remove_work
command-line option, you would need to specify the -remove_work
command-line option during design restore also. However, the
-remove_work command-line option is ignored during the full
restore mode (all rules are of Rule Type 1 as described in Saving and
Restoring Designs).
-savepolicy/-savepolicies
(Optional) Specifies the policy (-savepolicy) or a list of policies
(-savepolicies) that are not run during design save but can be run
during design restore.
Under Design Save-Restore feature, you specify the required policies
during the design save and then run any subset of these policies during
design restore. All the base polices and the four advanced policies, that
is, constraints, DFT, LowPower, and Txv, are saved by default. In
addition, the design view related to the policies being used, which are
specified directly by using the -policy/-policies command-line
option or indirectly through templates, is also saved. You can further
specify additional policies to be saved during the design save by using
the -savepolicy/-savepolicies command-line option so that
these policies are not run during design save but can be run during
design restore.
-nosavepolicy/-nosavepolicies
(Optional) Specifies the policy (-nosavepolicy) or a list of policies
(-nosavepolicies) that should not be saved during design save.
Under Design Save-Restore feature, you specify the required policies
during design save and run any subset of these policies during design
restore. All the base polices and the four advanced policies, that is,
constraints, DFT, LowPower, and Txv, are saved by default. In
addition, the design view related to the policies being used, which are
specified directly by using the -policy/-policies command-line
option or indirectly through templates, is also saved. If you do not want
to save certain policies, specify those policies by using the
-nosavepolicy/-nosavepolicies command-line option.
NOTE: The -nosavepolicies command-line option works only when
the -enable_save_restore command-line option is also specified.
NOTE: The -nosavepolicies command-line option is ignored during
the design restore mode.
-mapVirtualClkByName
(Optional) Specifies the manner in which virtual-to-real clock mapping
should be done.
Set the value of this option to no for finding clocks in the fanin/fanout
of output/input delays by matching the clock characteristics, that is,
period, waveform, followed by name-mapping.
Set this option to yes for name mapping only.
By default, SpyGlass considers the value as no.
-sgdc (Optional) Specifies the design constraints file for policies that support
design constraints. See Using SpyGlass Design Constraints for details
of SpyGlass Design Constraints.
Also, see the -waiver command-line option.
NOTE: If your filename includes wildcard characters (*, or ?), the name should
be enclosed in single quotes, and the wildcard characters should be preceded
by a backslash (\) to be treated as literal. For example, if your file name is
'abc*d', you need to refer to it as 'abc\*d'.
However, if you want to refer to two files, for example 'abc1d' and 'abc2d',
you can specify them using SpyGlass pattern matching support, that is, you
can specify "abc*d" in this case. For details on pattern matching support,
refer to the section, Pattern Matching Across Features.
you can specify them using SpyGlass pattern matching support, that is, you
can specify "abc*d" in this case. For details on pattern matching support,
refer to the section, Pattern Matching Across Features.
--sgsyn_loop_limit (Optional) Specifies the loop rolling limit during design synthesis.
By default, the loop unrolling limit is set to 2048. When a loop is not
completely rolled in the specified number of iterations, SpyGlass marks
the module as un-synthesizable.
--sgsyn_enable_latch_removal
(Optional) Enables better latch detection and removes redundant
latches.
When you specify this command-line option, SpyGlass checks if the
enable pin of the latch is driven by VCC. If yes, then SpyGlass replaces
such a latch with a buffer.
NOTE: This optimization results in an increased runtime for synthesis.
-skip_rules_for_fast_restore
(Optional) Causes the rules that require design’s re-parsing and/or re-
synthesis to be skipped during design restore. See Saving and Restoring
Designs for more details.
Depending on the selected rules’ characteristics, SpyGlass may not be
able to work with saved design view and hence unchanged design’s re-
parsing and/or re-synthesis may be required. You can skip such rules by
specifying the -skip_rules_for_fast_restore command-
line option.
Consider an example in which you run the template, Initial_RTL/
Ensure_RTL_Block_is_simulation_ready/Connectivity, and save the
design by specifying the -enable_save_restore switch.
In the second SpyGlass run, if you specify the same command-line
options as in the first run, you would see the following message:
-support_sdc_style_escaped_name
(Optional) Causes SpyGlass to recognize Synopsys-style escaped
names in SpyGlass Design Constraints files.
By default, SpyGlass recognizes names that start with a backslash
character and end with a space (Verilog) or a backslash character
(VHDL) as escaped names as per respective HDL conventions. Thus,
you need to specify such escaped names in the set format in SpyGlass
Design Constraints files also.
When you set the -support_sdc_style_escaped_name
command-line option, you can specify object names without the
escaped delimiters in the SpyGlass Design Constraints files. Thus, you
can specify 'ab%c' instead of '\ab%c ' or '\ab%c\'.
You can specify Synopsys-style escaped names at all levels in a
hierarchical name. For example, you can specify 'top.e.&f%g'
instead of '\top .\e.&f%g ' or '\top\.\e.&f%g\'.
You can use both the default format escaped names and the Synopsys-
style escaped names in the same SpyGlass Design Constraints file.
-testsynth (Optional) Causes SpyGlass to elaborate and synthesize the design and
report elaboration and synthesis messages.
Use the -testsynth command-line option to check the design for
elaboration/synthesis issues without running any rules.
Thus, you must specify the -norules command-line option along with
the -testsynth command-line option.
NOTE: Multiple top names are allowed only if they are hierarchically
independent.
NOTE: For rest of the design, only syntax checking and lexical rule checking
are performed.
You can run SpyGlass on any part of a design hierarchy, but to do this,
you must tell SpyGlass where the top of the hierarchy is using the
-top command-line option, and where the hierarchy should stop in
each branch using the -stop command-line option.
The design units that are outside the hierarchy specified with the -top
command-line option are assumed to be blackboxes for the purpose of
SpyGlass analysis.
NOTE: SpyGlass also supports the +topmodule command-line option for
Verilog designs to re-use of scripts created for running other Verilog tools.
Unless script compatibility is an issue, it is recommended that -top
command-line option is used.
-filter (Optional) Specifies the filter files that have a .sfl extension. The filter
files are considered as waiver files.
NOTE: If your filename includes wildcard characters (*, or ?), the name should
be enclosed in single quotes, and the wildcard characters should be preceded
by a backslash (\) to be treated as literal. For example, if your file name is
'abc*d', you need to refer to it as 'abc\*d'.
However, if you want to refer to two files, for example 'abc1d' and 'abc2d',
you can specify them using SpyGlass pattern matching support, that is, you
can specify "abc*d" in this case. For details on pattern matching support,
refer to the section, Pattern Matching Across Features.
-noelab (Optional) Causes SpyGlass to exit after design analysis and without
elaborating the design.
Then, only built-in rules are checked on the design.
Use the -noelab command-line option when you only need to
compile the Verilog/VHDL files without rule-checking.
NOTE: Do not specify the -noelab and -top options together while
running SpyGlass. If you specify these options together, SpyGlass exits and
flags an error message.
-checkip (Optional) Specifies the design units on which the rule-checking should
be done.
When you specify this command-line option, SpyGlass not only
considers the design unit specified by this option for rule-checking, but
also considers all those design units starting from the top in the
hierarchy till the design unit specified by this option.
subMod1 subMod2
-checkdu (Optional) Specifies the design hierarchy (level) for which synthesis
and rule-checking should be done.
All the design units instantiated under the design unit specified by this
command-line option are treated as greyboxes. For the rest of the
design units, rule-checking will be bypassed. In addition, rule-checking
will also be bypassed for greyboxes.
When you specify this command-line option, SpyGlass not only
considers the design unit specified by this option for rule-checking, but
also considers all those design units starting from the top in the
hierarchy till the design unit specified by this option.
subMod1 subMod2
subMod3
For the above case, consider that you specify the following command:
-checkdu="moduleA" -checkip="subModule1
In this case, SpyGlass would synthesize the modules, TOP, moduleA,
subModule1, and subModule3, and would consider only these
modules for rule-checking.
NOTE: The -checkdu option is given preference over the -checkip
option, if these options are specified for the same design unit.
Please note the following points for the -checkdu and -checkip
options:
• The command-line options, -stop, -stopfile, and -stopdir,
are given preference over the -checkdu and -checkip options.
For example, SpyGlass ignores the -checkdu and/or -checkip
options on those design units for which -stop option has been
specified.
• If the design unit specified with the -checkdu and -checkip
options have overlapping spanning tree (hiearchical tree rooted at
that design unit), the option with design unit at a higher hierarchical
level (in the tree) will be given higher priority.
• The -checkip and -checkdu options cannot be used to skip
synthesis and rule-checking on library cells (from -gateslib or -
sglib command-line options). All the library cells used inside the
design units specified with the -checkip and -checkdu options
are also considered a part of the reduced design and are considered
for rule-checking.
-disable_encrypted_hdl_checks
(Optional) Disables RTL rule-checking on the encrypted design units.
If you specify this command-line option, SpyGlass internally removes
any messages that point inside an encrypted IP.
-macro_synthesis_off
(Optional) Sets off the SYNTHESIS macro.
SpyGlass includes the SYNTHESIS macro by default. Use this option
turn off the macro.
-debug_proc (Optional) Dumps procedure call trace information for errors inside the
procedure definition.
By default, the value of this command-line option is set to no, and
SpyGlass does not dump any procedure call trace information.
To dump the procedure call trace information, specify
-debug_proc=yes or -debug_proc on command-line.
Consider the following example (with line numbers highlighted):
1 # file1.sdc
2 proc proc2 { period_arg2 } {
3 create_clock -name CLK1 in1 $period_arg2
4 create_clock -name CLK2 in1
5 }
1 # file2.sdc
2 proc proc1 { period_arg1 } {
3 proc2 $period_arg1
4 }
5 proc proc0 { period_arg0 } {
6 # First proc
7 proc1 $period_arg0
8 }
9 proc0 10
For the above example, SpyGlass flags the following SDC errors for
the create_clock command in the moresimple report:
SDC_106 Error file1.sdc 3 10 Incorrect
argument "10" for "create_clock" (too many arguments?)
SDC_145 Error file1.sdc 4 10 -period value
missing
However, if you want more information about the procedure call-trace,
use the -debug_proc option. When you specify this option,
SpyGlass generates the debugProcInfo file in the <wdir>/spyglass_spysch/
spyglass_sdc/ directory and dumps the procedure call-trace information
-net_osc_count_limit
(Optional) Specifies the number of oscillations allowed to get a stable
value on a particular net within SpyGlass logic evaluator.
By default, the limit for the oscillation count for any net is 100. You can
override this default value by using the -net_osc_count_limit
command, as shown in the following example:
spyglass -policy='dft' -fullpolicy -verilog -sgdc
test.sgdc test.v -32bit -dftShowWaveForm='on'
-net_osc_count_limit 10
endmodule
-sgsyn_clock_gating
(Optional) Causes SpyGlass to create a simple clock-gating logic
instead of creating a MUX-based enable logic when 16 or more
flip-flops with the same clock signal and the same enable signal are
found.
NOTE: You can use this option only when the -est_mode option is set or EST
mode compatible rules are specified.
-sgsyn_clock_gating_threshold
(Optional) Specifies the number (default 16) of flip-flops beyond
which SpyGlass create a simple clock gating logic for flip-flops with
the same clock signal and the same enable signal.
NOTE: You can use this option only when the -est_mode option is set or EST
mode compatible rules are specified.
VHDL-specific Options
VHDLOnlyOptions::=
[ -87 ]
[ -hdlin_synthesis_off_skip_text ]
[ -hdlin_translate_off_skip_text ]
[ -relax_hdl_parsing ]
[ -sort [-print] ]
-hdlin_synthesis_off_skip_text
(Optional) Causes SpyGlass to interpret the VHDL design code
between Synopsys synthesis_off/synthesis_on pragma pair
as comments.
-hdlin_translate_off_skip_text
(Optional) Causes SpyGlass to interpret the VHDL design code
between Synopsys translate_off/translate_on pragma pair
as comments.
Step 2:
Compile the following code using the the user-defined library,
userlib1:
--library userlib1; -- if -relax_hdl_parsing switch
--is used this declaration of library is not needed.
entity top is
port (
topA : in bit;
topB : in bit;
topZ : out bit);
end top;
variable j: mytype;
begin
j := (4=>'1', 5=>'0', others=>'1');
return a'length;
end;
begin
end A;
-sort (Optional) Sorts the design files before analyzing and prints the sorted
file order to the log file.
For a VHDL design to compile correctly, it must be analyzed in the
correct order (that is, lower-level dependent design units and libraries
must be analyzed before the top-level or primary units). You can tell
SpyGlass to sort your design files, or explicitly specify their order
yourself. You can also define the specific configuration to be used for
design.
NOTE: You should use the -sort command-line option only if you do not
know the correct design order. However, there are design configurations in
which the -sort command-line option cannot reliably infer the correct order,
no matter how good the sort algorithm is.
To have SpyGlass sort your design units automatically, use the -sort
option before you begin your analysis. This is particularly useful if you
are analyzing all your VHDL files. If you use the *.vhd wild card
without the -sort option, SpyGlass compiles the files in the order
they are returned from the shell (that is, alphabetically). The
dependency order determined by SpyGlass for the design is printed in
the log file.
NOTE: If a sort operation becomes confused as to which files need to be
updated, SpyGlass issues an error message saying one or more files need to
be recompiled. To resolve the issue, delete your work directory and any library
directories and rebuild them.
The required VHDL libraries (as specified as command-line
arguments) are checked for existence before SpyGlass attempts to
where the upper design unit contains instances of the bottom design
unit.
Verilog-specific Options
VerilogOnlyOptions::=
[ -allow_celldefine_as_top ]
[ -allow_module_override ]
[ -disable_hdllibdu_lexical_checks ]
[ +define{+<macro-name>} ]
[ -enable_precompile_vlog ]
[ -enableSV ]
[ -sfcu ]
[ -ignorelibs ]
[ +incdir{+<path-name>} ]
[ -inferblackbox | -inferblackbox_rtl ]
[ -no_celldefine_messages ]
[ -no_rcheck_celldefine ]
[ -no_synth_celldefine ]
[ [{-v <lib-name> }]
[{-y <lib-dir-name> }]
[+libext{+<ext-name> }] ]
[ +resetall ]
[ -show_lib ]
-allow_celldefine_as_top
(Optional) Specifies to perform rule-checking on 'celldefine module
top's hierarchy.
By default, a top that is inside a 'celldefine module is ignored for rule-
checking.
-allow_module_override
(Optional) Allows duplicate module/UDP definitions. Only the last-
found module/UDP definition is processed; earlier definitions with the
-disable_hdllibdu_lexical_checks
(Optional) Disallows lexical rule checking on precompiled libraries.
-enable_precompile_vlog
(Optional) Enables the Precompiled Verilog library feature.
See Working with Pre-compiled Verilog Libraries for more details.
By default, the Precompiled Verilog library feature is not enabled.
-no_celldefine_messages
-no_rcheck_celldefine
(Optional) Suppresses pre-synthesis rule-checking but enables post-
synthesis rule-checking.
NOTE: The -no_rcheck_celldefine switch will be deprecated in a
future SpyGlass release. If you specify this switch on command-line, SpyGlass
will give a warning message.
-no_synth_celldefine
(Optional) Causes SpyGlass to suppress synthesis and subsequent rule-
checking of modules defined with 'celldefine directive. Only
RTL level rule-checking will be performed on such modules.
NOTE: The -no_synth_celldefine switch will be deprecated in a
future SpyGlass release. If you specify this switch on command-line, SpyGlass
will give a warning message.
+resetall NOTE: This option is used in Verilog and Mixed mode and is ignored when
used in VHDL mode.
(Optional) Resets the Verilog compiler directive default_nettype
to language default which is wire.
Currently, other Verilog compiler directives are not reset by this option.
It is useful while analyzing multiple design files where the user does
not want to specify this default in each of these files.
--gdb
-lang (Optional) Specify the display language for messages and waivers.
NOTE: All other items are always in the English language.
NOTE: You must always specify the -lang command-line option while
invoking the SpyGlass Design Environment when intending to select a
language other than English; it cannot be specified from inside the SpyGlass
Design Environment. This is true for all types of invocations including loading
the Violation Database file of a previous SpyGlass run.
By default, display of messages and waivers is in the English language.
Use the -lang command-line option to specify a different display
language. For example, the following specification sets Japanese as the
SpyGlass display language:
-lang=ja
The valid values of the -lang command-line option are en (for
English) and ja (for Japanese).
The related Configuration file key is the
SPYGLASS_DISPLAY_LANGUAGE key.
NOTE: If you specify the language as japanese while invoking SpyGlass, then
the HTML rule help will not display the static HTML pages. The rule help will
display the dynamic help pages generated on the fly by SpyGlass. The
dynamic help pages are displayed only for the policies for which the Japanese
help files exist. If the help files do not exist for the Japanese language, then the
related static html pages will be displayed.
--valgrind (Optional) Invokes the Valgrind tool suite during the SpyGlass run.
Use the --valgrind option to review the memory issues in your
custom rules. Ensure that you specify this option on the command-line
itself and the standard environment variable VALGRIND_OPTS is
suitably set. Alternatively, you can also provide the required options to
--gdb (Optional) Invokes GDB (GNU Project Debugger) during the SpyGlass
run.
Use the --gdb option to debug your custom rules.
You must have the GDB tool suite installed in your filesystem.
The GDB tool suite is searched in the following order:
1. Path to the GDB executable set using the SPYGLASS_GDB_PATH
environment variable
2. The /usr/local/bin directory
3. The /usr/bin directory
4. Path set in your PATH environment variable
Overriding Command-line
Configuration File Setting Value Option
DEFAULT_STARTUP_MODE gui -batch
batch -gui
USE_32_BIT_EXECUTABLE_ONLY no
yes -32bit
DEFAULT_LANGUAGE_MODE VHDL -verilog, -def, or
-mixed
Verilog -vhdl, -def, or -mixed
Mixed -verilog, -vhdl, or
-def
DEF -verilog, -vhdl, or
-mixed
none -verilog, -vhdl, -def,
or -mixed
DEFAULT_TEMPLATE Any -template
DEFAULT_POLICY_FOR_SPYEXPLAIN Any -policies | -policy
DEFAULT_REPORT_FORMAT default, -report, -noreport
<report-
name>
none -report
DEFAULT_PRAGMA default, -pragma=<pragma-name-
<pragma- list>,
name-list> -pragma=nopragma
none -pragma=<pragma-name-
list>
VHDL_LIB_MAP Any -lib
COMMAND_OPTION_FILENAME Additive effect hence not possible
COMMAND_FILE_ARGS Additive effect hence not possible
Overriding Command-line
Configuration File Setting Value Option
SYSTEMVERILOG_SUPPORT no -enableSV
yes -disableSV
AUTOENABLE_INFERBLACKBOX no -inferblackbox,
-inferblackbox_rtl
yes -inferblackbox_rtl,
-disable_inferblackbox
yes_netlis -disable_inferblackbox
t
yes_rtl -inferblackbox,
-disable_inferblackbox
AUTOENABLE_VHDL_SORT no -sort,
-sort=lexical
yes -disable_sort
DEFAULT_VHDL_SORT_METHOD lexical -sort
no argument -sort=lexical
directory.
You can also use wildcards to specify file names. For example,
specifying *.vhd will result in processing all files with extension .vhd in
the current directory.
Rule Parameters
RuleParameters ::=
[ {-<name>=<value-list>} ]
(Optional) Specifies the values of rule parameters.
<name> is the name of the rule parameter. The names are available in
the ruledeck file and in the policy documentation.
<value-list> is the delimiter-separated value list of the rule
parameter. The value list must not have white spaces. For example, the
following definition is illegal:
-clocks=a, b
The legal definition is as follows:
-clocks=a,b
If you must use white spaces between items in the value list, use the
double-quotes around the value list as follows:
-clocks=”a, b”
Some rules have been written to be parameterizable. These rule
parameters are used just like a standard SpyGlass command-line option
while starting SpyGlass.
For example, in the Timing policy, the depth at which the LogicDepth
rule will generate a message has a default setting (10 levels). This can
be changed at runtime by changing the -delaymax rule parameter.
Use of these rule parameters is described in each policy’s Rules
Reference document.
Searching Rules
The spyexplain utility has a number of options, allowing you to
define the HDL language, the policy (or policies you wish to search)
and a keyword for which you wish spyexplain to search in the rule
description and name.
The syntax of using the spyexplain command to search rules is as
follows:
spyexplain
-verilog | -vhdl | -mixed | -def
[ -policies | -policy = {<policy-name>,} ]
[ { <rule-name> } ]
| [ -k <search-string> [ -searchlonghelp ] ]
[ -I <path> ]
[ -include_builtins ]
Searching Templates
You can also list the description of all rules in a specified template
using the -template option of the spyexplain utility.
The syntax of using the spyexplain command to list description of
rules in a template is as follows:
spyexplain
-verilog | -vhdl | -mixed | -def
[ -I <path> ]
[ -template <methodology-name>/<template-name> ]
[ -I <path> ]
[ -sgdc <constraint-name-list> ]
System Requirements
The HTML-based On-line Help system works on a UNIX computer
running version 4 or later of Internet Explorer or Netscape or a current
version of Mozilla, or Safari. The underlaying engine has also been
tested with Mozilla. JavaScript must be enabled in the user's browser.
To view the Java implementation of the Help system, Java must be
enabled in the user's browser.
Known Limitations
1. Netscape 6.0 is not supported on any platform; Netscape 6.1 and
later are supported.
2. The underlaying engine may also work with Opera and other
browsers, but it has been tested only with Internet Explorer,
Netscape, Mozilla, and Safari.
Overview
The Atrenta® SpyGlass® Predictive Analyzer has a Configuration File
feature using which you can specify configuration settings like default
startup mode (the SpyGlass Design Environment, Atrenta Console, or
batch), default policy to be run, default language setting, default report
format etc.
The setup information in a SpyGlass Configuration file is transparently
and automatically read by SpyGlass. Thus, it differs from a command
file that must be always specified using the -f command-line option.
SpyGlass Configuration file defines working defaults that are lower
priority and can be overridden by settings in a command file or directly
through command-line.
The SpyGlass Configuration File is an ASCII text file named
.spyglass.setup that can be located in four different locations so that you
set four levels of configuration settings:
[ VHDL_LIB_MAP = SYNOPSYS
$SPYGLASS_HOME/vhdl_libs/$SPYGLASS_PLATFORM/SYNOPSYS |
{ VHDL_LIB_MAP = <logical-lib-name> <physical-path> }]
[ AUTOENABLE_VHDL_SORT = no | yes ]
[ DEFAULT_VHDL_SORT_METHOD = lexical | jaguar ]
[{ COMMAND_OPTION_FILENAME = <file-name> }]
[{ COMMAND_FILE_ARGS = <arg-list> }]
[ SGDC_INCLUDE_FILE_PATH = <dir-name> ]
[ OVERLOAD = <named-overload-list> ]
[ DEFAULT_SLF_CONFIG_FILE = <file-name> ]
[ SDE_CONFIG_OPTIONS = COLLAPSE_POLICY_WINDOW |
COLLAPSE_RULE_WINDOW = yes | no ]
[ AUTOENABLE_BUILTIN_CHECKS_FOR_POLICY = <policy-list> ]
DEFAULT_STARTUP_MODE
The DEFAULT_STARTUP_MODE key sets the SpyGlass startup mode
as the SpyGlass Design Environment mode, Atrenta Console mode or
batch mode.
You can change the startup mode to batch mode, Atrenta Console
mode, or SpyGlass Design Environment mode by changing the value of
the DEFAULT_STARTUP_MODE key as follows:
• gui sde: Sets SpyGlass Design Environment as the startup mode
• gui: Sets Atrenta Console as the startup mode
• gui console: Sets Atrenta Console as the startup mode
• batch: Sets batch as the startup mode
NOTE: By default, the startup mode is the Atrenta Console mode (key value
gui).
The DEFAULT_STARTUP_MODE key can be overridden by the -gui
or -batch command-line options for values batch and gui
respectively.
DEFAULT_EXE_TYPE_ON_64BIT
The DEFAULT_EXE_TYPE_ON_64BIT key sets the default
executable binaries (64-bit or 32-bit) to be executed for SpyGlass and
spyglass_lc on 64-bit architectures.
By default, 64-bit SpyGlass binaries are executed on 64-bit
architectures. To specify 32-bit binaries to be executed on 64-bit
architectures, set the value of the DEFAULT_EXE_TYPE_ON_64BIT
key to 32.
The DEFAULT_EXE_TYPE_ON_64BIT key can be overridden by the
-32bit or -64bit command-line options for values 64 and 32
respectively.
USE_32_BIT_EXECUTABLE_ONLY
The USE_32_BIT_EXECUTABLE_ONLY key has been deprecated as
this key was used only for 64-bit HP platform which is no longer
supported.
DEFAULT_LANGUAGE_MODE
The DEFAULT_LANGUAGE_MODE key sets the language for the HDL
sources for SpyGlass analysis if no language command-line option
(-vhdl, -verilog, -mixed, or -def) is specified either directly
or through -f file(s) on the command-line.
If this setting is not available, you must specify the language at
command-line or a command file.
The DEFAULT_LANGUAGE_MODE key can be overridden by any of
the language command-line options (-vhdl, -verilog, -mixed, or
-def).
DEFAULT_TEMPLATE
The DEFAULT_TEMPLATE key sets the template to be run if neither
the -template nor the -policy/-policies command-line
option is specified either directly or through -f file(s) on the
command-line.
By default, SpyGlass does not pick any template.
You can set the value to a desired template in the
<methodology-name>/<template-name> format. For
example, the following setting sets the default template to be the
Coverage template of the DFT methodology:
DEFAULT_TEMPLATE = DFT/Coverage
You can also set a custom template as the default template. Just ensure
that the full path to the methodology directory is specified using the -I
command-line option while invoking SpyGlass. For example, you have
template named myTemplate1 located in /usr/john/myTemplates
directory. Then, set the DEFAULT_TEMPLATE key as follows:
DEFAULT_TEMPLATE = myTemplates/myTemplate1
Also, invoke SpyGlass with the following command-line option
(besides other standard options):
spyglass ... -I /usr/john ...
The DEFAULT_TEMPLATE key can be overridden by the
-template command-line option.
NOTE: When no template or policy is running, SpyGlass runs
-policy=none.
DEFAULT_TEMPLATE_DIRECTORY
The DEFAULT_TEMPLATE_DIRECTORY key sets the template
directory.
You can set the DEFAULT_TEMPLATE_DIRECTORY key to the
following values:
Value Indicates
GUIDEWARE_NEW_RTL (Default) The GuideWare templates forthe
New_RTL methodology (installed at <your-inst-
dir>/SPYGLASS_HOME/GuideWare/New_RTL
directory)
GUIDEWARE_IP_RTL The GuideWare templates forthe IP_RTL
methodology (installed at <your-inst-dir>/
SPYGLASS_HOME/GuideWare/IP_RTL
directory)
GUIDEWARE_IP_NETLIST The GuideWare templates forthe IP_RTL
methodology (installed at <your-inst-dir>/
SPYGLASS_HOME/GuideWare/IP_netlist
directory)
GUIDEWARE_SOC The GuideWare templates forthe SoC
methodology (installed at <your-inst-dir>/
SPYGLASS_HOME/GuideWare/SoC directory)
DEFAULT_POLICY
The DEFAULT_POLICY key locks the licence of the policy/policies to
be run while invoking the SpyGlass Design Environment if none of the
-policy/-policies and -template/-templates
command-line options is specified directly at the command line.
While invoking SpyGlass Design Environment, if you do not use the
DEFAULT_POLICY key and try to run a policy, it might be possible
that the license for the same policy is checked out by some other user.
To avoid such a situation, you can lock the license for that policy/
policies to be run by specifying them using the DEFAULT_POLICY
key.
You should specify the policy names separated by a space.
DEFAULT_POLICY_FOR_SPYEXPLAIN
The DEFAULT_POLICY_FOR_SPYEXPLAIN key sets the default
policy to search with the spyexplain utility if the -policy/
-policies command-line option is not specified directly on the
command-line.
SpyGlass searches all installed policies by default if you have not
specified any policy on the command-line.
To search a specified policy by default, set the policy mnemonic as the
value. You can also specify multiple policy mnemonics as a space- or
comma-separated single-line list.
You can set the value to none to disable searching any policy
including the SpyGlass Built-in policies.
The DEFAULT_POLICY_FOR_SPYEXPLAIN key can be overridden
by the -policy/-policies command-line option.
DEFAULT_REPORT_FORMAT
The DEFAULT_REPORT_FORMAT key sets the default report format
in which messages will be reported at end of SpyGlass run if the
-report command-line option is not specified either directly or
through -f file(s) on the command-line.
By default, the SpyGlass run generates The moresimple report.
You can set the value to none to disable this setting and not print any
report at the end of SpyGlass run (that is, same behavior as
-noreport command-line option).
The DEFAULT_REPORT_FORMAT key can be overridden by the
-report command-line option.
DEFAULT_REPORT_FORMAT_FOR_SLC
The DEFAULT_REPORT_FORMAT_FOR_SLC key sets the default
report format in which messages will be reported at end of a SpyGlass
Library Compiler run if the -report command-line option is not
specified either directly or through -f file(s) on the command-line.
DEFAULT_PRAGMA
The DEFAULT_PRAGMA key sets the pragma keywords.
By default, SpyGlass assumes synopsys as pragma keyword for
Verilog designs and synopsys and pragma as pragma keywords for
VHDL designs.
Set the name of the default pragma keyword as the value. You can also
specify multiple pragma keywords as a space- or comma-separated
single-line list.
You can set the value to none to disable this setting (that is, same
behavior as -pragma=nopragma command-line behavior).
DEFAULT_BBOX_MODEL
The DEFAULT_BBOX_MODEL key allows you to define the
BBOX_MODEL type(s) to be recognized for SpyGlass rule-checking.
By default, the DEFAULT_BBOX_MODEL configuration key is set to
BBOX_LIBCELL so that only the SpyGlass Library Compiler-
generated cells are considered as the BBOX_MODEL type.
You can set the DEFAULT_BBOX_MODEL configuration key to
BBOX_ILM for user-defined BBOX_MODEL types,
BBOX_CELLDEFINE for Verilog 'celldefine modules,
BBOX_LIBCELL for the SpyGlass Library Compiler-generated cells,
BBOX_ENCRYPTED_LIB for the Precompiled and encrypted library
cells, or any combination of these values as a space- or comma-
separated list.
AUTOENABLE_RULEGROUP_PARAMETER_CONTROL
The AUTOENABLE_RULEGROUP_PARAMETER_CONTROL key
allows you to specify whether the rules of a rule group specified with
the -rules command-line option are always run or are run according
to their rule-running condition.
By default, the
AUTOENABLE_RULEGROUP_PARAMETER_CONTROL configuration
key is set to no so that the rules of a rule group specified with the
-rules command-line option are run irrespective of their rule-
running conditions. Also, rules that are enabled/disabled by a boolean-
type rule parameter (for example, the -fast rule parameter in the Lint
policy disables some rules) are run irrespective of the rule parameter
status.
You can set the
AUTOENABLE_RULEGROUP_PARAMETER_CONTROL configuration
key to yes so that the rules of a rule group specified with the -rules
command-line option are run according to their rule-running condition.
A rule that is switched off by default will not be run. Also, rules that are
enabled/disabled by a boolean-type rule parameter are run based on the
rule parameter status only.
AUTOENABLE_MEMORY_HANDLING
The AUTOENABLE_MEMORY_HANDLING key enables The Memory
Reduction Feature.
By default, the AUTOENABLE_MEMORY_HANDLING key is set to no
and the Memory Reduction feature is not enabled.
AUTOENABLE_HUGE_SCHEMATIC_DISPLAY
The AUTOENABLE_HUGE_SCHEMATIC_DISPLAY key allows you
to load huge schematics in the Modular Schematic window of the
SpyGlass Design Environment.
By default, such schematics are not loaded.
SDE_CONFIG_OPTIONS
The SDE_CONFIG_OPTIONS key allows you to expand/collapse the
Policies or Rules sections in the Policies/Rules/Parameters window.
The SDE_CONFIG_OPTIONS key accepts the
COLLAPSE_POLICY_WINDOW and COLLAPSE_RULE_WINDOW as
arguments. If the value of either/both arguments is set to yes, then that
section (Policies/Rules) is collapsed. For example,
SDE_CONFIG_OPTIONS=COLLAPSE_POLICY_WINDOW=yes
If you expand/collapse a section once, then that state of the window is
preserved for later sessions.
NOTE: The SDE_CONFIG_OPTIONS key is not available in SpyGlass by
default. You need to make this entry manually in the .spylgass.setup file.
AUTOENABLE_BUILTIN_CHECKS_FOR_POLICY
The AUTOENABLE_BUILTIN_CHECKS_FOR_POLICY key allows
you to run built-in rules of policies specified in its value list,
irrespective of rule set selected from command-line or templates.
Policies specified in this list are loaded and built-in rules are run in
following situations:
• While precompiling your design (command line option -noelab
has been specified):
• The -norules command line option has been specified
• No policy has been specified on the command-line.
VHDL_LIB_MAP
The VHDL_LIB_MAP key sets the default VHDL Library mappings.
This configuration setting is equivalent to the -lib <logical-
lib-name> <physical-path> command-line behavior.
By default, the VHDL_LIB_MAP key is set to the following value:
SYNOPSYS $SPYGLASS_HOME/vhdl_libs/$SPYGLASS_PLATFORM/SYNOPSYS
VHDL_LIB_MAP Configuration Setting can be repeated for
specification of multiple logical library maps. However, for any one
logical library name, only one setting is taken as per order of
precedence defined earlier. The value specified for a logical library
map in a command file or command-line have higher precedence than
this specification. When SpyGlass is run, library map of all logical
libraries as defined in either configuration file or command-file is
taken. For example, if library L1 and L2 are mapped in the
Configuration File and library L3 and L4 are mapped in a specified
command file, then SpyGlass is run with all four library map
arguments.
The VHDL_LIB_MAP Configuration Setting also has an additive
effect. Thus, a VHDL library mapping specified using the
AUTOENABLE_VHDL_SORT
The AUTOENABLE_VHDL_SORT key sets automatic sorting of VHDL
source files.
By default, the AUTOENABLE_VHDL_SORT key is set to no and the
automatic sorting feature is disabled.
You can set the value of the AUTOENABLE_VHDL_SORT key to yes
to enable the automatic sorting feature and specify the sorting
algorithm using the DEFAULT_VHDL_SORT_METHOD key.
The AUTOENABLE_VHDL_SORT key can be overridden by the
-sort or -disable_sort command-line options.
DEFAULT_VHDL_SORT_METHOD
The DEFAULT_VHDL_SORT_METHOD key sets the algorithm type for
SpyGlass automatic VHDL file sorting feature.
By default, the DEFAULT_VHDL_SORT_METHOD key is set to
jaguar and the special automatic sorting algorithm is enabled.
You can set the following values to the
DEFAULT_VHDL_SORT_METHOD key:
Value Effect
lexical Equivalent to specifying the -sort=lexical command-line option
jaguar Equivalent to specifying the -sort=jaguar command-line option
AUTOENABLE_INFERBLACKBOX
The AUTOENABLE_INFERBLACKBOX key sets whether the SpyGlass
Inferblackbox feature is enabled for all design phases, is enabled for a
particular design phase, or is disabled.
By default, the AUTOENABLE_INFERBLACKBOX key is set to yes
and the feature is enabled for both RTL and Netlist phases.
You can set the following values to the
AUTOENABLE_INFERBLACKBOX key:
Value Effect
yes or Equivalent to specifying the -inferblackbox command-line
yes_netlist option
yes_rtl Equivalent to specifying the -inferblackbox_rtl
command-line option
no Do nothing
-inferblackbox, -inferblackbox_rtl, or
-disable_inferblackbox command-line options.
AUTOENABLE_PRECOMPILED_VLOG
The AUTOENABLE_PRECOMPILED_VLOG key enables the SpyGlass
support of pre-compiled Verilog libraries.
To enable pre-compiled Verilog library support, you need to supply the
-enable_precompile_vlog command-line option.
Setting the AUTOENABLE_PRECOMPILED_VLOG key to yes is
equivalent to supplying the -enable_precompile_vlog
command-line option.
COMMAND_OPTION_FILENAME
The COMMAND_OPTION_FILENAME key specifies the default
command file.
This configuration setting is equivalent to the -f <file-name>
command-line behavior. The file specified with the
COMMAND_OPTION_FILENAME key is always read before any actual
command-line options.
You can supply this configuration setting multiple times in one
Configuration File.
The COMMAND_OPTION_FILENAME configuration setting also has
an additive effect. Thus, command files specified at any level
(Configuration File(s), command-line, or in a command file) are all
supplied to SpyGlass.
COMMAND_FILE_ARGS
The COMMAND_FILE_ARGS key lets you specify the contents of a -f
command file inline inside the Configuration File.
A COMMAND_FILE_ARGS configuration setting must have its value in
the same line where the key is specified and it cannot span multiple
lines. However, you can have multiple specifications of the
COMMAND_FILE_ARGS key in the same configuration file and the
result of adding all these specifications will be used during the
SpyGlass run. Also, the contents of this key in various configuration
files are added (and not replaced as true for most of the other keys) and
used for the SpyGlass run. This key is more convenient to use when
you have concise -f listing for the configuration file and this option
saves the overhead of creating a separate -f file and then using it
inside the configuration file.
SGDC_INCLUDE_FILE_PATH
The SGDC_INCLUDE_FILE_PATH key allows you to specify the
path from where included SpyGlass Design Constraints files can be
picked up.
By default, the SGDC_INCLUDE_FILE_PATH key is not set and the
included SGDC files (specified using the INCLUDE directive in an
SGDC file) are searched and included as follows:
1. If included SGDC file name is an absolute file name, then the
specified file at the specified location is included.
2. If included SGDC file name is a relative file name, then the included
SGDC file is searched in the relative directory location with respect
to the location of the parent SGDC file.
3. If the included SGDC file name is any other type of file name (that is
the file name does not start with / (first case above) or . (second case
above), then the included SGDC file is searched with respect to the
location of the parent SGDC file.
OVERLOAD
The OVERLOAD key lets you specify the default named overloads.
By default, SpyGlass assumes no named overload. You can specify the
named overloads as a space-separated list as in the following example:
OVERLOAD = CAD BOB METEOR
To disable named overloads, specify the OVERLOAD key with none
value (that is, same behavior as -policies=none command-line
behavior).
To set an additive behavior of the OVERLOAD key, use the
OVERLOAD value. Consider the following example configuration
files:
SPYGLASS_DISPLAY_LANGUAGE
The SPYGLASS_DISPLAY_LANGUAGE key lets you specify the
SpyGlass display language for messages and waivers.
NOTE: All other items are always in the English language.
The valid values of the SPYGLASS_DISPLAY_LANGUAGE key are
en (for English) and ja (for Japanese).
By default, the SPYGLASS_DISPLAY_LANGUAGE key is not set and
all display is in the English language. Use the
SPYGLASS_DISPLAY_LANGUAGE key to specify a different display
language. For example, the following specification sets Japanese as the
SpyGlass display language:
SPYGLASS_DISPLAY_LANGUAGE = ja
The SPYGLASS_DISPLAY_LANGUAGE key can be overridden by the
-lang command-line option.
DEFAULT_SLF_CONFIG_FILE
The DEFAULT_SLF_CONFIG_FILE key specifies the name of a text
file that contains the names of the library attributes not to be reported as
un-supported by the SpyGlass Library Compiler.
The format of the text file contents is as follows:
IGNORE_LIB_CONSTRUCT =
{
[<attr-group>::]<attr-name>
[<attr-group>::]<attr-name>
[<attr-group>::]<attr-name>
...
}
Here, <attr-group> is the name of a library attribute group and
<attr-name> is the name of a library attribute that belongs to the
library attribute group <attr-group>. Thus, the following example
suppresses the warnings for all instances of time_unit library
attribute under the pin library group:
IGNORE_LIB_CONSTRUCT =
{
...
pin::time_unit
...
}
Specifying <attr-group> is optional. Thus, you can just specify the
library attribute name to ignore it under all applicable library attribute
groups. Thus, the following example causes library attribute direction
to be ignored under all its applicable library attribute groups:
IGNORE_LIB_CONSTRUCT =
{
...
direction
...
}
You can add comments in the text file using the #-type comment
format.
AUTOENABLE_GATESLIB_AUTOCOMPILE
The AUTOENABLE_GATESLIB_AUTOCOMPILE key allows you to
automatically compile the gate libraries (.lib) to SpyGlass-compatible
format library files (.sglib).
By default, the value of this key is set to no and the auto compilation of
gate libraries does not occur. You can set the value to yes or
yes_forced to enable auto compilation of the gate libraries.
If set to yes, then given .lib files are compiled to .sglib file unless there
is an up-to-date copy in the cache directory. However, if set to
yes_forced then any criteria for re-compilation of gate libraries will
not be evaluated. In such case, the specified .lib files will always get
compiled and overwrite the existing .sglib file present in the cache
directory.
The AUTOENABLE_GATESLIB_AUTOCOMPILE key value set to
yes or yes_forced can be overridden by the
-disable_gateslib_autocompile command-line option. In
this case, the auto-compilation is triggered by specifying the
-enable_gateslib_autocompile and/or
-force_gateslib_autocompile command-line option.
Similarly, if value of this key is no then you can enable auto-
compilation by specifying the -
enable_gateslib_autocompile command-line option.
Recognizing Clocks
Different Atrenta Standard Policies process clock information based on
their specific rule-checking requirements. See the respective Policy
Rules Reference document for details.
The following table summarizes how different Atrenta Standard
Policies process clock information:
Overview
This chapter describes the commonly accepted Mixed-Language design
syntax and semantics requirements.
NOTE: SpyGlass will be implementing these requirements in phases over
releases. See Current Limitations for requirements not yet implemented in the
current version.
--test.vhd
entity ent is
port (entIn : in std_logic;
entOut : out std_logic);
end ent;
begin
Inst1 : comp port map ( a => entIn, b => entOut );
...
end Behave;
-- test.vhd
entity top is
port (in1 : in std_logic; out1 : out std_logic);
end top;
begin
inst1 : my_comp1 port map (C1 => in1, D1 => out1);
...
end arch_top;
For entity instances, no additional declaration is required. You can
--test.vhd
entity ent is
port (entIn : in std_logic;
entOut : out std_logic);
end ent;
--test.vhd
entity ent is
port (entIn : in std_logic;
entOut : out std_logic);
end ent;
begin
Inst1 : mod port map ( a => entIn, b => entOut );
...
end Behave;
Restrictions
Mixed-Language semantics impose the following restrictions on use of
any of the above instantiations:
1. The design unit being instantiated should be a Verilog module. The
Verilog built-in gate or UDP cannot be instantiated.
2. All ports in Verilog module should be named port. Unnamed ports
are not supported.
Format Means...
\myLibrary.myEntity(myArch) Architecture myArch of entity myEntity from
logical library myLibrary
\myEntity(myArch) Architecture myArch of entity myEntity from
logical library work
\myLibrary.myEntity MRA Architecture of entity myEntity from logical
library myLibrary
\myLibrary.myConfigDecl Configuration declaration myConfigDecl from
logical library myLibrary
myName Either configuration declaration or entity myName
from logical library work
//test.v
module mod (a,b);
input a;
output b;
\mylib.ent(Behave) inst1(a,b);
...
endmodule
//test.v
module mod (a,b);
input a;
output b;
\mylib.config inst1(a,b);
...
endmodule
--test.vhd
entity top is
...
end top;
signal sig : X ;
component e1
port (in1, in2 : bit; out1 : out bit);
end component;
begin
inst : e1 port map(
in1 => sig.f1,
in2 => sig.f2,
out1 => sig.f3);
...
end top;
Index
mixed 131 M
options 131 macro definitions 119
Verilog 131 macros
VHDL 131 Verilog options 119
latch policy 58 mapping
Legend window library 136
buttons maximum violations by rule name 125
Jump To Focus 386 maximum violations per rule 125
Next Sink 386 memory
Next Source 386 upper threshold 124
Previous Sink 386
Previous Source 386 memory arrays 476
Probing Modes 385 menu
focus selected message 386 Edit 113
focus selected probe 386 File 106
library Help 213
file selection 136 Report 209
VHDL 136 Window 167
mapping 136 menu bar 105
SpyGlass library 125 Edit menu 113
Synopsis Gates Library 125 File menu 106
VHDL libraries 136 Help menu 213
library compiler 164 Report menu 209
library directories Window menu 167
Verilog 142 Message window 279
library file extensions miscellaneous policy 58
Verilog 143 mixed
library files language selection 131
selection 136 modules
Verilog 142 black-box 125
library selection top level 120
VHDL 136 moresimple report 71, 78
library translation 164 viewing 210
line numbers moresimple_rulesort report 80
viewing 168 viewing 211
lint policy 58 mousing techniques
LowPower policy 59 Hierarchical Schematic window 336
Incremental Schematic window 366
Index
N P
name parameter 527
.vbd file 161 parameter selection
naming a .vdb file 161 policies 154
net list checks 43 parameter setting 154
-nopreserve option 477, 702 Perl
NSS Options 341 interface 31
interpreter 31
O policies 147
open area 58
Hierarchical Schematic window 222 Atrenta standard policies 58
Incremental Schematic window 222 Clear button 150
opening clearing 150
.vbd file 161 clock-reset 58
Hierarchical Schematic window 167 constraints 59
Incremental Schematic window 168 Default button 150
OpenMORE Policy 29 dft 58
openmore policy 58 Edit button 163
OpenVDB 161 editing parameters 154
options editing rule selection 163
language 131 erc 58
other 124 latch 58
synthesis 123 lint 58
Verilog 118 lv 59
-verilog 118 miscellaneous 58
VHDL 121 openmore 58
-vhdl 121 parameter selection 154
other options 124 Parameters button 154
black-box modules 125 restore default settings 150
command line 127 rule selection 163
maximum violations by rule name 125 selecting 147
maximum violations per rule 125 starc 58
SpyGlass library files 125 timing 58
SpyGlass output file directory 126 pragma 42
Synopsis Gates Library 125 pragmas 123
output file directory 126 pre-compile
library to RTL 164
Synopsys Liberty files 164
Index
Index