Xilinx 8.2i ISE Development System Reference Guide User Manual To The 655d0d4f 48e4 4338 93fb 692ddea72099
User Manual: Xilinx 8.2i to the manual
Open the PDF directly: View PDF
.
Page Count: 422
Development
System
Reference Guide
8.2i
R
R
Xilinx is disclosing this Document and Intellectual Property (hereinafter “the Design”) to you for use in the development of designs to operate
on, or interface with Xilinx FPGAs. Except as stated herein, none of the Design may be copied, reproduced, distributed, republished,
downloaded, displayed, posted, or transmitted in any form or by any means including, but not limited to, electronic, mechanical,
photocopying, recording, or otherwise, without the prior written consent of Xilinx. Any unauthorized use of the Design may violate copyright
laws, trademark laws, the laws of privacy and publicity, and communications regulations and statutes.
Xilinx does not assume any liability arising out of the application or use of the Design; nor does Xilinx convey any license under its patents,
copyrights, or any rights of others. You are responsible for obtaining any rights you may require for your use or implementation of the
Design. Xilinx reserves the right to make changes, at any time, to the Design as deemed desirable in the sole discretion of Xilinx. Xilinx
assumes no obligation to correct any errors contained herein or to advise you of any correction if such be made. Xilinx will not assume any
liability for the accuracy or correctness of any engineering or technical support or assistance provided to you in connection with the Design.
THE DESIGN IS PROVIDED “AS IS” WITH ALL FAULTS, AND THE ENTIRE RISK AS TO ITS FUNCTION AND IMPLEMENTATION IS
WITH YOU. YOU ACKNOWLEDGE AND AGREE THAT YOU HAVE NOT RELIED ON ANY ORAL OR WRITTEN INFORMATION OR
ADVICE, WHETHER GIVEN BY XILINX, OR ITS AGENTS OR EMPLOYEES. XILINX MAKES NO OTHER WARRANTIES, WHETHER
EXPRESS, IMPLIED, OR STATUTORY, REGARDING THE DESIGN, INCLUDING ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NONINFRINGEMENT OF THIRD-PARTY RIGHTS.
IN NO EVENT WILL XILINX BE LIABLE FOR ANY CONSEQUENTIAL, INDIRECT, EXEMPLARY, SPECIAL, OR INCIDENTAL
DAMAGES, INCLUDING ANY LOST DATA AND LOST PROFITS, ARISING FROM OR RELATING TO YOUR USE OF THE DESIGN,
EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE TOTAL CUMULATIVE LIABILITY OF XILINX IN
CONNECTION WITH YOUR USE OF THE DESIGN, WHETHER IN CONTRACT OR TORT OR OTHERWISE, WILL IN NO EVENT
EXCEED THE AMOUNT OF FEES PAID BY YOU TO XILINX HEREUNDER FOR USE OF THE DESIGN. YOU ACKNOWLEDGE THAT
THE FEES, IF ANY, REFLECT THE ALLOCATION OF RISK SET FORTH IN THIS AGREEMENT AND THAT XILINX WOULD NOT MAKE
AVAILABLE THE DESIGN TO YOU WITHOUT THESE LIMITATIONS OF LIABILITY.
The Design is not designed or intended for use in the development of on-line control equipment in hazardous environments requiring failsafe controls, such as in the operation of nuclear facilities, aircraft navigation or communications systems, air traffic control, life support, or
weapons systems (“High-Risk Applications”). Xilinx specifically disclaims any express or implied warranties of fitness for such High-Risk
Applications. You represent that use of the Design in such High-Risk Applications is fully at your risk.
Copyright © 1995-2006 Xilinx, Inc. All rights reserved. XILINX, the Xilinx logo, and other designated brands included herein are trademarks
of Xilinx, Inc. PowerPC is a trademark of IBM, Inc. All other trademarks are the property of their respective owners.
Development System Reference Guide
www.xilinx.com
R
Preface
About This Guide
The Development System Reference Guide contains information about the command line
software programs in the Xilinx Development System. Most chapters are organized as
follows:
•
A brief summary of program functions
•
A syntax statement
•
A description of the input files used and the output files generated by the program
•
A listing of the commands, options, or parameters used by the program
•
Examples of how to use the program
For an overview of the Xilinx Development System describing how these programs are
used in the design flow, see Chapter 2, “Design Flow”.
Guide Contents
The Development System Reference Guide provides detailed information about converting,
implementing, and verifying designs with the Xilinx command line tools. Check the
program chapters for information on what program works with each family of Field
Programmable Gate Array (FPGA) or Complex Programmable Logic Device (CPLD).
Following is a brief overview of the contents and organization of the Development System
Reference Guide:
Note: For information on timing constraints, UCF files, and PCF files, see the Constraints Guide.
•
Chapter 1, “Introduction” —This chapter describes some basics that are common to
the different Xilinx Development System modules.
•
Chapter 2, “Design Flow”—This chapter describes the basic design processes: design
entry, synthesis, implementation, and verification.
•
Chapter 3, “Tcl”—Tcl is designed to complement and extend the graphical user
interface (GUI). Xilinx Tcl commands provide a batch interface that makes it
convenient to execute the exact same script or steps over and over again.
•
Chapter 4, “PARTGen”—PARTGen allows you to obtain information about installed
devices and families.
•
Chapter 5, “Logical Design Rule Check”—The Logical Design Rule Check (DRC)
comprises a series of tests run to verify the logical design described by the Native
Generic Database (NGD) file.
•
Chapter 6, “NGDBuild”—NGDBuild performs all of the steps necessary to read a
netlist file in EDIF format and create an NGD (Native Generic Database) file
describing the logical design reduced to Xilinx primitives.
Development System Reference Guide
www.xilinx.com
3
R
Preface: About This Guide
4
•
Chapter 7, “MAP”—MAP packs the logic defined by an NGD file into FPGA elements
such as CLBs, IOBs, and TBUFs.
•
Chapter 8, “Physical Design Rule Check”—The physical Design Rule Check (DRC)
comprises a series of tests run to discover physical errors in your design.
•
Chapter 9, “PAR”—PAR places and routes FPGA designs.
•
Chapter 10, “XPower”—XPower is a power and thermal analysis tool that generates
power and thermal estimates after the PAR or CPLDfit stage of the design.
•
Chapter 11, “PIN2UCF,”—PIN2UCF generates pin-locking constraints in a UCF file
by reading a a placed NCD file for FPGAs or GYD file for CPLDs.
•
Chapter 12, “TRACE”—Timing Reporter and Circuit Evaluator (TRACE) performs
static timing analysis of a physical design based on input timing constraints.
•
Chapter 13, “Speedprint”— Speedprint lists block delays for a specified device and its
speed grades.
•
Chapter 14, “BitGen”—BitGen creates a configuration bitstream for an FPGA design.
•
Chapter 15, “BSDLAnno”—BSDLAnno automatically modifies a BSDL file for postconfiguration interconnect testing.
•
Chapter 16, “PROMGen” —PROMGen converts a configuration bitstream (BIT) file
into a file that can be downloaded to a PROM. PROMGen also combines multiple BIT
files for use in a daisy chain of FPGA devices.
•
Chapter 17, “IBISWriter”—IBISWriter creates a list of pins used by the design, the
signals inside the device that connect those pins, and the IBIS buffer model that
applies to the IOB connected to the pins.
•
Chapter 18, “CPLDfit” —CPLDfit reads in an NGD file and fits the design into the
selected CPLD architecture.
•
Chapter 19, “TSIM” — TSIM formats an implemented CPLD design (VM6) into a
format usable by the NetGen timing simulation flow, which produces a backannotated timing file for simulation.
•
Chapter 20, “TAEngine” —TAEngine performs static timing analysis on a successfully
implemented Xilinx CPLD design (VM6).
•
Chapter 21, “Hprep6” —Hprep6 takes an implemented CPLD design (VM6) from
CPLDfit and generates a JEDEC (JED) programming file.
•
Chapter 22, “NetGen”—NetGen reads in applicable Xilinx implementation files,
extracts design data, and generates netlists that are used with supported third-party
simulation, equivalence checking, and static timing analysis tools.
•
Chapter 23, “XFLOW”—XFLOW automates the running of Xilinx implementation
and simulation flows.
•
Chapter 24, “Data2MEM”—Data2MEM transforms CPU execution code, or pure data,
into Block RAM initialization records.
•
“Appendix A”—This appendix gives an alphabetic listing of the files used by the
Xilinx Development System.
•
“Appendix B” —This appendix describes the netlist reader, EDIF2NGD, and how it
interacts with NGDBuild.
www.xilinx.com
Development System Reference Guide
R
Additional Resources
Additional Resources
To find additional documentation, see the Xilinx website at:
http://www.xilinx.com/literature.
To search the Answer Database of silicon, software, and IP questions and answers, or to
create a technical support WebCase, see the Xilinx website at:
http://www.xilinx.com/support.
Conventions
This document uses the following conventions. An example illustrates each convention.
Typographical
The following typographical conventions are used in this document:
Convention
Meaning or Use
Example
Courier font
Messages, prompts, and
program files that the system
displays
speed grade: - 100
Courier bold
Literal commands that you
enter in a syntactical statement
ngdbuild design_name
Helvetica bold
Commands that you select
from a menu
File → Open
Keyboard shortcuts
Ctrl+C
Variables in a syntax
statement for which you must
supply values
ngdbuild design_name
References to other manuals
See the Development System
Reference Guide for more
information.
Emphasis in text
If a wire is drawn so that it
overlaps the pin of a symbol,
the two nets are not connected.
An optional entry or
parameter. However, in bus
specifications, such as
bus[7:0], they are required.
ngdbuild [option_name]
design_name
A list of items from which you
must choose one or more
lowpwr ={on|off}
Separates items in a list of
choices
lowpwr ={on|off}
Italic font
Square brackets
Braces
{ }
Vertical bar
Development System Reference Guide
|
[ ]
www.xilinx.com
5
R
Preface: About This Guide
Convention
Meaning or Use
Example
Vertical ellipsis
.
.
.
Repetitive material that has
been omitted
IOB #1: Name = QOUT’
IOB #2: Name = CLKIN’
.
.
.
Horizontal ellipsis . . .
Repetitive material that has
been omitted
allow block block_name
loc1 loc2 ... locn;
Online Document
The following conventions are used in this document:
Convention
Example
Cross-reference link to a
location in the current file or
in another file in the current
document
See the section “Additional
Resources” for details.
Red text
Cross-reference link to a
location in another document
See Figure 2-5 in the Virtex-II
Handbook.
Blue, underlined text
Hyperlink to a website (URL)
Go to http://www.xilinx.com
for the latest speed files.
Blue text
6
Meaning or Use
www.xilinx.com
Refer to “Title Formats” in
Chapter 1 for details.
Development System Reference Guide
Table of Contents
Preface: About This Guide
Guide Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Additional Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Typographical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Online Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Chapter 1: Introduction
Command Line Program Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Command Line Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Command Line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
–f (Execute Commands File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–h (Help) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–p (Part Number) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
25
26
27
Invoking Command Line Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Chapter 2: Design Flow
Design Flow Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Design Entry and Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Hierarchical Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schematic Entry Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Library Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CORE Generator Tool (FPGAs Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
HDL Entry and Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Functional Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mapping Constraints (FPGAs Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Block Placement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Timing Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Netlist Translation Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
34
34
34
35
35
35
35
36
36
36
Design Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Mapping (FPGAs Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Placing and Routing (FPGAs Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Bitstream Generation (FPGAs Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Design Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Back-Annotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NetGen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schematic-Based Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
HDL-Based Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Static Timing Analysis (FPGAs Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
In-Circuit Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Design Rule Checker (FPGAs Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Development System Reference Guide
www.xilinx.com
42
42
44
44
45
47
48
48
7
R
Xilinx Design Download Cables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
ChipScope ILA and ChipScope PRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
FPGA Design Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Design Size and Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Global Clock Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Feedback and Clock Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Other Synchronous Design Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
49
50
51
52
Chapter 3: Tcl
Tcl Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Xilinx Tcl Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Accessing Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Tcl Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Xilinx Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Xilinx Tcl Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Tcl Commands for General Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
partition (support design preservation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
delete (delete a partition) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
get (get partition properties) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
new (create a new partition) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
properties (list available partition properties) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
rerun (force partition synthesis and implementation) . . . . . . . . . . . . . . . . . . . . . . . . . .
set (set partition preserve property) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
process (run and manage project processes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
run (run process task) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
project (create and manage projects) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
clean (remove system-generated project files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
close (close the ISE project) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
get (get project properties) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
get_processes (get project processes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
new (create a new ISE project) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
open (open an ISE project) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
properties (list project properties) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
set (set project properties, values, and options) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
set device (set device) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
set family (set device family) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
set package (set device package) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
set speed (set device speed) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
set top (set the top-level module/entity) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
timing_analysis (generate timing analysis reports) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
delete (delete timing analysis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
disable_constraints (disable timing constraints) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
disable_cpt (disable components for path tracing control) . . . . . . . . . . . . . . . . . . . . . . .
enable_constraints (enable constraints for analysis) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
enable_cpt (enable components for path tracing control) . . . . . . . . . . . . . . . . . . . . . . . .
get (get analysis property) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
new (new timing analysis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
reset (reset path filters and constraints) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
run (run analysis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
saveas (save analysis report) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
www.xilinx.com
58
59
59
60
61
61
62
63
63
64
64
65
65
65
66
66
67
67
68
68
69
69
70
70
70
71
71
72
72
73
75
76
76
76
Development System Reference Guide
R
set (set analysis properties) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
set_constraint (set constraint for custom analysis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
set_endpoints (set source and destination endpoints) . . . . . . . . . . . . . . . . . . . . . . . . . .
set_filter (set filter for analysis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
set_query (set up net or timegroup report) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
show_settings (generate settings report). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xfile (manage project files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
add (add file to project) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
get (get project file properties) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
remove (remove file from project) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
77
78
79
79
80
80
80
81
81
Tcl Commands for Advanced Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
collection (create and manage a collection) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
append_to (add objects to a collection) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
copy (copy a collection) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
equal (compare two collections) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
foreach (iterate over elements in a collection) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
get (get collection property) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
index (extract a collection object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
properties (list available collection properties) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
remove_from (remove objects from a collection) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
set (set the property for all collections) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
sizeof (show the number of objects in a collection) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
object (get object information) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
get (get object properties) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
name (name of the object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
properties (list object properties) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
type (type of object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
search (search and return matching objects) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
82
83
84
85
85
86
86
87
87
88
88
89
89
90
91
91
Project Properties and Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Example Tcl Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Sample Tcl Script for General Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Sample Tcl Script for Advanced Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Chapter 4: PARTGen
PARTGen Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PARTGen Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PARTGen Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PARTGen Output Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PARTGen Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–arch (Print Information for Specified Architecture) . . . . . . . . . . . . . . . . . . . . . . . . . .
–i (Print a List of Devices, Packages, and Speeds) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–p (Creates Package file and Partlist Files). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–nopkgfile (No Package File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–v (Creates Package and Partlist Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
101
101
102
102
102
102
104
107
107
107
108
Partlist File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Device Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
PKG File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Development System Reference Guide
www.xilinx.com
9
R
Chapter 5: Logical Design Rule Check
Logical DRC Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Logical DRC Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Block Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Net Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pad Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Clock Buffer Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Name Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Primitive Pin Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
114
114
114
115
115
116
Chapter 6: NGDBuild
NGDBuild Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Converting a Netlist to an NGD File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
NGDBuild Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NGDBuild Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NGDBuild Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NGDBuild Intermediate Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NGDBuild Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–a (Add PADs to Top-Level Port Signals) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–aul (Allow Unmatched LOCs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–bm (Specify BMM Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–dd (Destination Directory) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–f (Execute Commands File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–i (Ignore UCF File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–insert_keep_hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–l (Libraries to Search) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–modular assemble (Module Assembly) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–modular initial (Initial Budgeting of Modular Design) . . . . . . . . . . . . . . . . . . . . . . .
–modular module (Active Module Implementation) . . . . . . . . . . . . . . . . . . . . . . . . . .
–nt (Netlist Translation Type) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–p (Part Number) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–r (Ignore LOC Constraints) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–sd (Search Specified Directory) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–u (Allow Unexpanded Blocks) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–uc (User Constraints File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ur (Read User Rules File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–verbose (Report All Messages) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
119
119
121
121
121
121
122
122
122
122
122
123
123
123
124
124
125
125
125
126
126
126
127
127
127
Chapter 7: MAP
MAP Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MAP Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MAP Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MAP Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MAP Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–bp (Map Slice Logic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–c (Pack CLBs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–cm (Cover Mode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–detail (Write Out Detailed MAP Report) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
www.xilinx.com
129
130
131
131
132
133
133
134
134
Development System Reference Guide
R
–equivalent_register_removal (Remove Redundant Registers) . . . . . . . . . . . . . . . . .
–f (Execute Commands File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–gf (Guide NCD File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–global_opt (Global Optimization) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–gm (Guide Mode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–gm incremental (Guide Mode incremental) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ignore_keep_hierarchy (Ignore KEEP_HIERARCHY Properties) . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ir (Do Not Use RLOCs to Generate RPMs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ise (ISE Project File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–k (Map to Input Functions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–l (No logic replication) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–o (Output File Name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ol (Overall Effort Level) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–p (Part Number) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–pr (Pack Registers in I/O) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–r (No Register Ordering) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–register_duplication (Duplicate Registers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–retiming (Register Retiming During Global Optimization) . . . . . . . . . . . . . . . . . . . .
–t (Start Placer Cost Table) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–timing (Timing-Driven Packing and Placement) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–tx (Transform Buses) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–u (Do Not Remove Unused Logic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–xe (Extra Effort Level) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
134
135
135
135
135
135
136
136
136
136
136
137
137
138
138
139
139
139
139
139
140
140
141
141
MAP Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Register Ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Guided Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Simulating Map Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MAP Report (MRP) File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Halting MAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
141
142
144
145
147
153
Chapter 8: Physical Design Rule Check
DRC Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DRC Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DRC Input File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DRC Output File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DRC Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–e (Error Report). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–o (Output file) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–s (Summary Report) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–v (Verbose Report) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–z (Report Incomplete Programming) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
155
156
156
156
156
156
156
156
156
157
DRC Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
DRC Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Chapter 9: PAR
Place and Route Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
PAR Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Placing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Development System Reference Guide
www.xilinx.com
11
R
Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Timing-driven PAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Command Line Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Guided PAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
PCI Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
PAR Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PAR Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PAR Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PAR Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Detailed Listing of Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–f (Execute Commands File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–gf (Guide NCD File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–gm (Guide Mode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–k (Re-Entrant Routing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–m (Multi-Tasking Mode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–n (Number of PAR Iterations) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–nopad (No Pad) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ol (Overall Effort Level) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–p (No Placement) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–pl (Placer Effort Level) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–power (Power Aware PAR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–r (No Routing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–rl (Router Effort Level) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–s (Number of Results to Save) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–t (Starting Placer Cost Table) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ub (Use Bonded I/Os) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–w (Overwrite Existing Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–x (Performance Evaluation Mode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–xe (Extra Effort Level) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
165
165
165
166
168
168
168
169
169
169
170
170
170
170
171
171
171
171
171
172
172
172
172
173
173
PAR Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Place and Route Report File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Multi Pass Place and Route (MPPR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Select I/O Utilization and Usage Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Importing the PAD File Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Guide Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Xplorer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Best Performance Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Timing Closure Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xplorer Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xplorer Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xplorer Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xplorer Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xplorer Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
180
181
181
182
182
182
183
ReportGen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
ReportGen Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ReportGen Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ReportGen Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ReportGen Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
www.xilinx.com
185
185
185
186
Development System Reference Guide
R
Turns Engine (PAR Multi-Tasking Option) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Turns Engine Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Turns Engine Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Turns Engine Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Turns Engine Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Turns Engine Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Screen Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
187
188
188
189
189
189
190
191
192
Halting PAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Chapter 10: XPower
XPower Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Files Used by XPower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
XPower Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
FPGA Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
CPLD Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Using XPower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
VCD Data Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Other Methods of Data Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Command Line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
-l (Limit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-ls (List Supported Devices) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-o (Rename Power Report) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-s (Specify VCD file). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-tb (Turn On Time Based Reporting) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-v (Verbose Report) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-wx (Write XML File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-x (Specify Settings (XML) Input File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
200
200
200
201
201
201
201
201
Command Line Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Power Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Standard Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Detailed Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Advanced Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Chapter 11: PIN2UCF
PIN2UCF Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PIN2UCF Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PIN2UCF Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PIN2UCF Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PIN2UCF Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
205
207
207
207
208
–o (Output File Name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
–r (Write to a Report File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
PIN2UCF Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Development System Reference Guide
www.xilinx.com
13
R
Chapter 12: TRACE
TRACE Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
TRACE Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
TRACE Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Input files to TRACE: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
TRACE Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
TRACE Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
–a (Advanced Analysis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–e (Generate an Error Report) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–f (Execute Commands File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–fastpaths (Report Fastest Paths) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ise (ISE Project File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–l (Limit Timing Report) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–nodatasheet (No Data Sheet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–o (Output Timing Report File Name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–run (Run Timing Analyzer Macro) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–s (Change Speed) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–skew (Analyze Clock Skew for All Clocks) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–stamp (Generates STAMP timing model files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–u (Report Uncovered Paths) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–v (Generate a Verbose Report) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–xml (XML Output File Name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
214
214
214
214
215
215
215
215
215
216
216
216
217
217
218
218
TRACE Command Line Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
TRACE Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Timing Verification with TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Net Delay Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Net Skew Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Path Delay Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Clock Skew and Setup Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Reporting with TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Sheet Report. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Report Legend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Guaranteed Setup and Hold Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Setup Times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hold Times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Summary Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Summary Report (Without a Physical Constraints File Specified) . . . . . . . . . . . . . . . .
Error Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verbose Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
220
220
220
220
221
224
226
229
229
230
230
230
231
233
236
OFFSET Constraints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
OFFSET IN Constraint Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OFFSET IN Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OFFSET IN Path Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OFFSET IN Detailed Path Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OFFSET IN Detail Path Clock Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OFFSET In with Phase Shifted Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OFFSET OUT Constraint Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OFFSET OUT Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OFFSET OUT Path Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OFFSET OUT Detail Clock Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
www.xilinx.com
240
240
240
241
242
242
244
244
245
245
Development System Reference Guide
R
OFFSET OUT Detail Path Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
PERIOD Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
PERIOD Constraints Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PERIOD Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PERIOD Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PERIOD Path Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PERIOD Constraint with PHASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
247
247
248
249
250
Halting TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Chapter 13: Speedprint
Speedprint Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Speedprint Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Speedprint Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–min (Display Minimum Speed Data) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–s (Speed Grade) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–t (Specify Temperature) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–v (Specify Voltage) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
254
254
254
254
255
Speedprint Example Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Speedprint Example Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Chapter 14: BitGen
BitGen Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BitGen Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BitGen Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BitGen Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BitGen Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–b (Create Rawbits File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–bd (Update Block Rams) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–d (Do Not Run DRC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–f (Execute Commands File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–g (Set Configuration) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–g (Set Configuration—Virtex/-E/-II/-II Pro/-4 and Spartan-II/-IIE/-3/-3E) . . . .
ActivateGCLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ActiveReconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Binary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CclkPin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Compress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ConfigRate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CRC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DCIUpdateMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DCMShutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DebugBitstream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DisableBandgap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DONE_cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DonePin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DonePipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DriveDone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Encrypt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Development System Reference Guide
www.xilinx.com
257
258
259
259
260
260
261
261
261
261
261
262
262
262
262
263
263
263
264
264
264
265
265
265
265
266
266
15
R
Gclkdel0, Gclkdel1, Gclkdel2, Gclkdel3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GSR_cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GWE_cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GTS_cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
HswapenPin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Key0, Key1, Key2, Key3, Key4, Key5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
KeyFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Keyseq0, Keyseq1, Keyseq2, Keyseq3, Keyseq4, Keyseq5 . . . . . . . . . . . . . . . . . . . . . . .
LCK_cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
M0Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
M1Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
M2Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Match_cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PartialGCLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PartialMask0, PartialMask1, PartialMask2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PartialLeft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PartialRight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Persist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PowerdownPin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ProgPin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ReadBack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SEURepair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
StartCBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
StartKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
StartupClk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TckPin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TdiPin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TdoPin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TmsPin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UnusedPin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UserID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–j (No BIT File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–l (Create a Logic Allocation File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–m (Generate a Mask File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–r (Create a Partial Bit File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–w (Overwrite Existing Output File). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
266
266
267
267
267
267
268
268
268
268
269
269
269
269
270
270
270
270
271
271
271
271
272
272
272
272
273
273
273
273
274
274
274
274
275
275
275
275
Chapter 15: BSDLAnno
BSDLAnno Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BSDLAnno Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BSDLAnno Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BSDLAnno Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BSDLAnno Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
277
278
278
278
278
–s (Specify BSDL file) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
BSDLAnno File Composition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Entity Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generic Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Logical Port Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Package Pin-Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
www.xilinx.com
279
279
280
280
Development System Reference Guide
R
USE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Scan Port Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TAP Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Boundary Register Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modifications to the DESIGN_WARNING Section . . . . . . . . . . . . . . . . . . . . . . . . . . .
Header Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
281
281
281
282
284
284
Boundary Scan Behavior in Xilinx Devices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Chapter 16: PROMGen
PROMGen Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROMGen Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROMGen Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROMGen Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROMGen Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–b (Disable Bit Swapping—HEX Format Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–c (Checksum) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–d (Load Downward) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–f (Execute Commands File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–i (Select Initial Version) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–l (Disable Length Count) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–n (Add BIT FIles) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–o (Output File Name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–p (PROM Format) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–r (Load PROM File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–s (PROM Size) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–t (Template File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–u (Load Upward) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ver (Version) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–w (Overwrite Existing Output File). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–x (Specify Xilinx PROM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–z (Enable Compression) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
285
286
286
286
287
287
287
287
287
287
287
288
288
288
288
289
289
289
289
289
289
290
Bit Swapping in PROM Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
PROMGen Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Chapter 17: IBISWriter
IBISWriter Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IBISWriter Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IBISWriter Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IBISWriter Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IBISWriter Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–allmodels (Include all available buffer models for this architecture) . . . . . . . . . . . .
–g (Set Reference Voltage) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ml (Multilingual Support). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–pin (Generate Package Parasitics) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Development System Reference Guide
www.xilinx.com
293
294
295
295
295
295
295
296
296
297
17
R
Chapter 18: CPLDfit
CPLDfit Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CPLDfit Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CPLDfit Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CPLDfit Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CPLDfit Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–blkfanin (Specify Maximum Fanin for Function Blocks) . . . . . . . . . . . . . . . . . . . . . .
–exhaust (Enable Exhaustive Fitting) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ignoredatagate (Ignore DATA_GATE Attributes) . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ignoretspec (Ignore Timing Specifications) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–init (Set Power Up Value) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–inputs (Number of Inputs to Use During Optimization) . . . . . . . . . . . . . . . . . . . . . .
–iostd (Specify I/O Standard) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–keepio (Prevent Optimization of Unused Inputs) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–loc (Keep Specified Location Constraints) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–localfbk (Use Local Feedback) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–log (Specify Log File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–nofbnand (Disable Use of Foldback NANDS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–nogclkopt (Disable Global Clock Optimization) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–nogsropt (Disable Global Set/Reset Optimization) . . . . . . . . . . . . . . . . . . . . . . . . . .
–nogtsopt (Disable Global Output-Enable Optimization) . . . . . . . . . . . . . . . . . . . . . .
–noisp (Turn Off Reserving ISP Pin) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–nom1opt (Disable Multi-level Logic Optimization) . . . . . . . . . . . . . . . . . . . . . . . . . .
–nouim (Disable FASTConnect/UIM Optimization) . . . . . . . . . . . . . . . . . . . . . . . . . .
–ofmt (Specify Output Format) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–optimize (Optimize Logic for Density or Speed) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–p (Specify Xilinx Part) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–pinfbk (Use Pin Feedback) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–power (Set Power Mode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–pterms (Number of Pterms to Use During Optimization) . . . . . . . . . . . . . . . . . . . . .
–slew (Set Slew Rate) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–terminate (Set to Termination Mode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–unused (Set Termination Mode of Unused I/Os) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–wysiwyg (Do Not Perform Optimization) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
299
300
300
300
301
301
301
301
301
301
302
302
302
302
302
302
303
303
303
303
303
303
303
303
304
304
304
304
304
305
305
305
305
Chapter 19: TSIM
TSIM Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TSIM Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TSIM Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TSIM Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
307
307
308
308
Chapter 20: TAEngine
TAEngine Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TAEngine Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TAEngine Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TAEngine Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
www.xilinx.com
309
310
310
310
Development System Reference Guide
R
TAEngine Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
–detail (Detail Report) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
–iopath (Trace Paths) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
–l (Specify Output Filename) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Chapter 21: Hprep6
Hprep6 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hprep6 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hprep6 Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hprep6 Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hprep6 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–autosig (Automatically Generate Signature) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–n (Specify Signature Value for Readback) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–nopullup (Disable Pullups) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–s (Produce ISC File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–tmv (Specify Test Vector File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
313
314
314
314
314
314
314
315
315
315
315
Chapter 22: NetGen
NetGen Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
NetGen Supported Flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
NetGen Simulation Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
NetGen Functional Simulation Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Notes on Functional Simulation for UNISIM-based Netlists . . . . . . . . . . . . . . . . . . . . 320
Syntax for NetGen Functional Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Output files for NetGen Functional Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
NetGen Timing Simulation Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Syntax for NetGen Timing Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FPGA Timing Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Output files for FPGA Timing Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CPLD Timing Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Input files for CPLD Timing Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Output files for CPLD Timing Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Options for NetGen Simulation Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–aka (Write Also-Known-As Names as Comments) . . . . . . . . . . . . . . . . . . . . . . . . . . .
–bd (Block RAM Data File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–dir (Directory Name). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–fn (Control Flattening a Netlist) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–gp (Bring Out Global Reset Net as Port) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–insert_pp_buffers (Insert Path Pulse Buffers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–mhf (Multiple Hierarchical Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–module (Simulation of Active Module). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ofmt (Output Format) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–pcf (PCF File). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–s (Change Speed). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–sim (Generate Simulation Netlist) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–tb (Generate Testbench Template File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ti (Top Instance Name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–tm (Top Module Name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Development System Reference Guide
www.xilinx.com
321
321
322
322
322
322
323
323
323
323
323
323
324
324
324
324
325
325
325
325
325
326
326
19
R
–tp (Bring Out Global 3-State Net as Port) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
–w (Overwrite Existing Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Verilog-Specific Options for Functional and Timing Simulation . . . . . . . . . . . . . . . .
–insert_glbl (Insert glbl.v Module) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ism (Include SimPrim Modules in Verilog File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ne (No Name Escaping) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–pf (Generate PIN File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–sdf_anno (Include $sdf_annotate) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–sdf_path (Full Path to SDF File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–shm (Write $shm Statements in Test Fixture File) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ul (Write uselib Directive) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–vcd (Write $dump Statements In Test Fixture File) . . . . . . . . . . . . . . . . . . . . . . . . . . .
VHDL-Specific Options for Functional and Timing Simulation . . . . . . . . . . . . . . . . .
–a (Architecture Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ar (Rename Architecture Name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–rpw (Specify the Pulse Width for ROC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–tpw (Specify the Pulse Width for TOC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–xon (Select Output Behavior for Timing Violations) . . . . . . . . . . . . . . . . . . . . . . . . . .
326
326
326
327
327
327
327
327
328
328
328
328
328
328
328
329
NetGen Equivalence Checking Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Syntax for NetGen Equivalence Checking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Input files for NetGen Equivalence Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Output files for NetGen Equivalence Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Options for NetGen Equivalence Checking Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–aka (Write Also-Known-As Names as Comments) . . . . . . . . . . . . . . . . . . . . . . . . . . .
–bd (Block RAM Data File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–dir (Directory Name). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ecn (Equivalence Checking) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–fn (Control Flattening a Netlist) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–mhf (Multiple Hierarchical Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–module (Verification of Active Module) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ne (No Name Escaping) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ngm (Design Correlation File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–tm (Top Module Name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–w (Overwrite Existing Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
330
330
331
331
331
331
331
331
332
332
332
332
332
333
333
333
NetGen Static Timing Analysis Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Input files for Static Timing Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Output files for Static Timing Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Syntax for NetGen Static Timing Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Options for NetGen Static Timing Analysis Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–aka (Write Also-Known-As Names as Comments) . . . . . . . . . . . . . . . . . . . . . . . . . . .
–bd (Block RAM Data File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–dir (Directory Name). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–fn (Control Flattening a Netlist) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–mhf (Multiple Hierarchical Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–module (Simulation of Active Module). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ne (No Name Escaping) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–pcf (PCF File). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–s (Change Speed). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–sta (Generate Static Timing Analysis Netlist) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–tm (Top Module Name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–w (Overwrite Existing Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
www.xilinx.com
334
334
334
335
335
335
335
335
335
335
336
336
336
336
337
337
337
Development System Reference Guide
R
Preserving and Writing Hierarchy Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Testbench File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Hierarchy Information File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Dedicated Global Signals in Back-Annotation Simulation . . . . . . . . . . . . . . . . . . 338
Global Signals in Verilog Netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Global Signals in VHDL Netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Chapter 23: XFLOW
XFLOW Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XFLOW Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XFLOW Input Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XFLOW Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XFLOW Flow Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–assemble (Module Assembly) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–config (Create a BIT File for FPGAs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ecn (Create a File for Equivalence Checking) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–fit (Fit a CPLD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–fsim (Create a File for Functional Simulation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–implement (Implement an FPGA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–initial (Initial Budgeting of Modular Design) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–module (Active Module Implementation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–mppr (Multi-Pass Place and Route for FPGAs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–sta (Create a File for Static Timing Analysis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–synth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Synthesis Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Option Files for -synth Flow Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–tsim (Create a File for Timing Simulation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Flow Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Flow File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
User Command Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
341
342
343
344
347
347
348
348
349
349
350
351
352
353
353
354
354
355
355
356
357
359
XFLOW Option Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Option File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
XFLOW Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
–active (Active Module) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–ed (Copy Files to Export Directory) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–f (Execute Commands File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–g (Specify a Global Variable) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–log (Specify Log File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–norun (Creates a Script File Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–o (Change Output File Name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–p (Part Number) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–pd (PIMs Directory) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–rd (Copy Report Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–wd (Specify a Working Directory) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
361
361
361
361
361
362
362
363
363
363
364
Running XFLOW. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Using XFLOW Flow Types in Combination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Running “Smart Flow” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using the SCR, BAT, or TCL File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using the XIL_XFLOW_PATH Environment Variable . . . . . . . . . . . . . . . . . . . . . . . .
Development System Reference Guide
www.xilinx.com
364
364
365
365
21
R
Chapter 24: Data2MEM
Data2MEM Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Data2MEM Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Data2MEM Input and Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Block RAM Memory Map (.bmm) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Executable and Linkable Format (.elf) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Debugging Information Format DWARF (.drf) files . . . . . . . . . . . . . . . . . . . . . . . . . .
Memory (.mem) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Memory (.mem) Files as Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bit (.bit) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verilog (.v) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VHDL (.vhd) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UCF (.ucf) files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
368
368
369
369
369
369
369
370
370
Data2MEM Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
A: Xilinx Development System Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
373
B: EDIF2NGD, and NGDBuild
EDIF2NGD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
EDIF2NGD Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EDIF2NGD Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EDIF2NGD Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EDIF2NGD Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–a (Add PADs to Top-Level Port Signals) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–aul (Allow Unmatched LOCs). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–f (Execute Commands File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–intstyle (Integration Style) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–l (Libraries to Search) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–p (Part Number) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
–r (Ignore LOC Constraints) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
381
381
381
382
382
382
382
382
383
383
383
NGDBuild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
Converting a Netlist to an NGD File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
Bus Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Netlist Launcher (Netlister) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Netlist Launcher Rules Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
User Rules File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
User Rules and System Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
User Rules Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Value Types in Key Statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
System Rules File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rules File Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Example 1: EDF_RULE System Rule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Example 2: User Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Example 3: User Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Example 4: User Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
388
388
388
388
390
390
391
391
392
392
393
NGDBuild File Names and Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Glossary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
www.xilinx.com
395
Development System Reference Guide
R
Chapter 1
Introduction
This chapter describes the command line programs for the Xilinx development system.
The chapter contains the following sections:
•
“Command Line Program Overview”
•
“Command Line Syntax”
•
“Command Line Options”
•
“Invoking Command Line Programs”
Command Line Program Overview
Xilinx command line programs allow you to implement and verify your design. The
following table lists the programs you can use for each step in the design flow. For detailed
information, see Chapter 2, “Design Flow”.
Table 1-1:
Command Line Programs in the Design Flow
Design Flow Step
Command Line Program
Design Implementation
NGDBuild, MAP, PAR, Xplorer,
BitGen
Design Preservation
TCL
Timing Simulation and Back
Annotation
NetGen
(Design Verification)
Static Timing Analysis
TRACE
(Design Verification)
You can run these programs in the standard design flow or use special options to run the
programs for design preservation. Each command line program has multiple options,
which allow you to control how a program executes. For example, you can set options to
change output file names, to set a part number for your design, or to specify files to read in
when executing the program. You can also use options to create guide files and run guide
mode to maintain the performance of a previously implemented design.
Some of the command line programs described in this manual underlie many of the Xilinx
Graphical User Interfaces (GUIs). The GUIs can be used in conjunction with the command
line programs or alone. For information on the GUIs, see the online Help provided with
each Xilinx tool.
Development System Reference Guide
www.xilinx.com
23
R
Chapter 1: Introduction
Command Line Syntax
Command line syntax always begins with the command line program name. The program
name is followed by any options and then file names. Use the following rules when
specifying command line options:
•
Enter options in any order.
•
Precede options with a hyphen (-) and separate them with spaces.
•
Be consistent with upper case and lower case.
•
When an option requires a parameter, separate the parameter from the option by
spaces or tabs. For example, the following shows the command line syntax for
running PAR with the effort level set to medium:
•
•
♦
Correct: par -ol med
♦
Incorrect: par -ol med
When using options that can be specified multiple times, precede the parameter with
the option letter. In this example, the -l option shows the list of libraries to search:
♦
Correct: -l xilinxun -l synopsys
♦
Incorrect: -l xilinxun synopsys
Enter parameters that are bound to an option after the option.
♦
Correct: -f command_file
♦
Incorrect: command_file -f
Use the following rules when specifying file names:
•
•
Enter file names in the order specified in the chapter that describes the command line
program. In this example the correct order is program, input file, output file, and then
physical constraints file.
♦
Correct: par input.ncd output.ncd freq.pcf
♦
Incorrect: par input.ncd freq.pcf output.ncd
Use lower case for all file extensions (for example, .ncd).
Command Line Options
The following options are common to many of the command line programs in the Xilinx
Development System.
–f (Execute Commands File)
For any Xilinx Development System program, you can store command line program
options and file names in a command file. You can then execute the arguments by entering
the program name with the –f option followed by the name of the command file. This is
useful if you frequently execute the same arguments each time you execute a program or if
the command line command becomes too long.
You can use the file in the following ways:
•
To supply all the command options and file names for the program, as in the
following example:
par -f command_file
command_file is the name of the file that contains the command options and file names.
24
www.xilinx.com
Development System Reference Guide
R
Command Line Options
•
To insert certain command options and file names within the command line, as in the
following example:
par -f placeoptions -s 4 -f routeoptions design_i.ncd design_o.ncd
placeoptions is the name of a file containing placement command parameters.
routeoptions is the name of a file containing routing command parameters.
You create the command file in ASCII format. Use the following rules when creating the
command file:
•
Separate program options and file names with spaces.
•
Precede comments with the pound sign (#).
•
Put new lines or tabs anywhere white space is allowed on the UNIX or DOS
command line.
•
Put all arguments on the same line, one argument per line, or a combination of these.
•
All carriage returns and other non-printable characters are treated as spaces and
ignored.
•
No line length limitation exists within the file.
Following is an example of a command file:
#command line options for par for design mine.ncd
-n 10
-w
0l 5
-s 2 #will save the two best results
/home/yourname/designs/xilinx/mine.ncd
#directory for output designs
/home/yourname/designs/xilinx/output.dir
#use timing constraints file
/home/yourname/designs/xilinx/mine.pcf
–h (Help)
When you enter a program name followed by –help or –h, a message displays that lists all
the available options and their parameters as well as the file types for use with the
program. The message also explains each of the options.
Following are descriptions for the symbols used in the help message:
Symbol
Description
[]
Encloses items that are optional.
{}
Encloses items that may be repeated.
<>
Encloses a variable name or number for which you
must substitute information.
,
Shows a range for an integer variable.
–
Shows the start of an option name.
:
Binds a variable name to a range.
Development System Reference Guide
www.xilinx.com
25
R
Chapter 1: Introduction
Symbol
Description
|
Logical OR to show a choice of one out of many items.
The OR operator may only separate logical groups or
literal keywords.
()
Encloses a logical grouping for a choice between
subformats.
Following are examples of syntax used for file names:
•
shows that typing the .ncd extension is optional but that the extension
must be .ncd.
•
> shows that the .edn extension is optional and is appended only if there
is no other extension in the file name.
For architecture-specific programs, such as BitGen, you can enter the following to get a
verbose help message for the specified architecture:
program_name –h architecture_name
You can redirect the help message to a file to read later or to print out by entering the
following:
program_name –h > filename
On the UNIX command line, enter the following to redirect the help message to a file and
return to the command prompt.
program_name –h > & filename
–intstyle (Integration Style)
You can limit screen output, based on the integration style that you are running, to
warning and error messages only. When using the –intstyle option, one of three modes
must be specified: ise, xflow, or silent. The mode sets the way information is displayed in the
following ways:
–intstyle {ise | xflow | silent}
–intstyle ise
This mode indicates the program is being run as part of an integrated design
environment.
–intstyle xflow
This mode indicates the program is being run as part of an integrated batch flow.
–intstyle silent
This mode limits screen output to warning and error messages only.
Note: The -intstyle option is automatically invoked when running in an integrated environment, such
as Project Navigator or XFLOW.
26
www.xilinx.com
Development System Reference Guide
R
Command Line Options
–p (Part Number)
You can use the –p option with the EDIF2NGD, NGDBuild, MAP, and XFLOW programs
to specify the part into which your design will be implemented. You can specify a part
number at the following different points in the design flow:
•
In the input netlist (does not require the –p option)
•
In a Netlist Constraints File (NCF) (does not require the –p option)
•
With the –p option when you run a netlist reader (EDIF2NGD) User Constraints File
(UCF) (does not require the –p option)
•
With the –p option when you run NGDBuild
By the time you run NGDBuild, you must have already specified a device architecture.
•
With the –p option when you run MAP
When you run MAP, an architecture, device, and package must be specified, either on
the MAP command line or earlier in the design flow. If you do not specify a speed,
MAP selects a default speed. You can only run MAP using a part number from the
architecture you specified when you ran NGDBuild.
Note: Part numbers specified in a later step of the design flow override a part number specified in
an earlier step. For example, a part specified when you run MAP overrides a part specified in the
input netlist.
A complete Xilinx part number consists of the following elements:
•
Architecture (for example, Spartan-3e)
•
Device (for example, xc3s100e)
•
Package (for example, vq100)
•
Speed (for example, -4)
Note: The Speedprint program lists block delays for device speed grades. The -s option allows you
to specify a speed grade. If you do not specify a speed grade, Speedprint reports the default speed
grade for the device you are targeting. See “–s (Speed Grade)” in Chapter 13 for details.
The following table lists multiple ways to specify a part on the command line.
Table 1-2:
Part Number Examples
Specification
Architecture only
Examples
virtex
virtex2
virtex2p
virtex4
spartan2
spartan2e
spartan 3
spartan 3e
xc9500
xpla3
Device only
xc4vfx12
xc3s100e
Development System Reference Guide
www.xilinx.com
27
R
Chapter 1: Introduction
Table 1-2:
Part Number Examples
Specification
DevicePackage
Examples
xc4fx12sf363
xc3s100evq100
Device–Package
xc4vfx12-sf363
xc3s100e-vq100
DeviceSpeed–Package
xc4vfx1210-sf363
xc3s100e4-vq100
DevicePackage–Speed
xc4fx12sf363-10
xc3s100evq100-4
Device–Speed–Package
xc4vfx12-10-sf363
xc3s100e-4-vq100
Device–SpeedPackage
xc4vfx12-10sf363
xc3s100e-4vq100
Invoking Command Line Programs
You start Xilinx Development System command line programs by entering a command at
the UNIX™ or DOS™ command line. See the program-specific chapters in this book for the
appropriate syntax
Xilinx also offers the XFLOW program, which allows you to automate the running of
several programs at one time. See Chapter 23, “XFLOW” for more information.
28
www.xilinx.com
Development System Reference Guide
R
Chapter 2
Design Flow
This chapter describes the process for creating, implementing, verifying, and downloading
designs for FPGA and CPLD devices. For a complete description of FPGAs and CPLDs,
refer to the Xilinx Data Sheets at
http://www.xilinx.com/xlnx/xweb/xil_publications_index.jsp
This chapter contains the following sections:
•
“Design Flow Overview”
•
“Design Entry and Synthesis”
•
“Design Implementation”
•
“Design Verification”
•
“FPGA Design Tips”
Design Flow Overview
The standard design flow comprises the following steps:
1.
Design Entry and Synthesis—In this step of the design flow, you create your design
using a Xilinx-supported schematic editor, a hardware description language (HDL) for
text-based entry, or both. If you use an HDL for text-based entry, you must synthesize
the HDL file into an EDIF file or, if you are using the Xilinx Synthesis Technology
(XST) GUI, you must synthesize the HDL file into an NGC file.
2.
Design Implementation—By implementing to a specific Xilinx architecture, you
convert the logical design file format, such as EDIF, that you created in the design
entry and synthesis stage into a physical file format. The physical information is
contained in the native circuit description (NCD) file for FPGAs and the VM6 file for
CPLDs. Then you create a bitstream file from these files and optionally program a
PROM or EPROM for subsequent programming of your Xilinx device.
3.
Design Verification—Using a gate-level simulator or cable, you ensure that your
design meets your timing requirements and functions properly. See the iMPACT
online help for information about Xilinx download cables and demonstration boards.
The full design flow is an iterative process of entering, implementing, and verifying your
design until it is correct and complete. The Xilinx Development System allows quick
design iterations through the design flow cycle. Because Xilinx devices permit unlimited
reprogramming, you do not need to discard devices when debugging your design in
circuit.
Development System Reference Guide
www.xilinx.com
29
R
Chapter 2: Design Flow
The following figure shows the standard Xilinx design flow.
Design Verification
Design
Entry
Functional
Simulation
Design
Synthesis
Design
Implementation
Static Timing
Analysis
Optimization
FPGAs
Mapping
Placement
Routing
Back
Annotation
CPLDs
Fitting
Timing
Simulation
Bitstream
Generation
Download to a
Xilinx Device
In-Circuit
Verification
X9537
Figure 2-1:
30
www.xilinx.com
Xilinx Design Flow
Development System Reference Guide
R
Design Flow Overview
The following figure shows the Xilinx software flow chart for FPGA designs.
Schematic
Libraries
CORE Generator
Synthesis
Libraries
HDL
Simulation
Libraries
Testbench
Stimulus
Symbol
Schematic Capture
NGC
Synthesis
NGC
(XST Netlist)
EDIF 2 0 0 &
Constraints/NCF
UCF
NGDBuild
NGDBuild
NGDBuild
Simulation
V&
SDF 2.1
VHD &
SDF 2.1
EDIF
200
NetGen
NGD
Constraints Editor
Floorplanner
MAP
NGM & PCF
NetGen
NCD & PCF
TRACE &
Timing Analyzer
PAR
NCD
BitGen
BIT
PROMGen
iMPACT
Figure 2-2:
Development System Reference Guide
X10293
Xilinx Software Design Flow (FPGAs)
www.xilinx.com
31
R
Chapter 2: Design Flow
The following figure shows the Xilinx software flow chart for CPLD designs.
CORE Generator
Schematic
Libraries
Synthesis
Libraries
HDL
Simulation
Libraries
Testbench
Stimulus
Symbol
Schematic Capture
NGC
Synthesis
NGC
(XST Netlist)
EDIF 2 0 0 &
Constraints/NCF
NGDBuild
NGDBuild
Simulation
V&
SDF 2.1
VHD &
SDF 2.1
EDIF
200
NetGen
NGDBuild
NGD
GYD
CPLD Fitter
JED
VM6
iMPACT
Timing Analyzer
X10294
Figure 2-3:
32
Xilinx Software Design Flow (CPLDs)
www.xilinx.com
Development System Reference Guide
R
Design Entry and Synthesis
Design Entry and Synthesis
You can enter a design with a schematic editor or a text-based tool. Design entry begins
with a design concept, expressed as a drawing or functional description. From the original
design, a netlist is created, then synthesized and translated into a native generic object
(NGO) file. This file is fed into the Xilinx software program called NGDBuild, which
produces a logical native generic database (NGD) file.
The following figure shows the design entry and synthesis process.
CORE Generator
Synthesis
Libraries
Schematic
Libraries
Synthesis
Schematic Capture
UCF
HDL
EDIF 2 0 0 &
Constraints/NCF
NGC
(XST Netlist)
NGDBuild
X10295
Figure 2-4:
Design Entry Flow
Hierarchical Design
Design hierarchy is important in both schematic and HDL entry for the following reasons:
•
Helps you conceptualize your design
•
Adds structure to your design
•
Promotes easier design debugging
•
Makes it easier to combine different design entry methods (schematic, HDL, or state
editor) for different parts of your design
•
Makes it easier to design incrementally, which consists of designing, implementing,
and verifying individual parts of a design in stages
•
Reduces optimization time
•
Facilitates concurrent design, which is the process of dividing a design among a
number of people who develop different parts of the design in parallel.
Development System Reference Guide
www.xilinx.com
33
R
Chapter 2: Design Flow
In hierarchical designing, a specific hierarchical name identifies each library element,
unique block, and instance you create. The following example shows a hierarchical name
with a 2-input OR gate in the first instance of a multiplexer in a 4-bit counter:
/Acc/alu_1/mult_4/8count_3/4bit_0/mux_1/or2
Xilinx strongly recommends that you name the components and nets in your design. These
names are preserved and used by the FPGA Editor tool. These names are also used for
back-annotation and appear in the debug and analysis tools. If you do not name your
components and nets, the schematic editor automatically generates the names. For
example, if left unnamed, the software might name the previous example, as follows:
/$1a123/$1b942/$1c23/$1d235/$1e121/$1g123/$1h57
Note: It is difficult to analyze circuits with automatically generated names, because the names only
have meaning for Xilinx software.
Schematic Entry Overview
Schematic tools provide a graphic interface for design entry. You can use these tools to
connect symbols representing the logic components in your design. You can build your
design with individual gates, or you can combine gates to create functional blocks. This
section focuses on ways to enter functional blocks using library elements and the CORE
Generator.
Library Elements
Primitives and macros are the “building blocks” of component libraries. Xilinx libraries
provide primitives, as well as common high-level macro functions. Primitives are basic
circuit elements, such as AND and OR gates. Each primitive has a unique library name,
symbol, and description. Macros contain multiple library elements, which can include
primitives and other macros.
You can use the following types of macros with Xilinx FPGAs:
•
Soft macros have pre-defined functionality but have flexible mapping, placement, and
routing. Soft macros are available for all FPGAs.
•
Relationally placed macros (RPMs) have fixed mapping and relative placement.
RPMs are available for all device families, except the XC9500 family.
Macros are not available for synthesis because synthesis tools have their own module
generators and do not require RPMs. If you wish to override the module generation, you
can instantiate CORE Generator modules. For most leading-edge synthesis tools, this does
not offer an advantage unless it is for a module that cannot be inferred.
CORE Generator Tool (FPGAs Only)
The Xilinx CORE Generator design tool delivers parameterizable cores that are optimized
for Xilinx FPGAs. The library includes cores ranging from simple delay elements to
complex DSP (Digital Signal Processing) filters and multiplexers. For details, refer to the
CORE Generator Guide. You can also refer to the Xilinx IP (Intellectual Property) Center
Web site at http://www.xilinx.com/ipcenter, which offers the latest IP solutions. These
solutions include design reuse tools, free reference designs, DSP and PCI solutions, IP
implementation tools, cores, specialized system level services, and vertical application IP
solutions.
34
www.xilinx.com
Development System Reference Guide
R
Design Entry and Synthesis
HDL Entry and Synthesis
A typical Hardware Description Language (HDL) supports a mixed-level description in
which gate and netlist constructs are used with functional descriptions. This mixed-level
capability enables you to describe system architectures at a high level of abstraction, then
incrementally refine the detailed gate-level implementation of a design.
HDL descriptions offer the following advantages:
•
You can verify design functionality early in the design process. A design written as an
HDL description can be simulated immediately. Design simulation at this high level,
at the gate-level before implementation, allows you to evaluate architectural and
design decisions.
•
An HDL description is more easily read and understood than a netlist or schematic
description. HDL descriptions provide technology-independent documentation of a
design and its functionality. Because the initial HDL design description is technology
independent, you can use it again to generate the design in a different technology,
without having to translate it from the original technology.
•
Large designs are easier to handle with HDL tools than schematic tools.
After you create your HDL design, you must synthesize it. During synthesis, behavioral
information in the HDL file is translated into a structural netlist, and the design is
optimized for a Xilinx device. Xilinx supports HDL synthesis tools for several third-party
synthesis vendors. In addition, Xilinx offers its own synthesis tool, Xilinx Synthesis
Technology (XST). See the Xilinx Synthesis Technology (XST) User Guide for information. For
detailed information on synthesis, see the Synthesis and Simulation Design Guide.
Functional Simulation
After you create your design, you can simulate it. Functional simulation tests the logic in
your design to determine if it works properly. You can save time during subsequent design
steps if you perform functional simulation early in the design flow. See “Simulation” for
more information.
Constraints
You may want to constrain your design within certain timing or placement parameters.
You can specify mapping, block placement, and timing specifications.
You can enter constraints manually or use the Constraints Editor, Floorplanner, or FPGA
Editor, which are graphical user interface (GUI) tools provided by Xilinx. You can use the
Timing Analyzer GUI or TRACE command line program to evaluate the circuit against
these constraints by generating a static timing analysis of your design. See Chapter 12,
“TRACE” and the online Help provided with each GUI for information. See the Constraints
Guide for detailed information on constraints.
Mapping Constraints (FPGAs Only)
You can specify how a block of logic is mapped into CLBs using an FMAP for all Spartan
FPGA and Virtex FPGA families. These mapping symbols can be used in your schematic.
However, if you overuse these specifications, it may be difficult to route your design.
Development System Reference Guide
www.xilinx.com
35
R
Chapter 2: Design Flow
Block Placement
Block placement can be constrained to a specific location, to one of multiple locations, or to
a location range. Locations can be specified in the schematic, with synthesis tools, or in the
User Constraints File (UCF). Poor block placement can adversely affect both the placement
and the routing of a design. Only I/O blocks require placement to meet external pin
requirements.
Timing Specifications
You can specify timing requirements for paths in your design. PAR uses these timing
specifications to achieve optimum performance when placing and routing your design.
Netlist Translation Programs
Two netlist translation programs allow you to read netlists into the Xilinx software tools.
EDIF2NGD allows you to read an Electronic Data Interchange Format (EDIF) 2 0 0 file. The
NGDBuild program automatically invokes these programs as needed to convert your
EDIF file to an NGD file, the required format for the Xilinx software tools. NGC files
output from the Xilinx XST synthesis tool are read in by NGDBuild directly.
You can find detailed descriptions of the EDIF2NGD, and NGDBuild programs in Chapter
6, “NGDBuild” and “Appendix B”.
Design Implementation
Design Implementation begins with the mapping or fitting of a logical design file to a
specific device and is complete when the physical design is successfully routed and a
bitstream is generated. You can alter constraints during implementation just as you did
during the Design Entry step. See “Constraints” for information.
36
www.xilinx.com
Development System Reference Guide
R
Design Implementation
The following figure shows the design implementation process for FPGA designs:
NGDBuild
UCF
NGD
Constraints Editor
Floorplanner
MAP
NCD & PCF
FPGA Editor
TRACE &
Timing Analyzer
PAR
NCD
BitGen
BIT
PROMGen
iMPACT
X10296
Figure 2-5:
Development System Reference Guide
Design Implementation Flow (FPGAs)
www.xilinx.com
37
R
Chapter 2: Design Flow
The following figure shows the design implementation process for CPLD designs:
NGDBuild
Implementation Options
NGD
CPLD Fitter
Design Loader
Auto Device/Speed Selector
Logic Synthesis
Technology Mapping
Global Net Optimization
Partitioning
Logic Optimization
Export Level Generator
Exporting
Assignments
PTerm Mapping
Pin Feedback Generation
Post-Mapping
Enhancements
Power/Slew Optimization
Routing
RPT
Fitter Report (Text)
GYD
VM6
HPLUSAS6
VM6
HPREP6
JED
iMPACT
X9493
Figure 2-6:
38
Design Implementation Flow (CPLDs)
www.xilinx.com
Development System Reference Guide
R
Design Implementation
Mapping (FPGAs Only)
For FPGAs, the MAP command line program maps a logical design to a Xilinx FPGA. The
input to MAP is an NGD file, which contains a logical description of the design in terms of
both the hierarchical components used to develop the design and the lower-level Xilinx
primitives, and any number of NMC (hard placed-and-routed macro) files, each of which
contains the definition of a physical macro. MAP then maps the logic to the components
(logic cells, I/O cells, and other components) in the target Xilinx FPGA.
The output design from MAP is an NCD file, which is a physical representation of the
design mapped to the components in the Xilinx FPGA. The NCD file can then be placed
and routed, using the PAR command line program. See Chapter 7, “MAP” for detailed
information.
Placing and Routing (FPGAs Only)
For FPGAs, the PAR command line program takes a mapped NCD file as input, places and
routes the design, and outputs a placed and routed NCD file, which is used by the
bitstream generator, BitGen. The output NCD file can also act as a guide file when you
reiterate placement and routing for a design to which minor changes have been made after
the previous iteration. See Chapter 9, “PAR” for detailed information.
You can also use the FPGA Editor GUI tool to do the following:
•
Place and route critical components before running automatic place and route tools
on an entire design
•
Modify placement and routing manually; the editor allows both automatic and
manual component placement and routing
Note: For more information, see the online Help provided with the FPGA Editor.
Bitstream Generation (FPGAs Only)
For FPGAs, the BitGen command line program produces a bitstream for Xilinx device
configuration. BitGen takes a fully routed NCD file as its input and produces a
configuration bitstream—a binary file with a .bit extension. The BIT file contains all of the
configuration information from the NCD file defining the internal logic and
interconnections of the FPGA, plus device-specific information from other files associated
with the target device. See Chapter 14, “BitGen” for detailed information.
After you generate your BIT file, you can download it to a device using the iMPACT GUI.
You can also format the BIT file into a PROM file using the PromGen command line
program and then download it to a device using the iMPACT GUI. See Chapter 16,
“PROMGen” of this guide or the iMPACT online help for more information.
Development System Reference Guide
www.xilinx.com
39
R
Chapter 2: Design Flow
Design Verification
Design verification is testing the functionality and performance of your design. You can
verify Xilinx designs in the following ways:
•
Simulation (functional and timing)
•
Static timing analysis
•
In-circuit verification
The following table lists the different design tools used for each verification type.
Table 2-1:
Verification Tools
Verification Type
Tools
Simulation
Third-party simulators (integrated and
non-integrated)
Static Timing
Analysis
TRACE (command line program)
Timing Analyzer (GUI)
Mentor Graphics® TAU and Innoveda
BLAST software for use with the STAMP
file format (for I/O timing verification
only)
In-Circuit Verification
Design Rule Checker (command line
program)
Download cable
40
www.xilinx.com
Development System Reference Guide
R
Design Verification
Design verification procedures should occur throughout your design process, as shown in
the following figures.
Simulation
Input Stimulus
Basic Design Flow
Integrated Tool
Design Entry
Simulation
Functional Simulator
Paths
Translate to
Simulator Format
Simulation Netlist
Translate to
Simulator Format
NGD
Mapping, Placement
and Routing
Static Timing
Timing Simulation Path
Translation
NCD
Static Timing Analysis
BitGen
In-Circuit Verification
Back-Annotation
BIT
In-Circuit Verification
NGA
Xilinx FPGA
X9556
Figure 2-7:
Three Verification Methods of the Design Flow (FPGAs)
Development System Reference Guide
www.xilinx.com
41
R
Chapter 2: Design Flow
The following figure shows the verification methods of the design flow for CPLDs.
Simulation
Input Stimulus
Basic Design Flow
Integrated Tool
Design Entry
Simulation
Functional Simulator
Paths
Translate to
Simulator Format
Simulation Netlist
Translate to
Simulator Format
NGD
Optimization and
Fitting
Static Timing
Timing Simulation Path
Translation
VM6
Programming
File Creation
Static Timing Analysis
In-Circuit Verification
Back-Annotation
JED
In-Circuit Verification
NGA
Xilinx CPLD
X9538
Figure 2-8:
Three Verification Methods of the Design Flow (CPLDs)
Simulation
You can run functional or timing simulation to verify your design. This section describes
the back-annotation process that must occur prior to timing simulation. It also describes
the functional and timing simulation methods for both schematic and HDL-based designs.
Back-Annotation
Before timing simulation can occur, the physical design information must be translated
and distributed back to the logical design. For FPGAs, this back-annotation process is done
with a program called NetGen. For CPLDs, back-annotation is performed with the TSim
Timing Simulator. These programs create a database, which translates the back-annotated
information into a netlist format that can be used for timing simulation.
42
www.xilinx.com
Development System Reference Guide
R
Design Verification
The following figures show the back-annotation flows:
NGD
Logical Design
MAP
PCF
Simulation Netlist
NCD
Physical Design
(Mapped)
NCD
Equivalence Checking
Netlist
NetGen
PAR
Static Timing Analysis
Netlist
NCD
Physical Design
(Placed and Routed)
X10298
Figure 2-9:
Back-Annotation Flow for FPGAs
EDIF
V
NetGen
SDF
VHD
SDF
NGD
Logical Design
Command line only
Optimization
and Fitting
NGA
VM6
Physical Design
TSIM
Timing Simulator
X10297
Figure 2-10:
Development System Reference Guide
Back-Annotation (CPLDs)
www.xilinx.com
43
R
Chapter 2: Design Flow
NetGen
NetGen is a command line program that distributes information about delays, setup and
hold times, clock to out, and pulse widths found in the physical NCD design file back to
the logical NGD file and generates a Verilog or VHDL netlist for use with supported
timing simulation, equivalence checking, and static timing analysis tools.
NetGen reads an NCD as input. The NCD file can be a mapped-only design, or a partially
or fully placed and routed design. An NGM file, created by MAP, is an optional source of
input. NetGen merges mapping information from the optional NGM file with placement,
routing, and timing information from the NCD file.
Note: NetGen reads an NGA file as input to generate a timing simulation netlist for CPLD designs.
See Chapter 22, “NetGen” for detailed information.
Schematic-Based Simulation
Design simulation involves testing your design using software models. It is most effective
when testing the functionality of your design and its performance under worst-case
conditions. You can easily probe internal nodes to check the behavior of your circuit, and
then use these results to make changes in your schematic.
Simulation is performed using third-party tools that are linked to the Xilinx Development
System. Use the various CAE-specific interface user guides, which cover the commands
and features of the Xilinx-supported simulators, as your primary reference.
The software models provided for your simulation tools are designed to perform detailed
characterization of your design. You can perform functional or timing simulation, as
described in the following sections.
Functional Simulation
Functional simulation determines if the logic in your design is correct before you
implement it in a device. Functional simulation can take place at the earliest stages of the
design flow. Because timing information for the implemented design is not available at
this stage, the simulator tests the logic in the design using unit delays.
Note: It is usually faster and easier to correct design errors if you perform functional simulation early
in the design flow.
You can use integrated and non-integrated simulation tools. Integrated tools, such as
Mentor Graphics or Innoveda, often contain a built-in interface that links the simulator and
a schematic editor, allowing the tools to use the same netlist. You can move directly from
entry to simulation when using a set of integrated tools.
Functional simulation in schematic-based tools is performed immediately after design
entry in the capture environment. The schematic capture tool requires a Xilinx Unified
Library and the simulator requires a library if the tools are not integrated. Most of the
schematic-based tools require translation from their native database to EDIF for
implementation. The return path from implementation is usually EDIF with certain
exceptions in which a schematic tool is tied to an HDL simulator.
44
www.xilinx.com
Development System Reference Guide
R
Design Verification
Timing Simulation
Timing simulation verifies that your design runs at the desired speed for your device
under worst-case conditions. This process is performed after your design is mapped,
placed, and routed for FPGAs or fitted for CPLDs. At this time, all design delays are
known.
Timing simulation is valuable because it can verify timing relationships and determine the
critical paths for the design under worst-case conditions. It can also determine whether or
not the design contains set-up or hold violations.
Before you can simulate your design, you must go through the back-annotation process, as
described in “Back-Annotation”. During this process, NetGen creates suitable formats for
various simulators.
Note: Naming the nets during your design entry is important for both functional and timing
simulation. This allows you to find the nets in the simulations more easily than looking for a softwaregenerated name.
HDL-Based Simulation
Xilinx supports functional and timing simulation of HDL designs at the following points:
•
•
•
Register Transfer Level (RTL) simulation, which may include the following:
♦
Instantiated UniSim library components
♦
LogiCORE models
Post-synthesis functional simulation with one of the following:
♦
Gate-level UniSim library components
♦
Gate-level pre-route SimPrim library components
Post-implementation back-annotated timing simulation with the following:
♦
SimPrim library components
♦
Standard delay format (SDF) file
Development System Reference Guide
www.xilinx.com
45
R
Chapter 2: Design Flow
The following figure shows when you can perform functional and timing simulation:
HDL
Design
UniSim
Library
Testbench
Stimulus
HDL RTL
Simulation
Synthesis
LogiBLOX
Modules
Post-Synthesis Gate-Level
Functional Simulation
CORE Generator
Modules
Xilinx
Implementation
HDL Timing
Simulation
SimPrim
Library
X9243
Figure 2-11:
Simulation Points for HDL Designs
The three primary simulation points can be expanded to allow for two post-synthesis
simulations. These points can be used if the synthesis tool cannot write VHDL or Verilog,
or if the netlist is not in terms of UniSim components. The following table lists all the
simulation points available in the HDL design flow.
Table 2-2:
Five Simulation Points in HDL Design Flow
Simulation
UniSim
RTL
X
Post-Synthesis
X
SimPrim
SDF
Functional Post-NGDBuild (Optional)
X
Functional Post-MAP (Optional)
X
X
Post-Route Timing
X
X
These simulation points are described in the “Simulation Points” section of the Synthesis
and Simulation Design Guide.
46
www.xilinx.com
Development System Reference Guide
R
Design Verification
The libraries required to support the simulation flows are described in detail in the
“VHDL/Verilog Libraries and Models” section of the Synthesis and Simulation Design
Guide. The flows and libraries support close functional equivalence of initialization
behavior between functional and timing simulations. This is due to the addition of new
methodologies and library cells to simulate Global Set/Reset (GSR) and Global 3-State
(GTS) behavior.
You must address the built-in reset circuitry behavior in your designs, starting with the
first simulation, to ensure that the simulations agree at the three primary points. If you do
not simulate GSR behavior prior to synthesis and place and route, your RTL and
post-synthesis simulations may not initialize to the same state as your post-route timing
simulation. If this occurs, your various design descriptions are not functionally equivalent
and your simulation results do not match.
In addition to the behavioral representation for GSR, you must add a Xilinx
implementation directive. This directive is specifies to the place and route tools to use the
special purpose GSR net that is pre-routed on the chip, and not to use the local
asynchronous set/reset pins. Some synthesis tools can identify the GSR net from the
behavioral description, and place the STARTUP module on the net to direct the
implementation tools to use the global network. However, other synthesis tools interpret
behavioral descriptions literally and introduce additional logic into your design to
implement a function. Without specific instructions to use device global networks, the
Xilinx implementation tools use general-purpose logic and interconnect resources to
redundantly build functions already provided by the silicon.
Even if GSR behavior is not described, the chip initializes during configuration, and the
post-route netlist has a net that must be driven during simulation. The “Understanding the
Global Signals for Simulation” section of the Synthesis and Simulation Design Guide includes
the methodology to describe this behavior, as well as the GTS behavior for output buffers.
Xilinx VHDL simulation supports the VITAL standard. This standard allows you to
simulate with any VITAL-compliant simulator. Built-in Verilog support allows you to
simulate with the Cadence Verilog-XL and other compatible simulators. Xilinx HDL
simulation supports all current Xilinx FPGA and CPLD devices. Refer to the Synthesis and
Simulation Design Guide for the list of supported VHDL and Verilog standards.
Static Timing Analysis (FPGAs Only)
Static timing analysis is best for quick timing checks of a design after it is placed and
routed. It also allows you to determine path delays in your design. Following are the two
major goals of static timing analysis:
•
Timing verification
This is verifying that the design meets your timing constraints.
•
Reporting
This is enumerating input constraint violations and placing them into an accessible
file. You can analyze partially or completely placed and routed designs. The timing
information depends on the placement and routing of the input design.
You can run static timing analysis using the Timing Reporter and Circuit Evaluator
(TRACE) command line program. See Chapter 12, “TRACE” for detailed information. You
can also use the Timing Analyzer GUI to perform this function. See the online Help
provided with the Timing Analyzer for additional information. Use either tool to evaluate
how well the place and route tools met the input timing constraints.
Development System Reference Guide
www.xilinx.com
47
R
Chapter 2: Design Flow
In-Circuit Verification
As a final test, you can verify how your design performs in the target application. In-circuit
verification tests the circuit under typical operating conditions. Because you can program
your Xilinx devices repeatedly, you can easily load different iterations of your design into
your device and test it in-circuit. To verify your design in-circuit, download your design
bitstream into a device with the Parallel Cable IV or MultiPRO cable.
Note: For information about Xilinx cables and hardware, see the iMPACT online help.
Design Rule Checker (FPGAs Only)
Before generating the final bitstream, it is important to use the DRC option in BitGen to
evaluate the NCD file for problems that could prevent the design from functioning
properly. DRC is invoked automatically unless you use the –d option. See Chapter 8,
“Physical Design Rule Check” and Chapter 14, “BitGen” and for detailed information.
Xilinx Design Download Cables
Xilinx provides the Parallel Cable IV or MultiPRO cable to download the configuration
data containing the device design.
You can use the Xilinx download cables with the iMPACT Programming software for
FPGA and CPLD design download and readback, and configuration data verification. The
iMPACT Programming software cannot be used to perform real-time design functional
verification.
Probe
The Xilinx PROBE function in FPGA Editor provides real-time debug capability good for
analyzing a few signals at a time. Using PROBE a designer can quickly identify and route
any internal signals to available I/O pins without having to replace and route the design.
The real-time activity of the signal can then be monitored using normal lab test equipment
such as logic/state analyzers and oscilloscopes.
ChipScope ILA and ChipScope PRO
The ChipScope toolset was developed to assist engineers working at the PCB level.
ChipScope ILA actually embeds logic analyzer cores into your design. These logic cores
allow the user to view all the internal signals and nodes within an FPGA. ChipScope ILA
supports user selectable data channels from 1 to 256. The depth of the sample buffer ranges
from 256 to 16384 in Virtex-II devices. Triggers are changeable in real-0time without
affecting the user logic or requiring recompilation of the user design.
48
www.xilinx.com
Development System Reference Guide
R
FPGA Design Tips
FPGA Design Tips
The Xilinx FPGA architecture is best suited for synchronous design. Strict synchronous
design ensures that all registers are driven from the same time base with no clock skew.
This section describes several tips for producing high-performance synchronous designs.
Design Size and Performance
Information about design size and performance can help you to optimize your design.
When you place and route your design, the resulting report files list the number of CLBs,
IOBs, and other device resources available. A first pass estimate can be obtained by
processing the design through the MAP program.
If you want to determine the design size and performance without running automatic
implementation software, you can quickly obtain an estimate from a rough calculation
based on the Xilinx FPGA architecture.
Global Clock Distribution
Xilinx clock networks guarantee small clock skew values. The following table lists the
resources available for the Xilinx FPGA families.
Table 2-3:
Global Clock Resources
FPGA Family
Resource
Number Destination Pins
Spartan
BUFGS
4
Clock, control, or certain input
Virtex, Virtex-E,
Spartan-II,
Spartan-IIE
BUFG
4
Clock
Virtex-II, Virtex-II
Pro
BUFGMUX
16
Clock
Note: In certain devices families, global clock buffers are connected to control pin and logic inputs.
If a design requires extensive routing, there may be extra routing delay to these loads.
Development System Reference Guide
www.xilinx.com
49
R
Chapter 2: Design Flow
Data Feedback and Clock Enable
The following figure shows a gated clock. The gated clock’s corresponding timing diagram
shows that this implementation can lead to clock glitches, which can cause the flip-flop to
clock at the wrong time.
a) Gated Clock
D
Q
Enable
Clock
Clock
Enable
b) Corresponding Timing Diagram
Clock
Enable
Clock
Enable
Output
X9201
Figure 2-12:
Gated Clock
The following figure shows a synchronous alternative to the gated clock using a data path.
The flip-flop is clocked at every clock cycle and the data path is controlled by an enable.
When the enable is Low, the multiplexer feeds the output of the register back on itself.
When the enable is High, new data is fed to the flip-flop and the register changes its state.
50
www.xilinx.com
Development System Reference Guide
R
FPGA Design Tips
This circuit guarantees a minimum clock pulse width and it does not add skew to the clock.
The Spartan-II, and Virtex families’ flip-flops have a built-in clock-enable (CE).
a) Using a Feedback Path
D
Enable
D
Q
Clock
b) Corresponding Timing Diagram
Clock
Enable
Output
X9202
Figure 2-13:
Synchronous Design Using Data Feedback
Counters
Cascading several small counters to create a larger counter is similar to a gated clock. For
example, if two 8-bit counters are connected, the terminal counter (TC) of the first counter
is a large AND function gating the second clock input.
Development System Reference Guide
www.xilinx.com
51
R
Chapter 2: Design Flow
The following figure shows how you can create a synchronous design using the CE input.
In this case, the TC of the first stage is connected directly to the CE of the second stage.
a) 16-bit counter with TC connected to the clock.
Q 8. . . .Q 15
H
O
D
Q 0. . . .Q 7
CE
TC
IM
PR
O
PE
R
M
ET
TC
b) 16-bit counter with TC connected to the clock-enable.
Q 0. . . .Q 7
TC
Q 8. . . .Q 15
CE
TC
CLK
X2093
Figure 2-14:
Two 8-Bit Counters Connected to Create a 16-Bit Counter
Other Synchronous Design Considerations
Other considerations for achieving a synchronous design include the following:
52
•
Use clock enables instead of gated clocks to control the latching of data into registers.
•
If your design has more clocks than the number of global clock distribution networks,
try to redesign to reduce the number of clocks. Otherwise, put the clocks that have the
lowest fanout onto normally routed nets, and specify a low MAXSKEW rating. A
clock net routed through a normal net has skew.
•
Use the Virtex low skew resources. Make sure the MAXSKEW rating is not specified
when using these resources.
www.xilinx.com
Development System Reference Guide
R
Chapter 3
Tcl
Xilinx Tcl commands are compatible with the following device families:
•
Virtex™, Virtex™-E
•
Virtex™-II
•
Virtex™-II Pro, Virtex™-II Pro X
•
Virtex™-4
•
Virtex ™-5 LX
•
Spartan™-II, Spartan™-IIE
•
Spartan™-3, Spartan™-3E, Spartan™-3L
This chapter describes the Xilinx Tcl Shell (xtclsh) and the Xilinx Tcl commands. This
chapter contains the following sections:
•
“Tcl Overview”
•
“Xilinx Tcl Shell”
•
“Tcl Fundamentals”
•
“Xilinx Tcl Commands”
•
“Tcl Commands for General Usage”
•
“Tcl Commands for Advanced Scripting”
•
“Project Properties and Options”
•
“Example Tcl Scripts”
Tcl Overview
Tool Command Language (Tcl) is an easy to use scripting language and an industry
standard popular in the electronic design automation (EDA) industry.
The Xilinx Tcl command language is designed to complement and extend the graphical
user interface (GUI). For new users and projects, the GUI provides an easy-to-use interface
to set up a project, perform initial implementations, explore available options, set
constraints, and visualize the design. Alternatively, for users that know exactly what
options and implementation steps they wish to perform, the Xilinx Tcl commands provide
a batch interface that makes it convenient to execute the exact same script or steps over and
over again. By making the syntax of the Xilinx Tcl commands match the GUI interaction as
closely as possible, Xilinx Tcl commands make it easy to transition from using the GUI to
running the tools in script or batch mode. A list of available project properties and batch
tool options can be found in the “Project Properties and Options” section of this chapter.
Development System Reference Guide
www.xilinx.com
53
R
Chapter 3: Tcl
The Xilinx Tcl command language also supports more advanced scripting techniques.
Xilinx Tcl commands provide support for collections and objects that allow advanced users
to write scripts that query the design and implementation, and then to take appropriate
actions based on the results. “Tcl Commands for Advanced Scripting” are described in
more detail later in the this chapter.
Tcl commands are accessed from the Xilinx Tcl Shell (xtclsh), which is available from the
command line, or from the Tcl Console tab in Project Navigator. Xilinx Tcl commands are
categorized in two ways: general usage and advanced scripting. See the “Xilinx Tcl
Commands” section of this chapter for a detailed listing that includes a description,
syntax, an example, and the Tcl return for each command.
Xilinx Tcl Shell
To access the Xilinx Tcl Shell (xtclsh) from Project Navigator, click the Tcl Console tab,
which displays a window with the xtclsh prompt (%).
To access the xtclsh from the command line, type xtclsh from the command prompt to
return the xtclsh prompt (%). Example:
> xtclsh
%
Command line syntax is based on the Tcl command and corresponding subcommand that
you enter. For example:
%
tcl_command is the name of the Xilinx Tcl command.
subcommand is the subcommand name for the Xilinx Tcl command.
optional_arguments are the arguments specific to each subcommand. Example syntax for all
Xilinx Tcl commands, subcommands, and their respective arguments is included in the
“Tcl Commands for General Usage” and “Tcl Commands for Advanced Scripting” sections
of this chapter.
Accessing Help
Use the help command to get detailed information on Xilinx-specific Tcl commands. From
the xtclsh prompt (%), type help for a list and brief description of Xilinx Tcl commands.
For help on a specific Tcl command, type the following:
% help
You can also get information on a specific subcommand by typing the subcommand name
after the Tcl command. For example, type the following to get help on creating a new ISE
project:
% help project new
help is the command that calls the Tcl help information.
project specifies the name of the Xilinx Tcl command.
new specifies the name of the project subcommand you wish to obtain help information on.
In Project Navigator, Tcl help is accessed from the Tcl Console tab using the same syntax as
described above.
54
www.xilinx.com
Development System Reference Guide
R
Tcl Fundamentals
Tcl Fundamentals
This section provides some very basic information about the syntactic style of Xilinx Tcl
commands. For more information about Tcl in general, please refer to Tcl documentation
easily available on the internet, for example: http://www.tck.tk/doc , which is the website
for the Tcl Developer Xchange.
In general, Tcl commands are procedural. Each Tcl command is a series of words, with the
first word being the command name. For Xilinx Tcl commands, the command name is
either a noun (e.g., project) or a verb (e.g., search). For commands that are nouns, the
second word on the command line is the verb (e.g., project open). This second word is
called the subcommand.
Subsequent words on the command line are additional parameters to the command. For
Xilinx Tcl commands, required parameters are positional, which means they must always
be specified in an exact order and follow the subcommand. Optional parameters follow
the required parameters, can be specified in any order, and always have a flag that starts
with “-“to indicate the parameter name; for example, -instance .
Tcl is case sensitive. Xilinx Tcl command names are always lower case. If the name is two
words, the words are joined with an underscore (_). Even though Tcl is case sensitive, most
design data (e.g., an instance name), property names, and property values are case
insensitive. To make it less burdensome to type at the command prompt, unique prefixes
are recognized when typing a subcommand, which means only typing the first few letters
of a command name is all that is required for it to be recognized. Unique prefixes are also
recognized for partition properties and property values.
The real power of Tcl is unleashed when it is used for nested commands and for scripting.
The result of any command can be stored in a variable. Values are assigned to variables and
properties with the set command. The set command takes two arguments. The first
argument is the name of the variable and the second argument is the value. It is not
necessary to declare Tcl variables before you use them. If one does not exist, it is created
when the command is executed.
In Tcl, the dollar-sign ($) syntax is used to substitute a variable’s value for its name. For
example, $foo in a Tcl command is replaced by the value of the variable foo.
The result of a command can also be substituted directly into another command. Tcl uses
square brackets [ ] for these nested commands. Tcl interprets everything between square
brackets [ ] as a command and substitutes the command result for the text within the
square brackets [ ].
Tcl provides several ways to quote strings that contain spaces or other special characters
and to manage substitution. Double quotes (“) allow some special characters ([ ] and $) for
substitution. Curly braces { } perform no substitutions.
For very specific command line examples, please see the “Tcl Commands for General
Usage” and “Tcl Commands for Advanced Scripting” sections of this chapter.
Development System Reference Guide
www.xilinx.com
55
R
Chapter 3: Tcl
Xilinx Namespace
All Xilinx Tcl commands are part of the Tcl namespace ::xilinx::. If another Tcl package uses
a command name that conflicts with a Xilinx-specific Tcl command name, the Xilinx
namespace must be used to access the command. For example, type the following to create
a new project using Xilinx-specific Tcl commands:
% xilinx::project new
It is only necessary to specify the Xilinx namespace when you have more than one
namespace installed.
Xilinx Tcl Commands
The following sections include detailed listings of Xilinx Tcl commands, which are divided
into two parts:
•
Tcl Commands for General Usage
•
Tcl Commands for Advanced Scripting
Each detailed listing includes the description, syntax, an example, and the Tcl return for
each command.
In most cases, the examples shown assume that a project has been created with the project
new command or a project has been opened with the project open command. Project files are
added with the xfile add command.
To view how Xilinx Tcl commands can be used in a realistic way, see the “Example Tcl
Scripts” located at the end of this chapter.
The following tables summarize the Xilinx Tcl commands based on those for general usage
and those for advanced scripting.
Table 3-1:
Xilinx Tcl Commands for General Usage
Commands
partition (support design preservation)
Subcommands
delete
get
new
properties
rerun
set
process (run and manage project processes)
56
www.xilinx.com
run
Development System Reference Guide
R
Xilinx Tcl Commands
Table 3-1:
Xilinx Tcl Commands for General Usage
Commands
project (create and manage projects)
Subcommands
clean
close
delete
get
get_processes
new
open
properties
set
timing_analysis (generate timing analysis reports)
delete
disable_constraints
disable_cpt
enable_constraints
enable_cpt
get
new
reset
run
saveas
set
set_constraint
set_endpoints
set_filter
set_query
show_settings
xfile (manage project files)
add
get
remove
Development System Reference Guide
www.xilinx.com
57
R
Chapter 3: Tcl
Table 3-2:
Xilinx Tcl Commands for Advanced Scripting
Commands
collection (create and manage a collection)
Subcommands
append_to
copy
equal
foreach
get
index
properties
remove_from
set
sizeof
object (get object information)
get
name
properties
type
search (search and return matching objects)
Tcl Commands for General Usage
This section describes the Xilinx Tcl commands for general usage. To view a sample script
of how these commands are used, see the “Sample Tcl Script for General Usage” at the end
of this chapter.
partition (support design preservation)
The partition command is used to create and manage partitions, which are used for design
preservation. A Partition is set on an instance in a design. The Partition indicates that the
implementation for the instance should be preserved and reused when possible.
% partition
Partition names should follow the naming conventions of the HDL source. In general, the
local name of a top-level partition is set to the name of the design, which is based on the
top-level entity or module in the HDL source. The full hierarchical name of a top-level
partition is a forward slash (/) followed by the local name. For example, if the design name
is stopwatch, then the hierarchical name for the top-level instance is /stopwatch. It is
always necessary to give the full name of any instance or partition that you specify on the
command line. Partition names are case-sensitive.
58
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
delete (delete a partition)
The partition delete command deletes the specified partition from the current ISE project.
This command also deletes any properties on the partition; however, timing and other
logic constraints on the instance are preserved.
Note: A Partition name may not be unique to the project. In this case, the full hierarchical name of
the partition should be specified for the partition you wish to delete.
% partition delete
partition is the name of the Xilinx Tcl command.
delete is the name of the partition subcommand.
partition_name specifies the full hierarchical name of the partition you wish to remove from
the project or the name of the
Example:
% partition delete /stopwatch/Inst_dcm1
Description:
In this example, the Inst_dcm1 partition is deleted and removed
from the project repository. Note that only the partition is deleted
from the project not the instance that the partition is set on.
Tcl Return:
The number of partitions deleted. In this example, 1 is returned.
get (get partition properties)
The partition get command returns the value of the specified partition property. Note that
the preserve property is assigned with the partition set command.
% partition get
partition is the name of the Xilinx Tcl command.
get is the name of the partition subcommand.
partition_name specifies the full hierarchical name of the partition or the collection. A
collection is specified using the dollar-sign syntax ($) with the name of the collection
variable.
property_name specifies the name of the property you wish to get the value of. Valid
partition property names and their Tcl returns are shown in the following table:
Table 3-3:
Partition Property Names and Tcl Returns
Partition Property Name
Tcl Return
name
The name of the partition.
parent
The name of the parent of the partition. If the partition
is the top-level partition, the returned name is empty.
children
A collection of the child partitions. If the partition has
no children, the returned collection is empty.
preserve
Routing, placement, synthesis, or inherit
preserve_effective
Returns the inherited value for the preserve property.
Development System Reference Guide
www.xilinx.com
59
R
Chapter 3: Tcl
Table 3-3:
Partition Property Names and Tcl Returns
Partition Property Name
Tcl Return
up_to_date_synthesis
True or false, based on the status of the synthesis
results.
up_to_date_implementation
True or false, based on the status of the implementation
results.
Example:
% partition get /stopwatch/Inst_dcm1 preserve
Description:
In this example, the partition get command is used to obtain the
current value of the preserve property.
Tcl Return:
The property value as a text string. In this example, the return will
be routing, placement, synthesis, or inherit.
new (create a new partition)
The partition new command creates a new partition on a specified instance or collection in
the current design. A collection is specified using the dollar-sign syntax ($) with the name
of the collection variable.
% partition new
partition is the name of the Xilinx Tcl command.
new is the name of the partition subcommand.
partition_name specifies the full hierarchical name of the instance you wish to create the
partition on, or the collection.
60
Example:
% partition new /stopwatch/Inst_dcm1
Description:
In this example, the partition new command is used to create a new
partition on the Inst_dcm1 instance in the current design. The full
hierarchical name (/stopwatch/Inst_dcm1) is required to specify
the instance. In this case, stopwatch is the name of the top-level
entity in the VHDL source.
Tcl Return:
The full hierarchical name of the newly created partition. In this
example, /stopwatch/Inst_dcm1 is returned.
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
properties (list available partition properties)
The partition properties command displays a list of the supported properties for all
partitions. You can set the value of any property with the partition set command.
% partition properties
partition is the name of the Xilinx Tcl command.
properties is the name of the partition subcommand.
Example:
% partition properties
Description:
In this example, the partition properties command is used to list the
properties available for all partitions in the current ISE project.
Tcl Return:
The available partition properties as a Tcl list.
For a list of partition properties and their return values, see the “set (set partition preserve
property)” command in this chapter.
rerun (force partition synthesis and implementation)
The partition rerun command forces re-synthesis or re-implementation of a specified
partition. If synthesis is specified, synthesis (XST), translation (NGDBuild), packing
(MAP), and placement and routing (PAR) are all performed the next time the process run
command is specified. If implementation is specified, translation, packing, and placement
and routing are performed.
% partition rerun {synthesis|implementation}
partition is the name of the Xilinx Tcl command.
rerun is the name of the partition subcommand.
partition_name specifies the full hierarchical name of the partition or the collection you
wish to force the re-synthesis or re-implementation of. A collection is specified using the
dollar-sign syntax ($) with the name of the collection variable.
synthesis specifies re-synthesis of the partition starting with XST, then NGDBuild, MAP,
and PAR.
implementation specifies re-implementing the partition starting with NGDBuild, then MAP
and PAR.
Example:
% partition rerun implementation /stopwatch/Inst_dcm1
Description:
In this example, the partition rerun command forces the reimplementation of the /stopwatch/Inst_dcm1 partition.
Tcl Return:
True if the command was successful; false otherwise.
Note: This command is used with the process run command, which runs the processes of the
project.
Development System Reference Guide
www.xilinx.com
61
R
Chapter 3: Tcl
set (set partition preserve property)
The partition set command assigns the partition preserve property and value for the
specified partition.
% partition set preserve
partition is the name of the Xilinx Tcl command.
set is the name of the partition subcommand.
partition specifies the full hierarchical name of the partition or the collection you wish to set
the property for. A collection is specified using the dollar-sign syntax ($) with the name of
the collection variable.
preserve is the property used to control the level of changes that can be made to the
implementation of partitions that have not been re-implemented. Values for the preserve
property are:
preserve {routing|placement|synthesis|inherit}
routing -- Most data preservation comes from routing. When the property value is set
to routing, all implementation data is preserved, including synthesis, packing,
placement, and routing. Routing is the default property value.
placement --This is the second-highest property value for the preserve property. With
this setting, synthesis, packing, and placement are preserved. Routing is only reimplemented if another partition requires the resources.
synthesis -- This is the lowest-level preserve property value because only the netlist,
which contains synthesis information, is preserved. With this setting, packing,
placement and routing are open for re-implementation; however, placement and
routing are only re-implemented if another partition requires the resources.
inherit -- This value specifies that the partition inherits the same preserve property
value as its parent partition. Inherit is the default setting for all child partitions. This
setting is not available for top-level partitions.
62
Example:
% partition set /stopwatch/Inst_dcm1 preserve synthesis
Description:
In this example, the partition set command is used to specify the
preserve property for the Inst_dcm1 partition. The preserve value is
set to synthesis, which means packing, placement, and routing will
be re-implemented.
Tcl Return:
The value of the previous preserve property.
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
process (run and manage project processes)
The process command runs and manages all processes within the current ISE project.
run (run process task)
The process run command runs the synthesis and implementation tools based on the
specified process task. Process tasks are entered on the command line as strings
distinguished by double quotes (“). The exact text representation of the task in Project
Navigator is required. For a complete list of process tasks, see Table 3-4.
% process run [-instance ] [-force rerun|rerun_all]
process is the name of the Xilinx Tcl command.
run is the name of the process subcommand.
process_task specifies the name of one of the process tasks to run. Process tasks are listed in
the Process window in Project Navigator. Note that the list of available processes changes,
based on the source file you select. You can also use the project get_processes command to
view a list of available processes. See the process get_processes command for more
information. Process tasks vary by device family.
instance_name specifies the name of the instance to force re-implementation of. This is only
needed for processes that do not use the entire design.
-force is the command to force the re-implementation of the specified process, regardless of
the partition preserve setting. See the partition set command for more information on
setting preservation levels.
rerun reruns the processes and updates input data as necessary, by running any
dependency processes that are out-of-date.
rerun_all reruns the processes and all dependency processes back to the source data, as
defined by the specified process goal. All processes are run whether they are out of date or
not.
Example:
% process run “Implement Design” -force rerun_all
Description:
In this example, the process run command is used to force the reimplementation of the entire design, regardless of whether all
source files are up-to-date or not.
Tcl Return:
True if the process was successful; false otherwise.
The following table lists the Tcl-supported process tasks, which are based on the GUI
names in Project Navigator. Process tasks are entered as text strings, distinguished by
double quotes (“), as shown in the table. Note that the source file determines what
processes are available. This table lists all processes in order, beginning with synthesis.
Table 3-4:
Process Tasks
“Synthesize - XST”
“Check Syntax”
“Generate Post-Synthesis Simulation Model”
“Implement Design”
Development System Reference Guide
www.xilinx.com
63
R
Chapter 3: Tcl
Table 3-4:
Process Tasks
“Translate”
“Map”
“Generate Post-Map Static Timing”
“Generate Post-Map Simulation Model”
“Place & Route”
“Generate Primetime Netlist”
“Generate Post-Place & Route Static Timing”
“Generate Post-Place & Route Simulation Model”
“Generate IBIS Model”
“Back-Annotate Pin Locations”
“Generate Programming File”
project (create and manage projects)
The project command creates and manages ISE projects. A project contains all files and data
related to a design. You can create a project to manage all of the design files and to enable
different processes to work on the design.
% project
clean (remove system-generated project files)
The project clean command removes all of the temporary and system-generated files in the
current ISE project. It does not remove any source files, like Verilog or VHDL, nor does it
remove any user-modified files. For example, system generated design and report files like
the NCD (.ncd) and map report (.mpr) are removed with the project clean command, unless
they have been user-modified.
% project clean
project is the name of the Xilinx Tcl command.
clean is the name of the project subcommand.
Example:
% project clean
Description:
In this example, the current ISE project is cleaned. All temporary
and system generated files are removed, including design and
report files, unless these have been user-modified.
Tcl Return:
True if the project is cleaned successfully; false otherwise.
Caution! The project clean command permanently deletes all system-generated files from the
current ISE project. These files include the NGD and NCD files generated by the implementation
tools.
64
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
close (close the ISE project)
The project close command closes the current ISE project. It is not necessary to specify the
name of the project to close, since only one ISE project can be open at a time.
% project close
project is the name of the Xilinx Tcl command.
close is the name of the project subcommand.
Example:
% project close
Description:
In this example, the current ISE project is closed.
Tcl Return:
True if the project is closed successfully; false otherwise.
get (get project properties)
The project get command returns the value of the specified project-level property or batch
application option.
% project get
project is the name of the Xilinx Tcl command.
get is the name of the project subcommand.
option_name specifies the name of the batch application option you wish to get the value of.
For example, Map Effort Level. Batch application options are entered as strings
distinguished by double quotes (“). The exact text representation of the option in Project
Navigator is required. For a complete list of project properties and options, see the “Project
Properties and Options” section of this chapter.
property_name specifies the name of the property you wish to get the value of. Valid
properties names are family, device, package, speed, and top.
Example:
% project get speed
Description:
In this example, the value of the speed grade that was set with the
project set speed command is returned.
Tcl Return:
The property value as a text string. In this example, the device speed
grade is returned.
get_processes (get project processes)
The project get_processes command lists the available processes for the specified instance.
% project get_processes [-instance ]
project is the name of the Xilinx Tcl command.
get_processes is the name of the project subcommand.
-instance limits the properties listed to only those of the specified instance. If no instance is
specified, the top-level instance is used by default.
Development System Reference Guide
www.xilinx.com
65
R
Chapter 3: Tcl
instance_name specifies the name of the instance you wish to know the available processes
for.
Example:
% project get_processes [-instance Inst_dcm1]
Description:
In this example, the project get_processes command is used to list all
of the available processes for only the instance, Inst_dcm1.
Tcl Return:
The available processes as a text string. In this example, a list of
processes for Inst_dcm1 is returned.
new (create a new ISE project)
The project new command creates a new ISE project.
% project new
project is the name of the Xilinx Tcl command.
new is the name of the project subcommand.
project_name specifies the name for the ISE project you wish to create.
Example:
% project new watchver.ise
Description:
In this example, a new ISE project named watchver.ise is created in
the current directory.
Tcl Return:
The name of the new ISE project.
open (open an ISE project)
The project open command opens an existing ISE project. If the project does not exist, an
error message to create a new project with the project new command appears.
% project open
project is the name of the Xilinx Tcl command.
open is the name of the project subcommand.
project_name specifies the name for the ISE project you wish to open.
66
Example:
% project open watchver.ise
Description:
In this example, the watchver.ise project in the current directory is
opened.
Tcl Return:
The name of the open ISE project.
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
properties (list project properties)
The project properties command lists all of the project properties for the specified process or
instance.
% project properties [-process ][-instance limits the properties listed to only those for the specified process.
By default, the properties for all synthesis and implementation processes are listed. You
can also specify all to list the properties for all project processes.
-instance limits the properties listed to only those of the specified instance.
If no instance name is specified, the properties for the top-level instance are listed. You can
also specify top to specify the top-level instance.
You can
Example:
% project properties -process all
Description:
In this example, the project properties command is used to list the
properties for all of the available processes for the current ISE
project.
Tcl Return:
The available process properties as a Tcl list. In this example, a list
of all process properties.
Note: To get processes information for a specific instance, use the project get_processes
command. To get property information for specific properties like family, device, and speed, see the
project set options in this section for more information.
set (set project properties, values, and options)
The project set command is used to set properties and values for the current ISE project. In
addition to setting family and device-specific properties and values, the project set
command is also used to set options for the batch application tools, including XST,
NGDBuild, MAP, PAR, TRACE, and BitGen.
The set subcommand uses two arguments. The first argument assigns the name of the
property or variable; and the second argument assigns the value.
% project set
project is the name of the Xilinx Tcl command.
set is the name of the project subcommand.
property_name specifies the name of the property, variable or batch application option.
property_value specifies the value of the property, variable, or batch application option.
Development System Reference Guide
www.xilinx.com
67
R
Chapter 3: Tcl
Note: Some batch application options only work when other options are specified. For example, in
XST, the Synthesize Constraints File option only works if the Use Synthesis Constraints File option is
also specified.
Example:
% project set “Map Effort Level” high
Description:
In this example, the project set command is used to set the map effort
level to high. Map Effort Level is the name of the MAP option. High
is the value set for the option.
Tcl Return:
The previous value of the newly set option. In this example, the Tcl
return would be medium, if the option value was previously set to
medium.
Note: Batch application options are entered as strings distinguished by double quotes (“). The exact
text representation of the option (or property) in the Project Navigator GUI is required. For a complete
list of project properties and options, see the “Project Properties and Options” section of this chapter.
set device (set device)
The project set device command specifies the target device for the current ISE project.
Note: A list of available devices can be viewed in the Project Properties dialog box in Project
Navigator, or by utilizing the unique prefixes supported by Xilinx Tcl commands. For example, type
project set device V to get an error message that enumerates all Virtex devices. Optionally,
you can specify the partgen –arch command. From the Tcl prompt (%), type partgen –h for help
using this command.
% project set device
project is the name of the Xilinx Tcl command.
set device is the name of the project subcommand.
device_name specifies the target device for the current ISE project.
Example:
% project set device xc2vp2
Description:
In this example, the device for the current project is set to xc2vp2.
Tcl Return:
The previous value. In this example, the previous device setting is
returned.
Note: You must first use the set family command to set the device family before using this command
to set the device.
set family (set device family)
The project set family command specifies the device family for the current ISE project.
Note: A list of available devices can be viewed in the Project Properties dialog box in Project
Navigator, or by utilizing the unique prefixes supported by Xilinx Tcl commands. For example, type
project set device V to get an error message that enumerates all Virtex devices. Optionally,
you can specify the partgen –arch command. From the Tcl prompt (%), type partgen –h for help
using this command.
% project set family
project is the name of the Xilinx Tcl command.
set family is the name of the project subcommand.
68
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
device_family_name specifies the device family to use with the current ISE project.
Example:
% project set family Virtex2p
Description:
In this example, the device family for the current project is set to
Virtex2p.
Tcl Return:
The previous value. In this example, the previous device family
setting is returned.
set package (set device package)
The project set package command specifies the device package for the current ISE project.
Note: A list of available devices can be viewed in the Project Properties dialog box in Project
Navigator, or by utilizing the unique prefixes supported by Xilinx Tcl commands. For example, type
project set device V to get an error message that enumerates all Virtex devices. Optionally,
you can specify the partgen –arch command. From the Tcl prompt (%), type partgen –h for help
using this command.
% project set package
project is the name of the Xilinx Tcl command.
set package is the name of the project subcommand.
package_name specifies the target device package for the current ISE project.
Example:
% project set package fg256
Description:
In this example, the device package for the current project is set to
fg256.
Tcl Return:
The previous value. In this example, the previous device package
setting is returned.
set speed (set device speed)
The project set speed command specifies the device speed for the current ISE project.
Note: A list of available devices can be viewed in the Project Properties dialog box in Project
Navigator, or by utilizing the unique prefixes supported by Xilinx Tcl commands. For example, type
project set device V to get an error message that enumerates all Virtex devices. Optionally,
you can specify the partgen –arch command. From the Tcl prompt (%), type partgen –h for help
using this command.
% project set speed
project is the name of the Xilinx Tcl command.
set speed is the name of the project subcommand.
Development System Reference Guide
www.xilinx.com
69
R
Chapter 3: Tcl
speed_grade specifies the speed for the target device of the current ISE project.
Example:
% project set speed -7
Description:
In this example, the device speed for the current project is set to -7.
Tcl Return:
The previous value. In this example, the previous speed grade
setting is returned.
set top (set the top-level module/entity)
The project set top command specifies the top-level module or entity in the design hierarchy.
To use this command, you must first add the module or entity to your project with the xfile
add command.
% project set top
project is the name of the Xilinx Tcl command.
set top is the name of the project subcommand.
module_name specifies the name for the top-level module for Verilog and EDIF-based
designs.
For VHDL designs, you must specify the architecture name and the entity name using the
following syntax:
% project set top [entity_name]
Example:
% project set top pong_top
Description:
In this Verilog example, the project set top command is used to set
pong_top as the top-level module in the design hierarchy.
Tcl Return:
The name of the previous top-level module.
timing_analysis (generate timing analysis reports)
The timing_analysis command generates static timing analysis reports for an implemented
design.
% timing_analysis
delete (delete timing analysis)
The timing_analysis delete command removes a previously created analysis from the current
ISE project.
% timing_analysis delete
timing_analysis is the name of the Xilinx Tcl command.
delete is the name of the timing_analysis subcommand.
70
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
analysis_name specifies the name of the analysis to delete.
Example:
% timing_analysis delete stopwatch_timing
Description:
In this example, the timing_analysis delete command is used to
remove the stopwatch_timing analysis, which was previously
created with the timing_analysis new command.
Tcl Return:
0 if the analysis was deleted, 1 otherwise.
disable_constraints (disable timing constraints)
The timing_analysis disable_constraints command disables a physical timing constraint from
the timing analysis.
timing_analysis disable_constraints
timing_analysis is the name of the Xilinx Tcl command.
disable_constraints is the name of the timing_analysis subcommand.
analysis_name specifies the name of an analysis created with the timing_analysis new
command.
timing_constraint_specs specifies the names and specs to be disabled for analysis.
Example:
% timing_analysis disable_constraints
stopwatch_timing “TS_clk=PERIOD
TIMINGROUP\”sclk\”20 ns HIGH 50.00000%;”
Description:
In this example, the specified timing constraints were disabled for
the analysis.
Tcl Return:
Number of constraints that were disabled.
disable_cpt (disable components for path tracing control)
The timing_analysis disable_cpt command disables components associated with a path
tracing control for a timing path analysis.
% timing_analysis disable_cpt
timing_analysis is the name of the Xilinx Tcl command.
disable_cpt is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis generated previously with the
timing_analysis new command.
cpt_symbol specifies a path tracing control that determines whether associated components
are considered for the timing path analysis.
Development System Reference Guide
www.xilinx.com
71
R
Chapter 3: Tcl
component_name specifies the name of the components to be disabled.
Example:
% timing_analysis disable_cpt stopwatch_timing
reg_sr_clk “ureg_1 ureg_2 ureg_3”
Description:
In this example, the specified components, ureg_1, ureg_2, and
ureg_3 are disabled for the timing path analysis.
Tcl Return:
Number of components that were disabled.
enable_constraints (enable constraints for analysis)
The timing_analysis enable_constraints command enables the specified timing constraints
for the analysis.
% timing_analysis enable_constraints
timing_analysis is the name of the Xilinx Tcl command.
enable_constraints is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis generated previously with the
timing_analysis new command.
timing_constraint_specs specifies the names and specs of the constraints to be enabled for
analysis.
Example:
% timing_analysis enable_constraints
stopwatch_timing “TS_clk=PERIOD TIMEGROUP\”sclk\”
20 ns HIGH 50.00000%;”
Description:
In this example, the specified timing constraint is enabled for
analysis.
Tcl Return:
Number of enabled constraints.
enable_cpt (enable components for path tracing control)
The timing_analysis enable_cpt command enables specified components associated with a
path tracing control for a timing path analysis.
% timing_analysis enable_cpt
timing_analysis is the name of the Xilinx Tcl command.
enable_cpt is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis generated previously with the
timing_analysis new command.
cpt_symbol specifies a path tracing control that determines whether associated components
are considered for the timing path analysis.
component_name specifies the name of the components to enable.
72
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
Example:
% timing_analysis enable_cpt stopwatch_timing
reg_sr_clk “ureg_1 ureg_2 ureg_3”
Description:
In this example, the specified components, ureg_1, ureg_2, and
ureg_3 are enabled for the timing path analysis.
Tcl Return:
Number of components that were enabled.
get (get analysis property)
The timing_analysis get command returns the value of the specified property.
% timing_analysis get
timing_analysis is the name of the Xilinx Tcl command.
get is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis generated previously with the
timing_analysis new command.
analysis_property specifies the name of the analysis property to get the value of. See
Table 3-5 for a list of analysis properties.
Example:
% timing_analysis get stopwatch_timing analysis_speed
Description:
In this example, the timing_analysis get command is used to return
the speed grade that is currently set for the stopwatch_timing
analysis.
Tcl Return:
The value of the specified property.
Development System Reference Guide
www.xilinx.com
73
R
Chapter 3: Tcl
The following table lists the analysis properties for the timing_analysis command. A
description of each analysis property is also included in the table.
Table 3-5:
Timing Analysis Properties and Descriptions
Analysis Property
analysis_type
Description
Determines which of the following analysis
types will be run:
auto_generated—for an analysis that discards
any constraints from the UCF/PCF and instead
uses constraints automatically generated by
the timing wizard.
clock_io—for an analysis that discards any
constraints from the UCF/PCF and uses
custom constraints as generated by the
set_constraints subcommand.
endpoints—for an analysis that discards any
constraints from the UCF/PCF and uses
custom constraints as generated by the
set_endpoints subcommand.
timing_constraint—for an analysis that uses the
constraints form the UCF/PCF.
net—for an analysis on nets as specified by the
set_query subcommand.
timegroup—for an analysis on timegroups as
specified by the set_query subcommand.
74
omit_user_constraints
Specifies whether to omit all timing constraints
from the UCF/PCF.
analyze_unconstrained_paths
Specifies whether paths not covered by any
constraint should be analyzed and shown in
the timing report.
analysis_temperature
Specifies the prorating temperature for the
analysis.
analysis_voltage
Specifies the prorating voltage for the analysis.
analysis_speed
Specifies the speed grade for the analysis.
report_name
Specifies the name for the report (XML or
ASCII).
report_format
Specifies the format for the report.
report_datasheet
Specifies whether the datasheet section is
generated for the timing report.
report_timegroups
Specifies whether the timegroups table is
generated for the timing report.
paths_per_constraint
Specifies how many paths per constraint are
reported.
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
Table 3-5:
Timing Analysis Properties and Descriptions
Analysis Property
Description
show_longest_paths
CPLD report option that determines whether
the longest paths are shown.
show_delay_over
CPLD report option that specifies only paths
above the specified delay are shown in the
report.
show_delay_under
CPLD report option that specifies that only
paths below the specified delay are shown in
the report.
display_info
Specifies whether Timing Analyzer is run in
verbose mode.
display_physical_name
Specifies whether physical names of path
elements in the timing report should be
displayed in the Timing Analyzer report view.
display_site_location
Specifies whether site locations of path
elements in the timing report should be
displayed in the Timing Analyzer report view.
display_statistics
Specifies whether the statistic section of the
timing report is shown in the Timing Analyzer
report view.
new (new timing analysis)
The timing_analysis new command sets up a new analysis or query on an implemented
design in the current ISE project. The timing_analysis set command is used to set properties
and values for the new analysis. See “set (set analysis properties)” for more information.
% timing_analysis new analysis|query [-name ]
timing_analysis is the name of the Xilinx Tcl command.
new is the name of the timing_analysis subcommand.
analysis, if specified, sets up a timing analysis.
query, if specified, sets up a net or timegroup analysis.
-name specifies the name for the analysis. If the -name command is used,
but no name is specified, an analysis is generated and has the name of the top-level
module.
Example:
% timing_analysis new analysis [-name stopwatch_timing]
Description:
In this example, the timing_analysis new command is used to create a
timing analysis named stopwatch_timing.
Tcl Return:
A new timing analysis.
Development System Reference Guide
www.xilinx.com
75
R
Chapter 3: Tcl
reset (reset path filters and constraints)
The timing_analysis reset command resets all existing path filters and custom constraints for
the analysis.
% timing_analysis reset
timing_analysis is the name of the Xilinx Tcl command.
reset is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis previously created with the timing_analysis
new command.
Example:
% timing_analysis reset stopwatch_timing
Description:
In this example, the timing_analysis reset command is used to reset all
of the path filters and any custom constraints in the stopwatch_timing
analysis.
Tcl Return:
True if all path filters were cleared successfully, false otherwise.
run (run analysis)
The timing_analysis run command executes an analysis and returns the name of the timing,
net, or timegroup report file. The analysis is based on the property settings assigned with
the timing_analysis set command. An analysis is first created with the timing_analysis new
command. See “set (set analysis properties)” and “new (new timing analysis)” for more
information.
% timing_analysis run
timing_analysis is the name of the Xilinx Tcl command.
run is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis previously created with the timing_analysis
new command.
Example:
% timing_analysis run stopwatch_timing
Description:
In this example, the timing_analysis run command is used to execute a
timing analysis and create a new analysis report.
Tcl Return:
Name of the timing analysis.
saveas (save analysis report)
The timing_analysis saveas command saves the analysis to a specified file.
% timing_analysis saveas
timing_analysis is the name of the Xilinx Tcl command.
saveas is the name of the timing_analysis subcommand.
76
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
analysis_name specifies the name of the analysis previously created with the timing_analysis
new command.
new_file_name specifies the file name for the analysis report.
Example:
% timing_analysis saveas stopwatch_timing stopwatch_report
Description:
In this example, the timing_analysis saveas command is used to save
the stopwatch_timing analysis to a report file named
stopwatch_report.
Tcl Return:
Name of the report file.
set (set analysis properties)
The timing_analysis set command is used to set properties and values for an analysis.
% timing_analysis set
timing_analysis is the name of the Xilinx Tcl command.
set is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis previously created with the timing_analysis
new command.
property specifies the analysis property that you wish to set the value for. See Table 3-5 for
a list of analysis properties.
value specifies the value for the specified property.
Example:
% timing_analysis set stopwatch_timing
analysis_speed -11
Description:
In this example, the timing_analysis set command is used to set the
value of the analysis_speed property to -11, for the stopwatch_timing
analysis.
Tcl Return:
Previous value of the specified property.
set_constraint (set constraint for custom analysis)
The timing_analysis set_constraint command is used to set constraints for a custom analysis.
% timing_analysis set_constraint
timing_analysis is the name of the Xilinx Tcl command.
set_constraint is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis previously created with the timing_analysis
new command.
constraint_type specifies the type of constraint to set for the custom analysis. There are four
constraint types:
♦
maxdelay—pad-to-pad maximum delay
♦
period—period constraint on clock pad
Development System Reference Guide
www.xilinx.com
77
R
Chapter 3: Tcl
♦
padgroup—group definition on pad set
♦
offset—offset in/out constraint
constraint_details specifies the details for the specified constraint type as follows:
♦
maxdelay—timing in ns
♦
period—time in ns and clock pad
♦
padgroup—group name and pads to be included in group
♦
offset—[timegroup] P2S|C2P [C2P|P2S
] [<“data pad or pad group”>]
Note: There are two types of offset constraints: P2S, which is pad-to-synchronous (offset
in constraint), and C2P, which is clock-to-pad (offset out constraint).
Example:
% timing_analysis set_constraint stopwatch_timing
period “13 sclk”
Description:
In this example, a period constraint is set for the stopwatch_timing
analysis. Note that the constraint details, “13 sclk”, are entered as a
text string.
Tcl Return:
1 if the constraint was set successfully, 0 otherwise.
set_endpoints (set source and destination endpoints)
The timing_analysis set_endpoints command sets source and destination endpoints for a
path endpoints analysis.
% timing_analysis set_endpoints
timing_analysis is the name of the Xilinx Tcl command.
set_endpoints is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis previously created with the timing_analysis
new command.
qualifier specifies whether source (from) or destination (to) points are being set for custom
analysis.
category specifies the resources type for the sources and destinations. These are family
dependent.
items specifies the resource items to be put into path endpoint sources or destinations.
78
Example:
% timing_analysis set_endpoints stopwatch_timing from ffs *
Description:
In this example, the asterisk (*) was used as a wildcard to add all items
in the flip-flop category to the sources for the path endpoints analysis.
Tcl Return:
1 if the endpoints were set successfully, 0 otherwise.
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
set_filter (set filter for analysis)
The timing_analysis set_filter command sets a net filter to exclude or include the specified
nets from a path analysis.
% timing_analysis set_filter
timing_analysis is the name of the Xilinx Tcl command.
set_filter is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis previously created with the timing_analysis
new command.
filter_type specifies the type of analysis filter. Supported filter types are net and timegroup.
filter_value specifies the value for the filter type. Net filter values are include and exclude.
filter_items specifies the items to be filtered. For the net filter type, these are the names of
nets in the current design.
Example:
% timing_analysis set_filter stopwatch_timing nets
exclude “ureg_net_1 ureg_net_2 ureg_net_3”
Description:
In this example, the specified nets are excluded from the
stopwatch_timing analysis. Note that the nets to exclude are entered
as text strings, which are distinguished by double quotes (“).
Tcl Return:
1 if the filter is set successfully; 0 otherwise.
set_query (set up net or timegroup report)
The timing_analysis set_query command sets up a report that shows net delays and fanouts,
or blocks associated with timegroups.
% timing_analysis set_query
timing_analysis is the name of the Xilinx Tcl command.
set_query is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis previously created with the timing_analysis
new command.
query_type specifies the type of query. Supported queries are:
net—generates a report that shows the delay details for the specified query items.
timegroup—generates a report that shows blocks of the specified timegroups.
Development System Reference Guide
www.xilinx.com
79
R
Chapter 3: Tcl
query_items specifies the items to query. For example, -ld specifies how many
longest delay nets should be displayed in the report; -hf specifies how many
highest fanout nets should be displayed in the report. See the example below.
Example:
% timing_anlaysis run stopwatch_timing
% timing_analysis set_query stopwatch_timing net
“clk_net1 clk_net2” -ld 2 -hf 5
Description:
In this example, a query is set up to report 2 nets with the longest
delay and 5 nets with the highest fanout. Delay details on the query
items (clk_net1 and clknet_2) are reported in the detailed nets section
of the report.
Note: The net report is only generated after the timing_analysis run
command is used to set up the query.
Tcl Return:
1 if the command was executed successfully; 0 otherwise.
show_settings (generate settings report)
The timing_analysis show_settings command generates a settings report based on the
analysis settings.
% timing_analysis show_settings
timing_analysis is the name of the Xilinx Tcl command.
show_settings is the name of the timing_analysis subcommand.
analysis_name specifies the name of the analysis previously created with the timing_analysis
new command.
Example:
% timing_analysis show_settings stopwatch_timing
Description:
In this example, a settings report is generated for the
stopwatch_timing analysis.
Tcl Return:
The name of the settings report.
xfile (manage project files)
The xfile command is used to manage all of the source files within an ISE project. Use the
xfile command to add, remove, and get information on any source files in the current ISE
project.
% xfile
add (add file to project)
The xfile add command specifies the name of the file to add to the current ISE project. Files
can be added to a project in any order.
% xfile add
xfile is the name of the Xilinx Tcl command.
add is the name of the xfile subcommand.
80
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for General Usage
file_name specifies the name of the source file(s) you wish to add to the current ISE project.
Path names and wildcards can be used to specify one or more files to add to the project. Tcl
commands support two wildcard characters: asterisk (*) to indicate multiple characters, or
a question mark (?) to indicate a single character.
Example:
% xfile add *.vhd /mysource/mysub_dir timing.ucf
Description:
In this example, the xfile add command is used to add all of the
VHDL source files and the timing.ucf file to the current ISE project.
Tcl Return:
The name of the added file(s).
get (get project file properties)
The xfile get command returns information on the specified project file and its properties.
There are two properties supported for this command: name and timestamp. For example,
if name is the specified property, the Tcl return is the full name of the specified file. If
timestamp is the specified property, the Tcl return is the timestamp of when the file was first
added to the project with the xfile add command.
% xfile get
xfile is the name of the Xilinx Tcl command.
get is the name of the xfile subcommand.
file_name specifies the name of the source file to get the name or timestamp information on.
name if specified, returns the full path of the current project and the name of the specified
file.
timestamp if specified, returns the timestamp of when the file was first added to the project
with the xfile add command.
Example:
% xfile get timestamp stopwatch.vhd
Description:
In this example, the xfile get command is used to get the timestamp
information for the stopwatch.vhd file.
Tcl Return:
The value of the specified property as a text string. In this example,
the timestamp information of when the file was added to the
project.
remove (remove file from project)
The xfile remove command removes the specified file from the current ISE project.
% xfile remove
xfile is the name of the Xilinx Tcl command.
remove is the name of the xfile subcommand.
Development System Reference Guide
www.xilinx.com
81
R
Chapter 3: Tcl
file_name specifies the name of the file you wish to remove from the project.
Example:
% xfile remove stopwatch.vhd
Description:
In this example, the stopwatch.vhd file is removed from the current
ISE project.
Tcl Return:
True if the file was removed; false otherwise.
Note: When you remove a file, objects within the current ISE project may be invalidated (e.g.,
partitions and instances).
Tcl Commands for Advanced Scripting
Xilinx Tcl commands for advanced scripting use objects and collections. An object can be
any element in an ISE project, like an instance, file, or process. Collections return groups of
objects, based on values that you assign to object and collection variables.
In Tcl, the set command is used to assign a value to a variable, which is returned with the
dollar sign ($) syntax, as shown in many examples throughout this section. It is not
necessary to declare a Tcl variable before it is used. When the variable does not exist, it is
created when the command is executed.
The collection command and its relative subcommands are used to create and manage large
groups of objects. The search command is used with the collection command to define the
value of the collection.
This section describes the Xilinx Tcl commands for advanced scripting. To view a sample
script of how these commands are used, see the “Sample Tcl Script for Advanced
Scripting” at the end of this chapter.
collection (create and manage a collection)
A collection is a group of Xilinx Tcl objects, similar to a list, that is exported to the Tcl
interface. The collection command, in conjunction with its subcommands, is used to create
and manage the objects in a specified collection.
A collection is referenced in Tcl by a collection variable, which is defined with the collection
set command. Technically, the value of the collection variable is the collection.
The following syntax shows the collection command and its subcommands. Please refer to
the description of each collection subcommand for an example of how the subcommand is
used. Command line syntax is unique to each subcommand.
% collection
append_to (add objects to a collection)
The collection append_to command adds objects to a collection. This command treats a
specified collection variable as a collection and appends all of the objects returned from a
search, or from another collection, to the collection. If the collection variable does not exist,
then it is created when the command is executed.
% collection append_to [-unique]
collection is the name of the Xilinx Tcl command.
append_to is the name of the collection subcommand.
82
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for Advanced Scripting
collection_variable specifies the name of the collection variable, which references the
collection. If the collection variable does not exist, then it is created.
objects_to_append specifies an object or a collection of objects to be added to the collection.
-unique optionally adds only objects that are not already in the collection. If the -unique
option is not used, then duplicate objects may be added to the collection.
Example:
% collection append_to colVar [search * -type instance]
Description:
In this example, the collection append_to command is used to create
a new collection variable named colVar. The nested search command
returns a collection of all the instances in the current design. These
instances are objects that are added to the collection, referenced by
the colVar collection variable.
Tcl Return:
A collection of objects.
copy (copy a collection)
The collection copy command creates a duplicate of an existing collection. Alternatively, you
can have more than one collection variable referencing a collection, rather than copying it.
See Example 1 below.
In most cases, a second reference to a collection is all that is needed. However, if a separate
copy is required, use the collection copy command to create the new collection as shown in
Example 2 below.
collection copy
collection is the name of the Xilinx Tcl command.
copy is the name of the collection subcommand.
collection_variable specifies the name of the collection to copy.
Example 1:
% set colVar_1 [search * -type instance]
% set colVar_2 $colVar_1
Description:
In this example, the Tcl set command in the first line creates a
collection assigned to the collection variable colVar_1. The second
line creates a second collection variable, colVar_2, that references
the value of colVar_1, which is the first collection.
There is still only one underlying collection referenced. Any
changes made to colVar_1 will be visible in colVar_2, and if
colVar1_1 is changed, then colVar_2 continues to reference the same
underlying collection.
Tcl Return:
Development System Reference Guide
A new variable reference to the collection.
www.xilinx.com
83
R
Chapter 3: Tcl
Example 2:
% set colVar_2 [collection copy $colVar_1]
Description:
In this example, the set command creates the collection variable
colVar_2. The nested collection copy command makes a duplicate of
the colVar_1 collection and assigns it to the colVar2 collection
variable, making it a completely separate collection.
Tcl Return:
A new collection.
equal (compare two collections)
The collection equal command compares the contents of two collections. Collections are
considered equal when the objects in both collections are the same. If the same objects are
in both collections, the result is 1. If the objects in the compared collections are different,
then the result is 0. By default, the order of the objects does not matter. Optionally, the
order_dependent command can be specified for the order of the objects to be considered.
% collection equal [-order_dependent]
collection is the name of the Xilinx Tcl command.
equal is the name of the collection subcommand.
colVar_1 specifies the base collection for the comparison.
colVar_2 specifies the collection to compare with the base collection.
order_dependent optionally specifies that the collections are considered different when the
order of the objects in both collections are not the same.
Note: When two empty collections are compared, they are considered identical and the result is 1.
Example:
% set colVar_1 [search * -type instance]
% set colVar_2 [search /top/T* -type instance]
% collection equal $colVar_1 $colVar_2
Description:
In this example, the contents of two collections are compared. First,
the Tcl set command is used to assign a collection of instances to the
collection variable colVar_1; then another collection of filtered
instance names is assigned to the collection variable colVar_2.
The collection equal command is used to specify the two collections
to compare. The dollar sign ($) syntax is used to obtain the values of
the collection variables. In this case, the values of colVar_1 and
colVar_2 to determine if they are equal.
Tcl Return:
84
0 if the collections are not the same, 1 if the collections are the same.
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for Advanced Scripting
foreach (iterate over elements in a collection)
The collection foreach command iterates over each object in a collection through an iterator
variable. The iterator variable specifies the collection to interate over and the set of
commands or script to apply at each iteration.
% collection foreach {body}
collection is the name of the Xilinx Tcl command.
foreach is the name of the collection subcommand.
iterator_variable specifies the name of the iterator variable.
collection_variable specifies the name of the collection to iterate through.
body specifies a set of commands or script to execute at each iteration.
Example:
% set colVar [search * -type instance]
% collection foreach itr $colVar {
puts [object name $itr]}
Description:
In this example, the set command is used in the first line to assign a
collection of instances to the colVar collection variable.
In the second line, the collection foreach command is used to iterate
over each object in the colVar collection.
itr is the name of the iterator variable.
Curly braces { } enclose the body, which is the script that executes at
each iteration. Note that the object name command is nested in the
body to return the value of the iterator variable, which is an instance
in this case.
Tcl Return:
An integer return of the number of times the script was executed.
Caution! You cannot use the standard Tcl-supplied foreach command to iterate over
collections. You must use the Xilinx-specific collection foreach command. Using the Tcl-supplied
foreach command may cause the collection to be deleted.
get (get collection property)
The collection get command returns the value of the specified collection property. Collection
properties and values are assigned with the collection set command.
collection get
collection is the name of the Xilinx Tcl command.
get is the name of the collection subcommand.
property_name specifies the name of the property you wish to get the value of. Valid
property names for the collection get command are display_line_limit and display_type.
Example:
% collection get display_type
Description:
In this example, the collection get command is used to get the current
setting of the display_type property.
Tcl Return:
The set value of the specified property.
Development System Reference Guide
www.xilinx.com
85
R
Chapter 3: Tcl
Note: See also the collection set command for more information on property values for the
collection command.
index (extract a collection object)
Given a collection and an index into it, the collection index command extracts the object at
the specified index and returns the object, if the index is in range. The base collection is
unchanged.
The range for an index is zero (0) to one less (-1) the size of the collection obtained with the
collection sizeof command. See “sizeof (show the number of objects in a collection).”
collection index
collection is the name of the Xilinx Tcl command.
index is the name of the collection subcommand.
collection_variable specifies the name of the collection for index.
index specifies the index into the collection. Index values are 0 to -1, unless the size of the
collection was defined with the collection sizeof command.
Example:
% set colVar [search * -type instance]
% set item [collection index $colVar 2]
% object name $item
Description:
In this example, the collection index command extracts the third object
in the collection of instances.
In the first line, the set command is used to create a collection variable
named colVar. The nested search command defines the value of the
collection for colVar, which in this case is all of the instances in the
current design.
In the second line, the set command is used to create a variable
named item. The nested collection index command obtains the third
object (starting with index 0, 1, 2 . . .) in the given collection.
The last line of this example uses the object name command to return
the value of the item variable, which is the specified value of index.
Tcl Return:
The object at the specified index.
Note: Xilinx-specific Tcl commands that create a collection of objects do not impose a specific order
on the collection, but they do generate the objects in the same, predictable order each time.
Applications that support sorting collections, can impose a specific order on a collection.
properties (list available collection properties)
The collection properties command displays a list of the supported properties for all
collections in the current ISE project. You can set the value of any property with the
collection set command.
% collection properties
collection is the name of the Xilinx Tcl command.
86
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for Advanced Scripting
properties is the name of the collection subcommand. There are two collection properties:
display_line_limit and display_type. These properties are supported with the collection get
and collection set commands.
Example:
% collection properties
Description:
In this example, the collection properties command is used to display a
list of available collection properties.
Tcl Return:
A list of available collection properties. In this example,
display_line_limit and display_type.
Note: See the collection get command for a list of available properties.
remove_from (remove objects from a collection)
The collection remove_from command removes objects from a specified collection,
modifying the collection in place. If you do not wish to modify the existing collection, first
use the collection copy command to create a duplicate of the collection.
% collection remove_from
collection is the name of the Xilinx TCL command.
remove_from is the name of the collection subcommand.
collection_variable specifies the name of the collection variable.
objects_to_remove specifies a collection of objects, or the name of an object that you wish to
remove from the collection.
Example:
% set colVar_1 [search * -type instance]
% set colVar_2 [search /stopwatch/s* -type instance]
% set colVar_3 [collection remove_from colVar_1
$colVar_2]
Description:
In this example, the set command is first used to create the collection
variables colVar_1 and colVar_2. Assume that the values of these two
variables are different.
The last line of this example, creates a third collection variable,
colVar_3 that contains all of the instances in colVar_1, but no
instances in colVar_2.
Tcl Return:
The original collection modified by removed elements. In this
example, the objects in colVar_2 are removed from colVar_1.
set (set the property for all collections)
The collection set command sets the specified property for all collection variables in the
current ISE project.
% collection set
collection is the name of the Xilinx Tcl command.
set is the name of the collection subcommand.
Development System Reference Guide
www.xilinx.com
87
R
Chapter 3: Tcl
property_name and property_value specify the property name and value for all of the
collection variables in the current ISE project. There are two available property settings for
the collection set command, they are:
display_line_limit–specifies the number of lines that can be displayed by a collection
variable. This property setting is useful for very large collections, which may have
thousands, if not millions of objects. The default value for this property is 100. The
minimum value is 0. There is no maximum value limit for this property.
display_type–instructs Tcl to include the object type in the display of objects from any
specified collection variable. Values for this property are true and false. By default, this
option is set to false, which means object types are not displayed. See the example
below.
Example:
% collection set display_type true
Description:
In this example, the collection set command is used to set the property
name and value for all collection variables in the project.
display_type is the name of the property setting.
true specifies the value for the property.
Tcl Return:
The previous value of the property.
sizeof (show the number of objects in a collection)
The collection sizeof command returns the number of objects in the specified collection.
% collection sizeof
collection is the name of the Xilinx Tcl command.
sizeof is the name of the collection subcommand.
collection variable specifies the name of the collection for Tcl to return the size of.
Example:
% collection sizeof $colVar
Description:
In this example, the collection sizeof command is used to return the
size of the collection, which is referenced by the colVar collection
variable.
Tcl Return:
An integer return of the number of items in the specified collection.
object (get object information)
The object command returns the name, type, or property information of any Xilinx Tcl
object in the current ISE project. You can specify a single object or an object from a
collection of objects.
% object
88
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for Advanced Scripting
get (get object properties)
The object get command returns the value of the specified property.
% object get
object is the name of the Xilinx Tcl command.
name is the name of the object subcommand.
object_name specifies the object to get the property of. The object name will always be a Tcl
variable. The set command is used to create a Tcl variable, as shown in the following
example.
property_name specifies the name of one of the properties of an object. The properties of an
object vary depending on the type of object. Use the object properties command to get a list
of valid properties for a specific object.
Example:
% set colVar [search * -type instance]
% collection foreach obj $colVar {set objProps
[object properties $obj] foreach prop $objProps
{puts [object get $obj $prop]}}
Description:
This example first runs a search to create a collection of all instances
in the project. The second statement iterates through the objects in
the collection. For each object, the list of available properties on the
object are obtained by the object properties command. Then, the value
of each property for each of the objects is returned.
Tcl Return:
The value of the specified property.
name (name of the object)
The object name command returns the name of any Xilinx object. This command is useful
when manipulating a collection of objects, which may have been returned from a search.
The object name command can be used to narrow the collection.
% object name
object is the name of the Xilinx Tcl command.
name is the name of the object subcommand.
Development System Reference Guide
www.xilinx.com
89
R
Chapter 3: Tcl
object_name specifies the object to return the name of. The object name will always be a
string. The set command can be used to create a Tcl variable, as shown in the following
example.
Example:
% set colVar [search * -type instance]
% object name [collection index $colVar 1]
Description:
In this example, the set command is first used to create the colVar
collection variable. The nested search command defines the value of
the collection variable to be all instances in the current ISE project.
In the second line, the object name command is used to get the name
of the second object in the collection. The collection index command
defines which object to get, where:
$colvar specifies the collection to get the object from.
1 specifies the index into the collection. In this case, the second object
in the collection is returned because index values start at 0. See the
collection index command for more information.
Tcl Return:
The name of the object as a text string.
properties (list object properties)
The object properties command lists the available properties for the specified object.
% object properties
object is the name of the Xilinx Tcl command.
name is the name of the object subcommand.
object_name specifies the object to list the properties of. The object name will always be a Tcl
variable created with the Tcl set command.
Example:
% set colVar [search * -type partition]
% collection foreach obj $colVar {set objProps
[object properties $obj] foreach prop $objProps
{puts [object get $obj $prop]}}
90
Description:
This example first runs a search to create a collection of objects. The
second statement iterates through the objects in the collection. For
each object, a list of available properties for the object are obtained
with the object properties command. Then, the value of each
property is returned for each object.
Tcl Return:
The available object properties as a text string.
www.xilinx.com
Development System Reference Guide
R
Tcl Commands for Advanced Scripting
type (type of object)
The object type command returns the type of any Xilinx object.
% object type
object is the name of the Xilinx Tcl command.
name is the name of the object subcommand.
object_name specifies the object to return the type of. The object name will always be a Tcl
variable. The set command is used to create a Tcl variable, as shown in the following
example.
Example:
% set colVar [search * -type instance]
% object type [collection index $colVar 1]
Description:
In this example, the set command is first used to create the colVar
collection variable. The nested search command defines the value of
the collection variable.
In the second line, the object type command is used to get the type
information for the object in the collection. The collection index
command defines which object to get, where:
$colvar specifies the collection to get the object from.
1 specifies the index into the collection. In this case, the second object
in the collection is returned because index values start at 0. See the
collection index command for more information.
Tcl Return:
The type of the object as a text string.
search (search and return matching objects)
The search command is used to search for specific design objects that match a specified
pattern.
search [-exactmatch][-matchcase][-regexp][-type ]
search is the name of the Xilinx Tcl command.
pattern_string specifies a string to be used for the search. In Tcl, a string is distinguished on
the command line with double quotes (“). This string may contain regular expressions.
-exactmatch specifies that any matches found by the search, should match the pattern string
exactly.
-matchcase specifies that the search is case-sensitive.
-regexp specifies that the pattern string uses regular expressions. If not specified, the
matching is simple matching.
-type specifies what type of design objects to search for. Supported search
types are partition and instance.
Development System Reference Guide
www.xilinx.com
91
R
Chapter 3: Tcl
Example:
% search “/stopwatch” -type instance
Description:
In this example, the search command is used to find all instances in
the design.
Tcl Return:
A collection of objects that match the search criteria. If no matches
are found, an empty collection is returned.
Note: Use the collection foreach command to list or get access to each object in a collection. See
foreach (iterate over elements in a collection) for more information.
Project Properties and Options
This following tables list all of the available project properties and batch tool options. The
first table lists all of the project properties. The remaining tables list all of the supported
batch tool options, by Xilinx synthesis or implementation tool.
Batch tool options are listed as text strings, which are distinguished by double quotes (“)
on the command line. The exact string representation, as shown in Project Navigator, is
required.
Table 3-6:
Project Properties
Property Name
Description
device
The device to use for the project.
family
The device family to use for the project.
generated_simulation_language
The language of the generated simulation netlist.
name
Name of the project.
package
The device package to use for the project.
speed
The device speed grade to use for the project.
synthesis_tool
The synthesis tool to use for this project. The default
tool to use is XST.
top
The top-level design module or entity.
top_level_module_type
The module type of the top-level source.
Table 3-7:
XST Options
Option Name
92
Synthesis Tool
“Add I/O Buffers”
XST
“Bus Delimiter”
XST
“Case Implementation Style”
XST
“Case”
CST
“Constrain Placement”
XST
www.xilinx.com
Development System Reference Guide
R
Project Properties and Options
Table 3-7:
XST Options
Option Name
Synthesis Tool
“Cores Search Directories”
XST
“Cross Clock Analysis”
XST
“Custom Compile File List”
XST
“Decoder Extraction”
XST
“Equivalent Register Removal”
XST
“FSM Encoding Algorithm”
XST
“FSM Style”
XST
“Generate RTL Schematic”
XST
“Global Optimization Goal”
XST
“HDL INI File”
XST
“Hierarchy Separator”
XST
“Keep Hierarchy”
XST
“Library Search Order”
XST
“Logical Shifter Extraction”
XST
“Max Fanout”
XST
“Move First Flip-Flop Stage”
XST
“Move Last Flip-Flop Stage”
XST
“Mux Extraction”
XST
“Mux Style”
XST
“Number of Global Clock Buffers”
XST
“Number of Regional Clock Buffers”
XST
“Optimization Effort”
XST
“Optimization Goal”
XST
“Optimize Instantiated Primitives”
XST
“Other XST Command Line Options”
XST
“Pack I/O Registers into IOBs”
XST
“Priority Encoder Extraction”
XST
“RAM Extraction”
XST
“RAM Style”
XST
“Read Cores”
XST
“Register Balancing”
XST
“Register Duplication”
XST
Development System Reference Guide
www.xilinx.com
93
R
Chapter 3: Tcl
Table 3-7:
XST Options
Option Name
“Resource Sharing”
XST
“ROM Extraction”
XST
“ROM Style”
XST
“Safe Implementation”
XST
“Shift Register Extraction”
XST
“Slice Packing”
XST
“Slice Utilization Ration”
XST
“Synthesis Constraints File”
XST
“Use Clock Enable”
XST
“Use DSP48”
XST
“Use Synchronous Reset”
XST
“Use Synchronous Set”
XST
“Use Synthesis Constraints File”
XST
“Verilog 2001”
XST
“Verilog Include Directories”
XST
“Work Directory”
XST
“Write Timing Constraints”
XST
“XOR Collapsing”
XST
Table 3-8:
NGDBuild Options
Option Name
94
Synthesis Tool
Implementation Tool
“Allow Unexpanded Blocks”
NGDBuild
“Allow Unmatched LOC Constraints”
NGDBuild
“Create I/O Pads from Ports”
NGDBuild
“Macro Search Path”
NGDBuild
“Netlist Translation Type”
NGDBuild
“Other NGDBuild Command Line Options”
NGDBuild
“Preserve Hierarchy on SubModule”
NGDBuild
“Use LOC Constraints”
NGDBuild
“Use Rules File for Netlister Launcher”
NGDBuild
www.xilinx.com
Development System Reference Guide
R
Project Properties and Options
Table 3-9:
MAP Options
Option Name
Implementation Tool
“Allow Logic Optimization Across Hierarchy”
MAP
“CLB Pack Factor Percentage”
MAP
“Disable Register Ordering”
MAP
“Equivalent Register Removal”
MAP
“Extra Effort”
MAP
“Generate Detailed MAP Report”
MAP
“Global Optimization”
MAP
“Map Effort Level”
MAP
“Map Guide Design File (.ncd)”
MAP
“Map Guide Mode”
MAP
“Map Slice Logic into Unused Block RAMs”
MAP
“Map to Input Functions”
MAP
“Optimization Strategy (Cover Mode)”
MAP
“Other Map Command Line Options”
MAP
“Pack I/O Registers/Latches into IOBs”
MAP
“Perform Timing-Driven Packing and Placement”
MAP
“Register Duplication”
MAP
“Replicate Logic to Allow Logic Level Reduction”
MAP
“Retiming”
MAP
“Starting Placer Cost Table (1-100)”
MAP
“Trim Unconnected Signals”
MAP
“Use RLOC Constraints”
MAP
Development System Reference Guide
www.xilinx.com
95
R
Chapter 3: Tcl
Table 3-10:
PAR Options
Option Name
96
Implementation Tool
“Extra Effort (Highest PAR level only)”
PAR
“Generate Asynchronous Delay Report”
PAR
“Generate Clock Region Report”
PAR
“Generate Post-Place & Route Simulation Model”
PAR
“Generate Post-Place & Route Static Timing Report”
PAR
“Nodelist File (Unix Only)”
PAR
“Number of PAR Iterations (1-100)”
PAR
“Number of Results to Save (0-100)”
PAR
“Other Place & Route Command Line Options”
PAR
“PAR Guide Design File (.ncd)”
PAR
“PAR Guide Mode”
PAR
“Place & Route Effort Level (Overall)”
PAR
“Place and Route Mode”
PAR
“Place Effort Level (Overrides Overall Level)”
PAR
“Power Reduction”
PAR
“Router Effort Level (Overrides Overall Level)”
PAR
“Save Results in Directory (.dir will be appended)”
PAR
“Starting Placer Cost Table (1-100)”
PAR
“Use Bonded I/Os”
PAR
“Using Timing Constraints”
PAR
www.xilinx.com
Development System Reference Guide
R
Example Tcl Scripts
Example Tcl Scripts
This section provides two example Tcl scripts. The first example is a “Sample Tcl Script for
General Usage”. The second example is a “Sample Tcl Script for Advanced Scripting”.
You can run these example Tcl scripts the following ways:
•
Enter each statement interactively at the xtclsh prompt (%).
You can access the xtclsh prompt (%) from the command line by typing xtclsh, or
from the Tcl Console tab in Project Navigator.
•
Save the statements in a script file with a .tcl extension. To run the Tcl script, type the
following from the xtclsh prompt (%):
% source .tcl
Sample Tcl Script for General Usage
# open the project and set project-level properties
project new watchvhd.ise
project set family Virtex2P
project set device xc2vp2
project set package fg256
project set speed -7
# add all the source HDLs and ucf
xfile add stopwatch.vhd statmatch.vhd cnt60.vhd dcm1.vhd decode.vhd
xfile add tenths.vhd hex2led
xfile add watchvhd.ucf
# define all partitions
partition new /stopwatch/MACHINE
partition new /stopwatch/Inst_dcm1
partition new /stopwatch/XCOUNTER
partition new /stopwatch/decoder
partition new /stopwatch/sixty
partition new /stopwatch/lsbled
partition new /stopwatch/msbled
# get partition properties
set props [partition properties]
puts "Partition Properties :
$props"
# get top
set top [project get top]
Development System Reference Guide
www.xilinx.com
97
R
Chapter 3: Tcl
# get project properties available
set props2 [project properties]
puts "Project Properties for top-level module $top" $props2
# inspect the current value for the following batch application options
set map_guide_mode [project get "MAP Guide Mode"]
puts "MAP Guide Mode = $map_guide_mode"
set par_guide_mode [project get "PAR Guide Mode"]
puts "PAR Guide Mode = $par_guide_mode"
# set batch application options :
# 1. set synthesis optimization goal to speed
# 2. ignore any LOCs in ngdbuild
# 3. perform timing-driven packing
# 4. use the highest par effort level
# 5. set the par extra effort level
# 6. pass "-instyle xflow" to the par command-line
# 7. generate a verbose report from trce
# 8. create the IEEE 1532 file during bitgen
project set "Optimization Goal" Speed
project set "Use LOC Constraints" false
project set "Perform Timing-Driven Packing and Placement" TRUE
project set "Place & Route Effort Level (Overall)" High
project set "Extra Effort (Highest (PAR level only)"
Impossible"
"Continue on
project set "Other Place & Route Command Line Options" "-intsyle xflow"
project set "Report Type" "Verbose Report"
project set "Create IEEE 1532 Configuration File" TRUE
# run the entire xst-to-trce flow
process run "Implement Design"
# close project
project close
# open project again
project open
# alter some partition properties
partition rerun /stopwatch/sixty implementation
partition rerun /stopwatch/lsbled synthesis
98
www.xilinx.com
Development System Reference Guide
R
Example Tcl Scripts
# rerun with only out-of-date partitions re-implemented
process run "Implement Design"
# close project
project close
Sample Tcl Script for Advanced Scripting
# create a new project and set device properties
project new watchvhd.ise
project set family virtex2p
project set device xc2VP2
project set package fG25
project get package
project set speed -7
# add the watch vhd files
xfile add dve_ccir_top.v
xfile add stopwatch.vhd statmatch.vhd cnt60.vhd dcm1.vhd decode.vhd
xfile add tenths.vhd hex2led.vhd watchvhd.ucf
# check that no partitions are present yet
set dus [search * -type partition]
# search for all design instances
set dus [search * -type instance]
# display all design instances
collection foreach du $dus {
puts "Name [object name $du], Type [object type $du]"
}
# confine search to the top-level instances only
set dus [search {/[^/]+/[^/]+} -type instance -regexp -exactmatch]
# define partitions for all the toplevel instances in the design (note
that the last partition created is returned)
partition new [search {/[^/]+/[^/]+} -type instance -regexp exactmatch]
# check that we created something
search * -type partition
Development System Reference Guide
www.xilinx.com
99
R
Chapter 3: Tcl
# run with default values
process run "Implement Design"
# close project
project close
100
www.xilinx.com
Development System Reference Guide
R
Chapter 4
PARTGen
The PARTGen program is compatible with the following Xilinx devices.
•
Virtex™, Virtex™-E
•
Virtex™-II
•
Virtex™-II Pro, Virtex™-II Pro X
•
Virtex™-4
•
Virtex™-5 LX
•
Spartan™-II, Spartan™-IIE
•
Spartan™-3, Spartan™-3E, Spartan™-3L
•
CoolRunner™ XPLA3, CoolRunner™-II
•
XC9500™, XC9500XL™, XC9500XV™
This chapter describes PARTGen. The chapter contains the following sections.
•
“PARTGen Overview”
•
“PARTGen Syntax”
•
“PARTGen Input Files”
•
“PARTGen Output Files”
•
“PARTGen Options”
•
“Partlist File”
•
“PKG File”
PARTGen Overview
PARTGen is a command line tool that displays various levels of information about
installed Xilinx devices and families. PARTGen does not require an input design file. It
uses options specified on the command line to output architectural details.
PARTGen Syntax
Following is the command line syntax for PARTGen:
partgen options
options can be any number of the options listed in “PARTGen Options”. They need not be
listed in any order. Use spaces to separate multiple options.
Note: The command partgen -i lists output for every installed device.
Development System Reference Guide
www.xilinx.com
101
R
Chapter 4: PARTGen
PARTGen Input Files
PARTGen does not have any user input files.
PARTGen Output Files
PARTGen outputs two file types: partlist and PKG. Partlist and PKG files are produced
with the -p and -v command line options. The -p option generates a terse version of the file,
while the -v option generates a verbose version of the file.
Note: Partlist files are generated in both ASCII and XML formats.
Following are output file types produced by PARTGen:
•
XCT file—Partlist file in ASCII format that contains detailed information about
architectures and devices. See the “Partlist File” section for a detailed description of
this file type.
•
PKG files—ASCII formatted files that correlate IOBs with output pin names. PKG files
are in XACT package format, which is a set of columns of information about the pins
of a particular package. The -p option generates a three column entry describing the
pins. The -v option adds five more columns of descriptive pin information.See the
“PKG File” section for a detailed description of this file type.
•
XML file—Partlist file in XML format.
PARTGen Options
This section describes the command line options and how they affect the behavior of
PARTGen.
–arch (Print Information for Specified Architecture)
–arch architecture_name
The –arch option prints a list of devices, packages, and speeds for a specified architecture
that has been installed.
Valid entries for architecture_name and the corresponding device product name are listed in
the following table:
Table 4-1:
Values for architecture_name
architecture_name
102
Corresponding Device
Product Name
virtex
Virtex
virtex2
Virtex-II
virtex2p
Virtex-II Pro
virtexe
Virtex-E
virtex4
Virtex-4
virtex5
Virtex-5
spartan2
Spartan-II
www.xilinx.com
Development System Reference Guide
R
PARTGen Options
Table 4-1:
Values for architecture_name
architecture_name
Corresponding Device
Product Name
spartan2e
Spartan-IIE
spartan3
Spartan-3
spartan3e
Spartan-3E
xc9500
XC9500
xc9500xl
XC9500XL
xc9500xv
XC9500XV
xpla3
CoolRunner XPLA3
xbr
CoolRunner-II
For example, entering the command partgen -arch virtex displays the following
information:
Build:
/build/bcxfndry/HEAD/rtf
command:
partgen -arch virtex
Release 8.2i - PartGen HEAD
Copyright (c) 1995-2006 Xilinx, Inc.
All rights reserved.
v50
SPEEDS:
-6
-5
-4
SPEEDS:
-6
-5
-4
SPEEDS:
-6
-5
-4
bg256
cs144
fg256
pq240
tq144
v100
bg256
cs144
fg256
pq240
tq144
v150
bg256
bg352
fg256
fg456
pq240
Development System Reference Guide
www.xilinx.com
103
R
Chapter 4: PARTGen
v200
SPEEDS:
-6
-5
-4
SPEEDS:
-6
-5
-4
SPEEDS:
-6
-5
-4
SPEEDS:
-6
-5
-4
SPEEDS:
-6
-5
-4
SPEEDS:
-6
-5
-4
bg256
bg352
fg256
fg456
pq240
v300
bg352
bg432
fg456
pq240
v400
bg432
bg560
fg676
hq240
v600
bg432
bg560
fg676
fg680
hq240
v800
bg432
bg560
fg676
fg680
hq240
v1000
bg560
fg680
–i (Print a List of Devices, Packages, and Speeds)
The –i option prints out a list of devices, packages, and speeds that have been installed.
Following is a portion of a sample display where the -i option has been used:
.
.
.
2s15
SPEEDS:
-6
-5
-5Q
cs144
tq144
vq100
104
www.xilinx.com
Development System Reference Guide
R
PARTGen Options
2s30
SPEEDS:
-6
-5
-5Q
SPEEDS:
-6
-5
-5Q
SPEEDS:
-6
-5
-5Q
SPEEDS:
-6
-5
-5Q
SPEEDS:
-6
-5
-5Q
SPEEDS:
-7
-6
-6Q
SPEEDS:
-7
-6
-6Q
SPEEDS:
-7
-6
-6Q
SPEEDS:
-7
-6
-6Q
SPEEDS:
-7
-6
-6Q
cs144
tq144
pq208
vq100
2s50
tq144
fg256
pq208
2s100
tq144
fg256
fg456
pq208
2s150
fg456
fg256
pq208
2s200
fg256
fg456
pq208
2s50e
ft256
pq208
tq144
2s100e
ft256
fg456
pq208
tq144
2s150e
ft256
fg456
pq208
2s200e
ft256
fg456
pq208
2s300e
ft256
fg456
pq208
Development System Reference Guide
www.xilinx.com
105
R
Chapter 4: PARTGen
2s400e
SPEEDS:
-7
-6
-6Q
SPEEDS:
-7
-6
-6Q
SPEEDS:
-4
SPEEDS:
-4
SPEEDS:
-4
SPEEDS:
-4
SPEEDS:
-4
SPEEDS:
-4
SPEEDS:
-4
SPEEDS:
-4
SPEEDS:
-6
-5
-4
ft256
fg456
fg676
2s600e
fg456
fg676
3s50
pq208
tq144
vq100
3s200
ft256
pq208
tq144
vq100
3s400
fg456
ft256
pq208
tq144
3s1000
fg456
fg676
ft256
3s1500
fg456
fg676
3s2000
fg676
fg900
3s4000
fg900
fg1156
3s5000
fg900
fg1156
v50
bg256
cs144
fg256
pq240
tq144
106
www.xilinx.com
Development System Reference Guide
R
PARTGen Options
–intstyle (Integration Style)
–intstyle {ise | xflow | silent}
The –intstyle option reduces screen output based on the integration style you are running.
When using the –intstyle option, one of three modes must be specified: ise, xflow, or silent.
The mode sets the way information is displayed in the following ways:
–intstyle ise
This mode indicates the program is being run as part of an integrated design
environment.
–intstyle xflow
This mode indicates the program is being run as part of an integrated batch flow.
–intstyle silent
This mode limits screen output to warning and error messages only.
Note: The -intstyle option is automatically invoked when running in an integrated environment, such
as Project Navigator or XFLOW.
–p (Creates Package file and Partlist Files)
–p name
The –p option generates a partlist.xct file for the specified name and also creates package
files. All files are placed in the working directory. Valid name entries include architectures,
devices, and parts. Following are example command line entries of each type:
–p virtex (Architecture)
–p xcv400 (Device)
–p v400bg432 (Part)
If an architecture, device, or part is not specified with the –p option, detailed information
for every installed device is submitted to the partlist.xct file.
The –p option generates more detailed information than the -arch option, but less
information than the –v option. The -p option generates a three column entry describing
the pins. For each pin the following data appears:
•
Column 1: contains either pin (user accessible pin) or pkgpin (dedicated pin).
•
Column 2: specifies the pin name.
•
Column 3: specifies the package pin.
For a description of the entries in the partlist file, see the “Partlist File”.
–nopkgfile (No Package File)
The –nopkgfile option cancels the production of the .pkg files when the – p and –v options
are used. The –nopkgfile option allows you to bypass creating .pkg files.
Development System Reference Guide
www.xilinx.com
107
R
Chapter 4: PARTGen
–v (Creates Package and Partlist Files)
–v name
The –v option generates a partlist file in ASCII and XML format for the specified name and
also creates package files. Valid name entries include architectures, devices, parts.
Following are example command line entries of each type:
–v virtex (Architecture)
–v xcv400 (Device)
–v v400bg432 (Part)
If no architecture, device, or part is specified with the –v option, information for every
installed device is submitted to the partlist.xct file.
The –v option generates more detailed information than the –p option. The –p and –v
options are mutually exclusive, that is, you can specify one or the other but not both. The p option generates a three column entry describing the pins. The -v option adds six more
columns of descriptive pin information.For each pin the following data appears:
•
Column 1: contains either pin (user accessible pin) or pkgpin (dedicated pin).
•
Column 2: specifies the pin name.
•
Column 3: specifies the package pin.
•
Column 4: IO_BANK is a positive integer associated with a VREF bank, or -1 to
indicate no VREF bank association.
•
Column 5: IO_BANK is a positive integer associated with a VCCO bank, or -1 to
indicate no VCCO bank association.
•
Column 6: specifies the function name, and consists of a string indicating how the pin
is used. If the pin is dedicated, then the string will indicate the specific function. If the
pin is a generic user pin, the string will be "IO." If the pin is multipurpose, an
underscore-separated set of characters will make up the string.
•
Column 7: indicates the closest CLB row/column to the pin.
•
Column 8: indicates LVDS IOB association, consisting of an index (ranging from 0 to
the number of LVDS pairs - 1) and the letter M or S. The value "N.A." indicates a nonLVDS pin.
•
Column 9: indicates the flight time data (trace length) in units of microns. If no data is
available, the column will contain zeros.
For a description of the entries in the partlist.xct file, see the “Partlist File” that follows.
Partlist File
The partlist file (XCT) contains detailed information about architectures and devices,
including supported synthesis tools. Optionally, the partlist file can be generated in XML
format with the
The partlist file is a series of part entries. There is one entry for every part supported in the
installed software. The following subsections describe the information contained in the
partlist.xct file.
108
www.xilinx.com
Development System Reference Guide
R
Partlist File
Header
The first part is a header for the entry. The format of the entry looks like the following:
part architecture family partname diename packagefilename
Following is an example for the XCV50bg256:
partVIRTEX V50bg256 NA.die v50bg256.pkg
Device Attributes
The header is followed by a list of device attributes. Not all attributes are applicable to all
devices.
•
CLB row and column sizes: NCLBROWS=# NCLBCOLS=#
•
Sub-family designation: STYLE=sub_family
(For example, STYLE = Virtex2)
•
Input registers: IN_FF_PER_IOB=#
•
Output registers: OUT_FF_PER_IOB=#
•
Number of pads per row and per column: NPADS_PER_ROW=#
NPADS_PER_COL=#
•
Bitstream information:
♦
Number of frames: NFRAMES=#
♦
Number bits/frame: NBITSPERFRAME=#
The preceding bulleted items display for both the -p and -v options. The following bulleted
items are displayed only when using the -v option:
•
Number of IOBS in device: NIOBS=#
•
Number of bonded IOBS: NBIOBS=#
•
Slices per CLB: SLICES_PER_CLB=#
For slice-based architectures, such as Virtex.
(For non-slice based architectures, assume one slice per CLB)
•
Flip-flops for each slice: FFS_PER_SLICE=#
•
Latches for each slice: CAN BE LATCHES={TRUE|FALSE}
•
DLL blocks for Virtex, Virtex-E, Spartan-II, and Spartan-3 families, and DCMs for
Virtex-II, Virtex-IIP, and Virtex-4 families that include the DLL functionality.
•
LUTs in a slice: LUT_NAME=name LUT_SIZE=#
•
Number of global buffers: NUM_GLOBAL_BUFFERS=#
(The number of places where a buffer can drive a global clock combination.)
Development System Reference Guide
www.xilinx.com
109
R
Chapter 4: PARTGen
•
External Clock IOB pins:
♦
For Virtex, Virtex-E, Spartan-II, and Spartan-3E
GCLKBUF0=PAD#, GCLKBUF1=PAD#,
GCLKBUF2=PAD#, GCLKBUF3=PAD#
♦
For Virtex-II, Virtex-II Pro, and Virtex-4:
BUFGMUX0P=PAD#, BUFGMUX1P=PAD#,
BUFGMUX2P=PAD#, BUFGMUX3P=PAD#, BUFGMUX4P=PAD#,
BUFGMUX5P=PAD#,
BUFGMUX6P=PAD#, BUFGMUX7P=PAD#
•
Block RAM:
NUM_BLK_RAMS=#
BLK_RAM_COLS=# BLK_RAM_COL0=# BLK_RAMCOL1=# BLK_RAM_COL2=#
BLK_RAM_COL_3=#
BLK_RAM_SIZE=4096x1 BLK_RAM_SIZE=2048x2 BLK_RAM_SIZE=512x8
BLK_RAM_SIZE=256x16
Block RAM locations are given with reference to CLB columns. In the following
example, Block RAM 5 is positioned in CLB column 32.
NUM_BLK_RAMS=10 BLK_RAM_COL_5=32 BLK_RAM_SIZE=4096X1
•
Select RAM:
NUM_SEL_RAMS=#
•
SEL_RAM_SIZE=#X#
Select Dual Port RAM:
SEL_DP_RAM={TRUE|FALSE}
This field indicates whether the select RAM can be used as a dual port ram. The
assumption is that the number of addressable elements is reduced by half, that is, the
size of the select RAM in Dual Port Mode is half that indicated by SEL_RAM_SIZE.
•
Speed grade information: SPEEDGRADE=#
•
Typical delay across a LUT for each speed grade: LUTDELAY=#
•
Typical IOB input delay: IOB_IN_DELAY=#
•
Typical IOB output delay: IOB_OUT_DELAY=#
•
Maximum LUT constructed in a slice:
MAX_LUT_PER_SLICE=#
(From all the LUTs in the slice)
•
Max LUT constructed in a CLB: MAX_LUT_PER_CLB=#
This field describes how wide a LUT can be constructed in the CLB from the available
LUTs in the slice.
110
www.xilinx.com
Development System Reference Guide
R
PKG File
•
Number of internal 3-state buffers in a device: NUM_TBUFS PER ROW=#
•
If unavailable on a particular device or package, PartGen reports:
NUM_PPC=#
NUM_GT=#
NUM_MONITOR=#
NUM_DPM=#
NUM_PMCD=#
NUM_DSP=#
NUM_FIFO=#
NUM_EMAC=#
NUM_MULT=#
PKG File
The PKG files correlate IOBs with output pin names. The –p option generates a three
column entry describing the pins. The –v option adds six more columns of descriptive pin
information.
For example, the command partgen –p xc2v40 generates the package files:
2v40cs144.pkg and 2v40fg256.pkg. Following is a portion of the package file for the
2v40cs144:
package 2v40cs144
pin PAD96 D3
pin PAD2 A3
pin PAD3 C4
pin PAD4 B4
.
.
.
The first column contains either pin (user accessible pin) or pkgpin (dedicated pin). The
second column specifies the pin name. For user accessible pins, the name of the pin is the
bonded pad name associated with an IOB on the device, or the name of a multi-purpose
pin. For dedicated pins, the name is either the functional name of the pin, or no connection
(N.C.). The third column specifies the package pin.
The command partgen –v generates package (.pkg) files and generates a nine column entry
describing the pins. The first three columns are described in the preceding section.
The fourth and fifth columns, IO_BANK, is a positive integer associated with a bank, or –1
for no bank association. The sixth column, specifying function name, consists of a string
indicating how the pin is used. If the pin is dedicated, then the string will indicate a specific
function. If the pin is a generic user pin, the string is IO. If the pin is multipurpose, an
underscore-separated set of characters will make up the string. The seventh column
indicates the closest CLB row or column to the pin, and appears in the form R[0-9]C[0-9].
Column eight is comprised of a string for each pin associated with a LVDS IOB. The string
consists of and index and the letter M or S. Index values will go from 0 to the number of
LVDS pairs. The value for a non-LVDS pin will default to N.A. The ninth column is
composed of flight-time data in units of microns. If no flight-time data is available, this
column contains zeros.
Development System Reference Guide
www.xilinx.com
111
R
Chapter 4: PARTGen
Following are examples of the verbose pin descriptors in PARTGen:
package 2v40fg256
pkpin N.C. D9 -1 N.C.
pkpin DONE M12 -1 DONE
pkpin VCCO N1 -1 VCCO
.
.
.
112
N.A.
N.A.
N.A.
www.xilinx.com
N.A.
N.A.
N.A.
0
0
0
Development System Reference Guide
R
Chapter 5
Logical Design Rule Check
This program is compatible with the following families:
•
Virtex™, Virtex™-E
•
Virtex™-II
•
Virtex™-II Pro, Virtex™-II Pro X
•
Virtex™-4
•
Virtex™-5 LX
•
Spartan™-II, Spartan™-IIE
•
Spartan™-3, Spartan™-3E, Spartan™-3L
•
CoolRunner™ XPLA3, CoolRunner™-II
•
XC9500™, XC9500XL™, XC9500XV™
This chapter describes the Logical Design Rule Check (DRC). The chapter contains the
following sections:
•
“Logical DRC Overview”
•
“Logical DRC Checks”
Logical DRC Overview
The Logical Design Rule Check (DRC), also known as the NGD DRC, comprises a series of
tests to verify the logical design in the Native Generic Database (NGD) file. The Logical
DRC performs device-independent checks.
The Logical DRC generates messages to show the status of the tests performed. Messages
can be error messages (for conditions where the logic will not operate correctly) or
warnings (for conditions where the logic is incomplete).
The Logical DRC runs automatically at the following times:
•
At the end of NGDBuild, before NGDBuild writes out the NGD file
NGDBuild writes out the NGD file if DRC warnings are discovered, but does not write
out an NGD file if DRC errors are discovered.
•
At the end of NetGen, before writing out the netlist file
The netlist writer (NetGen) does not perform the entire DRC. It only performs the Net
checks and Name checks. The netlist writer writes out a netlist file even if DRC
warnings or errors are discovered.
Development System Reference Guide
www.xilinx.com
113
R
Chapter 5: Logical Design Rule Check
Logical DRC Checks
The Logical DRC performs the following types of checks:
•
Block check
•
Net check
•
Pad check
•
Clock buffer check
•
Name check
•
Primitive pin check
The following sections describe these checks.
Block Check
The block check verifies that each terminal symbol in the NGD hierarchy (that is, each
symbol that is not resolved to any lower-level components) is an NGD primitive. A block
check failure is treated as an error. As part of the block check, the DRC also checks userdefined properties on symbols and the values on the properties to make sure they are legal.
Net Check
The net check determines the number of NGD primitive output pins (drivers), 3-state pins
(drivers), and input pins (loads) on each signal in the design. If a signal does not have at
least one driver (or one 3-state driver) and at least one load, a warning is generated. An
error is generated if a signal has multiple non-3-state drivers or any combination of 3-state
and non-3-state drivers. As part of the net check, the DRC also checks user-defined
properties on signals and the values on the properties to make sure they are legal.
Pad Check
The pad check verifies that each signal connected to pad primitives obeys the following
rules.
•
If the PAD is an input pad, the signal to which it is connected can only be connected to
the following types of primitives:
♦
Buffers
♦
Clock buffers
♦
PULLUP
♦
PULLDOWN
♦
KEEPER
♦
BSCAN
The input signal can be attached to multiple primitives, but only one of each of the
above types. For example, the signal can be connected to a buffer primitive, a clock
buffer primitive, and a PULLUP primitive, but it cannot be connected to a buffer
primitive and two clock buffer primitives. Also, the signal cannot be connected to both
a PULLUP primitive and a PULLDOWN primitive. Any violation of the rules above
results in an error, with the exception of signals attached to multiple pull-ups or pulldowns, which produces a warning. A signal that is not attached to any of the above
types of primitives also produces a warning.
114
www.xilinx.com
Development System Reference Guide
R
Logical DRC Checks
•
If the PAD is an output pad, the signal it is attached to can only be connected to one of
the following primitive outputs:
♦
A single buffer primitive output
♦
A single 3-state primitive output
♦
A single BSCAN primitive
In addition, the signal can also be connected to one of the following primitives:
♦
A single PULLUP primitive
♦
A single PULLDOWN primitive
♦
A single KEEPER primitive
Any other primitive output connections on the signal results in an error.
If the condition above is met, the output PAD signal may also be connected to one
clock buffer primitive input, one buffer primitive input, or both.
•
If the PAD is a bidirectional or unbonded pad, the signal it is attached to must obey
the rules stated above for input and output pads. Any other primitive connections on
the signal results in an error. The signal connected to the pad must be configured as
both an input and an output signal; if it is not, you receive a warning.
•
If the signal attached to the pad has a connection to a top-level symbol of the design,
that top-level symbol pin must have the same type as the pad pin, except that output
pads can be associated with 3-state top-level pins. A violation of this rule results in a
warning.
•
If a signal is connected to multiple pads, an error is generated. If a signal is connected
to multiple top-level pins, a warning is generated.
Clock Buffer Check
The clock buffer configuration check verifies that the output of each clock buffer primitive
is connected to only inverter, flip-flop or latch primitive clock inputs, or other clock buffer
inputs. Violations are treated as warnings.
Name Check
The name check verifies the uniqueness of names on NGD objects using the following
criteria:
•
Pin names must be unique within a symbol. A violation results in an error.
•
Instance names must be unique within the instance’s position in the hierarchy (that is,
a symbol cannot have two symbols with the same name under it). A violation results
in a warning.
•
Signal names must be unique within the signal’s hierarchical level (that is, if you push
down into a symbol, you cannot have two signals with the same name). A violation
results in a warning.
•
Global signal names must be unique within the design. A violation results in a
warning.
Development System Reference Guide
www.xilinx.com
115
R
Chapter 5: Logical Design Rule Check
Primitive Pin Check
The primitive pin check verifies that certain pins on certain primitives are connected to
signals in the design. The following table shows which pins are tested on each NGD
primitive type.
Table 5-1:
Checked Primitive Pins
NGD Primitive
Pins Checked
X_MUX
SEL
X_TRI
IN, OUT, and CTL
X_FF
IN, OUT, and CLK
X_LATCH
IN, OUT, and CLK
X_IPAD
PAD
X_OPAD
PAD
X_BPAD
PAD
Note: If one of these pins is not connected to a signal, you receive a warning.
116
www.xilinx.com
Development System Reference Guide
R
Chapter 6
NGDBuild
This program is compatible with the following families:
•
Virtex™, Virtex™-E
•
Virtex™-II
•
Virtex™-II Pro, Virtex™-II Pro X
•
Virtex™-4
•
Virtex™-5 LX
•
Spartan™-II, Spartan™-IIE
•
Spartan™-3, Spartan™-3E, Spartan™-3L
•
CoolRunner™ XPLA3, CoolRunner™-II
•
XC9500™, XC9500XL™, XC9500XV™
This chapter describes the NGDBuild program. The chapter contains the following
sections
•
“NGDBuild Overview”
•
“NGDBuild Syntax”
•
“NGDBuild Input Files”
•
“NGDBuild Output Files”
•
“NGDBuild Intermediate Files”
•
“NGDBuild Options”
NGDBuild Overview
NGDBuild reads in a netlist file in EDIF or NGC format and creates a Xilinx Native Generic
Database (NGD) file that contains a logical description of the design in terms of logic
elements, such as AND gates, OR gates, decoders, flip-flops, and RAMs.
The NGD file contains both a logical description of the design reduced to Xilinx Native
Generic Database (NGD) primitives and a description of the original hierarchy expressed
in the input netlist. The output NGD file can be mapped to the desired device family.
Development System Reference Guide
www.xilinx.com
117
R
Chapter 6: NGDBuild
The following figure shows a simplified version of the NGDBuild design flow. NGDBuild
invokes other programs that are not shown in the following figure.
EDIF 2 0 0
Netlist
NCF
Netlist Constraints File
URF
User Rules File
NGC Netlist
(XST File)
NMC
Physical Macros
Referenced in Netlist
UCF
User Constraints File
Netlist Reader
NGDBuild
NGO
Intermediate File
NGD
Generic Database
BLD
Build Report
X10031
Figure 6-1:
NGDBuild Design Flow
Converting a Netlist to an NGD File
NGDBuild performs the following steps to convert a netlist to an NGD file:
1.
Reads the source netlist
NGDBuild invokes the Netlist Launcher. The Netlist Launcher determines the input
netlist type and starts the appropriate netlist reader program. The netlist reader
incorporates NCF files associated with each netlist. NCF files contain timing and
layout constraints for each module. The Netlist Launcher is described in detail in the
“Netlist Launcher (Netlister)” in Appendix B.
2.
Reduces all components in the design to NGD primitives
NGDBuild merges components that reference other files. NGDBuild also finds the
appropriate system library components, physical macros (NMC files), and behavioral
models.
3.
Checks the design by running a Logical Design Rule Check (DRC) on the converted
design
Logical DRC is a series of tests on a logical design. It is described in Chapter 5, “Logical
Design Rule Check”.
4.
Writes an NGD file as output
Note: This procedure, the Netlist Launcher, and the netlist reader programs are described in more
detail in Appendix B, “EDIF2NGD, and NGDBuild”.
118
www.xilinx.com
Development System Reference Guide
R
NGDBuild Syntax
NGDBuild Syntax
The following command reads the design into the Xilinx Development system and
converts it to an NGD file:
ngdbuild [options] design_name [ngd_file[.ngd]]
options can be any number of the NGDBuild command line switches listed in “NGDBuild
Options”. They can be listed in any order. Separate multiple options with spaces.
design_name is the top-level name of the design file you want to process. To ensure the
design processes correctly, specify a file extension for the input file, using one of the legal
file extensions specified in “NGDBuild Input Files”. Using an incorrect or nonexistent file
extension causes NGDBuild to fail without creating an NGD file. If you use an incorrect file
extension, NGDBuild may issue an “unexpanded” error.
Note: If you are using an NGC file as your input design, it is recommended that you specify the .ngc
extension. If NGDBuild finds an EDIF netlist or NGO file in the project directory, it does not check for
an NGC file.
ngd_file[.ngd] is the output file in NGD format. The output file name, its extension, and its
location are determined as follows:
•
If you do not specify an output file name, the output file has the same name as the
input file, with an .ngd extension.
•
If you specify an output file name with no extension, NGDBuild appends the .ngd
extension to the file name.
•
If you specify a file name with an extension other than .ngd, you get an error message
and NGDBuild does not run.
•
If the output file already exists, it is overwritten with the new file.
NGDBuild Input Files
NGDBuild uses the following files as input:
•
Design file—The input design can be an EDIF 2 0 0 or NGC netlist file. If the input
netlist is in another format that the Netlist Launcher recognizes, the Netlist Launcher
invokes the program necessary to convert the netlist to EDIF format, then invokes the
appropriate netlist reader, EDIF2NGD.
With the default Netlist Launcher options, NGDBuild recognizes and processes files
with the extensions shown in the following table. NGDBuild searches the top-level
design netlist directory for a netlist file with one of the extensions. By default,
NGDBuild searches for an EDIF file first.
File Type
Recognized Extensions
EDIF
.sedif, .edn, .edf, .edif
NGC
.ngc
Note: Remove all out of date netlist files from your directory. Obsolete netlist files may cause
errors in NGDBuild.
Development System Reference Guide
www.xilinx.com
119
R
Chapter 6: NGDBuild
•
UCF file—The User Constraints File is an ASCII file that you create. You can create
this file by hand or by using the Constraints Editor. See the online Help provided with
the Constraints Editor for more information. The UCF file contains timing and layout
constraints that affect how the logical design is implemented in the target device. The
constraints in the file are added to the information in the output NGD file. For
detailed information on constraints, see the Constraints Guide.
By default, NGDBuild reads the constraints in the UCF file automatically if the UCF
file has the same base name as the input design file and a .ucf extension. You can
override the default behavior and specify a different constraints file with the –uc
option. See “–uc (User Constraints File)” for more information.
Note: NGDBuild allows one UCF file as input.
•
NCF —The netlist constraints file is produced by a CAE vendor toolset. This file
contains constraints specified within the toolset. The netlist reader invoked by
NGDBuild reads the constraints in this file if the NCF has the same name as the input
EDIF netlist. It adds the constraints to the intermediate NGO file and the output NGD
file. NCF files do no bind to NGC files because they are read in and annotated to the
NGO file during an edif2ngd conversion. This also implies that unlike UCF files,
NCF constraints only bind to a single edif netlist; they do not cross file hierarchies.
Note: NGDBuild checks to make sure the NGO file is up-to-date and reruns edif2ngd only
when the EDIF has a timestamp that is newer than the NGO file. Updating the NCF has no affect
on whether edif2ngd is rerun. Therefore, if the NGO is up-to-date and you only update the NCF
file (not the EDIF), use the –nt on option to force the regeneration of the NGO file from the
unchanged EDIF and new NCF. See “–nt (Netlist Translation Type)” for more information.
•
URF file — The User Rules File (URF) is an ASCII file that you create. The Netlist
Launcher reads this file to determine the acceptable netlist input files, the netlist
readers that read these files, and the default netlist reader options. This file also
allows you to specify third-party tool commands for processing designs. The URF can
add to or override the rules in the system rules file.
You can specify the location of the user rules file with the NGDBuild –ur option. The
user rules file must have a .urf extension. See “–ur (Read User Rules File)” or “User
Rules File” in Appendix B for more information.
•
NGC file—This binary file can be used as a top-level design file or as a module file:
♦
Top-level design file
This file is output by the Xilinx Synthesis Technology (XST) tool. See the
description of design files earlier in this section for details.
Note: This is not a “true” netlist file. However, it is referred to as a netlist in this context to
differentiate it from the NGC module file. NGC files are equivalent to NGO files created by
edif2ngd, but are created by other Xilinx applications: XST and CORE Generator.
•
NMC files—These physical macros are binary files that contain the implementation of
a physical macro instantiated in the design. NGDBuild reads the NMC file to create a
functional simulation model for the macro.
Unless a full path is provided to NGDBuild, it searches for netlist, NGC, NMC, and MEM
files in the following locations:
120
•
The working directory from which NGDBuild was invoked.
•
The path specified for the top-level design netlist on the NGDBuild command line.
•
Any path specified with the “–sd (Search Specified Directory)” on the NGDBuild
command line.
www.xilinx.com
Development System Reference Guide
R
NGDBuild Output Files
NGDBuild Output Files
NGDBuild creates the following files as output:
•
NGD file—This binary file contains a logical description of the design in terms of both
its original components and hierarchy and the NGD primitives to which the design is
reduced.
•
BLD file—This build report file contains information about the NGDBuild run and
about the subprocesses run by NGDBuild. Subprocesses include EDIF2NGD, and
programs specified in the URF. The BLD file has the same root name as the output
NGD file and a .bld extension. The file is written into the same directory as the output
NGD file.
NGDBuild Intermediate Files
NGO files—These binary files contain a logical description of the design in terms of its
original components and hierarchy. These files are created when NGDBuild reads the
input EDIF netlist. If these files already exist, NGDBuild reads the existing files. If these
files do not exist or are out of date, NGDBuild creates them.
NGDBuild Options
This section describes the NGDBuild command line options.
–a (Add PADs to Top-Level Port Signals)
If the top-level input netlist is in EDIF format, the –a option causes NGDBuild to add a
PAD symbol to every signal that is connected to a port on the root-level cell. This option
has no effect on lower-level netlists.
Using the –a option depends on the behavior of your third-party EDIF writer. If your EDIF
writer treats pads as instances (like other library components), do not use –a. If your EDIF
writer treats pads as hierarchical ports, use –a to infer actual pad symbols. If you do not use
–a where necessary, logic may be improperly removed during mapping.
For EDIF files produced by Mentor Graphics and Cadence schematic tools, the
–a option is set automatically; you do not have to enter –a explicitly for these vendors.
Note: The NGDBuild –a option corresponds to the EDIF2NGD –a option. If you run EDIF2NGD on
the top-level EDIF netlist separately, rather than allowing NGDBuild to run EDIF2NGD, you must use
the two –a options consistently. If you previously ran NGDBuild on your design and NGO files are
present, you must use the –nt on option the first time you use –a. This forces a rebuild of the NGO
files, allowing EDIF2NGD to run the –a option.
Development System Reference Guide
www.xilinx.com
121
R
Chapter 6: NGDBuild
–aul (Allow Unmatched LOCs)
By default (without the –aul option), NGDBuild generates an error if the constraints
specified for pin, net, or instance names in the UCF or NCF file cannot be found in the
design. If this error occurs, an NGD file is not written. If you enter the –aul option,
NGDBuild generates a warning instead of an error for LOC constraints and writes an NGD
file.
You may want to run NGDBuild with the –aul option if your constraints file includes
location constraints for pin, net, or instance names that have not yet been defined in the
HDL or schematic. This allows you to maintain one version of your constraints files for
both partially complete and final designs.
Note: When using this option, make sure you do not have misspelled net or instance names in your
design. Misspelled names may cause inaccurate placing and routing.
–bm (Specify BMM Files)
-bm file_name [.bmm]
The –bm option specifies a switch for the .bmm files. If the file extension is missing, a .bmm
file extension is assumed. If this option is unspecified, the ELF or MEM root file name with
a .bmm extension is assumed. If only this option is given, then Ngdbuild verifies that the
.bmm file is syntactically correct and makes sure that the instances specified in the .bmm
file exist in the design. Only one –bm option can be used
–dd (Destination Directory)
–dd NGOoutput_directory
The –dd option specifies the directory for intermediate files (design NGO files and netlist
files). If the –dd option is not specified, files are placed in the current directory.
–f (Execute Commands File)
–f command_file
The –f option executes the command line arguments in the specified command_file. For
more information on the –f option, see “–f (Execute Commands File)” in Chapter 1.
–i (Ignore UCF File)
By default (without the –i option), NGDBuild reads the constraints in the UCF file
automatically if the UCF file in the top-level design netlist directory has the same base
name as the input design file and a .ucf extension. The –i option ignores the UCF file.
Note: If you use this option, do not use the –uc option.
122
www.xilinx.com
Development System Reference Guide
R
NGDBuild Options
–insert_keep_hierarchy
This option automatically attaches the KEEP_HIERARCHY constraint to each input
netlist. It should only be used when performing a bottom-up synthesis flow, where
separate netlists are created for each piece of hierarchy. It is highly recommended that
when using this option, good design practices are used as described in the Synthesis and
Simulation Design Guide.
Note: Care should be taken when trying to use this option with Cores, as they may not be coded for
maintaining hierarchy.
–intstyle (Integration Style)
–intstyle {ise | xflow | silent}
The –intstyle option reduces screen output based on the integration style you are running.
When using the –intstyle option, one of three modes must be specified: ise, xflow, or silent.
The mode sets the way information is displayed in the following ways:
–intstyle ise
This mode indicates the program is being run as part of an integrated design
environment.
–intstyle xflow
This mode indicates the program is being run as part of an integrated batch flow.
–intstyle silent
This mode limits screen output to warning and error messages only.
Note: The -intstyle option is automatically invoked when running in an integrated environment, such
as Project Navigator or XFLOW.
–l (Libraries to Search)
–l libname
The –l option indicates the list of libraries to search when determining what library
components were used to build the design. This option is passed to the appropriate netlist
reader. The information allows NGDBuild to determine the source of the design’s
components so it can resolve the components to NGD primitives.
You can specify multiple libraries by entering multiple –l libname entries on the NGDBuild
command line.
The allowable entries for libname are the following:
•
xilinxun (Xilinx Unified library)
•
synopsys
Note: You do not have to enter xilinxun with a –l option. The Xilinx Development System tools
automatically access these libraries. In cases where NGDBuild automatically detects Synopsys
designs (for example, the netlist extension is .sedif), you do not have to enter synopsys with a –l
option.
Development System Reference Guide
www.xilinx.com
123
R
Chapter 6: NGDBuild
–modular assemble (Module Assembly)
–modular assemble -pimpath pim_directory_path
–use_pim module_name1 –use_pim module_name2 ...
Note: This option supports current FPGA device families.
The –modular assemble option starts the final phase of the Modular Design flow. In this
“Final Assembly” phase, the team leader uses this option to create a fully expanded NGD
file that contains logic from the top-level design and each of the Physically Implemented
Modules (PIMs). The team leader then implements this NGD file.
Run this option from the top-level design directory.
If you are running the standard Modular Design flow, you do not need to use the –
pimpath option. If you do not use the –use_pim option, NGDBuild searches the PIM
directory’s subdirectories for NGO files with names that match their subdirectory. It
assembles the final design using these NGO files.
If you are running Modular Design in a Partial Assembly flow, use the –pimpath option to
specify the directory that contains the PIMs. Use the –use_pim option to identify all the
modules in the PIM directory that have been published. Be sure to use exact names of the
PIMs, including the proper spelling and capitalization. The input design file should be the
NGO file of the top-level design.
Note: When running Modular Design in a Partial Assembly flow, you must use the –modular
assemble option with the –u option.
–modular initial (Initial Budgeting of Modular Design)
Note: This option supports current FPGA devices only.
The –modular initial option starts the first phase of the Modular Design flow. In this
“Initial Budgeting” phase, the team leader uses this option to generate an NGO and NGD
file for the top-level design with all of the instantiated modules represented as
unexpanded blocks. After running this option, the team leader sets up initial budgeting for
the design. This includes assigning top-level timing constraints and location constraints
for various resources, including each module, using the Floorplanner and Constraints
Editor tools.
Note: You cannot use the NGD file for mapping.
Run this option from the top-level design directory. The input design file should be an
EDIF netlist or an NGC netlist from XST.
124
www.xilinx.com
Development System Reference Guide
R
NGDBuild Options
–modular module (Active Module Implementation)
–modular module -active module_name
Note: This option supports current FPGA devices. You cannot use NCD files from previous
software releases with Modular Design in this release. You must generate new NCD files with the
current release of the software.
The –modular module option starts the second phase of the Modular Design flow. In this
“Active Module Implementation” phase, each team member creates an NGD file with just
the specified “active” module expanded. This NGD file is named after the top-level design.
Run this option from the active module directory. This directory should include the active
module netlist file and the top-level UCF file generated during the Initial Budgeting phase.
You must specify the name of the active module after the –active option, and use the toplevel NGO file as the input design file.
After running this option, you can then run MAP and PAR to create a Physically
Implemented Module (PIM). Then, you must run PIMCreate to publish the PIM to the
PIMs directory. PIMCreate copies the local, implemented module file, including the NGO,
NGM and NCD files, to the appropriate module directory inside the PIMs directory and
renames the files to module_name.extension.
To run PIMCreate, type the following on the command line:
pimcreate pim_directory -ncd design_name_routed.ncd
Note: When running Modular Design in an Incremental Guide flow, run NGDBuild with the –pimpath
and –use_pim options normally reserved for the –modular assemble option.
–nt (Netlist Translation Type)
–nt {timestamp | on | off}
The –nt option determines how timestamps are treated by the Netlist Launcher when it is
invoked by NGDBuild. A timestamp is information in a file that indicates the date and
time the file was created. The timestamp option (which is the default if no –nt option is
specified) instructs the Netlist Launcher to perform the normal timestamp check and
update NGO files according to their timestamps. The on option translates netlists
regardless of timestamps (rebuilding all NGO files), and the off option does not rebuild an
existing NGO file, regardless of its timestamp.
–p (Part Number)
–p part
The –p option specifies the part into which the design is implemented. The –p option can
specify an architecture only, a complete part specification (device, package, and speed), or
a partial specification (for example, device and package only).
The syntax for the –p option is described in “–p (Part Number)” in Chapter 1. Examples of
part entries are XCV50-TQ144 and XCV50-TQ144-5.
When you specify the part, the NGD file produced by NGDBuild is optimized for mapping
into that architecture.
Development System Reference Guide
www.xilinx.com
125
R
Chapter 6: NGDBuild
You do not have to specify a –p option if your NGO file already contains information about
the desired vendor and family (for example, if you placed a PART property in a schematic
or a CONFIG PART statement in a UCF file). However, you can override the information
in the NGO file with the –p option when you run NGDBuild.
Note: If you are running the Modular Design flow and are targeting a part different from the one
specified in your source design, you must specify the part type using the -p option every time you run
NGDBuild.
–r (Ignore LOC Constraints)
The –r option eliminates all location constraints (LOC=) found in the input netlist or UCF
file. Use this option when you migrate to a different device or architecture, because
locations in one architecture may not match locations in another.
–sd (Search Specified Directory)
–sd search_path
The –sd option adds the specified search_path to the list of directories to search when
resolving file references (that is, files specified in the schematic with a FILE=filename
property) and when searching for netlist, NGO, NGC, NMC, and MEM files. You do not
have to specify a search path for the top-level design netlist directory, because it is
automatically searched by NGDBuild.
The search_path must be separated from the –sd by spaces or tabs (for example, –sd designs
is correct, –sddesigns is not). You can specify multiple –sd options on the command line.
Each must be preceded with –sd; you cannot combine multiple search_path specifiers after
one –sd. For example, the following syntax is not acceptable.
–sd /home/macros/counter /home/designs/pal2
The following syntax is acceptable.
–sd /home/macros/counter –sd /home/designs/pal2
–u (Allow Unexpanded Blocks)
In the default behavior of NGDBuild (without the –u option), NGDBuild generates an
error if a block in the design cannot be expanded to NGD primitives. If this error occurs, an
NGD file is not written. If you enter the –u option, NGDBuild generates a warning instead
of an error if a block cannot be expanded, and writes an NGD file containing the
unexpanded block.
You may want to run NGDBuild with the –u option to perform preliminary mapping,
placement and routing, timing analysis, or simulation on the design even though the
design is not complete. To ensure the unexpanded blocks remains in the design when it is
mapped, run the MAP program with the –u (Do Not Remove Unused Logic) option, as
described in “–u (Do Not Remove Unused Logic)” in Chapter 7.
126
www.xilinx.com
Development System Reference Guide
R
NGDBuild Options
–uc (User Constraints File)
–uc ucf_file[.ucf]
The –uc option specifies a User Constraints File (UCF) for the Netlist Launcher to read. The
UCF file contains timing and layout constraints that affect the way the logical design is
implemented in the target device.
The user constraints file must have a .ucf extension. If you specify a user constraints file
without an extension, NGDBuild appends the .ucf extension to the file name. If you specify
a file name with an extension other than .ucf, you get an error message and NGDBuild
does not run.
If you do not enter a –uc option and a UCF file exists with the same base name as the input
design file and a .ucf extension, NGDBuild automatically reads the constraints in this UCF
file.
See the Constraints Guide for more information on the UCF file.
Note: NGDBuild only allows one UCF file as input. Therefore, you cannot specify multiple –uc
options on the command line. Also, if you use this option, do not use the –i option.
–ur (Read User Rules File)
–ur rules_file[.urf]
The –ur option specifies a user rules file for the Netlist Launcher to access. This file
determines the acceptable netlist input files, the netlist readers that read these files, and the
default netlist reader options. This file also allows you to specify third-party tool
commands for processing designs.
The user rules file must have a .urf extension. If you specify a user rules file with no
extension, NGDBuild appends the .urf extension to the file name. If you specify a file name
with an extension other than .urf, you get an error message and NGDBuild does not run.
See “User Rules File” in Appendix B for more information.
–verbose (Report All Messages)
The –verbose option enhances NGDBuild screen output to include all messages output by
the tools run: NGDBuild, the netlist launcher, and the netlist reader. This option is useful if
you want to review details about the tools run.
Development System Reference Guide
www.xilinx.com
127
R
Chapter 6: NGDBuild
128
www.xilinx.com
Development System Reference Guide
R
Chapter 7
MAP
This program is compatible with the following families:
•
Virtex™, Virtex™-E
•
Virtex™-II
•
Virtex™-II Pro, Virtex™-II Pro X
•
Virtex™-4
•
Virtex™-5 LX
•
Spartan™-II, Spartan™-IIE
•
Spartan™-3, Spartan™-3E, Spartan™-3L
This chapter describes the MAP program, which is used during the implementation
process to map a logical design to a Xilinx FPGA. This chapter contains the following
sections:
•
“MAP Overview”
•
“MAP Syntax”
•
“MAP Input Files”
•
“MAP Output Files”
•
“MAP Options”
•
“MAP Process”
•
“Register Ordering”
•
“Guided Mapping”
•
“Simulating Map Results”
•
“MAP Report (MRP) File”
•
“Halting MAP”
MAP Overview
The MAP program maps a logical design to a Xilinx FPGA. The input to MAP is an NGD
file, which is generated using the NGDBuild program. The NGD file contains a logical
description of the design that includes both the hierarchical components used to develop
the design and the lower level Xilinx primitives. The NGD file also contains any number of
NMC (macro library) files, each of which contains the definition of a physical macro.
MAP first performs a logical DRC (Design Rule Check) on the design in the NGD file. MAP
then maps the design logic to the components (logic cells, I/O cells, and other
components) in the target Xilinx FPGA.
Development System Reference Guide
www.xilinx.com
129
R
Chapter 7: MAP
The output from MAP is an NCD (Native Circuit Description) file—a physical
representation of the design mapped to the components in the targeted Xilinx FPGA. The
mapped NCD file can then be placed and routed using the PAR program.
The following figure shows the MAP design flow:
NMC
Macro Definition
NGD
Generic Database
NGM
MAP
PCF
Physical Constraints
MRP
MAP Report
NCD
Circuit Description
(Mapped)
Guide File
X10247
Figure 7-1:
MAP design flow
MAP Syntax
The following syntax maps your logical design:
map [options] infile[.ngd] [pcf_file[.pcf]]
options can be any number of the MAP command line options listed in the “MAP Options”
section of this chapter. They do not need to be listed in any particular order. Separate
multiple options with spaces.
infile[.ngd] is the input NGD file. You do not have to enter the .ngd extension, since map
looks for an NGD file as input.
pcf_file[.pcf] is the name of the output physical constraints file (PCF). Specifying a physical
constraints file name is optional, and you do not have to enter the .pcf extension. If not
specified, the physical constraints file name and its location are determined in the
following ways:
130
•
If you do not specify a physical constraints file name on the command line, the
physical constraints file has the same name as the output file, with a .pcf extension.
The file is placed in the output file’s directory.
•
If you specify a physical constraints file with no path specifier (for example, cpu_1.pcf
instead of /home/designs/cpu_1.pcf), the .pcf file is placed in the current working
directory.
•
If you specify a physical constraints file name with a full path specifier (for example,
/home/designs/cpu_1.pcf), the physical constraints file is placed in the specified
directory.
www.xilinx.com
Development System Reference Guide
R
MAP Input Files
•
If the physical constraints file already exists, MAP reads the file, checks it for syntax
errors, and overwrites the schematic-generated section of the file. MAP also checks
the user-generated section for errors and corrects errors by commenting out physical
constraints in the file or by halting the operation. If no errors are found in the usergenerated section, the section is unchanged.
Note: For a discussion of the output file name and its location, see “–o (Output File Name)”.
MAP Input Files
MAP uses the following files as input:
•
NGD file—Native Generic Database file. This file contains a logical description of the
design expressed both in terms of the hierarchy used when the design was first
created and in terms of lower-level Xilinx primitives to which the hierarchy resolves.
The file also contains all of the constraints applied to the design during design entry
or entered in a UCF (User Constraints File). The NGD file is created by the NGDBuild
program.
•
NMC file—Macro library file. An NMC file contains the definition of a physical
macro. When there are macro instances in the NGD design file, NMC files are used to
define the macro instances. There is one NMC file for each type of macro in the design
file.
•
Guide NCD file—An optional input file generated from a previous MAP run. An
NCD file contains a physical description of the design in terms of the components in
the target Xilinx device. A guide NCD file is an output NCD file from a previous MAP
run that is used as an input to guide a later MAP run.
•
Guide NGM file—An optional input file, which is a binary design file containing all of
the data in the input NGD file as well as information on the physical design produced
by the mapping. See “Guided Mapping” for details.
MAP Output Files
Output from MAP consists of the following files:
•
NCD (Native Circuit Description) file—a physical description of the design in terms
of the components in the target Xilinx device. For a discussion of the output NCD file
name and its location, see “–o (Output File Name)”.
•
PCF (Physical Constraints File)—an ASCII text file that contains constraints specified
during design entry expressed in terms of physical elements. The physical constraints
in the PCF are expressed in Xilinx’s constraint language.
MAP creates a PCF file if one does not exist or rewrites an existing file by overwriting
the schematic-generated section of the file (between the statements SCHEMATIC
START and SCHEMATIC END). For an existing physical constraints file, MAP also
checks the user-generated section for syntax errors and signals errors by halting the
operation. If no errors are found in the user-generated section, the section is
unchanged.
•
NGM file—a binary design file that contains all of the data in the input NGD file as
well as information on the physical design produced by mapping. The NGM file is
used to correlate the back-annotated design netlist to the structure and naming of the
source design.
Development System Reference Guide
www.xilinx.com
131
R
Chapter 7: MAP
•
MRP (MAP report)—a file that contains information about the MAP run. The MRP
file lists any errors and warnings found in the design, lists design attributes specified,
and details on how the design was mapped (for example, the logic that was removed
or added and how signals and symbols in the logical design were mapped into signals
and components in the physical design). The file also supplies statistics about
component usage in the mapped design. See “MAP Report (MRP) File” for more
details.
The MRP, PCF, and NGM files produced by a MAP run all have the same name as the
output NCD file, with the appropriate extension. If the MRP, PCF, or NGM files already
exist, they are overwritten by the new files.
MAP Options
The following table summarizes the MAP command line options and the supported
architectures for each option.
Table 7-1:
Map Options and Architectures
Options
132
Architectures
–bp
All FPGA architectures
–c
All FPGA architectures
–cm
All FPGA architectures
–detail
All FPGA architectures
–equivalent_register_removal
Virtex-4 architectures
–f
All FPGA architectures
–gf
All FPGA architectures
–global_opt
Virtex-4 architectures
–gm
All FPGA architectures
–ignore_keep_hierarchy
All FPGA architectures
–intstyle
All FPGA architectures
–ir
All FPGA architectures
–ise
All FPGA architectures
–k
All FPGA architectures
–l
All FPGA architectures
–o
All FPGA architectures
–ol
All FPGA architectures
–p
All FPGA architectures
–pr
All FPGA architectures
–r
All FPGA architectures
–register_duplication
All FPGA architectures
www.xilinx.com
Development System Reference Guide
R
MAP Options
Table 7-1:
Map Options and Architectures
Options
Architectures
–retiming
Virtex-4 architectures
–t
All FPGA architectures
–timing
All FPGA architectures
–tx
Not used for Virtex-4, Spartan-3, Spartan3E, or Spartan-3L architectures
–u
All FPGA architectures
–xe
All FPGA architectures
–bp (Map Slice Logic)
The block RAM mapping option is enabled when the –bp option is specified. When block
RAM mapping is enabled, MAP attempts to place LUTs and FFs into single-output, singleport block RAMs.
You can create a file containing a list of register output nets that you want converted into
block RAM outputs. To instruct MAP to use this file, set the environment variable
XIL_MAP_BRAM_FILE to the file name. MAP looks for this environment variable when
the –bp option is specified. Only those output nets listed in the file are made into block
RAM outputs.
Note: Because block RAM outputs are synchronous and can only be reset, the registers packed
into a block RAM must also be synchronous reset.
–c (Pack CLBs)
–c [packfactor]
The –c option determines the degree to which CLBs are packed when the design is
mapped. The valid range of values for the packfactor is 0–100.
The packfactor values ranging from 1 to 100 roughly specify the percentage of CLBs
available in a target device for packing your design's logic.
A packfactor of 100 means that all CLBs in a target part are available for design logic. A
packfactor of 100 results in minimum packing density, while a packfactor of 1 represents
maximum packing density. Specifying a lower packfactor results in a denser design, but the
design may then be more difficult to place and route.
The –c 0 option specifies that only related logic (that is, logic having signals in common)
should be packed into a single CLB. Specifying –c 0 yields the least densely packed design.
For values of –c from 1 to 100, MAP merges unrelated logic into the same CLB only if the
design requires more resources than are available in the target device (an overmapped
design). If there are more resources available in the target device than are needed by your
design, the number of CLBs utilized when –c 100 is specified may equal the number
required when –c 0 is specified.
Note: The –c 1 setting should only be used to determine the maximum density (minimum area) to
which a design can be packed. Xilinx does not recommend using this option in the actual
implementation of your design. Designs packed to this maximum density generally have longer run
times, severe routing congestion problems in PAR, and poor design performance.
Development System Reference Guide
www.xilinx.com
133
R
Chapter 7: MAP
The default packfactor value is 100%. This value applies if you do not specify the –c option,
or enter the –c option without a packfactor value.
Processing a design with the –c 0 option is a good way to get a first estimate of the number
of CLBs required by your design.
–cm (Cover Mode)
–cm {area | speed | balanced}
The –cm option specifies the criteria used during the cover phase of MAP. In this phase,
MAP assigns the logic to CLB function generators (LUTs). Use the area, speed, and
balanced settings as follows:
•
The area setting makes reducing the number of LUTs (and therefore the number of
CLBs) the highest priority.
•
The behavior of the speed setting depends on the existence of user-specified timing
constraints. For the design with user-specified timing constraints, the speed mode
makes achieving timing constraints the highest priority and reducing the number of
levels of LUTS (the number of LUTs a path passes through) the next priority. For the
design with no user-specified timing constraints, the speed mode makes achieving
maximum system frequency the highest priority and reducing the number levels of
LUTs the next priority. This setting makes it easiest to achieve timing constraints after
the design is placed and routed. For most designs, there is a small increase in the
number of LUTs (compared to the area setting), but in some cases the increase may be
large.
•
The balanced setting balances the two priorities – achieving timing requirements and
reducing the number of LUTs. It produces results similar to the speed setting but
avoids the possibility of a large increase in the number of LUTs. For a design with
user-specified timing constraints, the balanced mode makes achieving timing
constraints the highest priority and reducing the number of LUTS the next priority.
For the design with no user-specified timing constraints, the balanced mode makes
achieving maximum system frequency the highest priority and reducing the number
of LUTs the next priority.
The default setting for the –cm option is area (cover for minimum number of LUTs).
–detail (Write Out Detailed MAP Report)
This option writes out a detailed MAP report. The option replaces the
MAP_REPORT_DETAIL environment variable.
–equivalent_register_removal (Remove Redundant Registers)
–equivalent_register_removal on|off
With this option on, any registers with redundant functionality are examined to see if their
removal will increase clock frequencies. This option is available for Virtex-4 designs. By
default, this option is on.
Note: This option is available only when “–global_opt (Global Optimization)” is used.
134
www.xilinx.com
Development System Reference Guide
R
MAP Options
–f (Execute Commands File)
–f command_file
The –f option executes the command line arguments in the specified command_file. For
more information on the –f option, see “–f (Execute Commands File)” in Chapter 1.
–gf (Guide NCD File)
–gf guidefile
The –gf option specifies the name of an existing NCD file (from a previous MAP run) to be
used as a guide for the current MAP run. Guided mapping also uses an NGM file. For a
description of guided mapping, see the “Guided Mapping” section of this chapter.
Note: When using guided mapping with the –timing (Timing-Driven Packing and Placement), Xilinx
recommends using a placed NCD as the guide file. A placed NCD is produced by running MAP –
timing or PAR.
–global_opt (Global Optimization)
–global_opt on|off
This option directs MAP to perform global optimization routines on the fully assembled
netlist before mapping the design. Global optimization includes logic remapping and
trimming, logic and register replication and optimization, and logic replacement of
tristates. These routines will extend the runtime of Map because extra processing occurs.
This option is available for Virtex-4 designs. By default this option is off.
When using the –global_opt option, Modular and Incremental design flows are not
recommended. Incremental guide mode is explicitly prohibited and Formal Verification
flows will be negatively affected. Also, certain MAP properties are not allowed in
conjunction with global optimization, such as the –gf, –ol, and –u options.
Note: See also the “–equivalent_register_removal (Remove Redundant Registers)” and “–retiming
(Register Retiming During Global Optimization)” options for use with –global_opt.
–gm (Guide Mode)
–gm {exact | leverage}
The –gm option specifies the form of guided mapping to be used.
In the EXACT mode the mapping in the guide file is followed exactly. In the LEVERAGE
mode, the guide design is used as a starting point for mapping but, in cases where the
guided design tools cannot find matches between net and block names in the input and
guide designs, or your constraints rule out any matches, the logic is not guided.
For a description of guided mapping, see “Guided Mapping”.
–gm incremental (Guide Mode incremental)
par -gf previous_run_NCD -gm incremental design.ncd
new_design.ncd design.pcf
The incremental guide mode uses EXACT guiding. It also changes the Partial
Reconfiguration DRC checks.
Development System Reference Guide
www.xilinx.com
135
R
Chapter 7: MAP
Note: The Incremental Design flow is being deprecated and will not be available in future releases
of Xilinx software. New in 8.2i are Partitions, which provide significant flexibility and functionality for
design preservation. Information on Partitions can be found in the online help included in the 8.2i
software and in the “TCL chapter” of this book. Incremental Design using the map and par -gm
incremental option will still work in 8.2i, though it generates a warning that this flow is being removed.
–ignore_keep_hierarchy (Ignore KEEP_HIERARCHY Properties)
Map also supports the –ignore_keep_hierarchy option that ignores any
"KEEP_HIERARCHY" properties on blocks.
–intstyle (Integration Style)
–intstyle {ise | xflow | silent}
The –intstyle option reduces screen output based on the integration style you are running.
When using the –intstyle option, one of three modes must be specified: ise, xflow, or silent.
The mode sets the way information is displayed in the following ways:
–intstyle ise
This mode indicates the program is being run as part of an integrated design
environment.
–intstyle xflow
This mode indicates the program is being run as part of an integrated batch flow.
–intstyle silent
This mode limits screen output to warning and error messages only.
Note: The -intstyle option is automatically invoked when running in an integrated environment, such
as Project Navigator or XFLOW.
–ir (Do Not Use RLOCs to Generate RPMs)
If you enter the –ir option, MAP uses RLOC constraints to group logic within CLBs, but
does not use the constraints to generate RPMs (Relationally Placed Macros) controlling the
relative placement of CLBs. Stated another way, the RLOCs are not used to control the
relative placement of the CLBs with respect to each other.
For the Spartan architectures, the –ir option has an additional behavior; the RLOC
constraint that cannot be met is ignored and the mapper will continue processing the
design. A warning is generated for each RLOC that is ignored. The resulting mapped
design is a valid design.
–ise (ISE Project File)
–ise project_file
The –ise option specifies an ISE project file, which can contain settings to capture and filter
messages produced by the program during execution.
–k (Map to Input Functions)
The syntax for Spartan-II, Spartan-IIE, Virtex, and Virtex-E architectures follows:
–k {4 |5 |6}
136
www.xilinx.com
Development System Reference Guide
R
MAP Options
The syntax for the Spartan 3/3E/3L, Virtex-4/-FX/-LX/-SX, Virtex-II, Virtex-II Pro/-X
architectures follows:
–k {4 |5 |6| 7| 8}
You can specify the maximum size function that is covered. The default is 4. Covering to 5,
6, 7 or 8 input functions results in the use of F5MUX, F6MUX, and FXMUX.
By mapping input functions into single CLBs, the –k option may produce a mapping with
fewer levels of logic, thus eliminating a number of CLB-to-CLB delays. However, using the
–k option may prevent logic from being packed into CLBs in a way that minimizes CLB
utilization.
For synthesis-based designs, specifying –k 4 has no effect. This is because MAP combines
smaller input functions into large functions such as F5MUX, F6MUX, F7MUX and F8MUX.
–l (No logic replication)
By default (without the –l option), MAP performs logic replication. Logic replication is an
optimization method in which MAP operates on a single driver that is driving multiple
loads and maps it as multiple components, each driving a single load (refer to the
following figure). Logic replication results in a mapping that often makes it easier to meet
your timing requirements, since some delays can be eliminated on critical nets. To turn off
logic replication, you must specify the -l option.
Without Logic Replication
Function
Generator
A
B
C
D
With Logic Replication
A
B
Function
Generator
C
D
Function
Generator
Replicated
E
F
Function
Generator
E
F
Function
Generator
X6973
Figure 7-2:
Logic Replication (–l Option)
–o (Output File Name)
–o outfile[.ncd]
Specifies the name of the output NCD file for the design. The .ncd extension is optional.
The output file name and its location are determined in the following ways:
Development System Reference Guide
www.xilinx.com
137
R
Chapter 7: MAP
•
If you do not specify an output file name with the –o option, the output file has the
same name as the input file, with a .ncd extension. The file is placed in the input file’s
directory
•
If you specify an output file name with no path specifier (for example, cpu_dec.ncd
instead of /home/designs/cpu_dec.ncd), the NCD file is placed in the current working
directory.
•
If you specify an output file name with a full path specifier (for example,
/home/designs/cpu_dec.ncd), the output file is placed in the specified directory.
If the output file already exists, it is overwritten with the new NCD file. You do not receive
a warning when the file is overwritten.
Note: However, signals connected to pads or to the outputs of BUFTs, flip-flops, latches, and
RAMS are preserved for back-annotation.
–ol (Overall Effort Level)
–ol [std|med|high]
The –ol option is available when running timing-driven packing and placement with the –
timing option. The –ol option sets the overall MAP effort level. The effort level specifies the
level of effort MAP uses to pack the design.
Of the three effort_level values, use std for low effort level (fastest runtime at expense of
QOR), use med for medium effort level (balance of runtime and QOR), use high for high
effort level (best QOR with increased runtime).
The default effort level in MAP is high. Following is command line syntax for using the
–ol option, set to std:
map –timing –ol std design.ncd output.ncd design.pcf
Note: The –ol option is ignored if the –timing option is not set.
–p (Part Number)
–p part
Specifies the Xilinx part number for the device. The syntax for the –p option is described in
“–p (Part Number)” in Chapter 1.
If you do not specify a part number using the –p option, MAP selects the part specified in
the input NGD file. If the information in the input NGD file does not specify a complete
device and package, you must enter a device and package specification using the –p
option. MAP supplies a default speed value, if necessary.
The architecture you specify with the –p option must match the architecture specified
within the input NGD file. You may have chosen this architecture when you ran
NGDBuild or during an earlier step in the design entry process (for example, you may
have specified the architecture as an attribute within a schematic, or specified it as an
option to a netlist reader). If the architecture does not match, you have to run NGDBuild
again and specify the desired architecture.
You can only enter a part number or device name from a device library you have installed
on your system. For example, if you have not installed the 4006E device library, you cannot
create a design using the 4006E–PC84 part.
138
www.xilinx.com
Development System Reference Guide
R
MAP Options
–pr (Pack Registers in I/O)
–pr {i | o | b}
By default (without the –pr option), MAP only places flip-flops or latches within an I/O
cell if your design entry method specifies that these components are to be placed within
I/O cells. For example, if you create a schematic using IFDX (Input D Flip-Flop) or OFDX
(Output D Flip-Flop) design elements, the physical components corresponding to these
design elements must be placed in I/O cells. The –pr option specifies that flip-flops or
latches may be packed into input registers (i selection), output registers (o selection), or
both (b selection) even if the components have not been specified in this way.
–r (No Register Ordering)
By default (without the –r option), MAP looks at the register bit names for similarities and
tries to map register bits in an ordered manner (called register ordering). If you specify the
-r option, register bit names are ignored when registers are mapped, and the bits are not
mapped in any special order. For a description of register ordering, see “Register
Ordering”.
–register_duplication (Duplicate Registers)
The –register_duplication option is only available when running timing-driven packing
and placement with the –timing option. The –register_duplication option duplicates
registers to improve timing when running timing-driven packing. See “–timing (TimingDriven Packing and Placement).”
–retiming (Register Retiming During Global Optimization)
–retiming on|off
When this option is on, registers are moved forward or backwards through the logic to
balance out the delays in a timing path to increase the overall clock frequency. The overall
number of registers may be altered due to the processing. This option is available for
Virtex-4 designs. By default, this option is off.
Note: This option is available only when “–global_opt (Global Optimization)” is used.
–t (Start Placer Cost Table)
–t placer_cost_table
The –t option is only available when running timing-driven packing and placement with
the –timing option. The –t option specifies the cost table at which the placer starts (placer
cost tables are described in Chapter 9, “PAR”). The placer_cost_table range is 1–100. The
default is 1.
Development System Reference Guide
www.xilinx.com
139
R
Chapter 7: MAP
–timing (Timing-Driven Packing and Placement)
Timing-driven packing and placement is recommended to improve design performance,
timing, and packing for highly utilized designs. If the unrelated logic number (shown in
the Design Summary section of the MAP report) is non-zero, then the –timing option is
useful for packing more logic in the device. Timing-driven packing and placement is also
recommended when there are local clocks present in the design.
Note: PAR issues a message to run timing-driven packing if it detects local clocks in the design.
The –timing option is not supported on Virtex, Virtex-E, Spartan-II, and Spartan-IIE architectures.
The –timing option directs MAP to give priority to timing critical paths during packing,
then places the design. Any user-generated timing constraints, contained in the UCF, drive
the packing and placement operations. Use of the –timing option may result in longer
runtime during the MAP process because designs are also placed; although, PAR runtime
will be reduced since the placement phase is complete.
If Timing-driven packing and placement is selected in the absence of user timing
constraints, the tools will automatically generate and dynamically adjust timing
constraints for all internal clocks. This feature is referred to as “Performance Evaluation”
mode. This mode allows the clock performance for all clocks in the design to be evaluated
in one pass. The performance achieved by this mode is not necessarily the best possible
performance each clock can achieve, instead it is a balance of performance between all
clocks in the design.
The –ol option is used in conjunction with the –timing option to set the overall effort level
that MAP uses to pack, and then place the design. See “–ol (Overall Effort Level)” for more
information.
Note: The following options are specific to timing-driven packing and placement (–timing): –ol,
–register_duplication, –t, and –xe. See individual option descriptions in this section for details.
–tx (Transform Buses)
–tx {on | off | aggressive | limit}
The –tx option specifies what type of bus transformation MAP performs. The four
permitted settings are on, off, aggressive, and limit. The following example shows how the
settings are used. In this example, the design has the following characteristics and is
mapped to a Virtex device:
•
Bus A has 4 BUFTs
•
Bus B has 20 BUFTs
•
Bus C has 30 BUFTs
MAP processes the design in one of the following ways, based on the setting used for the
–tx option:
•
•
140
The on setting performs partial transformation for a long chain that exceeds the
device limit.
♦
Bus A is transformed to LUTs (number of BUFTs is >1, ≤4)
♦
Bus B is transformed to CY chain (number of BUFTs is >4, ≤48)
♦
Bus C is partially transformed. (25 BUFTs + 1 dummy BUFT due to the maximum
width of the XCV50 device + CY chain implementing the other 5 BUFTs)
The off setting turns bus transformation off. This is the default setting.
www.xilinx.com
Development System Reference Guide
R
MAP Process
•
•
The aggressive setting transforms the entire bus.
♦
Buses A, B have the same result as the on setting.
♦
Bus C is implemented entirely by CY chain. (30 ≤ the default upper limit for carry
chain transformation)
The limit setting is the most conservative. It transforms only that portion of the
number of CLB(s) or BUFT(s) per row in a device.
Note: The –tx option is not used for devices that do not have TBUFs, which include Virtex-4,
Spartan-3, and Spartan-3E device families.
–u (Do Not Remove Unused Logic)
By default (without the –u option), MAP eliminates unused components and nets from the
design before mapping. If –u is specified, MAP maps unused components and nets in the
input design and includes them as part of the output design.
The –u option is helpful if you want to run a preliminary mapping on an unfinished
design, possibly to see how many components the mapped design uses. By specifying –u,
you are assured that all of the design’s logic (even logic that is part of incomplete nets) is
mapped.
–xe (Extra Effort Level)
–xe effort_level
The –xe option is available when running timing-driven packing and placement with the
–timing option. The –xe option sets the extra effort level. The effort_level variable can be set
to n (normal) or c (continue). Extra effort c allows you to direct MAP to continue packing.
MAP continues to attempt to improve packing until little or no improvement can be made.
map –ol high –xe n design.ncd output.ncd design.pcf
MAP Process
MAP performs the following steps when mapping a design.
1.
Selects the target Xilinx device, package, and speed. MAP selects a part in one of the
following ways:
♦
Uses the part specified on the MAP command line.
♦
If a part is not specified on the command line, MAP selects the part specified in
the input NGD file. If the information in the input NGD file does not specify a
complete architecture, device, and package, MAP issues an error message and
stops. If necessary, MAP supplies a default speed.
2.
Reads the information in the input design file.
3.
Performs a Logical DRC (Design Rule Check) on the input design. If any DRC errors
are detected, the MAP run is aborted. If any DRC warnings are detected, the warnings
are reported, but MAP continues to run. The Logical DRC (also called the NGD DRC)
is described in Chapter 5, “Logical Design Rule Check”.
Note: Step 3 is skipped if the NGDBuild DRC was successful.
Development System Reference Guide
www.xilinx.com
141
R
Chapter 7: MAP
4.
Removes unused logic. All unused components and nets are removed, unless the
following conditions exist:
♦
A Xilinx S (Save) constraint has been placed on a net during design entry. If an
unused net has an S constraint, the net and all used logic connected to the net (as
drivers or loads) is retained. All unused logic connected to the net is deleted.
For a more complete description of the S constraint, see the Constraints Guide.
♦
The –u option was specified on the MAP command line. If this option is specified,
all unused logic is kept in the design.
5.
Maps pads and their associated logic into IOBs.
6.
Maps the logic into Xilinx components (IOBs, CLBs, etc.). If any Xilinx mapping
control symbols appear in the design hierarchy of the input file (for example, FMAP
symbols targeted to a Xilinx device), MAP uses the existing mapping of these
components in preference to remapping them. The mapping is influenced by various
constraints; these constraints are described in the Constraints Guide.
7.
Update the information received from the input NGD file and write this updated
information into an NGM file. This NGM file contains both logical information about
the design and physical information about how the design was mapped. The NGM file
is used only for back-annotation. On Virtex/-E/-II devices, guided mapping uses the
NGM file. For more information, see “Guided Mapping”.
8.
Create a physical constraints (PCF) file. This is a text file that contains any constraints
specified during design entry. If no constraints were specified during design entry, an
empty file is created so that you can enter constraints directly into the file using a text
editor or indirectly through the FPGA Editor.
MAP either creates a PCF file if none exists or rewrites an existing file by overwriting
the schematic-generated section of the file (between the statements SCHEMATIC
START and SCHEMATIC END). For an existing constraints file, MAP also checks the
user-generated section and may either comment out constraints with errors or halt the
program. If no errors are found in the user-generated section, the section remains the
same.
Note: For Virtex/-E/-II/-II PRO designs, you must use a MAP generated PCF file. The timing
tools perform skew checking only with a MAP-generated PCF file.
9.
Run a physical Design Rule Check (DRC) on the mapped design. If DRC errors are
found, MAP does not write an NCD file.
10. Create an NCD file, which represents the physical design. The NCD file describes the
design in terms of Xilinx components—CLBs, IOBs, etc.
11. Write a MAP report (MRP) file, which lists any errors or warnings found in the design,
details how the design was mapped, and supplies statistics about component usage in
the mapped design.
Register Ordering
When you run MAP, the default setting performs register ordering. If you specify the –r
option, MAP does not perform register ordering and maps the register bits as if they were
unrelated.
When you map a design containing registers, the MAP software can optimize the way the
registers are grouped into CLBs (slices for Virtex/-E/-II/-II PRO or Spartan-II/-IIE —
there are two slices per CLB). This optimized mapping is called register ordering.
142
www.xilinx.com
Development System Reference Guide
R
Register Ordering
A CLB (Virtex/-E/-II/-II PRO or Spartan-II/IIE slice) has two flip-flops, so two register
bits can be mapped into one CLB. For PAR (Place And Route) to place a register in the most
effective way, you want as many pairs of contiguous bits as possible to be mapped
together into the same CLBs (for example, bit 0 and bit 1 together in one CLB, bit 2 and bit
3 in another).
MAP pairs register bits (performing register ordering) if it recognizes that a series of flipflops comprise a register. When you create your design, you can name register bits so they
are mapped using register ordering.
Note: MAP does not perform register ordering on any flip-flops which have BLKNM, LOC, or RLOC
properties attached to them. The BLKNM, LOC, and RLOC properties define how blocks are to be
mapped, and these properties override register ordering.
To be recognized as a candidate for register ordering, the flip-flops must have the
following characteristics:
•
The flip-flops must share a common clock signal and common control signals (for
example, Reset and Clock Enable).
•
The flip-flop output signals must all be named according to this convention.
•
Output signal names must begin with a common root containing at least one
alphabetic character.
The names must end with numeric characters or with numeric characters surrounded
by parentheses “( )”, angle brackets “< >”, or square brackets “[ ]”.
For example, acceptable output signal names for register ordering are as follows:
data1
addr(04)
bus<1>
data2
addr(08)
bus<2>
data3
addr(12)
bus<3>
data4
addr(16)
bus<4>
If a series of flip-flops is recognized as a candidate for register ordering, they are paired in
CLBs in sequential numerical order. For example, in the first set of names shown above,
data1 and data2, are paired in one CLB, while data3 and data4 are paired in another.
In the example below, no register ordering is performed, since the root names for the
signals are not identical
data01
addr02
atod03
dtoa04
When it finds a signal with this type of name, MAP ignores the underscore and the
numeric characters when it considers the signal for register ordering. For example, if
signals are named data00_1 and data01_2, MAP considers them as data00 and data01 for
purposes of register ordering. These two signals are mapped to the same CLB.
MAP does not change signal names when it checks for underscores—it only ignores the
underscore and the number when it checks to see if the signal is a candidate for register
ordering.
Development System Reference Guide
www.xilinx.com
143
R
Chapter 7: MAP
Because of the way signals are checked, make sure you don’t use an underscore as your
bus delimiter. If you name a bus signal data0_01 and a non-bus signal data1, MAP sees
them as data0 and data1 and register orders them even though you do not want them
register ordered.
Guided Mapping
In guided mapping, an existing NCD is used to guide the current MAP run. The guide file
may be from any stage of implementation: unplaced or placed, unrouted or routed. Xilinx
recommends that you generate your NCD file using the current release of the software;
however, MAP does support guided mapping using NCD files from the previous releases.
Note: When using guided mapping with the –timing option, Xilinx recommends using a placed NCD
as the guide file. A placed NCD is produced by running MAP –timing or PAR.
The following figure shows the guided mapping flow:
First MAP Run
Second MAP Run
NGD
Input Design
NGD
Modified Input Design
NCD
Guide File
NGM
Guide File
MAP
MAP
MDF
Decomposition
Hints
NCD
New Mapped Design
NGM
Mapped Design
NCD
Mapped Design
PAR
NCD
Placed and Routed Design
X8995
Figure 7-3:
144
Guided Mapping
www.xilinx.com
Development System Reference Guide
R
Simulating Map Results
In the EXACT mode the mapping in the guide file is followed exactly. Any logic in the
input NGD file that matches logic mapped into the physical components of the NCD guide
file is implemented exactly as in the guide file. Mapping (including signal to pin
assignments), placement and routing are all identical. Logic that is not matched to any
guide component is mapped by a subsequent mapping step.
If there is a match in EXACT mode, but your constraints would conflict with the mapping
in the guide file component, an error is posted. If an error is posted, you can do one of the
following:
•
Modify the constraints to eliminate conflicts
•
Change to the LEVERAGE guide mode (which is less restrictive)
•
Modify the logical design changes to avoid conflicts
•
Stop using guided design
In the LEVERAGE mode, the guide design is used as a starting point in order to speed up
the design process. However, in cases where the guided design tools cannot find matches
or your constraints rule out any matches, the logic is not guided. Whenever the guide
design conflicts with the your mapping, placement or routing constraints, the guide is
ignored and your constraints are followed.
Because the LEVERAGE mode only uses the guide design as a starting point for mapping,
MAP may alter the mapping to improve the speed or density of the implementation (for
example, MAP may collapse additional gates into a guided CLB).
Note: Support for the leverage guide flow (–gm incremental), without a timing-driven map run of
your design, specified with the map –timing option, will not be supported in future releases of Xilinx
software.
For Spartan and Virtex/-E/-II/-II PRO devices, MAP uses the NGM and the NCD files as
guides. You do not need to specify the NGM file on the command line. MAP infers the
appropriate NGM file from the specified NCD file. If MAP does not find an NGM file in
the same directory as the NCD, it generates a warning. In this case, MAP uses only the
NCD file as the guide file.
Note: Guided mapping is not recommended for most HDL designs. Guided mapping depends on
signal and component names, and HDL designs often have a low match rate when guided. The
netlist produced after re-synthesizing HDL modules usually contains signal and instance names that
are significantly different from netlists created by earlier synthesis runs. This occurs even if the
source level HDL code contains only a few changes.
Simulating Map Results
When simulating with NGM files, you are not simulating a mapped result, you are
simulating the logical circuit description. When simulating with NCD files, you are
simulating the physical circuit description.
MAP may generate an error that is not detected in the back-annotated simulation netlist.
For example, after running MAP, you can run the following command to generate the
back-annotated simulation netlist:
netgen mapped.ncd mapped.ngm –o mapped.nga
Development System Reference Guide
www.xilinx.com
145
R
Chapter 7: MAP
This command creates a back-annotated simulation netlist using the logical-to-physical
cross-reference file named mapped.ngm. This cross-reference file contains information
about the logical design netlist, and the back-annotated simulation netlist (mapped.nga) is
actually a back-annotated version of the logical design. However, if MAP makes a physical
error, for example, implements an Active Low function for an Active High function, this
error will not be detected in the mapped.nga file and will not appear in the simulation
netlist.
For example, consider the following logical circuit generated by NGDBuild from a design
file, shown in the following figure.
A*B+C*D
A
B
D
Q
C
D
CLK
X8549
Figure 7-4:
Logical Circuit Representation
Observe the Boolean output from the combinatorial logic. Suppose that after running MAP
for the preceding circuit, you obtain the following result.
CLB
A*B+C*D
A
D
B
Q
LUT
C
CLK
D
X8550
Figure 7-5:
CLB Configuration
Observe that MAP has generated an active low (C) instead of an active high (C).
Consequently, the Boolean output for the combinatorial logic is incorrect. When you run
NetGen using the mapped.ngm file, you cannot detect the logical error because the delays
are back-annotated to the correct logical design, and not to the physical design.
146
www.xilinx.com
Development System Reference Guide
R
MAP Report (MRP) File
One way to detect the error is by running the NetGen command without using the
mapped.ngm cross-reference file.
netgen mapped.ncd –o mapped.nga
As a result, physical simulations using the mapped.nga file should detect a physical error.
However, the type of error is not always easily recognizable. To pinpoint the error, use the
FPGA Editor or call Xilinx Customer Support. In some cases, a reported error may not
really exist, and the CLB configuration is actually correct. You can use the FPGA Editor to
determine if the CLB is correctly modelled.
Finally, if both the logical and physical simulations do not discover existing errors, you
may need to use more test vectors in the simulations.
MAP Report (MRP) File
The MAP report (MRP) file is an ASCII text file that contains information about the MAP
run. The report information varies based on the device and whether you use the –detail
option (see the “–detail (Write Out Detailed MAP Report)” section).
An abbreviated MRP file is shown below—most report files are considerably larger than
the one shown. The file is divided into a number of sections, and sections appear even if
they are empty. The sections of the MRP file are as follows:
•
Design Information—Shows your MAP command line, the device to which the design
has been mapped, and when the mapping was performed.
•
Design Summary—Summarizes the mapper run, showing the number of errors and
warnings, and how many of the resources in the target device are used by the mapped
design.
•
Table of Contents—Lists the remaining sections of the MAP report.
•
Errors—Shows any errors generated as a result of the following:
•
♦
Errors associated with the logical DRC tests performed at the beginning of the
mapper run. These errors do not depend on the device to which you are mapping.
♦
Errors the mapper discovers (for example, a pad is not connected to any logic, or a
bidirectional pad is placed in the design but signals only pass in one direction
through the pad). These errors may depend on the device to which you are
mapping.
♦
Errors associated with the physical DRC run on the mapped design.
Warnings—Shows any warnings generated as a result of the following:
♦
Warnings associated with the logical DRC tests performed at the beginning of the
mapper run. These warnings do not depend on the device to which you are
mapping.
♦
Warnings the mapper discovers. These warnings may depend on the device to
which you are mapping.
♦
Warnings associated with the physical DRC run on the mapped design.
•
Informational—Shows messages that usually do not require user intervention to
prevent a problem later in the flow. These messages contain information that may be
valuable later if problems do occur.
•
Removed Logic Summary—Summarizes the number of blocks and signals removed
from the design. The section reports on these kinds of removed logic.
Development System Reference Guide
www.xilinx.com
147
R
Chapter 7: MAP
•
•
Blocks trimmed—A trimmed block is removed because it is along a path that has no
driver or no load. Trimming is recursive. For example, if Block A becomes
unnecessary because logic to which it is connected has been trimmed, then Block A is
also trimmed.
♦
Blocks removed—A block is removed because it can be eliminated without
changing the operation of the design. Removal is recursive. For example, if Block
A becomes unnecessary because logic to which it is connected has been removed,
then Block A is also removed.
♦
Blocks optimized—An optimized block is removed because its output remains
constant regardless of the state of the inputs (for example, an AND gate with one
input tied to ground). Logic generating an input to this optimized block (and to
no other blocks) is also removed, and appears in this section.
♦
Signals removed—Signals are removed if they are attached only to removed
blocks.
♦
Signals merged—Signals are merged when a component separating them is
removed.
Removed Logic—Describes in detail all logic (design components and nets) removed
from the input NGD file when the design was mapped. Generally, logic is removed
for the following reasons:
♦
The design uses only part of the logic in a library macro.
♦
The design has been mapped even though it is not yet complete.
♦
The mapper has optimized the design logic.
♦
Unused logic has been created in error during schematic entry.
This section also indicates which nets were merged (for example, two nets were
combined when a component separating them was removed).
In this section, if the removal of a signal or symbol results in the subsequent removal of
an additional signal or symbol, the line describing the subsequent removal is indented.
This indentation is repeated as a chain of related logic is removed. To quickly locate the
cause for the removal of a chain of logic, look above the entry in which you are
interested and locate the top-level line, which is not indented.
148
•
IOB Properties—Lists each IOB to which the user has supplied constraints along with
the applicable constraints.
•
RPMs—Indicates each RPM (Relationally Placed Macro) used in the design, and the
number of device components used to implement the RPM.
•
Guide Report—If you have mapped using a guide file, shows the guide mode used
(EXACT or LEVERAGE) and the percentage of objects that were successfully guided.
•
Area Group Summary—The mapper summarizes results for each area group. MAP
uses area groups to specify a group of logical blocks that are packed into separate
physical areas.
•
Modular Design Summary—After the Modular Design Active Module
Implementation Phase, this section lists the logic that was added to the design to
successfully implement the active module. After the Final Assembly Phase, this
section states whether the logic was assembled successfully.
•
Timing Report—This section, produced with the –timing option, shows information
on timing constraints considered during the MAP run.
www.xilinx.com
Development System Reference Guide
R
MAP Report (MRP) File
•
Configuration String Information—This section, produced with the -detail option,
shows configuration strings and programming properties for special components like
DCMs, BRAMS, GTs and similar components. Configuration strings for slices and
IOBs marked “SECURE” are not shown.
•
Additional Device Resource Counts—This section contains raw design statistics for
Xilinx analysis purposes.
Note: The MAP Report is formatted for viewing in a monospace (non-proportional) font. If the text
editor you use for viewing the report uses a proportional font, the columns in the report do not line up
correctly.
Release 8.1i Map
Xilinx Mapping Report File for Design 'stopwatch'
Design Information
-----------------Command Line
: C:/xilinx/bin/nt/map.exe -ise
c:\xilinx\projects\watchver\watchver.ise
-intstyle ise -p xc2v40-fg256-5 -cm area -pr b -k 4 -c 100 -tx off -o
stopwatch_map.ncd stopwatch.ngd stopwatch.pcf
Target Device : xc2v40
Target Package : fg256
Target Speed
: -5
Mapper Version : virtex2 -- $Revision: 1.26.6.3 $
Mapped Date
: Mon Nov 01 18:11:26 2005
Design Summary
-------------Number of errors:
0
Number of warnings:
3
Logic Utilization:
Number of Slice Flip Flops:
17 out of
Number of 4 input LUTs:
54 out of
Logic Distribution:
Number of occupied Slices:
29 out of
Number of Slices containing only related logic:
Number of Slices containing unrelated logic:
Total Number 4 input LUTs:
54 out of
Number of bonded IOBs:
Number of GCLKs:
Number of DCMs:
27 out of
1 out of
1 out of
512
512
3%
10%
256
11%
29 out of 29 100%
0 out of 29
0%
512
10%
88
16
4
30%
6%
25%
Number of RPM macros:
1
Total equivalent gate count for design: 7,487
Additional JTAG gate count for IOBs: 1,296
Peak Memory Usage: 98 MB
Development System Reference Guide
www.xilinx.com
149
R
Chapter 7: MAP
Table of Contents
----------------Section 1 - Errors
Section 2 - Warnings
Section 3 - Informational
Section 4 - Removed Logic Summary
Section 5 - Removed Logic
Section 6 - IOB Properties
Section 7 - RPMs
Section 8 - Guide Report
Section 9 - Area Group Summary
Section 10 - Modular Design Summary
Section 11 - Timing Report
Section 12 - Configuration String Information
Section 13 - Additional Device Resource Counts
Section 1 - Errors
-----------------Section 2 - Warnings
-------------------WARNING:LIT - Logical network Inst_dcm1_CLKIN_IBUFG_OUT has no load.
WARNING:LIT - The above warning message base_net_load_rule is repeated
1 more time for the following:
N0
To see the details of these warning messages, please use the -detail
switch.
Section 3 - Informational
------------------------INFO:MapLib:562 - No environment variables are currently set.
INFO:LIT:244 - All of the single ended outputs in this design are using
slew rate limited output drivers. The delay on speed critical single
ended outputs can be dramatically reduced by designating them as fast
outputs in the schematic.
Section 4 - Removed Logic Summary
--------------------------------1 block(s) removed
2 block(s) optimized away
Section 5 - Removed Logic
------------------------Unused block "xcounter/VCC" (ONE) removed.
Optimized Block(s):
TYPE
BLOCK
GND
XST_GND
GND
xcounter/GND
To enable printing of redundant blocks removed and signals merged, set
the
detailed map report option and rerun map.
150
www.xilinx.com
Development System Reference Guide
R
MAP Report (MRP) File
Section 6 - IOB Properties
--------------------------
IOB Name
Type
Direction
I/O
Standard
Drive
Strength
Slew
Rate
CLK
IOB
Input
LVTTL
ONESOUT<0>
IOB
Output
LVTTL
12
SLOW
ONESOUT<1>
IOB
Output
LVTTL
12
SLOW
ONESOUT<2>
IOB
Output
LVTTL
12
SLOW
ONESOUT<3>
IOB
Output
LVTTL
12
SLOW
ONESOUT<4>
IOB
Output
LVTTL
12
SLOW
ONESOUT<5>
IOB
Output
LVTTL
12
SLOW
ONESOUT<6>
IOB
Output
LVTTL
12
SLOW
RESET
IOB
Input
LVTTL
STRTSTOP
IOB
Input
LVTTL
TENSOUT<0>
IOB
Output
LVTTL
12
SLOW
TENSOUT<1>
IOB
Output
LVTTL
12
SLOW
TENSOUT<2>
IOB
Output
LVTTL
12
SLOW
TENSOUT<3>
IOB
Output
LVTTL
12
SLOW
TENSOUT<4>
IOB
Output
LVTTL
12
SLOW
TENSOUT<5>
IOB
Output
LVTTL
12
SLOW
TENSOUT<6>
IOB
Output
LVTTL
12
SLOW
TENTHSOUT<0>
IOB
Output
LVTTL
12
SLOW
TENTHSOUT<1>
IOB
Output
LVTTL
12
SLOW
TENTHSOUT<2>
IOB
Output
LVTTL
12
SLOW
TENTHSOUT<3>
IOB
Output
LVTTL
12
SLOW
TENTHSOUT<4>
IOB
Output
LVTTL
12
SLOW
TENTHSOUT<5>
IOB
Output
LVTTL
12
SLOW
TENTHSOUT<6>
IOB
Output
LVTTL
12
SLOW
TENTHSOUT<7>
IOB
Output
LVTTL
12
SLOW
TENTHSOUT<8>
IOB
Output
LVTTL
12
SLOW
TENTHSOUT<9>
IOB
Output
LVTTL
12
SLOW
Development System Reference Guide
www.xilinx.com
Reg(s)
Register
IOB
Delay
151
R
Chapter 7: MAP
Section 7 - RPMs
---------------xcounter/hset
Section 8 - Guide Report
-----------------------Guide not run on this design.
Section 9 - Area Group Summary
-----------------------------No area groups were found in this design.
Section 10 - Modular Design Summary
----------------------------------Modular Design not used for this design.
Section 11 - Timing Report
-------------------------This design was not run using timing mode.
Section 12 - Configuration String Details
-------------------------Use the "-detail" map option to print out Configuration Strings
Section 13 - Additional Device Resource Counts
---------------------------------------------Number of JTAG Gates for IOBs = 27
Number of Equivalent Gates for Design = 7,487
Number of RPM Macros = 1
Number of Hard Macros = 0
CAPTUREs = 0
BSCANs = 0
STARTUPs = 0
PCILOGICs = 0
DCMs = 1
GCLKs = 1
ICAPs = 0
18X18 Multipliers = 0
Block RAMs = 0
TBUFs = 0
Total Registers (Flops & Latches in Slices & IOBs) not driven by LUTs=3
IOB Dual-Rate Flops not driven by LUTs = 0
IOB Dual-Rate Flops = 0
IOB Slave Pads = 0
IOB Master Pads = 0
IOB Latches not driven by LUTs = 0
IOB Latches = 0
IOB Flip Flops not driven by LUTs = 0
IOB Flip Flops = 0
Unbonded IOBs = 0
Bonded IOBs = 27
Total Shift Registers = 0
Static Shift Registers = 0
Dynamic Shift Registers = 0
16x1 ROMs = 0
16x1 RAMs = 0
32x1 RAMs = 0
Dual Port RAMs = 0
MUXFs = 1
152
www.xilinx.com
Development System Reference Guide
R
Halting MAP
MULT_ANDs = 0
4 input LUTs used as Route-Thrus = 0
4 input LUTs = 54
Slice Latches not driven by LUTs = 0
Slice Latches = 0
Slice Flip Flops not driven by LUTs = 3
Slice Flip Flops = 17
Slices = 29
Number of LUT signals with 4 loads = 4
Number of LUT signals with 3 loads = 0
Number of LUT signals with 2 loads = 4
Number of LUT signals with 1 load = 44
NGM Average fanout of LUT = 1.52
NGM Maximum fanout of LUT = 9
NGM Average fanin for LUT = 3.4444
Number of LUT symbols = 54
Halting MAP
To halt MAP, enter Ctrl+C (on a workstation) or Ctrl+Break (on a PC). On a workstation,
make sure that when you enter Ctrl+C the active window is the window from which you
invoked the mapper. The operation in progress is halted. Some files may be left when the
mapper is halted (for example, a MAP report file or a physical constraints file), but these
files may be discarded since they represent an incomplete operation.
Development System Reference Guide
www.xilinx.com
153
R
Chapter 7: MAP
154
www.xilinx.com
Development System Reference Guide
R
Chapter 8
Physical Design Rule Check
This program is compatible with the following families:
•
Virtex™, Virtex™-E
•
Virtex™-II
•
Virtex™-II Pro, Virtex™-II Pro X
•
Virtex™-4
•
Virtex™-5 LX
•
Spartan™-II, Spartan™-IIE
•
Spartan™-3, Spartan™-3E, Spartan™-3L
The chapter describes the physical Design Rule Check program. This chapter contains the
following sections:
•
“DRC Overview”
•
“DRC Syntax”
•
“DRC Input File”
•
“DRC Output File”
•
“DRC Options”
•
“DRC Checks”
•
“DRC Errors and Warnings”
DRC Overview
The physical Design Rule Check, also known as DRC, comprises a series of tests to
discover physical errors and some logic errors in the design. The physical DRC is run as
follows:
•
MAP automatically runs physical DRC after it has mapped the design.
•
PAR (Place and Route) automatically runs physical DRC on nets when it routes the
design.
•
BitGen, which creates a a BIT file for programming the device, automatically runs
physical DRC.
•
You can run physical DRC from within the FPGA Editor tool. The DRC also runs
automatically after certain FPGA Editor operations (for example, when you edit a
logic cell or when you manually route a net). For a description of how the DRC works
within the FPGA Editor, see the online help provided with the FPGA Editor GUI tool.
•
You can run physical DRC from the UNIX or DOS command line.
Development System Reference Guide
www.xilinx.com
155
R
Chapter 8: Physical Design Rule Check
DRC Syntax
The following command runs physical DRC:
drc [options] file_name.ncd
options can be any number of the DRC options listed in “DRC Options”. They do not need
to be listed in any particular order. Separate multiple options with spaces.
file_name is the name of the NCD file on which DRC is to be run.
DRC Input File
The input to DRC is an NCD file. The NCD file is a mapped, physical description of your
design.
DRC Output File
The output of DRC is a TDR file. The TDR file is an ASCII formatted DRC report. The
contents of this file are determined by the command line options you specify with the DRC
command.
DRC Options
This section describes the DRC command line options.
–e (Error Report)
The –e option produces a report containing details about errors only. No details are given
about warnings.
–o (Output file)
–o outfile_name.tdr
The –o option overrides the default output report file file_name.tdr with outfile_name.tdr.
–s (Summary Report)
The –s option produces a summary report only. The report lists the number of errors and
warnings found but does not supply any details about them.
–v (Verbose Report)
The –v option reports all warnings and errors. This is the default option for DRC.
156
www.xilinx.com
Development System Reference Guide
R
DRC Checks
–z (Report Incomplete Programming)
The –z option reports incomplete programming as errors. Certain DRC violations are
considered errors when the DRC runs as part of the BitGen command but are considered
warnings at all other times the DRC runs. These violations usually indicate the design is
incompletely programmed (for example, a logic cell has been only partially programmed
or a signal has no driver). The violations create errors if you try to program the device, so
they are reported as errors when BitGen creates a BIT file for device programming. If you
run DRC from the command line without the –z option, these violations are reported as
warnings only. With the –z option, these violations are reported as errors.
DRC Checks
Physical DRC performs the following types of checks:
•
Net check
This check examines one or more routed or unrouted signals and reports any problems
with pin counts, 3-state buffer inconsistencies, floating segments, antennae, and
partial routes.
•
Block check
This check examines one or more placed or unplaced components and reports any
problems with logic, physical pin connections, or programming.
•
Chip check
This check examines a special class of checks for signals, components, or both at the
chip level, such as placement rules with respect to one side of the device.
•
All checks
This check performs net, block, and chip checks.
When you run DRC from the command line, it automatically performs net, block, and chip
checks.
In the FPGA Editor, you can run the net check on selected objects or on all of the signals in
the design. Similarly, the block check can be performed on selected components or on all of
the design’s components. When you check all components in the design, the block check
performs extra tests on the design as a whole (for example, 3-state buffers sharing long
lines and oscillator circuitry configured correctly) in addition to checking the individual
components. In the FPGA Editor, you can run the net check and block check separately or
together.
Development System Reference Guide
www.xilinx.com
157
R
Chapter 8: Physical Design Rule Check
DRC Errors and Warnings
A DRC error indicates a condition in which the routing or component logic does not
operate correctly (for example, a net without a driver or a logic block that is incorrectly
programmed). A DRC warning indicates a condition where the routing or logic is
incomplete (for example, a net is not fully routed or a logic block has been programmed to
process a signal but there is no signal on the appropriate logic block pin).
Certain messages may appear as either warnings or errors, depending on the application
and signal connections. For example, in a net check, a pull-up not used on a signal
connected to a decoder generates an error message. A pull-up not used on a signal
connected to a 3-state buffer only generates a warning.
Incomplete programing (for example, a signal without a driver or a partially programmed
logic cell) is reported as an error when the DRC runs as part of the BitGen command, but
is reported as a warning when the DRC runs as part of any other program. The –z option
to the DRC command reports incomplete programming as an error instead of a warning.
For a description of the –z option, see “–z (Report Incomplete Programming)”.
158
www.xilinx.com
Development System Reference Guide
R
Chapter 9
PAR
The Place and Route (PAR) program is compatible with the following families:
•
Virtex™, Virtex™-E
•
Virtex™-II
•
Virtex™-II Pro, Virtex™-II Pro X
•
Virtex™-4
•
Virtex™-5 LX
•
Spartan™-II, Spartan™-IIE
•
Spartan™-3, Spartan™-3E, Spartan™-3L
The chapter contains the following sections:
•
“Place and Route Overview”
•
“PAR Process”
•
“Guided PAR”
•
“PAR Syntax”
•
“PAR Input Files”
•
“PAR Output Files”
•
“PAR Options”
•
“PAR Reports”
•
“Multi Pass Place and Route (MPPR)”
•
“Xplorer”
•
“ReportGen”
•
“Turns Engine (PAR Multi-Tasking Option)”
•
“Halting PAR”
Place and Route Overview
After you create a Native Circuit Description (NCD) file with the MAP program, you can
place and route that design file using PAR. PAR accepts a mapped NCD file as input,
places and routes the design, and outputs an NCD file to be used by the bitstream
generator (BitGen). See Chapter 14, “BitGen”.
The NCD file output by PAR can also be used as a guide file for additional runs of PAR
that may be done after making minor changes to your design. See the “Guided PAR”
section of this chapter for more information on using guide files.
Development System Reference Guide
www.xilinx.com
159
R
Chapter 9: PAR
PAR places and routes a design based on the following considerations:
•
Timing-driven—The Xilinx timing analysis software enables PAR to place and route a
design based upon timing constraints. See the “Timing-driven PAR” section of this
chapter for more information.
•
Non Timing-driven (cost-based)—Placement and routing are performed using
various cost tables that assign weighted values to relevant factors such as constraints,
length of connection, and available routing resources. Non timing-driven placement
and routing is used if no timing constraints are present.
The design flow through PAR is shown in the following figure. This figure shows a PAR
run that produces a single output design file (NCD)
NCD
Circuit Description
(Mapped)
PCF
Physical Constraints
Input for Re-Entrant PAR
Guide File
PAR
PAR
PAR Report
CSV, PAD, TXT
Pin Information
Guide File
Report
Intermediate
Failing Timespec
Summary
NCD
Circuit Description
(Placed/Routed)
X10090
Figure 9-1:
160
PAR Flow
www.xilinx.com
Development System Reference Guide
R
PAR Process
PAR Process
This section provides information on how placing and routing are performed by PAR, as
well as information on timing-driven PAR and automatic timespecing.
Placing
The PAR placer executes multiple phases of the placer. PAR writes the NCD after all the
placer phases are complete.
During placement, PAR places components into sites based on factors such as constraints
specified in the PCF file, the length of connections, and the available routing resources.
Routing
After placing the design, PAR executes multiple phases of the router. The router performs
a converging procedure for a solution that routes the design to completion and meets
timing constraints. Once the design is fully routed, PAR writes an NCD file, which can be
analyzed against timing.
PAR writes a new NCD as the routing improves throughout the router phases.
Note: Timing-driven place and timing-driven routing are automatically invoked if PAR finds timing
constraints in the physical constraints file. See the following section for details.
Timing-driven PAR
Timing-driven PAR is based on the Xilinx timing analysis software, an integrated static
timing analysis tool that does not depend on input stimulus to the circuit. Placement and
routing are executed according to timing constraints that you specify in the beginning of
the design process. The timing analysis software interacts with PAR to ensure that the
timing constraints imposed on your design are met.
To use timing-driven PAR, you can specify timing constraints using any of the following
ways:
•
Enter the timing constraints as properties in a schematic capture or HDL design entry
program. In most cases, an NCF will be automatically generated by the synthesis tool.
•
Write your timing constraints into a User Constraints File (UCF). This file is processed
by NGDBuild when the logical design database is generated.
To avoid manually entering timing constraints in a UCF, use the Xilinx Constraints
Editor, a tool that greatly simplifies creating constraints. For a detailed description of
how to use the Constraints Editor, see the Constraints Editor online help included with
the software.
•
Enter the timing constraints in the physical constraints file (PCF), a file that is
generated by MAP. The PCF file contains any timing constraints specified using the
two previously described methods and any additional constraints you enter in the
file.
Development System Reference Guide
www.xilinx.com
161
R
Chapter 9: PAR
If no timing constraints are found for the design or the Project Navigator "Use Timing
Constraints" option is unchecked (-x option), timing constraints are automatically
generated for all internal clocks. These constraints will be adjusted to get better
performance as PAR runs. The level of performance achieved is in direct relation to the
setting of the PAR effort level. Effort level STD will have the fastest run time and the
lowest performance, effort level HIGH will have the best performance and the longest run
time, effort level MED will have run time and performance between STD and HIGH.
Timing-driven placement and timing-driven routing are automatically invoked if PAR
finds timing constraints in the physical constraints file. The physical constraints file serves
as input to the timing analysis software. The timing constraints supported by the Xilinx
Development System are described in the Constraints Guide.
Note: Depending upon the types of timing constraints specified and the values assigned to the
constraints, PAR run time may be increased.
When PAR is complete, you can review the output PAR Report for a timing summary or
verify that the design’s timing characteristics (relative to the physical constraints file) have
been met by running TRACE (Timing Reporter and Circuit Evaluator) or Timing Analyzer,
Xilinx’s timing verification and reporting utilities. TRACE, which is described in detail in
Chapter 12, “TRACE”, issues a report showing any timing warnings and errors and other
information relevant to the design.
Command Line Examples
Following are a few examples of PAR command line syntax and a description of what each
does.
Example 1:
The following command places and routes the design in the file input.ncd and writes the
placed and routed design to output.ncd.
par input.ncd output.ncd
Note: PAR will automatically detect and include a physical constraints file (PCF) that has the same
root name as the input NCD file.
Example 2:
The following command skips the placement phase and preserves all routing information
without locking it (re-entrant routing). Then it runs in conformance to timing constraints
found in the pref.pcf file. If the design is fully routed and your timing constraints are not
met, then the router attempts to reroute until timing goals are achieved or until it
determines it is not achievable.
par –k previous.ncd reentrant.ncd pref.pcf
Example 3:
The following command runs 20 placements and routings using different cost tables all at
overall effort level med. The mapping of the overall level (–ol) to placer effort level (–pl)
and router effort level (–rl) depends on the device to which the design was mapped, and
placer level and router level do not necessarily have the same value. The iterations begin at
cost table entry 5. Only the best 3 output design files are saved. The output design files (in
NCD format) are placed into a directory called results.dir.
par –n 20 –ol med –t 5 –s 3 input.ncd results.dir
162
www.xilinx.com
Development System Reference Guide
R
Guided PAR
Example 4:
The following command runs PAR (using the Turns Engine) on all nodes listed in the
allnodes file. It runs 10 place and route passes at placer effort level med and router effort
level std on the mydesign.ncd file.
par –m allnodes –pl med –rl std –n 10 mydesign.ncd output.dir
Note: This command is not supported on Windows operating systems.
Guided PAR
When PAR runs using a guide design as input, PAR first places and routes any
components and signals that fulfill the matching criteria from the guide file.
Optionally, PAR reads a previously placed and routed NCD file as a guide file to help in
placing and routing the input design. This is useful if minor incremental changes have
been made to create a new design. To increase productivity, you can use your last design
iteration as a guide design for the next design iteration, as shown in the following figure:
First PAR Run
Second PAR Run
NCD
Input Design
NCD
Modified Input Design
NCD
Guide File
PAR
PAR
NCD
Placed and Routed
Design
NCD
New Placed and Routed
Design
X7202
Figure 9-2:
Guided PAR for Design
Two command line options control guided PAR. The –gf option specifies the NCD guide
file, and the –gm option determines whether exact or leverage or incremental mode is used
to guide PAR.
The guide design is used as follows:
•
If a component in the new design is constrained to the same location as a component
placed in the guide file, then this component is defined as matching.
•
If a component in the new design has the same name as a component in the guide
design, that component matches the guide component.
•
If a signal in the new design has the same name as a signal in the guide design, the
signal matches the guide signal.
Development System Reference Guide
www.xilinx.com
163
R
Chapter 9: PAR
•
Any matching component in the new design is placed in the site corresponding to the
location of the matching guide component, if possible.
•
Matching component pins are swapped to match those of the guide component with
regard to matching signals, if possible.
•
All of the connections between matching driver and load pins of the matching signals
have the routing information preserved from the guide file with the exception of Vcc
and GND signals.
When PAR runs using a guide design as input, PAR first places and routes any
components and signals that fulfill the matching criteria described above. Then PAR
places and routes the remainder of the logic.
To place and route the remainder of the logic, PAR performs the following:
•
If you have selected exact guided PAR (by entering the –gm exact option on the PAR
command line), the placement and routing of the matching logic are locked. Neither
placement nor routing can be changed to accommodate additional logic.
•
If you have selected leveraged guided PAR (by entering the –gm leverage option on
the PAR command line), PAR tries to maintain the placement and routing of the
matching logic, but changes placement or routing if it is necessary in order to place
and route to completion and achieve your timing constraints (if possible).
•
If you have selected incremental guided PAR (by entering the -gm incremental option
on the PAR command line), your design must have area groups constraints to take
advantage of this option. If an area group has changed, for example, additional or
elimination of logic, this area group will not be guided. The other area groups will
maintain the placement but routing will change to route the design completely and to
achieve your timing constraints (if possible).
Some cases where the leveraged mode is necessary are as follows:
♦
You have added logic that makes it impossible to meet your timing constraints
without changing the placement and routing in the guide design.
♦
You have added logic that demands a certain site or certain routing resource, and
that site or routing resource is already being used in the guide design.
Note: For Verilog or VHDL netlist designs, re-synthesizing modules typically causes signal and
instance names in the resulting netlist to be significantly different from the netlist obtained in earlier
synthesis runs. This occurs even if the source level Verilog or VHDL code only contains a small
change. Because guided PAR depends on signal and component names, synthesis designs often
have a low match rate when guided. Therefore, guided PAR is not recommended for most synthesisbased designs, although there may be cases where it could be a successful alternative technique.
PCI Cores
You can use a guide file to add a PCI Core, which is a standard I/O interface, to your
design. The PCI Core guide file must already be placed and routed. PAR only places and
routes the signals that run from the PCI Core to the input NCD design; it does not place or
route any portion of the PCI Core. You can also use the resulting design (PCI Core
integrated with your initial design) as a guide file. However, you must then use the exact
option for –gm, not leverage, when generating a modified design.
Guided PAR supports precise matching of placement and routing of PCI Cores that are
used as reference designs in a guide file:
•
164
Components locked in the input design are guided by components in the reference
design of a guide file in the corresponding location.
www.xilinx.com
Development System Reference Guide
R
PAR Syntax
•
Signals that differ only by additional loads in the input design have the
corresponding pins routed according to the reference design in the guide file.
•
Guide summary information in the PAR report describes the amount of logic from the
reference design that matches logic in the input design.
For detailed information about designing with PCI Cores, refer to the Xilinx PCI web page
at http://www.xilinx.com/systemio/pciexpress/index.htm.
PAR Syntax
The following syntax places and routes your design:
par [options] infile[.ncd] outfile [pcf_file[.pcf]]
options can be any number of the PAR options listed in “PAR Options.” They do not need
to be listed in any particular order. Separate multiple options with spaces.
infile is the design file you wish to place and route. The file must include a .ncd extension,
but you do not have to specify the .ncd extension on the command line.
outfile is the target design file that is written after PAR is finished. If the command options
you specify yield a single output design file, outfile has an extension of .ncd or .dir. A .ncd
extension generates an output file in NCD format, and the .dir extension directs PAR to
create a directory in which to place the output file (in NCD format). If the specified
command options yield more than one output design file, outfile must have an extension of
.dir. The multiple output files are placed in the directory with the .dir extension.
If the file or directory you specify already exists, an error messages appears and the
operation is not run. You can override this protection and automatically overwrite existing
files by using the –w option.
pcf_file is a Physical Constraints File (PCF). The file contains the constraints you entered
during design entry, constraints you added using the User Constraints File (UCF) and
constraints you added directly in the PCF file. If you do not enter the name of a PCF on the
command line and the current directory contains an existing PCF with the infile name and
a .pcf extension, PAR uses the existing PCF.
PAR Input Files
Input to PAR consists of the following files:
•
NCD file—a mapped design file.
•
PCF —an ASCII file containing constraints based on timing, physical placements, and
other attributes placed in a UCF or NCF file. A list of constraints is located in the
Constraints Guide. PAR supports all of the timing constraints described in the
Constraints Guide.
•
Guide NCD file—an optional placed and routed NCD file you can use as a guide for
placing and routing the design.
PAR Output Files
Output from PAR consists of the following files:
•
NCD file—a placed and routed design file (may contain placement and routing
information in varying degrees of completion).
Development System Reference Guide
www.xilinx.com
165
R
Chapter 9: PAR
•
PAR file—a PAR report including summary information of all placement and routing
iterations.
•
PAD file—a file containing I/O pin assignments in a parsable database format.
•
CSV file—a file containing I/O pin assignments in a format supported by spreadsheet
programs.
•
TXT file—a file containing I/O pin assignments in a ASCII text version for viewing in
a text editor.
•
GRF (Guide Report File)— a file that is created when you use the –gf option.
PAR Options
You can customize the placement and routing of your design by specifying one or more of
the command line options when you run PAR. You can place a design without routing it,
perform a single placement, perform a number of placements using different cost tables,
and specify an effort level (std, med, high) based on the complexity of your design.
The following tables list a summary of the PAR command line options, along with a short
description of their functions, default settings, and effort levels:
Table 9-1:
Effort Level Options
Option
Function
Range
–ol effort_level
Overall placement and routing
effort level
std, med,
high
std
–pl placer_effort_level
Placement effort level
(overrides the –ol value for the
placer)
std, med,
high
Determined by
the –ol setting
–rl router_effort_level
Routing effort level (overrides
–ol value for the router)
std, med,
high
Determined by
the –ol setting
–xe extra_effort_level
Set extra effort level
(only available if -ol is set to
high)
normal,
continue
No extra effort
level is used
Table 9-2:
General Options
Option
166
Default
Function
Range
Default
–f command_file
Executes command line
arguments in a specified
command file
N/A
No command
line file
–intstyle
Reduced screen output to error
and warning messages based on
the integration style you are
running
ise,
xflow,
silent
Display all
information on
the screen
–k
Run re-entrant router starting
with existing placement and
routing
N/A
Run placement
and standard
router (Do not
run re-entrant
routing)
www.xilinx.com
Development System Reference Guide
R
PAR Options
Table 9-2:
General Options
Option
Function
Range
Default
–nopad
Suppresses the creation of the
PAD files in all three formats
N/A
Generate all
PAD files
–p
Do not run the Placer
N/A
Run Placement
–power
Power Aware PAR
N/A
Off
–r
Do not run the Router
N/A
Run Router
–ub
Use bonded IOB sites for
unbonded IOBs
N/A
Do not use
bonded IOB
sites
–w existing_file
Overwrite existing output files
that have the same name and
path
N/A
Do not
overwrite
–x
Ignore any timing constraints
provided and generate new
timing constraints on all internal
clocks. Adjust these constraints
while PAR is running to focus on
either performance or run time
based on effort level setting.
N/A
Use timing
constraints if
present or use
Automatic
Timespecing if
no timing
constraints are
given
Table 9-3:
Guide Options
Option
Function
Range
Default
–gf
Specifies the name of a NCD
file to be used as the guide file
for PAR
N/A
No guide file is
used
–gm
Selects the mode of guide to
use during Place and Route
exact,
leverage,
incremental
Exact
Development System Reference Guide
www.xilinx.com
167
R
Chapter 9: PAR
Table 9-4:
Multi Pass Place and Route (MPPR) Options
Option
–n iteration
Function
Number of
Placement Cost
Tables to run in
Multi Pass Place
and Route
Range
Default
0-100
One (1) place and
route run
Note: When the
value is set to 0,
PAR runs up to all
100 cost tables until
one meets timing.
–m nodefile_name
Turns engine for
Multi Pass Place
and Route
N/A
Do not run the turns
engine
–s number_to_save
Save number of
results from Multi
Pass Place and
Route (for use with
the –n option)
1-100
Saves all
–t placer_cost_table
Starting Placement
Cost Table
1-100
One (Start placer at
Cost Table 1)
Detailed Listing of Options
This section describes PAR options in more detail. The listing is in alphabetical order.
–f (Execute Commands File)
–f command_file
The –f option executes the command line arguments in the specified command_file. For
more information on the –f option, see “–f (Execute Commands File)” in Chapter 1.
–gf (Guide NCD File)
–gf guide_file
The –gf option specifies the name of an NCD file (from a previous PAR run) to be used as
a guide for the current PAR run. The guide file is an NCD file which is used as a template
for placing and routing the input design. If the –gm option is not specified, the guide mode
will be exact. For more information on the guide file, see “Guided PAR”.
Note: Support for using multiple guide files is being deprecated and will not be available in future
releases of Xilinx software.
168
www.xilinx.com
Development System Reference Guide
R
PAR Options
–gm (Guide Mode)
–gm {exact | leverage | incremental}
The –gm option specifies the type of guided placement and routing PAR uses—exact,
leverage, or incremental. The default is exact mode. For more information on the guide
modes, see “Guided PAR”.
Note: Support for the leverage guide flow (–gm incremental), without a timing-driven map run of
your design, specified with the map –timing option, will not be supported in future releases of Xilinx
software.
You must specify the NCD to use as a guide file by entering a –gf option (see “–gf (Guide
NCD File)”) on the PAR command line.
par -gf previous_run.ncd -gm leverage design_ncd place_and_routed.ncd
design.pcf
Note: The Incremental Design flow is being deprecated and will not be available in future releases
of Xilinx software. New in 8.2i are Partitions, which provide significant flexibility and functionality for
design preservation. Information on Partitions can be found in the online help included in the 8.2i
software and in the “TCL chapter” of this book. Incremental Design using the map and par -gm
incremental option will still work in 8.2i, though it generates a warning that this flow is being removed.
–intstyle (Integration Style)
–intstyle {ise | xflow | silent}
The –intstyle option reduces screen output based on the integration style you are running.
When using the –intstyle option, one of three modes must be specified: ise, xflow, or silent.
The mode sets the way information is displayed in the following ways:
–intstyle ise
This mode indicates the program is being run as part of an integrated design
environment.
–intstyle xflow
This mode indicates the program is being run as part of an integrated batch flow.
–intstyle silent
This mode limits screen output to warning and error messages only.
Note: The -intstyle option is automatically invoked when running in an integrated environment, such
as Project Navigator or XFLOW.
–k (Re-Entrant Routing)
–k previous_NCD.ncd reentrant.ncd
The –k option runs re-entrant routing. Routing begins with the existing placement and
routing left in place. Re-entrant routing is useful to manually route parts of a design and
then continue automatic routing, if you halted the route prematurely (for example, with
Ctrl+C) and want to resume, or if you want to run additional route passes.
Development System Reference Guide
www.xilinx.com
169
R
Chapter 9: PAR
–m (Multi-Tasking Mode)
–m nodefile_name
The –m option allows you to specify the nodes on which to run jobs when using the PAR
Turns Engine. You must use this option with the -n (Number of PAR Iterations) option.
par -m nodefile_name -ol high -n 10 mydesign.ncd output.dir
Note: The –m option is not supported on Windows operating systems.
–n (Number of PAR Iterations)
–n iterations
By default (without the –n option), one place and route iteration is run. The –n option
determines the number of place and route passes performed at the effort level specified by
the –ol option. Each iteration uses a different cost table when the design is placed and
produces a different NCD file. If you enter -n 0, the software continues to place and route,
stopping only when the design is fully routed and meets all timing constraints, or after
completing the iteration of cost table 100. If you specify a –t option, the iterations begin at
the cost table specified by –t. The valid range of the cost table is 0–100; default is 1.
par -pl high -rl std -n 5 design.ncd output.dir design.pcf
Note: For the best MPPR results in a reasonable time, use –pl high –rl std to get the best
placement.
–nopad (No Pad)
–nopad
The –nopad option turns off the generation of the three output formats for the PAD file
report. By default, all three report types are created when PAR is run.
–ol (Overall Effort Level)
–ol effort_level
The –ol option sets the overall PAR effort level. The effort level specifies the level of effort
PAR uses to place and route your design to completion and to achieve your timing
constraints.
Of the three effort_level values, use std on the least complex design, and high on the most
complex. The level is not an absolute; it shows instead relative effort.
If you place and route a simple design at a complex level, the design is placed and routed
properly, but the process takes more time than placing and routing at a simpler level. If
you place and route a complex design at a simple level, the design may not route to
completion or may route less completely (or with worse delay characteristics) than at a
more complex level.
Increasing your overall level will enable harder timing goals to be possibly met, however it
will increase your runtime.
The effort_level setting is std, med, or high with the default level std.
The –ol level sets an effort level for placement and another effort level for routing. These
levels are also std, med, high. The placement and routing levels set at a given –ol level
depend on the device family in the NCD file. You can determine the default placer and
router effort levels for a device family by reading the PAR Report file produced by your
PAR run.
170
www.xilinx.com
Development System Reference Guide
R
PAR Options
You can override the placer level set by the –ol option by entering a –pl (Placer Effort Level)
option, and you can override the router level by entering a –rl (Router Effort Level) option.
par -ol high design.ncd output.ncd design.pcf
–p (No Placement)
The –p option bypasses the placer and proceeds to the routing phase. A design must be
fully placed when using this option or PAR will issue an error message and exit. When you
use this option, existing routes are ripped up before routing begins. You can, however,
leave the routing in place if you use the –k option instead of the –p option.
par -p design.ncd output.ncd design.pcf
Note: The –p option is recommended when you have an MFP or UCF written from Floorplanner or
wish to maintain a previous NCD placement but run the router again.
–pl (Placer Effort Level)
–pl placer_effort_level
The –pl option sets the placer effort level. The effort level specifies the level of effort used
when placing the design. This option overrides the setting specified for the –ol option. For
a description of effort level, see “–ol (Overall Effort Level)”.
The placer_effort_level setting is std, med, or high, and the default level set if you do not
enter a –pl option is determined by the setting of the –ol option.
par -pl high placed_design.ncd output.ncd design.pcf
–power (Power Aware PAR)
The –power option optimizes the capacitance of non-timing driven design signals. The
default setting for this option is off.
–r (No Routing)
Use the –r option to prevent the routing of a design. The –r option causes the design to exit
before the routing stage.
par -r design.ncd route.ncd design.pcf
–rl (Router Effort Level)
–rl router_effort_level
The –rl option sets the router effort level. The effort level specifies the level of effort used
when routing the design. This option overrides the setting for the –ol option. For a
description of effort level, see “–ol (Overall Effort Level)”.
The router_effort_level setting is std, med, or high, and the default level set if you do not
enter a –rl option is determined by the setting of the –ol option. In the example that follows,
the placement level is at std (default) and the router level is at the highest effort level.
par -rl high design.ncd output.ncd design.pcf
Development System Reference Guide
www.xilinx.com
171
R
Chapter 9: PAR
–s (Number of Results to Save)
–s number_to_save –n iterations
The –s option is used with the –n option to save the number of results that you specify. By
default (with no –s option), all results are saved. The valid range for the number_to_save is
1–100.
The –s option compares the results of each iteration and saves the best output NCD files.
The best NCDs are determined by a score assigned to each output design. This score takes
into account such factors as the number of unrouted nets, the delays on nets and
conformance to any timing constraints. The lower the score, the better the design. This
score is described in the PAR Reports section of this chapter. See the Multi Pass Place and
Route (MPPR) section for more details.
par -s 2 -n 10 -pl high -rl std design.ncd output_directory design.pcf
–t (Starting Placer Cost Table)
–t placer_cost_table
When the -n option is specified without the -t option, PAR starts at placer cost table 1.The
–t option specifies the cost table at which the placer starts (placer cost tables are described
in “Placing”). If the cost table 100 is reached, placement begins at 1 again, if you are
running MPPR due to the –n options. The placer_cost_table range is 1–100, and the default is
1.
par –t 10 –s 1 –n 5 –pl high –rl std design.ncd output_directory
design.pcf
The previous option is often used with MPPR to try out various cost tables. In this
example, cost table 10 is used and a MPPR run is performed for 5 iterations. The par run
starts with cost table 10 and runs through 14. The placer effort is at the highest and the
router effort at std. The number of NCD saved will be the best one.
Note: See the Multi Pass Place and Route (MPPR) section for more details.
–ub (Use Bonded I/Os)
par –ub design.ncd output.ncd design.pcf
By default (without the -ub option), I/O logic that MAP has identified as internal can only
be placed in unbonded I/O sites. If the –ub option is specified, PAR can place this internal
I/O logic into bonded I/O sites in which the I/O pad is not used. The option also allows
PAR to route through bonded I/O sites. If you use the –ub option, make sure this logic is
not placed in bonded sites connected to external signals, power, or ground. You can
prevent this condition by placing PROHIBIT constraints on the appropriate bonded I/O
sites. See the Constraints Guide for more information on constraints.
–w (Overwrite Existing Files)
par input.ncd –w existing_NCD.ncd input.pcf
Use the –w option to instruct PAR to overwrite existing output files, including the input
design file if it follows the –w option. The default is not to overwrite an NCD. Therefore if
the given NCD exists, then PAR gives an error and terminates before running place and
route.
172
www.xilinx.com
Development System Reference Guide
R
PAR Reports
–x (Performance Evaluation Mode)
par –x design.ncd output.ncd design.pcf
The -x option is used if there are timing constraints specified in the physical constraints
file, and you want to execute a PAR run with tool-generated timing constraints instead to
evaluating the performance of each clock in the design. This operation is referred to as
"Performance Evaluation" mode. This mode is entered into either by using the -x option or
when no timing constraints are used in a design.The tool-generated timing constraints
constrain each internal clock separately and tighten/loosen the constraints based on
feedback during execution. The PAR effort level controls whether the focus is on fastest
run time (STD), best performance (HIGH) or a balance between run time and performance
(MED).
PAR ignores all timing constraints in the design.pcf, and uses all physical constraints, such
as LOC and AREA_RANGE.
–xe (Extra Effort Level)
–xe effort_level
par –ol high –xe n design.ncd output.ncd design.pcf
Use the –xe option to set the extra effort level. The effort_level variable can be set to n
(normal) or c (continue) working even when timing cannot be met. Extra effort n uses
additional runtime intensive methods in an attempt to meet difficult timing constraints. If
PAR determines that the timing constraints cannot be met, then a message is issued
explaining that the timing cannot be met and PAR exits. Extra effort c allows you to direct
PAR to continue routing even if PAR determines the timing constraints cannot be met.
PAR continues to attempt to route and improve timing until little or no timing
improvement can be made.
Note: Use of extra effort c can result in extremely long runtimes.
PAR Reports
The output of PAR is a placed and routed NCD file (the output design file). In addition to
the output design file, a PAR run generates a report file with a .par extension. A Guide
Report File (.grf) is created when you use the –gf option.
Note: The ReportGen utility can be used to generate pad report files (.pad, pad.txt, and pad.csv).
The pinout .pad file is intended for parsing by user scripts. The pad.txt file is intended for user viewing
in a text editor. The pad.csv file is intended for directed opening inside of a spreadsheet program. It
is not intended for viewing through a text editor. See the “ReportGen” section of this chapter for
information on generating and customizing pad reports.
The PAR report contains execution information about the place and route job as well as all
constraint messages.
If the options that you specify when running PAR are options that produce a single output
design file, your output is the output design (NCD) file, a PAR file, and PAD files. The PAR
file and the PAD files have the same root name as the output design file.
If you run multiple iterations of placement and routing, you produce an output design file,
a PAR file, and PAD files for each iteration. Consequently, when you run multiple
iterations you have to specify a directory in which to place these files.
Development System Reference Guide
www.xilinx.com
173
R
Chapter 9: PAR
As the command is performed, PAR records a summary of all placement and routing
iterations in one PAR file at the same level as the directory you specified, then places the
output files (in NCD format) in the specified directory. Also, a Place and Route Report File
and a PAD file are created for each NCD file, describing in detail each individual iteration.
Note: Reports are formatted for viewing in a monospace (non-proportional) font. If the text editor
you use for viewing the report uses a proportional font, the columns in the report do not line up
correctly. The pad.csv report is formatted for importing into a spreadsheet program or for parsing via
a user script.
Place and Route Report File
The Place and Route report file contains execution information about the PAR command
run. The report file shows the steps taken as the program converges on a placement and
routing solution. A sample PAR report file follows:
The first lines of the PAR report identify the software version you are running, the machine on
which it is run, and the date and time stamp. In addition, the command line entry is restated,
along with information about the input design files (NCD and PCF). Warning messages also
appear in the first section of the PAR report.
Release 8.1i - par HEAD
Copyright (c) 1995-2005 Xilinx, Inc.
All rights reserved.
Par –w –ol high c:\test\test_top_mod_map.ncd c:\test\par0.ncd
c:\test\test_top_mod.pcf
Constraints file: c:\test\test_top_mod.pcf.
Loading device for application Rf_Device from file ‘2vp2.nph’ in environment c:/Xilinx.
"test_top_mod" is an NCD, version 1.0, device xc2vp2, package ff672,
speed -7
Initializing temperature to 100.000 Celsius. (default - Range: -40.000
to 100.000 Celsius)
Initializing voltage to 1.500 Volts. (default - Range: 1.400 to 1.600
Volts)
WARNING:Timing:2796 - The input clock clkB_IBUFG to DCM
test_lutram_bram/test_DCM has a period (frequency) specification of
2700 ps (370.37 Mhz). This violates the minimum period (maximum frequency) of 4761 ps (210.04 Mhz).
WARNING:Timing:2798 - The output clock test_lutram_bram/CLK0_W from DCM
test_lutram_bram/test_DCM has a period (frequency) specification of
2700 ps (370.37 Mhz). This violates the minimum period (maximum frequency) of 4761 ps (210.04 Mhz).
The next section of the PAR report provides a breakdown of the resources in the design and
includes the Device Utilization Summary.
Device speed data version:
"PRODUCTION 1.90 2005-12-13".
Device Utilization Summary:
Number of BUFGMUXs
Number of DCMs
Number of External IOBs
174
www.xilinx.com
4 out of 16
1 out of 4
80 out of 204
25%
25%
39%
Development System Reference Guide
R
PAR Reports
Number of LOCed IOBs
78 out of 80
Number of RAMB16s
Number of SLICEs
Overall effort level (-ol):
Placer effort level (-pl):
Placer cost table entry (-t):
Router effort level (-rl):
1 out of 12
26 out of 1408
97%
8%
1%
High (set by user)
High (set by user)
1
High (set by user)
Starting initial Timing Analysis.
REAL time: 31 secs
Finished initial Timing Analysis.
REAL time: 31 secs
As shown in the next section, PAR reports different phases of the placer and identifies which
phase is being executed. The checksum number shown is for Xilinx debugging purposes only
and does not reflect the quality of the placer run. A running tally of the time transpired since
starting PAR is also shown in this section of the PAR report.
Starting Placer
Phase 1.1
Phase 1.1 (Checksum:989a1f) REAL time: 43 secs
Phase 2.31
Phase 2.31 (Checksum:1312cfe) REAL time: 43 secs
Phase 3.2
Phase 3.2 (Checksum:1c9c37d) REAL time: 47 secs
Phase 4.30
Phase 4.30 (Checksum:26259fc) REAL time: 47 secs
Phase 5.3
Phase 5.3 (Checksum:2faf07b) REAL time: 47 secs
Phase 6.5
Phase 6.5 (Checksum:39386fa) REAL time: 47 secs
Phase 7.8
Phase 7.8 (Checksum:9a609d) REAL time: 47 secs
Phase 8.5
Phase 8.5 (Checksum:4c4b3f8) REAL time: 47 secs
Phase 9.18
Phase 9.18 (Checksum:55d4a77) REAL time: 47 secs
Phase 10.24
Phase 10.24 (Checksum:5f5e0f6) REAL time: 47 secs
Phase 11.27
Phase 11.27 (Checksum:68e7775) REAL time: 47 secs
Development System Reference Guide
www.xilinx.com
175
R
Chapter 9: PAR
Phase 12.5
Phase 12.5 (Checksum:7270df4) REAL time: 47 secs
Writing design to file c:\test\par0.ncd
Total REAL time to Placer completion: 47 secs
Total CPU time to Placer completion: 8 secs
The router portion of the PAR report shows that the router has been invoked. It displays each
phase of the router and reports the number of unrouted nets, in addition to an approximate timing score in parenthesis.
Starting Router
Phase 1: 231 unrouted;
REAL time: 51 secs
Phase 2: 154 unrouted;
REAL time: 51 secs
Phase 3: 21 unrouted;
REAL time: 51 secs
Phase 4: 21 unrouted; (347)
REAL time: 51 secs
Phase 5: 21 unrouted; (0)
REAL time: 51 secs
Phase 6: 21 unrouted; (0)
REAL time: 51 secs
Phase 7: 0 unrouted; (0)
REAL time: 51 secs
Total REAL time to Router completion: 51 secs
Total CPU time to Router completion: 10 secs
Generating "par" statistics.
The next portion of the PAR report contains the Clock Report, which includes a clock table that
lists all clocks in the design and provides information on the routing resources, number of
fanout, maximum net skew for each clock, and maximum delay. The Locked column in the clock
table means the clock driver (BUFGMUX) is assigned to a particular site instead of left floating.
Note: The clock skew and delay listed in this table differ from the skew and delay reported in
TRACE, or Timing Analyzer. PAR takes into account the net that drives the clock pins whereas
TRACE and Timing Analyzer include the entire clock path.
176
www.xilinx.com
Development System Reference Guide
R
PAR Reports
**************************
Generating Clock Report
**************************
+---------------------+--------------+------+------+------------+----------+
|
Clock Net
|
Resource
|Locked|Fanout|Net Skew(ns)|Max Delay(ns)
+---------------------+--------------+------+------+------------+----------+
|test_lutram_bram/CLK |
|
|
|
|
|
1X |
BUFGMUX1P| No
|
43 | 0.023
| 0.724
+---------------------+--------------+------+------+------------+----------+
|
clk_bram_BUFGP |
BUFGMUX6S| No
|
6 | 0.004
| 0.704
+---------------------+--------------+------+------+------------+----------+
|
clk_slice_BUFGP |
BUFGMUX3P| No
|
4 | 0.000
| 0.700
+---------------------+--------------+------+------+------------+----------+
| clk_lut_test_BUFGP |
BUFGMUX7P| No
|
11 | 0.027
| 0.715
+---------------------+--------------+------+------+------------+----------+
The next portion of the PAR report lists information on timing constraints contained in the input
PCF. The first line of this section shows the Timing Score, which in this example is 0. In cases
where a timing constraint is not met, the Timing Score will be greater than 0. The lower the Timing Score, the better the result.
Note: The constraints table in this section is not generated when no constraints are given in the
input PCF, or the –x option is used.
Timing Score: 0
Asterisk (*) preceding a constraint indicates it was not met.
This may be due to a setup or hold violation.
---------------------------------------------------------------------------Constraint
| Requested | Actual
| Logic
|
|
| Levels
---------------------------------------------------------------------------TS_clk_lut_test = PERIOD TIMEGRP "clk_lut | 2.800ns
| 2.761ns
| 1
_test" 2.800 nS
HIGH 50.000000 %
|
|
|
---------------------------------------------------------------------------TS_clk_bram = PERIOD TIMEGRP "clk_bram"
| 1.400ns
| 1.339ns
| 1
1.400 nS
HIGH 50.000000 %
|
|
|
---------------------------------------------------------------------------TS_clk_slice = PERIOD TIMEGRP "clk_slice" | 1.200ns
| 1.150ns
| 1
1.200 nS
HIGH 50.000000 %
|
|
|
---------------------------------------------------------------------------TS_clkB = PERIOD TIMEGRP "clkB" 2.700 nS | N/A
| N/A
| N/A
HIGH 50.000000 %
|
|
|
---------------------------------------------------------------------------TS_test_lutram_bram_CLK0_W = PERIOD TIMEG | 2.700ns
| 2.494ns
| 0
RP "test_lutram_bram_CLK0_W" TS_clkB * 1 |
|
|
.000000 HIGH 50.000 %
|
|
|
---------------------------------------------------------------------------OFFSET = IN 600 pS BEFORE COMP "clk_lut_ | 0.600ns
| 0.565ns
| 1
test" TIMEGRP "Lut_test_1_and_2"
|
|
|
----------------------------------------------------------------------------
Development System Reference Guide
www.xilinx.com
177
R
Chapter 9: PAR
The last portion of the PAR report shows how many timing constraints were met and whether
PAR was able to place and route the design successfully. The total time used to complete the
PAR run is displayed in both REAL time and CPU time. Any errors and a message summary are
also shown.
All constraints were met.
INFO:Timing:2761 - N/A entries in the Constraints list may indicate that the
constraint does not cover any paths or that it has no requested value.
Generating Pad Report.
All signals are completely routed.
Total REAL time to PAR completion: 53 secs
Total CPU time to PAR completion: 11 secs
Peak Memory Usage:
99 MB
Placement: Completed - No errors found.
Routing: Completed - No errors found.
Timing: Completed - No errors found.
Number of error messages: 0
Number of warning messages: 2
Number of info messages: 0
Writing design to file c:\test\par0.ncd
par done!
Multi Pass Place and Route (MPPR)
When running multiple iterations of the placer and router, PAR produces output design
files for each iteration. When you run multiple iterations, you must specify a directory for
PAR to place these files. PAR records a summary of all placement and routing iterations in
one PAR file at the same level as the directory that you specify. Then PAR places the
output design files, in NCD format, in the specified directory. For each NCD file, a PAR
and PAD files (CSV, TXT, PAD) are also created, describing in detail each individual
iteration.
Note: The naming convention for the output files, which may contain placement and
routing information in varying degrees of completion, is:
[placer effort level]_[router effort level]_[cost table number]
The following is a command line example for running three iterations of the placer and
router, using a different cost table entry each time.
par –n 3 -pl high -rl std address.ncd output.dir
–n 3 is the number of iterations you want to run,
–pl high sets the placement effort level to high
–rl std sets the router effort level
address.ncd is the input design file
output.dir is the name of the directory in which you want to place the results of the PAR
run.
Note: Cost table 1, the default, is used for the initial cost table because no initial cost table was
specified.
178
www.xilinx.com
Development System Reference Guide
R
Multi Pass Place and Route (MPPR)
One strategy for using MPPR is to set the placer effort level to high and router effort level to
std to ensure a quality placement and a quick route. This strategy enables PAR to run the
cost tables effectively and reduces the total runtime of all place and route iterations.
When a design is very close to reaching its timing goals and can run for a long period
through all the cost tables, another strategy is to use the following:
par –n 0 -ol high, -xe n address.ncd output.dir
Select I/O Utilization and Usage Summary
If more than one Select I/O standard is used, an additional section on Select I/O utilization
and usage summary is added to the PAR file. This section shows details for the different
I/O banks. It shows the I/O standard, the output reference voltage (VCCO) for the bank,
the input reference voltage (VREF) for the bank, the PAD and Pin names. In addition this
section gives a summary for each bank with the number of pads being used, the voltages of
the VREFs, and the VCCOs.
Importing the PAD File Information
The PAD (pad and _pad.csv) reports are formatted for importing into a spreadsheet
program such as Microsoft® Excel, or for parsing via a user script. The _pad.csv file can be
directly opened by Microsoft Excel. The procedure for importing a .pad file into Microsoft
Excel is as follows:
1.
In Excel, select the menu File → Open.
2.
In the Open dialog box, change the Files of type field to All Files (*.*)” Browse to
the directory containing your .pad file. Select the file so it appears in the File name
field. Select the Open button to close the Open dialog box.
3.
The Excel Text Import Wizard dialog appears. In the Original data type group box,
select Delimited. Select the Next button to proceed.
4.
In the Delimiters group box, uncheck the Tab checkbox. Place a check next to Other
and enter a | character into the field after Other. The | symbol is located on the
keyboard above the Enter key.
5.
Select the Finish button to complete the process.
You can then format, sort, print, etc. the information from the PAD file using spreadsheet
capabilities as required to produce the necessary information.
Note: This file is designed to be imported into a spreadsheet program such as Microsoft Excel for
viewing, printing, and sorting.The ”|” character is used as the data field separator. This file is also
designed to support parsing.
Guide Reporting
For guided PAR, the PAR report displays summary information describing the total
amount and percentage of components and signals in the input design guided by the
reference design. The report also displays the total/percentage of components and signals
from the reference design (guide file) that were used to guide the input design.
The guide report, which is included in the PAR report file, is generated with the -gf option.
The report describes the criteria used to select each component and signal used to guide
the design. It may also enumerate the criteria used to reject some subset of the components
and signals that were eliminated as candidates. See the Guided PAR section of this chapter
for more information on using guide files.
Development System Reference Guide
www.xilinx.com
179
R
Chapter 9: PAR
Xplorer
Xplorer is a TCL script that seeks the best design performance using ISE implementation
software. After synthesis generates an EDIF or NGC (XST) file, the design is ready for
implementation. During this phase, you can use Project Navigator or the command line to
manually apply design constraints and explore different implementation tool settings for
achieving your timing goals; alternatively, you can use Xplorer. Xplorer is designed to help
achieve optimal results by employing smart constraining techniques and various physical
optimization strategies. Because no unique set of ISE options or timing constraints works
best on all designs, Xplorer finds the right set of implementation tool options to either meet
design constraints or find the best performance for the design. Hence, Xplorer has two
modes of operation: Best Performance Mode and Timing Closure Mode.
Xplorer support is available for the following Xilinx FPGA architectures:
•
Virtex™-II Pro, Virtex™-II Pro X
•
Virtex™-4 /FX/LX/SX
•
Virtex™-5 LX
•
Spartan™-3, Spartan™-3E, Spartan™-3L
Best Performance Mode
In this mode, Xplorer optimizes design performance for a user-specified clock domain,
allowing easy evaluation of the maximum achievable performance. You specify the design
name and a single clock to optimize. Xplorer implements the design with different
architecture-specific optimization strategies in conjunction with timing-driven place and
route (PAR). When the -clk option is specified, it tightens or relaxes the timing constraints
depending on whether or not the frequency goal is achieved. Xplorer estimates the starting
frequency based on pre-PAR timing data. Adjusting timing constraints such that PAR is
neither under nor over-constrained, enables Xplorer to deliver optimal design
performance.
In addition to timing constraints, Xplorer also uses physical optimization strategies such as
global optimization and timing-driven packing and placement. Global optimization
performs pre-placement netlist optimizations on the critical region, while timing-driven
packing and placement provides closed-loop packing and placement such that the placer
can recommend logic packing techniques that deliver optimal placement. If the design has
a User Constraints File (UCF), Xplorer optimizes for the user constraints on the specified
clock domain.
Following is sample command line syntax for Best Performance Mode. For a complete list
of Xplorer options, see “Xplorer Options.”
Example:
xplorer.tcl -clk –p
Description:
design_name specifies the name of the top-level EDIF or NGC file.
clock name, specified with the -clk option, specifies the name of the
clock to optimize.
part_name, specified with the -p option, specifies the Xilinx part
name.
180
www.xilinx.com
Development System Reference Guide
R
Xplorer
Result:
Xplorer implements the design with different architecture-specific
optimization strategies and timing-driven placement and routing
for optimal design performance. The results are summarized in the
output Xplorer report (.rpt). The best run is identified at the end of
the report file.
Timing Closure Mode
If you have a design with timing constraints and your intent is for the tools to meet the
specified constraints, use the Timing Closure Mode. In this mode, you should not specify a
clock with the -clk option. Xplorer looks at the UCF to examine the goals for timing
constraints. Using these constraints together with optimization strategies such as global
optimization, timing-driven packing and placement, register duplication, and cost tables,
Xplorer implements the design in multiple ways to deliver optimal design performance.
Because Xplorer runs approximately 10 iterations, you will experience longer PAR
runtimes. However, Xplorer is something that is typically run once during a design cycle.
After an Xplorer run, you can capture the set of options that will give the best result from
the Xplorer report file and use that set of options for future design runs. Typically,
designers run the implementation tools many times in a design cycle, so a longer initial
runtime will likely reduce the number of PAR iterations later.
Following is sample command line syntax for Timing Closure Mode. For a complete list of
Xplorer options, see “Xplorer Options.”:
Example:
xplorer.tcl -uc -p
Description:
design_name specifies the name of the top-level EDIF or NGC file.
ucf_name, specified with the -uc option, specifies the name of the
UCF that Xplorer uses to examine the goals for timing constraints.
part_name, specified with the -p option, specifies the complete
Xilinx part name.
Result:
Xplorer implements the design in multiple ways to deliver optimal
design performance. The results are summarized in the output
Xplorer report (.rpt). The best run is identified at the end of the
report file.
Xplorer Syntax
Xplorer is run from the command line or from the Project Navigator GUI. For information
on running Xplorer in Project Navigator, please see the “Using Xplorer in ISE” topic in the
online help included with the ISE software. The following syntax is used to run Xplorer
script from the command line. Note that when using Windows, the .tcl extension is not
used.
xplorer.tcl [options] -p
design_name is the name of the top-level EDIF or NGC file. This should be the simple name
of the file, rather than a full absolute or relative path. If the file is not in the current
directory, use the –sd and –wd options to specify the directory where the design resides
and the directory in which to write any output files.
Development System Reference Guide
www.xilinx.com
181
R
Chapter 9: PAR
options can be any number of the Xplorer options listed in “Xplorer Options.” Use the -clk
option for Best Performance Mode and the -uc option for Timing Closure Mode. Separate
multiple options with spaces.
part_name is the complete name of the Xilinx part, specified with the –p option.
Note: You can also run Xplorer from the Xilinx TCL Shell, accessible through the TCL Console tab
in Project Navigator.
Xplorer Input Files
Input to Xplorer consists of the following files:
•
EDIF—netlist file produced by synthesis.
•
NGC—netlist file produced by XST.
Xplorer Output Files
Output from Xplorer consists of following:
RPT—report file that summarizes all of the results from the Xplorer runs. The best run is
identified at the end of the report file. See “Xplorer Report” in this chapter for additional
information.
LOG—log files that contain all standard out messages. Xplorer produces two log files:
xplorer.log and run.log.
run<1>.*—multiple log files with execution details for each Xplorer run. File names are
based on the individual Xplorer run; for example, run1.log, run1.ucf, run 2.log, run2.ucf.
Xplorer Options
The following table lists the Xplorer command line options, along with a short description
of each option.
Table 9-5:
Xplorer Options
Option
182
Function
–bm
Specifies the BMM file name for block RAM initialization.
–clk
Specifies the name of the clock net you wish to optimize in
Best Performance Mode. If the –clk option is omitted, the
script will use the timespec defined in the User
Constraints File (UCF).
–freq
Specifies the first attempted frequency in Best
Performance Mode. The starting value impacts the
number of runs. Without this option, the script
determines a good starting value.
–map_options
Source Exif Data:
File Type : PDF
File Type Extension : pdf
MIME Type : application/pdf
PDF Version : 1.4
Linearized : No
Page Mode : UseOutlines
XMP Toolkit : 3.1-701
Producer : Acrobat Distiller 7.0 (Windows)
Create Date : 2006:04:27 11:05:37Z
Creator Tool : FrameMaker 6.0
Modify Date : 2006:04:27 14:24:20-07:00
Metadata Date : 2006:04:27 14:24:20-07:00
Document ID : uuid:1536d267-ffdf-4b40-baf7-009840543365
Instance ID : uuid:17485262-f094-4051-85d6-7bdcce04f016
Marked : True
Format : application/pdf
Description : Xilinx Development System
Title : ISE 8.2i Development System Reference Guide
Rights : Copyright © 1995-2006 Xilinx, Inc. All rights reserved. XILINX, the Xilinx logo, and other designated brands included herein are trademarks of Xilinx, Inc. PowerPC is a trademark of IBM, Inc. All other trademarks are the property of their respective owners.
Creator : Xilinx
Subject : Xplorer, Tcl, xtclsh, command line, PAR, MAP, BitGen, NGDBuild, TRACE, NetGen, Xflow, implementation, modular design, hierarchical design, incremental design, BSDLanno, constraints, options, simulation, Netlist, runtime, reports, batch command, partial reconfiguration, netgen, options, commands, syntax, input, output, design flow, development system, implementation, tools
Page Count : 422
Author : Xilinx
Keywords : "Xplorer, Tcl, xtclsh, command line, PAR, MAP, BitGen, NGDBuild, TRACE, NetGen, Xflow, implementation, modular design, hierarchical design, incremental design, BSDLanno, constraints, options, simulation, Netlist, runtime, reports, batch command, partial reconfiguration, netgen, options, commands, syntax, input, output, design flow, development system, implementation, tools"
Warning : [Minor] Ignored duplicate Info dictionary
EXIF Metadata provided by EXIF.tools