Planaheaduser Guide
Planaheaduser Guide
Guide
Included in the PlanAhead™ software code is source code for the following programs:
Centerpoint XML
The initial developer of the Original Code is CenterPoint - Connective Software Engineering GmbH. Portions created by CenterPoint
- Connective Software Engineering GmbH. Copyright © Copyright IBM Corp. 1998 1998-2000 CenterPoint
- Connective Software Engineering GmbH. All Rights Reserved. Source Code for CenterPoint is available at http://www.cpointc.com/XML/
NLView Schematic Engine
Copyright © Copyright IBM Corp. 1998 Concept Engineering.
Static Timing Engine by Parallax Software Inc.
Copyright © Copyright IBM Corp. 1998 Parallax Software Inc.
Java Standard Edition
Copyright © Copyright IBM Corp. 1998 1995 - 2006 Sun Microsystems
Includes portions of software from RSA Security, Inc. and some portions licensed from IBM are available at
http://oss.software.ibm.com/icu4j/.
Preface
Guide Contents
This document contains the following chapters:
• Chapter 1, “Introduction,”provides an overview of the PlanAhead features.
• Chapter 2, “Understanding the PlanAhead Design Flow,”provides an overview of the
design flow.
• Chapter 3, “Working with Projects,”describes the initial setup and management of a
project within PlanAhead.
• Chapter 4, “Using the Viewing Environment,”describes the PlanAhead user interface.
• Chapter 5, “RTL Design,” describes the RTL environment.
• Chapter 6, “Synthesizing the Design,” describes the available Synthesis capabilities.
• Chapter 7, “Netlist Analysis and Constraint Definition,”describes the PlanAhead
design analysis and constraint definition capabilities.
• Chapter 8, “I/O Pin Planning,” describes the pin planning environment that enables
pin assignment.
• Chapter 9, “Implementing the Design,” describes the available Implementation
capabilities.
• Chapter 10, “Analyzing Implementation Results,” describes the timing and placement
analysis capabilities available in PlanAhead.
• Chapter 11, “Floorplanning the Design,” describes the various floorplanning
strategies and capabilities available in PlanAhead.
• Chapter 12, “Programming and Debugging the Design,”describes the process for
generating bitstream files, launching programming tools and how to use ChipScope™
debugging software debugging capabilities that are integrated into PlanAhead.
• Chapter 13, “Using Hierarchical Design Techniques,” describes how to use the
hierarchical design features.
• Chapter 14, “Tcl and Batch Scripting,” describes how to use the Tcl commands and
scripting features
• Chapter 15, “Using PlanAhead With Project Navigator,” describes the PlanAhead
flows that are integrated with Project Navigator.
This document contains the following appendixes:
• Appendix A, PlanAhead Input and Output Files, describes the files used as input and
output in PlanAhead.
• Appendix B, PlanAhead Terminology,” provides an explanation of the terminology
used in PlanAhead software.
• Appendix C, Installing Releases with XilinxNotify, describes the PlanAhead release
strategy and explains how to update the software.
• Appendix D, Configuring SSH Without Password Prompting, describes how to setup
a passwordless SSH, which is required for running PlanAhead processes on multiple
hosts.
Additional Resources
The following documents are PlanAhead-specific:
• Xilinx ISE Design Suite 12: Installation, Licensing, and Release Notes (UG631)—This
document provides specific installation instructions and requirements. Available from
the software and from the Xilinx website.
• What’s New in PlanAhead (UG656)—The What’s New document provides specific
information about new features in this release. Available from the software and from
the Xilinx website.
• Floorplanning Methodology Guide (UG633)—This guide provides information about
various floorplanning strategies aimed at improving performance, repeatability of
results or reducing design times. Available from the Xilinx website.
• Hierarchical Design Methodology Guide (UG748)—This guide provides information
about using the Xilinx hierarchical partitioning capabilities. Available from the Xilinx
website.
The following documents are referenced:
• Xilinx Synthesis and Simulation Design Guide (UG626)
• Xilinx Constraints Guide (UG612)
• Spartan-6 PCB Design Guide (UG393)
The Partial Reconfiguration User Guide (UG702) and other Partial Reconfiguration
documentation are available at the following Xilinx website:
www.xilinx.com/tools/partial-reconfiguration
For more information, go to the Xilinx website (http://www.xilinx.com/planahead).
To find additional documentation, see the Xilinx website at:
http://www.xilinx.com/support/documentation/index.htm
To search the Answer Database of silicon, software, and IP questions and answers, or to
create a webcase with Technical Support, see the Xilinx website at:
http://www.xilinx.com/support/mysupport.htm
Tutorials
The following PlanAhead tutorials are available with the PlanAhead software and on the
Xilinx website: http://www.xilinx.com/tools/planahead.htm.
− Quick Front- to-Back Flow Overview (UG673)
− I/O Pin Planning (UG674)
− RTL Design and IP Creation using CORE Generator (UG675)
− Design Analysis and Floorplanning (UG676)
− Debugging with ChipScope (UG677)
− Leveraging Design Preservation for Predictable Results (UG747)
− Overview of Partial Reconfiguration Flow (UG743)
− Partial Reconfiguration with Processor Peripheral (UG744)
− Using Tcl and SDC Commands (UG760)
Video Demonstrations
• PlanAhead Technical Video Demonstrations—Watch the video demonstrations to learn
more about specific areas of the PlanAhead software. Available from the Xilinx
website: http://www.xilinx.com/design.
Document Conventions
This document uses the following conventions. An example illustrates each convention.
Chapter 1: Introduction
About PlanAhead Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Using PlanAhead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Project Creation and Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
RTL and IP Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Synthesis and Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Design Analysis and Constraints Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Pin Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Floorplanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Programming and Debugging Designs and ChipScope Integration . . . . . . . . . . . . . . .25
Hierarchical Design, Design Preservation, and Partial Configuration . . . . . . . . . . . . .25
Tcl Commands and Batch Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Using PlanAhead with the ISE Project Navigator Environment . . . . . . . . . . . . . . . . . .26
Input and Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
PlanAhead Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Accessing Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Configuring Multiple Linux Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Invoking PlanAhead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
Using the Getting Started Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
PlanAhead Command Line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
Using a PlanAhead Startup Tcl Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
Introduction
This chapter introduces the PlanAhead™ software and contains the following sections:
• “About PlanAhead Software”
• “Using PlanAhead”
• “Invoking PlanAhead”
Using PlanAhead
You can use the PlanAhead software for FPGA design at a variety of starting points. In
PlanAhead, you can:
• Manage the design data flow from Register Transfer Level (RTL) development
through bitstream generation with a push button Run process
• Perform RTL design and analysis using an elaborated RTL netlist
• Customize and implement IP using the integrated CORE Generator tool
• Configure and launch multiple Synthesis and Implementation Runs
• Perform I/O pin planning
• Manage constraints and perform floorplanning
• Estimate the resource utilization, timing, power consumption and perform Design
Rule Checks (DRCs)
• Debug core insertion and Implementation with the integrated ChipScope debugging
tool
• Analyze Implementation results
• Launch programming and design verification tools
Pin Planning
The PlanAhead software contains a I/O Planner environment that provides an interface to
analyze the design and device I/O requirements, and lets you define an I/O pinout
configuration or “pinout” that satisfies the requirements of both the Printed Circuit Board
(PCB) and the Field Programmable Gate Array (FPGA) designers. Chapter 8, “I/O Pin
Planning,” contains more information about I/O pin planning,
Floorplanning
The PlanAhead software supports a floorplanning methodology that lets designers
constrain critical logic to ensure shorter interconnect lengths with less delay and to ensure
more predictable Implementation results. You can floorplan a Design by creating physical
block (Pblock) locations to constrain logic placement, or by locking individual logic objects
to specific device sites. See Chapter 11, “Floorplanning the Design,” for more information
about the floorplanning capabilities in PlanAhead and to obtain references to the
Floorplanning User Guide (UG633), which is available on the Xilinx website.
PlanAhead Terminology
The PlanAhead software uses specific terminology which is used throughout this
document, and is described in Appendix B, “PlanAhead Terminology.”
Accessing Updates
Xilinx uses a XilinxNotify utility that notifies you when there are updates available. See
Appendix C, “Installing Releases with XilinxNotify,” for more information.
Invoking PlanAhead
You can invoke the PlanAhead software from any directory; however, invoking it from a
“project” directory might prove advantageous because project-specific log files can be
located more easily.
Note: Refer to the Xilinx ISE Design Suite: Installation, Licensing, and Release Notes for proper
installation of this product.
Linux
To invoke PlanAhead in Linux, type the following command at the Linux command
prompt:
# planAhead
Windows
To invoke PlanAhead in Windows, double-click the Xilinx PlanAhead 12 shortcut icon,
shown in Figure 1-1.
You can specify the PlanAhead Start in folder by modifying the desktop icon properties to
define where to write the PlanAhead log files.
The PlanAhead Environment opens to the Getting Started Page as shown in Figure 1-2.
The PlanAhead Getting Started page assists you with creating or opening projects as well
as viewing the PlanAhead documentation. You can display the Getting Started jump page
by closing all open projects.
For more information about the PlanAhead journal file, see “Journal File (planAhead.jou),”
page 360. For more information about scripting actions for PlanAhead with Tcl, see
Chapter 14, “Tcl and Batch Scripting.”
RTL to Bitstream
You can use the PlanAhead software to manage the entire design flow process from RTL
development, IP customization, Synthesis and Implementation all the way through to
programming the device. You can add Verilog and Verilog Hardware Definition List
(VHDL) RTL sources, Intellectual Property (IP) cores, and constraints to a project. You can
experiment with Synthesis and Implementation options and constraints to help meet your
design objectives. Refer to Chapter 5, “RTL Design,” for more information.
Partial Reconfiguration
PlanAhead provides an environment to set up and manage a Partial Reconfiguration design
project. These design types require special software features and project structure to
manage the modules that are reconfigurable. This software feature is only available under
special licensing. Fore more information about Partial Reconfiguration, refer to
www.xilinx.com/tools/partial-reconfiguration.
Design Flow
This section describes the PlanAhead Design flow and Design tasks.
Logic Synthesis
PlanAhead lets you configure, launch, and monitor Synthesis Runs using the Xilinx®
Synthesis Technology (XST) tool.
You can experiment with different Synthesis options and create reusable strategies for
Synthesis Runs. For example, you could create strategies for power, performance, or area
optimization.
The Synthesis Run results display interactively and PlanAhead creates report files that are
easily accessible. You can select Synthesis Warnings and Errors from the Compilation
Messages view to highlight the logic in the source files.
• You can launch multiple Synthesis Runs simultaneously or serially.
• On a Linux system you launch Runs on remote servers.
When you have multiple Synthesis Runs, those Runs create multiple netlists which are
stored within the PlanAhead software project. The PlanAhead software then lets you load
the various versions of the netlist into the environment for analysis. After the netlist
import, you can perform device and design analysis, create constraints for I/O pin
planning, floorplanning, and implementation.
Implementation
The PlanAhead software lets you configure, launch, and monitor Implementation Runs
using the ISE® Design Suite.
You can experiment with different Implementation options and create reusable strategies
for Implementation Runs. As an example, you can create strategies for quick runtimes,
performance, or area optimization.
The Implementation Run results display interactively, and report files are accessible. Also,
You can launch multiple Implementation Runs either simultaneously or serially; using the
Linux platform you can use remote servers. In PlanAhead, you can create Constraint Sets so
you can experiment with various logical constraints, physical constraints, or alternate
devices.
When you open an Implemented Design, the original netlist, constraints and
Implementation results are loaded into the Results Viewer. You can open multiple designs
simultaneously. You can also launch XPower Analyzer and FPGA Editor tools directly
from PlanAhead for further design analysis.
Note: In Release 12.x, the constraints that were used to launch the Run are not loaded. Instead, the
active constraint set in PlanAhead displays when an Implemented Design is opened.
Device Programming
You can create programming bitstream files for any completed Implementation Run. Bit
file generation options are configurable, and you can launch the iMPACT tool to configure
and program the part.
User Models
PlanAhead provide a Graphical User Interface (GUI) with “layered complexity.” It
provides an intuitive environment for new or casual users and also enables easy access to
the more advanced features. By default, PlanAhead opens with a push button flow suitable
for users that do not require more advanced analysis and floorplanning features. The flow
is controlled by a view called the Flow Navigator, which is described in “Understanding
the Flow Navigator,” page 37.
You can configure, launch, and monitor multiple Synthesis and Implementation Runs
locally or on remote Linux servers. You can experiment with different command options,
constraints, or devices.
Note: The advanced flexibility in PlanAhead to create multiple versions of a design and multiple
Runs requires user control for design data management and version control.
The Project Manager displays the Sources and Project Summary views by default.
• For more information on using the Sources view to configure Project Sources, refer to
“Using the Sources View,” page 104.
• For more information on the Project Summary view, refer to “Understanding the
Project Summary,” page 257.
• For more information on customizing IP, see “Configuring IP using the CORE
Generator,” page 62.
The Project Manager Flow Navigator menu contains the following commands:
− Project Settings—Opens the Project Settings dialog box. Refer to“Setting
Command Options,” page 39 for more information.
− Add/Create Sources—Invokes the Add/Create Sources dialog box. Refer to
“Managing Project Sources,” page 57.
− Add Existing IP—Enables importing existing CORE Generator™ project files and
resulting IP in the project. Refer to “Managing Project Sources,” page 57.
− Add/Create Constraints—Invokes the Add/Create Constraints dialog box. Refer
to “Adding and Managing Constraints,” page 68.
− IP Catalog—Opens the IP Catalog view. Refer to “Configuring IP Catalog
Settings,” page 77.
− Elaborate—Elaborates the RTL design and displays messages in the Elaboration
Messages view. Refer to “Elaborating and Analyzing the RTL Design,” page 141.
− Project Summary— Displays the Project Summary view. For more information
on the Project Summary view, refer to “Understanding the Project Summary,”
page 257.
See Chapter 6, “Synthesizing the Design,” and Chapter 9, “Implementing the Design,” for
more information.
Running Synthesis
After you add Sources to a project, you can use the Synthesis option to launch the XST
Synthesis tool. Figure 2-5 shows the Flow Navigator Synthesis button.
Running Implementation
Once Synthesis has completed, you can run the ISE Implementation tools in the Flow
Navigator by clicking the Flow Navigator Implement button. Figure 2-6 shows the
Implement button.
Refer to Chapter 12, “Programming and Debugging the Design,” for more information.
• For more information on using the Netlist Planner to analyze and constrain the
design, refer to Chapter 7, “Netlist Analysis and Constraint Definition.”
• See Chapter 8, “I/O Pin Planning,”for more information about using the I/O Planner
for I/O pin planning.
You can open multiple Implemented Design views simultaneously to display results from
multiple Runs.
Tabs at the top of the view layout indicate which Run results are open and which are
displayed. For information on creating and managing multiple Implementation Runs, see
“Managing Multiple Runs,” page 263.
Note: Some capabilities that involve manipulation of the netlist, altering design partitions or Partial
Reconfiguration control might be restricted in the Implemented Design. You might need to open the
Netlist Design for these operations to ensure you are operating on the proper data.
Closing Designs
You can close designs to reduce the number in memory and to prevent multiple locations
where sources could be edited. In some cases, you are prompted to close a design prior to
changing to another design representation. In some cases, such as for a Partial
Reconfiguration design, you must close the design when leaving the design.
You can close individual designs by clicking the Close button in the banner of the main
viewing area. You can close all designs by selecting the Close Design command from the
pulldown menu on any Design Button in the Flow Navigator.
As source files are updated, a banner appears at the top of the open RTL Designs indicating
that a newer version of the design data is available. You are prompted to reload what is
loaded in memory.
If a design step needs to be run to update the data, the Status Bar and Project Summary
indicate an out-of-date status. PlanAhead provides a link to run the next required step,
such as Synthesis or Implementation.
You can elaborate and analyze the RTL to ensure proper constructs, launch, and manage
various Synthesis and Implementation Runs, and analyze the design and Run results.
Also, you can experiment with different constraints or Implementation strategies.
• On the Getting Started jump page click the Create a New Project link.
• Select File > New Project.
The first dialog box of the New Project wizard gives an overview of the wizard.
2. To continue, click Next.
The Project Name page opens as shown in Figure 3-1.
• Add Directories—Invokes directory browser to add all RTL source files from the
selected directories. Files in the directory hierarchy with valid source file
extensions are added to the project.
• Create File—Invokes the Create Source File dialog where you can create new
VHDL, Verilog, or Verilog Header files. For more information, see Creating
Source Files, page 57.
• Remove—Removes the selected source files from the list of files to be added.
• Copy Sources into Project—Copies the original source files into the PlanAhead
project and uses the local copied version of the file in the project. If you elected to
add directories of source files using the Add Directories option, the directory
structure is maintained when the files are copied locally into the project.
• Add Sources from Subdirectories—Adds files from all subdirectories of any
directories specified using the Add Directories option.
When adding sources, you can click on the Library field, and enter or select a library
name for the file or directory
Note: Selections made for Copy Sources into the Project and Add Sources from
Subdirectories are preserved for future PlanAhead sessions.
2. After adding the intended source files or directories, click Next.
Continue with the steps in section Adding Constraint Files to RTL and Netlist Projects,
page 53.
Figure 3-5: Adding Constraint Files using the New Project Wizard
• Add Files—Browse to, and select the UCF or NCF file(s) to add to the project.
• Create File—Create a new top-level UCF file for the project.
• Remove—Remove the selected UCF file from the Constraint files list.
• Up / Down—Set the order of the selected UCF files. The UCF constraints are order-
dependent; the last setting made is used.
• Copy Sources into Project—Copy the constraint files into the PlanAhead project
directory structure instead of referencing the original locations.
Saving a Project
You can save projects from within PlanAhead with the File > Save Project or File > Save
Project As commands. When you save a project, you are prompted to save unsaved
changes to designs and source files. If PlanAhead detects unsaved changes to the same
data, a prompt is displayed to allow you to select the design to save.
The Save Project As command copies the entire project directory structure to a new
specified location and maintains the existing Runs’ status.
Closing a Project
You can close projects from within PlanAhead with the File > Close Project command.
When you close a project, you are prompted to save any unsaved changes to the design or
source files. You can elect to exit without saving the data, or choose to save the data.
The Project Manager displays the Sources and Project Summary views by default.
3. Define the following information in the dialog boxes shown in the previous figure:
• File type—Select one of the following file types:
- Verilog—Create a Verilog format file (.v).
- Verilog Header—Create a Verilog Header format file (.vh).
- VHDL—Create a VHDL format file (.vhdl).
• File name—Enter a name for the new HDL source file.
• File location—Designate a location to create the file.
4. Click OK.
5. In the Add/Create Sources dialog box, you can specify the appropriate Library for the
source file. By default, sources are added to the work library.
The newly created file is added to the project and displayed in the Sources window.
Double-click the file, or select Open File from the popup menu to open the file in the Text
Editor for editing.
1. Select Add/Create Sources from the popup menu or from the Project Manager.
2. In the Add/Create Sources dialog box, the options are:
• Add Files—Invokes file browser to select RTL files to add to the project. VHDL
libraries can be specified by selecting from the drop down menu or typing in a
library name in the Library column of the Add/Create Sources dialog table.
• Add Directories—Invokes directory browser to add all RTL source files from the
selected directories. Files in the directory hierarchy with valid source file
extensions are added to the project.
• Remove—Removes the selected source files from the list of files to be added.
• Copy Sources into Project—Copies the original source files into the PlanAhead
project and uses the local copied version of the file in the project. If you selected to
add directories of source files using the Add Directories... option, the directory
structure will be maintained when the files are copied locally into the project.
• Add Sources from Subdirectories—Adds files from all subdirectories of specified
directories using the Add Directories option.
When adding sources, you can click on the Library field, and enter or select a library name
for the file or directory.
The file information includes location, type, library, size, modified timestamp date,
location copied from, copy date, and parent module.
• You can change the file type using the Type option. This is useful in cases where
files may have non-standard extensions and the file type is not properly detected
by default.
• You can select a new target library using the Library option.
3. Click Apply to apply changes.
The IP displays by category in an expandable tree table, that provides the IP version,
Advanced eXtensible Interface (AXI) protocol compliance, status, and license
requirements. When you select an IP, a description displays in the lower pane of the view.
Click Data Sheet from the popup menu or the IP Catalog toolbar to bring up the IP
datasheet in a PDF viewer.
Other options available in the IP Catalog toolbar and/or popup menu include:
• Show Search—Displays a Search field to search the catalog for any text string.
• Collapse/Expand All—Collapses or Expands the IP Catalog tree.
• Hide Superseded and Discontinued IPs—Filters the list to current IP only.
• Hide incompatible IP—Filters the list to only the IP that is compatible with the
selected device family.
• Group by Category—Groups or flattens the list for better sorting and searching.
• Customize IP—Opens the customization GUI for the selected IP.
• License Status—Displays license requirements and status for the selected IP.
• Compatible Families—Displays a list of all device families that are compatible with
the selected IP.
• View Data Sheet, Version Information, Webpage and Answer Records—Displays
documentation for the selected IP.
• Catalog Settings—Opens Project Settings for the IP Catalog.
Refer to Using Tree Table Style Views in Chapter 4 for more information about tree table
views.
Customizing IP
You can select IP from the IP Catalog, and customize the IP using the integrated CORE
Generator tool.
1. Select the IP to customize from the IP Catalog.
2. Select the Customize IP command.
PlanAhead invokes the CORE Generator interface to enable core generation. The IP type
you select determines what type of interface displays.
The interfaces are:
• Memory Integration Generator (MIG) wizard
• CORE Generator wizard
Viewing IP
The IP Symbol panel in the IP Customization GUI shows a schematic symbol view of the
IP.
• To display device resource statistics for the core logic, select the Information tab.
• To display the IP datasheet in a PDF viewer, click Data Sheet.
Instantiating IP
After you generate IP and add it to a project, the IP displays in the Sources view under the
IP folder.
Expanding the IP core in the Sources view displays the CORE Generator XCO file and
VHO/VEO file containing the instantiation template that you can copy and paste into your
design RTL using Copy and Paste in the Text Editor. Figure 3-14 shows instantiated IP RTL
code.
Generating IP
When you generate IP in PlanAhead, the Xilinx Synthesis Tool (XST) runs on the core and
creates the logic content based on the customization settings.
You can individually generate any IP core in the project, or let the software generator them
automatically when the full design is synthesized.
The IP can be generated by either of the following commands:
• In the Flow Navigator, click Synthesize. This will synthesize the entire design,
including the IP cores.
• In the Sources view, select the IP core, and click Generate IP.
After the IP is generated, a check mark appears on the IP source icon and the synthesized
netlist files display with the other IP files in the Sources view. In Figure 3-15:
• char_fifo IP has not yet been generated
• clk_core and samp_ram IPs are generated
Modifying IP
You can modify IP and regenerate it within PlanAhead if that IP was generated within
PlanAhead. To re-customize IP, select it in the Sources view and click Re-customize IP. The
CORE Generator interface opens to allow core modification.
The Add/Create Constraints dialog box lets you add additional existing UCF or NCF
constraint files to the project, or create new top-level UCF files to be added to the project.
When you add constraint files to a project, you must specify the constraint set into which
the constraint file are placed. By default the currently active constraint set is selected, but
you can specify a different constraint set or create a new one using the dropdown menu.
For more information on constraint sets, see Using Constraint Sets, page 70.
When you select the Create Constraint Set option in the Add/Create Constraints dialog
box, PlanAhead prompts you to enter name for the new constraint set, and provides a
button switch to make it the active constraint set. Then, you can use the Add Files button to
select UCF or NCF files to add files, or use the Create File to select a location and name for
the new UCF file.
Exporting Constraints
Often, designers use PlanAhead to create constraint files for use in scripting command line
design flows.
When you have a project open from which you would like to export constraints, click the
File > Export Constraints command.
The Project Settings General dialog box opens as shown in Figure 3-20.
Figure 3-21: General Project Settings and Language Options Dialog Box
The General Project Settings dialog box displays the following information:
• Name—Displays the project name.
• Top Module Name—Enter the top RTL module name of the design. You can enter a
lower-level module name to experiment with Synthesis on a specific module also.
• Language Options—Enter specific Verilog or VHDL options.
• Verilog Options—Specify Verilog Search Paths, Macro definitions, Uppercase
identifiers, and Verilog2001 language standard.
• VHDL Options—Specify VHDL Generic values.
• Top Library—Specify the top-level module library name.
• Loop Count—Specify the maximum loop iteration value. The default is 1000.
The Loop Count option is used during Elaboration, and not during Synthesis. For
Synthesis, specify the -loop_iteration_limit switch in the More Options
field of the Synthesis Settings dialog box. For more information on setting
Synthesis Options, see Chapter 6, “Synthesizing the Design.”
The Synthesis Project Settings dialog box contains the following information:
• Default Part—Displays the default target part. Select the browser button to invoke the
Part Selector dialog box to choose another part.
• Default Constraint Set—Select the constraint set to be used for the Run. This selection
has no effect for a Synthesis Run.
• Strategy—Select the strategy to use for the Run. PlanAhead includes a set of pre-
defined strategies, or you can create your own. For more information see the
Launching Runs on Remote Linux Hosts, page 268. When you select a strategy, the
options associated with it display in the lower part of the dialog box.
• Description—Enter any text description of the Run.
You can override Strategy options by selecting the option directives as shown in
Figure 3-22.
The Implementation Project Settings dialog box contains the following information:
• Default Part—Displays the default target part. Select the browser button to invoke the
Part Selector dialog box to choose another part.
• Default Constraint Set—Select the constraint set to be used for the Run.
• Strategy—Select the strategy to use for the Run. PlanAhead includes a set of pre-
defined strategies or you can create your own. For more information, see the
Launching Runs on Remote Linux Hosts, page 268. When you select a strategy, the
options associated with it display in the lower part of the dialog box.
• Description—Enter any text description of the Run.
You can override Strategy options by selecting the option directives as shown in the
previous figure.
2. In the Flow Navigator option, select the corresponding version of ISE or the Run script
format.
3. Copy the supplied PlanAhead Strategies to the User Defined Strategies area for
modification by using one of the following commands:
• The Create a copy of this strategy toolbar button, shown in Figure 3-26.
6. Modify command options by clicking in the command option area (to the right), and
selecting an option from the pulldown menu. Available command option settings
display in the popup menu shown in Figure 3-27.
For more information about configuring and launching Runs, refer to the Launching and
Managing Multiple Synthesis Runs, page 160.
The Project Summary displays design information. You can use the scroll bar or the
Collapse and Expand buttons to view or hide the data categories. Selecting anywhere in
the panel banner expands or collapses the view panel also.
Compilation Settings
The Compilation Settings shows the target part, and the strategy used for the active
Synthesis and Implementation Runs. Also, it shows the Fmax and utilization estimates
reported from Synthesis and the timing score and unroutes reported from Implementation.
Click the links to invoke the Project Settings dialog box in the selected location, which lets
you configure the Synthesis and Implementation Runs. Tool tips describe the button
actions.
Resources
The resource utilization for the target device displays graphically in the provided chart as
shown in Figure 3-30.
PlanAhead populates the Project Summary Resources at each stage of the design process.
The types of logic objects displayed varies as the design progresses through the design
stages. As the information becomes available, the tabs at the top of the view panel become
selectable.
• RTL Estimation—Provides estimates from the PlanAhead RTL design after the
Estimate Resources command has run.
• Synthesis Estimates—Extracts resource estimates from the XST Synthesis report.
• Netlist Estimation—Provides estimates from the PlanAhead Netlist Design after the
Estimate Resources command has run.
• Implemented Utilization—Extracts actual resource utilization from the ISE MAP
report.
In some cases, links display in the Resources panel to guide you through the step involved
to populate the Resources chart.
Timing
Once the design is implemented, the Timing pane of the Project Summary view provides a
summary of the overall timing results. A link to open the Timing Results view is available,
as shown in Figure 3-31.
PlanAhead populates the Project Summary timing after Implementation is complete. The
Timing Score, Minimum Period, Maximum Frequency and worst Failing Constraint for the
active run display, and a link is provided to open the Implemented Design.
The Flow Navigator appearance and the displayed view layout is determined by the type
of project you create. For more information on the PlanAhead project types, see Chapter 3,
“Working with Projects.”
The following sections describe the PlanAhead viewing environment.
1. Main Menu—Contains the available PlanAhead commands. The menus filter the
available commands based on project type and design status.
2. Main Toolbar—Contains commonly used commands and extends to include Design
specific commands.
3. Flow Navigator—Enables flow-like control over the design process. From the Flow
Navigator you can launch Synthesis, Implementation, and generate bitstream files as
well as open designs at each stage of the design process. This view expands as design
tasks are completed, and displays relevant commands for each design or project type.
4. Main Viewing Area—Displays the Project Manager, and any open design. When a
design is opened, you can switch between the I/O Planner and Design Planner view
layouts.
5. Project Status Bar—Shows project status and the actively-running commands. You
can cancel Synthesis, Implementation and generate bitstream commands from this
component.
6. Tcl Console and Messages Area—An expandable area that shows command status
and message logs.
7. Information Bar—Displays information about the project and the objects being
dragged over by the cursor.
Workspace Area
When you selecting a tab the view becomes active when the Message area displays.
• Double-click any of the violations to invoke the Text Editor; it opens with highlighted
violation lines of the RTL file.
• Expand or collapse the messages by toggling the tree widgets in the view or by
clicking the Expand All or Collapse All buttons.
• Toggle the Hide Warning messages buttons use the Show Find button to view
messages.
The output displays in a continuous scroll-able format and is not refreshed when new
commands are run.
You can use the Pause output button to scroll back or read reports while commands are
running.
The reports might have links to the offending objects or to Answer Records in the Xilinx
Customer Support database.
You can:
• Expand or collapse the message by toggling the tree widgets in the view or by clicking
the Expand All or Collapse All buttons
• Filter the displayed messages by toggling the Hide warning messages or Hide info
messages buttons or by using the Show Search button
• Consolidate the list by clicking the Group duplicate messages button
Figure 4-12: Color Bar Warning and Error Indicator in Tcl Console
Hold the cursor over one of the bar segments to display the messages in a tool tip.
You can double-click the color bar segment to auto-scroll the Tcl Console to the messages in
the selected segment.
Opening Views
From the Main Menu, select the Window menu for the commands to open most window
types. Select a window that is already open to make it the active window.
As certain commands are run, new views open to interact with the command or to display
results.
The Schematic view requires at least one object to be selected and is opened using the
popup menu Schematic command or the Schematic toolbar button.
The Properties view requires at least one object to be selected and is opened using the
popup menu Object_type Properties command.
Select New Device View or New Package View to open an additional view in the
Workspace.
Navigating Views
Each available view has a tab in the viewing area. You can activate a view by clicking on
the tabs. Some view types allow multiple tabs.
The active view displayed in any viewing area is toggled by using the tab interface at the
bottom of the view area. Figure 4-13 is an example of the Netlist view tab.
Floating Views
You can un-dock views, including the Workspace, from the display docking area so that it
“floats” and can be moved and sized independently. To float a window do one of the
following:
• Click the Float Frame button
• Select Float from the popup menu
When you activate the floating option, the view appears in a separate floating window. In
this case, windows obviously overlap. Once a window is floating you can move it by
dragging the view banner. You can move a floating window outside of the PlanAhead
main window. PlanAhead stores the default locations and sizes in which to display all
floating views in your saved layouts.
To open a new Device or Package view, select Window > New Device View or
Window > New Package View.
To open a Schematic view:
1. Select at least one object to display in schematic format.
2. Select the Schematic command:
- From the popup menu
- Press F4, or
- Click the Schematic toolbar button, shown in Figure 4-14
Each panel now acts as an independent Device view allowing multiple views to be docked
for viewing as shown in Figure 4-17.
You can open Multiple views of the same type, such as two Device views for viewing
different areas of the device or different zoom levels.
The World view reflects the zoom area and the selected objects for the active view for the
Schematic, Device, Package, and Hierarchy views.
A navigation rectangle displays the area that is visible in the active view. You can drag the
navigation rectangle to reposition the display area in the active view.
Selected Pblocks, instances, and I/O ports are highlighted in the World view for easier
location, as illustrated in Figure 4-19, page 96.
Any column in the table can be used as search filter criteria. Select the pulldown menu in
the Search field to select a column header to search. Figure 4-24, page 98 shows the search
pulldown menu.
Enter any text string and the list will adjust dynamically to list only those entries that
contain the string entered. Select the Show Search button again to remove the Search field
and sorting.
Sorting Columns
You can sort any table column by clicking in the column header. Clicking again will
perform a reverse sort. A visual indication of the sort order and direction displays in the
Column Header, as shown in Figure 4-25.
Organizing Columns
You can move, hide, and restore columns.
• To move a column, select it and drag it into a new location.
• To hide a column, select it and use the popup menu in the column header to select the
Hide This Column command.
The popup menu also enables quick view configuration for each column.
• Auto Resize Column commands adjust the width of the columns per the displayed
data.
• The Reset to Default command restores PlanAhead defaults.
These buttons become enabled only when certain data is selected or commands are active.
PlanAhead features are made available through these view-specific toolbar buttons so it is
beneficial to become familiar with them. These view-specific commands are covered in
more detail in the specific view sections of this document.
Selecting Objects
There are multiple methods of objects selection in the PlanAhead software. Click the object
to select it in the current view. When selected in any view, objects also become selected in
the other appropriate views.
To move objects, hold the left mouse down and drag it, release to drop it on a location. The
cursor changes to a hand symbol when the move mode is activated.
When objects overlap, PlanAhead uses a priority scheme where the smaller size objects are
selected. If objects become difficult to select in the Device view, use the Physical
Constraints or Netlist views to select them. Objects can always be selected from either of
these two views regardless of the Selection Rule setting in the PlanAhead Options dialog
box.
If you experience difficulty selecting the correct object, the Select commands in the popup
menu can be used to select a specific item within the stack of items under the cursor.
All objects that the rectangle surrounds or touches are listed in the Select Area dialog
box, with which you can filter selection by type shown in Figure 4-29.
2. Turn off the check box to filter Object types from selection.
3. Click OK to select all of the checked objects.
To sort elements, click on the column header to use as alpha-numeric sort criteria. Objects
can be sorted by Name, ID number, or Type by clicking on the banner of the desired sort
column. Selected items can be removed from the list by using the Unselect, Unselect All
or Unselect All Except command from the popup menu.
You can select groups of objects by using the Ctrl and Shift keys. The total number of
objects selected is displayed in the view banner as shown in Figure 4-31.
You can enable or disable automatic selection by clicking the Set column heading.
• Enabling a selection rule forces the PlanAhead software to select the other affiliated
“To” object types when the “From” object gets selected.
• Disabling the selection rule forces PlanAhead to select the “From” object only when it
gets selected.
The default selection rules enable PlanAhead to operate in the most efficient manner.
The Sources view displays the files that were added to the project listed categorically and
by-type. Design source types include: Verilog, VHDL, NGC/NGO, EDIF, and IP.
The constraints are in folders called constraint sets, and can include multiple UCF files.
Module-level NCF and Xilinx Netlist Constraints File (XNCF) format constraint files show
as design sources adjacent to their cores and are read-only. Refer to Adding and Managing
Constraints in Chapter 3 for more information about constraints.
The amount of logic object detail displayed is determined by the selected zoom level: the
more you increase the zoom level, the more logic object detail displays. The Device view
popup and toolbar menus contain self-explanatory zoom level commands.
The Device view has scroll bars and dynamic pan capabilities to pan the viewable area of
the device also.
When you drag the cursor over an object in the Device view, a tool tip identifies the object.
The Properties view displays object properties for selected sites or logic objects.
Use Edit > Find to search for specific logic object sites.
The Device view uses a dynamic cursor that changes appearance based on the activity
being performed. For example, if you attempt a logic resource assignment that is illegal,
the dynamic cursor changes so you can make adjustments. For more information, see
Understanding the Context Sensitive Cursor, page 100.
See Viewing Clock Region Resource Statistics, page 213 for more information about
displaying Clock region statistics.
Moving the cursor within the Package view shows the I/O pin coordinates actively on the
top and left sides of the view. Additional I/O pin and bank information displays in the
Information bar located at the bottom of the PlanAhead environment. The Package view
highlights the active object.
When you hold the cursor over the Package view it invokes a tool tip that displays the pin
information, as shown in Figure 4-38. You can:
• Drag ports and I/O buffer instances into the Package view for assignment and
reassign instances to other I/O pins within the Package view.
• View pins and I/O banks as follows:
- VCC and GND pins show as red and green square pins.
- Clock-capable pins display as hexagon pins.
- The colored areas between the pins display the I/O banks.
• Click the pins or bank to select them.
• Select I/O pins or banks to highlight them in the Device view. Pins or I/O banks that
you select in the Device view also highlight in the Package view.
• Display the differential pair pins in the Package view by toggling on the Show
Differential I/O Pairs toolbar button as shown in Figure 4-39, page 111.
You can set the Package view to appear from the top or bottom of the package by clicking
the Show Bottom/Top View toolbar button, shown in Figure 4-40.
The upper-left corner of the Package view contains several toolbar buttons.
The Schematic view displays the selected logic instances or nets. If only one instance is
selected, the module shows with all pins displayed as shown in Figure 4-42, page 112.
When you select objects in the Schematic view those objects display in all other views. If
you have opened an implemented design, the logic and paths display in the Device view.
Notice that no pins display for the upper levels of hierarchy in Figure 4-43. In most cases,
the lack of pins makes the Schematic view more readable.
You can:
• Individually expand or collapse module pins and logic.
• Selectively expand the logic either from individual pins, instances, or the entire logic
content inside or outside the module.
To expand module pins for a selected module, use the Toggle Autohide Pins command or
the Toggle Autohide Pins for selected instance toolbar button in the Schematic view,
which is shown in Figure 4-44.
Figure 4-44: Toggle Autohide Pins for Selected Instances Toolbar Button
Other expansion options exist to expand logic to the next set of flip-flops or to the I/Os.
If too much logic is selected for expansion, a dialog box opens that indicates the selected
logic is not be suitable for schematic viewing.
To view the logic expansion options, select a pin or an instance and select the Expand
Cone popup menu command to view the options.
Expand all logic inside Expands all logic inside selected instance.
selected instance
The commands are intended to display all logic associated within a level of hierarchy, as
shown in Figure 4-46, page 115 in which the Expand Inside command is used.
See Chapter 7, Netlist Analysis and Constraint Definition and Chapter 10, “Analyzing
Implementation Results,” for more information about setting the timing path logic.
Note: Occasionally, paths displayed from the Timing Reporter and Circuit Evaluation (TRACE) TWX
(an XML file) or TWR (a Text file) format timing reports are missing interconnect wires. This is
because the logic was optimized out of the path during ISE Implementation. The objects that display
in the Schematic view are all of the actual objects contained in the selected paths; however,
PlanAhead cannot interpolate the connectivity after objects have been optimized away and no longer
exist. You can use the Schematic view in conjunction with the Path Properties to trace the path
connectivity. Usually the schematic is drawn is such a way that it is easy to see the path direction. For
more information, see Analyzing Timing Results in Chapter 7.
Next object Reverts to the next selected objects (This key is only enabled after a Previous
object command).
Automatically update the Toggles the Properties view to auto-update as new objects are selected or
contents of this window remain static on the originally selected object.
when new objects are
selected
New Adds a new object. This option is only available for certain object types and
in specific view panes.
Delete Deletes an object from within one of the property tabs.This option is only
available for certain object types and in specific view panes.
You can assign the Primitives folder directly to a Pblock resulting in all primitives being
assigned.
Note: Netlist updates might require reassignment of the Primitives folder to the Pblock because
logic names might have changed during re-Synthesis.
When you select nets, they highlight in the Device view. Selecting a bus highlights all nets
contained within that bus. You can view nets in the Schematic view.
You can select nets for ChipScope tool debug testing by using the Add to ChipScope
Unassigned Nets command. See Connecting and Disconnecting Nets to Debug Cores in
Chapter 12.
Partition Modules
Modules that have been set as Partitions using the Set Partition popup menu command.
Only hierarchical instances display in the Hierarchy view. Primitive logic is grouped into
folders that are represented as sub-modules. Refer to Using the Netlist View, page 121 for
more information about primitive logic folders. The widths of the blocks in the Hierarchy
view are based on the relative FPGA resources, including LUTs, flip-flops, block RAMs,
and DSP48s.
When you select logic it is highlighted so you can see where critical logic resides in the
design. The module highlights proportionally to the amount of logic selected, as shown in
Figure 4-59.
When you double-click on a module in the Hierarchy view a sub-hierarchy for any sub-
modules displays also.
To select logic parent modules for Pblock assignment in this view, use the Select Primitive
Parents command.
The Port view lists port signal names, direction, package pin, bank, I/O Standard, Drive
strength, Diff pair partner, Slew type, voltage requirements and other signal information
for each I/O port.
Table values appear blank if they are default values, or with an asterisk (*) for non-default
values, and red when they are illegal or undefined values.
Cells with editable values can be directly edited in the I/O Ports view, either by entering
text or by selecting from drop-down menus.
Buses are in expandable folders that can be selected as one object for analysis,
configuration and assignment.
You can:
• Create I/O Ports manually, using the Create I/O Ports toolbar button.
• Select and group ports together into interfaces, using the Create I/O Port Interface
toolbar button or popup menu command You can select and place these interfaces as
one object within the I/O Planner environment.
• Open the Schematic viewer for selected I/O ports, by selecting the Schematic toolbar
button.
You can select ports and interfaces from the I/O Ports view and assign them using the I/O
Planner environment. See Using Tree Table Style Views, page 96 for more information
about using the tree table style views.
Device pin information such as I/O Bank number, Type, Differential pair partners, Site
Types, and Min/Max package delay are listed for each package pin.
Table values appear as follows:
• Gray for default values
• Black for non-default values
• Red for illegal values
Note: The unit of measurement for the Min/Max package trace delay in the Package Pins view is in
picoseconds (ps).
You can sort the information in the Package Pins view by clicking any of the column
headers. Clicking again reverses the sort order. To sort by a second column, press the
Ctrl key and click another column.
You can add as many sort criteria as necessary to refine the list order. Sorted results might
be more readable if you flatten the list of Package Pins using the Group by I/O Bank
toolbar button (shown in Figure 4-63, page 128).
Refer to the Using Tree Table Style Views, page 96 for more information.
Cells with editable values can be directly edited in the Package Pins view, either by
entering text or by selecting from drop-down menus.
The view displays the status and results of the design runs defined, and provides
commands to modify, import, launch, and manage the design runs. Also, this view is used
to manage and report Synthesis and Implementation runs. The view indicates the runs as
follows:
• Currently running with a green arrow icon.
• Completed runs have a blue check mark icon.
Run information displays as the commands are being run. PlanAhead can be closed
without affecting runs in progress. When you re-open a project, the run status is updated to
reflect the latest status, which displays in the Design Runs chart.
The columns used for tracking information are:
• Name—Displays run name.
• Part—Indicates the target part selected for the run.
• Constraint—Displays the constraint set used for the run.
• Strategy—Displays the strategy assigned to the Run. Strategies appearing with an
asterisk (*) indicate that the command option values in the strategy have been
overridden in the Run Properties Options tab.
• Status—Indicates run status or the command that is currently running.
• Progress—Indicates overall progress of the entire ISE command sequence from
ngdbuild through XDL. The progress bar is non-linear, in that some steps may take
considerably longer then others.
• Start—Indicates the time ISE started working on the design.
• Elapsed—Indicates the total elapsed time for all ISE commands run on the design.
• Device Utilization (for Synthesis runs only)—Indicates the resulting LUT utilization
for the run.
• Fmax (for Synthesis runs only)—Indicates the expected clock frequency for the run
from the XST Synthesis report.
• Timing Score (for Implementation runs only)—Indicates the current timing score on
the run in progress or after completion.
• Unrouted Nets (for Implementation runs only)—Indicates the current number of
unrouted nets on the run in progress or after completion.
• Description—Displays the description associated with the run. This description is set
initially to a strategy description when that strategy is applied to the run; however,
the description can be modified later.
The table is updated dynamically as the Run commands progress. Runs that are launched
outside of PlanAhead using the PlanAhead generated scripts cause the table to update
upon invoking PlanAhead.
Selecting a Theme
PlanAhead has default view settings for both light and dark background themes. To use
either, select the PlanAhead Light Theme or PlanAhead Dark Theme options in the
Theme pulldown menu.
These default options are defined in the planahead.ini file. For more information, see
Inputs to PlanAhead in Appendix A.
If you create your own theme, it is prudent to back-up the initialization file that contains
the custom settings. For detailed information about the default and custom initialization
files, see View Display Options File (planAhead.ini & theme_names.patheme), page 361.
Moving Views
Multiple views can share the space within the viewing area by displaying them together
either vertically or horizontally. Split viewing areas by clicking on a view tab and dragging
it into another viewing area.
An outline guides you to place the view at the correct position. You can watch the moving
window outline during the dragging process to determine the resulting window location
before you accept the placement.
To move a view to share the space in a viewing area, use the following actions:
1. Click the tab, for example, the Constraints tab.
2. Drag the tab to a location. The gray outline serves as a guide.
3. Release the tab at the location you want.
To restore the view to its original location, select Window > Undo Dragging, or repeat the
steps above to set the view back in place.
To move a view to a completely different docking area, such as moving the Constraints
view to the Properties view, drag the tab of the view you are moving to the banner of the
destination docking area.
The Shortcuts dialog box lets you create new, custom shortcut settings.
At the top, the available shortcut schemas lets you manage Shortcut schemas. Click the
Copy button to copy the PlanAhead Default schema to create a new schema.
You can activate any schema in the list by selecting it from the pulldown menu of available
schemas. You must first copy the PlanAhead Default schema to make any modifications.
The bottom portion of the Shortcuts dialog box has an area where you can make
modifications to shortcuts in the copied schema. You can search through the list of views
and select commands to enter new shortcuts as follows:
1. Select the Add Shortcut button and type in the new shortcut in the dialog box.
2. Click OK to accept the new shortcut.
You can filter the commands listed for shortcut assignment using the Filter field. Enter
any text string to filter the list of available commands. Also, you can use different
shortcuts for the same command in different views.
User-specific shortcut schemas are saved to one of the following directories:
• (Windows) C:\Documents and Settings\Username\Application
Data\HDI\shortcuts
• (Linux) ~/.HDI/shortcuts
3. To delete shortcuts, click the Remove button.
RTL Design
This chapter contains the following sections:
• Introduction
• Managing the Design Source Files
• Editing RTL Source Files
• Elaborating and Analyzing the RTL Design
• Running RTL DRCs
• RTL Rules: Power and Performance
Introduction
The PlanAhead™ software Project Manager environment lets you create and manage
Register Transfer Level (RTL) design files. Then, you can elaborate and analyze the RTL
design in the RTL Design environment. Included in PlanAhead is basic source file
management, a text editor, an RTL schematic viewer, a set of RTL Design Rule Checks
(DRCs), and a resource and power estimator.
Using the PlanAhead software you can then run logic Synthesis and Implementation. See
Chapter 6, “Synthesizing the Design,” and Chapter 9, Implementing the Design for more
information about running Synthesis and Implementation.
The search results display in the Find in Files Results view as a list of files that contain the
search string and the number of occurrences in each file.
You can select any occurrence in the list to load that file into the Text Editor and highlight
the string. Figure 5-3 shows an example of such a search.
.
You can use the Find command to search within a single open source file. When you select
this command, a Find bar appears at the bottom of the open source file in the editor. You
can enter a search string to locate the string in the file and, optionally, choose to highlight
all occurrences of the string in the open file. Figure 5-4 shows an example Find bar.
PlanAhead can provide resource estimation statistics based on the compiled RTL design.
To populate the resource statistics data in the Resource Estimation view, use one of the
following commands:
• In Flow Navigator under the RTL Design, click Resource Estimation.
• Select Tools > Resource Estimation.
The Resource Estimation view displays in the Workspace.
The resource types display based on the logic hierarchy of the design. You can expand the
logic tree using the view widgets to allow visibility into the logic hierarchy. Figure 5-7
shows an example of the Resource Estimation view.
You can select any level of logic hierarchy in the RTL Netlist view and analyze its hardware
resources.
Because the PlanAhead software obtains the resource utilization statistics from pre-
Synthesis design data, these statistics are an early estimation and can change after
Implementation.
The Confidence Level value, displayed in the Resource Estimation view, provides insight
into how accurate the resource estimation is likely to be, based on design characteristics
such as numbers of black boxes, bus widths and macro types.
Click the Confidence Level value link for details about the determining characteristics for
the design being analyzed.
Memory and primitive tables list all memories, their depth, bit width, number of ports,
and macros or primitives, broken down by bit width in the chosen level of the hierarchy.
The Resource Estimator provides information about hardware resources for an RTL design
without running Synthesis, and, consequently, with a much quicker run-time. The
accuracy is an average of +/-15%.
To save the Statistics report to an XML format (for parsing) or XLS format, click the
Export Statistics toolbar button in the Netlist Properties window.
In the Violations Properties view you can perform the following actions:
• Select:
- A violation to display information.
- The links to highlight the design objects in question.
- The Show Source popup command to highlight a line of RTL source.
• Click the:
- Hide Warning and Information Messages toolbar button to hide all warnings
and informational messages and view only errors.
- Hide Warning and Information Messages toolbar button again to re-display
errors and warnings. Figure 5-11 shows the button.
.
Power DRCs
Table 5-1: Power Rules
Rule Name Rule Abbrev Rule Intent Severity
Constantly RPRC A described RAM (either inferred or instantiated), which is constantly Warning
enabled enabled, was found in one or both ports. If it can be determined that this
synchronous RAM is not constantly accessed. Significant power reduction may be
RAM seen by describing the logic to disable the RAM unless it is being
accessed.
Inefficient RPRM A RAM in which there is an unconnected output port has been detected, Warning
dangling and the WRITE_MODE is set to a value other than NO_CHANGE. Modifying
BRAM port the description of the RAM in order to set unconnected output port
(WRITE_MODE set to NO_CHANGE) could save up to 10% of the
dissipated block RAM power.
Shallow RAM RPRS Virtex®-5 and Virtex-6 devices: For wide (over 18-bits) and shallow Warning
implemented in (64-bits or less) RAM, it is generally advantageous to choose SelectRAM
Block RAM (LUT-based RAM referred to as distributed RAM) whenever possible
unless the RAM is being used as a FIFO, in which case the cross-over
point becomes a depth of 32-bits or less. When building interfaces less
than 18-bits wide, the LUT-based SelectRAM could be a better choice for
depths up to 128-bits; however, generally past that, the dedicated block
RAM is a better choice for power.
Inefficient RPDS Small multipliers mapped to DSP or to other hard multipliers IP, such as Warning
mapping of MULT18X18, should be pushed to MSBs. The rest of the LSBs should be
small multiplier mapped to ground. In this way, the carry propagation is reduced to its
in DSP block minimum. Usual Implementation, especially when inferring the
multiplier, uses LSBs and sign extensions to map the MSBs.
Performance DRCs
Table 5-2: Performance Rules
Rule Name Rule Abbrev Rule Intent Severity
Inefficient RPWL Found instance name of type library_component_name that Warning
library element belongs to another FPGA family. This might result in suboptimal
instantiation performance. The ISE software might remap this element automatically
onto a similar element in the selected family. However, modifying the
source code to infer or instantiate native elements will take advantage of
any added or expanded functionality in the element. This may in turn
improve area utilization and performance.
Missing RPPR Found multiplier with unregistered outputs. You can improve the Warning
pipeline register multiplier clock-to-out performance by adding a level of registers. In
addition, for best results, avoid using asynchronous control signals on
these registers.
Found RAM/ROM with unregistered outputs. You can improve the
RAM/ROM clock-to-out performance by adding a level of registers. In
addition, for best results, avoid using asynchronous control signals on
these registers.
Inefficient RPIP Found register_name (file_name:line_number) register with Warning
pipeline register asynchronous control signals on input or output of multiply function.
Dedicated DSP hardware resources do not have asynchronous control
signals, such as preset or clear. The registers will not be mapped into the
dedicated hardware resources resulting in suboptimal use of the device.
Found Black RPBX Component/Module component/module_name description Warning
Box instance not unavailable during Synthesis (file_name:line). Paths to and from
belonging to this black box cannot be optimized. Synthesis tool utilization estimates
UNISIM library and mapping decisions could be negatively affected.
Found latch in RPLD Found latch description for signal signal_name Warning
design (file_name:line_num). Latches creates difficult to analyze timing
paths which require post Implementation simulations to ensure
implemented design match expected behavior.
Found RPCL Found combinatorial loop for signal signal_name Warning
combinatorial (file_name:line_number). Combinatorial loops are generated when
loop in design a cone of combinatorial logic uses its outputs to feedback as partial input
to the same cone of logic. The total combinatorial delay from source to
destination should be increased by the feedback path delay. This type of
structure could be required from the design expected behavior or might
be unintentional.
Estimating Power
PlanAhead provides early power estimation based on the design resources.
1. Select one of the following to run the Power Estimation:
- In Flow Navigator > RTL Design, click Power Estimation.
- Select Tools > Power Estimation.
The Power Estimation dialog box opens, as shown in Figure 5-12.
A Power Summary displays along with an expandable power consumption graph, based
on the design logic hierarchy.
You can expand the logic tree using the view widgets to allow visibility into the logic
hierarchy. Figure 5-13 shows the Power Estimation view.
You can expand and select any level of logic hierarchy and analyze its power consumption
and hardware resources.
Running Synthesis
When you run Synthesis in PlanAhead you have the ability to set Synthesis options, run
Synthesis, and view the outcome of the run.
In the Project Settings dialog box, click Synthesis, if it is not already selected, as shown in
Figure 6-2, page 155.
The Synthesis Settings dialog box lets you set XST options to use in the next Synthesis
attempt. The options are:
• Strategy—Select an existing Strategy to use for the Synthesis run. For more
information on Strategies, see Creating Synthesis and Implementation Strategies in
Chapter 3.
• Description—Displays the Strategy description. This field is editable for user-defined
strategies only.
• XST options—Configure any XST option. You can find a brief description of each
option and its use in the lower dialog box pane. An asterisk (*) next to an option name
indicates that the value is currently set to a non-default value.
Note: Modifications to these options are not preserved if you do not run Synthesis prior to exiting
PlanAhead. If Synthesis results exist in the project, the Project Settings inherit the settings of the
active Synthesis run. If no Synthesis run exists in the project, the PlanAhead restores the defaults.
Launching Synthesis
You can launch Synthesis Runs from the Flow Navigator.
The PlanAhead software uses the current Synthesis Project Settings to launch the run.
The Status Bar indicates that Synthesis is running, and the Compilation Message views
begin to display the active command status.
• Launch Options—Select additional launch options. Figure 6-7 shows the Specify
Launch Options dialog box.
This behavior reliably preserves the relative file structure between referenced source
files, and also reduces unnecessary disk space usage.
Note: This feature applies to RTL sources only. Netlist sources, IP, and constraint files are
always copied into the Implementation run directory.
• Click Run to launch the run with the current settings.
• Click Save to save the settings, but not start the run.
1. In the Synthesis Completed dialog box, select the option that matches how you want
to proceed. The options are as follows:
- Implement—Launches Implementation with the current Implementation Project
Settings. For more information on the Implementation process see Chapter 9,
“Implementing the Design.”
- Open Netlist Design—Imports the netlist, active constraint set, and target part
into the PlanAhead design analysis and floorplanning environment so you can
perform I/O pin planning, design analysis, and floorplanning. For more
information, see Netlist Analysis and Constraint Definition in Chapter 7.
- View Reports—Opens the Reports view so you can select and view the XST
Report file. For more information on report analysis, see Viewing Report Files,
page 254.
2. Click OK or Cancel.
Overview
This chapter describes the design analysis and constraint definition features available in
the PlanAhead™ software. The described features are typically performed by opening a
netlist design and before running Implementation. However, many of the analysis and
constraints features described in this section are also available for implemented designs.
In Netlist Design environment, you can perform the following activities:
• Analyze various aspects of the design
• Validate resource and timing estimates
• Run DRCs
• Define physical and timing constraints for the Xilinx® ISE® Design Suite
Several PlanAhead design tasks must be performed in the Netlist Design environment,
such as:
• Inserting ChipScope™ Pro Analyzer debug cores
• Defining partitions for Design Preservation and Partial Reconfiguration
Chapter 5, “RTL Design,” and Chapter 6, “Synthesizing the Design,” describe additional
analysis features. You can use most of these features after implementing the design also.
Chapter 10, “Analyzing Implementation Results,” describes the range of features useful
for analyzing an implemented design.
You can open other views, if needed, including the Package view. For more information
about using specific views, refer to Using Common PlanAhead Views, page 104.
2. If the Pblock Properties do not display, right-click ROOT or Pblock, and select Pblock
Properties from the popup menu.
For more information, refer to Viewing Pblock Properties in Chapter 11.
The Export Netlist Statistics dialog box opens, as shown in Figure 7-8, page 167.
The Net bundles indicate the heaviest connectivity requirements between the modules.
When you select a Net, bundle information about the net content displays in the Net
Bundle Properties view.
The color and line thickness of the Net bundles can be configured depending on the
number of signals they contain. The Tools > Options > General dialog box contains
connectivity display options. One option is to display the Net Bundles as a Mesh or in a
Tree pattern.
You can also traverse the hierarchy and create submodules for the larger top-level
instances to gain more detailed granularity.
This top-level floorplan can be an indicator of the I/O pinout configuration quality, and
can help identify potential routing congestion issues.
Also, examining resource statistics and clock requirements for each module can aid in
understanding potential placement issues.
Refer to the Floorplanning Methodology Guide (UG633) for more information.
A new row of search criteria fields display in the Find dialog box. An AND/OR field
appears to define the additional search criteria. Setting it to AND or OR defines an
additional search filter as shown in Figure 7-12.
4. Click the More or Fewer button to add or remove search criteria rows.
5. Click OK to perform the search.
The combined search results display in the Find Results view.
The PlanAhead software creates a new Find Results tab each time you run the Find
command, which is named according to the Search criteria and number of objects found.
You can select objects directly from the Find Results dialog box, and when you select
objects from the list of found objects those objects are selected in other PlanAhead views.
You can select multiple elements by using the Shift or Ctrl keys. Additional commands are
available using the popup menu. You can sort by:
• Clicking any of the column headers
• Pressing the Ctrl key and clicking a second column header
To close the Find Results views, click the X icon in a Find Results tab.
For more information about the commands and features available in the Text Editor, refer
to Using the Text Editor, page 138.
The dialog boxes for each constraint type are too numerous to describe here. Use the
correct syntax when defining constraints values. Refer to the Xilinx Constraints Guide,
(UG625), for more information on constraints and constraints syntax.
When you make changes, click Apply to accept the changes, or click Cancel to deny the
changes.
Note: You must click the Apply button to initiate changes to constraints values.
The New Timing Constraint dialog box opens as shown in Figure 7-20.
The Report Timing dialog box opens and enables you customize the timing report, as
shown in Figure 7-22.
• Objects—The field is used to select objects based on dialog box selection. The
following options are available:
- Include Leaf Pins—An SDC syntax option that specifies that the search string
should only match pins components, and not match pins across hierarchical
boundaries.
- Select Object Dialog Box—An SDC syntax option that launches an additional
object selection dialog box where you can generate recursive search expressions.
- Filter Matching Name with Expression—An SDC syntax option that specifies
the -filter command.
• Ignore Command Errors—Suppresses warning messages generated during Tcl
command processing of the timing report.
• Find Results—Contains the results of the object search.
• Selected Name—Contains the subset of the search result objects that are chosen for
the Points.
• Command—Contains the Tcl command used to represent the selected objects.
- Slow corner—Selects the delay types used for the slow corner analysis. The
available values are:
- None—Specifies that no delays are used when generating minimum timing
analysis.
- Max—Specifies that maximum delays are used for the clock and data paths
during setup and hold analysis.
- Min—Specifies that minimum delays are used for the clock and data paths
during setup and hold analysis.
- Min_Max—Uses a combination of minimum and maximum delays for the
clock and data paths during setup and hold analysis.
- Fast Corner—Selects the delay types used for the fast corner analysis. The values
are:
- None—Specifies that no delays will be used in the generation of minimum
timing analysis.
- Max—Uses maximum delays for the clock and data paths during setup and
hold analysis.
- Min—Uses minimum delays for the clock and data paths during setup and
hold analysis.
- Min_Max—Uses a combination of minimum and maximum delays for the
clock and data paths during setup and hold analysis.
- Enable timing pessimism removal—Removes the skew delay generated by the
common clock path between source and destination registers when modeling on-
chip delay variation.
You can examine, sort, and select specific paths and instances in the Timing Results
interface.
In the Timing Results view, the following information displays for each path:
• Constraint Name—Displays the constraint name for the paths listed.
- Name—Shows a sequential number with which to sort back to the original order.
- Type—Displays whether the path is Setup or Hold related.
- Slack—Displays the total positive or negative slack on the path.
- From—Displays the path source pin.
- To—Displays the paths destination pin.
- Total Delay—Lists the total estimated delay on the path.
- Logic Delay—Lists the delay attributed to logic delay only.
- Net%—Displays the percentage of the delay attributed to routing interconnect.
- Stages—Displays the total number of instances on the path including the source
and destination which both contribute to the overall delay. This may be different
than the method used to calculate levels of logic in ISE.
- Source Clock—Displays the source clock name.
- Destination Clock—Displays the destination clock name.
Note: In the PlanAhead Timing Analysis, a carry chain interconnect is counted as individual stages
of logic.
Press Ctrl and click the column header again to remove a sort from a column.
The Group by Constraint toolbar button toggles between a categorized list of constraints
and a flattened list of paths.
The Generate Slack Histogram dialog box opens, as shown in Figure 7-33, page 193,
and you can customize the slack histogram.
• Slack Range—Filters the endpoints based on the slack value. By filtering the
endpoints based on the slack value falling within a specific range, a histogram can be
generated to focused in on the paths of interest. The fields in this area are as follows:
- Greater Than—Specifies the maximum slack value of slack that a path may have
to be included in the histogram.
- Less Than—Specifies the minimum slack value of slack that a path may have to
be included in the histogram.
• Bin Display—Allows further customization of the histogram. This field contains the
following values:
- Number of Bins—Specifies the number of bins in the histogram. By selecting a
smaller number of bins, the histogram provides a general view of the timing
performance of the design. Histograms with larger number of bins are best used
within a slack range to focus in on the performance of a specific range of delays.
- Significant Digits—Specifies the number of significant digits that will be used in
the histogram. By default, this value is set to 3.
- Plot on Log10 scale—Specifies whether to draw the resulting slack histogram
with the Y axis on a logarithmic or linear scale. Log scale is useful when there are
delay bins that are very small relative to other larger bins, and consequently
difficult to see clearly with a linear scale. This setting can be controlled through
the toolbar after the histogram has been drawn also.
You can change the scale of the Y-axis to be either Logarithmic or Linear using the Plot
histogram on log10 scale toolbar button, shown in Figure 7-37.
.
Figure 7-38, page 198 displays an example of the slack histogram graph view using a
logarithmic scale.
Selecting a Pblock selects all of the assigned logic for that Pblock.
Pblocks with instances assigned and with no rectangles defined in the Device view appear
as blue two-dimensional squares with a yellow center as shown in the following snippet.
Pblocks with no instances assigned with no rectangles defined appear as blue two-
dimensional squares with a blue P in the center as shown in the following snippet.
When RPMs are assigned to Pblocks, the Pblock Properties view displays RPM size and
utilization statistics information as shown in Figure 7-41.
2. View or edit the Results Name field. Enter a name for the results for a particular run for
easier identification during debug in the DRC Violations browser.
3. Enter an Output File name to create a report text file.
4. In the Rules to Check group box, use the check boxes to select the design rules to
check for each design object. For a description of each rule, see Running Netlist and
Constraint DRCs, page 202.
- Expand the hierarchy using the Expand All toolbar buttons, or click the + next to
each category or design object.
- Click the check box next to the design object to run all DRCs.
- Click individual DRCs to run individual ones.
- Click Select All to run a complete DRC.
5. Click OK to invoke the selected DRC checks.
Select an error in the DRC Results view list, and the specific violation information displays
in the Properties view.
Select a blue link in the Properties view to highlight the violating design elements in the
Device view, Netlist view, and Schematic view as shown in the preceding figure.
Violations no longer display in the DRC Results view after you fix the error condition and
the re-run the DRC check.
Each time you run the Run DRC command and the DRCs detect errors, PlanAhead adds a
new results tab to the DRC Results view, and creates a separate results output file in the
PlanAhead invocation directory.
Bank DRC
Table 7-2: DCI Cascade DRC
Rule Name Rule Abbrev Rule Intent Severity
DCI Cascade DCIC Checks that DCI cascade constraint is Error
Checks legal.
For a full list of Bank IO standard rules see Bank I/O Standard DRCs in Chapter 8.
DCI DRCs
Table 7-4: DCI DRCs
Rule Name Rule Abbrev Rule Intent Severity
DCI Cascade DCICPC Warns the user to load the UCF file into Warning
with part other compatible parts, and to run DRC
compatibility manually to ensure the DCI cascades
are valid.
DCI check for DCICIOSTD Ensures that there are no conflicts Error
I/O standard related to Vcc and DCI termination of
legality I/O standards used within the DCI
Cascade.
ClkBuf DRCs
Table 7-5: IDelay Control DRCs
Rule Name Rule Abbrev Rule Intent Severity
BufR & BufIO BUFRIOC Checks that BUFR and BUFIO driven Error
Locations by the same regional clock terminal are
placed at mutually route-able locations.
See Global Clock DRCs in Chapter 8 for a full list of Global clock rules.
DSP48 DRCs
Table 7-6: DSP48 DRCs
Rule Name Rule Abbrev Rule Intent Severity
DSP output DPOR DSP48 has a register on the output Information
registers side; to use this register the register
should be synchronously controlled.
(Virtex-4 only)
DSP input DPIR DSP48 has a register on the input side; Information
registers to use this register the register should
be synchronously controlled.
(Virtex-4 only)
RAMB16 DRC
Table 7-7: RAMB16 DRC
Rule Name Rule Abbrev Rule Intent Severity
RAMB16 output RBOR RAMB16 has a register on the output Information
registers side; to use this register, the register
should be synchronously controlled.
(Virtex-4 only)
Netlist DRC
Table 7-8: Net DRC
Rule Name Rule Abbrev Rule Intent Severity
Driverless Nets NDRV Checks that each net has a proper Warning
driver pin.
Instance DRCs
Table 7-9: Instance DRCs
Rule Name Rule Abbrev Rule Intent Severity
Black Box INBB Checks that there is no blackbox Warning
Instances (undefined logics in the netlist).
Mismatching ULMN Detects mismatching logic module Error
Block interfaces in the netlist.
Mismatching ULMP Detects mismatching logic module Error
Pin pins in the netlist.
Mismatching ULMA Detects mismatching logic attributes Error
Attribute in the netlist.
Each I/O placement mode offers a different assignment method for the I/O ports to be
assigned to pins. The cursor tool tip provides information about the number of ports being
placed.
The I/O placement mode remains active until all of the selected I/O ports are placed or
until you press the Esc key. For more information, see Disabling or Enabling Interactive
Design Rule Checking, page 226.
The Tools > Autoplace I/O Ports command places the I/Os or any selected portion of the
I/Os automatically. The command obeys I/O bank rules, differential pair rules, and global
clock pins, and places as many of the I/O Ports as possible.This functionality is available
for certain device architectures only and you must have a synthesized netlist in order for
all available rules to be applied. See Automatically Assigning I/O Ports, page 230.
The PlanAhead software attempts to maintain correct assignment rules. Differential pair
ports are assigned into proper pin pairs. Also, interactive and batch DRCs are used to help
ensure legal I/O placement. See Validating I/O and Clock Logic Placement, page 232.
The following references in Chapter 4, “Using the Viewing Environment,”apply to the I/O
Planner environment:
• Using the Device View, page 106
• Using the I/O Ports View, page 125
• Using the Package Pins View, page 127
• Using the Design Runs View, page 128
Figure 8-2: Splitting the Workspace to Display Package and Device Views
The Type column identifies multi-function types of pins. Other columns contain
information about logic or configuration modes involving multi-function type pins.
If your design contains Gigabit Transceivers (GTs), Memory controllers, or PCI logic,
information appears in this table that identifies conflicting multi-function pins.
Use the Set Configuration Modes command can to select the required device configuration
modes. Many of these configuration modes use multi-function pins. For more information,
see Setting Device Configuration Modes, page 215.
This feature supports alternate parts available in the same package only.
2. Select any number of alternate parts. The number of available Package Pins for
placement diminishes as more parts are selected.
PlanAhead automatically prohibits signals from being assigned to any unbonded pins in
the selected alternate devices. A dialog box displays showing the number of prohibited
package pins. These package pins receive PROHIBIT constraints.
You can view Prohibits in the Package, Package Pins, and Device views also. You can view
and manage alternate parts defined in the Floorplan Properties view under the Part
Compatible tab.
Note: The Set Part Compatibility command supports Virtex®-5, Virtex-6 and Spartan®-6 parts only.
Note: If you are defining an alternate compatible part for a Spartan-6 LX25 or LX25T device, pins
that are bonded will be prohibited because of differences in the clocking topology between this device
and alternate compatible parts in the same package. Refer to AR 34885 for more information.
2. Select the CSV File option, and use the browse button to select the CSV file to import.
The CSV file format is shown in Figure 8-11.
CSV Columns
CSV is a standard file format used by FPGA and board designers to exchange information
about device pins and pinout.
The CSV columns are:
• I/O Bank—The I/O Bank in which the pin is located. The software fills in this field for
all pins in the device. Values are a number or blank. This is not required in the input
CSV file.
• Pin Number—The name (or location) of the package pin. The software writes this out
for all pins in the device. This is not required in the input file. If used for input, it is
used to define placement. Values are legal pins in the device.
• IOB Alias—An alternate part name for the package pin. This field is specified by the
software, and is unused if specified in the input CSV file.
• Site Type—The pin name from the device data sheet. This field is specified by the
software, and is unused if specified in the input CSV file.
• Min/Max Trace Delay—The distance between the pad site of the die and the ball on the
package, in picoseconds.
This is specified by the tool to help the board engineer match trace delays. The Trace
Delay fields are in the output file only. They are not expected in the input file.
• Prohibit—Certain sites can be prohibited for many reasons to prevent user I/O from
being added to the site. Prohibits ease board layout issues, reduce cross-talk between
signals, and ensure that a pinout works between multiple FPGAs in the same
package. In the UCF this is represented by a CONFIG PROHIBIT constraint. Values are
TRUE or a blank field; leave this field blank when the Pin Number is left blank.
• Interface—An optional user-specified grouping for an arbitrary set of user I/O. As an
example, this field provides a means to specify a relationship for the data, address,
and enable signals for a memory interface. Values are a text string or blank.
• Signal Name—The name of the User I/O in the FPGA design. Values are a string or
blank for an unassigned Package Pin.
• Direction—The direction of the signal. Values are IN, OUT, INOUT, or blank when a
user I/O is not assigned to the site.
• DiffPair Type—Instructs the software about which pin is the N side of a differential
pair, and which pin is the P side. This is used for differential signals only.
The software uses this column instead of a naming convention to determine which
pin is the N side of the pair, and which pin is the P side.
Values are P, N, or blank when a user I/O is not assigned to the site.
• DiffPair Signal—Specifies the name of the other pin in the differential pair. Values are
the name of the user I/O or blank when unused.
• I/O Standard—I/O standard for a specific user I/O. When this field is blank for a user
I/O, the software uses the appropriate device defaults. Values are a legal I/O
standard for the user I/O in the device or blank.
• Drive—Drive strength of the I/O standard for a specific user I/O. Not all I/O
standards accept a drive strength. If this field is blank the tools will use the default.
Values are a number or blank.
• Slew Rate—Slew rate of the I/O standard for a specific user I/O. Not all I/O
standards accept a slew rate. If this field is blank the tools will use the default. Values
are FAST and SLOW.
• Phase—Specifies the phase of an I/O relative to the phase of other I/O in the bank in
cases of a synchronous phase offset.
• OFFCHIP_TERM—Specifies the external board level termination of the I/O. This is
used for SSN calculations. If the field is left blank, PlanAhead uses the expected
terminations in the SSN calculations and shows this expected termination by default
in the SSN report and I/O Ports table. The expected terminations, as well as the
corresponding shortened names that display in PlanAhead, can be found in the
Spartan-6 SelectI/O User Guide (UG381).
• OUT_TERM—Defines the optional OUT_TERM driver impedance attributes for
Spartan-6. This is most commonly left blank and is not yet supported for production
devices. Using OUT_TERM overrides the SLEW and DRIVE STRENGTH attributes
and is not supported in SSN calculations.
You can attach other information also. The software will add any other fields with user-
defined values to the set of user-defined columns.
2. View and edit the options in the Create I/O Ports dialog box:
- Name—Enter the name of the desired port or bus to create.
- Direction—Select the port direction.
- Diff Pair—Define differential pair signals or busses.
- Create Bus—Enter bus range for bus creation.
- Configure
- I/O Standard—Select the I/O Standard constraint.
- Drive Strength—Select the Drive Strength value.
- Slew Type—Select the Slew Type value.
- Pull Type—Select the Pull Type value.
- Phase—Enter a phase group or select an existing phase group. A phase group
is a logical grouping of ports that is used in Simultaneous Switching Noise
(SSN) calculations to indicate that the set of ports share the same frequency
and phase. For more information on using this option, see Defining the I/O
Port Switching Phase Groups in SSN, page 243.
Refer to Xilinx® device documentation for information regarding voltage capabilities of
the device.
3. View and edit the definable options in the Configure I/O Ports dialog box:
- I/O Standard—Select the I/O Standard constraint. You can set all I/O Standards
on any I/O regardless of whether the tool has awareness of differential pairs,
although this might result in DRC errors.
- Drive Strength—Select the Drive Strength value.
- Slew Type—Select the Slew Type value.
- Pull Type—Select the Pull Type value.
- Phase—Enter a phase group or select an existing phase group.
The two I/O Ports display in the dialog box with initial Positive End and Negative End
definitions.
• To reverse the Positive End and Negative End signals, click Swap.
• To remove the differential pair definition on any differential pin pair, select the Split
Diff Pair popup menu command.
As you select DCI cascades in the Physical Constraints view, PlanAhead also selects the
associated I/O banks.
The group of I/O ports is attached to the cursor when it is dragged over a package pin
or I/O pad. A tool tip displays how many pins can be placed in the selected I/O bank.
3. Click on a pin or pad to assign the selected I/O ports.Figure 8-21 shows an I/O pad.
4. If more I/O ports are selected than will fit in the I/O bank, the command is continued.
The cursor drags the remaining I/O ports to the next selected I/O bank, and so on
until all of the I/O ports are placed, or until you press the Esc key.
- Moving the cursor within the Package view actively displays the I/O pin
coordinates on the top and left sides of the view.
- Additional I/O pin and bank information displays in the Status Bar located at the
bottom of the PlanAhead Environment.
- The active object being reported is highlighted in the Package view.
- Holding the cursor over the Package view invokes a tool tip that displays the pin
information.
Ports are assigned in the order they appear in the I/O Ports view. The assignment order
can be adjusted by applying sorting techniques in the I/O Ports view prior to assignment.
The assignment order is driven from the initial Pin that is selected for I/O bank assignment
also. Selecting a pin at one end of an I/O Bank results in a continuous bus assignment
across the I/O bank.
The PlanAhead software also keeps track of PCB routing concerns for buses. Pin ordering
during assignment attempts to keep the bus bits vectored within the assignment area. You
can customize assignment patterns to address other bus routing concerns.
The cursor turns into a cross symbol which indicates that you can define a rectangle for
port placement.
3. In either the Package view or the Device view, draw a rectangle to define the
assignment area, as shown in Figure 8-23.
4. If you select more I/O Ports than fit in the defined area, the command is continued.
The cursor continues to display as a cross to draw another area to place the remaining
I/O ports until all of the I/O ports are placed, or until you press the Esc key.
Ports are assigned in the order that they appear in the I/O Ports view. You can adjust the
assignment order by applying sorting techniques in the I/O Ports view prior to
assignment.
The direction in which you draw the rectangle dictates the I/O ports assignment order.
I/O ports are assigned from the inside pin of the first rectangle coordinate selected.
Creative definition of the area rectangles can provide very useful pinout configurations
from a PCB routing perspective.
The first I/O port in the group is attached to the cursor when you move it over a
package pin or I/O pad. A tool tip displays the I/O port and package pin names.
3. To assign an I/O port, click a pin or a pad.
Figure 8-25 shows a sequential I/O port placement.
4. If more I/O ports are selected, the command is continued. The cursor drags the next
I/O ports, and so on until all of the I/O ports are placed or until you press the Esc key.
PlanAhead assigns ports in the order that they appear in the I/O Ports view. You can adjust
the assignment order by applying sorting techniques in the I/O Ports view prior to
assignment.
5. Select the I/O ports to place, click Next, and then Finish in the Summary page.
Figure 8-29: Run DRC Dialog Box: I/O Pin and Clock DRC Rules
2. View or edit the Results Name field. Enter a name for the results for a particular run for
easier identification during debug in the DRC Violations browser. The output file
name matches the entered name.
3. In the Rules to Check group box, use the check boxes to select the design rules to check
for each design object. For information about each rule, see I/O Port and Clock Logic
DRC Rule Descriptions, page 235.
- Expand the hierarchy using the Expand All toolbar buttons, or click the + next to
each category or design object.
- Click the check box next to design object if you want to run all DRCs.
- Select individual DRCs, or click All Rules to run a complete DRC (all rules for all
design objects).
4. Click OK to invoke the selected DRC checks.
In the DRC Results view, the software expands each violation as follows:
• Errors display a red icon.
• Warnings display an amber icon.
• Informational messages display a yellow icon.
When you select an error in the DRC Results view list, the specific violation information
displays in the Properties view.
When you select a blue hyperlink in the Properties view, it highlights the violating design
elements in the Device view, Netlist view and Schematic view.
Violations display in the DRC Results view until the error condition is rectified and DRC is
re-run.
Each time you invoke the Run DRC command and DRCs detects errors, PlanAhead adds a
new results tab to the DRC Results view and creates a separate results output file in the
PlanAhead invocation directory.
IOB DRCs
Table 8-2 lists the IOB DRCs, abbreviation, intent, and severity.
2. Optionally, enter a name in the Results Name field to identify the results in the SSN
Results view.
3. Optionally, click Export to File, and enter an output file name in the Output File field
and browse to select a location to write an external CSV format report file.
4. Click OK.
The SSN results are relative to the state of the design when the SSN Analysis is run. It is not
a dynamic report.
3. In the Configure Ports dialog box, ensure the I/O Standard is correct.
4. If the port(s) are in-phase, leave the Phase as default, or enter a unique phase, such as
180.
5. Click OK.
6. Once the appropriate phase groups are assigned, rerun the SSN analysis.
Note: Asynchronous groups should not be treated as separate synchronous phases, as it is
possible for them to switch simultaneously.
The Output File field can be used to specify a report file name and location to write to disk.
Tool tips are provided when dragging the cursor over each of the entry fields indicating
what values to enter.
Notice that the report lists allowable loading, utilization, and status for I/O banks and
neighboring pairs.
Overview
The PlanAhead™ software includes a Synthesis and Implementation environment that
facilities a push button flow with single Synthesis and Implementation attempts or Runs.
PlanAhead manages the Run data automatically, allowing repeated Run attempts with
varying Register Transfer Level (RTL) source versions, Synthesis, or Implementation
options or constraints.
Also, PlanAhead allows multiple Synthesis and Implementation Runs using different
software command options, and timing or physical constraints. You can queue the
Synthesis and Implementation Runs to launch sequentially or simultaneously with multi-
processor machines. Synthesis Runs use Xilinx® Synthesis Technology (XST).
You can create and save Strategies, which are sets of option configurations for each
Implementation command, that are then applied to Runs for Synthesis or Implementation
using Xilinx ISE® Design Suite tools. For more information about Strategies, see Creating
Synthesis and Implementation Strategies in Chapter 3.
Running Implementation
When you run Implementation in PlanAhead you have the ability to set Implementation
options, run Implementation, and view the results of the Run.
In the Project Settings dialog box, select Implementation, if it is not already selected, as
shown in Figure 9-2.
.
The Implementation Project Settings dialog box contains the options to set ISE command
options in the next Implementation attempt as follows:
• Default Part—Select the target device to use for the Synthesis Run.
• Default Constraint Set—Select the constraint set to use for the Synthesis Run.
• Strategy—Select an existing Strategy to use for the Synthesis Run. For more
information on Strategies, see Creating Synthesis and Implementation Strategies,
page 77.
• Description—Displays the description for the selected Strategy. This field is editable
for user-defined strategies only.
• ISE options—Configure any ISE option. Use the More Options field to specify options
that are not listed. You can find a brief description of each option and what it is used
for in the lower dialog pane. An asterisk (*) next to an option name indicates that the
value is currently set to a non-default value.
Note: If you exit PlanAhead before Running the modified Implementation Run, the options are not
preserved. If Implementation results exist in the project, the project settings are inherited when you
open the project. If no Implementation Run exists in the project, the PlanAhead uses the default
options.
Launching Implementation
You can launch and configure Implementation Runs as described in the following
subsections.
The current Implementation project Settings are used to launch the Run.
• Launch Options—Select additional launch options. Figure 9-7 shows the Specify
Launch Options dialog box.
Cancelling a Run
You can stop the Run by clicking the Cancel button in the Project Status Display, shown in
Figure 9-8.
As you run the Elaborate, Synthesize, Implement, and Generate Bitstream commands, the
Project Status Bar changes to indicate either a successful or failed attempt. Failures are
displayed with red text.
If source files change, the project can be marked Out of Date if Synthesis or Implementation
is complete as shown in Figure 9-11. The Status Bar indicates an Out-of-Date Status. You
can select the more link to display the reason.
Select any available report files to view it in the Workspace, shown in Figure 9-14,
page 255.
The Group duplicate messages button flattens the list and groups similar messages
together, shown in Figure 9-15, page 256.
Select any message and use the Search for Answer Record popup menu command to
search the Xilinx Customer Support database for related answer records.
The Project Summary displays design information. You can use the scroll bar or the
Collapse and Expand buttons to view or hide the data categories. Selecting anywhere in
the panel banner expands or collapses the view panel also.
Selecting the Edit link invokes the Project Settings dialog box. Refer to Setting General
PlanAhead Options, page 135 for more information on Project Settings.
Figure 9-18: Resource Estimates in the Project Summary View - Graph View
Figure 9-19: Resource Estimates in the Project Summary View - Table View
PlanAhead populates the Project Summary Resources at each stage of the design process.
The types of logic objects displayed varies as the design progresses through the design
stages. As the information becomes available, the tabs at the top of the view panel become
selectable. Resources, page 81 describes the resource options.
In some cases, links display in the Resources panel to guide you through the step involved
to populate the Resources chart.
PlanAhead populates the Project Summary Timing after Implementation is complete. The
Timing Score, Minimum Period, Maximum Frequency and worst Failing Constraint for the
active Run display, and a link is provided to open the Implemented Design.
1. In the Implementation Completed dialog box, select the option that matches how you
want to proceed:
- Open Implemented Design—Imports the netlist, active constraint set, ISE
placement and timing results, and the target part into the PlanAhead design
analysis and floorplanning environment so you can perform design analysis and
floorplanning. See Chapter 10, “Analyzing Implementation Results,” for more
information.
- Generate Bitstream—Launches the Bitgen Command Settings and Run dialog
box. See Chapter 12, Generating Bitstream Files for more information.
- View Reports—Opens the Reports view for you to select and view ISE Report
files. See Chapter 9, Viewing Report Files for more information.
2. Click OK to take the selected action.
- In the Flow Navigator, click Create Multiple Runs from the Synthesize or
Implement pulldown menu.
Figure 9-22 shows both options.
Figure 9-22: Create Multiple Runs Command - From Synthesis and Implement
Figure 9-23: Create Multiple Runs: Set Up Implementation Runs Dialog Box
- For Implementation Runs, select a Synthesis Run, Constraints Set, and Part to use
for the Runs.
- For Synthesis Runs, select a Constraint Set and Part to use for the Runs.
3. If you are running Synthesis, click Next to bring up the Choose Synthesis Strategies
page as shown in Figure 9-24, page 262.
7. Click Next to invoke the Launch Options dialog box. Refer to Setting Synthesis
Options, page 154 or Setting Implementation Options, page 248 for more information
on setting launch options.
8. Click Next and review the Create Multiple Runs Summary, and click Next again.
9. Click Finish to create the defined Runs and execute the specified Launch options.
Each Synthesis Run displays the associated Implementation Runs below it in tree form.
You can expand and collapse Synthesis Runs using the tree widgets in the view.
Information about the Runs is displayed in the table. Refer to Using Tree Table Style Views,
page 96.
You can use the Show Search, Collapse All, and Expand All buttons to filter the Runs
displayed in the table. The options are:
• Launch Selected Runs—Launches the active Run.
• Reset Selected Runs—Resets a Run to a Not Started status and remove the data.
• Create Multiple Runs—Invokes the Create Multiple Runs wizard.
• Import Run Results—Opens the Implemented Design environment with the Run
results loaded.
Table 9-1 lists the tabs and options in the Implement Run Properties tabs and the tab
options.
The Launch Selected Runs dialog box opens as shown in Figure 9-29.
Resetting Runs
The Reset Runs command removes the results of the selected Runs. You are prompted to
remove the Run data from disk, which is advisable. The Run status is set back to Not
Started.
1. Select one or more Runs in the Design Runs view. Press Shift+Click or Ctrl+Click for
multiple selections.
2. Select the Reset Runs popup command.
The Reset Runs dialog box prompts you to remove all Implementation data from disk
for the selected Runs.
Deleting Runs
The Delete command removes selected Runs from the Design Runs view and removes
their associated data from disk. You are prompted to confirm the deletion of the selected
Runs.
1. Select one or more Runs in the Design Runs view. Use Shift+Click or Ctrl+Click for
multiple selections.
2. Select one of the following:
- The Delete toolbar button, as shown in Figure 9-30.
Copying Runs
You can create a new Run based on an existing Run by using the Copy Run popup
command in the Design Runs view. This command creates a new Run using the same
strategy and inputs as the selected Run you are copying from. The Run status is reset to Not
Started in the newly created copied Run.
PlanAhead loads the original netlist the ISE placement and TRACE timing results in the
Design Planner environment.
The Implemented Design menu becomes available in the Flow Navigator also, as shown in
Figure 10-2, page 273.
An icon displays within the Implemented Design button to indicate that an implemented
design is open.
The placed design shows in the Device view. When you import placement results from ISE,
placed instances are displayed as “unfixed” in PlanAhead. Placed instances that were
constrained with LOC constraints prior to Implementation are referred to as “fixed” and
display with a different color.
You can lock any placement in place for subsequent Runs by using the Fix Instances
popup menu command. Refer to Chapter 11, Floorplanning the Design and Analyzing
Implementation Results, page 271.
Note: ISE can optimize and change logic to improve placement and routing results. When this
happens, logic in the original netlist is removed or replaced. This results in a mismatch between the
pre-Implementation netlist opened in PlanAhead and the Implementation results. The Tcl Console
will report these discrepancies as the Implemented Design is being opened. It does not pose any
problems other than the logic in the netlist does not match the viewed results exactly.
PlanAhead extracts the timing results from the ISE TRACE program TWX file output and
displays the results in the Timing Results view.
Timing paths are organized by constraint and you can expand and collapse the paths using
the tree widgets in the view.
You can select and highlight paths in the Device view. You can examine timing path details
in the Path Properties view. Refer to Analyzing Placement and Timing Results, page 276
for more information.
You can open and close available Implemented designs using the pulldown menu in the
Flow Navigator. Each Implementation run shows under the Open Implemented Design
menu enabling any completed run to be opened as shown in Figure 10-4.
When multiple implemented designs are open, the Implemented Design button displays
with multiple icons.
2. Select an NCD file to import placement from the Import Placement dialog box.
PlanAhead automatically converts the NCD file to XDL format, and imports the XDL
result file.
Note: If a current XDL file already exists you can also choose to import that file directly.
3. Click OK to import the placement results.
Selecting any logic object highlights that object in all other PlanAhead views.
PlanAhead provides links under the Delay Type column to invoke a PDF viewer with the
device data sheet. A search is then performed automatically for the selected logic object.
For more information about analyzing timing results using the Timing Results and Path
Properties views, see Chapter 7, “Netlist Analysis and Constraint Definition.”
When PlanAhead generates the Schematic view for a timing path, it displays all of the
objects. When you select a Schematic view for individual logic instances to be generated,
only the selected instances display.
You can display the instances from a group of paths in this manner making it easy to
identify what modules should be grouped together for floorplanning. Pblock creation
popup commands in the Schematic view let you make direct assignment to Pblocks in the
device view. For more information about Schematic expansion and traversal commands,
see Using the Schematic View, page 111.
The Show connections for selected instances mode remains active, which lets you select
additional logic objects for viewing connectivity. Toggle the toolbar button, shown in
Figure 10-10 to turn off Show connections for selected instances mode.
Figure 10-10: Show connections for selected instances Mode Toolbar Button
Also, you can expand and display instance and module connectivity, and content
interactively.
For more information about exploring logic in the schematic, see Using the Schematic
View, page 111.
Figure 10-12: Matching Highlighting Color in the Netlist and Device Views
Unhighlighting Objects
To un-highlight objects, use one of the following commands:
• Choose Select > Unhighlight All to unhighlight all objects.
• Choose Select > Unhighlight Color to unhighlight based on color.
• Click the Unhighlight All toolbar button as shown in Figure 10-13.
Marking Objects
Marking a selected object is helpful when displaying small objects that you want to see in
the Device view.
To mark selected objects, select Select > Mark, or press Ctrl+M. This command is available
in other views, including the Netlist and Physical Hierarchy views.
When marking timing paths, the start point is marked in green, the end point in red, and
all intermediate points in yellow, as shown in Figure 10-14.
Removing Marks
You can remove marks using one of the following methods:
• Choose Select > Unmark to unmark the selected instance.
• Choose Select > Unmark All or click the Unmark All toolbar button as shown in
Figure 10-15 to unmark all marked instances.
The Metric Properties view provides a description of the selected Metric function along
with the bins defined to highlight potential problems, as shown in Figure 10-17.
The Pblock metric results update automatically as you modify the Pblocks. The different
types of metrics such as for Pblocks, CLBs, and primitives, display in different charts. Each
type has a tab along the bottom of the Metrics Results view, as shown in Figure 10-19.
Alternatively, to launch XPower Analyzer without first loading the implemented design,
you can select Launch XPower Analyzer from the main Flow menu in PlanAhead.
The routed NCD file is passed automatically to the XPower Analyzer when launched from
PlanAhead. For more information on using XPower Analyzer, see the ISE Help.
Creating Pblocks
The process of floorplanning begins by dividing some or all of the logic in the design into
groups and constraining that logic. The PlanAhead software provides the ability to
hierarchically divide the design into smaller, more manageable physical blocks (Pblocks).
These Pblocks can include logic modules and primitive logic from anywhere in the logic
hierarchy. You can group critical or associated logic together into a single Pblock, which
prevents logic migration, limits interconnect lengths, and reduces delays.
Creating a Pblock results in an AREA_GROUP constraint that is written into the exported
UCF constraint file. The constraints in PlanAhead reflect the assigned logic, specified
ranges, and defined attributes.
3. Move your cursor to the location in the Device view where you want to start drawing
a Pblock.
4. Press and hold the left mouse button, move the mouse cursor to the opposite corner of
the Pblock, and release the mouse button.
The New Pblock dialog box opens as shown in Figure 11-2.
Sometimes, it is helpful to initially create all of the Pblocks with small rectangles to help
visualize the logic connectivity flow between the Pblocks prior to attempting sizing as
shown in Figure 11-3.
See Analyzing Hierarchical Connectivity, page 169 and Using the Show Connectivity
Command, page 279 for more information about this view.
- To add additional netlist instances to this list, click the Add button to invoke a
browser in which you can select other instances.
- To remove any netlist instances from the list, click the Remove button.
- To clear netlist instances from the list, click the Clear button.
3. Click Next.
The Create Pblocks wizard gives you the option to specify a naming scheme.
4. In the Create Pblocks wizard, edit the naming scheme fields:
- Prefix—Defines a name prefix to be used for the Pblock names. Enter a new prefix
or allow the default instance name or number to be used.
- Suffix—Select Instance name to append the instance name onto the prefix, or
select Numeric to append a number starting with 1 to the prefix.
5. Click Next.
6. Verify the contents in the Summary page.
7. Click Finish to create the Pblocks with these settings.
The Pblocks now show in the Physical Constraints view as in Figure 11-5.
The tool tip changes to indicate the Pblock range is a Clock Region.
2. Select OK in the Set Pblock dialog box to define the Pblock range as the clock region
(CLOCKREGION_X) as shown in Figure 11-8.
Figure 11-8: Set Pblock Dialog Box to Confirm Pblock as Clock Region
Note: The Pblock rectangle must encompass the clock region boundary to enable the
CLOCKREGION option in the Set Pblock dialog box. When you unselect the
CLOCKREGION_X button, you can define the Pblock using traditional logic based ranges.
Note: You can toggle the two types of Pblocks by selecting or deselecting the
CLOCKREGION button in the Set Pblock dialog box or in the Pblock General Properties view.
The Pblock clock region coordinates display in the Pblock General Properties view.
Using the default selection rules, selecting the Pblock rectangle selects all of the netlist
instances contained in it also. You can drag and assign Instances into other Pblocks.
Note: You can view and modify Selection Rules for the tool by selecting
Tools > Options > Selection Rules.
Note: Be careful when manipulating Pblocks to ensure the Pblock rectangle is selected and not the
smaller rectangles indicating the assigned instances. It is helpful when manipulating Pblocks to turn
off the selection ability for instances. This ensures Pblocks and not the instances assigned to them
are selected in the Device view. To define how instances and Pblocks are selected, select Tools >
Options > Themes > Device, and define the selection ability. For more information, see Creating
and Using a Customized Theme, page 132.
I/O Nets are drawn connected to the center of the instance inside the Pblock rather than in
the Pblock center as shown in Figure 11-10, page 296.
Child Pblocks appear in a different color to differentiate the rectangles. You can configure
the color configuration in the Tools > Options > Themes > Device dialog box.
Pblocks might contain multiple rectangle ranges. Multiple rectangle ranges display with
dashed lines connecting them to indicate that they are part of the same Pblock. The
assigned instance rectangles and connectivity display in the largest rectangle as shown in
Figure 11-11.
Note: To accept any changes made, click Apply. To cancel any changes, click Cancel. Selecting
another item or closing the Properties view will not initiate any changes unless you click Apply.
Configuring Pblocks
The following subsections describe configuring Pblocks:
• Setting Pblock Logic Type Ranges
• Assigning Logic to Pblocks
• Moving and Resizing Pblocks
• Using Resource Utilization Statistics to Shape Pblocks
• Placing Pblocks Based on Connectivity
• Using Non-Rectangular Pblocks
• Removing a Pblock Rectangle
• Setting Attributes for Pblocks
• Renaming a Pblock
• Deleting a Pblock
• Running the Automatic Pblock Placer
If you resize a Pblock or move it to a location that includes new device logic types, such as
block RAM and DSP, a dialog box displays prompting you to add the new range types to
the Pblock definition. The contents of this dialog may vary depending on where the Pblock
is located.
Toggling the ranges off results in the Pblock being shown differently in the Device view.
As the Pblock is selected the shading will only affect the logic types for the ranges set on
the Pblock, as shown in Figure 11-13, page 299.
Moving a Pblock
You can move a Pblock by selecting and dragging the Pblock within the Device view, and
dropping it in the new location. The dynamic cursor shaped like a hand indicates that the
Pblock is selected for moving. Ensure that the outer Pblock rectangle is selected and not
one of the assigned instances.
If the Pblock is moved to a location that includes new device logic types, such as a block
RAM or a DSP, a dialog box displays prompting you to add the new range types to the
Pblock definition.
Pblocks behave differently when assigned logic has a placement constraint inside the
Pblock borders. The target location should contain adequate resources to accommodate the
placement constraints. As the Pblock is moved, the cursor indicates which sites are legal
for a move, based on placement requirements. If you attempt to move a Pblock to an
inadequate location, a dialog box displays prompting you to either remove or leave the
location constraints intact.
Fixed (Placed) and unfixed (Unplaced) location constraints are listed separately in the
dialog box, allowing you to handle them differently.
To cancel an active move operation, press the Esc key and the active command is
terminated.
Note: If you are having difficulty moving Pblocks, click the Set Pblock Size toolbar button to redraw
the rectangle elsewhere. You might need to remove placement constraints prior to moving Pblocks.
Resizing a Pblock
You can stretch Pblock edges by selecting the Pblock and moving the cursor near one of its
edges or corners. When the cursor changes to a drag symbol, click and drag to reshape the
Pblock.
To cancel an active stretch operation, press the Esc key, and the active command is
terminated.
The cursor changes to enable you to draw a new rectangle in the desired location in the
Device view.
3. Use the cursor to draw a new rectangle.
Also, you can use this command to draw a rectangle for an existing Pblock with no
rectangle yet defined, such as one created with the New Pblock(s) commands. For more
information, see Creating Multiple Pblocks with the Create Pblocks Command, page 291.
If a Pblock has multiple rectangles, this command regenerates the Pblock with a single
rectangle. Often, this is useful when a Pblock gets fragmented into multiple rectangles.
If you resize the Pblock to a location that includes new device logic types, such as a block
RAM or a DSP, a dialog box displays prompting you to add the new range types to the
Pblock definition.
Pblocks behave differently when assigned logic has a placement constraint inside the
Pblock borders. The target size should contain adequate resources to accommodate the
placement constraints. If you attempt to resize a Pblock to an inadequate size, a dialog box
displays prompting you to either remove or leave the location constraints intact.
Pblocks behave differently when location placement constraints are assigned inside of
them. If location constraints are assigned to the Pblock, a dialog box displays prompting
you to either remove or leave the location constraints intact.
Fixed and Unfixed location constraints are listed separately in the dialog box allowing you
to handle them differently.
To cancel an active resize operation, press the Esc key on the keyboard.
3. In the Statistics tab, view the utilization estimates in the following three columns.
- Available—Displays the number of available sites in the Pblock.
- Required—Displays the number of sites that the assigned logic requires.
- % Utilization—Displays the estimated utilization percentage for each logic type.
The appropriate utilization can be met by resizing the Pblock. If Utilization for
some logic objects is over 100%, the text appears in red, as shown in Figure 11-17.
4. Scroll down to view the required RAM sites for the Pblock.
The dialog box is dynamic and updates each time you modify the Pblock.
If the Pblock does not contain a site for a specific logic device element, the dialog box
shows the following values:
- Available—0.
- Required—The required number.
- Utilization—Percentage of available resources used by the logic in the Pblock. A
value of Disabled means that the Site Type has been disabled (on the General tab)
and is not available for use. If there are sites of this type required by the Pblock,
this is an error condition. A value of No Sites means that the Pblock range on the
device does not include any sites of that type.
Note: The Pblock SLICE utilization calculation assumes maximum site utilization. In reality, the
maximum site utilization is rarely achieved in placement and routing tools. Thus, a designer should
optimize for a target utilization of approximately 80% or higher. This number is a function of the device
used and the characteristics of the design and its constraints.
Note: Pblock utilization is affected by carry chains, RPM macros, and the geometry of the Pblock
rectangle. These statistics are estimates to help guide you to a successful ISE Implementation. All of
the Pblock Statistics must be taken into account when sizing Pblocks. Occasionally, Pblocks must be
enlarged for ISE to place them successfully.
Pblocks with multiple rectangles appear as separate rectangles with a dashed line
connecting them as shown in Figure 11-11, page 296.
Note: The tools are not optimized to handle too many ranges per the AREA_GROUP constraint. It
is best to use simple shape configurations such as L or T shapes.
The Add Pre-defined Attributes dialog box opens as shown in Figure 11-23.
Renaming a Pblock
You can rename Pblocks using the General tab of the Pblock Properties view. Enter the new
Pblock name in the Name field and click Apply. Alternatively, you can modify the Name
attribute on the Attributes tab of the Pblock Properties view.
Deleting a Pblock
You can delete selected Pblocks as follows:
1. In the Physical Constraints view, select one or more Pblocks.
2. Press the Delete key, or select the Delete popup menu command.
3. In the Confirm Delete dialog box, you can select the Remove Pblock children option to
remove any nested Pblocks along with their partitions. Otherwise, when left
unselected, you will delete the selected Pblock only and move any nested Pblocks up
one layer of hierarchy.
4. Click OK to remove the Pblock partition from the Physical Constraints view.
The dynamic cursor does not allow instance placement to an illegal site, or a site that is
already occupied. A legal placement site is indicated when the dynamic cursor changes
from a slashed circle to an arrow or diamond.
The dynamic cursor does not allow instances to be placed if the SLICE will be over-packed
with logic. Certain logic groups, such as carry-chain logic, move as a single object, which
requires open placement sites for all logic on the carry chain.
After location constraint assignment is complete, return to the default Assign instance to
Pblock mode by clicking the Assign Instance Mode toolbar button as shown in
Figure 11-25.
To view location constraint properties, select the placement constraint, and view the
Instance Property view.
The dynamic cursor will not allow instance placement to an illegal or already occupied
gate site. A legal placement site is indicated when the dynamic cursor changes from a
slashed circle to an arrow. The dynamic cursor does not allow instances to be placed if the
SLICE will be over-packed with logic.
After location constraint assignment is complete, return to the default Assign instance to
Pblock mode by clicking the Assign Instance Mode toolbar button, as shown in
Figure 11-27.
To view location constraint properties, select the placement constraint, and view the
Instance Property view.
To display or hide the location constraints, click the Show/Hide LOC Constraints toolbar
button, as shown in Figure 11-29.
To adjust other display characteristics for the LOC and BEL constraints:
1. Select Tools > Options > Themes > Device.
The Device dialog box displays.
2. Adjust values in the display, select columns or adjust the colors in the Frame Color and
Fill Color columns.
Fixed and Unfixed placement constraints have individual color and selection controls.
The primitive instance is assigned to the new site. You can display Net flight lines from
the location constraint to connected placed logic or Pblocks.
Moving a combinational logic object such as a MUX or a Carry Chain results in the
entire group of LOCs being selected for move. The cursor indicates legal placement
sites for the entire group and PlanAhead moves all objects to new relative locations.
You can assign all logic to sites outside of the Pblock rectangle. This allows flexibility
when locking placement for of logic elements, such as RAMs and DSPs.
3. After location constraint assignment is complete, return to the default Assign Instance
to Pblock mode by clicking the Assign Instance Mode toolbar button, as shown in
Figure 11-30.
To view location constraint properties, select the placement constraint, and view the
Instance Property view.
9. Click Next, verify the contents of the Summary page, and click Finish.
- The specified I/O ports assignments or instances are removed from the design.
- Previously assigned ports are not cleared prior to reading a new UCF file.
- New port assignments write over previous assignments.
Note: A best practice is to first clear all port assignments prior to importing new port assignment
constraints.
Exporting Constraints
Exporting constraints to ISE consists of exporting a UCF constraints file for the entire
design or for individual Pblocks.
To export the constraints:
1. In the Sources view, select the desired constraint set to export and use the Make Active
popup menu command to set it as the active constraint set.
2. Select File > Export Constraints.
The Export Constraints dialog box opens.
3. Edit the definable options in the Export Constraints dialog box:
- File name—Enter the file name and location to create the UCF format constraints
file.
- Export fixed location constraints only—Select this option to export only the user
assigned “fixed” placement LOC constraints or uncheck it to export all of the
fixed and unfixed placement constraints imported from ISE.
4. Click OK to export the constraints.
PlanAhead creates the designated top-level UCF format constraint file in the export
directory. This file can be used as input for custom ISE Implementation scripts.
For more information about the exported files, see Appendix A, “Outputs for Reports.”
Exporting Netlist
Exporting the PlanAhead Netlist to ISE consists of exporting a single EDIF format netlist
file for the entire design or for individual Pblocks.
To export the design netlist:
1. Click the Floorplan tab.
2. Select File > Export Netlist. The Export Netlist dialog box opens.
3. Edit the File name and location to create the EDIF format netlist file in the Export
Netlist dialog box:
4. Click OK to export the netlist.
For more information about the exported files, see Appendix A, “Outputs for Reports.”
The Generate Bitstream dialog box opens as shown in Figure 12-2, page 318.
You can set the ISE Bitgen command options prior to running the command.When you
select an option, a description of the option displays in the dialog box. A pulldown
menu of the available options values shows on the right side.
2. Click OK to start the Bitgen command.
You can view the command status in the Compilation Log and Compilation Messages
views and the Bitgen report file in the Reports view after it completes.
PlanAhead generated the resulting bit file in the project Run directory.
PlanAhead / Chipscope
Core Insertion
ChipScope
ILA Debug
Cores
X11123
• This flow is not compatible with a pre-existing ICON core generated without a
BSCAN primitive that requires connection to a BSCAN primitive instantiated outside
of the core.
• Because the PlanAhead tool adds debug cores to the post-Synthesis design netlist,
some nets might be unavailable for debugging due to trimming or other optimization
that takes place during the Synthesis process.
• Only ChipScope Pro ILA cores can be created and connected using this flow.
ChipScope Window
in Main PlanAhead GUI
Precise control
ChipScope Tcl debug commands
X11122
3. Follow the instructions screen-by-screen to connect and configure the debug cores.
If multiple clocks are detected for a given net, a dropdown list allows the selection of
different clocks for the net or bus.
1. To modify the debug net selection further, click the Add/Remove Nets button.
2. Configure each net or bus for use as a trigger, data storage, or both.
3. When the net and clock configuration is correct, click Next to proceed to the summary
screen.
If ILA cores exist in the design, you are prompted to remove them and regenerate
based on the new information or to keep them intact and generate new cores.
Figure 12-10: Dragging and Dropping Nets onto Debug Core Ports
You can modify port parameters by first clicking the Trigger or Data port of a debug core,
and selecting Properties > Options, as shown in Figure 12-12, page 328.
Launching iMPACT
The iMPACT tool lets you perform Device Configuration and File Generation.
• Device Configuration lets you directly configure Xilinx FPGAs and PROMs with the
Xilinx cables (Parallel Cable IV, Platform Cable USB, or Platform Cable USB II).
Operating in Boundary-Scan mode, iMPACT can configure or program Xilinx FPGAs,
CPLDs, and PROMs.
• File Generation enables you to create the following programming file types: System
ACE CF, PROM, SVF, STAPL, and XSVF files.
iMPACT also lets you:
• Readback and verify design configuration data
• Debug configuration problems
• Execute SVF and XSVF files
You can launch the iMPACT software tool directly from PlanAhead on any implemented
design on which the Generate Bitstream command has been run. To invoke iMPACT, in
the Flow Navigator, select the Launch iMPACT command from the Program and Debug
menu.
The BIT bitstream file is passed automatically to iMPACT when launched from PlanAhead.
For more information on using iMPACT, see the ISE Help.
Using Partitions
The hierarchical capabilities all revolve around setting and managing hierarchical
boundaries in the design called partitions. These boundaries prevent the Synthesis and
Implementation tools from optimizing the logic across the boundaries making it possible
to isolate the logic for reuse.
Effective partitioning relies on good logic design practices and knowledge of the design.
These practices are detailed in the Hierarchical Design Methodology Guide (UG748).
After you have implemented designs with partitions, you can export the results for use in
future runs. The partition definition and behavior is defined in an XML file called
xpartitions.pxml. The ISE® Design Suite tools search the Run directory for that file and
act accordingly. Partitions are defined as well as the specified partition “action” such as
Implement or Import. The Hierarchical Design Methodology Guide (UG748) describes the
xpartitions.pxml file usage and syntax.
Design Preservation
The PlanAhead project structure lets you create and manage projects from hierarchical
netlist sources. This bottom-up Synthesis approach lets you selectively update modules
while keeping the rest of the design intact.
PlanAhead, coupled with the ISE partition features, can then lock the placement and
routing of selected partitions for subsequent runs.
This incremental design approach can help produce more consistent Implementation
results, reduce verification time, and reduce design closure time. This capability is called
Design Preservation, which is the ability to implement and lock specific modules of a single
design for subsequent runs.
Partial Reconfiguration
PlanAhead provides an environment to configure, implement and manage Partial
Reconfiguration projects. PlanAhead uses the partitions and Partial Reconfiguration
capabilities that are built into the ISE Design Suite Implementation tools.
Setting Partitions
You can set partitions on any hierarchical design module in the netlist. Design Preservation
requires that you define the partitions on the same logic modules that were synthesized
separately. This will ensure the netlists and the partitions can be isolated and reused.
Note: PlanAhead supports netlist-based projects only for hierarchical design capabilities. The
Partition commands will not be displayed in RTL-based projects.
To set a partition:
1. In the Netlist view, select the module instances on which to set partitions.
2. Select the Set Partition popup menu command.
3. The instance receives a new icon in the Netlist view and a Partitions tab in the Instance
Properties view as shown in Figure 13-1.
Once a partition has been set in the project, the rest of the design becomes a partition
automatically also. You can promote or import this “top” partition to preserve it if it
remains unchanged during a design revision.
The Implementation Settings dialog box lets you configure the launch options for the
run. The Specify Partitions field displays the current action set on the partitions.
2. Select the browser button on the Specify Partitions field as shown in Figure 13-3.
In the Specify Partition dialog box, shown in Figure 13-4, page 335, you can set the
Action for each Partition to either Implement or Import.
The first time a design is implemented, all partitions must be set to Implement, because
there are no promoted locations to import the implemented partitions.
Promoting Partitions
Once satisfactory Implementation results are achieved, you can copy the ISE result files to
a repository area for future import operations. This process is called “Promoting” the
partitions. You can only promote partitions from successfully implemented runs in
PlanAhead.
To promote partitions:
1. In the Flow Navigator, select Promote Partitions. The Promote Partition dialog box
opens, as shown in Figure 13-6.
The Promote Partitions dialog box lets you define the partitions to promote. By
default, all partitions are selected for promote; the top-level of the design is not
selected for promote.
2. Accept the defaults values in the dialog box or select the partitions to promote.
3. Optionally, enter a description in the Description field.
4. Click OK.
The Promoted Partitions view opens.
Note: It is recommended that you promote and Import all partitions to a single location. The default
is to use the same promote directory. PlanAhead prompts you to overwrite the previously promoted
directory in an attempt to enforce this methodology. For more information, refer to the Hierarchical
Design Methodology Guide (UG748).
Once a partition is promoted, the default partition action setting for the next
Implementation run is set to import.
Each promotion displays in a tree table detailing the partitions promoted, the source
Implementation run, the promote date and time, and the description.
Importing Partitions
After you have promoted partitions, you can import those partitions for subsequent runs.
Importing partitions results in the placement and routing being copied out of the
promoted partitions run and imported into the new run prior to implementing the rest of
the design, ensuring identical results.
PlanAhead sets the Partition actions automatically to Import for any promoted partitions
and selects the most recent promoted directory from which to import. PlanAhead does not
track logic updates or set the appropriate partitions to Implement.
Figure 13-8 shows the Specify Partitions dialog box.
The ISE NGDBuild report provides information about the Partition actions for each run. To
access the report, select the Reports view tab and open the NGDBuild report. Figure 13-9
shows the Partition activity in an NGDBuild report.
Successfully preserved partitions are copied from the promoted area and pasted into the
new run. This should provide identical results for imported partitions.
For more information about Design Preservation methodologies, refer to the
Hierarchical Design Methodology Guide (UG748) and the
PlanAhead Tutorial: Leveraging Design Preservation for Predictable Results (UG747).
Tcl Help
The Tcl help command provides an overview of the available, supported Tcl commands.
The help command with no arguments provides a list of all commands. You can pass a
specific command to the help command as an argument, for example:
help get_cells
The Tcl help then prints the specific command information to both the console and the log
file. Additionally, a global –help option is implemented that returns help syntax; for
example:
get_cells –help
Tcl Console
The PlanAhead GUI environment contains an area that echoes the Tcl commands as
operations are performed, and provides information, warnings, and error messages that
result from tasks performed. The Tcl Console is located along the bottom of the PlanAhead
environment and fixed to the width of the GUI. Along the right side of the Tcl console, just
to the right of the scrollbar is an area with color coded indicators for warnings and errors.
Any warnings issued to the console are colored yellow and errors are marked red. This is
a very useful feature to scroll back through message history and quickly navigate to view
warnings and errors in the context of the command that was performed. Figure 14-1 shows
the Tcl Console within the environment:
Invoking PlanAhead
PlanAhead provides three primary modes of operation:
• The GUI mode (default)
• Invocation of the PlanAhead executable by a Tcl command-line option (Batch mode)
• Tcl shell mode
The following subsections describe Batch and Tcl shell modes.
Batch Mode
Batch mode executes a script and then shuts down the tool. To invoke PlanAhead in
batch mode:
planAhead –mode batch –source script_name.tcl
The commands are exposed in the global namespace, which means the commands do not
need to be qualified with hdi:: as in previous versions of PlanAhead. Commands are
“flattened,” meaning there are no “sub-commands” for a command.
Example Syntax
The following is an example of the return format on the get_cells -help command:
get_cells -help
Description:
Get a list of cells in the current design
Syntax:
get_cells [-hierarchical] [-regexp] [-nocase] [-filter arg] [-
of_objects args] [-quiet] [patterns...]
Returns:
list of cell objects
Usage:
Name Optional Default Description
Unknown Commands
Tcl contains a list of built-in commands that are generally supported by the language,
PlanAhead-specific commands which are exposed to the Tcl interpreter, and user-defined
procedures.
Commands that do not match any of these known commands are sent to the OS for
execution in the shell from the exec command. This allows users to execute shell
commands that may or may not be OS-specific. If there is no shell command, then an error
message is issued to indicate that no command was found.
Return Codes
Some commands are expected to provide a return value, such as a list or collection of
objects on which to operate. Other commands perform an action but do not necessarily
return a value that can be used directly by the user. Some tools that integrate Tcl interfaces
return a “0” or a “1” to indicate success or error conditions in the command, but this is not
reliable combined with commands that returns lists of objects.
To test if a command successfully executed, use the Tcl built-in command catch.
All PlanAhead commands return TCL_OK and TCL_ERROR, and $ERRORINFO through
the standard Tcl mechanisms which makes the catch command the most robust mechanism
for trapping errors in Tcl scripts. These values will not be returned and set to variables in
the interpreter, nor do the commands return a 0 or 1 in log files upon success or failure of
a given command. Generally, the catch command and the presence of numbered
info/warning/error messages should be relied upon to asses issues in Tcl scripted flows.
Cell
A cell is an instance, either primitive or hierarchical inside a netlist. Examples of cells
include flip-flops, LUTs, I/O buffers, RAM and DSPs, as well as hierarchical instances
which are wrappers for other collections of cells.
Pin
A pin is a point of logical connectivity on a cell. A pin allows the internals of a cell to be
abstracted away and simplified for easier use, and can either be on hierarchical or
primitive cells. Examples of pins include clock, data, reset, and output pins of a flop.
Port
A port is a special type of hierarchical pin, a pin on the top level netlist object, module or
entity. Ports are normally attached to IO pads and connect externally to the FPGA device.
Net
A net is a wire or collection of wires that eventually be physically connected directly
together. Nets can be hierarchical or flat, but will always short together a collection of pins.
Clock
A clock is a periodic signal that propagates to sequential logic within a design. Clocks can
be primary clock domains or generated by clock primitives such as a DCM, PLL, or
MMCM. A clock is the rough equivalent to a TIMESPEC PERIOD constraint in UCF and
forms the basis of static timing analysis algorithms.
Querying Objects
All first class objects can be queried by a get_ Tcl command that generally has the
following syntax:
get_object_type pattern
Where pattern is a search pattern, which includes if applicable a hierarchy separator to get
a fully qualified name. Objects are generally queried by a string pattern match applied at
each level of the hierarchy, and the search pattern also supports wildcard style search
patterns to make it easier to find objects, for example:
get_cells */inst_1
This command will search for a cell named inst_1 within the first level of hierarchy
below the top level of hierarchy. To recursively search for a pattern at every level of
hierarchy, use the following syntax:
get_cells –hierarchical inst_1
This command searches every level of hierarchy for any instances that match inst_1.
For complete coverage of syntax, see the specific online help for the individual command:
help get_cells
get_cells -help
Object Properties
Objects have properties that can be queried. Property names are unique for any given
object type. To query a specific property for an object, the following command is provided:
get_property property_name object
An example would be the lib_cell property on cell objects, which tells you what Unisim
component a given instance is mapped to:
get_property lib_cell [get_cell inst_1]
To discover all of the available properties for a given object type, use the
report_property command:
report_property [get_cells inst_1]
Some properties are read-only and some are user-settable. Properties that map to attributes
that can be annotated in UCF or in HDL are generally user-settable through Tcl with the
set_property command:
set_property loc OLOGIC_X1Y27 [get_cell inst_1]
There are a few nuances with respect to large lists, particularly in the log files and the GUI
Tcl console. Typically, when you set a Tcl variable to the result of a get_* command, the
entire list is echoed to the console and to the log file. For large lists, this is truncated when
printed to the console and log to prevent memory overloading of the buffers in the tool.
What is echoed is the list printed to the log and console is truncated and the last element
appears to be “…” in the log and console, however the actual list in the variable
assignment is still correct and the last element is not an error.
An example of this is querying a single cell versus every cell in the design, which can be
large:
get_cells inst_1
inst_1
get_cells * -hierarchical
XST_VCC XST_GND error readIngressFifo wbDataForInputReg fifoSelect_0
fifoSelect_1 fifoSelect_2 fifoSelect_3 ...
%set x [get_cells * -hierarchical]
XST_VCC XST_GND error readIngressFifo wbDataForInputReg fifoSelect_0
fifoSelect_1 fifoSelect_2 fifoSelect_3 ...
%lindex $x end
bftClk_BUFGP/bufg
%llength $x
4454
In this example, all four thousand cells were not printed to the console and the list was
truncated with a “…” but the actual last element of the list is still correct in the Tcl variable.
Object Relationships
Related objects can be queried using the –of option to the relevant get_* command. For
example, to get a list of pins connected to a cell object, do the following:
get_pins –of [get_cells inst_1]
Figure 14-1, page 347 is a diagram of the object types in PlanAhead and their relationship,
where an arrow from one object to another object indicates that you can use the –of option
to the get_* command to traverse logical connectivity and get Tcl references to any
connected object.
Tcl Commands
The following subsections describe the most common commands in PlanAhead.
For specific information about each command, consult the online help for the individual
command.
Flow Control
The following table contains a list of Tcl commands that control the flow of Synthesis and
Implementation.
For specific information about each command, please consult the online help for the
individual command.
Object Access
The following table lists Tcl commands that query objects.
For specific information about each command, consult the online help for the individual
command.
Reporting
The following table lists the most common Tcl commands that generate informational
reports, either printed to the console or written to a report file on the filesystem.
For specific information about each command, consult the online help for the individual
command.
GUI Control
Table 14-5, page 350 lists the Tcl commands that control some behavior in the GUI, if it is
active. These commands are very helpful for things such as finding objects in the device
view and cross probing between schematic and placement on the device. These commands
do nothing in batch and interactive Tcl modes where the GUI is not active.
For specific information about each command, consult the online help for the individual
command.
Tcl References
The following subsections provide recommended Tcl references.
About SDC
SDC is an acronym for Synopsys Design Constraints, and is an accepted industry standard
for communicating design intent to tools, particularly for timing analysis. A reference copy
of the SDC specification is available from Synopsys by registering for the TAP-in program
at:
http://www.synopsys.com/Community/Interoperability/Pages/TapinSDC.aspx
Integration Overview
The PlanAhead™ software is integrated with the ISE® software to let you perform specific
design tasks. When you invoke the PlanAhead software from the ISE Project Navigator
environment, the PlanAhead software is in “ISE Integration mode.” In this mode, the
available PlanAhead features apply only to specific design tasks, including I/O pin
planning, floorplanning, and timing analysis. The Project Navigator environment creates
and manages the PlanAhead software project automatically.
There are four processes in the Project Navigator Processes pane from which you can
invoke the PlanAhead software:
• Pre-Synthesis
- I/O Pin Planning
• post-Synthesis
- I/O Pin Planning
- Floorplan Area/IO/Logic
• Post-Implementation
- Analyze Timing/Floorplan Design
The data passed between the two tools and the view layout presented in the PlanAhead
software depends upon which step you invoke. Refer to the PlanAhead Processes within
Project Navigator, page 352 for more information on the mechanics of the integration
including data passing and processes.
PlanAhead has two default view layouts for the many design tasks:
• The I/O pin planning environment, called the I/O Planner, which contains views
pertinent to I/O pin planning and assignment.
• The Design Planning environment which contains views pertinent to design analysis
and floorplanning.
It is important to ensure the proper view layout is loaded for the desired design task.
For more information about using the PlanAhead Viewing Environment, see Chapter 4,
“Using the Viewing Environment.” For more information about configuring and loading
view layouts, refer to Configuring and Saving the Viewing Environment in Chapter 4.
Project Navigator creates a temporary PlanAhead project in the ISE project directory, and
removes and replaces this project every time you invoke the PlanAhead software from
Project Navigator.
When you invoke PlanAhead, Project Navigator passes the synthesized NGC or EDIF
format netlist and the UCF file(s) to PlanAhead. PlanAhead opens with a display of the
default I/O pin planning (I/O Planner) view layout, and the I/O ports display in the
PlanAhead I/O Ports view.
When you save or close the PlanAhead project, it updates the original Project Navigator
source UCF file(s), and this resets the Project Navigator design process state, if appropriate.
Refer to Passing Logic and Constraints, page 352 for more information about the
integration mechanics and process. Refer to Chapter 8, “I/O Pin Planning,” for more
information about using the PlanAhead I/O pin planning environment.
or
• Select the Tools > PlanAhead > Post-Implementation - Analyze Timing/Floorplan
Design command
Project Navigator passes the following files to PlanAhead when it opens:
• Synthesized NGC or EDIF format netlist
• UCF file(s)
• ISE placement data
• Timing results
PlanAhead is invoked with the default PlanAhead design analysis and floorplanning
environment displayed. For PlanAhead to extract the ISE placement data, you must first
run an XDL command to produce a file with an XDL extension.
A progress bar displays in PlanAhead while this command is running. To expedite re-
invoking PlanAhead, the interface first checks for the existence of the XDL file and does
not regenerate the file if it is still current.
When you select Tools > PlanAhead > Post Implementation - Analyze Timing
/Floorplan Design with the Implementation process out-of-date, you are prompted to
either re implement the design and launch PlanAhead, or launch PlanAhead on the
existing result data without rerunning the Implementation tools.
When you save or exit the PlanAhead project, the PlanAhead software updates the original
Project Navigator source UCF file(s), and this resets the Project Navigator design process
state also, if appropriate.
Inputs to PlanAhead
This appendix describes the formats and processes used while importing design data.
The input files are as follows; you can click the linked file name and go directly to the
description:
• RTL Source Files (Verilog, VHDL, or other design text files)
• I/O Port Lists (CSV)
• Top-Level Netlists (EDIF, NGC)
• Module-Level Netlists and Cores (EDIF, NGC, NGO)
• Constraint Files (UCF / NCF / XNCF)
• Xilinx ISE Placement Results (NCD / XDL)
• Xilinx TRCE Timing Results (TWX/TWR)
While reading the input files, the PlanAhead™ software writes out any errors, warnings,
and messages in to the planAhead.log file. These messages display in the PlanAhead
Console view also.
You can then assign these I/O Ports to physical package pins to define the device pin
configuration. Refer to for more information about the CSV file content and format.
When you invoke PlanAhead, it imports the file automatically from the PlanAhead
installation directory first, and then from the following directory, based on the OS:
• (Windows) C:\Documents and Settings\user\Application
Data\HDI\version_number, if it exists
• (Linux) ~/.HDI/planAhead.ini
You can save custom theme files for use in future PlanAhead sessions by clicking the Save
As button in the Themes dialog box (accessed using Tools > Options > Themes).
You can select a Theme file to use during the active PlanAhead session from a pull-down
selection menu. For more information, see Configuring PlanAhead Behavior, page 133.
When you select the Light/Dark Theme buttons of the View Options dialog box, the
software overrides the following directory with the preset defaults:
• (Windows) C:\Documents and Settings\user\Application
Data\HDI\version_number\planAhead.ini file
• (Linux) ~/.HDI/planAhead.ini file
To avoid loss of any custom settings, keep a backup of the custom settings file.
Each Run directory contains the Implementation design data including the netlist and the
constraints files. When a satisfactory Implementation result is achieved, the entire Run
directory can be copied and archived because it is self contained.
Exported Netlists
The purpose of exporting a Netlist is to supply the design EDIF file for ISE Implementation
outside of the PlanAhead environment. When a Netlist is exported, the original logical
netlist hierarchy is maintained in the output netlist. You can specify an output file name in
the Export Netlist dialog box.
Exported Constraints
When you export constraints the PlanAhead software attempts to preserve the original
UCF file content and structure, including comments.
You can specify the output constraints file in the Export Constraints dialog box.
Exported Pblocks
The purpose of exporting a Pblock is to write out the EDIF and UCF files for the specified
Pblocks to use for ISE Implementation outside of the PlanAhead environment.
When you export a Pblock, the PlanAhead software derives the netlist hierarchy based on
the Pblock assignments.
The resulting UCF references the PlanAhead physical hierarchy structure to match the
exported EDIF netlist names and provides flexibility when using a block-based
Implementation strategy.
The exported Pblock files consist of a single netlist file and constraint file. PlanAhead
automatically creates and maintains a block-level directory structure. When you export
selected Pblocks, the PlanAhead software creates pblockname_CV subdirectories
containing pblockname_CV.edn and pblockname_CV.ucf files.
Export Pblocks is typically used for a complex IP that contains the physical hierarchy,
which you can close timing on and then use those instances in other designs without
having to restructure your code to get a netlist.
Exported IP
The purpose of exporting IP is to write out the EDIF and UCF files for specified netlist
modules to be used for creating reusable IP blocks.
When you run the Export IP command on a selected module instance in the design it
exports the Pblock logical hierarchy and placement constraints. The exported files include
the EDIF netlist and UCF physical constraints in the original logical netlist format. This
allows for easier implementation in the next design by keeping the interface identical.
You can use the exported UCF file to re-create the Pblock placement constraints. You can
duplicate identical placement for multiple modules by moving the modules after they are
imported.
Figure A-1 is an example of how Export Pblock and Export IP can be used to export
different parts of the design based on either logical (Export IP) or physical (Export Pblock)
hierarchy:
PlanAhead Terminology
BEL Placement Constraint (BEL)
Basic Element (BEL) constraints can be assigned to the leaf-level instances that have
placement sites assigned to specific logic device gates. Assigning a BEL constraint results
in a LOC and a BEL constraint being “fixed” and written in the exported UCF files for the
instance. Depending on the zoom level, these LOCs appear in the Device view either as
rectangles within their respective assigned sites, or as logic functions symbols within the
site.
Constraint
A constraint can either be a description of the timing of logic, some behavioral requirement,
or a physical placement requirement. I/O Port assignments are also defined by constraints.
Constraint Set
A constraint set is one of more constraint files used for analysis and implementation
purposes. They are managed within the Sources view in PlanAhead. Different constraint
sets can be used to experiment with constraints or to explore different devices.
Design
A Design is defined as a netlist (elaborated RTL or synthesized), a constraint set, and a
target device. You do not need to create Designs to use PlanAhead. Designs are stored in
memory during the PlanAhead current session only, and are used to analyze the design
snapshot and to launch Runs. Implementation runs can be launched using any external
User Constraints File (UCF). Each project netlist can support multiple Designs using
different constraints or devices.
I/O Port
I/O ports are user I/Os to be assigned to physical package pins. Each I/O signal is defined
as a port.
Instance
Elements in the Netlist referred to as instances include leaf-level logic primitives and
hierarchical module components. The module components are referred to as modules in
this document.
Module
Elements in the netlist that represent hierarchical module instantiations are referred to as
modules or components. Leaf-level primitive logic is referred to as instances or primitives.
Netlist
A netlist represents a logical description of the design. A netlist should be hierarchical
consisting of a top-level netlist with child netlists for underlying levels of hierarchy
(“modules”). PlanAhead RTL-based projects can contain multiple netlists because multiple
Synthesis runs are enabled.
Package Pin
Package Pins are the physical pins of the package to which I/O Ports are assigned. The
Package Pins are grouped into I/O Banks. Refer to the device specifications for more
information about the Package Pins and I/O Banks.
Project
Each PlanAhead™ software session initiates an active project. You can create a project with
various input formats, depending upon the design flow being applied:
• Register Transfer Level (RTL) source files can be used to create a project that is
suitable for the RTL through bitstream flow.
• A synthesized netlist can be used in the netlist through bitstream flow.
• An empty project can be created to explore device resources or to begin I/O pin
planning, as described in
There is also a project creation method which allows results to be imported from a previous
command line Implementation attempt.
Depending on the type of project type you create, the project can contain one or more
versions of the netlist. Each with any number Implementation attempts or Runs.
The project information is stored in directory structure containing a combination of the
following:
• A project file, such as project_1.ppr
• A project data directory, such as project_1.data
• A project sources directory, such as project_1.srcs
• A project runs directory, such as project_1.runs
The sources directory contains all source files copied into the project. The data directory
contains the netlist directories containing the project netlists and directories for each
design in the project. The Runs directory contains all ISE Implementation attempts created
by PlanAhead.
The project data is maintained automatically by PlanAhead. The tool expects to find
project data in the state in which it was left; therefore, you should not attempt to modify
these files manually.
PlanAhead restores the state of the project automatically upon opening the project. The
project status including all opened or closed designs and each associated Run are updated
and available to you when a project is re-opened.
Primitive
Elements in the netlist that represent leaf-level logic objects are referred to as primitives
(such as LUTs and Flip-Flops).
Run
Each Synthesis or Implementation attempt is called a Run. Each Run is associated with a
specific strategy. You can launch multiple runs either simultaneously with multiple
processors or serially. Runs will be queued sequentially with the status displayed in
PlanAhead.
Site
PlanAhead displays a tile grid representation of the specific FPGA device resources that
can be used to implement the design netlist. Primitive logic sites are displayed and are
available for placement of netlist instances. These sites vary in shape and color to
differentiate the object types (for example RAMs, MULTs, CLBs, DSPs, PPCs, and MGTs).
Leaf-level logic can be assigned to specific SLICEs with placement constraints “LOCs”, or
to gates within the SLICE with LOC and BEL constraints.
Source
Projects can be created with a variety of input file formats. Projects can be created by
importing RTL source files in Verilog and VHDL, IP core modules and synthesized netlists
in NGC or EDIF format. These files are considered source files.
Strategy
A Strategy is a predefined set of tool command-line options. You can apply factory
delivered Strategies or create your own. Strategies can be applied to individual runs.
Running XilinxNotify
The XilinxNotify tool is the preferred method of obtaining software updates. It performs
the following activities:
• Compares the latest version of Xilinx software updates available on
http://www.xilinx.com/support with what you have installed, and notifies you if a
newer version is available.
• Provides a Download button which launches a browser, allowing you to login to the
Xilinx Download Center.
Once you login, the download of your selected product will begin.
• XilinxNotify can be run in any of the following ways:
• Automatic periodic checks at PlanAhead startup.
• Select Help > Check for Updates.
• Type xilinxnotify in a Linux shell
Note: The Edit > Preferences menu selection lets you control the frequency of automatic checks at
startup time.