Synplify Pro Me j2015.03msp1-2 User Guide
Synplify Pro Me j2015.03msp1-2 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
2 December 2015
:
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.
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 © 2015 Synopsys, Inc.
December 2015 3
:
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
4 December 2015
Contents
Chapter 1: Introduction
Synopsys FPGA and Prototyping Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
FPGA Implementation Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Synopsys FPGA Tool Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Scope of the Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
The Document Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Starting the Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
User Interface Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 5
Contents
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
6 December 2015
Contents
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 7
Contents
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
8 December 2015
Contents
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 9
Contents
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
10 December 2015
Contents
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 11
Contents
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
12 December 2015
Contents
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 13
Contents
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
14 December 2015
CHAPTER 1
Introduction
This introduction to the Synopsys® Synplify Pro® tool describes the following:
• Synopsys FPGA and Prototyping Products, on page 16
• Scope of the Document, on page 21
• Getting Started, on page 22
• User Interface Overview, on page 24
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 15
Chapter 1: Introduction Synopsys FPGA and Prototyping Products
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
16 December 2015
Synopsys FPGA and Prototyping Products Chapter 1: Introduction
The Synplify Premier product offers both FPGA designers and ASIC proto-
typers targeting single FPGAs with the most efficient method of design imple-
mentation and debug. On the design implementation side, it includes
functionality for timing closure, logic verification, IP usage, ASIC compati-
bility, and DSP implementation, as well as a tight integration with FPGA
vendor back-end tools. On the debug side, it provides for in-system verifi-
cation of FPGAs which dramatically accelerates the debug process, and also
includes a rapid and incremental method for finding elusive design problems.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 17
Chapter 1: Introduction Synopsys FPGA and Prototyping Products
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
18 December 2015
Synopsys FPGA and Prototyping Products Chapter 1: Introduction
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 19
Chapter 1: Introduction Synopsys FPGA and Prototyping Products
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
20 December 2015
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 © 2015 Synopsys, Inc.
December 2015 21
Chapter 1: Introduction Getting Started
Getting Started
This section shows you how to get started with the Synopsys FPGA synthesis
software. It describes the following topics, but does not supersede the infor-
mation in the installation instructions about licensing and installation:
• Starting the Software, on page 22
• Getting Help, on page 23
synplify_pro
The command starts the synthesis tool, and opens the Project window. If
you have run the software before, the window displays the previous
project. For more information about the interface, see the User Interface
Overview chapter of the Reference Manual.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
22 December 2015
Getting Started Chapter 1: Introduction
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 23
Chapter 1: Introduction User Interface Overview
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
24 December 2015
CHAPTER 2
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 25
Chapter 2: FPGA Synthesis Design Flows 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. 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
26 December 2015
Logic Synthesis Design Flow Chapter 2: FPGA Synthesis Design Flows
6. Analyze the results, using tools like 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 © 2015 Synopsys, Inc.
December 2015 27
Chapter 2: FPGA Synthesis Design Flows Logic Synthesis Design Flow
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
28 December 2015
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 30
• Using Mixed Language Source Files, on page 43
• Using the Incremental Compiler, on page 48
• Using the Structural Verilog Flow, on page 50
• Working with Constraint Files, on page 52
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 29
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 43.
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,
LOthat you can use the Context Help Editor for
Verilog or VHDL. Note
designs that contain Verilog, SystemVerilog, or VHDL constructs in
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
30 December 2015
Setting Up HDL Source Files Chapter 3: Preparing the Input
the source file. For more information, see Using the Context Help
Editor, on page 32.
If you are using Verilog 2001 format or SystemVerilog, make sure to
enable the Verilog 2001 or System Verilog option before you run synthesis
(Project->Implementation Options->Verilog tab). The default Verilog file
format for new projects is SystemVerilog.
– 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 34 for
more information on working in the Editing window.
For the best synthesis results, check the Reference and Attributes Refer-
ence manuals and ensure that you are using the available constructs
and vendor-specific attributes and directives effectively.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 31
Chapter 3: Preparing the Input Setting Up HDL Source Files
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 33.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
32 December 2015
Setting Up HDL Source Files Chapter 3: Preparing the Input
the window and a generic code or command template for that construct
is displayed at the bottom.
3. The Insert Template button is also enabled. When you click the Insert
Template button, the code or command shown in the template window is
inserted into your file at the location of the cursor. This allows you to
easily insert the code or command 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 or
command you want to insert and click Copy. You can then paste it into
your file.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 33
Chapter 3: Preparing the Input Setting Up HDL Source Files
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-
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 37.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
34 December 2015
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 © 2015 Synopsys, Inc.
December 2015 35
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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
36 December 2015
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.
7. To cross probe 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 250 for details.
8. When you have fixed all the errors, select File->Save or click the Save icon
to save the file.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 37
Chapter 3: Preparing the Input Setting Up HDL Source Files
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 39.
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 for easy recognition.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
38 December 2015
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 © 2015 Synopsys, Inc.
December 2015 39
Chapter 3: Preparing the Input Setting Up HDL Source Files
– From a Linux platform, for a text editor that does not create its own
window, do not use the ... Browse button. Instead, type gnome-terminal
-x editor. To use emacs for example, type gnome-terminal -x emacs.
The software has been tested with the emacs and vi text editors.
3. Click OK.
To do this: LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
40 December 2015
Setting Up HDL Source Files Chapter 3: Preparing the Input
2. Specify the locations of the Library Directories for the Verilog library files to
be included in your design for the project.
Any library extensions can be specified, such as .av, .bv, .cv, .xxx, .va,
.vas (separate library extensions with a space).
The following figure shows you where to enter the library extensions on
the dialog box.
4. After you compile the design, you can verify in the log file that the library
files with these extensions were loaded and read. For example:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 41
Chapter 3: Preparing the Input Setting Up HDL Source Files
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
42 December 2015
Using Mixed Language Source Files Chapter 3: Preparing the Input
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 62.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 43
Chapter 3: Preparing the Input Using Mixed Language Source Files
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 74.
– 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 204.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
44 December 2015
Using Mixed Language Source Files Chapter 3: Preparing the Input
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 74.
– 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 45
Chapter 3: Preparing the Input Using Mixed Language Source Files
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 1’b1, not 1. Similarly, if the VHDL Boolean generic
is FALSE, the corresponding Verilog literal must be 1’b0, 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
46 December 2015
Using Mixed Language Source Files Chapter 3: Preparing the Input
You can work around this by removing the bus width notation of [0:0] in the
Verilog files. You must use a VHDL generic of type integer because the other
types do not allow for the proper binding of the Verilog component.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 47
Chapter 3: Preparing the Input Using the Incremental Compiler
2. Enable the Incremental Compile option from the Verilog or VHDL tab of the
Implementation Options panel.
An SRS file is created for each design module in the synwork directory.
The compiler analyzes the database and determines whether the SRS
files are up-to-date, then only modules that have changed and the
immediate parent modules are regenerated. This can help improve the
LO
runtime for the design, compared with recompiling the database for the
entire design.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
48 December 2015
Using the Incremental Compiler Chapter 3: Preparing the Input
Limitations
The incremental compiler does not support:
• Configuration files included in either the Verilog or VHDL flow
• Mixed HDL flows
• Designs with cross module referencing (XMR)
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 49
Chapter 3: Preparing the Input Using the Structural Verilog Flow
1. You must specify the structural Verilog files to include in your design.
To do this, add the file to the project using one of the following methods:
– Project->Add Source File or the Add File button in the Project view
– Tcl command: add_file -structver fileName
This flow can contain only structural Verilog files or mixed HDL files
(Verilog/VHDL/EDF/SRS) along with structural Verilog netlist files.
However, Verilog/VHDL/EDF/SRS instances are not supported within a
structural Verilog module.
2. The structural Verilog files are added to the Structural Verilog folder in the
Project view. You can also add files to this directory, when you perform
the following:
– Select the structural Verilog file.
– Right-click and select File Options.
– Choose Structural Verilog from the File Type drop-down menu.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
50 December 2015
Using the Structural Verilog Flow Chapter 3: Preparing the Input
3. Run synthesis.
Limitations
The structural Verilog flow does not support the following:
• RTL instances for any other file types
• Hierarchical project management (HPM) flows
• Complex assignments
• Compiler-specific modes and switches
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 51
Chapter 3: Preparing the Input Working with Constraint Files
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 Specifying Attributes and Directives, on page 89 for more information on
adding directives to source code.
v:cell [prefix:]objectName
Where cell is the name of the design entity, prefix is a prefix to identify
objects with the same name, objectName 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:
i:statemod.statereg[*]
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 53
Chapter 3: Preparing the Input Working with Constraint Files
This command generates a report that checks the syntax and applica-
bility of the timing constraints in the FPGA synthesis constraint files for
your project. The report is written to the projectName_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 275
of the Reference Manual.
If you choose to use the legacy SCOPE editor, 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 52.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
54 December 2015
Working with Constraint Files Chapter 3: Preparing the Input
– To edit an existing file, select File->Open, set the Files of Type filter to
Constraint Files (sdc) and open the file you want.
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 95 for more information.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 55
Chapter 3: Preparing the Input Working with Constraint Files
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
56 December 2015
CHAPTER 4
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 58
• Managing Project File Hierarchy, on page 66
• Setting Up Implementations, on page 72
• Setting Logic Synthesis Implementation Options, on page 74
• Specifying Attributes and Directives, on page 89
• Searching Files, on page 96
• Archiving Files and Projects, on page 99
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 57
Chapter 4: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
58 December 2015
Setting Up Project Files Chapter 4: 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
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 © 2015 Synopsys, Inc.
December 2015 59
Chapter 4: 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 83. You can also set these
file options later, before running synthesis.
For additional vendor-specific information about using vendor macro
libraries and black boxes,
LO see Optimizing Microsemi Designs, on
page 492.
– For generic technology components, you can either add the
technology-independent Verilog library supplied with the software
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
60 December 2015
Setting Up Project Files Chapter 4: 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 © 2015 Synopsys, Inc.
December 2015 61
Chapter 4: 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 58 for details.
2. To delete a file from a project, click the file in the Project window, and
press the Delete key.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
62 December 2015
Setting Up Project Files Chapter 4: Setting up a Logic Synthesis Project
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.
Checking this option creates separate folders in the Project view for
constraint files and source files.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 63
Chapter 4: 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 66. Type folders are only displayed if there are multiple types in a
custom folder.
Custom
Folders
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
64 December 2015
Setting Up Project Files Chapter 4: Setting up a Logic Synthesis Project
5. To open more than one implementation in the same Project view, check
Allow Multiple Projects to be Opened.
Project 1
Project 2
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 © 2015 Synopsys, Inc.
December 2015 65
Chapter 4: Setting up a Logic Synthesis Project Managing Project File Hierarchy
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 files and select Place in Folder. A sub-menu
displays so that you can either select an existing folder or create a
new folder.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
66 December 2015
Managing Project File Hierarchy Chapter 4: 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 © 2015 Synopsys, Inc.
December 2015 67
Chapter 4: Setting up a Logic Synthesis Project Managing Project File Hierarchy
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.
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
LO 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
68 December 2015
Managing Project File Hierarchy Chapter 4: Setting up a Logic Synthesis Project
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 © 2015 Synopsys, Inc.
December 2015 69
Chapter 4: Setting up a Logic Synthesis Project Managing Project File Hierarchy
Suppose you want a single-level RTL hierarchy only, then drag and
drop RTL over the project. Thereafter, you can delete the
/Examples/Verilog directory.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
70 December 2015
Managing Project File Hierarchy Chapter 4: Setting up a Logic Synthesis Project
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 71
Chapter 4: Setting up a Logic Synthesis Project Setting Up Implementations
Setting Up Implementations
An implementation is a version of a project, implemented with a specific set of
constraints and other settings. A project can contain multiple implementa-
tions, each one with its own settings.
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.sdc file generated by FSM Explorer. The software keeps a
repeatable history of the synthesis runs.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
72 December 2015
Setting Up Implementations Chapter 4: Setting up a Logic Synthesis Project
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 73
Chapter 4: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
2. Select the technology, part, package, and speed. Available options vary,
depending on the technology you choose.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
74 December 2015
Setting Logic Synthesis Implementation Options Chapter 4: Setting up a Logic Synthesis Project
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 vendor 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, pipelining, and
retiming, see Setting Fanout Limits, on page 352 and Retiming, on
page 340, respectively. For details about other vendor-specific options,
refer to the appropriate vendor chapter and technology family in the
Reference Manual.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 75
Chapter 4: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
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 of the options listed in the table
may not be available in the selected technology. 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
76 December 2015
Setting Logic Synthesis Implementation Options Chapter 4: Setting up a Logic Synthesis Project
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 © 2015 Synopsys, Inc.
December 2015 77
Chapter 4: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
Optimization Options
Project View
Implementation Options->Options
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
78 December 2015
Setting Logic Synthesis Implementation Options Chapter 4: Setting up a Logic Synthesis Project
The software compiles and maps the design using the options you set.
Continue on Error
The “continue-on-error” feature allows the compilation process to continue
for certain, non-syntax-related compiler errors. For more information, see
Using Continue on Error, on page 207.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 79
Chapter 4: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
Project View
Implementation Options->Constraints
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
80 December 2015
Setting Logic Synthesis Implementation Options Chapter 4: 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 © 2015 Synopsys, Inc.
December 2015 81
Chapter 4: 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.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
82 December 2015
Setting Logic Synthesis Implementation Options Chapter 4: Setting up a Logic Synthesis Project
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.
When you synthesize the design, the software compiles and maps the
design using the options you set.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 83
Chapter 4: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
84 December 2015
Setting Logic Synthesis Implementation Options Chapter 4: Setting up a Logic Synthesis Project
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:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 85
Chapter 4: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
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.
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 204.
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 LO
debugging in the schematic views.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 87
Chapter 4: Setting up a Logic Synthesis Project Setting Logic Synthesis Implementation Options
When you synthesize the design, the software compiles and maps the
design using the options you set.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
88 December 2015
Specifying Attributes and Directives Chapter 4: Setting up a Logic Synthesis Project
Attributes Directives
VHDL Yes Yes
If SCOPE/constraints file and the HDL source code are specified for a design,
the constraints has the highest priority when there are conflicts.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 89
Chapter 4: Setting up a Logic Synthesis Project Specifying Attributes and Directives
library synplify;
use synplify.attributes.all;
2. Add the attribute or directive you want after the design unit declaration.
declarations;
attribute attribute_name of objectName : objectType 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 574 in the Reference Manual.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
90 December 2015
Specifying Attributes and Directives Chapter 4: Setting up a Logic Synthesis Project
design_unit_declaration;
attribute attributeName : dataType;
attribute attributeName of objectName : objectType 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 377in the
Reference Manual.
For details of the syntax rules, see Verilog Attribute and Directive
Syntax, on page 377 in the Reference Manual. The following are
examples:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 91
Chapter 4: Setting up a Logic Synthesis Project Specifying Attributes and Directives
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).
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
92 December 2015
Specifying Attributes and Directives Chapter 4: Setting up a Logic Synthesis Project
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 attribute from the list.
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 93
Chapter 4: Setting up a Logic Synthesis Project Specifying Attributes and Directives
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.
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.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
94 December 2015
Specifying Attributes and Directives Chapter 4: Setting up a Logic Synthesis Project
However, the following procedure explains how you can specify attributes
directly in the constraint file.
For information about editing constraints, see Using a Text Editor for
Constraint Files (Legacy), on page 54.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 95
Chapter 4: 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 cross probe 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
96 December 2015
Searching Files Chapter 4: 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 sub-pattern.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 97
Chapter 4: Setting up a Logic Synthesis Project Searching Files
• Leaving the File filter field empty searches all files that meet the Find In
criteria.
• 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 in 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
98 December 2015
Archiving Files and Projects Chapter 4: Setting up a Logic Synthesis Project
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 106.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 99
Chapter 4: Setting up a Logic Synthesis Project Archiving Files and Projects
3. Click Next.
If you did not select Customized file list, the tool summary displays all the
files in the archive and shows the full uncompressed file size as shown
in step 5 (the actual size is smaller after the archiving operation as there
is no duplication of files). When you select Customized file list, the following
interim menu is displayed to allow you to exclude specific file from the
archive.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
100 December 2015
Archiving Files and Projects Chapter 4: Setting up a Logic Synthesis Project
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 101
Chapter 4: Setting up a Logic Synthesis Project Archiving Files and Projects
5. Verify that the current archive contains the files that you want, then
click Archive which creates the project archive sar file. If the list of files is
incorrect, click Back and include/exclude any desired files.
6. Click Archive if you are finished. The synthesis tool reports the archive
success and the path location of the archive file.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
102 December 2015
Archiving Files and Projects Chapter 4: Setting up a Logic Synthesis Project
Un-Archive a Project
Uses this procedure to extract design project files from an archive file (sar).
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 103
Chapter 4: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
104 December 2015
Archiving Files and Projects Chapter 4: 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 Synplify Pro after un-archiving option.
6. When the Add extra input path to project file option is enabled, the archive
utility finds all include files and copies them into a directory called
extra_input. This directory is added to the unarchived project file.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 105
Chapter 4: Setting up a Logic Synthesis Project Archiving Files and Projects
7. Click Un-Archive.
A message dialog box is displayed while the files are being extracted.
8. 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 99.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
106 December 2015
Archiving Files and Projects Chapter 4: Setting up a Logic Synthesis Project
project to ensure that the file list is complete for each implementation
and then displays the wizard, which contains the name of the project
and other information.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 107
Chapter 4: Setting up a Logic Synthesis Project Archiving Files and Projects
– Click Next.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
108 December 2015
Archiving Files and Projects Chapter 4: 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 © 2015 Synopsys, Inc.
December 2015 109
Chapter 4: Setting up a Logic Synthesis Project Archiving Files and Projects
remote/sbg_pe/tests/feature_flow/include/block_b.h
After unarchiving the project, you can see the directory structure for the
equivalent absolute path relative to the project.
"./remote/sbg_pe/tests/feature_flow/include/block_b.h"
• The file location can be specified by include_path in the project file.
block_c/
block_c.v -> `include "block_c.h"
"./slowfs/sbg/tests/include2/block_d.h"
• The file location can be specified by include_path in the project file.
top_block/
top_block.v -> `include "top_block.h"
After you archive and unarchive the project, the relative paths in the original
project become absolute paths in the new unarchived project. In the project
file, the set_option -include_path preserves the original search order for the files.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
110 December 2015
Archiving Files and Projects Chapter 4: Setting up a Logic Synthesis Project
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 111
Chapter 4: Setting up a Logic Synthesis Project Archiving Files and Projects
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
112 December 2015
CHAPTER 5
Specifying Constraints
This chapter describes how to specify constraints for your design. It covers
the following:
• Using the SCOPE Editor, on page 114
• Specifying SCOPE Constraints, on page 121
• Specifying Timing Exceptions, on page 132
• Finding Objects with Tcl find and expand, on page 138
• Using Collections, on page 147
• Converting SDC to FDC, on page 157
• Using the SCOPE Editor (Legacy), on page 159
The following chapters discuss related information:
• Chapter 4, Constraints (Reference Manual) for an overview of constraints
• Chapter 5, SCOPE Constraints Editor (Reference Manual) for a descrip-
tion of the SCOPE editor
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 113
Chapter 5: 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_col-
lection, 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 157.
• For new designs, use the SCOPE editor. See Creating Constraints in the
SCOPE Editor, on page 114 for more information.
• For new designs, use the create_fdc_template Tcl command. See Creating
Constraints With the FDC Template Command, on page 119 for details.
OR
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
114 December 2015
Using the SCOPE Editor Chapter 5: Specifying Constraints
Pressing Ctrl-n or selecting File -> New. This brings up the New dialog
box.
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 © 2015 Synopsys, Inc.
December 2015 115
Chapter 5: Specifying Constraints Using the SCOPE Editor
3. Select if you want to apply the constraint to the top-level or for modules
from the Current Design option drop-down menu located at the top of the
SCOPE editor.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
116 December 2015
Using the SCOPE Editor Chapter 5: 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 127.
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 © 2015 Synopsys, Inc.
December 2015 117
Chapter 5: Specifying Constraints Using the SCOPE Editor
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
118 December 2015
Using the SCOPE Editor Chapter 5: Specifying Constraints
The following procedure shows you how to create constraints in the FDC
constraints file with the create_fdc_template command:
3. At the command line, for example, you can specify the following:
4. If you open the SCOPE editor, you can check that the clock period and
output delay values were added to the constraint file as shown in the
following figure.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 119
Chapter 5: Specifying Constraints Using the SCOPE Editor
However, if there is only one clock port and no derived clocks, no explicit
clock groups are created since they are not needed, as shown below.
6. You can continue using the SCOPE editor to create other constraints.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
120 December 2015
Specifying SCOPE Constraints Chapter 5: 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:
• Entering and Editing SCOPE Constraints
• 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 132.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 121
Chapter 5: Specifying Constraints Specifying SCOPE Constraints
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
122 December 2015
Specifying SCOPE Constraints Chapter 5: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 123
Chapter 5: Specifying Constraints Specifying SCOPE Constraints
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
124 December 2015
Specifying SCOPE Constraints Chapter 5: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 125
Chapter 5: Specifying Constraints Specifying SCOPE 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. LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
126 December 2015
Specifying SCOPE Constraints Chapter 5: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 127
Chapter 5: Specifying Constraints Specifying SCOPE Constraints
3. You can also specify a command by using the constraints browser that
displays a constraints command list and associated syntax.
– Double-click on the specified constraint to add the command to the
editor window.
– Then, use the constraint syntax window to help you specify the
options for this command.
– Click on the Hide Syntax Help button at the bottom of the editor window
to close the syntax help
LO browser.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
128 December 2015
Specifying SCOPE Constraints Chapter 5: Specifying 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 on the FDC constraint file to
open it in the text editor.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 129
Chapter 5: Specifying Constraints Specifying SCOPE 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 121.
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.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
130 December 2015
Specifying SCOPE Constraints Chapter 5: Specifying 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 131
Chapter 5: Specifying Constraints Specifying Timing Exceptions
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, input or bidirectional port, or register. Only black
box output pins are valid. To specify multiple starting points:
– Such as the bits of aLO
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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
132 December 2015
Specifying Timing Exceptions Chapter 5: Specifying Constraints
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, output or bidirectional port, or register. Only black box
input pins are valid. 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 combinational net, hierarchical port or
instantiated cell pin. 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 © 2015 Synopsys, Inc.
December 2015 133
Chapter 5: Specifying Constraints Specifying Timing Exceptions
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
134 December 2015
Specifying Timing Exceptions Chapter 5: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 135
Chapter 5: 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:
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
136 December 2015
Specifying Timing Exceptions Chapter 5: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 137
Chapter 5: Specifying Constraints Finding Objects with Tcl find and expand
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
138 December 2015
Finding Objects with Tcl find and expand Chapter 5: Specifying Constraints
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. The top level for this example is VHDL,
so the following command finds any object in the current
view that starts with either a or A:
find {a*} -nocase
Pattern matching You have two pattern-matching 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.
For hierarchical instance names that use dots as
separators, the dots must be escaped with a backward
slash (\). For example: abc\.d.
Scope of the search The scope of the search varies, depending on where you
enter the command. If you enter it in the SCOPE
environment, the scope of the search is the entire
database, but if it is entered in the Tcl window, the
default scope of the search is the current HDL Analyst
view. See Comparison of Methods for Defining
Collections, on page 147 for a list of the differences.
To set the scope to include the hierarchial levels below
the current view in HDL Analyst, use the -hier argument.
This example finds all objects below the current view that
begin with a:
find {a*} -hier
Restricting search by Use the -object_type argument. The following command
type of object finds all nets that contain syn:
find -net {*syn*}
Restricting search by Use the -filter option, as described in Refining Tcl Find
object property Results with -filter, on page 140.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 139
Chapter 5: Specifying Constraints Finding Objects with Tcl find and expand
2. Specify the command using the find pattern as usual, and then specify
the -filter option as the last argument:
With this command, the tool first finds objects that match the find search-
Pattern, and then further filters the found objects the according to the
property criteria specified in -filter expression. Use the ! character before
expression if you want to select objects that do not match the properties
LO
specified in the filter expression.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
140 December 2015
Finding Objects with Tcl find and expand Chapter 5: Specifying Constraints
The following example finds registers in the current view that are
clocked by myclk:
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 (Specifying Search Patterns for Tcl find, on page 138). This section lists
some tips for using the Tcl find command.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 141
Chapter 5: Specifying Constraints Finding Objects with Tcl find and expand
1. Create a collection by typing the set 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:
2. Check your find constraints. See Checking Tcl find and expand Results,
on page 144.
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 with Tcl
Commands, on page 153:
– Print the collection using the -print option to the find command.
– Print the collection without carriage returns or properties, using c_list.
– Print the collection in columns, with optional properties, using c_print.
4. To manipulate the objects in the collection, use the commands
described in Viewing and Manipulating Collections with Tcl Commands,
on page 153.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
142 December 2015
Finding Objects with Tcl find and expand Chapter 5: Specifying Constraints
1. Specify at least one from, to, or thru point as the starting point for the
command. You can use any combination of these points.
The following example expands the cone of logic between reg1 and reg2.
If you do not specify this argument, the command only works on the
current view. The following example expands the cone of logic to reg1,
including instances below the current level:
The following command finds all pins driven by the specified pin.
4. To print a list of the objects found, either use the -print argument to the
expand command, or use the c_print or c_list commands (see Creating
Collections using Tcl Commands, on page 150).
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 143
Chapter 5: Specifying Constraints Finding Objects with Tcl find and expand
2. To list objects selected by the find or expand commands, use one of these
methods:
– List the results by specifying the -print option to the command.
– List the results with the c_list command.
– Print out the results one item per line, using the c_print command.
3. To visually validate the objects selected by the find or expand commands,
do the following:
– Run the command and save the results as a collection.
– On the SCOPE Collections tab, select the collection.
– Right-click and choose Select in Analyst. The objects in the collection
are highlighted in the RTL view. The example below shows high
fanout nets that drive more than 20 destinations.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
144 December 2015
Finding Objects with Tcl find and expand Chapter 5: Specifying Constraints
1. Create the Tcl file to be run in batch mode, making sure that the
open_design command precedes the find/expand commands you want.
This batch script uses the find command to find MACC and negative
slack, and then writes out the results to separate text files:
open_design implementation_a/top.srm
set find_MACC [find -hier –inst{*} -filter @view == {MACC*}]
set find_negslack [find -hier –seq –inst {*} -filter @slack
< {-0.0}]
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 145
Chapter 5: Specifying Constraints Finding Objects with Tcl find and expand
2. Run the script at the command line. For example, if the file created in
step 1 was called analysis.tcl, specify it at the command line, as shown
below:
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
146 December 2015
Using Collections Chapter 5: Specifying Constraints
Using Collections
A collection is a defined group of objects. The advantage offered by collections
is that you can operate on all the objects in the collection at the same time. A
collection can consist of a single object, multiple objects, or even other collec-
tions. You can either define collections in the SCOPE window or type the
commands in the Tcl script window.
• Creating and Using SCOPE Collections, on page 148
• Creating Collections using Tcl Commands, on page 150
• Viewing and Manipulating Collections with Tcl Commands, on page 153
In the design shown below, if you push down into B, and then type find
-hier a* in the Tcl window, the command finds a3 and a4. However if you cut
and paste the same command into the SCOPE Collections tab, your results
would include a1, a2, a3, and a4, because the SCOPE interface uses the top-
level database and searches the entire hierarchy.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 147
Chapter 5: Specifying Constraints Using Collections
Top
B
a1
a2 a4 a3
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
148 December 2015
Using Collections Chapter 5: Specifying Constraints
The software saves the collection information in the constraint file for
the project.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 149
Chapter 5: Specifying Constraints Using Collections
– Specify the rest of the constraint as usual. The software applies the
constraint to all the objects in the collection.
For details of the syntax for the commands described here, refer to Collec-
tions, on page 169 in the Reference Manual.
A collection can consist of individual objects, Tcl lists (which can consist
of a single element), or other collections. You can embed the Tcl find and
expand commands in the set command to locate objects for the collection
(see Using the Tcl Find Command to Define Collections, on page 141
and Specifying Search Patterns for Tcl find, on page 138). The following
example creates a collection called my_collection which consists of all the
modules (views) found by the embedded find command:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
150 December 2015
Using Collections Chapter 5: Specifying Constraints
– Create the collection with one of the operator commands from this
table:
Once you have created a collection, you can do various operations on the
objects in the collection (see Viewing and Manipulating Collections with Tcl
Commands, on page 153), but you cannot apply constraints to the collection.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 151
Chapter 5: 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:
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
152 December 2015
Using Collections Chapter 5: Specifying Constraints
Make sure that you include extra curly braces {}, as shown below:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 153
Chapter 5: Specifying Constraints Using Collections
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:
{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 156.
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]}
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
154 December 2015
Using Collections Chapter 5: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 155
Chapter 5: Specifying Constraints Using Collections
{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:
This returns the following, which shows that the terminal (pin) has been
converted to the owning instance:
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
156 December 2015
Converting SDC to FDC Chapter 5: Specifying Constraints
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 FDC Constraints, on page 146.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 157
Chapter 5: Specifying Constraints Converting SDC to FDC
Note: Since the basic Synplify product does not have a Tcl window, you must
run sdc2fdc from a command shell in batch mode. The syntax is:
For details about the translated files and troubleshooting guidelines, see
sdc2fdc Conversion, on page 149.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
158 December 2015
Using the SCOPE Editor (Legacy) Chapter 5: Specifying Constraints
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).
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 159
Chapter 5: Specifying Constraints Using the SCOPE Editor (Legacy)
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
160 December 2015
Using the SCOPE Editor (Legacy) Chapter 5: Specifying Constraints
The tool also lets you add constraints automatically. For information about
auto constraints, see Using Auto Constraints, on page 295.
1. Click the appropriate tab at the bottom of the window to enter the kind
of constraint you want to create:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 161
Chapter 5: Specifying Constraints Using the SCOPE Editor (Legacy)
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 52 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 62.
The SCOPE GUI is much easier to use, and you can define various timing
constraints in it. For the equivalent Tcl syntax, see Chapter 2, Tcl Commands
in the Reference Manual. SeeLO the following for different timing constraints:
• Entering Default Constraints, on page 163
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
162 December 2015
Using the SCOPE Editor (Legacy) Chapter 5: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 163
Chapter 5: Specifying Constraints Using the SCOPE Editor (Legacy)
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
164 December 2015
Using the SCOPE Editor (Legacy) Chapter 5: 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 Auto
Constraints, on page 295), 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 166
• Constraining Clock Enable Paths, on page 169
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 165
Chapter 5: Specifying Constraints Using the SCOPE Editor (Legacy)
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 171 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:
A B
Logic
clkA C
clkB
If clkA is ... And clkB is ... The effect for logic C is ...
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
166 December 2015
Using the SCOPE Editor (Legacy) Chapter 5: Specifying Constraints
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 167
Chapter 5: Specifying Constraints Using the SCOPE Editor (Legacy)
Note: This method is often used for designs that have an enable signal
and a global clock, and where paths need to take longer than one clock
cycle. The registers in the design are actually connected to the global
clock; however, the tool treats the registers as having a virtual clock at
the frequency of the enable signal.
Using this method to constrain paths for technologies with clock buffer
delays requires careful analysis with the Timing Analysis Reports (STA).
The virtual clock does not include clock buffer delays. However, non-
virtual clocks that pass through clock buffers do include clock buffer
delays. The register that generates the enable signal is on the non-
virtual clock domain, whereas the registers connected to the enable
signal are on the virtual clock domain. Timing analysis shows that the
enable signal is on the path between the non-virtual and virtual clock
domains. For the actual design, the enable signal is on a path in the
non-virtual clock domain. Any paths between virtual and non-virtual
clocks are reported with a clock buffer delay on the non-virtual clock.
This may result in the critical path reporting negative slack.
LO
In the following example, the path comes from a register on a non-
virtual clock and goes to a register on a virtual clock.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
168 December 2015
Using the SCOPE Editor (Legacy) Chapter 5: 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.
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 169
Chapter 5: Specifying Constraints Using the SCOPE Editor (Legacy)
slowing down the clock frequency. If you slow down the clock frequency, it
affects all other registers driven by the clock, and can result in longer run
times as the tool tries to optimize a non-critical path.
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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
170 December 2015
Using the SCOPE Editor (Legacy) Chapter 5: Specifying Constraints
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 © 2015 Synopsys, Inc.
December 2015 171
Chapter 5: Specifying Constraints Using the SCOPE Editor (Legacy)
– Make sure that unrelated clocks are in different clock groups. If you
do not, the software calculates timing paths between unrelated clocks
in the same clock group, instead of treating them as false paths.
– Input and output ports that belong to the System clock domain are
considered a part of every clock group and will be timed. See Defining
Input and Output Constraints (Legacy), on page 172 for more
information.
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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
172 December 2015
Using the SCOPE Editor (Legacy) Chapter 5: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 173
Chapter 5: Specifying Constraints Using the SCOPE Editor (Legacy)
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 constraintLO on the same path
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
174 December 2015
Using the SCOPE Editor (Legacy) Chapter 5: Specifying Constraints
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 175
Chapter 5: Specifying Constraints Using the SCOPE Editor (Legacy)
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
176 December 2015
CHAPTER 6
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 178
• Checking Log File Results, on page 183
• Handling Messages, on page 197
• Using Continue on Error, on page 207
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 177
Chapter 6: Synthesizing and Analyzing the Results 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
178 December 2015
Synthesizing Your Design Chapter 6: Synthesizing and Analyzing the Results
• 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 180.
• 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 to be run again.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 179
Chapter 6: Synthesizing and Analyzing the Results 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
180 December 2015
Synthesizing Your Design Chapter 6: Synthesizing and Analyzing the Results
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 181
Chapter 6: Synthesizing and Analyzing the Results Synthesizing Your Design
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
182 December 2015
Checking Log File Results Chapter 6: Synthesizing and Analyzing the Results
If you only want to check a few critical performance criteria, it is easier to use
the Watch Window (see Using the Watch Window, on page 193) instead of the
log file. For details, read through the log file.
1. To open the log file, use one of these listed methods, according to the
format you want:
The log file lists the compiled files, details of the synthesis run, and
includes color-coded errors, warnings and notes, and a number of
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 183
Chapter 6: Synthesizing and Analyzing the Results Checking Log File Results
reports. For information about the reports, see Analyzing Results Using
the Log File Reports, on page 193.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
184 December 2015
Checking Log File Results Chapter 6: Synthesizing and Analyzing the Results
– To search the body of the log file, use Control-f or the Edit->Find
command. See Viewing and Working with the Log File, on page 183
for details.
– To add bookmarks or for general information about working in an
editing window, see Editing HDL Source Files with the Built-in
Text Editor, on page 34.
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 synthesis products also let you
generate a report for a path between any two designated points, see
Generating Custom Timing Reports with STA, on page 285. The
following table lists places in the log file you can use when searching for
information.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 185
Chapter 6: Synthesizing and Analyzing the Results Checking Log File Results
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 197 for information. Notes are
informational and usually can be ignored. For details about
crossprobing and fixing errors, see Handling Warnings, on page 207,
Editing HDL Source Files with the Built-in Text Editor, on page 34, and
Crossprobing from the Text Editor Window, on page 250.
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.
4. 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 34.
5. 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.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
186 December 2015
Checking Log File Results Chapter 6: Synthesizing and Analyzing the Results
Timing reports Click Detailed Report or Timing Report View in the Timing
Summary panel.
Log at different stages Click Detailed Report in the Run Status panel.
Area reports Click Detailed Report or Hierarchical Area Report in the
Area Summary panel.
High reliability reports Click Detailed Report in the High Reliability Report panel.
Optimizations Click Detailed Report in the Optimizations Summary
panel.
The Detailed Report links display parts of the log file, and the other links
go to special view windows for different kinds of reports. See The Project
Results View, on page 40 for more information about different reports
that can be accessed from the Project Results view.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 187
Chapter 6: Synthesizing and Analyzing the Results Checking Log File Results
The numbers of notes, errors, and warnings reported in the Run Status
panel might not match the numbers displayed in the Messages
window if the design contains compile points. The numbers reported
are for the top level.
– Click the Messages tab at the bottom of the Project view to open a
window with a list of all the notes, errors and warnings. See Checking
Results in the Message Viewer, on page 197 for more information
about using this window.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
188 December 2015
Checking Log File Results Chapter 6: Synthesizing and Analyzing the Results
– Open the log file, locate the message, and click the message ID. The
log file includes all the results from the run, so it could be harder to
locate the message you want.
1. Select Options->Project Status Page Location from the Project menu and
select the implementation for which you want the reports.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 189
Chapter 6: Synthesizing and Analyzing the Results Checking Log File Results
2. Set the location for storing the project status page, using either of these
methods:
– Enable Save to different location and specify a path for the location of the
status page. This allows you to save the status reports in different
locations.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
190 December 2015
Checking Log File Results Chapter 6: Synthesizing and Analyzing the Results
If you use this option, you must restart the tool the first time, since
the environment variable is not applied dynamically. This option
always saves the status report to the location indicated by the
variable.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 191
Chapter 6: Synthesizing and Analyzing the Results Checking Log File Results
3. Click OK.
4. Run synthesis.
The status reports are saved to the location you specified for your
project. For example:
C:\synResults\tutorial\rev_1
5. Access the location you set up from any browser on a mobile device (for
example, a smart phone or tablet).
– Access the location you set in the previous steps.
– Open the projectName/implementationName/index.html file with any
browser.
LO
Your company may need to set up a location on its internal internet,
where the status reports can be saved and later accessed with a URL
address.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
192 December 2015
Checking Log File Results Chapter 6: Synthesizing and Analyzing the Results
3. To check logic resources, check the Resource Usage Report section at the
end of the log file, as described in Checking Resource Usage, on
page 195.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 193
Chapter 6: Synthesizing and Analyzing the Results Checking Log File Results
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.
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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
194 December 2015
Checking Log File Results Chapter 6: Synthesizing and Analyzing the Results
1. Go to the Resource Usage report at the end of the log file (srr).
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 195
Chapter 6: Synthesizing and Analyzing the Results Checking Log File Results
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
196 December 2015
Handling Messages Chapter 6: Synthesizing and Analyzing the Results
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 197
• Filtering Messages in the Message Viewer, on page 199
• Filtering Messages from the Command Line, on page 201
• Automating Message Filtering with a Tcl Script, on page 202
• Log File Message Controls, on page 204
• Handling Warnings, on page 207
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 © 2015 Synopsys, Inc.
December 2015 197
Chapter 6: Synthesizing and Analyzing the Results 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,
and the Shift-F3 key combination to search backwards.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
198 December 2015
Handling Messages Chapter 6: Synthesizing and Analyzing the Results
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 © 2015 Synopsys, Inc.
December 2015 199
Chapter 6: Synthesizing and Analyzing the Results 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
project file. The following
LO is an example of the information in this file:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
200 December 2015
Handling Messages Chapter 6: Synthesizing and Analyzing the Results
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"
– 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, on page 39 in the
Command 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
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 201
Chapter 6: Synthesizing and Analyzing the Results Handling Messages
1. Create a message filter file like the following. (See Filtering Messages in
the Message Viewer, on page 199 or Filtering Messages from the
Command Line, on page 201 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 481.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
202 December 2015
Handling Messages Chapter 6: Synthesizing and Analyzing the Results
– 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.
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 203
Chapter 6: Synthesizing and Analyzing the Results Handling Messages
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
204 December 2015
Handling Messages Chapter 6: Synthesizing and Analyzing the Results
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.
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
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 205
Chapter 6: Synthesizing and Analyzing the Results Handling Messages
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.
messagefilter.txt File
A messagefilter.txt file in the implementation/syntmp directory lists any changes
made to message priority or suppression through the Log File Filter dialog box.
This file, which is only generated when changes are made to the default
LO
status of a message, can be accessed outside of the GUI without consuming a
license.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
206 December 2015
Using Continue on Error Chapter 6: Synthesizing and Analyzing the Results
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.
The following procedure describes the details, which varies according to the
synthesis tool used.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 207
Chapter 6: Synthesizing and Analyzing the Results Using Continue on Error
The Synplify Pro CoE functionality does not extend to ignoring compiler
errors, but only affects technology mapping. You must identify and fix
compiler errors before running synthesis with CoE.
3. Synthesize the design. With Synplify Pro logic synthesis, the CoE
functionality only affects the mapper, not the compiler.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
208 December 2015
Using Continue on Error Chapter 6: Synthesizing and Analyzing the Results
The tool reports warnings like the following in the log file for the
ignored errors:
4. Identify and fix errors before re-synthesizing the design. Designate the
error modules as compile points and re-run synthesis.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 209
Chapter 6: Synthesizing and Analyzing the Results Using Continue on Error
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
210 December 2015
CHAPTER 7
This chapter describes how to analyze logic in the HDL Analyst and FSM
Viewer.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 211
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Working in the Schematic Views
For detailed descriptions of these views, see the HDL Analyst Tool section of
the Reference Manual. This section describes basic procedures you use in the
RTL and Technology views. The information is organized into these topics:
• Differentiating Between the HDL Analyst Views, on page 213
• Opening the Views, on page 213
• Viewing Object Properties, on page 215
• Selecting Objects in the RTL/Technology Views, on page 220
• Working with Multisheet Schematics, on page 221
• Moving Between Views in a Schematic Window, on page 222
• Setting Schematic View Preferences, on page 223
• Managing Windows, on page 225
For information on specific tasks like analyzing critical paths, see the
following sections:
• Exploring Object Hierarchy by Pushing/Popping, on page 227
• Exploring Object Hierarchy of Transparent Instances, on page 233
• Browsing to Find Objects in HDL Analyst Views, on page 234
• Crossprobing, on page 247
• Analyzing With the HDL Analyst Tool, on page 255
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
212 December 2015
Working in the Schematic Views Chapter 7: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 213
Chapter 7: 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
contains additional information. See Hierarchy Browser, on page 62 in
the Reference Manual for a description of the Hierarchy Browser.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
214 December 2015
Working in the Schematic Views Chapter 7: Analyzing with HDL Analyst and FSM Viewer
RTL View
Technology View
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 © 2015 Synopsys, Inc.
December 2015 215
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Working in the Schematic Views
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
216 December 2015
Working in the Schematic Views Chapter 7: Analyzing with HDL Analyst and FSM Viewer
Slow property
The New property helps with debugging because it quickly identifies 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.
The next 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 © 2015 Synopsys, Inc.
December 2015 217
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Working in the Schematic Views
In the following example, the 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
LOW = 0) (
module sub #(parameter
input clk,
input [W-1:0] din,
output logic [W-1:0] dout);
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
218 December 2015
Working in the Schematic Views Chapter 7: Analyzing with HDL Analyst and FSM Viewer
always@(posedge clk)
begin
dout <= din;
end
endmodule
RTL View
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 219
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Working in the Schematic Views
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 247 for more information about crossprobing.
Some commands affect selection by adding to the selected set of objects: the
LO
Expand commands, the Select All commands, and the Select Net Driver and Select
Net Instances commands.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
220 December 2015
Working in the Schematic Views Chapter 7: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 221
Chapter 7: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
222 December 2015
Working in the Schematic Views Chapter 7: Analyzing with HDL Analyst and FSM Viewer
2. To move forward again, click the Forward icon or draw the appropriate
mouse stroke.
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 © 2015 Synopsys, Inc.
December 2015 223
Chapter 7: 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.
The software writes the preferences you set to the ini file, and they
remain in effect until you
LO change them.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
224 December 2015
Working in the Schematic Views Chapter 7: 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 222.
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 © 2015 Synopsys, Inc.
December 2015 225
Chapter 7: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
226 December 2015
Exploring Design Hierarchy Chapter 7: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 227
Chapter 7: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
228 December 2015
Exploring Design Hierarchy Chapter 7: 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 © 2015 Synopsys, Inc.
December 2015 229
Chapter 7: 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 272. If you push into a state machine from the
Technology view, you see the underlying logic.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
230 December 2015
Exploring Design Hierarchy Chapter 7: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 231
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Exploring Design Hierarchy
The software moves up a level, and displays the next level of hierarchy.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
232 December 2015
Exploring Design Hierarchy Chapter 7: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 233
Chapter 7: 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 234
• Using Find for Hierarchical and Restricted Searches, on page 236
• Using Wildcards with the Find Command, on page 239
• Using Find to Search the Output Netlist, on page 244
For information about the Tcl Find command, which you use to locate objects,
and create collections, see find, on page 90 in the Reference 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
234 December 2015
Finding Objects Chapter 7: 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 © 2015 Synopsys, Inc.
December 2015 235
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Finding Objects
– Click the arrow to move the selected objects over to the box on the
right.
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 256 and Filtering
Schematics, on page 259 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
schematic sheet. Select all the objects on one sheet and filter the view.
Continue with the procedure.
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.
LO box.
3. Open the Object Query dialog
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
236 December 2015
Finding Objects Chapter 7: Analyzing with HDL Analyst and FSM Viewer
– Do one of the following: right click in the RTL or Technology view and
select Find from the popup menu, press Ctrl-f, or click the Find icon
( ).
– Reposition the dialog box so you can see both your schematic and the
dialog box.
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.
The range setting is especially important when you use wildcards. See
Effect of Hierarchy and Range on Wildcard Searches, on page 239 for
details. Current Level Only or Current Level & Below are useful for searching
filtered schematics or critical path schematics.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 237
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Finding Objects
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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
238 December 2015
Finding Objects Chapter 7: Analyzing with HDL Analyst and FSM Viewer
– 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 constraint 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 164 of the Reference
Manual.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 239
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Finding Objects
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. If you use the *.*
pattern with Current Level, the software matches non-hierarchical names
at the current level that include a dot.
• Search range
The scope of the search determines the starting point for the searches.
Some times the starting point might make it appear as if the wildcards
cross hierarchical boundaries. If you are at 2A in the following figure
and the scope of the search is set to Current Level and Below, separate
searches start at 2A, 3A1, and 3A2. Each search does not cross hierar-
chical boundaries. If the scope of the search is Entire Design, the wildcard
searches run from each hierarchical point (1, 2A, 2B, 3A1, 3A2, 3B1,
3B2, and 3B3). The result of an asterisk search (*) with Entire Design is a
list of all matches in the design, regardless of the current level.
1 Entire Design
Current Current
2A 2B
Level and Level
Below
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
240 December 2015
Finding Objects Chapter 7: 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 239 and Wildcard
Search Examples, on page 241 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.
2A 2B
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 241
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Finding Objects
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
242 December 2015
Finding Objects Chapter 7: 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 © 2015 Synopsys, Inc.
December 2015 243
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Finding Objects
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
the name of the object you want to find.
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.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
244 December 2015
Finding Objects Chapter 7: Analyzing with HDL Analyst and FSM Viewer
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
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 245
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Finding Objects
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
246 December 2015
Crossprobing Chapter 7: 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 247
• Crossprobing from the RTL/Technology View, on page 248
• Crossprobing from the Text Editor Window, on page 250
• Crossprobing from the Tcl Script Window, on page 253
• Crossprobing from the FSM Viewer, on page 253
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 247
Chapter 7: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
248 December 2015
Crossprobing Chapter 7: 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 © 2015 Synopsys, Inc.
December 2015 249
Chapter 7: 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
250 December 2015
Crossprobing Chapter 7: 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 © 2015 Synopsys, Inc.
December 2015 251
Chapter 7: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
252 December 2015
Crossprobing Chapter 7: 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 © 2015 Synopsys, Inc.
December 2015 253
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Crossprobing
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
254 December 2015
Analyzing With the HDL Analyst Tool Chapter 7: 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 256
• Filtering Schematics, on page 259
• Expanding Pin and Net Logic, on page 261
• Expanding and Viewing Connections, on page 265
• Flattening Schematic Hierarchy, on page 266
• Minimizing Memory Usage While Analyzing Designs, on page 271
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 212
• Exploring Design Hierarchy, on page 226
• Finding Objects, on page 234
• Crossprobing, on page 247
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 255
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
256 December 2015
Analyzing With the HDL Analyst Tool Chapter 7: 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 © 2015 Synopsys, Inc.
December 2015 257
Chapter 7: 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 227 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 266 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 266 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
258 December 2015
Analyzing With the HDL Analyst Tool Chapter 7: 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 © 2015 Synopsys, Inc.
December 2015 259
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
– Press F12.
– Press the right mouse button and draw a narrow V-shaped mouse
stroke in the schematic window. See Help->Mouse Stroke Tutor for
details.
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 102 and Trans-
parent and Opaque Display of Hierarchical Instances, on page 107in 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 256, 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.
– To temporarily display a pin name, move the cursor over the pin. The
name is displayed asLO 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
260 December 2015
Analyzing With the HDL Analyst Tool Chapter 7: 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 261
and Expanding and Viewing Connections, on
page 265
Filter further Select objects and filter again
Find objects See Finding Objects, on page 234
Flatten, or hide and flatten See Flattening Schematic Hierarchy, on
page 266. You can hide transparent or opaque
instances.
Crossprobe from filtered See Crossprobing from the RTL/Technology
view View, on page 248
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 259 and Flattening Schematic Hierarchy, on page 266 for details.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 261
Chapter 7: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
262 December 2015
Analyzing With the HDL Analyst Tool Chapter 7: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 263
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
264 December 2015
Analyzing With the HDL Analyst Tool Chapter 7: 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 © 2015 Synopsys, Inc.
December 2015 265
Chapter 7: 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
266 December 2015
Analyzing With the HDL Analyst Tool Chapter 7: 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 259) 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 © 2015 Synopsys, Inc.
December 2015 267
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
Opaque hierarchical
instance is unaffected.
Flatten
Schematic
flattens
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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
268 December 2015
Analyzing With the HDL Analyst Tool Chapter 7: 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 © 2015 Synopsys, Inc.
December 2015 269
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Analyzing With the HDL Analyst Tool
Dissolved logic for prgmcntr shown nested when started from filtered view
Dissolve
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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
270 December 2015
Analyzing With the HDL Analyst Tool Chapter 7: Analyzing with HDL Analyst and FSM Viewer
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 271
Chapter 7: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
272 December 2015
Using the FSM Viewer Chapter 7: Analyzing with HDL Analyst and FSM Viewer
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 © 2015 Synopsys, Inc.
December 2015 273
Chapter 7: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
274 December 2015
Using the FSM Viewer Chapter 7: 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 © 2015 Synopsys, Inc.
December 2015 275
Chapter 7: Analyzing with HDL Analyst and FSM Viewer Using the FSM Viewer
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
276 December 2015
CHAPTER 8
Analyzing Timing
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 277
Chapter 8: Analyzing Timing Analyzing Timing in Schematic Views
This displays the timing numbers for all instances in a Technology view.
It shows the following:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
278 December 2015
Analyzing Timing in Schematic Views Chapter 8: 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 © 2015 Synopsys, Inc.
December 2015 279
Chapter 8: 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 101 in the Command Reference
Manual for a list of properties. For information about the find
command, see find, on page 90 in the Command Reference Manual.
– Precede the property name with the @ symbol.
For example to find fanouts larger than 60, specify find -filter {@fanout>=60}.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
280 December 2015
Analyzing Timing in Schematic Views Chapter 8: 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 259, Expanding Pin and Net Logic, on
page 261 and Expanding and Viewing Connections, on page 265.
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 © 2015 Synopsys, Inc.
December 2015 281
Chapter 8: 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.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
282 December 2015
Analyzing Timing in Schematic Views Chapter 8: Analyzing Timing
3. Use the timing numbers displayed above each instance to analyze the
path. If no numbers are displayed, enable HDL Analyst->Show Timing
Information. Interpret the numbers as follows:
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 284.
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 © 2015 Synopsys, Inc.
December 2015 283
Chapter 8: 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 340), or resource
sharing (Sharing Resources, on page 356).
– Modifying the sourceLO
code.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
284 December 2015
Generating Custom Timing Reports with STA Chapter 8: Analyzing Timing
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 285
Chapter 8: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
286 December 2015
Generating Custom Timing Reports with STA Chapter 8: Analyzing Timing
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 287
Chapter 8: 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:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
288 December 2015
Using Analysis Design Constraints Chapter 8: Analyzing Timing
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 289
Chapter 8: 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 constraints.
LO
3. Type in the constraints you want and save the file. Remember the
following when you enter the constraints:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
290 December 2015
Using Analysis Design Constraints Chapter 8: Analyzing Timing
– Keep in mind that the original fdc 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 203 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 294.
– 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 © 2015 Synopsys, Inc.
December 2015 291
Chapter 8: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
292 December 2015
Using Analysis Design Constraints Chapter 8: 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 fdc 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 293
Chapter 8: 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 these constraints (see
Creating an ADC File, on page 290 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, then
the standalone timing analyzer does not automatically treat paths from the
replicated 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]}}
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
294 December 2015
Using Auto Constraints Chapter 8: 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 © 2015 Synopsys, Inc.
December 2015 295
Chapter 8: 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.
The software writes out the generated constraints in a file called AutoCon-
straint_designName.sdc in the run directory. It also forward-annotates
these constraints to the place-and-route tools.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
296 December 2015
Using Auto Constraints Chapter 8: 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 © 2015 Synopsys, Inc.
December 2015 297
Chapter 8: Analyzing Timing Using Auto Constraints
The software also generates a constraint file in the run directory called
AutoConstraint_designName.sdc, which contains the auto constraints generated.
The following is an example of an auto constraint file:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
298 December 2015
Using Auto Constraints Chapter 8: Analyzing Timing
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
optimization results vary, there is no guarantee that the final results will stay
the same.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 299
Chapter 8: Analyzing Timing Using Auto Constraints
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
300 December 2015
CHAPTER 9
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 301
Chapter 9: 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
302 December 2015
Defining Black Boxes for Synthesis Chapter 9: 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 © 2015 Synopsys, Inc.
December 2015 303
Chapter 9: 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 306 and Adding Other Black Box
Attributes, on page 310.
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;
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
304 December 2015
Defining Black Boxes for Synthesis Chapter 9: Inferring High-Level Objects
library synplify;
use synplify.attributes.all;
...
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 305
Chapter 9: 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 306 and Adding Other Black Box Attributes, on
page 310.
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.
2. Determine the kind of constraint for the information you want to specify:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
306 December 2015
Defining Black Boxes for Synthesis Chapter 9: Inferring High-Level Objects
library synplify;
use synplify.attributes.all;
In VHDL, you must use the predefined attributes package. For each
directive, there are ten predeclared constraints in the attributes
package, from directive_name1 to directive_name10. If you need more
constraints, declare the additional constraints using integers greater
than 10. For example:
attribute syn_tco11 : string;
attribute syn_tco12 : string;
– Define the constraints in either of these ways:
VHDL attribute attributeName<n> : "att_value"
syntax
Verilog-style attribute attributeName<n> of bbox_name :
notation component is "att_value"
The following table shows the appropriate syntax for att_value. See the
Attribute Reference Manual for complete syntax information.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 307
Chapter 9: Inferring High-Level Objects Defining Black Boxes for Synthesis
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
308 December 2015
Defining Black Boxes for Synthesis Chapter 9: Inferring High-Level Objects
– In the Attribute column, type the name of the timing attribute, followed
by the numerical suffix, as shown in the following table. You cannot
select timing attributes from the pull-down list.
– In the Value column, type the appropriate value syntax, as shown in
the table in step 3.
– Save the constraint file, and add it to the project.
The resulting constraint file contains syntax like this:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 309
Chapter 9: 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.
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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
310 December 2015
Defining State Machines for Synthesis Chapter 9: Inferring High-Level Objects
For alternative ways to define state machines, see Defining State Machines
for Synthesis, on page 311.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 311
Chapter 9: Inferring High-Level Objects Defining State Machines for Synthesis
• Specify explicit state values for states with parameter or ‘define state-
ments. This is an example of a parameter statement that sets the current
state to 2’h2:
If you use `define to assign the names, you cannot reuse a state name
because it has already been used in the global name space. To reuse the
same names in this scenario, you have to use `undef and `define state-
ments between modules to redefine the names. This method makes it
difficult to probe the internal values of FSM state buses from a
testbench and compare them to the state names.
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-
LOstatements are preferable.
else statements, but case
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
312 December 2015
Defining State Machines for Synthesis Chapter 9: Inferring High-Level Objects
• 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
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.
• 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.
• To choose an encoding style, attach the syn_encoding attribute to the
enumerated type. The software automatically encodes your state
machine with the style you specified.
The following steps show you how to manually attach attributes to define
FSMs for extraction.
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
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 313
Chapter 9: Inferring High-Level Objects Defining State Machines for Synthesis
2. To determine the encoding style 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 the syn_encoding setting.
The different values for this attribute are briefly described here; refer to
the Attributes Reference manual for complete details.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
314 December 2015
Defining State Machines for Synthesis Chapter 9: Inferring High-Level Objects
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 315
Chapter 9: Inferring High-Level Objects Specifying Safe FSMs
The following procedures describe ways to ensure high reliability and fault
tolerance for FSMs:
• Implementing Safe Case FSMs, on page 316
See Vendor Support for Safe FSMs, on page 316 for a list.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
316 December 2015
Specifying Safe FSMs Chapter 9: Inferring High-Level Objects
The high reliability safe case option turns off sequential optimizations
that would otherwise optimize away some FSM states.
For details about this directive, see syn_safe_case, on page 195 in the
Attribute Reference Manual.
You must enable the FSM Compiler option to ensure that the syn_encoding
attribute takes affect. This overrides the default FSM compiler encoding
for the state machine.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 317
Chapter 9: Inferring High-Level Objects Specifying Safe FSMs
See Error Monitoring Example with FSM, on page 318 for details.
Note: You can optionally specify the error monitoring Tcl commands for
safe FSM.
1. Enable Preserve and Decode Unreachable States on the High Reliability tab of
the Implementation Options panel for the state machine.
2. On the instance:
– syn_create_err_net {–name {error_flag} –inst {i:state[1:3]}}
– syn_connect -from {{n:error_flag} -to {t:EMIP.err_port}}
In this example, the Preserve and Decode Unreachable States option is enabled on
the High Reliability tab of the Implementation Options panel for the compiler to
implement recovery logic by inferring the stateerrordetect IP. The Tcl commands
connect the output of this IP to the EMP port for error monitoring of the FSM
LO
to occur.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
318 December 2015
Specifying Safe FSMs Chapter 9: Inferring High-Level Objects
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 319
Chapter 9: Inferring High-Level Objects Automatic RAM Inference
For further details about RAM inference, see Inferring Block RAM, on
page 323.
Block RAM
The synthesis software can implement the block RAM it infers using different
types of block RAM and different block RAM modes.
The synthesis tool can infer the following kinds of block RAM:
• Single-port RAM
• Dual-port RAM LO
Based on how the read and write ports are used, dual-port RAM can be
further classified as follows:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
320 December 2015
Automatic RAM Inference Chapter 9: Inferring High-Level Objects
– Simple dual-port
– Dual-port
– True dual-port
The block RAM operating modes are described in the following table:
RAM Attributes
In addition to the automatic inference by the tool, you can specify RAM infer-
ence with the syn_ramstyle and syn_rw_conflict_logic attributes. The syn_ramstyle
attribute explicitly specifies the kind of RAM you want, while the syn_rw_con-
flict_logic attribute specifies that you want to infer a RAM, but leave it to the
synthesis tools to select the kind of RAM, as appropriate.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 321
Chapter 9: Inferring High-Level Objects Automatic RAM Inference
If you specify the syn_rw_conflict_logic attribute, the synthesis tools can infer
block RAM, depending on the design. If the tool does infer block RAM, it does
not insert bypass logic around the block RAM to account for read-write
conflicts and prevent simulation mismatches. In this way its functionality is
the same as syn_ramstyle with no_rw_check, which does not insert bypass logic
either.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
322 December 2015
Automatic RAM Inference Chapter 9: Inferring High-Level Objects
SCOPE
For the syn_ramstyle attribute, set the attribute on the RAM register memory
signal, mem, as shown below. For the syn_rw_conflict_logic attribute, set it on
the instance or set it globally. The attributes are written out to a constraints
file using the syntax described in the next section.
Constraints File
In the fdc Tcl constraints file written out from the SCOPE interface, the
syn_ramstyle attribute is attached to the register mem signal of the RAM, and
the syn_rw_conflict_logic attribute is attached to the view, as shown below:
For the syn_rw_conflict_logic attribute, you can also specify it globally, as well as
on individual modules and instances:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 323
Chapter 9: Inferring High-Level Objects Automatic RAM Inference
1. Set up the RAM HDL code in accordance with the following guidelines:
– The RAM must be synchronous. It must not have any asynchronous
control signals connected. The synthesis tools do not infer
asynchronous block RAM.
– You must register either the read address or the output.
– The RAMs must not be too small, as the tool does not infer block RAM
for small-sized RAMs. The size threshold varies with the target
technology.
2. Set up the clocks and read and write ports to infer the kind of RAM you
want. The following table summarizes how to set up the RAM in the RTL:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
324 December 2015
Automatic RAM Inference Chapter 9: Inferring High-Level Objects
The tool first compiles the design and infers the RAMs, which it
represents as abstract technology-independent primitives like RAM1 and
RAM2. You can view these RAMs in the RTL view, which is a graphic,
technology-independent representation of your design after compilation:
It is important that the compiler first infers the RAM, because the tool
only maps the inferred RAM primitives to technology-specific block RAM.
Any RAM that is not inferred is mapped to registers. You can view the
mapped RAMs in the Technology view, which is a graphic representation
of your design after synthesis, and shows the design mapped to
technology-specific resources.
The synthesis tools map SDP RAMs to RAM primitives in the architecture. A
unique set of addresses, clocks, and enable signals are used for each port.
The synthesis tool might also set the RAM_MODE property on the RAM to
indicate the RAM mode.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 325
Chapter 9: Inferring High-Level Objects Automatic RAM Inference
module Read_First_RAM (
read_clk,
read_address,
data_in,
write_clk,
rd_en,
wr_en,
reg_en,
write_address,
data_out);
parameter address_width = 8;
parameter data_width = 32;
parameter depth = 256;
input read_clk, write_clk;
input rd_en;
input wr_en;
input reg_en;
input [address_width-1:0] read_address, write_address;
input [data_width-1:0] data_in;
output [data_width-1:0] data_out;
//wire [data_width-1:0] data_out;
reg [data_width-1:0] mem [depth -1 : 0]/* synthesis
syn_ramstyle="no_rw_check"
*/;
reg [data_width-1:0] data_out;
always @(posedge write_clk)
if(wr_en)
mem[write_address] <= data_in;
always @(posedge read_clk)
if(rd_en)
data_out <= mem[read_address];
endmodule
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
326 December 2015
Automatic RAM Inference Chapter 9: Inferring High-Level Objects
To infer dual-port block RAM, the RAM must follow the coding rules
described below.
• The read and write addresses must be different
• The read and write clocks can be different
• The enable signals can be different
The synthesis tool also sets the RAM_MODE property on the RAM to indicate
the RAM mode.
The compiler infers TDP block RAM based on the write processes. The imple-
mentation depends on whether the write enables use one process or multiple
processes:
• When all the writes are made in one process, there are no address
conflicts, and the compiler generates an nram that is later mapped to
either true dual-port block RAM. The following coding results in an nram
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 327
Chapter 9: Inferring High-Level Objects Automatic RAM Inference
with two write ports, one with write address waddr0 and the other with
write address waddr1:
In the following case, the compiler infers an nram with two write ports
because the syn_ramstyle attribute is specified. The writes associated with
waddr0 and waddr1 are we1 and we2, respectively.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
328 December 2015
Initializing RAMs Chapter 9: Inferring High-Level Objects
Initializing RAMs
You can specify startup values for RAMs and pass them on to the place-and-
route tools. See the following topics for ways to set the initial values:
• Initializing RAMs in Verilog, on page 329
• Initializing RAMs in VHDL, on page 330
• Initializing RAMs with $readmemb and $readmemh, on page 333
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 618in the Reference Manual for details of the formats for
these files.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 329
Chapter 9: Inferring High-Level Objects Initializing RAMs
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
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;
LO
dout : out std_logic_vector(26 downto 0));
end;
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
330 December 2015
Initializing RAMs Chapter 9: Inferring High-Level Objects
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 331
Chapter 9: Inferring High-Level Objects Initializing RAMs
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
mem(to_integer(waddr1)) := data_a;
end if;
end if;
end process WRITE1_RAM;
end rtl;
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
332 December 2015
Initializing RAMs Chapter 9: Inferring High-Level Objects
Use $readmemb for a binary file and $readmemh for a hex file. For details
about the syntax, see Initial Values for RAMs, on page 615 in the Refer-
ence Manual.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 333
Chapter 9: Inferring High-Level Objects Initializing RAMs
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
334 December 2015
CHAPTER 10
This chapter covers techniques for optimizing your design using built-in tools
or attributes. For vendor-specific optimizations, see Chapter 15, Optimizing
for Microsemi Designs. It describes the following:
• Tips for Optimization, on page 336
• Retiming, on page 340
• Preserving Objects from Being Optimized Away, on page 347
• Optimizing Fanout, on page 352
• Sharing Resources, on page 356
• Inserting I/Os, on page 357
• Optimizing State Machines, on page 358
• Inserting Probes, on page 366
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 335
Chapter 10: Specifying Design-Level Optimizations Tips for Optimization
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
336 December 2015
Tips for Optimization Chapter 10: Specifying Design-Level Optimizations
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 337
Chapter 10: Specifying Design-Level Optimizations Tips for Optimization
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
338 December 2015
Tips for Optimization Chapter 10: 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 © 2015 Synopsys, Inc.
December 2015 339
Chapter 10: Specifying Design-Level Optimizations Retiming
Retiming
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 regis-
ters 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
340 December 2015
Retiming Chapter 10: Specifying Design-Level Optimizations
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 341
Chapter 10: 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 344 for details.
After the LUTs are mapped, the software moves registers to optimize
timing. See Retiming Example, on page 342 for an example. The
software honors other attributes you set, like syn_preserve, syn_useioff,
and syn_ramstyle. See How Retiming Works, on page 344 for details.
Note that the tool might retime registers associated with RAMs, DSPs,
and generated clocks, 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 343 for more information
about the report.
Retiming Example
The following example shows a design with retiming disabled and enabled.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
342 December 2015
Retiming Chapter 10: 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 © 2015 Synopsys, Inc.
December 2015 343
Chapter 10: 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 set_reg_input_delay and
set_reg_output_delay constraints. Retimed registers
affect timing constraints.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
344 December 2015
Retiming Chapter 10: 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_pipeline Automatically enabled if retiming is enabled.
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.
• Beginning with the C-2009.09-SP1 release, the behavior for retiming
unconstrained I/O pads has changed. If retiming is enabled, registers
connected to unconstrained I/O pins are not retimed by default. If you
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 345
Chapter 10: Specifying Design-Level Optimizations Retiming
want to revert back to how retiming I/O paths was previously imple-
mented, you can:
– Globally turn on the Use clock period for unconstrained IO switch from the
Constraints tab of the Implementation Options panel.
– Add constraints to all input/output ports.
– Separately constrain each I/O pin as required.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
346 December 2015
Preserving Objects from Being Optimized Away Chapter 10: Specifying Design-Level Optimizations
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 347
Chapter 10: Specifying Design-Level Optimizations Preserving Objects from Being Optimized Away
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.
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 /*synthesisLO
syn_keep = 1*/;
wire in1b /*synthesis syn_keep = 1*/;
wire in2a /*synthesis syn_keep = 1*/;
wire in2b /*synthesis syn_keep = 1 */;
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
348 December 2015
Preserving Objects from Being Optimized Away Chapter 10: Specifying Design-Level Optimizations
Setting syn_keep on the input wires ensures that the second AND gate is
preserved:
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 349
Chapter 10: Specifying Design-Level Optimizations Preserving Objects from Being Optimized Away
1. Attach the syn_hier attribute with the value you want to the module or
architecture you want to preserve.
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, on page 78 in the Attribute Reference Manual.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
350 December 2015
Preserving Objects from Being Optimized Away Chapter 10: Specifying Design-Level Optimizations
This flattens the entire netlist and does not preserve any hierarchical
boundaries. See syn_netlist_hierarchy, on page 132 in the Attribute
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 350.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 351
Chapter 10: Specifying Design-Level Optimizations Optimizing Fanout
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 Attribute Reference
Manual. This section describes the following:
• Setting Fanout Limits, on page 352
• Controlling Buffering and Replication, on page 354
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 354 for details). However,
the synthesis tool does not respect the fanout limit absolutely; it ignores
the limit if the limit imposes
LO constraints that interfere with optimization.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
352 December 2015
Optimizing Fanout Chapter 10: Specifying Design-Level Optimizations
2. For certain Microsemi technologies, you can set a global hard fanout
limit by doing the following:
– Select Project-> Implementation Options->Device and type a value for the
Fanout Guide option, as described in the previous step.
– On the same tab, check the Hard Fanout Limit option.
This makes the specified value a global hard fanout limit for the design.
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 354.
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 353
Chapter 10: Specifying Design-Level Optimizations Optimizing Fanout
You can control whether high fanout nets are buffered or replicated, using
LO
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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
354 December 2015
Optimizing Fanout Chapter 10: Specifying Design-Level Optimizations
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 355
Chapter 10: Specifying Design-Level Optimizations Sharing Resources
Sharing Resources
One of the ways to optimize area is to use resource sharing in the compiler.
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.
Compiler resource sharing is on by default. You can set it globally and then
override the global setting on individual modules
1. To disable resource sharing globally for the whole design, use one of the
methods below.
Leave the default setting to improve area; disable the option to improve
timing.
– Select Project->Implementation Options->Options, disable Resource Sharing.
Alternatively, disable 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, on page 197 of the Attribute
Reference Manual for syntax and examples.
– Edit your project file and include the following command: set_option
-resource_sharing 0
When you save the project file, it includes the Tcl set_option
-resource_sharing command.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
356 December 2015
Inserting I/Os Chapter 10: Specifying Design-Level Optimizations
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 357
Chapter 10: 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 longer to run than the FSM
Compiler.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 359
Chapter 10: Specifying Design-Level Optimizations Optimizing State Machines
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 313.
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:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
360 December 2015
Optimizing State Machines Chapter 10: 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 361
Chapter 10: Specifying Design-Level Optimizations Optimizing 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
362 December 2015
Optimizing State Machines Chapter 10: Specifying Design-Level Optimizations
3. Check the state machine in the log file, the RTL and technology views,
and the FSM viewer, which is not available to Synplify users. For
information about the FSM viewer, see Using the FSM Viewer, on
page 272.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 363
Chapter 10: Specifying Design-Level Optimizations Optimizing State Machines
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.
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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
364 December 2015
Optimizing State Machines Chapter 10: Specifying Design-Level Optimizations
For information about the FSM viewer, see Using the FSM Viewer, on
page 272.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 365
Chapter 10: Specifying Design-Level Optimizations Inserting Probes
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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
366 December 2015
Inserting Probes Chapter 10: Specifying Design-Level Optimizations
For detailed information about VHDL attributes and sample files, see the
Attribute 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 367
Chapter 10: Specifying Design-Level Optimizations Inserting Probes
– 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.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
368 December 2015
C H A P T E R 11
The following sections describe compile points and how to use them in logic
synthesis iterative flows:
• Compile Point Basics, on page 370
• Compile Point Synthesis Basics, on page 378
• Synthesizing Compile Points, on page 387
• Using Compile Points with Other Features, on page 399
• Resynthesizing Incrementally, on page 400
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 369
Chapter 11: Working with Compile Points Compile Point Basics
See the following topics for some details about compile points:
• Advantages of Compile Point Design, on page 370
• Manual Compile Points, on page 372
• Nested Compile Points, on page 373
• Compile Point Types, on page 373
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
370 December 2015
Compile Point Basics Chapter 11: Working with Compile Points
what you have. You can also customize the compile point type settings
for individual compile points to take advantage of cross-boundary
optimizations.
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 384 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 399.
• 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 400.
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 371
Chapter 11: Working with Compile Points Compile Point Basics
• 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.
• 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
372 December 2015
Compile Point Basics Chapter 11: 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 © 2015 Synopsys, Inc.
December 2015 373
Chapter 11: Working with Compile Points Compile Point Basics
These are descriptions of the soft, hard, locked, locked,partition, and black_box
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. Unless they are at the leaf level, soft compile
points are not processed in parallel. Upper levels that contain soft
compile points cannot be processed until the lower level has been
mapped, with the top level processed last.
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,LO
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
constraints. However, the boundary is not modified. Any changes can
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
374 December 2015
Compile Point Basics Chapter 11: Working with Compile Points
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.
• Locked
This is the default compile point type for manual compile points. 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 380) 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 375
Chapter 11: Working with Compile Points Compile Point Basics
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:
Advantages Limitations
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
376 December 2015
Compile Point Basics Chapter 11: Working with Compile Points
You can also specify a compile point type to be locked, partition. With this
setting and depending on the technology specified, the tool creates the
following:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 377
Chapter 11: Working with Compile Points Compile Point Synthesis Basics
The following figure shows that this design has one locked compile
point, pgrm_cntr. It uses the following syntax to define the compile point:
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
378 December 2015
Compile Point Synthesis Basics Chapter 11: Working with Compile Points
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 394 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 the defined compile point constraints.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 379
Chapter 11: Working with Compile Points Compile Point Synthesis Basics
define_current_design {work.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 381.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
380 December 2015
Compile Point Synthesis Basics Chapter 11: Working with Compile Points
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
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 © 2015 Synopsys, Inc.
December 2015 381
Chapter 11: Working with Compile Points Compile Point Synthesis Basics
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
382 December 2015
Compile Point Synthesis Basics Chapter 11: Working with Compile Points
When interface timing is off, the compile point log file (srr) reports the clock
period for the compile point as 20 ns, which is the compile point period.
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 period for the
top-level design, which is 10 ns:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 383
Chapter 11: 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.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
384 December 2015
Compile Point Synthesis Basics Chapter 11: Working with Compile Points
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
entire design. See Forward-annotation of Compile Point Timing Constraints,
on page 386 for a description of the constraints that are forward-annotated.
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 385
Chapter 11: Working with Compile Points Compile Point Synthesis Basics
• 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. This includes the possibility 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
386 December 2015
Synthesizing Compile Points Chapter 11: Working with Compile Points
the compile point and its parents. They are used in the final timing
report, and they are forward-annotated.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 387
Chapter 11: Working with Compile Points Synthesizing Compile Points
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
388 December 2015
Synthesizing Compile Points Chapter 11: Working with 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 394 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 © 2015 Synopsys, Inc.
December 2015 389
Chapter 11: 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 Combining Compile Points with Multiprocessing, on page 399 for
more information about this mode.
The tool synthesizes the compile points separately and then synthesizes
the top level. See Compile Point Synthesis, on page 384 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 385. See
Resynthesizing Compile Points Incrementally, on page 400 for a detailed
procedure.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
390 December 2015
Synthesizing Compile Points Chapter 11: Working with Compile Points
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.
You do not have to redefine compile point constraints at the top level as
the tool uses them to synthesize the compile points.
1. From the Current Design field, select the module for which you want to
create the compile point.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 391
Chapter 11: Working with Compile Points Synthesizing Compile Points
Do this by either selecting a module from the drop-down list in the View
column, or dragging the instance from the HDL Analyst RTL view to the
View column. The equivalent Tcl command is define_compile_point, as
shown in this example:
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:
4. Set the Type to locked, locked,partition, hard, or soft, according to your design
goals. See Defining the Compile Point Type, on page 393 for details.
This tags the module as a compile point. The following figure shows the
prgm_cntr module set as a locked compile point:
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
392 December 2015
Synthesizing Compile Points Chapter 11: Working with Compile Points
You can now open the compile point constraint file and define constraints for
the compile point, as needed for manual compile points. See Setting
Constraints at the Compile Point Level, on page 394 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 © 2015 Synopsys, Inc.
December 2015 393
Chapter 11: 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:
2. From the Current Design field, select the module for which you want to
create the compile point.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
394 December 2015
Synthesizing Compile Points Chapter 11: 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.
You can specify SCOPE attributes for the compile point as usual. See
Using Attributes with Compile Points, on page 396 for some exceptions.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 395
Chapter 11: Working with Compile Points Synthesizing Compile Points
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.
1. Check that the design meets the target frequency for the design. Use the
Watch window or check the log file.
LO
2. Open the log file and check the following:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
396 December 2015
Synthesizing Compile Points Chapter 11: 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.
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 points of type {hard} and {locked, partition} are easily located
in the Technology view with the color green.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 397
Chapter 11: Working with Compile Points Synthesizing Compile Points
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
398 December 2015
Using Compile Points with Other Features Chapter 11: Working with Compile Points
3. Run synthesis.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 399
Chapter 11: 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 385
• Resynthesizing Compile Points Incrementally, on page 400
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
400 December 2015
Resynthesizing Incrementally Chapter 11: 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 © 2015 Synopsys, Inc.
December 2015 401
Chapter 11: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
402 December 2015
CHAPTER 12
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 403
Chapter 12: 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
404 December 2015
Generating IP with SYNCore Chapter 12: 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 407.
The FIFO symbol on the left reflects the parameters you set.
3. After you have specified all the parameters you need, click the Generate
button (lower left).
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 405
Chapter 12: Working with IP Input Generating IP with SYNCore
SYNCore also generates a testbench for the FIFO that you can use for
simulation. The testbench covers a limited set of vectors for testing.
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)
) LO
endmodule
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
406 December 2015
Generating IP with SYNCore Chapter 12: 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 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 407
Chapter 12: Working with IP Input Generating IP with SYNCore
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 639
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
LO
any handshaking flags you require.
– Go to page 5 and enable Programmable Empty.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
408 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
You can now generate the FIFO and add it to the design, as described in
Specifying FIFOs with SYNCore, on page 404.
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 409
Chapter 12: Working with IP Input Generating IP with SYNCore
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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
410 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
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)
);
endmodule
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 411
Chapter 12: Working with IP Input Generating IP with SYNCore
– 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
412 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
– 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 413
Chapter 12: Working with IP Input Generating IP with SYNCore
– 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 415
Chapter 12: Working with IP Input Generating IP with SYNCore
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
416 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
2. Specify the parameters you need in the wizard. For details about the
parameters, see Specifying Byte-Enable RAM Parameters, on page 420.
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 417
Chapter 12: Working with IP Input Generating IP with SYNCore
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{1’b1}}),
.DATA_WIDTH(32)
)
4x32spram
(// Output Ports
.RdDataA(DataIn),
// Input Ports
.WrDataA(DataOut),
.WenA(WeEnA),
.AddrA(AddA),
.ResetA(Reset),
.ClkA(ClockA)
);
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
418 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 419
Chapter 12: Working with IP Input Generating IP with SYNCore
The following procedure lists the parameters you need to specify. For descrip-
tions of each parameter, refer to Parameter List, on page 659 in the Reference
Manual.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
420 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
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 416. For read/write timing diagrams, see
Read/Write Timing Sequences, on page 656 of the Reference Manual.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 421
Chapter 12: Working with IP Input Generating IP with SYNCore
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.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
422 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
2. Specify the parameters you need in the wizard. For details about the
parameters, see Specifying ROM Parameters, on page 426. 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 423
Chapter 12: Working with IP Input Generating IP with SYNCore
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.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
424 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 425
Chapter 12: Working with IP Input Generating IP with SYNCore
The ROM symbol dynamically updates to reflect any parameters you set.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
426 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
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).
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 427
Chapter 12: Working with IP Input Generating IP with SYNCore
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
428 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
2. Specify the parameters you need in the wizard. For details about the
parameters, see Specifying Adder/Subtractor Parameters, on page 432.
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 429
Chapter 12: Working with IP Input Generating IP with SYNCore
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, LO
input [15 : 0] B,
input CEB,
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
430 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 431
Chapter 12: Working with IP Input Generating IP with SYNCore
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
432 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
6. In the Configure Reset type for all Reset Signal section, click Synchronous Reset
or Asynchronous Reset as appropriate.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 433
Chapter 12: Working with IP Input Generating IP with SYNCore
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.
LO
– Ιn the window that opens, select counter_model and click Ok to open
page1 of the wizard.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
434 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
2. Specify the parameters you need in the wizard. For details about the
parameters, see Specifying Counter Parameters, on page 438. 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 435
Chapter 12: Working with IP Input Generating IP with SYNCore
– 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.
LO
You can also assign a unique name to each instantiation.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
436 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 437
Chapter 12: Working with IP Input Generating IP with SYNCore
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
438 December 2015
Generating IP with SYNCore Chapter 12: Working with IP Input
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 439
Chapter 12: Working with IP Input The Synopsys FPGA IP Encryption Flow
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
440 December 2015
The Synopsys FPGA IP Encryption Flow Chapter 12: Working with IP Input
For further details of the hand-offs between vendors and how encryption and
decryption are handled, see Encryption and Decryption, on page 441.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 441
Chapter 12: Working with IP Input The Synopsys FPGA IP Encryption Flow
Unencrypted IP VENDOR
source data
Synopsys FPGA
S
Bundled file
S with data block Private
Public and key block
1. Encrypt with IP vendor’s
symmetric data key
4. Decode data key with
Synopsys private key
2. Encrypt data key with
Synopsys public key
Symmetrically
encrypted
Symmetrically Asymmetrically data block
encrypted encrypted key
data block block
5. Decode data block with
decrypted data key
Unencrypted
source data
The following describes each of the phases shown in the figure. Note that
Synopsys provides the following scripts to simplify and automate the process
of encrypting data for the IP vendor.
• IEEE 1735-2014
• OpenIP
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
442 December 2015
The Synopsys FPGA IP Encryption Flow Chapter 12: Working with IP Input
Public key
Private key
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 443
Chapter 12: Working with IP Input The Synopsys FPGA IP Encryption Flow
In the figure, this is the point at which the IP vendor hands off the IP to the
synthesis tool.
After synthesis, the IP can be re-encrypted if the vendor has adopted one of
the Synopsys methodologies. See Output Methods for encryptIP, on page 29
in the Reference Manual for a description of the choices available.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
444 December 2015
Working with Encrypted IP Chapter 12: Working with IP Input
The following sections describe how to encrypt and package your IP for evalu-
ation if you are an IP vendor, and how to access and evaluate available IP, if
you are an end-user.
• Encrypting Your IP, on page 445
• Preparing the IP Package, on page 455
Encrypting Your IP
IP vendors can use either of the supported Synopsys FPGA IP schemes to
provide IP for synthesis users to evaluate and use. Both schemes uses a two-
stage encryption process:
• First, encrypt your IP files using a symmetric encryption algorithm and
your own session or data key to create an encrypted data block.
• Next, encrypt the session key for the encrypted data block using an
asymmetric algorithm and the Synopsys public key. All of the Synopsys
encryption methodologies support RSA encryption.
Synopsys provides scripts to simplify this process. See the following proce-
dures for details on script usage.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 445
Chapter 12: Working with IP Input Working with Encrypted IP
You only encrypt the RTL. You can encrypt any number of Verilog and
VHDL (or mixed) RTL files to form your encrypted IP, and each file can
be encrypted in its entirety.
4. Verify that your IP works with the synthesis tools by going through the
procedure that the user would use.
– Start the synthesis tool and load the IP with the Import IP->Import IP
Package command. You can load your IP into an existing Synplify
project.
– For system-level IP, run it through the System Designer™ tool and
ensure bus-model compatibility between your IP and any other IP to
which it interfaces. See the System Designer documentation for
details on using this tool.
– Run synthesis.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
446 December 2015
Working with Encrypted IP Chapter 12: Working with IP Input
A keys.txt file, which contains the public key for consumption by Synopsys
FPGA tools, is included with the script. Add other public keys to this file
when the IP is to be consumed by additional EDA tools.
The following procedure shows you how to encrypt your data with the
encryptP1735.pl script. This script automates the two-stage encryption process
described in the Synopsys FPGA IP scheme (The Synopsys FPGA IP Encryp-
tion Flow, on page 440). The encryptP1735.pl script:
• First encrypts your IP files using a symmetric encryption algorithm and
your own session or data key to create an encrypted data block.
• Next encrypts the session key for the encrypted data block using an
asymmetric algorithm and the Synopsys public key.
To illustrate the full-file use model, consider a single, Verilog file (tb_encrypt.v)
to be encrypted without pragmas. This file contains a single module named
secret.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 447
Chapter 12: Working with IP Input Working with Encrypted IP
In the above command, the list file (mylist) contains the single Verilog file tb_en-
crypt.v. The command uses the default keys.txt file from the directory installLoca-
tion/lib as the public keys file to create the decryption envelope file tb_en-
crypt.vp. The resulting messages are written in the encryptP1735.log file.
When there are overlapping pragmas in the RTL and the keys.txt file, the RTL
pragma takes precedence over the corresponding pragma in the keys.txt file.
For example, if the data_method pragma contains des-cbc in the RTL and
aes128-cbc in the keys.txt file, the following pragma is copied to the decryption
envelope:
data_method="des-cbc"
Verilog Example
To illustrate the partial file with all pragmas use model, consider a single,
Verilog file (tb_encrypt.v) to be encrypted. This file contains a module named
secret and all the encryption-related pragmas with the exception of the
key_public_key in the RTL itself.
module secret (a, b, clk);
input a, clk;
output b;
`pragma protect version=1
`pragma protect encoding=(enctype="base64")
`pragma protect author="author-a", author_info="author-a-details"
`pragma protect encrypt_agent="encryptP1735.pl", encrypt_agent_info="Synplify encryption scripts"
`pragma protect key_keyowner="Synopsys",key_keyname="SYNP05_001", key_method="rsa", key_block
`pragma protect LO
data_keyowner="ip-vendor-a",data_keyname="fpga-ip", data_method="des-cbc"
`pragma protect begin
reg b=0;
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
448 December 2015
Working with Encrypted IP Chapter 12: Working with IP Input
In the above command, the list file (mylist) contains the single Verilog file tb_en-
crypt.v. The command uses the default keys.txt file from the directory installLoca-
tion/lib as the public keys file to create the decryption envelope file tb_en-
crypt.vp. Any messages from the run are not output to a log file.
VHDL Example
To encrypt a partial VHDL file with an all pragmas use model, consider the
single, VHDL file (tb_encrypt.vhd). The file contains a single entity/architecture
pair named secret with all the encryption-related pragmas with the exception
of the key_public_key in the RTL itself.
library IEEE;
use IEEE.std_logic_1164.all;
entity secret is
port (clk : in std_logic;
a : in std_logic;
b : out std_logic);
end entity;
architecture rtl of secret is
`protect version=1
`protect author="author-a", author_info="author-a-details"
`protect encrypt_agent="encryptP1735.pl", encrypt_agent_info="Synplify encryption scripts"
`protect encoding=(enctype="base64")
`protect key_keyowner="Synopsys", key_keyname="SYNP05_001", key_method="rsa", key_block
`protect data_keyowner="ip-vendor-a", data_keyname="fpga-ip", data_method="des-cbc"
`protect begin
signal b_reg: std_logic;
begin
process (clk) is
begin
if rising_edge(clk) then
b_reg <= a;
end if;
end process;
b <= b_reg;
`protect end
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 449
Chapter 12: Working with IP Input Working with Encrypted IP
end architecture;
In the above command, the list file (mylist) contains the single VHDL file tb_en-
crypt.vhd. The command uses the default keys.txt file from the directory installLo-
cation/lib as the public keys file to create the decryption envelope file tb_en-
crypt.vhdp. Any messages from the run are not output to a log file.
With the start and end pragmas in the RTL file, a decryption envelope is
created with the command:
In the above command, the list file (mylist) contains the single Verilog file tb_en-
crypt.v. The command uses the default keys.txt file from the directory installLoca-
tion/lib as the public keys fileLO
to create the decryption envelope file tb_en-
crypt.vp. The absence of a specified log file (-log option) results in no messages
being written to the log file.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
450 December 2015
Working with Encrypted IP Chapter 12: Working with IP Input
For the partial file with all pragmas use model, the following pragma attribute
values must match the corresponding values in the key-block section of the
encryption envelope:
`pragma protect key_keyowner="Synopsys", key_keyname="SYNP05_001", key_method="rsa"
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 451
Chapter 12: Working with IP Input Working with Encrypted IP
2. Make sure that the encryptIP script specifies the decryption key and the
matching key length:
– Specify the symmetric data decryption key with the -k option.
Optionally, you can also specify a symmetric encryption key in
hexadecimal format with the -kx option.
– Make sure you specify the right key length for the encryption
algorithm with the -c option. For example, TEST1234 becomes a 64-bit
key, so you specify the des-cbc algorithm.
See Syntax, on page 28 in the Reference Manual for full details of the
encryptip syntax.
3. Make sure you specify the appropriate output method (-om) when you
run the script.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
452 December 2015
Working with Encrypted IP Chapter 12: Working with IP Input
All other output files from synthesis, including srm and srs files, are
encrypted using the same encryption method specified for the input to
synthesis. Output constraints are not encrypted.
4. Run the encryptIP script on each RTL file you want to encrypt.
5. Check the encrypted RTL file to make sure that there is only one key
block present.
The output method mainly affects the output netlist. The following are guide-
lines for setting the output method for the encryptIP script, and detail the
effects of different settings:
1. When using the encrypyIP script, set -om to persistent_key if you have an
agreement in place with Synopsys and want the output netlist to be
encrypted
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 453
Chapter 12: Working with IP Input Working with Encrypted IP
Setting the output method to plaintext allows the tool to synthesize, run
gate-level simulations, place and route, and implement an FPGA (that
includes the IP) on a board. Setting the output method to blackbox does
not allow the tool to run gate-level simulations or place and route the IP,
because it only uses the port and connectivity information.
4. If you have set -om to plaintext and you want to specify individual cores as
white boxes, set the syn_macro directive to 1 on the view for the IP.
Note that you must set this on the view, not the instance. When this is
set, the tool treats the IP as a white box and only uses the timing and
connection information from the IP. The synthesis tool maintains the IP
boundary and only trims unused logic inside the IP.
5. During synthesis, the IP contents appear as a black box in the RTL view,
irrespective of the output method selected. When the output method is
set to plaintext, you can push down into the IP from the Technology view.
6. After synthesis, the output method affects the results in the following
ways:
– Output constraints for an IP are in the standard Synopsys format and
are not encrypted.
– The output method affects the contents of the output netlist and its
LO
format. This table summarizes the encryptIP or encryptP1735 behavior
with different output methods.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
454 December 2015
Working with Encrypted IP Chapter 12: Working with IP Input
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 455
Chapter 12: Working with IP Input Working with Encrypted IP
The user generally untars or unzips the IP package into a top-level direc-
tory after downloading it. The synthesis tools can then read the contents
of the directory.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
456 December 2015
Working with Encrypted IP Chapter 12: Working with IP Input
Files Description
ipinfo.txt Text file that lists the name of the IP, the version, restrictions
for use, support contact information, and an email alias to
request a licence for the full RTL for your IP.
Documentation, Documents the IP, and includes detailed information about
preferably a PDF usage restrictions like vendor, device family, etc.
Readme An optional text file that contains instructions on use of the IP
for assembly and/or synthesis, and hints on how to use it
correctly.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 457
Chapter 12: Working with IP Input Working with Encrypted IP
Files Description
Encrypted HDL or Protected RTL for the IP, created using the Synopsys encryptIP
EDIF script. See the documentation for details.
SDC constraints Unencrypted design constraints for the IP.
SPIRIT IP-XACT System-level models for your IP. This allows the synthesis
v1.4 models tools to include your IP in a system-level design by stitching
the IP together using bus architectures.
IP vendor name and logo Your vendor name and logo for display.
Optional IP description Short paragraph describing the IP and key
features.
Email alias Synopsys sends leads to this alias when evaluation
cores are requested on the Synopsys IP website.
Website URL Unique URL for accessing IP. After the user has
filled out lead information on the website, the
Synopsys tool directs the user to this URL to
download the IP. The lead form on your website can
be pre-filled by prior arrangement with Synopsys
Marketing.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
458 December 2015
Working with Encrypted IP Chapter 12: Working with IP Input
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 459
Chapter 12: Working with IP Input Working with Synenc-encrypted IP
File order is critical, because incorrect order causes the compiler to error
out with a message about unknown macros. Ensure correct file order by
doing one of the following:
– Use the original lst file from coreConsultant to set up your project.
The lst file gives the proper order of files. This is the typical path to
the lst file:
ip_core_name/src/ip_core_name.lst
– If the lst file is unavailable, make sure that the params and constants
files for each core are listed first, and make sure that the undef file for
the core is listed last.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
460 December 2015
Working with Synenc-encrypted IP Chapter 12: Working with IP Input
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 461
Chapter 12: Working with IP Input Using Hyper Source
You can also use it to easily replace an ASIC RAM with an FPGA RAM. Follow
these guidelines to replace an ASIC RAM with an FPGA RAM:
Hyper source reduces the number of modified RTL modules to two, one
for the RAM and one for the top level.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
462 December 2015
Using Hyper Source Chapter 12: Working with IP Input
• 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 464.
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.
– Signal syn_hyper_connect connect_block (probe) module is defined for the
connection with a width of 8.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 463
Chapter 12: Working with IP Input Using Hyper Source
– 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);
LO
defparam my_source.tag = "probe_sig"; /* to thread the signal this
tag_name must match to name used in the hyper connect block */
defparam my_source.w = 8;
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
464 December 2015
Using Hyper Source Chapter 12: Working with IP Input
syn_hyper_connect connect_block(probe);
defparam connect_block.tag = "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
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 465
Chapter 12: Working with IP Input Using Hyper Source
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
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
466 December 2015
CHAPTER 13
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 468
• Working with Tcl Scripts and Commands, on page 474
• Automating Flows with synhooks.tcl, on page 481
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 467
Chapter 13: Optimizing Processes for Productivity 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 474.
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 476.
2. From a command prompt, go to the directory where the project files are
located, and type the following:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
468 December 2015
Using Batch Mode Chapter 13: Optimizing Processes for Productivity
The -tclcmd switch also allows the synthesis results path to be changed.
The software returns the following codes after the batch run:
0 - OK
2 - logical error
3 - startup failure
4 - licensing failure
5 - batch not available
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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 469
Chapter 13: Optimizing Processes for Productivity Using Batch Mode
3. From a command prompt, go to the directory with the files and type one
of the following as appropriate:
Queuing Licenses
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 on the server but not
immediately available. LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
470 December 2015
Using Batch Mode Chapter 13: Optimizing Processes for Productivity
You can also queue DesignWare IP licenses, so that they can be used as they
become available.
Queuing Considerations
Consider these points 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.
Queuing Licenses
The following procedure describes how to specify blocking-style or non-
blocking style queuing for synthesis licenses. You can specify the licensed
features for queuing in an environment variable or directly in batch mode.
1. Specify the list of licensed features you want to queue, using either of
the following methods:
– Set the toolName_LICENSE_TYPE environment variable to the features
you want. For example:
SYNPLIFYPRO_LICENSE_TYPE=synplifypro:synplifypro_microsemi
– Specify a list of features to wait for using the -batch, -licensetype and -
license_wait options. For example:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 471
Chapter 13: Optimizing Processes for Productivity Using Batch Mode
SYNPLIFYPRO_LICENSE_WAIT=180
The waitTime value determines the maximum wait time, in seconds:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
472 December 2015
Using Batch Mode Chapter 13: Optimizing Processes for Productivity
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 473
Chapter 13: Optimizing Processes for Productivity Working with Tcl Scripts and Commands
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
474 December 2015
Working with Tcl Scripts and Commands Chapter 13: Optimizing Processes for Productivity
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 55 in the Command Refer-
ence 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>
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 250.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 475
Chapter 13: Optimizing Processes for Productivity Working with Tcl Scripts and Commands
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.
add_file prep2.v
set_option -technology PROASIC3
set_option -part A3P400
LO
set_option -package FBGA144
project -run
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
476 December 2015
Working with Tcl Scripts and Commands Chapter 13: Optimizing Processes for Productivity
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 16 in the Command 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 Using
a Text Editor for Constraint Files (Legacy), on page 54 for details about
constraint files.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 477
Chapter 13: Optimizing Processes for Productivity 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}
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
478 December 2015
Working with Tcl Scripts and Commands Chapter 13: Optimizing Processes for Productivity
set try_these {
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 479
Chapter 13: Optimizing Processes for Productivity Working with Tcl Scripts and Commands
1. Create a Tcl script for each logic block. The Tcl script must synthesize
the block. See Creating a Tcl Synthesis Script, on page 476 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
LO
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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
480 December 2015
Automating Flows with synhooks.tcl Chapter 13: Optimizing Processes for Productivity
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.
$SYN_TCL_HOOKS=/remote/rel/projects/MyProj/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 694 in the Reference
Manual.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 481
Chapter 13: Optimizing Processes for Productivity Automating Flows with synhooks.tcl
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
482 December 2015
Automating Flows with synhooks.tcl Chapter 13: Optimizing Processes for Productivity
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]
}
}
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 483
Chapter 13: Optimizing Processes for Productivity Automating Flows with synhooks.tcl
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
484 December 2015
CHAPTER 14
Improving Runtime
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 485
Chapter 14: Improving Runtime Multiprocessing With Compile Points
The tool uses one license per job, so additional licenses increase the
number of jobs that can be run in parallel. The actual number of
licenses used depends on certain factors. See Specifying Licenses for
Multiprocessing, on page 488 for an explanation.
See Setting Maximum Parallel Jobs, on page 486 for other ways to set
this value.
Soft ACPs might not be processed in parallel, unless they are independent (at
the leaf level). Upper-level compile points that contain soft lower-level compile
points cannot be processed until the lower level has been mapped, with the
top level being processed last. By contrast, if you have hard or locked compile
points, they are all processed in parallel, including the top level.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
486 December 2015
Multiprocessing With Compile Points Chapter 14: Improving Runtime
[JobSetting]
MaxParallelJobs=<n>
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 487
Chapter 14: Improving Runtime Multiprocessing With Compile Points
Factors 1 and 3 can change during a single synthesis run. The number of
jobs equals the number of licenses; which then equates to the lowest value of
these three factors.
synplify_pro.exe -licensetype
"synplifypro_microsem:synplifypro_allvendor"
LO
• Use one of the following environment variables specified with the license
type:
– SYNPLIFYPRO_LICENSE_TYPE
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
488 December 2015
Multiprocessing With Compile Points Chapter 14: Improving Runtime
setenv SYNPLIFYPRO_LICENSE_TYPE=
"synplifypro:synplifypro_allvendor:synplifypro_microsemi"
Multiprocessing can access any of these license types for additional licenses.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 489
Chapter 14: Improving Runtime Multiprocessing With Compile Points
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
490 December 2015
CHAPTER 15
This chapter covers techniques for optimizing your design for various
Microsemi designs. The information in this chapter is intended to be used
together with the information in Chapter 9, Inferring High-Level Objects.
• Using Predefined Microsemi Black Boxes, on page 492
• Using Smartgen Macros, on page 493
• Working with Radhard Designs, on page 493
• Specifying syn_radhardlevel in the Source Code, on page 494
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 491
Chapter 15: Optimizing for Microsemi Designs Optimizing Microsemi Designs
2. Add the Microsemi macro library at the top of the source file list for your
synthesis project. MakeLO
sure that the library file is first in the list.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
492 December 2015
Optimizing Microsemi Designs Chapter 15: 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; for example, proasic3.
You can specify radhard values on modules and architecture in both the
Attributes panel in SCOPE and in the source code. However, for registers, it
must be specified in the source code only.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 493
Chapter 15: 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 ProASIC3/3E 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 from step 1 is
the first file listed in the project, if required.
To set attributes in SCOPE, see How Attributes and Directives are Specified,
on page 8 in the Attribute Reference manual. The following procedure outlines
how to set this attribute in the source code.
LOvalue, make sure that the corresponding
1. To set a global or default
Microsemi macro file is the first file listed in the project, if required.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
494 December 2015
Optimizing Microsemi Designs Chapter 15: Optimizing for Microsemi Designs
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";
VHDL Verilog
library synplify; reg [15:0] a1_int, b1_int
use synplify.attributes.all; /* synthesis syn_radhardlevel =
attribute syn_radhardlevel of "tmr" */;
bl_int: signal is "tmr"
– Add the appropriate Microsemi macro file (tmr.v or tmr.vhd for this
example) to the project, unless you are working with a ProASIC3,
ProASIC3E, or ProASIC3L target. You do not need to add the
Microsemi macro file to your project for these devices.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 495
Chapter 15: Optimizing for Microsemi Designs Optimizing Microsemi Designs
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
496 December 2015
CHAPTER 16
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 9, Inferring High-Level Objects.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 497
Chapter 16: Working with Synthesis Output Passing Information to the P&R Tools
1. Start with a design using one of the Microsemi and technology 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 499.
– 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 Attribute Reference Manual for syntax details.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
498 December 2015
Passing Information to the P&R Tools Chapter 16: 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.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 499
Chapter 16: 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.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
500 December 2015
CHAPTER 17
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 501
Chapter 17: Running Post-Synthesis Operations Running P&R Automatically after Synthesis
1. Make sure that you are using the correct version of the P&R tool.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
502 December 2015
Running P&R Automatically after Synthesis Chapter 17: Running Post-Synthesis Operations
In synthesis batch mode (synbatch), the -license_release option obtains all the
synthesis licenses that are checked out for the session and checks them in
immediately after the place-and-route job is launched.
When licenses are released, you see the following message is generated:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 503
Chapter 17: Running Post-Synthesis Operations Working with the Identify Tools
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 synthesis tool has integrated the Identify instrumentor into the synthesis
user interface. This section describes how to take advantage of this integra-
tion and use the Identify instrumentor:
• Launching from the Tool, on page 504
• Handling Problems with Launching Identify, on page 510
• Using the Identify Tool, on page 511
• Using Compile Points with the Identify Tool, on page 513
Define a project that you can pass to and launch in the Identify instrumentor.
You must create an Identify implementation in order to run the Identify
instrumentor. If you already have an Identify implementation, open it and
use the Identify tool as described in Using the Identify Tool, on page 511.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
504 December 2015
Working with the Identify Tools Chapter 17: Running Post-Synthesis Operations
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 505
Chapter 17: Running Post-Synthesis Operations Working with the Identify Tools
3. You can choose to run either the Classic or Integrated Identify instrumentor
interface as shown in the dialog box below. To do this, select
Options->Configure Identify Launch:
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
506 December 2015
Working with the Identify Tools Chapter 17: Running Post-Synthesis Operations
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 507
Chapter 17: Running Post-Synthesis Operations Working with the Identify Tools
You can now use the Identify tool as described in Using the Identify Tool, on
page 511 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 510.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
508 December 2015
Working with the Identify Tools Chapter 17: Running Post-Synthesis Operations
6. Check the Identify installation. If the Use current Identify Installation field
entry in the dialog box is not correct, either:
– click the Locate Identify Installation button and enter the path to the
Identify installation directory. Use the browse button if necessary.
– set the SYN_IDENTIFY_EXE environment variable to point to the
Identify installation. This path is the directory path displayed in the
Use current Identify Installation field. You must restart the synthesis tool
whenever you change the environment variable setting.
Select the appropriate license option and click OK to launch the Identify
instrumentor for the new implementation.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 509
Chapter 17: Running Post-Synthesis Operations Working with the Identify Tools
After the design has been synthesized, place and route your design.
Program the device, install the device in the target system, and complete
the cable interface. You can now run the Identify debugger on the
instrumented design (designName.prj) to verify correct operation.
3. Navigate to the lib directory and run (open) the relaunch_identify.tcl script
to launch the Identify instrumentor.
After the design has been resynthesized, place and route your design.
Program the device and reinstall the device in the target system. You can now
rerun the Identify debugger on the instrumented design (designName.prj) to
verify correct operation.
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
510 December 2015
Working with the Identify Tools Chapter 17: Running Post-Synthesis Operations
Either:
– 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.
– 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 installation directory.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 511
Chapter 17: Running Post-Synthesis Operations Working with the Identify Tools
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
512 December 2015
Working with the Identify Tools Chapter 17: 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:
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 513
Chapter 17: Running Post-Synthesis Operations Working with the Identify Tools
5. Rerun instrumentation.
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
514 December 2015
Simulating with the VCS Tool Chapter 17: Running Post-Synthesis Operations
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 257 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
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 515
Chapter 17: Running Post-Synthesis Operations Simulating with the VCS Tool
– 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 (DVE) 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+ fileName argument
LO when you specify the vlogan command.
You enter the +incdir+ in the Verilog Compile field in the VCS Options dialog
box, as shown below:
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
516 December 2015
Simulating with the VCS Tool Chapter 17: Running Post-Synthesis Operations
`include "component.v"
module Top (input a, output x);
...
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:
4. Specify the libraries and test bench files, if you are using them.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 517
Chapter 17: Running Post-Synthesis Operations Simulating with the VCS Tool
– 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
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
518 December 2015
Simulating with the VCS Tool Chapter 17: Running Post-Synthesis Operations
– 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.
Limitations
If Verilog include paths have been added to your project file, these paths are
not automatically added to the VCS script. Add the Verilog include paths
manually by using one of the following workarounds:
• From the Run VCS Simulator dialog box, add +incdir+includePath in the
Verilog Compile options field.
• Modify the VCS script file, adding the +incdir+includePath to all or any
relevant vlogan commands.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 519
Chapter 17: Running Post-Synthesis Operations Simulating with the VCS Tool
LO
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
520 December 2015
Index
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 521
Index
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
522 December 2015
Index
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 523
Index
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
524 December 2015
Index
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 525
Index
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
526 December 2015
Index
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 527
Index
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
528 December 2015
Index
nets parameters
expanding logic from 262 extracting from Verilog source code 85
preserving for probing with part selection options 74
syn_probe 347
preserving with syn_keep 347 path constraints
properties 215 false paths 137
selecting drivers 265 false paths (Legacy) 174
New property 217 pathnames
using wildcards for long names
notes (Find) 239
filtering 198
sorting 198 paths
crossprobing 251
notes, definition 34 tracing between objects 265
tracing from net 262
O tracing from pin 261
pattern matching
objects
Find command (Tcl) 139
finding on current sheet 236
flagging by property 216 pattern searching 96
selecting/deselecting 220 PDF
open_design cutting from 36
with find and expand 145 pin names, displaying 260
optimization pins
for area 337 expanding logic from 261
for timing 338 properties 215
logic preservation. See logic ports
preservation.
false path constraint 137
preserving hierarchy 351
false path constraint (Legacy) 174
preserving objects 347
properties 215
tips for 336
POS interface
orig_inst_of property 218
using 133
output constraints, setting 125
post-synthesis constraints with adc 289
output constraints, setting (Legacy) 172
preferences
output files 500 crossprobing to place-and-route
specifying 81 file 223
output netlists displaying Hierarchy Browser 223
finding objects 244 displaying labels 224
RTL and Technology views 223
overutilization 196
sheet size (UI) 223
primitives
P pin name display 260
package library, adding 60 pushing into with mouse stroke 228
viewing internal hierarchy 256
pad types
industry standards 126 probes
adding in source code 366
parallel jobs 475 definition 366
parameter passing 47 retiming 345
boolean generics 46
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 529
Index
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
530 December 2015
Index
crossprobing from Text Editor 250 setting compile point constraints 395
defined 213 setting constraints (FDC) 114
description 212 specifying constraints 121
filtering 259 state machine attributes 313
finding objects with Find 236 TCL View 122
finding objects with Hierarchy SCOPE editor
Browser 234 using 114
flattening hierarchy 267
highlighting collections 154 scope of the document 21
opening 214 SCOPE panels
selecting/deselecting objects 220 entering and editing constraints 121
setting preferences 223 SCOPE TCL View
state machine implementation 361 using 127
traversing hierarchy 226
search
running P&R browsing objects with the Find
license release (synthesis) 502 command 235
runtime browsing with the Hierarchy
continue on error 207 Browser 234
finding objects on current sheet 236
setting limit for results 238
S setting scope 237
safe case 316 using the Find command in HDL
Analyst views 236
safe FSM 316
using safe case 316 See also search
schematics set command
multisheet. See multisheet schematics collections 155
page size 223 set_option command 76
selecting/deselecting objects 220 sheet connectors
SCOPE navigating with 222
adding attributes 92 sheet size
adding probe insertion attribute 367 setting number of objects 223
Attributes panel 122
Shift-F3 key
case sensitivity for Verilog designs 139
Message Viewer 198
Clocks panel 121
collections compared to Tcl script Show Cell Interior option 256
window 147 Show Context command
Collections panel 121 different from Expand 258
Compile Points panel 122 using 258
creating compile-point constraint
file 394 signals
defining compile points 391 threading with hyper source. See hyper
source
Delay Paths panel 122
drag and drop 130 simulation, effect of retiming 345
editing operations 131 single-port RAMs
Generated Clocks panel 121 SYNCore parameters 412
I/O pad type 126 slack 284
I/O Standards panel 122 setting margins 281
Inputs/Outputs panel 122
multicycle paths 136 slack time display 278
Registers panel 122 Slow property 217
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 531
Index
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
532 December 2015
Index
SYN_TCL_HOOKS environment T
variable 481
syn_tco attribute ta file 285
adding in SCOPE 308 Tcl
syn_tco directive 307 max_parallel_jobs variable 476
adding black box constraints 306 tcl callbacks
syn_tpd attribute customizing key assignments 482
adding in SCOPE 308 Tcl commands
syn_tpd directive 307 batch script 469
adding black box constraints 306 running 474
syn_tsu attribute Tcl expand
adding in SCOPE 308 using 138
syn_tsu directive 307 Tcl expand command
adding black box constraints 306 crossprobing objects 149
syn_useioff usage tips 143
preventing flops from moving during using in SCOPE 148
retiming 342 Tcl files 474
SYNCore creating 476
adders 427 for bottom-up synthesis 480
counters 434 guidelines 52
FIFO compiler 404 naming conventions 53
RAMs 409 recording from commands 475
RAMs, byte-enable 416 synhooks.tcl 481
RAMs, dual-port parameters 413 using variables 478
RAMs, single-port parameters 412 wildcards 53
ROMs 422 Tcl find
ROMs, parameters 426 batch mode 145
subtractors 427 filtering results by property 140
synenc encryption 460 search patterns 138
using 138
synhooks
automating message filtering 202 Tcl find command
annotating properties 140
synhooks.tcl file 481 case sensitivity 139
Synopsys crossprobing objects 149
FPGA product family 16 database differences 148
synplify_pro UNIX command 22 pattern matching 139
Tcl window vs SCOPE 147
SYNPLIFY_REMOTE_REPORT_LOCATIO
N 191 usage tips 141
useful -filter examples 141
syntax using in SCOPE 148
checking source files 33
Tcl Script window
syntax check 33 crossprobing 253
synthesis check 33 message viewer 197
synthesis_on/off Tcl script window
using 87 collections compared to SCOPE 147
SystemVerilog keywords Tcl scripts
context help 32 See Tcl files.
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 533
Index
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
534 December 2015
Index
Synplify Pro for Microsemi Edition User Guide © 2015 Synopsys, Inc.
December 2015 535
Index
© 2015 Synopsys, Inc. Synplify Pro for Microsemi Edition User Guide
536 December 2015