Synposis FPGA Synthesis User Guide
Synposis FPGA Synthesis User Guide
Each copy shall include all copyrights, trademarks, service marks, and
proprietary rights notices, if any. Licensee must assign sequential numbers
to all copies. These copies shall contain the following legend on the cover
page:
This document is duplicated with the permission of Synopsys, Inc., for the
exclusive use of __________________________________________ and its
employees. This is copy number __________.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
2 December 2012
:
Disclaimer
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE.
Registered Trademarks ()
Synopsys, AEON, AMPS, Astro, Behavior Extracting Synthesis Technology,
Cadabra, CATS, Certify, CHIPit, CoMET, CODE V, Design Compiler,
DesignWare, EMBED-IT!, Formality, Galaxy Custom Designer, Global
Synthesis, HAPS, HapsTrak, HDL Analyst, HSIM, HSPICE, Identify, Leda,
LightTools, MAST, METeor, ModelTools, NanoSim, NOVeA, OpenVera, ORA,
PathMill, Physical Compiler, PrimeTime, SCOPE, Simply Better Results, SiVL,
SNUG, SolvNet, Sonic Focus, STAR Memory System, Syndicated, Synplicity,
the Synplicity logo, Synplify, Synplify Pro, Synthesis Constraints Optimization
Environment, TetraMAX, UMRBus, VCS, Vera, and YIELDirector are regis-
tered trademarks of Synopsys, Inc.
Trademarks ()
AFGen, Apollo, ARC, ASAP, Astro-Rail, Astro-Xtalk, Aurora, AvanWaves,
BEST, Columbia, Columbia-CE, Cosmos, CosmosLE, CosmosScope, CRITIC,
CustomExplorer, CustomSim, DC Expert, DC Professional, DC Ultra, Design
Analyzer, Design Vision, DesignerHDL, DesignPower, DFTMAX, Direct Silicon
Access, Discovery, Eclypse, Encore, EPIC, Galaxy, HANEX, HDL Compiler,
Hercules, Hierarchical Optimization Technology, High-performance ASIC
Prototyping System, HSIMplus, i-Virtual Stepper, IICE, in-Sync, iN-Tandem,
Intelli, Jupiter, Jupiter-DP, JupiterXT, JupiterXT-ASIC, Liberty,
Libra-Passport, Library Compiler, Macro-PLUS, Magellan, Mars, Mars-Rail,
Mars-Xtalk, Milkyway, ModelSource, Module Compiler, MultiPoint, ORAengi-
neering, Physical Analyst, Planet, Planet-PL, Polaris, Power Compiler,
Raphael, RippledMixer, Saturn, Scirocco, Scirocco-i, SiWare, Star-RCXT,
Star-SimXT, StarRC, System Compiler, System Designer, Taurus, Total-
Recall, TSUPREM-4, VCSi, VHDL Compiler, VMC, and Worksheet Buffer are
trademarks of Synopsys, Inc.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 3
:
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
4 December 2012
Contents
Chapter 1: Introduction
Synopsys FPGA and Prototyping Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
FPGA Implementation Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Synopsys FPGA Tool Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Scope of the Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
The Document Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
User Interface Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 5
:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
6 December 2012
:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 7
:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
8 December 2012
:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 9
:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
10 December 2012
:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 11
:
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
12 December 2012
CHAPTER 1
Introduction
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 13
Chapter 1: Introduction Synopsys FPGA and Prototyping Products
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
14 December 2012
Synopsys FPGA and Prototyping Products Chapter 1: Introduction
The Synplify Premier product offers FPGA designers and ASIC prototypers,
targeting single FPGA-based prototypes, with the most efficient method of
design implementation and debug. The Synplify Premier software provides
in-system verification of FPGAs, dramatically accelerates the debug process,
and provides a rapid and incremental method for finding elusive design
problems.
Features exclusively supported in the Synplify Premier tool are the following:
Fast and Enhanced Synthesis Modes
Physical Synthesis
Design Planning (Optional)
DesignWare Support
Integrated RTL Debug (Identify Tool Set)
Power Switching Activity (SAIF Generation)
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 15
Chapter 1: Introduction Synopsys FPGA and Prototyping Products
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
16 December 2012
Synopsys FPGA and Prototyping Products Chapter 1: Introduction
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 17
Chapter 1: Introduction Synopsys FPGA and Prototyping Products
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
18 December 2012
Scope of the Document Chapter 1: Introduction
Audience
The Synplify Pro software tool is targeted towards the FPGA system developer.
It is assumed that you are knowledgeable about the following:
Design synthesis
RTL
FPGAs
Verilog/VHDL
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 19
Chapter 1: Introduction Getting Started
Getting Started
This section shows you how to get help with the Synplify Pro synthesis
software.
Getting Help
Before you call Synopsys Support, look through the documented information.
You can access the information online from the Help menu, or refer to the PDF
version. The following table shows you how the information is organized.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
20 December 2012
User Interface Overview Chapter 1: Introduction
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 21
Chapter 1: Introduction User Interface Overview
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
22 December 2012
CHAPTER 2
This chapter describes the Logic Synthesis Design Flow, on page 24.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 23
Chapter 2: FPGA Logic Flow Logic Synthesis Design Flow
The following figure shows the phases and the tools used for logic synthesis
and some of the major inputs and outputs. You can use the Synplify Pro
synthesis software for this flow. The interactive timing analysis is optional.
Although the flow shows the vendor constraint files as direct inputs to the
P&R tool, you should add these files to the synthesis project for timing black
boxes.
Synthesized netlist
Synthesis constraints
Vendor constraints
Vendor Tool
1. Create a project.
LO
2. Add the source files to the project.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
24 December 2012
Logic Synthesis Design Flow Chapter 2: FPGA Logic Flow
6. Analyze the results, using the log file, the HDL Analyst schematic views,
the Message window and the Watch Window.
After you have completed the design, you can use the output files to run
place-and-route with the vendor tool and implement the FPGA.
Create Project
Set Constraints
Set Options
Analyze Results
No
Goals Met?
Yes
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 25
Chapter 2: FPGA Logic Flow Logic Synthesis Design Flow
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
26 December 2012
Chapter 3: Preparing the Input
CHAPTER 3
When you synthesize a design, you need to set up two kinds of files: HDL files
that describe your design, and project files to manage the design. This
chapter describes the procedures to set up these files and the project. It
covers the following:
Setting Up HDL Source Files, on page 28
Using Mixed Language Source Files, on page 40
Working with Constraint Files, on page 45
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 27
Chapter 3: Preparing the Input Setting Up HDL Source Files
You can use Verilog or VHDL for your source files. The files have v (Verilog) or
vhd (VHDL) file extensions, respectively. You can use Verilog and VHDL files
in the same design. For information about using a mixture of Verilog and
VHDL input files, see Using Mixed Language Source Files, on page 40.
1. To create a new source file either click the HDL file icon ( ) or do the
following:
Select File->New or press Ctrl-n.
In the New dialog box, select the kind of source file you want to create,
Verilog or VHDL. Note that you can use the Context Help Editor for
Verilog designs that LO
contain SystemVerilog constructs in the source
file. For more information, see Using the Context Help Editor, on
page 30.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
28 December 2012
Setting Up HDL Source Files Chapter 3: Preparing the Input
Type a name and location for the file and Click OK. A blank editing
window opens with line numbers on the left.
2. Type the source information in the window, or cut and paste it. See
Editing HDL Source Files with the Built-in Text Editor, on page 32 for
more information on working in the Editing window.
For the best synthesis results, check the Reference Manual and ensure
that you are using the available constructs and vendor-specific attri-
butes and directives effectively.
Once you have created a source file, you can check that you have the right
syntax, as described in Checking HDL Source Files, on page 31.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 29
Chapter 3: Preparing the Input Setting Up HDL Source Files
2. When you select a construct in the left-side of the window, the online
help description for the construct is displayed. If the selected construct
has this feature enabled, the online help topic is displayed on the top of
the window and a genericLO code template for that construct is displayed
at the bottom.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
30 December 2012
Setting Up HDL Source Files Chapter 3: Preparing the Input
3. The Insert Template button is also enabled. When you click the Insert
Template button, the code shown in the template window is inserted into
your SystemVerilog file at the location of the cursor. This allows you to
easily insert code and modify it for the design that you are going to
synthesize.
4. If you want to copy only parts of the template, select the code you want
to insert and click Copy. You can then paste it into your file.
4. Review the errors by opening the syntax.log file when prompted and use
Find to locate the error message (search for @E). Double-click on the 5-
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 31
Chapter 3: Preparing the Input Setting Up HDL Source Files
character error code or click on the message text and push F1 to display
online error message help.
6. Repeat steps 4 and 5 until all syntax and synthesis errors are corrected.
The Text Editor window opens and displays the source file. Lines are
numbered. Keywords are in blue, and comments in green. String values
are in red. If you want to change these colors, see Setting Editing
Window Preferences, on page 36.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
32 December 2012
Setting Up HDL Source Files Chapter 3: Preparing the Input
This table summarizes common editing operations you might use. You
can also use the keyboard shortcuts instead of the commands.
To... Do...
Cut, copy, and paste; Select the command from the popup (hold down
undo, or redo an action the right mouse button) or Edit menu.
Go to a specific line Press Ctrl-g or select Edit->Go To, type the line
number, and click OK.
Find text Press Ctrl-f or select Edit ->Find. Type the text you
want to find, and click OK.
Replace text Press Ctrl-h or select Edit->Replace. Type the text you
want to find, and the text you want to replace it
with. Click OK.
Complete a keyword Type enough characters to uniquely identify the
keyword, and press Esc.
Indent text to the right Select the block, and press Tab.
Indent text to the left Select the block, and press Shift-Tab.
Change to upper case Select the text, and then select Edit->Advanced
->Uppercase or press Ctrl-Shift-u.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 33
Chapter 3: Preparing the Input Setting Up HDL Source Files
To... Do...
Change to lower case Select the text, and then select Edit->Advanced
->Lowercase or press Ctrl-u.
Add block comments Put the cursor at the beginning of the comment
text, and select Edit->Advanced->Comment Code or
press Alt-c.
Edit columns Press Alt, and use the left mouse button to select
the column. On some platforms, you have to use
the key to which the Alt functionality is mapped,
like the Meta or diamond key.
3. To cut and paste a section of a PDF document, select the T-shaped Text
Select icon, highlight the text you need and copy and paste it into your
file. The Text Select icon lets you select parts of the document.
4. To create and work with bookmarks in your file, see the following table.
To... Do...
Insert a Click anywhere in the line you want to bookmark.
bookmark Select Edit->Toggle Bookmarks, press Ctrl-F2, or select the
first icon in the Edit toolbar.
The line number is highlighted to indicate that there is a
bookmark at the beginning of that line.
Delete a Click anywhere in the line with the bookmark.
bookmark Select Edit->Toggle Bookmarks, press Ctrl-F2, or select the
first icon in the Edit toolbar.
The line number is no longer highlighted after the
bookmark is deleted.
Delete all Select Edit->Delete all Bookmarks, press Ctrl-Shift-F2, or select
bookmarks the last icon in the Edit toolbar.
The line numbers are no longer highlighted after the
LO are deleted.
bookmarks
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
34 December 2012
Setting Up HDL Source Files Chapter 3: Preparing the Input
To... Do...
Navigate a file Use the Next Bookmark (F2) and Previous Bookmark (Shift-F2)
using commands from the Edit menu or the corresponding icons
bookmarks from the Edit toolbar to navigate to the bookmark
you want.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 35
Chapter 3: Preparing the Input Setting Up HDL Source Files
7. To crossprobe from the source code window to other views, open the
view and select the piece of code. See Crossprobing from the Text Editor
Window, on page 296 for details.
8. When you have fixed all the errors, select File->Save or click the Save icon
to save the file.
1. Select Options->Editor Options and either Synopsys Editor or External Editor. For
more information about the external editor, see Using an External Text
Editor, on page 38.
2. Then depending on the type of file you open, you can to set the
background, syntax coloring, and font preferences to use with the text
editor.
Note: Thereafter, text editing preferences you set for this file will apply
to all files of this file type.
The Text Editing window can be used to set preferences for project files,
source files (Verilog/VHDL), log files, Tcl files, constraint files, or other
default files from the Editor Options dialog box.
3. You can set syntax colors for some common syntax options, such as
keywords, strings, and comments. For example in the log file, warnings
and errors can be color-coded
LO for easy recognition.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
36 December 2012
Setting Up HDL Source Files Chapter 3: Preparing the Input
You can select basic colors or define custom colors and add them to
your custom color palette. To select your desired color click OK.
4. To set font and font size for the text editor, use the pull-down menus.
5. Check Keep Tabs to enable tab settings, then set the tab spacing using
the up or down arrow for Tab Size.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 37
Chapter 3: Preparing the Input Setting Up HDL Source Files
From a Linux platform, for a text editor that does not create its own
LO ... Browse button. Instead, type gnome-
window, do not use the
terminal -x editor. To use emacs for example, type gnome-terminal
-x emacs.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
38 December 2012
Setting Up HDL Source Files Chapter 3: Preparing the Input
The software has been tested with the emacs and vi text editors.
3. Click OK.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 39
Chapter 3: Preparing the Input Using Mixed Language Source Files
1. Remember that Verilog does not support unconstrained VHDL ports and
set up the mixed language design files accordingly.
2. If you want to organize the Verilog and VHDL files in different folders,
select Options->Project View Options and toggle on the View Project Files in
Folders option.
When you add the files to the project, the Verilog and VHDL files are in
separate folders in the Project view.
3. When you open a project or create a new one, add the Verilog and VHDL
files as follows:
Select the Project->Add Source File command or click the Add File button.
On the form, set Files of Type to HDL Files (*.vhd, *.vhdl, *.v).
Select the Verilog and VHDL files you want and add them to your
project. Click OK. For details about adding files to a project, see
Making Changes to a Project, on page 116.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
40 December 2012
Using Mixed Language Source Files Chapter 3: Preparing the Input
The files you added are displayed in the Project view. This figure shows
the files arranged in separate folders.
4. When you set device options (Implementation Options button), specify the
top-level module. For more information about setting device options, see
Setting Logic Synthesis Implementation Options, on page 131.
If the top-level module is Verilog, click the Verilog tab and type the
name of the top-level module.
If the top-level module is VHDL, click the VHDL tab and type the name
of the top-level entity. If the top-level module is not located in the
default work library, you must specify the library where the compiler
can find the module. For information on how to do this, see VHDL
Panel, on page 164.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 41
Chapter 3: Preparing the Input Using Mixed Language Source Files
5. Select the Implementation Results tab on the same form and select one
output HDL format for the output files generated by the software. For
more information about setting device options, see Setting Logic
Synthesis Implementation Options, on page 131.
For a Verilog output netlist, select Write Verilog Netlist.
For a VHDL output netlist, select Write VHDL Netlist.
Set any other device options and click OK.
You can now synthesize your design. The software reads in the mixed
formats of the source files and generates a single srs file that is used for
synthesis.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
42 December 2012
Using Mixed Language Source Files Chapter 3: Preparing the Input
However, if you have a mixed-language design where you have specified the
top level, you must specify the VHDL file order for the tool. You only need to
do this once, by selecting the Run->Arrange VHDL files command. If you do not
do this, you get an error message.
To avoid inferring a black box, the Verilog literal for the VHDL Boolean
generic set to TRUE must be 1b1, not 1. Similarly, if the VHDL Boolean generic
is FALSE, the corresponding Verilog literal must be 1b0, not 0. The following
example shows how to represent Boolean generics so that they correctly pass
the VHDL-Verilog boundary, without inferring a black box.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 43
Chapter 3: Preparing the Input Using Mixed Language Source Files
You can work around this by removing the bus width notation of [0:0] in the
Verilog files. Note that you must use a VHDL generic of type integer because
the other types do not allow for the proper binding of the Verilog component.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
44 December 2012
Working with Constraint Files Chapter 3: Preparing the Input
However, if you have black box timing constraints like syn_tco, syn_tpd, and
syn_tsu, you must enter them as directives in the source code. Unlike attri-
butes, directives can only be added to the source code, not to constraint files.
See Entering Attributes and Directives, on page 144 for more information on
adding directives to source code.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 45
Chapter 3: Preparing the Input Working with Constraint Files
If you choose to use the legacy SCOPE edition, this section shows you how to
manually create a Tcl constraint file. The software automatically creates this
file if you use the legacy SCOPE editor to enter the constraints. The Tcl
constraint file only contains general timing constraints. Black box
constraints must be entered in the source code. For additional information,
see When to Use Constraint Files over Source Code, on page 45.
3. Enter the timing constraints you need. For the syntax, see the Reference
Manual. If you have black box timing constraints, you must enter them
in the source code.
4. You can also add vendor-specific attributes in the constraint file using
define_attribute. See Specifying Attributes in the Constraints File, on
page 150 for more information.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
46 December 2012
Working with Constraint Files Chapter 3: Preparing the Input
v:cell [prefix:]object_name
Where cell is the name of the design entity, prefix is a prefix to identify
objects with the same name, object_name is an instance path with the
dot (.) separator. The prefix can be any of the following:
n: Net names
In VHDL modules, use the following syntax for instance, port, and net
names in VHDL modules:
Where v: identifies it as a view object, lib is the name of the library, cell
is the name of the design entity, view is a name for the architecture,
prefix is a prefix to identify objects with the same name, and
object_name is an instance path with the dot (.) separator. View is only
needed if there is more than one architecture for the design. See the
table above for the prefixes of objects.
Name matching wildcards are * (asterisk matches any number of
characters) and ? (question mark matches a single character). These
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 47
Chapter 3: Preparing the Input Working with Constraint Files
i:statemod.statereg[*]
This command generates a report that checks the syntax and applica-
bility of the timing constraints in the FPGA synthesis constraint file(s)
for your project. The report is written to the project_name_cck.rpt file
and lists the following information:
Constraints that are not applied
Constraints that are valid and applicable to the design
Wildcard expansion on the constraints
Constraints on objects that do not exist
For details on this report, see Constraint Checking Report, on page 456
of the Reference Manual.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
48 December 2012
Working with Constraint Files Chapter 3: Preparing the Input
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 49
Chapter 3: Preparing the Input Working with Constraint Files
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
50 December 2012
CHAPTER 4
Specifying Constraints
This chapter describes how to specify constraints for your design. It covers
the following:
Using the SCOPE Editor, on page 52
Specifying SCOPE Constraints, on page 57
Specifying Timing Exceptions, on page 70
Using Collections, on page 76
Converting SDC to FDC, on page 92
Using the SCOPE Editor (Legacy), on page 94
See Also:
For an overview about constraints, see Chapter 5, Constraints.
For a description of the SCOPE editor, see Chapter 6, SCOPE
Constraints Editor
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 51
Chapter 4: Specifying Constraints Using the SCOPE Editor
These constraints are saved to the FPGA Design Constraint (FDC) file. The
FDC file contains Synopsys SDC Standard timing constraints (for example,
create_clock, set_input_delay, and set_false_path), along with the non-timing
constraints (design constraints) (for example, define_attribute,
define_scope_collection, and define_io_standard). When working with these
constraints, use the following processes:
For existing designs, run the sdc2fdc script to translate legacy SDC
constraints and create a constraint file that contains Synopsys SDC
standard timing constraints and design constraints. For details about
this script, see Converting SDC to FDC, on page 92.
For new designs, use the SCOPE editor. See Creating Constraints in the
SCOPE Editor, on page 52 for more information.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
52 December 2012
Using the SCOPE Editor Chapter 4: Specifying Constraints
An empty SCOPE spreadsheet window opens. The tabs along the bottom
of the SCOPE window list the different kinds of constraints you can add.
For each kind of constraint, the columns contain specific data.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 53
Chapter 4: Specifying Constraints Using the SCOPE Editor
3. Select if you want to apply the constraint to the top-level or for modules
from from the Current Design option drop-down menu located at the top of
the SCOPE editor.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
54 December 2012
Using the SCOPE Editor Chapter 4: Specifying Constraints
5. The free form constraint editor is located in the TCl View tab, which is the
last tab in SCOPE. The text editor has a help window on the right-hand
side. For more information about this text editor, see Using the TCL
View of SCOPE GUI, on page 63.
6. Click on the Check Constraints button to run the constraint checker. The
output provides information on how the constraints are interpreted by
the tool.
All constraint information is saved in the same FPGA Design Constraint file
(FDC) with clearly marked beginning and ending for each section. Do not
manually modify these pre-defined SCOPE sections.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 55
Chapter 4: Specifying Constraints Using the SCOPE Editor
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
56 December 2012
Specifying SCOPE Constraints Chapter 4: Specifying Constraints
Design constraints let you add attributes, define collections and specify
constraints for them, and select specific I/O standard pad types for your
design.
You can define both timing and design constraints in the SCOPE editor. For
the different types of constraints, see the following topics:
Specifying Timing Exceptions
Setting Clock and Path Constraints
Defining Input and Output Constraints
Specifying Standard I/O Pad Types
To set constraints for timing exceptions like false paths and multicycle paths,
see Specifying Timing Exceptions, on page 70.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 57
Chapter 4: Specifying Constraints Specifying SCOPE Constraints
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
58 December 2012
Specifying SCOPE Constraints Chapter 4: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 59
Chapter 4: Specifying Constraints Specifying SCOPE Constraints
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
60 December 2012
Specifying SCOPE Constraints Chapter 4: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 61
Chapter 4: Specifying Constraints Specifying SCOPE Constraints
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
62 December 2012
Specifying SCOPE Constraints Chapter 4: Specifying Constraints
2. In the Port column, select the port. This determines the port type in the
Type column.
3. Enter an appropriate I/O pad type in the I/O Standard column. The
Description column shows a description of the I/O standard you selected.
4. Where applicable, set other parameters like drive strength, slew rate,
and termination.
You cannot set these parameter values for industry I/O standards
whose parameters are defined by the standard.
The software stores the pad type specification and the parameter values
in the syn_pad_type attribute. When you synthesize the design, the I/O
specifications are mapped to the appropriate I/O pads within the
technology.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 63
Chapter 4: Specifying Constraints Specifying SCOPE Constraints
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
64 December 2012
Specifying SCOPE Constraints Chapter 4: Specifying Constraints
3. You can also specify a command by using the constraints browser that
displays a constraints command list and associated syntax.
Double-click the specified constraint to add the command to the
editor window.
Use the constraint syntax window to help you specify the options for
this command.
Click the Hide Syntax Help button at the bottom of the editor window to
close the syntax help browser.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 65
Chapter 4: Specifying Constraints Specifying SCOPE Constraints
4. When you save this file, the constraint file is added to your project in the
Constraint directory if the Add to Project option is checked on the New
dialog box. Thereafter, you can double-click the FDC constraint file to
open it in the text editor.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
66 December 2012
Specifying SCOPE Constraints Chapter 4: Specifying Constraints
Alternatively, you can drag and drop an object from an HDL Analyst
view into the cell, or type in a name. If you drag a bus, the software
enters the whole bus (busA). To enter busA[3:0], select the appropriate
bus bits before you drag and drop them. If you drag and drop or type
a name, make sure that the object has the proper prefix identifiers:
c:clock_name clocks
For cells with values, type in the value or select from the pull-down
list.
Click the check box in the Enabled column to enable the constraint or
attribute.
Make sure you have entered all the essential information for that
constraint. Scroll horizontally to check. For example, to set a clock
constraint in the Clocks tab, you must fill out Enabled, Clock, Period,
and Clock Group. The other columns are optional. For details about
setting different kinds of constraints, go to the appropriate section
listed in Specifying SCOPE Constraints, on page 57.
To... Do...
Cut, copy, paste, Select the command from the popup (hold down the
undo, or redo right mouse button to get the popup) or from the
Edit menu.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 67
Chapter 4: Specifying Constraints Specifying SCOPE Constraints
To... Do...
Copy the same value Select Fill Down (Ctrl-d) from the Edit or popup menus.
down a column
Insert or delete rows Select Insert Row or Delete Rows from the Edit or
popup menus.
Find text Select Find from the Edit or popup menus. Type the text
you want to find, and click OK.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
68 December 2012
Specifying SCOPE Constraints Chapter 4: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 69
Chapter 4: Specifying Constraints Specifying Timing Exceptions
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
70 December 2012
Specifying Timing Exceptions Chapter 4: Specifying Constraints
The following guidelines provide details for defining these constraints. You
must specify at least one From, To, or Through point.
In the From field, identify the starting point for the path. The starting
point can be a clock (c:), register (i:), top-level input or bi-directional port
(p:), or black box output (i:). To specify multiple starting points:
Such as the bits of a bus, enclose them in square brackets: A[15:0] or
A[*].
Select the first start point from the HDL Analyst view, then drag and
drop this instance into the From cell in SCOPE. For each subsequent
instance, press the Shift key as you drag and drop the instance into
the From cell in SCOPE. For example, valid Tcl command format
include:
set_multicycle_path -from {i:aq i:bq} 2
set_multicycle_path -from [i:aq i:bq} -through {n:xor_all} 2
In the To field, identify the ending point for the path. The ending point
can be a clock (c:), register (i:), top-level output or bi-directional port (p:),
or black box input (i:). To specify multiple ending points, such as the
bits of a bus, enclose them in square brackets: B[15:0].
A single through point can be a net (n:), hierarchical port (t:), or instanti-
ated cell pin (t:). To specify a net:
Click in the Through field and click the arrow. This opens the Product of
Sums (POS) interface.
Either type the net name with the n: prefix in the first cell or drag the
net from an HDL Analyst view into the cell.
Click Save.
For example, if you specify n:net1, the constraint applies to any path
passing through net1.
To specify an OR when constraining a list of through points, you can type
the net names in the Through field or you can use the POS UI. To do this:
Click in the Through field and click the arrow. This opens the Product of
Sums interface.
Either type the first net name in a cell in a Prod row or drag the net
from an HDL Analyst view into the cell. Repeat this step along the
same row, adding other nets in the Sum columns. The nets in each
row form an OR list.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 71
Chapter 4: Specifying Constraints Specifying Timing Exceptions
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
72 December 2012
Specifying Timing Exceptions Chapter 4: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 73
Chapter 4: Specifying Constraints Specifying Timing Exceptions
In this example, the synthesis tool applies the constraint to the paths
through all points in the lists as follows:
5. Specify the clock period to use for the constraint by going to the Start/End
column and selecting either Start or End.
If you do not explicitly specify a clock period, the software uses the end
clock period. The constraint is now calculated as follows:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
74 December 2012
Specifying Timing Exceptions Chapter 4: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 75
Chapter 4: Specifying Constraints Using Collections
Using Collections
A collection is a group of objects. It can consist of just one object, or of other
collections. You can set the same constraint for multiple objects if you group
them together in a collection. You can either define collections in the SCOPE
window or type the commands in the Tcl script window.
Comparing Methods for Defining Collections, on page 76
Creating and Using Collections (SCOPE Window), on page 77
Creating Collections (Tcl Commands), on page 80
Using the Tcl Find Command to Define Collections, on page 83
Using the Expand Tcl Command to Define Collections, on page 86
Viewing and Manipulating Collections (Tcl Commands), on page 87
Top
B
a1
a2 a4 a3
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
76 December 2012
Using Collections Chapter 4: Specifying Constraints
In the Commands column, select find or expand. For tips on using these
commands, see Using the Tcl Find Command to Define Collections,
on page 83 and Using the Expand Tcl Command to Define
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 77
Chapter 4: Specifying Constraints Using Collections
Collection Finds...
find_all All components in the module endpMux
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
78 December 2012
Using Collections Chapter 4: Specifying Constraints
The software saves the information in the constraint file for the project.
Specify the rest of the constraint as usual. The software applies the
constraint to all the objects in the collection.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 79
Chapter 4: Specifying Constraints Using Collections
For details of the syntax for the commands described here, refer to Collection
Commands, on page 1093 in the Reference Manual.
A collection can consist of individual objects, Tcl lists (which can have
single elements as arguments), or other collections. Use the Tcl find and
expand commands to locate objects for the collection (see Using the Tcl
Find Command to Define Collections, on page 83 and Using the Expand
Tcl Command to Define Collections, on page 86). The following example
creates a collection called my_collection which consists of all the modules
(views) found by the find command.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
80 December 2012
Using Collections Chapter 4: Specifying Constraints
Once you have created a collection, you can do various operations on the
objects in the collection (see Viewing and Manipulating Collections (Tcl
Commands), on page 87), but you cannot apply constraints to the collection.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 81
Chapter 4: Specifying Constraints Using Collections
If you added reg2 and reg3 with the c_union command, the command removes
the redundant instances (reg2) so that the new collection would still consist of
reg1, reg2, and reg3.
This example concatenates collection1and collection2 and names the new collec-
tion combined_collection:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
82 December 2012
Using Collections Chapter 4: Specifying Constraints
Make sure that you include extra curly braces {}, as shown below:
The Tcl find command returns a collection of objects. If you want to create a
collection of connectivity-based objects, use the Tcl expand command instead
of find (Using the Expand Tcl Command to Define Collections, on page 86).
This section lists some tips for using the Tcl find command.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 83
Chapter 4: Specifying Constraints Using Collections
1. Tcl find always searches at the top-level of your design, regardless of the
current Analyst view.
2. Create a collection by typing the find command and assigning the results
to a variable. The following example finds all instances with a primitive
type DFF and assigns the collection to the variable $result:
The following table lists some usage tips for specifying the find command.
For the full details of the syntax, refer to find Command (Batch), on
page 1104 of the Reference Manual.
Case rules Use the case rules for the language from which the
object was generated:
VHDL: case-insensitive
Verilog: case-sensitive. Make sure that the object
name you type in the SCOPE window matches the
Verilog name.
For mixed language designs, use the case rules for
the parent module. This example finds any object in
the current view that starts with either a or A:
find {a*} -nocase
Pattern matching You have two choices:
Specify the -regexp argument, and then use regular
expressions for pattern matching.
Do not specify -regexp, and use only the * and ?
wildcards for pattern matching.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
84 December 2012
Using Collections Chapter 4: Specifying Constraints
3. Once you have defined the collection, you can view the objects in the
collection, using one of the following methods, which are described in
more detail in Viewing and Manipulating Collections (Tcl Commands),
on page 87:
Select the collection in an HDL Analyst view (select).
Print the collection using the -print option to the find command.
Print the collection without carriage returns or properties (c_list).
Print collection in columns, with optional properties (c_print).
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 85
Chapter 4: Specifying Constraints Using Collections
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
86 December 2012
Using Collections Chapter 4: Specifying Constraints
For example, select $result highlights all the objects in the $result collec-
tion.
3. To print a simple list of the objects in the collection, uses the c_list
command, which prints a list like the following:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 87
Chapter 4: Specifying Constraints Using Collections
{i:EP0RxFifo.u_fifo.dataOut[0]} {i:EP0RxFifo.u_fifo.dataOut[1]}
{i:EP0RxFifo.u_fifo.dataOut[2]} ...
The c_list command prints the collection without carriage returns or
properties. Use this command when you want to perform subsequent
Tcl commands on the list. See Example: c_list Command, on page 90.
4. To print a list of the collection objects in column format, use the c_print
command. For example, c_print $result prints the objects like this:
{i:EP0RxFifo.u_fifo.dataOut[0]}
{i:EP0RxFifo.u_fifo.dataOut[1]}
{i:EP0RxFifo.u_fifo.dataOut[2]}
{i:EP0RxFifo.u_fifo.dataOut[3]}
{i:EP0RxFifo.u_fifo.dataOut[4]}
{i:EP0RxFifo.u_fifo.dataOut[5]}
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
88 December 2012
Using Collections Chapter 4: Specifying Constraints
To print out the results to a file, use the c_print command with the -file
option. For example, c_print -prop slack -prop view -prop clock $result -file
results.txt writes out the objects and properties listed above to a file
called results.txt. When you open this file, you see the information in a
spreadsheet format.
To... Do this...
Copy a collection Create a new variable for the copy and copy the original
collection to it with the set command. When you make
changes to the original, it does not affect the copy, and
vice versa.
set my_collection_copy $my_collection
List the objects in a Use the c_print command to view the objects in a
collection collection, and optionally their properties, in column
format:
"v:top"
"v:block_a"
"v:block_b"
Alternatively, you can use the -print option to an
operation command to list the objects.
Generate a Tcl list Use the c_list command to view a collection or to convert
of the objects in a a collection into a Tcl list. You can manipulate a Tcl list
collection with standard Tcl commands. In addition, the Tcl
collection commands work on Tcl lists.
This is an example of c_list results:
{"v:top" "v:block_a" "v:block_b"}
Alternatively, you can use the -print option to an
operation command to list the objects.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 89
Chapter 4: Specifying Constraints Using Collections
To... Do this...
Iterate through a Use the foreach command. This example iterates through
collection all the objects in the collection:
foreach port c_list[[find -port *]] {
set_false_path -from $port }
You can also modify foreach_in_collection loops from
PrimeTime or Design Compiler to work with the FPGA
synthesis tools.
foreach_in_collection x $col_1 {
}
You can convert the foreach_in_collection loop shown
above to the following:
foreach x [c_list $col_1] {
}
{t:EP0RxFifo.u_fifo.dataOut[0].CE}
{t:EP0RxFifo.u_fifo.dataOut[1].CE}
{t:EP0RxFifo.u_fifo.dataOut[2].CE} ..
You can use the list to find the terminal (pin) owner:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
90 December 2012
Using Collections Chapter 4: Specifying Constraints
This returns the following, which shows that the terminal (pin) has been
converted to the owning instance:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 91
Chapter 4: Specifying Constraints Converting SDC to FDC
sdc2fdc
3. Check the constraint results directory for details about this translation.
4. The new constraints file is automatically updated for your project. Save
the new settings.
projectDir/FDC_constraints/implName
This directory includes the following results files:
topLevel_translated.fdc Contains the Synopsys FPGA design
constraints (FPGA design constraints and the Synopsys standard
timing constraints)
topLevel|compilePoint_translate.log Contains details about the
translation. Translation error messages explain issues and how to fix
them. Any translation errors not addressed when you run synthesis
appear in the SRR log file, but does not stop synthesis from running.
5. Open the FDC file resulting from translation in the FPGA SCOPE editor
to check these constraints and make any changes to them.
For information about the FDC file, see FPGA Design Constraint (FDC) File,
on page 777. LO
For details about the translated files and troubleshooting guidelines, see
sdc2fdc Tcl Shell Command, on page 776.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
92 December 2012
Converting SDC to FDC Chapter 4: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 93
Chapter 4: Specifying Constraints Using the SCOPE Editor (Legacy)
To do this, add your SDC constraint files to your project and run the following
at the command line:
% sdc2fdc
If you choose to do so, the following procedure shows you how to use the
legacy SCOPE editor to create constraints for the constraint file (SDC).
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
94 December 2012
Using the SCOPE Editor (Legacy) Chapter 4: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 95
Chapter 4: Specifying Constraints Using the SCOPE Editor (Legacy)
The tool also lets you add constraints automatically. For information about
auto constraints, see Using the SCOPE Editor (Legacy), on page 94.
1. Click the appropriate tab at the bottom of the window to enter the kind
of constraint you want to create:
To define... Click...
Clock frequency for a clock signal output of clock divider logic Clocks
A specific clock frequency that overrides the global frequency
Edge-to-edge clock delay that overrides the automatically Clock to
calculated delay. Clock
Constraints for a group of objects you have defined as a Collections
collection with the Tcl command. For details, see Creating and
Using Collections (SCOPE Window), on page 77.
Input/output delays that model your FPGA input/output Inputs/
interface with the outside environment Outputs
Delay constraints for paths feeding into/out of registers Registers
Paths that require multiple clock cycles Delay Paths
Paths to ignore for timing analysis (false paths) Delay Paths
Maximum delay for paths Delay Paths
LO
Attributes, like syn_reference_clock, that were not entered in the Attributes
source files
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
96 December 2012
Using the SCOPE Editor (Legacy) Chapter 4: Specifying Constraints
To define... Click...
I/O standards for certain technologies of the Microsemi devices /O Standard
for any port in the I/O Standard panel of the SCOPE window.
Compile points in a top-level constraint file. See Synthesizing Compile
Compile Points, on page 433 for more information about Points
compile points.
Place and route tool constraints Other
Other constraints not used for synthesis, but which are passed
to other tools. For example, multiple clock cycles from a
register or input pin to a register or output pin
2. Save the file by clicking the Save icon and naming the file.
The software creates a TCL constraint file (sdc). See Working with
Constraint Files, on page 45 for information about the commands in this
file.
3. To apply the constraints to your design, you must add the file to the
project now or later.
Add it immediately by clicking Yes in the prompt box that opens after
you save the constraint file.
Add it later, following the procedure for adding a file described in
Making Changes to a Project, on page 116.
The SCOPE interface is much easier to use, and you can define various
timing constraints in it. For the equivalent Tcl syntax, see Chapter 12, Batch
Commands and Scriptsin the Reference Manual. See the following for different
timing constraints:
Entering Default Constraints, on page 98
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 97
Chapter 4: Specifying Constraints Using the SCOPE Editor (Legacy)
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
98 December 2012
Using the SCOPE Editor (Legacy) Chapter 4: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 99
Chapter 4: Specifying Constraints Using the SCOPE Editor (Legacy)
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
100 December 2012
Using the SCOPE Editor (Legacy) Chapter 4: Specifying Constraints
Defining Clocks
Clock frequency is the most important timing constraint, and must be set
accurately. If you are planning to auto constrain your design (Using the
SCOPE Editor (Legacy), on page 94), do not define any clocks. The following
procedures show you how to define clocks and set clock groups and other
constraints that affect timing:
Defining Clock Frequency, on page 101
Constraining Clock Enable Paths, on page 104
Defining Other Clock Requirements, on page 106
1. Define a realistic global frequency for the entire design, either in the
Project view or the Constraints tab of the Implementation Options dialog box.
This target frequency applies to all clocks that do not have specified
clock frequencies. If you do not specify any value, a default value of 1
MHz (or 1000 ns clock period) applies to all timing paths whenever the
clock associated with both start and end points of the path is not speci-
fied. Each clock that uses the global frequency is assigned to its own
clock group. See Defining Other Clock Requirements, on page 106 for
more information about clock group settings.
The global frequency also applies to any purely combinatorial paths. The
following figure shows how the software determines constraints for
specified and unspecified start or end clocks on a path:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 101
Chapter 4: Specifying Constraints Using the SCOPE Editor (Legacy)
If clkA is... And clkB is... The effect for logic C is...
Defined Defined For related clocks in the same clock group, the
relationship between clocks is calculated; all other
paths between the clocks are treated as false paths.
Undefined Undefined The path is unconstrained.
2. Define frequency for individual clocks on the Clocks tab of the SCOPE
window (define_clock constraint).
Specify the frequency as either a frequency in the Frequency column
(-freq Tcl option) or a time period in the Period column (-period Tcl
option). When you enter a value in one column, the other is
calculated automatically.
For asymmetrical clocks, specify values in the Rise At (-rise) and Fall At
(-fall) columns. The software automatically calculates and fills out the
Duty Cycle value.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
102 December 2012
Using the SCOPE Editor (Legacy) Chapter 4: Specifying Constraints
5. After synthesis, check the Performance Summary section of the log file for a
list of all the defined and inferred clocks in the design.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 103
Chapter 4: Specifying Constraints Using the SCOPE Editor (Legacy)
6. If you do not meet timing goals after place-and-route, adjust the clock
constraint as follows:
Open the SCOPE window with the clock constraint.
In the Route column for the constraint, specify the actual route delay
(in nanoseconds), as obtained from the place-and-route results.
Adding this constraint is equivalent to putting a register delay on all
the input registers for that clock.
Resynthesize your design.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
104 December 2012
Using the SCOPE Editor (Legacy) Chapter 4: Specifying Constraints
The flip-flop that generates the enable signals is in the non-virtual clock
domain.The flip-flops that are connected to the enable signal are in the
virtual clock domain. The timing analyst considers the enable signal to be on
a path that goes between a non-virtual clock domain and a virtual clock
domain. In the actual circuit, the enable signal is on a path within a non-
virtual clock domain. The timing analyst reports any paths between virtual
and non-virtual clocks with a clock buffer delay on the non-virtual clock. This
is why critical paths might be reported with negative slack.
If you use this method to constrain paths in a technology that includes clock
buffer delays, you must carefully analyze the timing analysis reports. The
virtual clock does not include clock buffer delays, but any non-virtual clock
that passes through clock buffers will include clock buffer delays.
This timing analysis report includes a Clock delay at starting point, but does not
include Clock delay at ending point. The clock delay at the starting point is the
delay in the clock buffers of the non-virtual clock. In the actual circuit, this
delay would also be at the ending point and not affect the calculation of slack.
However as the ending clock is a virtual clock, the clock buffer delay ends up
creating a negative slack that does not exist in the actual circuit.
This report is a result of defining the clock enables with the syn_reference_clock
attribute. This is why it is recommended that you use multicycle paths to
constrain all the flip-flops driven by the enable signal.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 105
Chapter 4: Specifying Constraints Using the SCOPE Editor (Legacy)
The software does not check design rules, so it is best to define the
relationship between clocks as completely as possible.
Define all gated clocks with the define_clock constraint.
Avoid using gated clocks to eliminate clock skew. If possible, move the
logic to the data pin instead of using gated clocks. If you do use gated
clocks, you must define them explicitly, because the software does not
propagate the frequency of clock ports to gated clocks.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
106 December 2012
Using the SCOPE Editor (Legacy) Chapter 4: Specifying Constraints
After synthesis, check the Performance Summary section of the log file for a list
of all the defined and inferred clocks in the design.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 107
Chapter 4: Specifying Constraints Using the SCOPE Editor (Legacy)
To synthesize with all the constraints, using the clock period for all
I/O paths that do not have an explicit constraint enable Use clock
period for unconstrained IO.
Synthesize the design. When you forward-annotate the constraints,
the constraints used for synthesis are forward-annotated for place-
and-route.
Input or output ports with explicitly defined constraints, but without a
reference clock (-ref option) are included in the System clock domain and
are considered to belong to every defined or inferred clock group.
If you do not meet timing goals after place-and-route and you need to
adjust the input constraints; do the following:
Open the SCOPE window with the input constraint.
In the Route column for the input constraint, specify the actual route
delay in nanoseconds, as obtained from the place-and-route results.
Adding this constraint is equivalent to putting a register delay on the
input register.
Resynthesize your design.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
108 December 2012
Using the SCOPE Editor (Legacy) Chapter 4: Specifying Constraints
To define a false path between two clocks, select the SCOPE Clocks tab,
and assign the clocks to different clock groups:
Use this technique to specify a false path between any two clocks,
regardless of clock groups. This constraint can be overridden by a
maximum delay constraint on the same path.
To override an implicit false path between any two clocks described
previously, set an explicit constraint between the clocks by selecting the
SCOPE Clock to Clock tab, and doing the following:
Specify the starting (From Clock Edge) and ending clock edges (To Clock
Edge).
Specify a value in the Delay column.
Mark the Enabled check box.
The software treats this as an explicit constraint. You can use this
method to constrain a path between any two clocks, regardless of
whether they belong to the same clock group.
To set an implicit false path on a path to/from an I/O port, do the
following:
Select Project->Implementation Options->Constraints.
Disable Use clock period for unconstrained IO.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 109
Chapter 4: Specifying Constraints Using the SCOPE Editor (Legacy)
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
110 December 2012
CHAPTER 5
When you synthesize a design with the Synopsys FPGA synthesis tools, you
must set up a project for your design. The following describe the procedures
for setting up a project for logic synthesis:
Setting Up Project Files, on page 112
Project File Hierarchy Management, on page 120
Setting Up Implementations and Workspaces, on page 127
Setting Logic Synthesis Implementation Options, on page 131
Entering Attributes and Directives, on page 144
Searching Files, on page 152
Archiving Files and Projects, on page 155
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 111
Chapter 5: Setting up a Logic Synthesis Project Setting Up Project Files
The Project window shows a new project. Click the Add File button, press
F4, or select the Project->Add Source File command. The Add Files to Project
dialog box opens.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
112 December 2012
Setting Up Project Files Chapter 5: Setting up a Logic Synthesis Project
To add all the files in the directory at once, click the Add All button on
the right side of the form. To add files individually, click on the file in
the list and then click the Add button, or double-click the file name.
You can add all the files in the directory and then remove the ones
you do not need with the Remove button.
If you are adding VHDL files, select the appropriate library from the
the VHDL Library popup menu. The library you select is applied to all
VHDL files when you click OK in the dialog box.
Your project window displays a new project file. If you click on the plus
sign next to the project and expand it, you see the following:
A folder (two folders for mixed language designs) with the source files.
If your files are not in a folder under the project directory, you can set
this preference by selecting Options->Project View Options and checking
the View project files in folders box. This separates one kind of file from
another in the Project view by putting them in separate folders.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 113
Chapter 5: Setting up a Logic Synthesis Project Setting Up Project Files
3. Add any libraries you need, using the method described in the previous
step to add the Verilog or VHDL library file.
For vendor-specific libraries, add the appropriate library file to the
project. Note that for some families, the libraries are loaded
automatically and you do not need to explicitly add them to the
project file.
To add a third-party VHDL package library, add the appropriate .vhd
file to the design, as described in step 2. Right click the file in the
Project view and select File Options, or select Project-> Set VHDL library.
Specify a library name that is compatible with the simulators. For
example, MYLIB. Make sure that this package library is before the top-
level design in the list of files in the Project view.
For information about setting Verilog and VHDL file options, see
Setting Verilog and VHDL Options, on page 139. You can also set
these file options later, before running synthesis.
For additional information about using vendor macro libraries and
black boxes, see Optimizing
LO for Microsemi Designs, on page 345.
For generic technology components, you can either add the
technology-independent Verilog library supplied with the software
(install_dir/lib/generic_ technology/gtech.v) to your design, or add your
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
114 December 2012
Setting Up Project Files Chapter 5: Setting up a Logic Synthesis Project
4. Check file order in the Project view. File order is especially important for
VHDL files.
For VHDL files, you can automatically order the files by selecting
Run->Arrange VHDL Files. Alternatively, manually move the files in the
Project view. Package files must be first on the list because they are
compiled before they are used. If you have design blocks spread over
many files, make sure you have the following file order: the file
containing the entity must be first, followed by the architecture file, and
finally the file with the configuration.
In the Project view, check that the last file in the Project view is the
top-level source file. Alternatively, you can specify the top-level file
when you set the device options.
5. Select File->Save, type a name for the project, and click Save. The Project
window reflects your changes.
6. To close a project file, select the Close Project button or File->Close Project.
1. If the project you want to open is one you worked on recently, you can
select it directly: File->Recent Projects-> projectName.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 115
Chapter 5: Setting up a Logic Synthesis Project Setting Up Project Files
1. To add source or constraint files to a project, select the Add Files button
or Project->Add Source File to open the Select Files to Add to Project dialog box.
See Creating a Project File, on page 112 for details.
2. To delete a file from a project, click the file in the Project window, and
press the Delete key.
4. To specify how project files are saved in the project, right click on a file
in the Project view and select File Options. Set the Save File option to either
Relative to Project or Absolute Path.
5. To check the time stamp on a file, right click on a file in the Project view
and select File Options. Check the time that the file was last modified.
Click OK.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
116 December 2012
Setting Up Project Files Chapter 5: Setting up a Logic Synthesis Project
Checking this option creates separate folders in the Project view for
constraint files and source files.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 117
Chapter 5: Setting up a Logic Synthesis Project Setting Up Project Files
4. To view project files in customized custom folders, check View Project Files
in Custom Folders. For more information, see Creating Custom Folders, on
page 120. Type folders are only displayed if there are multiple types in a
custom folder.
Custom
Folders
5. To open more than one implementation in the same Project view, check
Allow Multiple Projects to be Opened.
Project 1
Project 2
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
118 December 2012
Setting Up Project Files Chapter 5: Setting up a Logic Synthesis Project
7. To view file information, select the file in the Project view, right-click,
and select File Options. For example, you can check the date a file was
modified.
set_option -project_relative_includes 1
Start a new project with a newer version of the software and delete the
old project. This will make the new prj file obey the new rule where
includes are relative to the prj file.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 119
Chapter 5: Setting up a Logic Synthesis Project Project File Hierarchy Management
There are several ways to create custom folders and then add files to them in
a project. Use one of the following methods:
1. Right-click on a project file or another custom folder and select Add Folder
from the popup menu. Then perform any of the following file operations:
Right-click on a file or
LOfiles and select Place in Folder. A sub-menu
displays so that you can either select an existing folder or create a
new folder.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
120 December 2012
Project File Hierarchy Management Chapter 5: Setting up a Logic Synthesis Project
Note that you can arbitrarily name the folder, however do not use the
character (/) because this is a hierarchy separator symbol.
To rename a folder, right-click on the folder and select Rename from
the popup menu. The Rename Folder dialog box appears; specify a new
name.
2. Use the Add Files to Project dialog box to add the entire contents of a folder
hierarchy, and optionally place files into custom folders corresponding
to the OS folder hierarchies listed in the dialog box display.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 121
Chapter 5: Setting up a Logic Synthesis Project Project File Hierarchy Management
To use:
Only the folder containing files for the folder name, click on Use OS
Folder Name.
The path name to the selected folder to determine the level of
hierarchy reflected for the custom folder path.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
122 December 2012
Project File Hierarchy Management Chapter 5: Setting up a Logic Synthesis Project
3. You can drag and drop files and folders from an OS Explorer application
into the Project view. This feature is available on Windows and Linux
desktops running KDE.
When you drag and drop a file, it is immediately added to the project.
If no project is open, the software creates a project.
When you drag and drop a file over a folder, it will be placed in that
folder. Initially, the Add Files to Project dialog box is displayed asking
you to confirm the files to be added to the project. You can click OK to
accept the files. If you want to make changes, you can click the
Remove All button and specify a new filter or option.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 123
Chapter 5: Setting up a Logic Synthesis Project Project File Hierarchy Management
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
124 December 2012
Project File Hierarchy Management Chapter 5: Setting up a Logic Synthesis Project
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 125
Chapter 5: Setting up a Logic Synthesis Project Project File Hierarchy Management
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
126 December 2012
Setting Up Implementations and Workspaces Chapter 5: Setting up a Logic Synthesis Project
The new implementation uses the same source code files, but different
device options and constraints. It copies some files from the previous
implementation: the tlg log file, the srs RTL netlist file, and the
design_fsm.fdc file generated by FSM Explorer. The software keeps a
repeatable history of the synthesis runs.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 127
Chapter 5: Setting up a Logic Synthesis Project Setting Up Implementations and Workspaces
The Project view shows all implementations with the active implementa-
tion highlighted and the corresponding output files generated for the
active implementation displayed in the Implementation Results view on
the right; changing the active implementation changes the output file
display. The Watch window monitors the active implementation. If you
configure this window to watch all implementations, the new implemen-
tation is automatically updated in the window.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
128 December 2012
Setting Up Implementations and Workspaces Chapter 5: Setting up a Logic Synthesis Project
Creating Workspaces
The Synplify Pro tool lets you group projects together into workspaces. A
workspace is like a container for a number of projects.
3. To open more than one project in the same Project view, check Allow
Multiple Projects to be Opened. After you set up the new project, you can see
it in the Project view.
Project 1
Project 2
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 129
Chapter 5: Setting up a Logic Synthesis Project Setting Up Implementations and Workspaces
Using Workspaces
You can use your workspace to simplify your work flow. For example, you can
set up dependencies between projects in the same workspace.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
130 December 2012
Setting Logic Synthesis Implementation Options Chapter 5: Setting up a Logic Synthesis Project
2. Select the technology, part, package, and speed. Available options vary,
depending on the technology you choose.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 131
Chapter 5: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
3. Set the device mapping options. The options vary, depending on the
technology you choose.
If you are unsure of what an option means, click on the option to see
a description in the box below. For full descriptions of the options,
click F1 or refer to the appropriate chapter in the Reference Manual.
To set an option, type in the value or check the box to enable it.
For more information about setting fanout limits and retiming, see
Setting Fanout Limits, on page 211, and Retiming, on page 198, respec-
tively.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
132 December 2012
Setting Logic Synthesis Implementation Options Chapter 5: Setting up a Logic Synthesis Project
5. Click the Run button to synthesize the design. The software compiles
and maps the design using the options you set.
6. To set device options with a script, use the set_option Tcl command. The
following table contains an alphabetical list of the device options on the
Device tab mapped to the equivalent Tcl commands. Because the options
are technology- and family-based, all the options will not apply to your
design. All commands begin with set_option, followed by the syntax in the
column as shown. Check the Reference Manual for the most
comprehensive list of options for your vendor.
2. Click the optimization options you want, either on the form or in the
Project view. Your choices vary, depending on the technology. If an
option is not available for your technology, it is greyed out. Setting the
option in one place automatically updates it in the other.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 133
Chapter 5: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
Optimization Options
Project View
Implementation Options->Options
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
134 December 2012
Setting Logic Synthesis Implementation Options Chapter 5: Setting up a Logic Synthesis Project
The software compiles and maps the design using the options you set.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 135
Chapter 5: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
Project View
Implementation Options->Constraints
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
136 December 2012
Setting Logic Synthesis Implementation Options Chapter 5: Setting up a Logic Synthesis Project
This removes the constraint file from the implementation, but does not
delete it.
When you synthesize the design, the software compiles and maps the
design using the options you set.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 137
Chapter 5: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
4. Set the format for the output file. The equivalent Tcl command for
scripting is project -result_format format.
When you synthesize the design, the software compiles and maps the
design using the options you set.
2. Set the number of critical paths you want the software to report.
3. Specify the number of start and end points you want to see reported in
the critical path sections.
LO
4. Set other implementation options as needed (see Setting Logic Synthesis
Implementation Options, on page 131 for a list of choices). Click OK.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
138 December 2012
Setting Logic Synthesis Implementation Options Chapter 5: Setting up a Logic Synthesis Project
When you synthesize the design, the software compiles and maps the
design using the options you set.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 139
Chapter 5: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
2. Specify the top-level module if you did not already do this in the Project
view.
You can type in directives you would normally enter with 'ifdef and define
statements in the code. For example, ABC=30 results in the software
writing the following statements to the project file:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
140 December 2012
Setting Logic Synthesis Implementation Options Chapter 5: Setting up a Logic Synthesis Project
5. In the Include Path Order, specify the search paths for the include
commands for the Verilog files that are in your project. Use the buttons
in the upper right corner of the box to add, delete, or reorder the paths.
When you synthesize the design, the software compiles and maps the
design using the options you set.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 141
Chapter 5: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
For VHDL source, you can specify the options described below.
1. Specify the top-level module if you did not already do this in the Project
view. If the top-level module is not located in the default work library, you
must specify the library where the compiler can find the module. For
information on how to do this, see VHDL Panel, on page 164.
You can also use this option for mixed language designs or when you
want to specify a module that is not the actual top-level entity for HDL
Analyst displaying and debugging in the schematic views.
When you synthesize the design, the software uses the compiler direc-
tives you set here to encode the state machines and does not run the
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
142 December 2012
Setting Logic Synthesis Implementation Options Chapter 5: Setting up a Logic Synthesis Project
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 143
Chapter 5: Setting up a Logic Synthesis Project Entering Attributes and Directives
When you synthesize the design, the software compiles and maps the
design using the options you set.
Attributes Directives
VHDL Yes Yes
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
144 December 2012
Entering Attributes and Directives Chapter 5: Setting up a Logic Synthesis Project
library synplify;
use synplify.attributes.all;
2. Add the attribute or directive you want after the design unit declaration.
declarations ;
attribute attribute_name of object_name : object_kind is value ;
For example:
entity simpledff is
port (q: out bit_vector(7 downto 0);
d : in bit_vector(7 downto 0);
clk : in bit);
attribute syn_noclockbuf of clk : signal is true;
For details of the syntax conventions, see VHDL Attribute and Directive
Syntax, on page 752 in the Reference Manual.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 145
Chapter 5: Setting up a Logic Synthesis Project Entering Attributes and Directives
design_unit_declaration ;
attribute attribute_name : data_type ;
attribute attribute_name of object_name : object_kind is value ;
For example:
entity simpledff is
port (q: out bit_vector(7 downto 0);
d : in bit_vector(7 downto 0);
clk : in bit);
attribute syn_noclockbuf : boolean;
attribute syn_noclockbuf of clk :signal is true;
Verilog does not have predefined synthesis attributes and directives, so you
must add them as comments. The attribute or directive name is preceded by
the keyword synthesis. Verilog files are case sensitive, so attributes and direc-
tives must be specified exactly as presented in their syntax descriptions. For
syntax details, see Verilog Attribute and Directive Syntax, on page 557 in the
Reference Manual.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
146 December 2012
Entering Attributes and Directives Chapter 5: Setting up a Logic Synthesis Project
For details of the syntax rules, see Verilog Attribute and Directive
Syntax, on page 557 in the Reference Manual. The following are
examples:
3. If multiple registers are defined using a single Verilog reg statement and
an attribute is applied to them, then the synthesis software only applies
the last declared register in the reg statement. For example:
1. Start with a compiled design and open the SCOPE window. To add the
attributes to an existing constraint file, open the SCOPE window by
clicking on the existing file in the Project view. To add the attributes to a
new file, click the SCOPE icon and click Initialize to open the SCOPE
window.
You can either select the object first (step 3) or the attribute first (step 4).
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 147
Chapter 5: Setting up a Logic Synthesis Project Entering Attributes and Directives
3. To specify the object, do one of the following in the Object column. If you
already specified the attribute, the Object column lists only valid object
choices for that attribute.
Select the type of object in the Object Filter column, and then select an
object from the list of choices in the Object column. This is the best
way to ensure that you are specifying an object that is appropriate,
with the correct syntax.
Drag the object to which you want to attach the attribute from the
RTL or Technology views to the Object column in the SCOPE window.
For some attributes, dragging and dropping may not select the right
object. For example, if you want to set syn_hier on a module or entity
like an and gate, you must set it on the view for that module. The
object would have this syntax: v:moduleName in Verilog, or
v:library.moduleName in VHDL, where you can have multiple libraries.
Type the name of the object in the Object column. If you do not know
the name, use the Find command or the Object Filter column. Make
sure to type the appropriate prefix for the object where it is needed.
For example, to set an attribute on a view, you must add the v: prefix
to the module or entity name. For VHDL, you might have to specify
the library as well as the module name.
4. If you specified the object first, you can now specify the attribute. The
list shows only the valid attributes for the type of object you selected.
Specify the attribute by holding down the mouse button in the Attribute
column and selecting an LOattribute from the list.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
148 December 2012
Entering Attributes and Directives Chapter 5: Setting up a Logic Synthesis Project
If you selected the object first, the choices available are determined by
the selected object and the technology you are using. If you selected the
attribute first, the available choices are determined by the technology.
When you select an attribute, the SCOPE window tells you the kind of
value you must enter for that attribute and provides a brief description
of the attribute. If you selected the attribute first, make sure to go back
and specify the object.
5. Fill out the value. Hold down the mouse button in the Value column, and
select from the list. You can also type in a value.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 149
Chapter 5: Setting up a Logic Synthesis Project Entering Attributes and Directives
The software saves the SCOPE information in a Tcl constraint file, using
define_attribute statements. When you synthesize the design, the software
reads the constraint file and applies the attributes.
1. In the constraint file, enter the attribute and specify the value you want,
using the define_attribute syntax. For example,
Check the attribute descriptions in the Reference Manual for the exact
syntax and values of the attribute.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
150 December 2012
Entering Attributes and Directives Chapter 5: Setting up a Logic Synthesis Project
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 151
Chapter 5: Setting up a Logic Synthesis Project Searching Files
Searching Files
A find-in-files feature is available to perform string searches within a speci-
fied set of files. Advantages to using this feature include:
Ability to restrict the set of files to be searched to a project or implemen-
tation.
Ability to crossprobe the search results.
The find-in-files feature uses a dialog box to specify the search pattern, the
criteria for selecting the files to be searched, and any search options such as
match case or whole word. The files that meet the criteria are searched for the
pattern, and a list of the files containing the search pattern are displayed at
the bottom of the dialog box.
To use the find-in-files feature, open the Find in Files dialog box by selecting
Edit->Find in Files and enter the search pattern in the Find what field at the top of
the dialog box.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
152 December 2012
Searching Files Chapter 5: Setting up a Logic Synthesis Project
The Result Window selection is used after any of the above selection methods to
search the resulting list of files for a subsequent subpattern.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 153
Chapter 5: Setting up a Logic Synthesis Project Searching Files
The Match Case, Whole Word, and Regular Expressions search options can be
used to further restrict searches.
While the find operation is running, the status line is continually updated
with how many matches are found in how many files and how many files are
being searched.
Search Results
The search results are displayed is the results window at the bottom of the
dialog box. For each match found, the entire line of the file is the displayed in
the following format:
fullpath_to_file(lineNumber): matching_line_text
indicates that the search pattern (data1) was found on line 487 of the
dcache.vhd file.
To open the target file at the specified line, double-click on the line in the
results window.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
154 December 2012
Archiving Files and Projects Chapter 5: Setting up a Logic Synthesis Project
Whenever you have a sar file that contains relative or absolute include paths
for the files in the project, use the _SEARCHFILENAMEONLY_ directive to have
the compiler remove the relative/absolute paths from the 'include and search
only for the file names. Otherwise, you may have problems using the archive
utility. For details, see _SEARCHFILENAMEONLY_ Directive, on page 173.
Archive a Project
Use the archive utility to store the files for a design project into a single
archive file in a proprietary format (sar). You can archive an entire project or
selected files from a project. If you want to create a copy of a project without
archiving the files, see Copy a Project, on page 162.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 155
Chapter 5: Setting up a Logic Synthesis Project Archiving Files and Projects
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
156 December 2012
Archiving Files and Projects Chapter 5: Setting up a Logic Synthesis Project
Click Next.
The tool summary displays all the files in the archive and shows the
full uncompressed file size. The actual size is smaller after the
archiving operation as there is no duplication of files.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 157
Chapter 5: Setting up a Logic Synthesis Project Archiving Files and Projects
4. Verify that the current archive contains the files that you want, then
click Archive which creates the project archive sar file and displays the
following prompt:
LO
Click Done if you are finished.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
158 December 2012
Archiving Files and Projects Chapter 5: Setting up a Logic Synthesis Project
Un-Archive a Project
Use this procedure to extract design project files from an archive file (sar).
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 159
Chapter 5: Setting up a Logic Synthesis Project Archiving Files and Projects
3. Make sure all the files that you want to extract are checked and
references to these files are resolved.
If there are files in the list that you do not want to include when the
project is un-archived, uncheck the box next to the file. The un-
checked files will be commented out in the project file (prj) when
project files are extracted.
If you need to resolve a file in the project before un-archiving, click
the Resolve button and fill out the dialog box.
If you want to replace a file in the project, click the Change button and
fill out the dialog box. Put the replacement files in the directory you
specify in Replace directory. You can replace a single file, any
unresolved files, or all the files. You can also undo the replace
operation.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
160 December 2012
Archiving Files and Projects Chapter 5: Setting up a Logic Synthesis Project
4. Click Next and verify that the project files you want are displayed in the
Un-Archive Summary.
5. If you want to load this project in the UI after files have been extracted,
enable the Load project into Synplicity after un-archiving option.
6. Click Un-Archive.
A message dialog box is displayed while the files are being extracted.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 161
Chapter 5: Setting up a Logic Synthesis Project Archiving Files and Projects
7. If the destination directory already contains project files with the same
name as the files you are extracting, you are prompted so that the
existing files can be overwritten by the extracted files.
Copy a Project
Use this utility to create an unarchived copy of a design project. You can copy
an entire project or just selected files from the project. However, if you want
to create an archive of the project, where the entire project is stored as a
single file, see Archive a Project, on page 155.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
162 December 2012
Archiving Files and Projects Chapter 5: Setting up a Logic Synthesis Project
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 163
Chapter 5: Setting up a Logic Synthesis Project Archiving Files and Projects
Click Next.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
164 December 2012
Archiving Files and Projects Chapter 5: Setting up a Logic Synthesis Project
3. Do the following:
Verify the copy information.
Enter a destination directory. If the directory does not exist it will be
created.
Click Copy.
This creates the project copy.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 165
Chapter 5: Setting up a Logic Synthesis Project Archiving Files and Projects
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
166 December 2012
CHAPTER 6
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 167
Chapter 6: Inferring High-Level Objects Defining Black Boxes for Synthesis
The following process shows you how to instantiate both types as black
boxes. Refer to the installDirectory/examples directory for examples of instantia-
tions of low-level resources.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
168 December 2012
Defining Black Boxes for Synthesis Chapter 6: Inferring High-Level Objects
module BBDLHS(D,E,GIN,GOUT,PAD,Q)
/* synthesis syn_black_box black_box_pad_pin="PAD"
Make an instance of the stub in your design.
Compile the stub along with the module containing the instantiation
of the stub.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 169
Chapter 6: Inferring High-Level Objects Defining Black Boxes for Synthesis
4. Add timing constraints and attributes as needed. See Adding Black Box
Timing Constraints, on page 172 and Adding Other Black Box
Attributes, on page 176.
5. After synthesis, merge the black box netlist and the synthesis results file
using the method specified by your vendor.
The following process shows you how to instantiate both types as black
boxes. Refer to the installDirectory/examples directory for examples of instantia-
tions of low-level resources.
library family ;
use family.components.all;
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
170 December 2012
Defining Black Boxes for Synthesis Chapter 6: Inferring High-Level Objects
library synplify;
use synplify.attributes.all;
...
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 171
Chapter 6: Inferring High-Level Objects Defining Black Boxes for Synthesis
component mybuf
port(O: out bit; I: in bit);
end component;
attribute black_box_pad_pin of mybuf: component is "I";
Instantiate the pad and connect the signals.
begin
data_pad: mybuf port map (
O => data_core,
I => data);
4. Add timing constraints and attributes. See Adding Black Box Timing
Constraints, on page 172 and Adding Other Black Box Attributes, on
page 176.
You attach black box timing constraints to instances that have been defined
as black boxes. There are three black box timing constraints, syn_tpd, syn_tsu,
and syn_tco.
Black Box
D Q
syn_tsu
clk
syn_tco
syn_tpd
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
172 December 2012
Defining Black Boxes for Synthesis Chapter 6: Inferring High-Level Objects
2. Determine the kind of constraint for the information you want to specify:
To define... Use...
Propagation delay through the black box syn_tpd
Setup delay (relative to the clock) for input pins syn_tsu
Clock-to-output delay through the black box syn_tco
The following table shows the appropriate syntax for att_value. See the
Reference Manual for complete syntax information.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 173
Chapter 6: Inferring High-Level Objects Defining Black Boxes for Synthesis
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
174 December 2012
Defining Black Boxes for Synthesis Chapter 6: Inferring High-Level Objects
input [3:0] d;
input [3:0] addr;
input we;
input clk;
endmodule
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 175
Chapter 6: Inferring High-Level Objects Defining Black Boxes for Synthesis
Black Box
Clk
Pad
syn_isclock black_box_pad_pin
1. To specify that a clock pin on the black box has access to global clock
routing resources, use syn_isclock.
2. To specify that the software need not insert a pad for a black box pin,
use black_box_pad_pin.
Use this for technologies that automatically insert pad buffers for the
I/Os, like Microsemi technologies.
3. To define a tristate pin so that you do not get a mixed driver error when
there is another tristate buffer driving the same net, use
black_box_tri_pins.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
176 December 2012
Defining State Machines for Synthesis Chapter 6: Inferring High-Level Objects
For alternative ways to define state machines, see Defining State Machines in
VHDL, on page 178 and Specifying FSMs with Attributes and Directives, on
page 180.
In Verilog, model the state machine with case, casex, or casez statements
in always blocks. Check the current state to advance to the next state
and then set output values. Do not use if statements.
Always use a default assignment as the last assignment in the case
statement, and set the state variable to bx. This is a dont care state-
ment and ensures that the software can remove unnecessary decoding
and gates.
Make sure the state machines have a synchronous or asynchronous
reset to set the hardware to a valid state after power-up, or to reset the
hardware when you are operating.
Use explicit state values for states using parameter or define statements.
This is an example of a parameter statement that sets the current state to
2h2:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 177
Chapter 6: Inferring High-Level Objects Defining State Machines for Synthesis
The following are VHDL guidelines for coding. The software attaches the
syn_state_machine attribute to each extracted FSM.
Use case statements to check the current state at the clock edge,
advance to the next state, and set output values. You can also use if-then-
else statements, but case statements are preferable.
If you do not cover all possible cases explicitly, include a when others
assignment as the last assignment of the case statement, and set the
LO
state vector to some valid state.
If you create implicit state machines with multiple WAIT statements, the
software does not recognize them as state machines.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
178 December 2012
Defining State Machines for Synthesis Chapter 6: Inferring High-Level Objects
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 179
Chapter 6: Inferring High-Level Objects Defining State Machines for Synthesis
The following steps show you how to use attributes to define FSMs for extrac-
tion. For alternative ways to define state machines, see Defining State
Machines in Verilog, on page 177 and Defining State Machines in VHDL, on
page 178.
To... Attribute
Specify a state machine for extraction and syn_state_machine=1
optimization
Prevent state machines from being extracted syn_state_machine=0
and optimized
Prevent the state machine from being syn_preserve=1
optimized away
2. To determine the encoding style used for the state machine, set the
syn_encoding attribute in the source code or in the SCOPE window. For
VHDL users there are alternative methods, described in the next step.
The FSM Compiler and the FSM Explorer honor this setting. The
different values for this attribute are briefly described here:
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
180 December 2012
Defining State Machines for Synthesis Chapter 6: Inferring High-Level Objects
3. If you are using VHDL, you have two choices for defining encoding:
Use syn_encoding as described above, and enable the FSM compiler.
Use syn_enum_encoding to define the states (sequential, onehot, gray, and
safe) and disable the FSM compiler. If you do not disable the FSM
compiler, the syn_enum_encoding values are not implemented. This is
because the FSM compiler, a mapper operation, overrides
syn_enum_encoding, which is a compiler directive.
Use this method for user-defined FSM encoding. For example:
attribute syn_enum_encoding of state_type : type is "001 010 101";
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 181
Chapter 6: Inferring High-Level Objects Inferring RAMs
Inferring RAMs
There are two methods of handling RAMs: instantiation and inference. The
software can automatically infer RAMs if they are structured correctly in your
source code. For details, see the following sections:
Inference Versus Instantiation, on page 182
Basic Guidelines for Coding RAMs, on page 183
Specifying RAM Implementation Styles, on page 187
For information about generating RAMs with SYNCore, see Specifying RAMs
with SYNCore, on page 376.
Limitations Limitations
Glue logic to implement the RAM might Source code is not portable because it is
result in a sub-optimal implementation. technology-dependent.
Can only infer synchronous RAMs Limited or no access to timing and area
No support for address wrapping data if the RAM is a black box.
No support for RAM enables, except for Inter-tool access issues, if the RAM is a
write enable black box created with another tool.
Pin name limitations means some pins
are always active or inactive
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
182 December 2012
Inferring RAMs Chapter 6: Inferring High-Level Objects
1. Make sure that the RAM meets minimum size and address width
requirements for your technology. The software implements RAMs that
are smaller than the minimum as registers.
3. For a single-port RAM, make the address for indexing the write-to the
same as the address for the read-from. The following code and figure
illustrate how the software infers a single-port RAM.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all;
entity ramtest is
port (q : out std_logic_vector(3 downto 0);
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 183
Chapter 6: Inferring High-Level Objects Inferring RAMs
begin
q <= mem(conv_integer(addr));
end rtl;
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
184 December 2012
Inferring RAMs Chapter 6: Inferring High-Level Objects
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 185
Chapter 6: Inferring High-Level Objects Inferring RAMs
4'b1011: mem11 = d;
4'b1100: mem12 = d;
4'b1101: mem13 = d;
4'b1110: mem14 = d;
4'b1111: mem15 = d;
endcase
end
end
endmodule
6. For RAMs where inference is not the best solution, use either one of
these approaches:
Implement them as regular logic using the syn_ramstyle attribute with
a value of registers. You might want to do this if you have to conserve
RAM resources.
Instantiate RAMs using the black box methodology. Use this method
in cases where RAM is implemented in two cells instead of one
because the RAM address range spans the word limit of the primitive
and the software does not currently support address wrapping. If the
address range is 8 to 23 and the RAM primitive is 16 words deep, the
software implements the RAM as two cells, even though the address
range is only 16 words deep. Refer to the list of limitations in
Inference Versus Instantiation, on page 182 and the vendor-specific
information referred to in the previous step to determine whether you
should instantiate RAMs.
The compiler infers one of the following RAMs from the source code. You
can view them in the RTL
LO view:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
186 December 2012
Inferring RAMs Chapter 6: Inferring High-Level Objects
RAM1 RAM
RAM2 Resettable RAM
NRAM Multi-port RAM
If the number of words in the RAM primitive is less than the required
address range, the compiler generates two RAMs instead of one, leaving
any extra addresses unused.
Once the compiler has inferred the RAMs, the mapper implements the
inferred RAMs in the technology you specified. For details of how to map
the RAM inferred by the compiler to the implementation you want, see
Specifying RAM Implementation Styles, on page 187.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 187
Chapter 6: Inferring High-Level Objects Initializing RAMs
Initializing RAMs
You can specify startup values for RAMs and pass them on to the place-and-
route tools. See the following for ways to set the initial values:
Initializing RAMs in Verilog, on page 188
Initializing RAMs in VHDL, on page 189
1. Create a data file with an initial value for every address in the memory
array. This file can be a binary file or a hex file. See Initialization Data
File, on page 508 in the Reference Manual for details of the formats for
these files.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
188 December 2012
Initializing RAMs Chapter 6: Inferring High-Level Objects
Make sure the array declaration matches the order in the initial value
data file you specified. As the file is read, each number encountered is
assigned to a successive word element of the memory. The software
starts with the left-hand address in the memory declaration, and
loads consecutive words until the memory is full or the data file has
been completely read. The loading order is the order in the
declaration. For example, with the following memory definition, the
first line in the data file corresponds to address 0:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 189
Chapter 6: Inferring High-Level Objects Initializing RAMs
entity w_r2048x28 is
port (
clk : in std_logic;
adr : in std_logic_vector(10 downto 0);
di : in std_logic_vector(26 downto 0);
we : in std_logic;
dout : out std_logic_vector(26 downto 0));
end;
architecture arch of w_r2048x28 is
-- Signal Declaration --
type MEM is array(0 to 2047) of std_logic_vector (26 downto 0);
signal memory : MEM := (
"111111111111111000000000000"
,"111110011011101010011110001"
,"111001111000111100101100111"
,"110010110011101110011110001"
,"101001111000111111100110111"
,"100000000000001111111111111"
,"010110000111001111100110111"
,"001101001100011110011110001"
,"000110000111001100101100111"
,"000001100100011010011110001"
,"000000000000001000000000000"
,"000001100100010101100001110"
,"000110000111000011010011000"
,"001101001100010001100001110"
,"010110000111000000011001000"
,"011111111111110000000000000"
,"101001111000110000011001000"
,"110010110011100001100001110"
,"111001111000110011010011000"
,"111110011011100101100001110"
,"111111111111110111111111111"
,"111110011011101010011110001"
,"111001111000111100101100111"
,"110010110011101110011110001"
,"101001111000111111100110111"
,"100000000000001111111111111"
,others => (others => '0'));
begin LO
process(clk)
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
190 December 2012
Initializing RAMs Chapter 6: Inferring High-Level Objects
begin
if rising_edge(clk) then
if (we = '1') then
memory(conv_integer(adr)) <= di;
end if;
dout <= memory(conv_integer(adr));
end if;
end process;
end arch;
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity one is
generic (data_width : integer := 6;
address_width :integer := 3
);
port ( data_a :in std_logic_vector(data_width-1 downto 0);
raddr1 :in unsigned(address_width-2 downto 0);
waddr1 :in unsigned(address_width-1 downto 0);
we1 :in std_logic;
clk :in std_logic;
out1 :out std_logic_vector(data_width-1 downto 0) );
end;
architecture rtl of one is
type mem_array is array(0 to 2**(address_width) -1) of
std_logic_vector(data_width-1 downto 0);
begin
WRITE1_RAM : process (clk)
variable mem : mem_array := (1 => "111101", others => (1=>'1',
others => '0'));
begin
if rising_edge(clk) then
out1 <= mem(to_integer(raddr1));
if (we1 = '1') then
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 191
Chapter 6: Inferring High-Level Objects Initializing RAMs
mem(to_integer(waddr1)) := data_a;
end if;
end if;
end process WRITE1_RAM;
end rtl;
Use $readmemb for a binary file and $readmemh for a hex file. For details
about the syntax, see Initial Values in Verilog, on page 504 in the Refer-
ence Manual.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
192 December 2012
CHAPTER 7
This chapter covers techniques for optimizing your design using built-in tools
or attributes. For vendor-specific optimizations, see Chapter 11, Optimizing
for Microsemi Designs. It describes the following:
Tips for Optimization, on page 194
Retiming, on page 198
Preserving Objects from Optimization, on page 205
Optimizing Fanout, on page 211
Sharing Resources, on page 215
Inserting I/Os, on page 220
Optimizing State Machines, on page 220
Inserting Probes, on page 229
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 193
Chapter 7: Specifying Design-Level Optimizations Tips for Optimization
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
194 December 2012
Tips for Optimization Chapter 7: Specifying Design-Level Optimizations
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 195
Chapter 7: Specifying Design-Level Optimizations Tips for Optimization
You can set this option globally or on specific registers. See Retiming, on
page 198 for details.
Select a balanced fanout constraint. A large constraint creates nets with
large fanouts, and a low fanout constraint results in replicated logic. See
Setting Fanout Limits, on page 211 for information about setting limits
and using the syn_maxfan attribute. You can use this in conjunction with
the syn_replicate attribute that controls register duplication and buffering.
Control register duplication and buffering criteria with the syn_replicate
attribute. The tool automatically replicates registers during optimization,
and you can use this attribute globally or locally on a specific register to
turn off register duplication. See Controlling Buffering and Replication,
on page 213 for a description. Use syn_replicate in conjunction with the
syn_maxfan attribute that controls fanout.
If the critical path goes through arithmetic components, try disabling
Resource Sharing. You can
LOget faster times at the expense of increased
area, but use this technique carefully. Adding too many resources can
cause longer delays and defeat your purpose.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
196 December 2012
Tips for Optimization Chapter 7: Specifying Design-Level Optimizations
If the P&R and synthesis tools report different critical paths, use a
timing constraint with the -route option. With this option, the software
adds route delay to its calculations when trying to meet the clock
frequency goal. Use realistic values for the constraints.
For FSMs, use the onehot encoding style, because it is often the fastest
implementation. If a large output decoder follows an FSM, gray or
sequential encoding could be faster.
For designs with black boxes, characterize the timing models accurately,
using the syn_tpd, syn_tco, and syn_tso directives.
If you see warnings about feedback muxes being created for signals
when you compile your source code, make sure to assign set/resets for
the signals. This improves performance by eliminating the extra mux
delay on the input of the register.
Make sure that you pass your timing constraints to the place-and-route
tools, so that they can use the constraints to optimize timing.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 197
Chapter 7: Specifying Design-Level Optimizations Retiming
Retiming
Some Microsemi technologies. Retiming improves the timing performance of
sequential circuits without modifying the source code. It automatically moves
registers (register balancing) across combinatorial gates or LUTs to improve
timing while maintaining the original behavior as seen from the primary
inputs and outputs of the design. Retiming moves registers across gates or
LUTs, but does not change the number of registers in a cycle or path from a
primary input to a primary output. However, it can change the total number
of registers in a design.
Controlling Retiming
The following procedure shows you how to use retiming.
1. To enable retiming for the whole design, check the Retiming check box.
You can set the Retiming option from the button panel in the Project
window, or with the Project->Implementation Options command (Options tab).
The option is only available in certain technologies.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
198 December 2012
Retiming Chapter 7: Specifying Design-Level Optimizations
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 199
Chapter 7: Specifying Design-Level Optimizations Retiming
4. Set other options for the run. Retiming might affect some constraints
and attributes. See How Retiming Works, on page 202 for details.
After the LUTs are mapped, the software moves registers to optimize
timing. See Retiming Example, on page 200 for an example. The
software honors other attributes you set, like syn_preserve, syn_useioff,
and syn_ramstyle. See How Retiming Works, on page 202 for details.
Note that the tool might retime registers associated with RAMs and
DSPs, regardless of whether the Retiming option is on or off.
The log file includes a retiming report that you can analyze to under-
stand the retiming changes. It contains a list of all the registers added or
removed because of retiming. Retimed registers have a _ret suffix added
to their names. See Retiming Report, on page 201 for more information
about the report.
Retiming Example
The following example shows a design with retiming disabled and enabled.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
200 December 2012
Retiming Chapter 7: Specifying Design-Level Optimizations
The top figure shows two levels of logic between the registers and the output,
and no levels of logic between the inputs and the registers.
The bottom figure shows the results of retiming the three registers at the
input of the OR gate. The levels of logic from the register to the output are
reduced from two to one. The retimed circuit has better performance than the
original circuit. Timing is improved by transferring one level of logic from the
critical part of the path (register to output) to the non-critical part (input to
register).
Retiming Report
The retiming report is part of the log file, and includes the following:
The number of registers added, removed, or untouched by retiming.
Names of the original registers that were moved by retiming and which
no longer exist in the Technology view.
Names of the registers created as a result of retiming, and which did not
exist in the RTL view. The added registers have a _ret suffix.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 201
Chapter 7: Specifying Design-Level Optimizations Retiming
Attribute/Constraint Effect
False path constraint Does not retime flip-flops with different false path
constraints. Retimed registers affect timing
constraints.
Multicycle constraint Does not retime flip-flops with different multicycle
constraints. Retimed registers affect timing
constraints.
Register constraint LO
Does not maintain define_reg_input_delay and
define_reg_output_delay constraints. Retimed
registers affect timing constraints.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
202 December 2012
Retiming Chapter 7: Specifying Design-Level Optimizations
Attribute/Constraint Effect
from/to timing If you set a timing constraint using a from/to
exceptions specification on a register, it is not retimed. The
exception is when using a max_delay constraint. In
this case, retiming is performed but the constraint is
not forward annotated. (The max_delay value would
no longer be valid.)
syn_hier=macro Does not retime registers in a macro with this
attribute.
syn_keep Does not retime across keepbufs generated because
of this attribute.
syn_hier=macro Does not retime registers in a macro with this
attribute.
syn_probe Does not retime net drivers with this attribute. If the
net driver is a LUT or gate, no flip-flops are retimed
across it.
syn_reference_clock On a critical path, does not retime registers with
different syn_reference_clock values together,
because the path effectively has two different clock
domains.
syn_useioff Does not override attribute-specified packing of
registers in I/O pads. If the attribute value is false,
the registers can be retimed. If the attribute is not
specified, the timing engine determines whether the
register is packed into the I/O block.
syn_allow_retiming Registers are not retimed if the value is 0.
Retiming does not change the simulation behavior (as observed from
primary inputs and outputs) of your design, However if you are
monitoring (probing) values on individual registers inside the design,
you might need to modify your test bench if the probe registers are
retimed.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 203
Chapter 7: Specifying Design-Level Optimizations Retiming
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
204 December 2012
Preserving Objects from Optimization Chapter 7: Specifying Design-Level Optimizations
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 205
Chapter 7: Specifying Design-Level Optimizations Preserving Objects from Optimization
module redundant1(ina,inb,out1);
input ina,inb;
output out1,out2;
wire out1;
wire out2;
assign out1 = ina & inb;
assign out2 = ina & inb;;
endmodule
The compiler implements the AND function by replicating the outputs out1
and out2, but optimizes away the second AND gate because it is redundant.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
206 December 2012
Preserving Objects from Optimization Chapter 7: Specifying Design-Level Optimizations
To replicate the AND gate in the previous example, apply syn_keep to the input
wires, as shown below:
module redundant1d(ina,inb,out1,out2);
input ina,inb;
output out1,out2;
wire out1;
wire out2;
wire in1a /*synthesis syn_keep = 1*/;
wire in1b /*synthesis syn_keep = 1*/;
wire in2a /*synthesis syn_keep = 1*/;
wire in2b /*synthesis syn_keep = 1 */;
assign in1a = ina ;
assign in1b = inb ;
assign in2a = ina;
assign in2b = inb;
assign out1 = in1a & in1b;
assign out2 = in2a & in2b;
endmodule
Setting syn_keep on the input wires ensures that the second AND gate is
preserved:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 207
Chapter 7: Specifying Design-Level Optimizations Preserving Objects from Optimization
You must set syn_keep on the input wires of an instance if you want to
preserve the logic, as in the replication of this AND gate. If you set it on the
outputs, the instance is not replicated, because syn_keep preserves the nets
but not the function driving the net. If you set syn_keep on the outputs in the
example, you get only one AND gate, as shown in the next figure.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
208 December 2012
Preserving Objects from Optimization Chapter 7: Specifying Design-Level Optimizations
1. Attach the syn_hier attribute with the value you want to the module or
architecture you want to preserve.
To... Value...
Flatten all levels below, but not the current level flatten
Remove the current level of hierarchy without affecting remove
the lower levels
Remove the current level of hierarchy and the lower levels flatten, remove
Flatten the current level (if needed for optimization) soft
You can also add the attribute in SCOPE instead of the HDL code. If you
use SCOPE to enter the attribute, make sure to use the v: syntax. For
details, see syn_hier Attribute, on page 947 in the Reference Manual.
This flattens the entire netlist and does not preserve any hierarchical
boundaries. See syn_netlist_hierarchy Attribute, on page 969 in the
Reference Manual for the syntax.
Preserving Hierarchy
The synthesis process includes cross-boundary optimizations that can flatten
hierarchy. To override these optimizations, use the syn_hier attribute as
described here. You can also use this attribute to direct the flattening process
as described in Controlling Hierarchy Flattening, on page 209.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 209
Chapter 7: Specifying Design-Level Optimizations Preserving Objects from Optimization
To... Value...
Preserve the interface but allow cell packing across the firm
boundary
Preserve the interface with no exceptions hard
Preserve the interface and contents with no exceptions macro
(except Microsemi PA and 500K families)
Flatten lower levels but preserve the interface of the specified flatten, firm
design unit
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
210 December 2012
Optimizing Fanout Chapter 7: Specifying Design-Level Optimizations
Optimizing Fanout
You can optimize your results with attributes and directives, some of which
are specific to the technology you are using. Similarly, you can use specify
objects or hierarchy that you want to preserve during synthesis. For a
complete list of all the directives and attributes, see the Reference Manual.
This section describes the following:
Setting Fanout Limits, on page 211
Controlling Buffering and Replication, on page 213
1. To set a global fanout limit for the whole design, do either of the
following:
Select Project-> Implementation Options->Device and type a value for the
Fanout Guide option.
Apply the syn_maxfan attribute to the top-level view or module.
The value sets the number of fanouts for a given driver, and affects all
the nets in the design. The defaults vary, depending on the technology.
Select a balanced fanout value. A large constraint creates nets with large
fanouts, and a low fanout constraint results in replicated or buffered
logic. Both extremes affect routing and design performance. The right
value depends on your design. The same value of 32 might result in
fanouts of 11 or 12 and large delays on the critical path in one design or
in excessive replication in another design.
The software uses the value as a soft limit, or a guide. It traverses the
inverters and buffers to identify the fanout, and tries to ensure that all
fanouts are under the limit by replicating or buffering where needed (see
Controlling Buffering and Replication, on page 213 for details). However,
the synthesis tool does not respect the fanout limit absolutely; it ignores
the limit if the limit imposes constraints that interfere with optimization.
2. For certain Microsemi technologies, you can set a global hard fanout
limit by doing the following:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 211
Chapter 7: Specifying Design-Level Optimizations Optimizing Fanout
3. To override the global fanout guideline and set a soft fanout limit at a
lower level, set the syn_maxfan attribute on modules, views, or non-
primitive instances.
These limits override the more global limits for that object (including a
global hard limit in Microsemi technologies). However, these limits still
function as soft limits, and are replicated or buffered, as described in
Controlling Buffering and Replication, on page 213.
For example, the software does not traverse a syn_keep buffer (inserted
as a result of the attribute), and does not optimize it. However, the
software can optimize implicit buffers created as a result of other opera-
tions; for example, it does not respect an implicit buffer created as a
result of syn_direct_enable.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
212 December 2012
Optimizing Fanout Chapter 7: Specifying Design-Level Optimizations
You can control whether high fanout nets are buffered or replicated, using
the techniques described here:
To use buffering instead of replication, set syn_replicate with a value of 0
globally, or on modules or registers. The syn_replicate attribute prevents
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 213
Chapter 7: Specifying Design-Level Optimizations Optimizing Fanout
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
214 December 2012
Sharing Resources Chapter 7: Specifying Design-Level Optimizations
Sharing Resources
One of the ways you can optimize area is to use resource sharing. With
resource sharing, the software uses the same arithmetic operators for
mutually exclusive statements; for example, with the branches of a case
statement. Conversely, you can improve timing by disabling resource
sharing, but at the expense of increased area.
1. Specify resource sharing globally for the whole design, using one of the
methods below. Enable the option to improve area; disable it to improve
timing.
Select Project->Implementation Options->Options, and enable or disable
Resource Sharing. Alternatively, enable the Resource Sharing button on
the left side of the Project view.
Apply the syn_sharing directive to the top-level module or architecture
in the source code. See syn_sharing Directive, on page 1014 of the
Reference Manual for details of the syntax.
Edit your project file and include the following command. 0 disables
and 1 enables resource sharing:
When you save the project file, it includes the Tcl set_option
-resource_sharing command.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 215
Chapter 7: Specifying Design-Level Optimizations Sharing Resources
Verilog Example
The following example illustrates resource sharing in Verilog. The first
diagram shows the equivalent logic with resource sharing enabled, and the
second diagram shows the same logic with resource sharing disabled.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
216 December 2012
Sharing Resources Chapter 7: Specifying Design-Level Optimizations
VHDL Example
The following example illustrates resource sharing in VHDL. The first
diagram shows the equivalent logic with resource sharing enabled, and the
second diagram shows the same logic with resource sharing disabled.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity add is
port (a, b : in std_logic_vector(1 downto 0);
x, y : in std_logic_vector(1 downto 0);
clk, sel, en: in std_logic;
out1 : out std_logic_vector(3 downto 0);
out2 : out std_logic_vector(3 downto 0)
);
end add;
architecture rtl of add is
signal tmp1, tmp2: std_logic_vector(3 downto 0);
begin
tmp1 <= a * b;
tmp2 <= x * y;
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 217
Chapter 7: Specifying Design-Level Optimizations Sharing Resources
process(clk) begin
if clkevent and clk=1 then
if (en=1) then
if (sel=1) then
out1 <= tmp1;
else
out1 <= tmp2;
end if;
else
if (sel=1) then
out2 <= tmp1;
else
out2 <= tmp2;
end if;
end if;
end if;
end process;
end rtl;
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
218 December 2012
Sharing Resources Chapter 7: Specifying Design-Level Optimizations
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 219
Chapter 7: Specifying Design-Level Optimizations Inserting I/Os
Inserting I/Os
You can control I/O insertion globally, or on a port-by-port basis.
1. To control the insertion of I/O pads at the top level of the design, use the
Disable I/O Insertion option as follows:
Select Project->Implementation Options and click the Device panel.
Enable the option (checkbox on) if you want to do a preliminary run
and check the area taken up by logic blocks, before synthesizing the
entire design.
Do this if you want to check the area your blocks of logic take up,
before you synthesize an entire FPGA. If you disable automatic I/O
insertion, you do not get any I/O pads in your design, unless you
manually instantiate them.
Leave the Disable I/O Insertion checkbox empty (disabled) if you want to
automatically insert I/O pads for all the inputs, outputs and
bidirectionals.
When this option is set, the software inserts I/O pads for inputs,
outputs, and bidirectionals in the output netlist. Once inserted, you
can override the I/O pad inserted by directly instantiating another
I/O pad.
For the most control, enable the option and then manually
instantiate the I/O pads for specific pins, as needed.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
220 December 2012
Optimizing State Machines Chapter 7: Specifying Design-Level Optimizations
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 221
Chapter 7: Specifying Design-Level Optimizations Optimizing State Machines
If you are trying to decide whether to use the FSM Compiler or the FSM
Explorer to optimize your state machines, remember these points:
The FSM Explorer runs the FSM Compiler if it has not already been run,
because it picks encoding styles based on the state machines that the
FSM Compiler extracts.
Like the FSM Compiler, you use the FSM Explorer to generate better
results for your state machines. Unlike the FSM Compiler, which picks
an encoding style based on the number of states, the FSM Explorer tries
out different encoding styles and picks the best style for the state
machine based on overall design constraints.
The trade-off is that the FSM Explorer takes lonbger to run than the FSM
Compiler.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
222 December 2012
Optimizing State Machines Chapter 7: Specifying Design-Level Optimizations
2. To set a specific encoding style for a state machine, define the style with
the syn_encoding attribute, as described in Specifying FSMs with
Attributes and Directives, on page 180.
If you do not specify a style, the FSM Compiler picks an encoding style
based on the number of states.
In the log file, the FSM Compiler writes a report that includes a descrip-
tion of each state machine extracted and the set of reachable states for
each state machine.
4. Select View->View Log File and check the log file for descriptions of the
state machines and the set of reachable states for each one. You see text
like the following:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 223
Chapter 7: Specifying Design-Level Optimizations Optimizing State Machines
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
224 December 2012
Optimizing State Machines Chapter 7: Specifying Design-Level Optimizations
1. If you have just a few state machines you do not want to optimize, do the
following:
Enable the FSM Compiler by checking the box in the button panel of
the Project window.
If you do not want to optimize the state machine, add the
syn_state_machine directive to the registers in the Verilog or VHDL
code. Set the value to 0. When synthesized, these registers are not
extracted as state machines.
2. If you have many state machines you do not want optimized, do this:
Disable the compiler by disabling the Symbolic FSM Compiler box in one
of these places: the main panel on the left side of the project window
or the Options tab of the dialog box that comes up when you click the
Add Implementation or Implementation Options buttons. This disables the
compiler from optimizing any state machine in the design. You can
now selectively turn on the FSM compiler for individual FSMs.
For state machines you want the FSM Compiler to optimize
automatically, add the syn_state_machine directive to the individual
state registers in the VHDL or Verilog code. Set the value to 1. When
synthesized, the FSM Compiler extracts these registers with the
default encoding styles according to the number of states.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 225
Chapter 7: Specifying Design-Level Optimizations Optimizing State Machines
For state machines with specific encoding styles, set the encoding
style with the syn_encoding attribute, as described in Specifying FSMs
with Attributes and Directives, on page 180. When synthesized, these
registers have the specified encoding style.
Run synthesis.
The software automatically recognizes and extracts only the state
machines you marked. It automatically assigns encoding styles to the
state machines with the syn_state_machine attribute, and honors the
encoding styles set with the syn_encoding attribute. It writes out a log file
that contains a description of each state machine extracted, and the set
of reachable states for each state machine.
3. Check the state machine in the log file, the RTL and technology views,
and the FSM viewer. For information about the FSM viewer, see Using
the FSM Viewer, on page 317.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
226 December 2012
Optimizing State Machines Chapter 7: Specifying Design-Level Optimizations
2. Enable the FSM Explorer by checking the FSM Explorer box in one of
these places:
The main panel on the left side of the project window
The Options tab of the dialog box that comes up when you click the
Add Implementation or Implementation Options buttons.
If you have not checked the FSM Compiler option, checking the FSM
Explorer option automatically selects the FSM Compiler option.
The FSM Explorer uses the state machines extracted by the FSM
Compiler. If you have not run the FSM Compiler, the FSM Explorer
invokes the compiler automatically to extract the state machines,
instantiate state machine primitives, and optimize them. Then, the FSM
Explorer runs through each encoding style for each state machine that
does not have a syn_encoding attribute and picks the best style. If you
have defined an encoding style with syn_encoding, it uses that style.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 227
Chapter 7: Specifying Design-Level Optimizations Optimizing State Machines
4. Select View->View Log File and check the log file for the descriptions. The
following extract shows the state machine and the reachable states as
well as the encoding style, gray, set by FSM Explorer.
For information about the FSM viewer, see Using the FSM Viewer, on
page 317.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
228 December 2012
Inserting Probes Chapter 7: Specifying Design-Level Optimizations
Inserting Probes
Probes are extra wires that you insert into the design for debugging. When
you insert a probe, the signal is represented as an output port at the top
level. You can specify probes in the source code or by interactively attaching
an attribute.
To define probes for part of a bus, specify where you want to attach the
probes; for example, if you specify reg [1:0] in the previous code, the
software only inserts two probes.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 229
Chapter 7: Specifying Design-Level Optimizations Inserting Probes
For detailed information about VHDL attributes and sample files, see the
Reference Manual.
4. Run synthesis.
The software looks for nets with the syn_probe attribute and creates
probes and I/O pads for them.
5. Check the probes in the log file (*.srr) and the Technology view.
This figure shows some probes and probe entries in the log file.
2. Push down as necessary in an RTL view, and select the net for which
you want to insert a probe point.
Do not insert probes for output or bidirectional signals. If you do, you
see warning messages in the log file.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
230 December 2012
Inserting Probes Chapter 7: Specifying Design-Level Optimizations
Add the prefix n: to the net name in the SCOPE window. If you are
adding a probe to a lower-level module, the name is created by
concatenating the names of the hierarchical instances.
If you want to attach probes to part but not all of a bus, make the
change in the Object column. For example, if you enter
n:UC_ALU.longq[4:0] instead of n:UC_ALU.longq[8:0], the software only
inserts probes where specified.
Select syn_probe in the Attribute column, and type 1 in the Value
column.
Add the constraint file to the project list.
4. Rerun synthesis.
5. Open a Technology view and check the probe wires that have been
inserted. You can use the Ports tab of the Find form to locate the probes.
The software adds I/O pads for the probes. The following figure shows
some of the pads in the Technology view and the log file entries.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 231
Chapter 7: Specifying Design-Level Optimizations Inserting Probes
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
232 December 2012
CHAPTER 8
This chapter describes how to run synthesis, and how to analyze the log file
generated after synthesis. See the following:
Synthesizing Your Design, on page 234
Checking Log Results, on page 239
Handling Messages, on page 245
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 233
Chapter 8: Synthesizing and Analyzing the Log File Synthesizing Your Design
1. If you want to compile your design without mapping it, select Run->
Compile Only or press F7.
A compiled design has the RTL mapping, and you can view the RTL view.
You might want to just compile the design when you are not ready to
synthesize the design, but when you need to use a tool that requires a
compiled design, like the SCOPE interface.
2. To synthesize the logic, set all the options and attributes you want, and
then click Run.
Up-to-date checking is run for all synthesis design flows. However, for the
Hierarchical Project Management flows, up-to-date checking is an essential
feature. For example, if a project contains four sub-projects and only one
project is modified, then the other three projects do not need to be rerun. This
saves in overall runtime.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
234 December 2012
Synthesizing Your Design Chapter 8: Synthesizing and Analyzing the Log File
After each individual module run completes, the GUI optionally copies
the contents of these intermediate log files from the synlog folder and
adds them to the Project log file (rev_1/projectName.srr). To set this option,
see Copy Individual Job Logs to the SRR Log File, on page 236.
If you re-synthesize the design and there are no changes to the inputs
(HDL, constraints, and Project options):
The GUI does not rerun pre-mapping and technology mapping and no
new netlist files are created.
In the HTML log file, the GUI adds a link that points to the existing
pre-mapping and mapping log files from the previous run. Double-
click on this link (@L: indicates the link) to open the new text file
window.
If you open the text log file, the link is a relative path to the
implementation folder for the pre-mapping and mapping log files from
the previous run.
Note: Also, the GUI adds a note that indicates mapping will not be re-
run and to use the Run->Resynthesize All option in the Project view
to force synthesis be run again.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 235
Chapter 8: Synthesizing and Analyzing the Log File Synthesizing Your Design
As the job is running, you can click in the job status field of the Project view
to bring up the Job Status display. When you rerun synthesis, the job status
identifies which modules (pre-mapping or mapping) are up-to-date.
See also:
Copy Individual Job Logs to the SRR Log File
Limitations and Risks
2. On the Project View Options dialog box, scroll down to the Use links in SRR log
file to individual job logs option.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
236 December 2012
Synthesizing Your Design Chapter 8: Synthesizing and Analyzing the Log File
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 237
Chapter 8: Synthesizing and Analyzing the Log File Synthesizing Your Design
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
238 December 2012
Checking Log Results Chapter 8: Synthesizing and Analyzing the Log File
For users who only want to check a few critical performance criteria, it is
easier to use the Watch Window (seeUsing the Watch Window, on page 243)
instead of the log file. For details, read through the log file.
The log file lists the compiled files, details of the synthesis run, color-
coded errors, warnings and notes, and a number of reports. For infor-
mation about the reports, see Analyzing Results Using the Log File
Reports, on page 242.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 239
Chapter 8: Synthesizing and Analyzing the Log File Checking Log Results
3. To find information in the log file, select Edit->Find or press Ctrl-f. Fill out
the criteria in the form and click OK.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
240 December 2012
Checking Log Results Chapter 8: Synthesizing and Analyzing the Log File
The areas of the log file that are most important are the warning
messages and the timing report. The log file includes a timing report
that lists the most critical paths. The Synplify Pro product also lets you
generate a report for a path between any two designated points, see
Generating Custom Timing Reports with STA, on page 331. The
following table lists places in the log file you can use when searching for
information.
You must fix errors, because you cannot synthesize a design with errors.
Check the warnings and make sure you understand them. See Checking
Results in the Message Viewer, on page 245 for information. Notes are
informational and usually can be ignored. For details about
crossprobing and fixing errors, see Handling Warnings, on page 255,
Editing HDL Source Files with the Built-in Text Editor, on page 32, and
Crossprobing from the Text Editor Window, on page 296.
If you see Automatic dissolve at startup messages, you can usually ignore
them. They indicate that the mapper has optimized away hierarchy
because there were only a few instances at the lower level.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 241
Chapter 8: Synthesizing and Analyzing the Log File Checking Log Results
5. If you are trying to find and resolve warnings, you can bookmark them
as shown in this procedure:
Select Edit->Find or press Ctrl-f.
Type @W as the criteria on the Find form and click Mark All. The
software inserts bookmarks at every line with a warning. You can
now page through the file from bookmark to bookmark using the
commands in the Edit menu or the icons in the Edit toolbar. For more
information on using bookmarks, see Editing HDL Source Files with
the Built-in Text Editor, on page 32.
6. To crossprobe from the log file to the source code, click on the file name
in the HTML log file or double-click on the warning text (not the ID code)
in the ASCII text log file.
2. To check buffers, LO
Check the report by going to the Net Buffering Report section of the log
file.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
242 December 2012
Checking Log Results Chapter 8: Synthesizing and Analyzing the Log File
If you open an existing project, the Watch window shows the parameters
set the last time you opened the window.
2. If you need a larger window, either resize the window or move the Watch
Window as described below.
Hold down Ctrl or Shift, click on the window, and move it to a position
you want. This makes the Watch window an independent window,
separate from the Project view.
To move the window to another position within the Project view, right-
click in the window border and select Float in Main Window. Then move
the window to the position you want, as described above.
3. Select the log parameter you want to monitor by clicking on a line and
selecting a parameter from the resulting popup menu.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 243
Chapter 8: Synthesizing and Analyzing the Log File Checking Log Results
The software automatically fills in the appropriate value from the last
synthesis run. You can check the clock requested and estimated
frequencies, the clock requested and estimated periods, the slack, and
some resource usage criteria.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
244 December 2012
Handling Messages Chapter 8: Synthesizing and Analyzing the Log File
Handling Messages
This section describes how to work with the error messages, notes, and
warnings that result after a run. See the following for details:
Checking Results in the Message Viewer, on page 245
Filtering Messages in the Message Viewer, on page 247
Filtering Messages from the Command Line, on page 250
Automating Message Filtering with a Tcl Script, on page 251
Handling Warnings, on page 255
1. If you need a larger window, either resize the window or move the Tcl
window. Click in the window border and move it to a position you want.
You can float it outside the main window or move it to another position
within the main window.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 245
Chapter 8: Synthesizing and Analyzing the Log File Handling Messages
3. To reduce the clutter in the window and make messages easier to find
and understand, use the following techniques:
Use the color cues. For example, when you have multiple synthesis
runs, messages that have not changed from the previous run are in
black; new messages are in red.
Enable the Group Common IDs option in the upper right. This option
groups all messages with the same ID and puts a plus symbol next to
the ID. You can click the plus sign to expand grouped messages and
see individual messages.
There are two types of message groups:
- The same warning or note ID appears in multiple source files
indicated by a dash in the source files column.
- Multiple warnings or notes in the same line of source code indicated
by a bracketed number.
Sort the messages. To sort by a column header, click that column
heading. For example, click Type to sort the messages by type. For
example, you can use this to organize the messages and work
through the warnings before you look at the notes.
To find a particular message, type text in the Find field. The tool finds
the next occurrence. You can also click the F3 key to search forward,
LO
and the Shift-F3 key combination to search backwards.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
246 December 2012
Handling Messages Chapter 8: Synthesizing and Analyzing the Log File
1. Open the message viewer by clicking the Messages tab in the Tcl window
as previously described.
The Warning Filter spreadsheet opens, where you can set up filtering
expressions. Each line is one filter expression.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 247
Chapter 8: Synthesizing and Analyzing the Log File Handling Messages
Use multiple fields and operators to refine filtering. You can use
wildcards in the field, as in line 2 of the example. Wildcards are case-
sensitive and space-sensitive. You can also use ! as a negative
operator. For example, if you set the ID in line 2 to !MF*, the message
list would show all notes except those that begin with MF.
Click Apply when you have finished setting the criteria. This
automatically enables the Apply Filter button in the messages window,
and the list of messages is updated to match the criteria.
The synthesis tool interprets the criteria on each line in the Warning
Filter window as a set of AND operations (Warning and FA188), and the
lines as a set of OR operations (Warning and FA188 or Note and MF*).
To close the Warning Filter window, click Close.
5. To save your message filters and reuse them, do the following:
Save the project. The synthesis tool generates a Tcl file called
projectName.pfl (Project Filter Log) in the same location as the main
LO is an example of the information in this file:
project file. The following
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
248 December 2012
Handling Messages Chapter 8: Synthesizing and Analyzing the Log File
log_filter -hide_matches
log_filter -field type==Warning
-field message==*Una*
-field source_loc==sendpacket.v
-field log_loc==usbHostSlave.srr
-field report=="Compiler Report"
log_filter -field type==Note
log_filter -field id==BN132
log_filter -field id==CL169
log_filter -field message=="Input *"
log_filter -field report=="Compiler Report"
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 249
Chapter 8: Synthesizing and Analyzing the Log File Handling Messages
When you want to reuse the filters, source the projectName.pfl file.
You can also include this file in a synhooks Tcl script to automate your
process.
1. Type your filter expressions in the Tcl window using the log_filter
command. For details of the syntax, see log_filter Tcl Command, on
page 1118 in the Reference Manual.
For example, to hide all the notes and print only errors and warnings,
type the following:
log_filter enable
log_filter hide_matches
log_filter field type==Note
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
250 December 2012
Handling Messages Chapter 8: Synthesizing and Analyzing the Log File
1. Create a message filter file like the following. (See Filtering Messages in
the Message Viewer, on page 247 or Filtering Messages from the
Command Line, on page 250 for details about creating this file.)
log_filter -clear
log_filter -hide_matches
log_filter -field report=="ProASIC3E MAPPER"
log_filter -field type==NOTE
log_filter -field message=="Input *"
log_filter -field message=="Pruning *"
puts "DONE!"
2. Copy the synhooks.tcl file and set the environment variable as described
in Automating Flows with synhooks.tcl, on page 463.
3. Edit the synhooks.tcl file so that it reads like the following example. For
syntax details, see synhooks File Syntax, on page 1116 in the Reference
Manual.
The following loads the message filter file when the project is opened.
Specify the name of the message filter file you created in step 1. Note
that you must source the file.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 251
Chapter 8: Synthesizing and Analyzing the Log File Handling Messages
if {$runName == "synthesis"} {
puts "Mapper Done!"
log_report -print $warningFileName
set f [open [lindex $warningFileName] r]
set msg ""
while {[gets $f warningLine]>=0} {
puts $warningLine
append msg $warningLine\n
}
close $f
Continue by specifying that the messages be sent in email. You can
obtain the smtp email packages off the web.
source "d:/tcl/smtp_setup.tcl"
proc send_simple_message {recipient email_server subject body}{
set token [mime::initialize -canonical text/plain -string
$body]
mime::setheader $token Subject $subject
smtp::sendmessage $token -recipients $recipient -servers
$email_server
mime::finalize $token
}
puts "Sending email..."
send_simple_message {address1,address2}
yourEmailServer subjectText> emailText
}
}
When the script runs, an email with all the warnings from the synthesis
run is automatically sent to the specified email addresses.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
252 December 2012
Handling Messages Chapter 8: Synthesizing and Analyzing the Log File
2. Select the Suppress Message, Make Error, Make Warning, or Make Note button
to move the selected message from the upper section to the lower
section. The selected message is repopulated in the lower section with
the Override column reflecting the disposition of the message according
to the button selected.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 253
Chapter 8: Synthesizing and Analyzing the Log File Handling Messages
Message Reporting
The compiler and mapper must be rerun before the impact of the message
status changes can be seen in the updated log file.
When a projectName.pfl input file is present at the start of the run, the
message-status changes in the file are forwarded to the mapper and compiler
which generate an updated log file. Depending on the changes specified:
If an ID is promoted to an error, the mapper/compiler stops execution at
the first occurrence of the message and prints the message in the
@E:msgID :messageText format
If an ID is promoted to a warning, the mapper/compiler prints the
message in the @W:msgID :messageText format.
If an ID is demoted to aLO
note, the mapper/compiler prints the message
in the @N:msgID :messageText format.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
254 December 2012
Handling Messages Chapter 8: Synthesizing and Analyzing the Log File
message_override -suppress ID [ID ...] | -error ID [ID ...] | -warning ID [ID ...]
| -note ID [ID ...]
For example, to override the default message definition for note FX702 as a
warning, enter:
Note: After editing the pfl file, close and reopen the project to update
the overrides.
Handling Warnings
If you get warnings (@W prefix) after a synthesis run, do the following:
Read the warning message and decide if it is something you need to act
on, or whether you can ignore it.
If the message is not self-explanatory or if you are unsure about how to
handle the error, click the message ID in either the message window or
HTML log file or double click the message ID in the ASCII text log file.
These actions take you to online information about the condition that
generated the warning.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 255
Chapter 8: Synthesizing and Analyzing the Log File Handling Messages
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
256 December 2012
CHAPTER 9
This chapter describes how to analyze logic in the HDL Analyst and FSM
Viewer.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 257
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Working in the Schematic Views
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
258 December 2012
Working in the Schematic Views Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 259
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Working in the Schematic Views
All RTL and Technology views have the schematic on the right and a pane on
the left that contains a hierarchical list of the objects in the design. This pane
is called the Hierarchy Browser. The bar at the top of the window contains the
name of the view, the kind of view, hierarchical level, and the number of
sheets in the schematic. See Hierarchy Browser, on page 70 in the Reference
Manual for a description of the Hierarchy Browser.
RTL View
Technology View
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
260 December 2012
Working in the Schematic Views Chapter 9: Analyzing with HDL Analyst and FSM Viewer
2. Select the object, right-click, and select Properties. The properties and
their values are displayed in a table.
If you select an instance, you can view the properties of the associated
pins by selecting the pin from the list. Similarly, if you select a port, you
can view the properties on individual bits.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 261
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Working in the Schematic Views
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
262 December 2012
Working in the Schematic Views Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Slow property
When you are working with filtered views, you can use the New property to
quickly identify objects that have been added to the current schematic with
commands like Expand. You can step through successive filtered views to
determine what was added at each step. This can be useful when you are
debugging your design.
The following figure expands one of the pins from the previous filtered view.
The new instance added to the view has two flags: new and slow.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 263
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Working in the Schematic Views
In the following example, top-level module (top) instantiates the module sub
multiple times using different parameter values. The compiler uniquifies the
module sub as: sub_3s, sub_1s, and sub_4s.
Top.v
module top (input clk, [7:0] din, output [7:0] dout);
sub #(.W(3)) UUT1 (.clk, .din(din[2:0]), .dout(dout[2:0]));
sub #(.W(1)) UUT2 (.clk, .din(din[3]), .dout(dout[3]));
sub #(.W(4)) UUT3 (.clk, .din(din[7:4]), .dout(dout[7:4]));
endmodule
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
264 December 2012
Working in the Schematic Views Chapter 9: Analyzing with HDL Analyst and FSM Viewer
RTL View
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 265
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Working in the Schematic Views
To select... Do this...
Single objects Click on the object in the RTL or Technology schematic, or click
the object name in the Hierarchy Browser.
Multiple objects Use one of these methods:
Draw a rectangle around the objects.
Select an object, press Ctrl, and click other objects you want to
select.
Select multiple objects in the Hierarchy Browser. See
Browsing With the Hierarchy Browser, on page 280.
Use Find to select the objects you want. See Using Find for
Hierarchical and Restricted Searches, on page 282.
Objects by type Use Edit->Find to select the objects (see Browsing With the Find
(instances, Command, on page 282), or use the Hierarchy Browser, which
ports, nets) lists objects by type.
All objects of a To select all objects of a certain type, do either of the following:
certain type Right-click and choose the appropriate command from the
(instances, Select All Schematic/Current Sheet popup menus.
ports, nets)
Select the objects in the Hierarchy Browser.
No objects Click the left mouse button in a blank area of the schematic or
(deselect all click the right mouse button to bring up the pop-up menu and
currently choose Unselect All. Deselected objects are no longer
selected objects) highlighted.
The HDL Analyst view highlights selected objects in red. If the object you
select is on another sheet of the schematic, the schematic tracks to the
appropriate sheet. If you have other windows open, the selected object is
highlighted in the other windows as well (crossprobing), but the other
windows do not track to the correct sheet. Selected nets that span different
hierarchical levels are highlighted on all the levels. See Crossprobing, on
page 293 for more information about crossprobing.
Some commands affect selection by adding to the selected set of objects: the
Expand commands, the Select All commands, and the Select Net Driver and Select
Net Instances commands.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
266 December 2012
Working in the Schematic Views Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 267
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Working in the Schematic Views
1. To move back to the previous view, click the Back icon or draw the
appropriate mouse stroke.
The software displays the last view, including the zoom factor. This does
not work in a newly generated view (for example, after flattening)
because there is no history.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
268 December 2012
Working in the Schematic Views Chapter 9: Analyzing with HDL Analyst and FSM Viewer
2. To move forward again, click the Forward icon or draw the appropriate
mouse stroke.
To... Do this...
Display the Hierarchy Browser Enable Show Hierarchy Browser (General tab).
Control crossprobing from an Enable Enhanced Text Crossprobing. (General
object to a P&R text file tab)
Determine the number of Set the value with Maximum Instances on the
objects displayed on a sheet. Sheet Size tab. Increase the value to display
more objects per sheet.
Determine the number of Set the value with Maximum Filtered Instances
objects displayed on a sheet in on the Sheet Size tab. Increase the number to
a filtered view. display more objects per sheet. You cannot
set this option to a value less than the
Maximum Instances value.
Some of these options do not take effect in the current view, but are
visible in the next schematic view you open.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 269
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Working in the Schematic Views
4. To control the display of labels, first enable the Text->Show Text option,
and then enable the Label Options you want. The following figure
illustrates the label that each option controls.
Show
The software writes theLOpreferences you set to the ini file, and they
remain in effect until you change them.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
270 December 2012
Working in the Schematic Views Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Managing Windows
As you work on a project, you open different windows. For example, you
might have two Technology views, an RTL view, and a source code window
open. The following guidelines help you manage the different windows you
have open. For information about cycling through the display history in a
single schematic, see Moving Between Views in a Schematic Window, on
page 268.
Below the Project view, you see tabs like the following for each open
view. The tab for the current view is on top. The symbols in front of the
view name on the tab help identify the kind of view.
2. To bring an open view to the front, if the window is not visible, click its
tab. If part of the window is visible, click in any part of the window.
3. To bring the next view to the front, click Ctrl-F6 in that window.
4. Order the display of open views with the commands from the Window
menu. You can cascade the views (stack them, slightly offset), or tile
them horizontally or vertically.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 271
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Exploring Design Hierarchy
The hierarchy browser allows you to traverse and select the following:
Instances and submodules
Ports
Internal nets
Clock trees (in an RTL view)
The browser lists the objects by type. A plus sign in a square icon indicates
that there is hierarchy under that object and a minus sign indicates that the
design hierarchy has been expanded. To see lower-level hierarchy, click on
the plus sign for the object. To ascend the hierarchy, click on the minus sign.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
272 December 2012
Exploring Design Hierarchy Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 273
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Exploring Design Hierarchy
1. To move down a level (push into an object) with a mouse stroke, put
your cursor near the top of the object, hold down the right mouse
button, and draw a vertical stroke from top to bottom. You can push
into the following objects; see step 3 for examples of pushing into
different types of objects.
Hierarchical instances. They can be displayed as pale yellow boxes
(opaque instances) or hollow boxes with internal logic displayed
(transparent instances). You cannot push into a hierarchical instance
that is hidden with the Hide Instance command (internal logic is
hidden).
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
274 December 2012
Exploring Design Hierarchy Chapter 9: Analyzing with HDL Analyst and FSM Viewer
When you descend into a ROM, you can push into it one more time to
see the ROM data table. The information is in a view-only text file called
rom.info.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 275
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Exploring Design Hierarchy
Similarly, you can push into a state machine. When you push into an
FSM from the RTL view, you open the FSM viewer where you can graph-
ically view the transitions. For more information, see Using the FSM
Viewer, on page 317. If you push into a state machine from the
Technology view, you see the underlying logic.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
276 December 2012
Exploring Design Hierarchy Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 277
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Exploring Design Hierarchy
The software moves up a level, and displays the next level of hierarchy.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
278 December 2012
Exploring Design Hierarchy Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 279
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Finding Objects
Finding Objects
In the schematic views, you can use the Hierarchy Browser or the Find
command to find objects, as explained in these sections:
Browsing to Find Objects in HDL Analyst Views, on page 280
Using Find for Hierarchical and Restricted Searches, on page 282
Using Wildcards with the Find Command, on page 285
Using Find to Search the Output Netlist, on page 290
For information about the Tcl Find command, which you use to locate objects,
and create collections, see find Command (Batch), on page 1104 in the Refer-
ence Manual.
2. To select a range of objects, select the first object in the range. Then,
scroll to display the last object in the range. Press and hold the Shift key
while clicking the last object in the range.
The software selects and highlights all the objects in the range.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
280 December 2012
Finding Objects Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Push down into the higher-level object, and then select the object
from the Hierarchy Browser.
Expand Instances
and select an
object on a lower
hierarchical level.
Schematic pushes
down to the correct
level to show the
selected object.
4. To select all objects of the same type, select them from the Hierarchy
Browser. For example, you can find all the nets in your design.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 281
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Finding Objects
3. In the Object Query dialog box, click on an object in the box on the right.
Note that Find only adds to the current selection; it does not deselect anything
that is already selected. you can use successive searches to build up exactly
the selection you need, before filtering.
See Viewing Design Hierarchy and Context, on page 302 and Filtering
Schematics, on page 305 for details. With a filtered view, the software
only searches the filtered instances, unless you set the scope of the
search to Entire Design, as described below, in which case Find searches
the entire design.
You can use the filtering technique to restrict your search to just one
LO
schematic sheet. Select all the objects on one sheet and filter the view.
Continue with the procedure.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
282 December 2012
Finding Objects Chapter 9: Analyzing with HDL Analyst and FSM Viewer
2. To further restrict the range of the search, hide instances you do not
need.
You can do this in addition to filtering the view, or instead of filtering the
view. Hidden instances and their hierarchy are excluded from the
search. When you have finished the search, use the Unhide Instances
command to make the hierarchy visible again.
4. Select the tab for the type of object. The Unhighlighted box on the left lists
all objects of that type (instances, symbols, nets, or ports).
For fastest results, search by Instances rather than Nets. When you select
Nets, the software loads the whole design, which could take some time.
5. Click one of these buttons to set the hierarchical range for the search:
Entire Design, Current Level & Below, or Current Level Only, depending on the
hierarchical level of the design to which you want to restrict your search.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 283
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Finding Objects
The range setting is especially important when you use wildcards. See
Effect of Hierarchy and Range on Wildcard Searches, on page 286 for
details. Current Level Only or Current Level & Below are useful for searching
filtered schematics or critical path schematics.
Use Entire Design to hierarchically search the whole design. For large
hierarchical designs, reduce the scope of the search by using the
techniques described in the first step.
The Unhighlighted box shows available objects within the scope you set.
Objects are listed in alphabetical order, not hierarchical order.
6. To search for objects in the mapped database or the output netlist, set
the Name Space option.
7. Do the following to select objects from the list. To use wildcards in the
selection, see the next step.
Click on the objects you want from the list. If length makes it hard to
read a name, click the name in the list to cause the software to
display the entire name in the field at the bottom of the dialog box.
Click Find 200 or Find All. The former finds the first 200 matches, and
then you can click the button again to find the next 200.
Click the right arrow to move the objects into the box on the right, or
double-click individual names.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
284 December 2012
Finding Objects Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Type a pattern in the Highlight Wildcard field. See Using Wildcards with
the Find Command, on page 285 for a detailed discussion of
wildcards.
The Unhighlighted list shows the objects that match the wildcard
criteria. If length makes it hard to read a name, click the name in the
list to cause the software to display the entire name in the field at the
bottom of the form.
Click the right arrow to move the selections to the box on the right, or
double-click individual names. The schematic displays highlighted
objects in red.
You can use wildcards to avoid typing long pathnames. Start with a
general pattern, and then make it more specific. The following example
browses and uses wildcards successively to narrow the search.
Note that there are some differences when you specify the find command
in the RTL view, Technology view, or the fdc file.
9. You can leave the dialog box open to do successive Find operations. Click
OK or Cancel to close the dialog box when you are done.
For detailed information about the Find command and the Object Query
dialog box, see Find Command (HDL Analyst), on page 127 of the Reference
Manual.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 285
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Finding Objects
1 Entire Design
Current Current
2A 2B
Level and Level
Below
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
286 December 2012
Finding Objects Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Entire Design Starts at top level and uses the pattern to search from that
level. It then moves to any child levels below the top level and
searches them. The software repeats the search pattern at
each hierarchical point in the design until it searches the
entire design.
Current Level Starts at the current hierarchical level and searches that level
only. A search started at 2A only covers 2A.
Current Level Starts at the current hierarchical level and searches that level.
and Below It then moves to any child levels below the starting point and
conducts separate searches from each of these starting points.
2. The software applies the wildcard pattern to all applicable objects within
the range. For Current Level and Current Level and Below, the current level
determines the starting point.
Dots match hierarchy separators, unless you use the backslash escape
character in front of the dot (\.). Hierarchical search patterns with a dot
(l*.*) are repeated at each level included in the scope. See Effect of
Hierarchy and Range on Wildcard Searches, on page 286 and Wildcard
Search Examples, on page 287 for details and examples, respectively. If
you use the *.* pattern with Current Level, the software matches non-
hierarchical names at the current level that include a dot.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 287
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Finding Objects
2A 2B
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
288 December 2012
Finding Objects Chapter 9: Analyzing with HDL Analyst and FSM Viewer
If you want to go through the hierarchy, you must add the hierarchy separa-
tors to the search pattern:
find {*.*.abc.*.*.addr_reg[*]}
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 289
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Finding Objects
By default, the following Tcl command does not find objects in the RTL
view, although it does find objects in the Technology view:
1. Select the output netlist file option in the Implementations Results tab of the
Implementation Options dialog box.
2. After you synthesize your design, open your output netlist file and select
LO want to find.
the name of the object you
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
290 December 2012
Finding Objects Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Copy Name
4. In the Technology view, press Ctrl-f or select Edit->Find to open the Object
Query dialog box and do the following:
Paste the object name you copied into the Highlight Search field.
Set the Name Space option to Netlist and click Find All.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 291
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Finding Objects
If you leave the Name Space option set to the default of Tech View, the
tool does not find the name because it is searching the mapped
database instead of the output netlist.
Double click the name to move it into the Highlighted field and close the
dialog box.
compare_output_NE0(C_0)
slow
Alias: compare_output_NE0_cZ
Filtered View
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
292 December 2012
Crossprobing Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Crossprobing
Crossprobing is the process of selecting an object in one view and having the
object or the corresponding logic automatically highlighted in other views.
Highlighting a line of text, for example, highlights the corresponding logic in
the schematic views. Crossprobing helps you visualize where coding changes
or timing constraints might help to reduce area or improve performance.
You can crossprobe between the RTL view, Technology view, the FSM Viewer,
the log file, the source files, and some external text files from place-and-route
tools. However, not all objects or source code crossprobe to other views,
because some source code and RTL view logic is optimized away during the
compilation or mapping processes.
This section describes how to crossprobe from different views. It includes the
following:
Crossprobing within an RTL/Technology View, on page 293
Crossprobing from the RTL/Technology View, on page 294
Crossprobing from the Text Editor Window, on page 296
Crossprobing from the Tcl Script Window, on page 299
Crossprobing from the FSM Viewer, on page 300
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 293
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Crossprobing
In this example, when you select the DECODE module in the Hierarchy
Browser, the DECODE module is automatically selected in the RTL view.
The software automatically highlights the object in all open views. If the
open view is a schematic, the software highlights the object in the
Hierarchy Browser on the left as well as in the schematic. If the
highlighted object is on another sheet of a multi-sheet schematic, the
view does not automatically track to the page. If the crossprobed object
is inside a hidden instance, the hidden instance is highlighted in the
schematic.
If the open view is a source file, the software tracks to the appropriate
code and highlights it. The following figure shows crossprobing between
the RTL, Technology, and Text Editor (source code) views.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
294 December 2012
Crossprobing Chapter 9: Analyzing with HDL Analyst and FSM Viewer
RTL View
Text Editor
Technology View
2. To crossprobe from the RTL or Technology view to the source file when
the source file is not open, double-click on the object in the RTL or
Technology view.
The following table summarizes the crossprobing capability from the RTL or
Technology view.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 295
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Crossprobing
From To Procedure
RTL Source code Double-click an object. If the source code file is not
open, the software opens the Text Editor window to
the appropriate section of code. If the source file is
already open, the software scrolls to the correct
section of the code and highlights it.
RTL Technology The Technology view must be open. Click the object
to highlight and crossprobe.
RTL FSM Viewer The FSM view must be open. The state machine
must be coded with a onehot encoding style. Click
the FSM to highlight and crossprobe.
Technology Source code If the source code file is already, open, the software
scrolls to the correct section of the code and
highlights it.
If the source code file is not open, double-click an
object in the Technology view to open the source
code file.
Technology RTL The RTL view must be open. Click the object to
highlight and crossprobe.
2. To crossprobe from an error, warning, or note in the html log file, click
on the file name to open the corresponding source code in another Text
Editor window; to crossprobe from a text log file, double-click on the text
of the error, warning, or note.
LO
3. To crossprobe from a third-party text file (not source code or a log file),
select Options->HDL Analyst Options->General, and enable Enhanced text
crossprobing.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
296 December 2012
Crossprobing Chapter 9: Analyzing with HDL Analyst and FSM Viewer
4. Select the appropriate portion of text in the Text Editor window. In some
cases, it may be necessary to select an entire block of text to crossprobe.
The software selects the objects in the column, and highlights the path
in the open RTL and Technology views.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 297
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Crossprobing
Text Editor
Technology View
To further filter the objects in the path, right-click and choose Select
From from the popup menu. On the form, check the objects you want,
and click OK. Only the corresponding objects are highlighted.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
298 December 2012
Crossprobing Chapter 9: Analyzing with HDL Analyst and FSM Viewer
3. To isolate and view only the selected objects, do this in the Technology
view: press F12, or right-click and select the Filter Schematic command
from the popup menu.
To crossprobe from the Tcl Script window to the source code, double-click a
line in the Tcl window. To crossprobe a warning or error, first click the
Messages tab and then double-click the warning or error. The software opens
the relevant source code file and highlights the corresponding code.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 299
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Crossprobing
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
300 December 2012
Analyzing With the HDL Analyst Tool Chapter 9: Analyzing with HDL Analyst and FSM Viewer
To analyze information, compare the current view with the information in the
RTL/Technology view, the log file, the FSM view, and the source code, you
can use techniques like crossprobing, flattening, and filtering. See the
following for more information about analysis techniques.
Viewing Design Hierarchy and Context, on page 302
Filtering Schematics, on page 305
Expanding Pin and Net Logic, on page 307
Expanding and Viewing Connections, on page 311
Flattening Schematic Hierarchy, on page 312
Minimizing Memory Usage While Analyzing Designs, on page 317
For additional information about navigating the HDL Analyst views or using
other techniques like crossprobing, see the following:
Working in the Schematic Views, on page 258
Exploring Design Hierarchy, on page 272
Finding Objects, on page 280
Crossprobing, on page 293
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 301
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
302 December 2012
Analyzing With the HDL Analyst Tool Chapter 9: Analyzing with HDL Analyst and FSM Viewer
H indicates a
hidden instance
Before you save a design with hidden instances, select Unhide Instances
from the HDL Analyst menu or the right-click popup menu and make the
hidden internal hierarchy accessible again. Otherwise, the hidden
instances are saved as black boxes, without their internal logic.
Conversely, you can use this feature to reduce the scope of analysis in a
large design by hiding instances you do not need, saving the reduced
design to a new name, and then analyzing it.
3. To view the internal logic of a hierarchical instance, you can push into
the instance, dissolve the selected instance with the Dissolve Instances
command, or flatten the design. You cannot use these methods to view
the internal logic of a hidden instance.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 303
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
Pushing into Generates a view that shows only the internal logic. You do not
an instance see the internal hierarchy in context. To return to the previous
view, click Back. See Exploring Object Hierarchy by
Pushing/Popping, on page 273 for details.
Flattening Opens a new view where the entire design is flattened, except
the entire for hidden hierarchy. Large flattened designs can be
design overwhelming. See Flattening Schematic Hierarchy, on
page 312 for details about flattening designs.
Because this is a new view, you cannot use Back to return to
the previous view. To return to the top-level unflattened
schematic, right-click in the view and select Unflatten Schematic.
Flattening Generates a view where the hierarchy of the selected instances
an instance is flattened, but the rest of the design is unaffected. This
by dissolving provides context. See Flattening Schematic Hierarchy, on
page 312 for details about dissolving instances.
If there is too much internal logic to display in the current view, the
software puts the internal hierarchy on separate schematic sheets. It
displays a hollow box with no internal logic and indicates the schematic
sheets that contain the internal logic.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
304 December 2012
Analyzing With the HDL Analyst Tool Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Filtering Schematics
Filtering is a useful first step in analysis, because it focuses analysis on the
relevant parts of the design. Some commands, like the Expand commands,
automatically generate filtered views; this procedure only discusses manual
filtering, where you use the Filter Schematic command to isolate selected
objects. See Chapter 3 of the Reference Manual for details about these
commands.
1. Select the objects that you want to isolate. For example, you can select
two connected objects.
If you filter a hidden instance, the software does not display its internal
hierarchy when you filter the design. The following example illustrates
this.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 305
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
The software filters the design and displays the selected objects in a
filtered view. The title bar indicates that it is a filtered view. Hidden
instances have an H in the lower left. The view displays other hierar-
chical instances as hollow boxes with nested internal logic (transparent
instances). For descriptions of filtered views and transparent instances,
see Filtered and Unfiltered Schematic Views, on page 314 and Trans-
parent and Opaque Display of Hierarchical Instances, on page 320 in
the Reference Manual. If the transparent instance does not display
internal logic, use one of the alternatives described in Viewing Design
Hierarchy and Context, on page 302, step 4.
Filtered view
3. If the filtered view does not display the pin names of technology
primitives and transparent instances that you want to see, do the
following:
Select Options->HDL Analyst Options->Text and enable Show Pin Name.
LOa pin name, move the cursor over the pin. The
To temporarily display
name is displayed as long as the cursor remains over the pin.
Alternatively, select a pin. The software displays the pin name until
you make another selection. Either of these options can be applied to
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
306 December 2012
Analyzing With the HDL Analyst Tool Chapter 9: Analyzing with HDL Analyst and FSM Viewer
individual pins. Use them to view just the pin names you need and
keep design clutter to a minimum.
To see all the hierarchical pins, select the instance, right-click, and
select Show All Hier Pins.
You can now analyze the problem, and do operations like the following:
Trace paths, build up logic See Expanding Pin and Net Logic, on page 307
and Expanding and Viewing Connections, on
page 311
Filter further Select objects and filter again
Find objects See Finding Objects, on page 280
Flatten, or hide and flatten See Flattening Schematic Hierarchy, on
page 312. You can hide transparent or opaque
instances.
Crossprobe from filtered See Crossprobing from the RTL/Technology
view View, on page 294
4. To return to the previous schematic view, click the Back icon. If you
flattened the hierarchy, right-click and select Unflatten Schematic to return
to the top-level unflattened view.
Use the Expand commands with the Filter Schematic, Hide Instances, and Flatten
commands to isolate just the logic that you want to examine. Filtering
isolates logic, flattening removes hierarchy, and hiding instances prevents
their internal hierarchy from being expanded. See Filtering Schematics, on
page 305 and Flattening Schematic Hierarchy, on page 312 for details.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 307
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
The software expands the logic as specified, working on the current level
and below or working up the hierarchy, crossing hierarchical bound-
aries as needed. Hierarchical levels are shown nested in hollow
bounding boxes. The internal hierarchy of hidden instances is not
displayed.
2. To expand logic from a pin at the current level only, do the following:
Select a pin, and go to the HDL Analyst->Current Level menu or the right-
click popup menu->Current Level.
Select Expand or Expand to Register/Ports. The commands work as
described in the previous step, but they do not cross hierarchical
boundaries.
3. To expand logic from a net, use the commands shown in the following
table.
To expand at the current level and below, select the commands from
the HDL Analyst->Hierarchical menu or the right-click popup menu.
To expand at the current level only, select the commands from the
HDL Analyst->Current Level menu or the right-click popup menu->Current
Level.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
308 December 2012
Analyzing With the HDL Analyst Tool Chapter 9: Analyzing with HDL Analyst and FSM Viewer
To... Do this...
Select the driver of Select a net and select Select Net Driver. The result is a
a net filtered view with the net driver selected (Selecting the Net
Driver Example, on page 311).
Trace the driver, across Select a net and select Go to Net Driver. The software shows
sheets if needed a view that includes the net driver.
Select all instances on Select a net and select Select Net Instances. You see a filtered
a net view of all instances connected to the selected net.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 309
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
310 December 2012
Analyzing With the HDL Analyst Tool Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Use the following path commands with the Filter Schematic and Hide Instances
commands to isolate just the logic that you want to examine. The two
techniques described here differ: Expand Paths expands connections between
selected objects, while Isolate Paths pares down the current view to only
display connections to and from the selected instance.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 311
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
Starting Point The Filtered View Traces Paths (Forward and Back) From All
Pins of the Selected Instance...
Filtered view Traces through all sheets of the filtered view, up to the next
port, register, hierarchical instance, or black box.
Unfiltered view Traces paths on the current schematic sheet only, up to the
next port, register, hierarchical instance, or black box.
Unlike the Expand Paths command, the connections are based on the
schematic used as the starting point; the software does not add any
objects that were not in the starting schematic.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
312 December 2012
Analyzing With the HDL Analyst Tool Chapter 9: Analyzing with HDL Analyst and FSM Viewer
1. To flatten an entire design down to logic cells, use one of the following
commands:
For an RTL view, select HDL Analyst->RTL->Flattened View. This flattens
the design to generic logic cells.
For a Technology view, select Flattened View or Flattened to Gates View
from the HDL Analyst->Technology menu. Use the former command to
flatten the design to the technology primitive level, and the latter
command to flatten it further to the equivalent Boolean logic.
Unless you really require the entire design to be flattened, use Push/Pop
mode and the filtering commands (Filtering Schematics, on page 305) to
view the hierarchy. Alternatively, you can use one of the selective
flattening techniques described in subsequent steps.
The software generates a new view of the current schematic in the same
window, with all transparent instances at the current level and below
flattened. RTL schematics are flattened down to generic logic cells and
Technology views down to technology primitives. To control the number
of hierarchical levels that are flattened, use the Dissolve Instances
command described in step 4.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 313
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
Opaque hierarchical
instance is unaffected.
Flatten Schematic
flattens unhidden
transparent instance.
Hidden transparent
instance is not
flattened.
Because the flattened view is a new view, you cannot use Back to return
to the unflattened view or the views before it. Use Unflatten Schematic to
return to the unflattened top-level view.
Use this technique if you want to flatten most of your design. If you want
to flatten only part of your design, use the approach described in the
next step.
When you hide instances, the software generates a new view where the
hidden instances are not flattened, but marked with an H in the lower
LO design is flattened. If unhidden hierarchical
left corner. The rest of the
instances are not flattened by this procedure, use the Flattened View or
Flattened to Gates View commands described in step 1 instead of the Flatten
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
314 December 2012
Analyzing With the HDL Analyst Tool Chapter 9: Analyzing with HDL Analyst and FSM Viewer
You can select the hidden instances, right-click, and select Unhide
Instances to make their hierarchy accessible again. To return to the
unflattened top-level view, right-click in the schematic and select
Unflatten Schematic.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 315
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
Dissolved logic for prgmcntr shown nested when started from filtered view
Dissolved logic for prgmcntr shown flattened in context when you start from an unfiltered view
Use this technique if you only want to flatten part of your design while
retaining the hierarchical context. If you want to flatten most of the
design, use the technique described in the previous step. Instead of
dissolving instances, you can use a combination of the filtering
commands and Push/Pop mode.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
316 December 2012
Using the FSM Viewer Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 317
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Using the FSM Viewer
1. To start the FSM viewer, open the RTL view and either
Select the FSM instance, click the right mouse button and select View
FSM from the popup menu.
Push down into the FSM instance (Push/Pop icon).
The FSM viewer opens. The viewer consists of a transition bubble
diagram and a table for the encodings and transitions. If you used
Verilog to define the FSMs, the viewer displays binary values for the
state machines if you defined them with the define keyword, and actual
names if you used the parameter keyword.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
318 December 2012
Using the FSM Viewer Chapter 9: Analyzing with HDL Analyst and FSM Viewer
To view... Do...
from and to states, and conditions Click the Transitions tab at the
for each transition bottom of the table.
the correspondence between the Click the RTL Encoding tab.
states and the FSM registers in the
RTL view
the correspondence between the Click the Mapped Encodings tab
states and the registers in the (available after synthesis).
Technology View
only the transition diagram without Select View->FSM table or click the
the table FSM Table icon. You might have to
scroll to the right to see it.
This figure shows you the mapping information for a state machine. The
Transitions tab shows you simple equations for conditions for each state.
The RTL Encodings tab has a State column that shows the state names in
the source code, and a Registers column for the corresponding RTL
encoding. The Mapped Encoding tab shows the state names in the code
mapped to actual values.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 319
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Using the FSM Viewer
The transition diagram now shows only the filtered states you set. The
following figure shows filtered views for output and input transitions for
one state.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
320 December 2012
Using the FSM Viewer Chapter 9: Analyzing with HDL Analyst and FSM Viewer
Similarly, you can check the relationship between two or more states by
selecting the states, filtering them, and checking their properties.
To view the properties for the entire state machine like encoding style,
number of states, and total number of transitions between states,
deselect any selected states, click the right mouse button outside the
diagram area, and select Properties from the popup menu.
5. To view the FSM description in text format, select the state machine in
the RTL view and View FSM Info File from the right mouse popup. This is
an example of the FSM Info File, statemachine.info.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 321
Chapter 9: Analyzing with HDL Analyst and FSM Viewer Using the FSM Viewer
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
322 December 2012
CHAPTER 10
Analyzing Timing
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 323
Chapter 10: Analyzing Timing Analyzing Timing in Schematic Views
This displays the timing numbers for all instances in a Technology view.
It shows the following:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
324 December 2012
Analyzing Timing in Schematic Views Chapter 10: Analyzing Timing
1. On the Device tab of the Implementation Options dialog box, enable Annotated
Properties for Analyst.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 325
Chapter 10: Analyzing Timing Analyzing Timing in Schematic Views
4. Once you have annotated your design, you can filter searches using
these properties with the find command.
Use the find -filter {@propName>=propValue} command for the searches.
See Find Filter Properties, on page 1111 in the Reference Manual for a
list of properties. For information about the find command, see find
Command (Batch), on page 1104 in the Reference Manual.
Precede the property name with the @ symbol.
For example, to find fanouts larger than 60, specify find -filter
{@fanout>=60}.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
326 December 2012
Analyzing Timing in Schematic Views Chapter 10: Analyzing Timing
1. In the Hierarchy Browser, expand Clock Tree, select all the clocks, and
filter the design.
The Hierarchy Browser lists all clocks and the instances that drive them
under Clock Tree. The filtered view shows the selected objects.
For details about the commands for filtering and expanding paths, see
Filtering Schematics, on page 305, Expanding Pin and Net Logic, on
page 307 and Expanding and Viewing Connections, on page 311.
3. Check that your defined clock constraints cover the objects in the
design.
If you do not define your clock constraints accurately, you might not get
the best possible synthesis optimizations.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 327
Chapter 10: Analyzing Timing Analyzing Timing in Schematic Views
2. Display the critical path using one of the following methods. The
Technology view displays a hierarchical view that highlights the
instances and nets in the most critical path of your design.
To generate a hierarchical view of the critical path, click the Show
Critical Path icon (stopwatch icon ( ), select HDL Analyst->Technology-
>Hierarchical Critical Path, or select the command from the popup menu.
This is a filtered view in the same window, with hierarchical logic
shown in transparent instances. History commands apply, so you
can return to the previous view by clicking Back.
To flatten the hierarchical critical path described above, right-click
and select Flatten Schematic. The software generates a new view in the
current window, and flattens only the transparent instances needed
to show the critical path; the rest of the design remains hierarchical.
Click Back to go the top-level design.
To generate a flattened critical path in a new window, select HDL
Analyst->Technology->Flattened Critical Path. This command uses more
memory because it flattens the entire design and generates a new
view for the flattened critical path in a new window. Click Back in this
window to go to the flattened top-level design or to return to the
previous window.
3. Use the timing numbers LOdisplayed above each instance to analyze the
path. If no numbers are displayed, enable HDL Analyst->Show Timing
Information. Interpret the numbers as follows:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
328 December 2012
Analyzing Timing in Schematic Views Chapter 10: Analyzing Timing
4. View instances in the critical path that have less than the worst-case
slack time. For additional information on handling slack times, see
Handling Negative Slack, on page 330.
If necessary change the slack margin and regenerate the critical path.
5. Crossprobe and check the RTL view and source code. Analyze the code
and the schematic to determine how to address the problem. You can
add more constraints or make code changes.
6. Click the Back icon to return to the previous view. If you flattened your
design during analysis, select Unflatten Schematic to return to the top-level
design.
If you have fixed the path, the window displays the next most critical
path when you click the icon.
Repeat this procedure and fix the design for the remaining critical paths.
When you are within 5-10 percent of your desired results, place and
route your design to see if you meet your goal. If so, you are done. If your
vendor provides timing-driven place and route, you might improve your
results further by adding timing constraints to place and route.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 329
Chapter 10: Analyzing Timing Analyzing Timing in Schematic Views
The following procedure shows you how to add constraints to correct negative
slack values. Timing constraints can improve your design by 10 to 20
percent.
If there are fewer start points, pick a start point to add the constraint. If
there are fewer end points, add the constraint to an end point.
4. If your design does not meet timing by 20 percent or more, you may
need to make structural changes. You could do this by doing either of
the following:
Enabling options like retiming (Retiming, on page 198), FSM
exploration (Running the FSM Explorer, on page 226), or resource
sharing (Sharing Resources,
LO on page 215).
Modifying the source code.
5. Rerun synthesis and check your results.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
330 December 2012
Generating Custom Timing Reports with STA Chapter 10: Analyzing Timing
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 331
Chapter 10: Analyzing Timing Generating Custom Timing Reports with STA
4. Analyze results.
View the report (Open Report) in the Text Editor. The following figure is
a sample report showing analysis results based on maximum delay
for the worst paths.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
332 December 2012
Generating Custom Timing Reports with STA Chapter 10: Analyzing Timing
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 333
Chapter 10: Analyzing Timing Using Analysis Design Constraints
The advantage to using analysis design constraints (ADC) is that you do not
have to resynthesize the whole design. This reduces debugging time because
you can get a quick estimate, or try out different values. The Standalone
Timing Analyst (STA) puts these constraints in an Analysis Design
Constraints file (adc). The process for using this file is summarized in the
following flow diagram:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
334 December 2012
Using Analysis Design Constraints Chapter 10: Analyzing Timing
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 335
Chapter 10: Analyzing Timing Using Analysis Design Constraints
1. Select File->New.
Type a name and location for the file. The tool automatically assigns
the adc extension to the filename.
Enable Add to Project, and click OK. This opens the text editor where
you can specify the new
LO constraints.
3. Type in the constraints you want and save the file. Remember the
following when you enter the constraints:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
336 December 2012
Using Analysis Design Constraints Chapter 10: Analyzing Timing
Keep in mind that the original constraint file has already been applied
to the design. Any timing exception constraints in this file must not
conflict with constraints that are already in effect. For example, if
there is a conflict when multiple timing exceptions (false path, path
delay, and multicycle timing constraints) are applied to the same
path, the tool uses this order to resolve conflicts: false path,
multicycle path, max delay. See Conflict Resolution for Timing
Exceptions, on page 409 for details about how the tool prioritizes
timing exceptions.
The object names must be mapped object names, so use names from
the Technology view, not names from the RTL view. Unlike the
constraint file (RTL view), the adc constraints apply to the mapped
database because the database is not remapped with this flow. For
more information, see Using Object Names Correctly in the adc File,
on page 340.
If you want to modify an existing constraint for a timing exception,
you must first reset the original fdc constraint, and then apply the
new constraint. In the following example the multicycle path
constraint was changed to 3:
When you are done, save and close the file. This adds the file to your
project.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 337
Chapter 10: Analyzing Timing Using Analysis Design Constraints
You can create multiple adc files for different purposes. For example,
you might want to keep timing exception constraints, I/0 constraints,
and clock constraints in separate files. If you have an existing adc file,
use the Add File command to add this file to your project. Select
Analysis Design Constraint Files (*.adc) as the file type.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
338 December 2012
Using Analysis Design Constraints Chapter 10: Analyzing Timing
If you have multiple adc files, enable the ones you want.
If you have a previous run and want to save that report, type a new
name for the output ta file. If you do not specify a name, the tool
overwrites the previous report.
Fill in other parameters as appropriate, and click Generate.
The tool runs static timing analysis in the same implementation direc-
tory as the original implementation. The tool applies the adc constraints
on top of the fdc constraints. Therefore, adc constraints affect timing
results only if there are no conflicts with constraints.
The tool generates a timing report called *_adc.ta and an *_adc.srm file by
default. It does not change any synthesis outputs, like the output netlist
or timing constraints for place and route (edf).
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 339
Chapter 10: Analyzing Timing Using Analysis Design Constraints
The standalone timing analyst does not map objects. It just reads the gate-
level object names from the post-mapping database; this is reflected in the
Technology view. Therefore, you must define objects either explicitly or with
collections from the Technology view when you enter constraints into the adc
file. Do not use RTL names when you create adc constraints (see Creating an
ADC File, on page 336 for details of that process).
Example
Assume that register en_reg is replicated during mapping to reduce fanout.
Further, registers en_reg and en_reg_rep2 connect to register dataout[31:0]. In
this case, if you define the following false path constraint in the adc file, the
standalone timing analyzer does not automatically treat paths from the repli-
cated register en_reg_rep2 as false paths.
Unlike constraints in the fdc file, you must specify this replicated register
explicitly or as a collection. Only then are all paths properly treated as false
paths. So in this example, you must define the following constraints in the
adc file:
define_scope_collection
LO en_regs {find -seq {i:en_reg*}
-filter (@name == en_reg || @name == en_reg_rep2)}
set_false_path -from {{$en_regs}} -to {{i:dataout[31:0]}}
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
340 December 2012
Using Auto Constraints Chapter 10: Analyzing Timing
Do not define any clocks. If you define clocks using the SCOPE
window or a constraint file, or set the frequency in the Project view,
the software uses the user-defined create_clock constraints instead of
auto constraints.
Make sure any multi-cycle or false path constraints are specified on
registers.
2. Enable the Auto Constrain button on the left side of the Project view.
Alternatively, select Project->Implementation Options->Constraints, and enable
the Auto Constrain option there.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 341
Chapter 10: Analyzing Timing Using Auto Constraints
If you do not enable this option, the software only auto constrains flop-
to-flop paths. Even when the software auto constrains the I/O paths, it
does not generate these constraints for forward-annotation.
The software puts each clock in a separate clock group and adjusts the
timing of each clock individually. At different points during synthesis it
adjusts the clock period of each clock to be a target percentage of the
current clock period, usually 15% - 25%.
After the clocks, the timing engine constrains I/O paths by setting the
default combinational path delay for each I/O path to be one clock
period.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
342 December 2012
Using Auto Constraints Chapter 10: Analyzing Timing
6. You can now add this generated constraint file to the project and rerun
synthesis with these constraints.
4. For each clock, including the system clock, the software maintains a
negative slack of between 15 and 25 percent of the requested frequency.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 343
Chapter 10: Analyzing Timing Using Auto Constraints
The software also generates a constraint file in the run directory called
AutoConstraint_designName.fdc, which contains the auto constraints generated.
The following is an example of an auto constraint file:
Repeatability of Results
If you use the requested frequency resulting from the Auto constrain option as
the requested frequency for a regular synthesis run, you might not get the
same results as you did with auto constraints. This is because the software
invokes the mapper optimizations in stages when it auto constrains. The
results from a previous stage are used to drive the next stage. As the interim
LO is no guarantee that the final results will stay
optimization results vary, there
the same.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
344 December 2012
C H A P T E R 11
This chapter covers techniques for optimizing your design for various
vendors. The information in this chapter is intended to be used together with
the information in Chapter 6, Inferring High-Level Objects.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 345
Chapter 11: Optimizing for Microsemi Designs Optimizing Microsemi Designs
Use the macro file that corresponds to your target architecture. If you
are targeting the 1200XL architecture, use the act2.v or act2.vhd macro
library.
2. Add the Microsemi macro library at the top of the source file list for your
synthesis project. Make sure that the library file is first in the list.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
346 December 2012
Optimizing Microsemi Designs Chapter 11: Optimizing for Microsemi Designs
3. For VHDL, also add the appropriate library and use clauses to the top of
the files that instantiate the macros:
library family;
use family.components.all ;
Specify the appropriate technology in family.
You specify radhard values in modules and architecture in both the Attri-
butes panel in SCOPE and in the source code. However, for registers, it must
be specified in the source code only.
1. Smartgen macros now replace the ACTgen macros. ACTgen macros were available in the
previous Designer 6.x place-and-route tool.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 347
Chapter 11: Optimizing for Microsemi Designs Optimizing Microsemi Designs
1. Add to your project the Microsemi macro files appropriate to the radhard
values you plan to set in the design. The macro files are in
installDirectory/lib/microsemi:
For ProASIC3E devices only, you do not need to add the Microsemi
macro file to your project.
VHDL Verilog
library synplify; module module_b (a, b, sub,
use synplify.attributes.all; clk, rst) /*synthesis
attribute syn_radhardlevel of syn_radhardlevel="tmr"*/;
behav: architecture is "tmr";
Make sure that the corresponding Microsemi macro file (see step 1) is
the first file listed in the project, if required.
VHDL Verilog
library synplify; reg [15:0] a1_int, b1_int
use synplify.attributes.all; /*synthesis syn_radhardlevel
LO
attribute syn_radhardlevel of = "tmr"*/;
bl_int: signal is "tmr"
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
348 December 2012
CHAPTER 12
This chapter covers techniques for optimizing your design for various
vendors. The information in this chapter is intended to be used together with
the information in Chapter 6, Inferring High-Level Objects.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 349
Chapter 12: Working with Synthesis Output Passing Information to the P&R Tools
1. Start with a design using one of the following vendors and technologies:
Microsemi families.
2. Add the appropriate attribute to the port. For a bus, list all the bus pins,
separated by commas. To specify Microsemi bus port locations, see
Specifying Locations for Microsemi Bus Ports, on page 351.
To add the attribute from the SCOPE interface, click the Attributes tab
and specify the appropriate attribute and value.
To add the attribute in the source files, use the appropriate attribute
and syntax. See the Reference Manual for syntax details.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
350 December 2012
Passing Information to the P&R Tools Chapter 12: Working with Synthesis Output
2. Specify the syn_noarrayports attribute globally to bit blast all bus ports in
the design.
3. Use the alspin attribute to specify pin locations for individual bus bits.
This example shows locations specified for individual bits of bus
ADDRESS0.
For... Use...
Relative placement of Microsemi alsloc Attribute
macros and IP blocks define_attribute {u1} alsloc {R15C6}
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 351
Chapter 12: Working with Synthesis Output Generating Vendor-Specific Output
2. Click the Implementation Results tab, and check the output files you need.
The following table summarizes the outputs to set for the different
vendors, and shows the P&R tools for which the output is intended.
See Specifying Result Options, on page 137 for details about setting the
option. For more information about constraint file output formats and
how constraints get forward-annotated, see Generating Constraint Files
for Forward Annotation, on page 49.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
352 December 2012
Generating Vendor-Specific Output Chapter 12: Working with Synthesis Output
For... Use...
Netlist formatting syn_netlist_hierarchy Attribute (Microsemi)
define_global_attribute syn_netlist_hierarchy {0}
Bus specification syn_noarrayports Attribute (Microsemi)
define_global_attribute syn_noarrayports {1}
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 353
Chapter 12: Working with Synthesis Output Generating Vendor-Specific Output
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
354 December 2012
CHAPTER 13
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 355
Chapter 13: Running Post-Synthesis Operations Running Place-and-Route after Synthesis
Note: To run place and route successfully, first set the environment
variable PATH for the place-and-route tool.
You can run the place-and-route tool for your target technology automatically
after synthesis.
1. Check the Release Notes and make sure that you are using the correct
version of the P&R tool.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
356 December 2012
Working with the Identify Tool Set Chapter 13: Running Post-Synthesis Operations
The combination of these tools allows you to probe your HDL design in the
target environment. The combined system allows you to debug your design
faster, easier, and more efficiently.
The Synplify Pro tool has integrated the Identify instrumentor into the
synthesis user interface. This section describes how to take advantage of this
integration and use the Identify instrumentor:
Launching from the Synplify Pro Tool, on page 357
Handling Problems with Launching Identify, on page 359
Using the Identify Tool, on page 360
Using Compile Points with the Identify Tool, on page 362
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 357
Chapter 13: Running Post-Synthesis Operations Working with the Identify Tool Set
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
358 December 2012
Working with the Identify Tool Set Chapter 13: Running Post-Synthesis Operations
The Identify interface opens. You can now use the Identify tool as
described in Using the Identify Tool, on page 360 For complete details,
consult the Identify documentation.
If you run into problems while launching the Identify instrumentor, refer to
Handling Problems with Launching Identify, on page 359.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 359
Chapter 13: Running Post-Synthesis Operations Working with the Identify Tool Set
check the Use Current Identify Installation entry. This entry is set by the
SYN_IDENTIFY_EXE environment variable to point to the Identify
installation. If this path is incorrect, change the environment variable
setting and restart the synthesis tool. button and specify the correct
location in the Locate Identify Installation field. You can use the Browse
button to open the Select Identify Installation Directory dialog box and
navigate to your current Identify installation directory.
click the Locate Identify Installation button and specify the correct location in
the corresponding field. Use the browse button to open the Select Identify
Installation Directory dialog box and navigate to your current Identify instal-
lation directory.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
360 December 2012
Working with the Identify Tool Set Chapter 13: Running Post-Synthesis Operations
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 361
Chapter 13: Running Post-Synthesis Operations Working with the Identify Tool Set
In the synthesis interface, open the project file for the instrumented
design, which is in the instr_sources subdirectory listed in the
Implementations Results view for your original synthesis project.
Synthesize the design.
Open the RTL view to see the inserted debugging logic.
4. Place and route the instrumented design after synthesis.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
362 December 2012
Working with the Identify Tool Set Chapter 13: Running Post-Synthesis Operations
When you use Identify instrumentation, the tool creates extra IICE logic at
the top level of the design and the corresponding interface to the signals that
need to be debugged. If you define compile points, the tool need only rerun
the compile points that have changed because of the insertion of this logic.
On subsequent runs, it can incrementally re-instrument only those compile
points where there are instrumentation changes or design modifications.The
following procedure describes the steps to follow to implement the flow and
take advantage of incremental synthesis and instrumentation:
5. Rerun instrumentation.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 363
Chapter 13: Running Post-Synthesis Operations Simulating with the VCS Tool
If you did not set up the $VCS_HOME environment variable, you are
prompted to define it. The Run VCS Simulator dialog box opens. For
descriptions of the options in this dialog box, see Configure and Launch
VCS Simulator Command, on page 214 of the Reference Manual.
2. Choose the category Simulation Type in the dialog box to configure the
simulation options.
Specify the kind of simulation you want to run.
RTL simulation Enable Pre-Synthesis
Post-synthesis netlist simulation Enable Post-Synthesis
Post-P&R netlist simulation Enable Post P&R
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
364 December 2012
Simulating with the VCS Tool Chapter 13: Running Post-Synthesis Operations
Choose the category VCS Options in the dialog box to set options such
as the following VCS commands.
The options you set are written out as VCS commands in the script. If
you leave the default settings the VCS tool uses the FPGA version of VCS
and opens with the debugger (DBE) GUI and the waveform viewer. See
the VCS documentation for details of command options.
3. If your project has Verilog files with `include statements, you must use
the +incdir+ <file name> argument when you specify the vlogan
command. You enter the +incdir+ in the Verilog Compile field in the VCS
Options dialog box, as shown below:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 365
Chapter 13: Running Post-Synthesis Operations Simulating with the VCS Tool
`include "component.v"
...
endmodule
The syntax for the VCS commands must reflect the relative location of
the Verilog files:
If the Verilog files are in the same directory as the top.v file, specify:
- vlogan -work work Top.v +incdir+ ./
If the Verilog files are in the a directory above the top.v file, specify:
- vlogan -work work Top.v +incdir+ ../include1 +incdir+ ../
include2
If the Verilog files are in directories below and above the top.v file, specify:
LO
- vlogan -work work Top.v +incdir+ ./include_dir1
+incdir../include_dir2
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
366 December 2012
Simulating with the VCS Tool Chapter 13: Running Post-Synthesis Operations
4. Specify the libraries and test bench files, if you are using them.
To specify a library, click the green Add button, and specify the library
in the dialog box that opens. Use the full path to the libraries. For
pre-synthesis simulation, specifying libraries is optional.
Add
Edit
Delete
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 367
Chapter 13: Running Post-Synthesis Operations Simulating with the VCS Tool
If you do not already have it open, open the Run VCS Simulator dialog
box by clicking the icon.
To use an existing script, click the Load From button on the lower right
and select the script in the dialog box that opens. Then click Run in
the Run VCS Simulator dialog box.
If you do not have an existing script, specify the VCS options, as
described in the previous five steps. Click Run.
The tool invokes VCS from the synthesis interface, using the commands
in the script.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
368 December 2012
CHAPTER 14
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 369
Chapter 14: Working with IP Input Generating IP with SYNCore
Note: The SYNCore FIFO model uses Verilog 2001. When adding a FIFO
model to a Verilog-95 design, be sure to enable the Verilog 2001 check
box on the Verilog tab of the Implementation Options dialog box or include
a set_option -vlog_std v2001 statement in your project file to prevent a
syntax error.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
370 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
In the window that opens, select sfifo_model and click Ok. This opens
the first screen of the wizard.
2. Specify the parameters you need in the five pages of the wizard. For
details, refer to Specifying SYNCore FIFO Parameters, on page 374.
The FIFO symbol on the left reflects the parameters you set.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 371
Chapter 14: Working with IP Input Generating IP with SYNCore
3. After you have specified all the parameters you need, click the Generate
button (lower left).
SYNCore also generates a testbench for the FIFO that you can use for
simulation. The testbench covers a limited set of vectors for testing.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
372 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
module top (
input Clk,
input [15:0] DataIn,
input WrEn,
input RdEn,
output Full,
output Empty,
output [15:0] DataOut
);
fifo_a32 <instanceName>(
.Clock(Clock)
,.Din(Din)
,.Write_enable(Write_enable)
,.Read_enable(Read_enable) template
,.Dout(Dout)
,.Full(Full)
,.Empty(Empty)
)
endmodule
Edit the template port connections so that they agree with the port
definitions in the top-level module as shown in the example below.
You can also assign a unique name to each instantiation.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 373
Chapter 14: Working with IP Input Generating IP with SYNCore
module top (
input Clk,
input [15:0] DataIn,
input WrEn,
input RdEn,
output Full,
output Empty,
output [15:0] DataOut
);
fifo_a32 busfifo(
.Clock(Clk)
,.Din(DataIn)
,.Write_enable(WrEn)
,.Read_enable(RdEn)
,.Dout(DataOut)
,.Full(Full)
,.Empty(Empty)
)
endmodule
Note that currently the FIFO models will not be implemented with the
dedicated FIFO blocks available in certain technologies.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
374 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
In Filename, specify a name for the Verilog output file with the FIFO
specifications. Do not use spaces.
Click Next. The wizard opens another page where you can set
parameters.
4. To set an almost full status flag, do the following on page 2 of the FIFO
wizard:
Enable Almost Full.
Set associated handshaking flags for the signal as desired, with the
Overflow Flag and Write Acknowledge options.
Click Next when you are done.
5. To set an almost empty status flag, do the following on page 3:
Enable Almost Empty.
Set associated handshaking flags for the signal as desired, with the
Underflow Flag and Read Acknowledge options.
Click Next when you are done.
6. To set a programmable full flag, do the following:
Make sure you have enabled Full on page 2 of the wizard and set any
handshaking flags you require.
Go to page 4 and enable Programmable Full.
Select one of the four mutually exclusive configurations for
Programmable Full on page 4. See Programmable Full, on page 794
in the Reference Manual for details.
Click Next when you are done.
7. To set a programmable empty flag, do the following:
Make sure you have enabled Empty on page 3 of the wizard and set
any handshaking flags you require.
Go to page 5 and enable Programmable Empty.
Select one of the four mutually exclusive configurations for
Programmable Empty on page 5. See Programmable Empty, on
page 797 in the Reference Manual for details.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 375
Chapter 14: Working with IP Input Generating IP with SYNCore
You can now generate the FIFO and add it to the design, as described in
Specifying FIFOs with SYNCore, on page 370.
Note: The SYNCore RAM model uses Verilog 2001. When adding a RAM
model to a Verilog-95 design, be sure to enable the Verilog 2001 check
box on the Verilog tab of the Implementation Options dialog box or include
a set_option -vlog_std v2001 statement in your project file to prevent a
syntax error.
In the window that opens, select ram_model and click Ok. This opens
the first screen of the wizard.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
376 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
The RAM symbol on the left reflects the parameters you set.
The default settings for the tool implement a block RAM with synchro-
nous resets, and where all edges (clock, enable, and reset) are considered
positive.
3. After you have specified all the parameters you need, click the Generate
button in the lower left corner.
SYNCore also generates a testbench for the RAM. The testbench covers a
limited set of vectors.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 377
Chapter 14: Working with IP Input Generating IP with SYNCore
module top (
input ClkA,
input [7:0] AddrA,
input [15:0] DataInA,
input WrEnA,
);
myram2 <InstanceName> (
.PortAClk(PortAClk)
, .PortAAddr(PortAAddr)
, .PortADataIn(PortADataIn) template
, .PortAWriteEnable(PortAWriteEnable)
, .PortADataOut(PortADataOut)
LO
);
endmodule
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
378 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
Edit the template port connections so that they agree with the port
definitions in the top-level module as shown in the example below.
You can also assign a unique name to each instantiation.
module top (
input ClkA,
input [7:0] AddrA,
input [15:0] DataInA,
input WrEnA,
);
myram2 decoderram(
.PortAClk(ClkA)
, .PortAAddr(AddrA)
, .PortADataIn(DataInA)
, .PortAWriteEnable(WrEnA)
, .PortADataOut(DataOutA)
);
endmodule
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 379
Chapter 14: Working with IP Input Generating IP with SYNCore
In Filename, specify a name for the Verilog file that will be generated
with the RAM specifications. Do not use spaces.
Enter data and address widths.
Enable Single Port, to specify that you want to generate a single-port
RAM. This automatically enables Single Clock.
Click Next. The wizard opens another page where you can set
parameters for Port A.
The RAM symbol dynamically updates to reflect the parameters you set.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
380 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
Click Next. The wizard opens another page where you can set
parameters for Port A.
3. Do the following on page 2 of the RAM wizard to specify settings for Port
A:
Set parameters according to the kind of memory you want to
generate:
4. Specify the settings for Port B on page 3 of the wizard according to the
kind of memory you want to generate:
The RAM symbol on the left reflects the parameters you set. All output
files are written to the directory you specified on the first page of the
wizard.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
382 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 383
Chapter 14: Working with IP Input Generating IP with SYNCore
2. Specify the parameters you need in the wizard. For details about the
parameters, see Specifying Byte-Enable RAM Parameters, on page 387.
The BYTE ENABLE RAM symbol on the left reflects any parameters you
set.
3. After you have specified all the parameters you need, click the Generate
button in the lower left corner. The tool displays a confirmation message
(TCL execution successful!) and writes the required files to the directory you
specified on page 1 of the wizard. The HDL code is in SystemVerilog.
SYNCore also generates a test bench for the byte-enable RAM compo-
nent. The test bench covers a limited set of vectors. You can now close
the SYNCore byte-enable RAM compiler.
4. Edit the generated files for the byte-enable RAM component if necessary.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
384 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
Use the Add File command to add the Verilog design file that was
generated (the filename entered on page 1 of the wizard) and the
syncore_*.v file to your project. These files are in the directory for
output files that you specified on page 1 of the wizard.
Use a text editor to open the instantiation_file.vin template file. This file is
located in the same output files directory. Copy the lines that define
the byte-enable RAM and paste them into your top-level module.
Edit the template port connections so that they agree with the port
definitions in the top-level module; also change the instantiation
name to agree with the component name entered on page 1. The
following figure shows a template file inserted into a top-level module
with the updated component name and port connections in red.
module top
(input ClockA,
input [3:0] AddA
input [31:0] DataIn
input WrEnA,
input Reset
output [31:0] DataOut
)
INST_TAG
SP_RAM #
(.ADD_WIDTH(4),
.WE_WIDTH(2),
.RADDR_LTNCY_A(1), // 0 - No Latency , 1 - 1 Cycle Latency
.RDATA_LTNCY_A(1), // 0 - No Latency , 1 - 1 Cycle Latency
.RST_TYPE_A(1), // 0 - No Reset , 1 synchronous
.RST_RDATA_A({32{1b1}}),
.DATA_WIDTH(32)
)
4x32spram
(// Output Ports
.RdDataA(DataIn),
// Input Ports
.WrDataA(DataOut),
.WenA(WeEnA),
.AddrA(AddA),
.ResetA(Reset),
.ClkA(ClockA)
);
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 385
Chapter 14: Working with IP Input Generating IP with SYNCore
Port List
Port A interface signals are applicable for both single-port and dual-port
configurations; Port B signals are applicable for dual-port configuration only.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
386 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
The following procedure lists the parameters you need to specify. For descrip-
tions of each parameter, refer to Parameter List, on page 814 in the reference
manual.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 387
Chapter 14: Working with IP Input Generating IP with SYNCore
5. Generate the byte-enable RAM by clicking Generate. Add the file to your
project and edit the template file as described in Specifying Byte-Enable
RAMs with SYNCore, on page 383. For read/write timing diagrams, see
Read/Write Timing Sequences, on page 811 of the reference manual.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
388 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
Note: The SYNCore ROM model uses Verilog 2001. When adding a ROM
model to a Verilog-95 design, be sure to enable the Verilog 2001 check
box on the Verilog tab of the Implementation Options dialog box or include
a set_option -vlog_std v2001 statement in your project file to prevent a
syntax error.
In the window that opens, select rom_model and click Ok to open page
1 of the wizard.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 389
Chapter 14: Working with IP Input Generating IP with SYNCore
2. Specify the parameters you need in the wizard. For details about the
parameters, see Specifying ROM Parameters, on page 393. The ROM
symbol on the left reflects any parameters you set.
3. After you have specified all the parameters you need, click the Generate
button in the lower left corner. The tool displays a confirmation message
(TCL execution successful!) and writes the required files to the directory you
specified on page 1 of the wizard. The HDL code is in Verilog.
SYNCore also generates a testbench for the ROM. The testbench covers
a limited set of vectors.
4. Edit the ROM files if necessary. If you want to use the synchronous
ROMs available in the target technology, make sure to register either the
read address or the outputs.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
390 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
the directory for output files that you specified on page 1 of the
wizard.
Use a text editor to open the instantiation_file.vin template file. This file
is located in the same output files directory. Copy the lines that
define the ROM, and paste them into your top-level module. The
following figure shows a template file (in red text) inserted into a top-
level module.
module test_rom_style(z,a,clk,en,rst);
input clk,en,rst;
output reg [3:0] z;
input [6:0] a;
my1stROM <InstanceName> (
// Output Ports
.DataA(DataA),
Edit the template port connections so that they agree with the port
definitions in the top-level module as shown in the example below.
You can also assign a unique name to each instantiation.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 391
Chapter 14: Working with IP Input Generating IP with SYNCore
module test_rom_style(z,a,clk,en,rst);
input clk,en,rst;
output reg [3:0] z;
input [6:0] a;
my1stROM decode_rom(
// Output Ports
.DataA(z),
// Input Ports
.ClkA(clk),
.EnA(en),
.ResetA(rst),
.AddrA(a)
);
Port List
PortA interface signals are applicable for both single-port and dual-port
configurations; PortB signals are applicable for dual-port configuration only.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
392 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
The ROM symbol dynamically updates to reflect any parameters you set.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 393
Chapter 14: Working with IP Input Generating IP with SYNCore
5. On page 4, specify the location of the ROM initialization file and the data
format (Hexadecimal or Binary). ROM initialization is supported using
memory-coefficient files. The data format is either binary or hexadecimal
with each data entry on a new line in the memory-coefficient file
(specified by parameter INIT_FILE). Supported file types are txt, mem, dat,
and init (recommended).
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
394 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 395
Chapter 14: Working with IP Input Generating IP with SYNCore
2. Specify the parameters you need in the wizard. For details about the
parameters, see Specifying Adder/Subtractor Parameters, on page 399.
The ADDnSUB symbol on the left reflects any parameters you set.
3. After you have specified all the parameters you need, click the Generate
button in the lower left corner.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
396 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
template
Edit the template port connections so that they agree with the port
definitions in the top-level module as shown in the example below.
You can also assign a unique name to each instantiation.
module top (
output [15 : 0] Out,
input Clk,
input [15 : 0] A,
input CEA,
input RSTA,
input [15 : 0] B,
input CEB,
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 397
Chapter 14: Working with IP Input Generating IP with SYNCore
input RSTB,
input CEOut,
input RSTOut,
input ADDnSUB,
input CarryIn );
My_ADDnSUB ADDnSUB_inst (
// Output Ports
.PortOut(Out),
// Input Ports
.PortClk(Clk),
.PortA(A),
.PortCEA(CEA),
.PortRSTA(RSTA),
.PortB(B),
.PortCEB(CEB),
.PortRSTB(RSTB),
.PortCEOut(CEOut),
.PortRSTOut(RSTOut),
.PortADDnSUB(ADDnSUB),
.PortCarryIn(CarryIn) );
endmodule
Port List
The following table lists the port assignments for all possible configurations;
the third column specifies the conditions under which the port is available.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
398 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 399
Chapter 14: Working with IP Input Generating IP with SYNCore
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
400 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
Note: The SYNCore counter model uses Verilog 2001. When adding a
counter model to a Verilog-95 design, be sure to enable the Verilog
2001 check box on the Verilog tab of the Implementation Options dialog box
or include a set_option -vlog_std v2001 statement in your project file to
prevent a syntax error.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 401
Chapter 14: Working with IP Input Generating IP with SYNCore
2. Specify the parameters you need in the wizard. For details about the
parameters, see Specifying Counter Parameters, on page 405. The
COUNTER symbol on the left reflects any parameters you set.
3. After you have specified all the parameters you need, click the Generate
button in the lower left corner.
The SYNCore wizard also generates a testbench for your counter. The
testbench covers a limited set of vectors. You can now close the wizard.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
402 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
Use a text editor to open the instantiation_file.v template file. This file is
located in the same output files directory. Copy the lines that define
the counter and paste them into your top-level module. The following
figure shows a template file (in red text) inserted into a top-level
module.
template
Edit the template port connections so that they agree with the port
definitions in the top-level module as shown in the example below.
You can also assign a unique name to each instantiation.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 403
Chapter 14: Working with IP Input Generating IP with SYNCore
module counter #(
parameter COUNT_WIDTH = 5,
parameter STEP = 2,
parameter RESET_TYPE = 0,
parameter LOAD = 2,
parameter MODE = "Dynamic" )
(
// Output Ports
output wire [WIDTH-1:0] Count,
// Input Ports
input wire Clock,
input wire Reset,
input wire Up_Down,
input wire Load,
input wire [WIDTH-1:0] LoadValue,
input wire Enable );
SynCoreCounter #(
.COUNT_WIDTH(COUNT_WIDTH),
.STEP(STEP),
.RESET_TYPE(RESET_TYPE),
.LOAD(LOAD),
.MODE(MODE) )
SynCoreCounter_ins1 (
.PortCount(PortCount),
.PortClk(Clock),
.PortRST(Reset),
.PortUp_nDown(Up_Down),
.PortLoad(Load),
.PortLoadValue(LoadValue),
.PortCE(Enable) );
endmodule
Port List
The following table lists the port assignments for all possible configurations;
the third column specifies the conditions under which the port is available.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
404 December 2012
Generating IP with SYNCore Chapter 14: Working with IP Input
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 405
Chapter 14: Working with IP Input Generating IP with SYNCore
n the Component Name field, specify a name for your counter. Do not
use spaces.
In the Directory field, specify a directory where you want the output
files to be written. Do not use spaces.
n the Filename field, specify a name for the Verilog file that will be
generated with the counter definitions. Do not use spaces.
Enter the width and depth of the counter in the Configure the Counter
Parameters section.
Select the appropriate configuration in the Configure the Mode of Counter
section.
3. Click Next. The wizard opens page 2 where you set parameters for
PortLoad and PortLoadValue.
Select Enable Load option and the required load option in Configure Load
Value section.
Select the required reset type in the Configure Reset type section.
The COUNTER symbol dynamically updates to reflect the parameters you
set.
4. Generate the counter core by clicking Generate button. All output files
are written to the directory you specified on page1 of the wizard.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
406 December 2012
Using Hyper Source Chapter 14: Working with IP Input
Hyper source reduces the number of modified RTL modules to two: one
for the RAM and one for the top level.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 407
Chapter 14: Working with IP Input Using Hyper Source
Insert other hyper sourcing inside the IP to probe, monitor, and verify
correct operation of known signals within the IP.
The following procedure describes a method for using hyper source, using the
example HDL shown in Hyper Source Example, on page 409.
1. Define how to connect to the signal source. The following apply to this
example:
Signal syn_hyper_source (in1) module defines the source, with a width of
1.
The tag name "tag_name" is the global name for the hyper source.
2. Define how to access the hyper source which drives the local signal or
port. The following apply to this example:
Signal syn_hyper_connect (out1) module defines the connection. The
signal width of 1 matches the source.
Tag name can be the global name or the instance path to the hyper
source.
4. In this hierarchical design, note the following about the hyper connect:
Applies to the top-level module top, but can be any level of hierarchy.
LO
Signal syn_hyper_connect connect_block (probe) module is defined for the
connection with a width of 8.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
408 December 2012
Using Hyper Source Chapter 14: Working with IP Input
Tag name of "probe_sig" must match the name used in the hyper
source block to thread the signal properly.
5. After you run synthesis, the following message appears in the log file:
syn_hyper_source my_source(din);
defparam my_source.label = "probe_sig"; /* to thread the signal this
tag_name must match to name used in the hyper connect block */
defparam my_source.w = 8;
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 409
Chapter 14: Working with IP Input Using Hyper Source
if (we)
dout <= din;
assign din = din1 & din2;
endmodule
syn_hyper_connect connect_block(probe);
defparam connect_block.label = "probe_sig"; /* to thread the signal this
tag_name must match to name used in the hyper connect block */
defparam connect_block.w = 8;
endmodule
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
410 December 2012
Using Hyper Source Chapter 14: Working with IP Input
The following figures show how the hyper source signal automatically gets
connected through the hierarchy of the IP in the HDL Analyst views.
RTL View
Technology View
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 411
Chapter 14: Working with IP Input Using Hyper Source
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
412 December 2012
CHAPTER 15
The following sections describe compile points and how to use them in logic
synthesis iterative flows:
Compile Point Basics, on page 414
Compile Point Synthesis Basics, on page 423
Synthesizing Compile Points, on page 433
Using Compile Points with Other Features, on page 445
Resynthesizing Incrementally, on page 446
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 413
Chapter 15: Working with Compile Points Compile Point Basics
See the following topics for some details about compile points:
Advantages of Compile Point Design, next
Nested Compile Points, on page 417
Compile Point Types, on page 419
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
414 December 2012
Compile Point Basics Chapter 15: Working with Compile Points
You can also synthesize incrementally, because the tool does not resyn-
thesize compile points that are unchanged when you resynthesize the
design. This saves runtime and also preserves parts of the design that
are done while the rest of the design is completed.
See Compile Point Synthesis, on page 429 for a description of the synthesis
process with compile points.
Runtime Savings
Compile points are the required foundation for multiprocessing and incre-
mental synthesis, both of which translate directly to runtime savings:
Multiprocessing runs synthesis as multiple parallel processes, using the
compile points as the partitions that are synthesized in parallel on
different processors. See Combining Compile Points with Multipro-
cessing, on page 445.
Incremental synthesis uses compile points to determine which portions
of the design to resynthesize, only resynthesizing the compile points that
have been modified. See Resynthesizing Compile Points Incrementally,
on page 446.
Design Preservation
Using compile points addresses the need to maintain the overall stability of a
design while portions of the design evolve. When you use compile points to
partition the design, you can isolate one part from another. This lets you
preserve some compile points, and only resynthesize those that need to be
rerun. These scenarios describe some design situations where compile points
can be used to isolate parts of the design and run incremental synthesis:
During the initial design phase, design modules are still being designed.
Use compile points to preserve unchanged design modules and evaluate
the effects of modifications to parts of the design that are still changing.
During design integration, use compile points to preserve the main
design modules and only allow the glue logic to be remapped.
If your design contains IP, synthesize the IP, and use compile points to
preserve them while you run incremental synthesis on the rest of the
design.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 415
Chapter 15: Working with Compile Points Compile Point Basics
In the final stages of the design, use compile points to preserve design
modules that do not need to be updated while you work through minor
RTL changes in some other part of the design.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
416 December 2012
Compile Point Basics Chapter 15: Working with Compile Points
To simplify things, the term child is used to refer to a compile point that is
contained inside another compile point; the term parent is used to refer to a
container compile point that contains a child. These terms are not used in
their strict sense of direct, immediate containment: If a compile point A is
nested in B, which is nested in C, then A and B are both considered children
of C, and C is a parent of both A and B. The top level is considered the parent
of all compile points. In the figure above, both CP5 and CP6 are children of
CP4; both CP4 and CP5 are parents of CP6; CP5 is an immediate child of CP4
and an immediate parent of CP6.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 417
Chapter 15: Working with Compile Points Compile Point Basics
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
418 December 2012
Compile Point Basics Chapter 15: Working with Compile Points
These are descriptions of the soft, hard, and locked compile types:
Soft
Compile point boundaries can be reoptimized during top-level mapping.
Timing optimizations like sizing, buffering, and DRC logic optimizations
can modify boundary instances of the compile point and combine them
with functions from the next higher level of the design. The compile
point interface can also be modified. Multiple instances are uniquified.
Any optimization changes can propagate both ways: into the compile
point and from the compile point to its parent.
Using soft mode usually yields the best quality of results, because the
software can utilize boundary optimizations. On the other hand, soft
compile points can take a longer time to run than the same design with
hard or locked compile points.
The following figure shows the soft compile point with a dotted boundary
to show that logic can be moved in or out of the compile point.
TOP
compile_point = soft
Hard
For hard compile points, the compile point boundary can be reoptimized
during top-level mapping and instances on both sides of the boundary
can be modified by timing and DRC optimizations using top-level
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 419
Chapter 15: Working with Compile Points Compile Point Basics
In the following figure, the solid boundary on the hard compile point
indicates that no logic can be moved in or out of the compile point.
TOP
compile_point = hard
The hard compile point type allows for optimizations on both sides of the
boundary without changing the boundary. There is a trade-off in quality
of results to keep the boundaries. Using hard also allows for hierarchical
equivalence checking for the compile point module.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
420 December 2012
Compile Point Basics Chapter 15: Working with Compile Points
Locked
This is the default compile point type. With a locked compile point, the
tool does not make any interface changes or reoptimize the compile
point during top-level mapping. An interface logic model (ILM) of the
compile point is created (see Interface Logic Models, on page 426) and
included for the top-level mapping. The ILM remains unchanged during
top-level mapping.
The locked value indicates that all instances of the same compile point
are identical and unaffected by top-level constraints or critical paths. As
a result, multiple instances of the compile point module remain identical
even though the compile point is uniquified. The Technology view (srm
file) shows unique names for the multiple instances, but in the final
Verilog netlist (vma file) the original module names for the multiple
instances are restored.
TOP
compile_point = locked
This mode has the largest trade-off in terms of QoR, because there are
no boundary optimizations. So, it is very important to provide accurate
constraints for locked compile points. The following table lists some
advantages and limitations with the locked compile point:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 421
Chapter 15: Working with Compile Points Compile Point Basics
Advantages Limitations
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
422 December 2012
Compile Point Synthesis Basics Chapter 15: Working with Compile Points
The following figure shows that this design has one locked compile
point, pgrm_cntr. It uses the following syntax to define the compile point:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 423
Chapter 15: Working with Compile Points Compile Point Synthesis Basics
The compile point constraints are specific to the compile point and only
apply within it. If your design has manual compile points, you can
define corresponding compile point constraint files for them. See Setting
Constraints at the Compile Point Level, on page 440 for a step-by-step
procedure.
When compile point constraints are defined, the tool uses them to
synthesize the compile point, not automatic interface timing. Note that
depending on the compile point type, the tool might further optimize the
compile points during top-down synthesis of the top level to improve
timing performance and overall design results, but the compile point
itself is synthesized with
LOthe defined compile point constraints.
The first command in a compile point constraint file is
define_current_design, and it specifies the compile point module for the
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
424 December 2012
Compile Point Synthesis Basics Chapter 15: Working with Compile Points
contained constraints. This command sets the context for the constraint
file. The remainder of the file is similar to the top-level constraint file.
For example:
define_current_design {pgrm_cntr}
If your design has some compile points with their own constraint files and
others without them, the tool uses the defined compile point constraints
when it synthesizes those compile points. For the other compile points
without defined constraints, it uses automatic interface timing, as described
in Interface Timing for Compile Points, on page 426.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 425
Chapter 15: Working with Compile Points Compile Point Synthesis Basics
The tool does not do any timing optimizations on an ILM. The interface logic
is preserved with no modifications. All logic required to recreate timing at the
top level is included in the ILM. ILM logic includes any paths from an
input/inout port to an internal register, an internal register to an
output/inout port, and an input/inout port to an output/inout port.
CP 1
Gates included in ILM
and_a and_b
and_c or_a
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
426 December 2012
Compile Point Synthesis Basics Chapter 15: Working with Compile Points
When there are compile point constraint files, the tool first synthesizes
the compile point using the constraints in the compile point constraints
file and then synthesizes the top level using the top-level constraints.
When it synthesizes a compile point, the tool considers all other compile
points as black boxes and only uses their interface timing information. In the
following figure, when the tool is synthesizing compile point A, it applies
relevant timing information to the boundary registers of B and C, because it
treats them as black boxes.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 427
Chapter 15: Working with Compile Points Compile Point Synthesis Basics
When interface timing is off, the compile point log file (srr) reports the clock
LO as 50 MHz, which is the compile point
frequency for the compile point
frequency.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
428 December 2012
Compile Point Synthesis Basics Chapter 15: Working with Compile Points
Interface Timing On
For automatic interface timing to run on a compile point (interface timing on),
there must not be a compile-point level constraints file. When interface
timing is on, the compile point log file (srr) reports the clock frequency for the
top-level design, which is 100 MHz:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 429
Chapter 15: Working with Compile Points Compile Point Synthesis Basics
A compile point stands on its own, and is optimized separately from its parent
environment (the compile point container or the top level). This means that
critical paths from a higher level do not propagate downwards, and they are
unaffected by them.
If you have specified compile point-level constraints, the tool uses them to
synthesize the compile point; if not, it uses automatic interface timing propa-
gated from the top level. For compile point synthesis, the tool assumes that
all other compile points are black boxes, and only uses the interface informa-
tion.
When defined, compile point constraints apply within the compile point. For
manual compile points, it is recommended that you set constraints on locked
compile points, but setting constraints is optional for soft and hard compile
points.
The software writes out a single output netlist and one constraint file for the
LO
entire design. See Forward-annotation of Compile Point Timing Constraints,
on page 433 for a description of the constraints that are forward-annotated.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
430 December 2012
Compile Point Synthesis Basics Chapter 15: Working with Compile Points
With this setting, when the tool encounters a mapper error it black boxes the
affected compile point and continues to synthesize other compile points. The
log file report after synthesis contains warnings like the following for the
ignored errors:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 431
Chapter 15: Working with Compile Points Compile Point Synthesis Basics
The tool resynthesizes a compile point that has already been synthesized, in
any of these cases:
The HDL source code defining the compile point is changed in such a
way that the design logic is changed.
The constraints applied to the compile point are changed.
Any of the options on the Device panel of the Implementation Options dialog
box, except Update Compile Point Timing Data, are changed. In this case the
entire design is resynthesized, including all compile points.
You intentionally force the resynthesis of your entire design, including
all compile points, with the Run -> Resynthesize All command.
The Update Compile Point Timing Data device mapping option is enabled and
at least one child of the compile point (at any level) has been remapped.
The option requires that the parent compile point be resynthesized using
the updated timing model of the child. Note that this includes the possi-
bility that the child was remapped earlier, while the option was disabled.
The newly enabled option requires that the updated timing model of the
child be taken into account, by resynthesizing the parent.
For each compile point, the software creates a subdirectory named for the
compile point, in which it stores intermediate files that contain hierarchical
interface timing and resource information that is used to synthesize the next
level. Once generated, the model file is not updated unless there is an inter-
face design change or you explicitly specify it. If you happen to delete these
files, the associated compile point will be resynthesized and the files regener-
ated.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
432 December 2012
Synthesizing Compile Points Chapter 15: Working with Compile Points
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 433
Chapter 15: Working with Compile Points Synthesizing Compile Points
I/O All top-level port constraints. set_input_delay {p:a} {1} -clock {clk:r}
constraints Register the compile point I/O
boundaries to improve timing.
Timing All timing exceptions that are set_false_path -from {i:reg1} -to
exceptions outside the compile point {i:reg2}
module, or that might be
partially in the compile point
modules.
Attributes All attributes that are define_attribute {i:statemachine_1}
applicable to the rest of the syn_encoding {sequential}
design, not within the compile
points.
See Setting Constraints at the Compile Point Level, on page 440 for a
step-by-step procedure. After setting the compile point constraints, add
the compile point constraint file to the project.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 435
Chapter 15: Working with Compile Points Synthesizing Compile Points
With this option enabled, the tool black boxes any compile points that
have mapper errors and continues to synthesize the rest of the design.
See Continue on Error Mode, on page 431 for more information about
this mode.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
436 December 2012
Synthesizing Compile Points Chapter 15: Working with Compile Points
The tool synthesizes the compile points separately and then synthesizes
the top level. See Compile Point Synthesis, on page 429 for details about
the process.
The first time it runs synthesis, the tool maps the entire design.
For subsequent synthesis runs, the tool only maps compile points
that were modified since the last run. It preserves unchanged compile
points.
7. Analyze the synthesis results using the top-level srr log file.
8. If you do not meet your design goals, make necessary changes to the
RTL, constraints, or synthesis controls, and re-synthesize the design.
The tool runs incremental synthesis on the modified parts of the design,
as described in Incremental Compile Point Synthesis, on page 432. See
Resynthesizing Compile Points Incrementally, on page 446 for a detailed
procedure.
The SCOPE window opens. It includes a Current Design field, where you can
specify constraints for the top-level design from the drop-down menu and
define manual compile points.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 437
Chapter 15: Working with Compile Points Synthesizing Compile Points
You do not have to redefine compile point constraints at the top level as
the tool uses them to synthesize the compile points.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
438 December 2012
Synthesizing Compile Points Chapter 15: Working with Compile Points
You can get a list of all the modules from which you can select and
designate compile points with the Tcl find command, as shown here:
3. Set the Type to locked, hard, or soft, according to your design goals. See
Defining the Compile Point Type, on page 439 for details.
This tags the module as a compile point. The following figure shows the
prgm_cntr module set as a locked compile point:
You can now open the compile point fdc file and define constraints for the
compile point, as needed for manual compile points. See Setting Constraints
at the Compile Point Level, on page 440 for details.
1. When runtime is the main objective and QoR is not a primary concern,
set the compile point type as follows on the SCOPE Compile Points tab:
The following example shows the Tcl command and the equivalent
version in the in the SCOPE GUI:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 439
Chapter 15: Working with Compile Points Synthesizing Compile Points
2. When runtime and QoR are both important, do the following to ensure
the best performance while still saving runtime:
Register the I/O boundaries for the compile points.
As far as possible, put the entire critical path into the same compile
point.
Set each compile point type individually, using these compile point
types:
3. If your goal is design preservation, set the compile point you want to
preserve to locked.
When you specify compile point constraints, the tool synthesizes the compile
point using the compile point timing models instead of automatic interface
timing from the top level. This procedure explains how to create a (compile
point constraint file, and set constraints for the compile point:
1. In an open project, click the SCOPE icon ( ). Click the FPGA Constraints
(SCOPE) button. The New Constraints File dialog box opens.
2. From the Current Design field, select the module for which you want to
create the compile point.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
440 December 2012
Synthesizing Compile Points Chapter 15: Working with Compile Points
A default name for the compile point file appears in the banner of the
SCOPE window. Unlike the top-level constraint file, the Compile Point tab
in the SCOPE UI is greyed out when the constraint file is for a compile
point.
The tool uses the compile point constraints you define to synthesize the
compile point. Compile point port constraints are not used at the parent
level, because compile point ports do not exist at that level.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 441
Chapter 15: Working with Compile Points Synthesizing Compile Points
You can specify SCOPE attributes for the compile point as usual. See
Using Attributes with Compile Points, on page 442 for some exceptions.
5. Save the file and add it to the project. When prompted, click Yes to add
the constraint file to the top-level design project.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
442 December 2012
Synthesizing Compile Points Chapter 15: Working with Compile Points
Check top-level and compile point boundary timing. You can also
check this visually using the RTL and Technology view schematics. If
you find negative slack, check the critical path. If the critical path
crosses the compile point boundary, you might need to improve the
compile point constraints.
If the design was resynthesized, check the Summary of Compile Points
section to see if compile points were preserved or remapped.
Note that this section reports black box compile points as Not Mapped,
and lists the reason as Black Box.
Review all warnings and determine which should be addressed and
which can be ignored.
Review the area report in the log file and determine if the cell usage is
acceptable for your design.
Check all DRC information.
3. Check other files:
Check the individual compile point module log files. The tool creates a
separate directory for each compile point module under the
implementation directory. Check the compile point log file in this
directory for synthesis information about the compile point synthesis
run.
Check the compile point timing report. This report is located in the
compile point results directory of the implementation directory for
each compile point.
4. Check the RTL and Technology view schematics for a graphic view of the
design logic. Even though instantiations of compile points do not have
unique names in the output netlist, they have unique names in the
Technology view. This is to facilitate timing analysis and the viewing of
critical paths.
Note: Compile point of type {hard} is easily located in the Technology view
with the color green.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 443
Chapter 15: Working with Compile Points Synthesizing Compile Points
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
444 December 2012
Using Compile Points with Other Features Chapter 15: Working with Compile Points
3. Run synthesis.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 445
Chapter 15: Working with Compile Points Resynthesizing Incrementally
Resynthesizing Incrementally
Incremental synthesis can significantly reduce runtime on subsequent runs.
It can also help with design stabilization and preservation. The following
describe the incremental synthesis process, and how compile points are used
in incremental synthesis within the tool and with other tools:
Incremental Compile Point Synthesis, on page 432
Resynthesizing Compile Points Incrementally, on page 446
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
446 December 2012
Resynthesizing Incrementally Chapter 15: Working with Compile Points
To obtain the best results, define any required constraints and set the
proper implementation options for the compile point before resynthe-
sizing.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 447
Chapter 15: Working with Compile Points Resynthesizing Incrementally
4. To force the software to generate a new model file for the compile point,
click Implementation Options on the Device tab and enable Update Compile
Point Timing Data. Click Run.
The software regenerates the model file for each compile point when it
synthesizes the compile points. The new model file is used to synthesize
the parent. The option remains in effect until you disable it.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
448 December 2012
CHAPTER 16
This chapter covers topics that can help the advanced user improve produc-
tivity and inter operability with other tools. It includes the following:
Using Batch Mode, on page 450
Working with Tcl Scripts and Commands, on page 456
Automating Flows with synhooks.tcl, on page 463
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 449
Chapter 16: Process Optimization and Automation Using Batch Mode
Batch scripts are in Tcl format. For more information about Tcl syntax and
commands, see Working with Tcl Scripts and Commands, on page 456.
1. Make sure you have a project file (prj) set up with the implementation
options. For more information about creating this Tcl file, see Creating a
Tcl Synthesis Script, on page 458.
2. From a command prompt, go to the directory where the project files are
located, and type one of the following, depending on which product you
are using:
The software returns the following codes after the batch run:
0 - OK
2 - logical error LO
3 - startup failure
4 - licensing failure
5 - batch not available
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
450 December 2012
Using Batch Mode Chapter 16: Process Optimization and Automation
6 - duplicate-user error
7 - project-load error
8 - command-line error
9 - Tcl-script error
20 - graphic-resource error
21 - Tcl-initialization error
22 - job-configuration error
23 - parts error
24 - product-configuration error
25 - multiple top levels
3. If there are errors in the source files, check the standard output for
messages. On Linux systems, this is generally the monitor; on Windows
systems, it is the stdout.log file.
4. After synthesis, check the resultFile.srr log file for error messages about
the run.
2. Save the file with a tcl extension to the directory that contains your
source files and other project files.
3. From a command prompt, go to the directory with the files and type the
following:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 451
Chapter 16: Process Optimization and Automation Using Batch Mode
License Queuing
A common problem when running in batch mode is that the run fails because
all of the available licenses are in use. License queuing allows a batch run to
wait for the next available license when a license is not immediately available.
You can use the following types of license queuing:
Blocking-style Queuing
Non Blocking-style Queuing
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
452 December 2012
Using Batch Mode Chapter 16: Process Optimization and Automation
Blocking-style Queuing
When blocking-style queuing is enabled and the requested license feature is
on the server but not available, the tool waits until the license becomes avail-
able.
For example:
Queuing Considerations
When using queuing:
A blocking-style queuing is used; license checkout does not exit until a
license becomes available.
There is no maximum wait time; once initiated, the tool can wait indefi-
nitely for a license.
If the server shuts down while the tool is waiting, a checkout failure is
reported.
When two licenses are required, queuing waits only until the first license
becomes available (and not the second) to avoid holding a license unnec-
essarily.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 453
Chapter 16: Process Optimization and Automation Using Batch Mode
SYNPLIFYPRO_LICENSE_WAIT=180
Include a -license_wait waitTime command-line argument when
launching batch mode as shown in the following examples:
synplify_pro -batch -license_wait waitTime Tcl_script.tcl
For example:
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
454 December 2012
Using Batch Mode Chapter 16: Process Optimization and Automation
SYNPLIFYPRO_LICENSE_TYPE=synplifypro:synplifypro_microsemi
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 455
Chapter 16: Process Optimization and Automation Working with Tcl Scripts and Commands
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
456 December 2012
Working with Tcl Scripts and Commands Chapter 16: Process Optimization and Automation
1. In the Tcl script window, enter recording -file logfile to write out a Tcl log
file.
The software saves the commands from this session into a Tcl file that
you can use as a job script or as a starting point for creating other
Tcl files.
For the command syntax, see recording, on page 1068 in the Reference
manual.
1. To set the maximum number of parallel jobs in the ini file, do the
following:
Open the ini file for the synthesis tool. For example, synplify_pro.ini.
Add the MaxParallelJobs variable to the ini file, as follows:
[JobSetting]
MaxParallelJobs=<n>
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 457
Chapter 16: Process Optimization and Automation Working with Tcl Scripts and Commands
The tool uses the MaxParallelJobs value from the ini file as the default for
both the UI (Project->Options) and batch mode. This value remains in
effect until you reset it in the ini file or from the GUI, as described in the
next step. To locate this configuration and initialization file (ini), see
Input Files, on page 432.
2. To set or change the maximum number of parallel jobs from the GUI, do
the following:
Select Project->Options->Configure Compile Point Process.
Set the value you want in the Maximum number of parallel synthesis jobs
field, and click OK. This field shows the current ini value, but you
can reset it, and it will remain in effect until you change it again. The
value you set is saved to the ini file.
3. To set a Tcl variable for the maximum number of parallel jobs, do the
following:
Determine where you are going to define the variable. You can do this
in the project file, or a Tcl file, or you can type it in the Tcl window. If
you specify it in a Tcl file, you must source the file. If you specify it in
the Tcl window, the tool does not save the value, and it will be lost
when you end the current session.
Specify the max_parallel_jobs variable with the set_option Tcl command:
set_option -max_parallel_jobs value
The tool applies the max_parallel_jobs value specified to all project files
and their respective implementations. This is a global option. The
maximum number of parallel jobs remains in effect until you specify a
new value. This new value takes effect immediately, going forward.
However, when you set this option from the Tcl command window, the
max_parallel_jobs value is not saved and will be lost when you exit the
application.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
458 December 2012
Working with Tcl Scripts and Commands Chapter 16: Process Optimization and Automation
project -run
1. Use a text file editor or select File->New, click the Tcl Script option, and type
a name for your Tcl script.
2. Start the script by specifying the project with the project -new command.
For an existing project, use project -load project.prj.
3. Add files using the add_file command. The files are added to their
appropriate directories based on their file name extensions (see add_file,
on page 1042 in the Reference Manual). Make sure the top-level file is
last in the file list:
add_file statemach.vhd
add_file rotate.vhd
add_file memory.vhd
add_file top_level.vhd
add_file design.fdc
For information on constraints and vendor-specific attributes, see , on
page 48 for details about constraint files.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 459
Chapter 16: Process Optimization and Automation Working with Tcl Scripts and Commands
set variable_name {
first_option_to_try
second_option_to_try
...}
2. Create a foreach loop that runs through each option in the list, using the
appropriate Tcl commands. The following example shows a variable set
up to synthesize a design with different frequencies. It also creates a
separate log file for each run.
set try_freq {
Set of frequencies
to try 85.0
90.0
92.0 Tcl commands that set the
95.0 frequency, create separate log files
97.0 for each run, and run synthesis
100.0
)
Foreach loop foreach frequency $try_freq {
set_option -frequency $frequency
project -log_file $frequency.srr
project -run}
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
460 December 2012
Working with Tcl Scripts and Commands Chapter 16: Process Optimization and Automation
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 461
Chapter 16: Process Optimization and Automation Working with Tcl Scripts and Commands
set try_these {
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
462 December 2012
Automating Flows with synhooks.tcl Chapter 16: Process Optimization and Automation
1. Create a Tcl script for each logic block. The Tcl script must synthesize
the block. See Creating a Tcl Synthesis Script, on page 458 for details.
2. Create a top-level script that reads the block scripts. Create the script
with the with the project -new command.
4. Save the top-level script, and then run it using this syntax:
source block_script.tcl
When you run this command, the entire design is synthesized, begin-
ning with the lower-level logic blocks specified in the sourced files, and
then the top level.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 463
Chapter 16: Process Optimization and Automation Automating Flows with synhooks.tcl
You must copy the file to a new location so that it does not get
overwritten by subsequent product installations and you can maintain
your customizations from version to version. For example, copy it to
C:/work/synhooks.tcl.
3. Open the synhooks.tcl file in a text editor, and edit the file so that the
commands reflect what you want to do. The default file contains
examples of the callbacks, which provide you with hooks at various
points of the design process.
Customize the file by deleting the ones you do not need and by adding
your customized code to the callbacks you want to use. The following
table summarizes the various design phases where you can use the
callbacks and lists the corresponding functions. For details of the
syntax, refer to synhooks File Syntax, on page 1116 in the Reference
Manual.
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
464 December 2012
Automating Flows with synhooks.tcl Chapter 16: Process Optimization and Automation
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 465
Chapter 16: Process Optimization and Automation Automating Flows with synhooks.tcl
proc syn_on_press_ctrl_f8 {} {
set sel_files [get_selected_files]
while {[expr [llength $sel_files] > 0]} {
set file_name [lindex $sel_files 0]
puts $file_name
set sel_files [lrange $sel_files 1 end]
}
}
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
466 December 2012
CHAPTER 17
Using Multiprocessing
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 467
Chapter 17: Using Multiprocessing Multiprocessing With Compile Points
To use multiprocessing in the Logical Compile Point Synthesis flows for the
Synplify Pro tool, see Chapter 15, Working with Compile Points.
[JobSetting]
MaxParallelJobs=<n>
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
468 December 2012
Multiprocessing With Compile Points Chapter 17: Using Multiprocessing
License Utilization
When you decide to run parallel synthesis jobs, a license is used for each
compile point job that runs. For example, if you set the Maximum number of
parallel synthesis jobs to 4, then the synthesis tool consumes one license and
three additional licenses are utilized to run the parallel jobs if they are avail-
able for your computing environment. Licenses are released as jobs complete,
and then consumed by new jobs which need to run.
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 469
Chapter 17: Using Multiprocessing Multiprocessing With Compile Points
Factors 1 and 3 above can change during a single synthesis run. The number
of jobs equals the number of licenses; which then equates the lowest value of
these three factors.
synplify_pro.exe -licensetype
"synplifypro:synplifypro_allvendor:synplifypro_microsemi"
Use the following environment variables specified with the license type:
SYNPLIFYPRO_LICENSE_TYPE (Synplify Pro tool)
setenv SYNPLIFYPRO_LICENSE_TYPE=
"synplifypro:synplifypro_allvendor:synplifypro_microsemi"
Multiprocessing can access any of these seven license types for additional
licenses.
LO
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
470 December 2012
Index
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 471
:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
472 December 2012
:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 473
:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
474 December 2012
:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 475
:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
476 December 2012
:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 477
:
Microsemi
ACTgen macros 347
O
macro libraries 346 objects
output netlist 352 finding on current sheet 282
pin numbers for bus ports 351 flagging by property 261
mixed designs selecting/deselecting 265
troubleshooting 43 optimization
mixed language files 40 for area 195
for timing 196
mouse strokes
logic preservation. See logic
pushing/popping objects 273 preservation.
multicycle constraints preserving hierarchy 209
clock enables 104 preserving objects 205
multicycle paths tips for 194
setting constraints 60, 100 OR 73
multiple implementations 127 orig_inst_of property 264
running from project 128 output constraints, setting 61, 107
running from workspace 130
output files 352
multiprocessing specifying 137
compile points 445
maximum parallel jobs 457, 468 output netlists
finding objects 290
multisheet schematics 267
for nested internal logic 304
searching just one sheet 282 P
transparent instances 267
package library, adding 114
pad types
N industry standards 63
name spaces parallel jobs 457
output netlist 290 parameter passing 44
technology view 284 boolean generics 43
navigating among design views 268 parameters
netlists for different vendors 352 extracting from Verilog source code 140
nets part selection options 131
expanding logic from 308 path constraints
preserving for probing with false paths 75, 108
syn_probe 205
preserving with syn_keep 205 pathnames
properties 260 using wildcards for long names
selecting drivers 311 (Find) 285
New property 263 paths
crossprobing 297
non blocking-style license queuing 454 tracing between objects 311
notes tracing from net 308
filtering 246 tracing from pin 307
sorting 246 pattern matching
notes, definition 32 Find command (Tcl) 84
pattern searching 152
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
478 December 2012
:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 479
:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
480 December 2012
:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 481
:
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
482 December 2012
:
Synplify Pro for Microsemi Edition User Guide Copyright 2012 Synopsys, Inc.
December 2012 483
:
W
warning messages
definition 32
warnings
feedback muxes 197
filtering 246
handling 255
sorting 246
Watch window 243
moving 243, 245
multiple implementations 128
resizing 243, 245
wildcards
effect of search scope 286
Find command (Tcl) 84
message filter 248
wildcards (Find)
Copyright 2012 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
484 December 2012