Identify ME H-2013.03M-SP1 User Guide PDF
Identify ME H-2013.03M-SP1 User Guide PDF
User Guide
June 2013
http://solvnet.synopsys.com
Preface
Each copy shall include all copyrights, trademarks, service marks, and
proprietary rights notices, if any. Licensee must assign sequential numbers
to all copies. These copies shall contain the following legend on the cover
page:
“This document is duplicated with the permission of Synopsys, Inc., for the
exclusive use of __________________________________________ and its
employees. This is copy number __________.”
LO
Disclaimer
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE.
Trademarks (™)
AFGen, Apollo, ARC, ASAP, Astro-Rail, Astro-Xtalk, Aurora, AvanWaves,
BEST, Columbia, Columbia-CE, Cosmos, CosmosLE, CosmosScope, CRITIC,
CustomExplorer, CustomSim, DC Expert, DC Professional, DC Ultra, Design
Analyzer, Design Vision, DesignerHDL, DesignPower, DFTMAX, Direct Silicon
Access, Discovery, Eclypse, Encore, EPIC, Galaxy, HANEX, HDL Compiler,
Hercules, Hierarchical Optimization Technology, High-performance ASIC
Prototyping System, HSIMplus, i-Virtual Stepper, IICE, in-Sync, iN-Tandem,
Intelli, Jupiter, Jupiter-DP, JupiterXT, JupiterXT-ASIC, Liberty,
Libra-Passport, Library Compiler, Macro-PLUS, Magellan, Mars, Mars-Rail,
Mars-Xtalk, Milkyway, ModelSource, Module Compiler, MultiPoint, ORAengi-
neering, Physical Analyst, Planet, Planet-PL, Polaris, Power Compiler,
Raphael, RippledMixer, Saturn, Scirocco, Scirocco-i, SiWare, Star-RCXT,
Star-SimXT, StarRC, System Compiler, System Designer, Taurus, Total-
Recall, TSUPREM-4, VCSi, VHDL Compiler, VMC, and Worksheet Buffer are
trademarks of Synopsys, Inc.
LO
LO
Getting Started
The Identify® tool set includes the Identify instrumentor and the Identify
debugger. These two tools allow you to debug your HDL design:
• in the target system
• at the target speed
• at the VHDL/Verilog RTL source level
The Identify tool set helps you debug any design that is implemented by an
electronically programmable logic device such as an FPGA or PLD. For the
first time you will be able to debug live hardware with the internal design
visibility you need while using intuitive debugging techniques.
This guide provides comprehensive information about how the Identify tool
set works within your HDL design flow.
Manual Conventions
There are several conventions that this manual uses in order to communicate
command information.
Text Conventions
There are several text conventions that this manual uses to organize
command, path, and directory information. These conventions or text styles
are:
Syntax Conventions
There are several conventions that this manual uses to convey command
syntax. These conventions are:
LO
Tool Conventions
There are tool concepts you must familiarize yourself with when using the
Identify tool set. These concepts help you to decipher structural and
HDL-related information.
Wildcards
A wildcard is a command element you can use to represent many different
files. You can use these wildcards as arguments to the file system commands.
Conventions for wildcards are as follows:
Syntax Description
Syntax Description
[abcd] Matches any character in the specified set.
[a-d] Matches any character in a specified range.
To use square brackets in wildcard specifications, you must delimit the entire
name with curly braces { }. For example,
{[a-d]1}
matches any character in the specified range (a-d) preceding the character 1.
The Identify tool set supports both VHDL and Verilog. These languages vary
in their hierarchy conventions. The VHDL and Verilog languages contain
design units and hierarchies of these design units. In VHDL these design
units are entity/architecture pairs, in Verilog they are modules. VHDL and
Verilog design units are organized hierarchically. Each of the following HDL
design units creates a new level in the hierarchy.
LO
VHDL
• The top-level entity
• Architectures
• Component instantiation statements
• Process statements
• Control flow statements: if-then-else, and case
• Subprogram statements
• Block statements
Verilog
• The top-level module
• Module instantiation statements
• Always statements
• Control flow statements: if-then-else, and case
• Functions and tasks
Absolute path names begin with a path separator character. The top-level
design unit is represented by the initial “/”. Thus, a port on the top-level
design unit is represented as:
/port_name
Relative path names do not start with the path separator, and are relative to
the current location in the design hierarchy. Initially, the current location is
the top-level design unit, but commands exist that allow you to change this
location.
Note: Design unit references can be case sensitive depending on the HDL
language. VHDL names are not case sensitive. In contrast, Verilog
names are case sensitive.
Wildcards
A wildcard is a command element you use to represent many different design
hierarchy references. You can use wildcard design references as arguments
to the design hierarchy commands. Conventions for wildcards are as follows:
Syntax Description
Syntax Description
[abcd] Matches any character in the specified set.
[a-d] Matches any character in a specified range.
To use square brackets in pattern matching, you must delimit the entire
name with curly braces { }. For example,
{[a-d]1}
matches any character in the specified range (a-d) preceding the character 1.
LO
System Overview
The Identify tool set is part of an HDL design flow process. The tool set is a
dual-component system that allows you to probe your HDL design in the
target environment. The system fits easily into your existing design flow, with
only a few modifications.
This chapter provides a high-level description of the Identify tool set, detailing
how the instrumentor and debugger work and how they fit into your design
flow. The chapter describes:
• The Debugging System
• The Design Flow
• System Components
Starting with an HDL design, the Identify instrumentor enables you to create
a debuggable HDL version of your design. Then, the Identify debugger
communicates with this debuggable design, captures the operation of the
design, and relates the captured data back to the original HDL design.
Your System
Your
Device
IICE
The Identify tool set captures the device operation by inserting an IICE (Intel-
ligent In-Circuit-Emulator) device into your design. The IICE is connected to
signals of interest in your design and communicates with a host computer
through a JTAG cable. LO
Synthesis Instrument
Place Synthesis
and
Route
Place
and
Program Route
Device
Program
Device
Debug
In the typical design flow, the first step is to create the HDL design files which
are then synthesized to the target device. Following synthesis, the design is
placed and routed, targeting a particular device. Then, the design is imple-
mented on the actual hardware by programming the device.
The flow through the Identify tool set makes a very minor change to the
typical flow. After the HDL is successfully created, the Identify instrumentor
is used to identify the specific signals to be monitored. Saving the project
generates an instrumentation design constraints (idc) file and adds constraint
files to the design RTL for the instrumented signals and break points. The
design is synthesized and then run through the rest of the typical process.
After the device is programmed with the debuggable design, the Identify
debugger is used to debug the design while it is running in the target system.
Because the Identify tool set provides logic debugging capabilities in the
target system which is running at the target speed, the need for extensive
system-level simulation can be reduced. Instead, the effort in the simulation
step can concentrate on the much simpler and faster module-level simulation
and some system-level simulation. The Identify debugger is used to help
debug system-level functionality.
LO
System Components
The Identify system is made up of the following:
• IICE
• Identify Instrumentor
• Identify Debugger
IICE
The Intelligent In Circuit Emulator (IICE) is a custom block that is inserted
into your design and connected to signals in the design by the Identify instru-
mentor in accordance with your interface specifications. The IICE samples
internal signals and feeds the sampled signal information back to the Identify
debugger where the data is transformed for interpretation at the HDL level.
Identify Debugger
Ext
CPU Memory
I/O
Bus
I/O Controller Large
Data
Path
Filter
IICE
TCK
TMS
TDI
TDO
The IICE block is actually made up of two different types of blocks. The first is
the controller block and the second is the probe block. The probe block
samples internal signal data and communicates with the controller block.
The controller block communicates with the JTAG port.
The probe block contains the sample buffer where signal value data is stored.
The probe block also contains the trigger logic that determines when the
signal data is stored in the sample buffer.
The controller block receives the sample data from the probe block and sends
it through the JTAG port to the Identify debugger.
Identify Instrumentor
The Identify instrumentor reads and analyzes the pre-synthesis HDL design
and provides detailed information about the signals that can be observed and
allows you to specify how to control signal observation.
The Identify instrumentor uses the HDL design files and the user-selection
information to create the custom IICE block. The Identify instrumentor
connects the IICE to the appropriate signals in the design and writes the new
design to a user-specified location.
Identify Debugger
The Identify debugger lets you interact with the debuggable hardware at the
HDL level. In the Identify debugger, you can activate breakpoints, set watch-
points, and view captured data related to the original source code or as
waveforms. In the Identify debugger, you set trigger conditions that determine
when to capture signal data. A trigger condition is a set of on-chip signal
values or events. When a trigger condition occurs, data is transferred from
the hardware device to the Identify debugger through the JTAG communica-
tion cable or the UMRBus on a HAPS board.
LO
Project Handling
This chapter describes the procedures for managing projects and includes:
• Projects in the Identify Instrumentor
• Identify Debugger Projects
LO
Identify
Implementation
3. Either right click on the Identify implementation and select Launch Identify
Instrumentor from the popup menu or click the Launch Identify Instrumentor
toolbar icon to launch the Identify instrumentor.
Note: If you are prompted to locate the executable, enter the path to the
Identify software in the Locate Identify Installation field (use the browse
button to the right of the field). If you are prompted to select a license
type, select the appropriate type from the list; check the Save as default
license type box to avoid the license prompt in future sessions.
A list of the four, most recent projects is maintained by the Identify instru-
mentor. Any of these projects can be opened directly from the File->Recent
Projects menu.
LO
Note: The command accepts all Boolean arguments (0, off, false, 1, on, or
true). Entering the command without an argument returns the
current setting.
LO
You can also open an existing project from the Identify debugger interface by
selecting File->Open Project from the menu or by clicking on the Open existing
project icon. The name of the project file will have a prj extension. A list of the
four, most recent projects is maintained by the Identify debugger. Any of
these projects can be opened directly from the File->Recent Projects menu. On
opening, the data for the project is loaded into the Identify debugger. Loading
a project retrieves all of the information stored in a project and makes that
project the current working project.
There is a large list of possible cable type settings including: byteblaster, xilinx-
auto, xilinxusb, xilinxparallel, Microsemi_BuiltinJTAG, JTAGTech3710, Altera_BuiltinJTAG,
and demo. A umrbus setting is also available to setup UMRBus communica-
tions between the host and a HAPS board (see UMRBus Communications
Interface, on page 203). Set Cable type value according to the type of cable you
are using to connect to the programmable device.
Adjust the port setting based on the port where the communication cable is
connected. Most often, lpt1 is the correct setting for parallel ports.
LO
Saving a Project
Saving a project in the Identify debugger saves the following additional
project information to the project file:
• IICE settings
• Instrumentations and activations
To save a project in the Identify debugger, click the Save current activa-
tions icon or select File->Save activations from the menu.
LO
IICE Configuration
Note: When you create a new IICE from the GUI, the name of the IICE unit
is formed by adding an _n suffix to IICE (for example, IICE_0, IICE_1,
etc.). If you create a new IICE from the command line using the Iden-
tify instrumentor iice new command, you can optionally include a
name for the IICE.
Right-clicking on the IICE tab and selecting Configure IICE from the popup
menu brings up the Configure IICE dialog box which allows you to define the
parameters unique to the selected IICE (see Individual IICE Parameters, on
page 38).
Note: Communication port selection, which is common to all IICE units for
an instrumentation, is defined in the Identify instrumentor project
window (see Common IICE Parameters, on page 35).
These parameters are set/displayed in the project window for the currently-
active instrumentation. All IICE units in a multi-IICE configuration share
these same parameter values.
Device Family
The device family selected in the synthesis tool is reported in the Device family
field (the field is read-only) and cannot be changed.
Note: If the device family specified in the synthesis tool is not supported by
the Identify tool set, an error message is issued and you are prompted
to exit the Identify instrumentor.
Communication Port
The Communication port parameter specifies the type of connection to be used to
communicate with the on-chip IICE. The connection types are:
• builtin – indicates that the IICE is connected to the JTAG Tap controller
available on the target device.
• soft – indicates that the Synopsys Tap controller is to be used. The
Synopsys FPGA Tap controller is more costly in terms of resources
because it is implemented in user logic and requires four user I/O pins
to connect to the communication cable.
• umrbus – indicates that the IICE is connected to the target device on a
HAPS-60 or HAPS-70 series system through the UMRBus.
See Chapter 11, Connecting to the Target System, for a description of the
communication interface.
Board Type
The Board Type read-only field is only present when one of the supported
Synopsys HAPS device technologies is selected in the synthesis tool and
indicates the targeted HAPS board type.
When no global clock resources are available for the JTAG clock, this option
causes the IICE to be built using skew-resistant hardware consisting of
master-slave flip-flops on the JTAG chain which prevents clock skew from
affecting the logic. Enabling this option also causes the Identify instrumentor
to NOT explicitly define the JTAG clock as requiring global clock resources.
LO
Prepare Incremental
The Prepare incremental check box is only enabled when one of the supported
Xilinx Virtex technologies is selected in the synthesis tool. Checking this box
enables the multi-pass, incremental flow feature available for specific Xilinx
technologies (see Chapter 9, Incremental Flow).
IICE tabs
Current IICE
The Current IICE field identifies the target IICE when there are multiple IICE
units defined within an implementation. The IICE is selected from the drop-
down menu.
IICE type
The IICE type parameter is a read-only field that specifies the type of IICE
unit currently selected – regular (the default) or rtd (real-time debugging). The
IICE type is set from the project view in the user interface when a new IICE is
defined or by an iice sampler Tcl command with a -type option. For information
on the real-time debugging feature, see Real-time Debugging, on page 86.
Buffer Type
The Buffer type parameter specifies the type of RAM to be used to capture the
on-chip signal data. The default value is internal_memory; the hapssram setting
configures the IICE to additionally use external HAPSRAM (for more informa-
tion, see Chapter 5, HAPS Deep Trace Debug).
Sample Depth
The Sample depth parameter specifies the amount of data captured for each
sampled signal. Sample depth is limited by the capacity of the FPGAs imple-
menting the design, but must be at least 8 due to the pipelined architecture
of the IICE.
Sample depth can be maximized by taking into account the amount of RAM
available on the FPGA. As an example, if only a small amount of block RAM is
used in the design, then a large amount of signal data can be captured into
block RAM. If most of the block RAM is used for the design, then only a small
amount is available to be used for signal data. In this case, it may be more
advantageous to use logic RAM.
With always-armed triggering, you always acquire the data associated with
the last trigger condition prior to the interrupt. This mode is helpful when
analyzing a design that uses a repeated pattern as a trigger (for example, bus
cycles) and then randomly freezes. You can retrieve the data corresponding to
the last time the repeated pattern occurred prior to freezing. Using always-
armed sampling includes a minimal area and clock-speed penalty.
LO
Sample Clock
The Sample clock parameter determines when signal data is captured by the
IICE. The sample clock can be any signal in the design that is a single-bit
scalar type. Enter the complete hierarchical path of the signal as the param-
eter value.
Care must be taken when selecting a sample clock because signals are
sampled on an edge of the clock. For the sample values to be valid, the
signals being sampled must be stable when the specified edge of the sample
clock occurs. Usually, the sample clock is either the same clock that the
sampled signals are synchronous with or a multiple of that clock. The sample
clock must use a scalar, global clock resource of the chip and should be the
highest clock frequency available in the design. The source of the clock must
be the output from a BUFG/IBUFG device.
DCM/PLL
BUFG
You can also select the sample clock from the instrumentation window by
right-clicking on the watchpoint icon in the source code display and selecting
Sample Clock from the popup menu. The icon for the selected (single-bit) signal
changes to a clock face as shown in the following figure.
Sample Clock
Icon
Note: You must set the other individual IICE parameters from the Configure
IICE dialog box including the sample clock edge.
Clock Edge
The Clock edge radio buttons determine if samples are taken on the rising
(positive) or falling (negative) edge of the sample clock. The default is the
positive edge.
LO
Current IICE
The Current IICE field is used to identify the target IICE when there are multiple
IICE units defined within an implementation. The IICE is selected from the
drop-down menu.
IICE type
The IICE type parameter is a read-only field that specifies the type of IICE
unit currently selected – regular (the default) or rtd (real-time debugging). The
IICE type is set from the project view in the user interface when a new IICE is
defined or by an iice sampler Tcl command with a -type option. For information
on the real-time debugging feature, see Real-time Debugging, on page 86.
Simple Triggering
Simple triggering allows you to combine breakpoints and watchpoints to
create a trigger condition for capturing the sample data.
Complex-Counter Triggering
Complex-counter triggering augments the simple triggering by instrumenting
a variable-width counter that can be used to create a more complex trigger
function. Use the width setting to control the desired width of the counter.
State-Machine Triggering
State-machine triggering allows you to pre-instrument a variable-sized state
machine that can be used to specify an ultimately flexible trigger condition.
Use Trigger states to customize how many states are available in the state
machine. Use Trigger condition to control how many independent trigger condi-
tions can be defined in the state machine. For more information on state-
machine triggering, see State Machine Triggering, on page 156.
Note: When using external triggers, the pin assignments for the corre-
sponding input ports must be defined in the synthesis or place and
route tool.
LO
The HAPS Deep Trace Debug feature uses external SRAM as sample memory
which allows Identify to use both the FPGA internal block RAM as well as the
external HAPSRAM. With the added external memory, a much deeper, signal-
trace buffer is available.
This chapter provides detailed descriptions of the feature and its use. A step
by step tutorial using an example design is also available. The HAPS Deep
Trace Debug feature is only available with Synopsys HAPS-50, HAPS-60, and
HAPS-70 series prototyping boards using a HAPS SRAM_1x1_HTII daughter
board (HAPS-50 and HAPS-60) or a HAPS SRAM_HT3 (HAPS-70) daughter
board.
The HAPS Deep Trace Debug feature includes the capability to control the
configured sample depth. This depth can be dynamically varied using the
Sample depth option available on the IICE Sampler tab. The depth can be varied
between the minimum depth to the maximum configured depth, but cannot
exceed the maximum configured depth.
The following figure shows the HAPS Settings dialog box for the HAPS Deep
Trace Debug mode when the buffer type on the IICE Sampler tab is set to
hapssram.
Note: You can also select the hapssram buffer type using the iice sampler
hapssram Tcl command.
The individual HAPS Deep Trace Debug parameters are described in the
ensuing table.
LO
Parameter Description
Board The HAPS Deep Trace Debug feature is available only with
specific HAPS boards. The instrumentor allows selection of
hapssram buffer type only when the device used on the HAPS
board is set in the implementation options. For example, if a
Synopsys HAPS-50 device is specified in Synplify Pro, the
Identify Instrumentor enables HAPS-50 series board selection
from the drop-down menu. Similarly, if a Synopsys HAPS-60 or
HAPS-70 device is specified for the project, HAPS-60 or HAPS-70
series board selection is enabled from the drop-down menu.
SRAM locations The buffering of the instrumented samples is performed using an
external SRAM daughter card connected to any or all the
HapsTrak II or HapsTrak 3 connectors of a single FPGA. The
selection of the connectors where the daughter cards are
physically connected is done by selecting one or more HapsTrak
locations (locations 1 through 6 for HAPS-50/HAPS-60 or a
matrix location for HAPS-70) of the daughter cards for the FPGA
under debug.
SRM stack The depth of SRAM on each daughter card is 4M locations of
72-bit words for HTII SRAM cards and 8M locations of 90-bit
words for HT3 SRAM cards. To increase the external SRAM
memory depth beyond 4M x 72 or 8M x 90, the daughter cards
can be stacked. For the HTII type SRAM, 1, 2, or 4 daughter
cards can only be stacked for the selected SRAM locations and
for HT3 type SRAM cards, 1, 2, 3, or 4 cards can be stacked. The
stack number specified applies to all connector locations
specified by SRAM locations.
SRAM module The HapsTrak SRAM daughter card type is selected using this
type drop-down option.
SRAM clock type The clock to the SRAM daughter card can be either fed from the
clock used within the design (Internal) or from an external clock
source present on the HAPS board (see SRAM Clocks, on
page 50).
SRAM clock Specifies the frequency of the clock source to the SRAM. The
frequency supported SRAM operating frequency ranges for various HAPS
board and SRAM card stacks using the FPGA internal PLL
output as the SRAM clock are listed in SRAM Clocks, on
page 50.
SRAM Clocks
When the clock source is internal to the design:
• select the Internal radio button
• specify the clock signal to be used as the source clock in the adjacent
text box.
Any clock signal within the design at any hierarchy level can be instrumented
as the SRAM clock.
Specify the frequency of the clock source to the SRAM. The supported SRAM
operating frequency ranges for various HAPS boards and SRAM card stacks
using the internal PLL output as the SRAM clock are given in the following
table:
LO
For example, if Nslot = 1, NSRAM =1, Nword = 4M (4194304) and Nsignal = 1900,
the maximum sampling depth for K samples for a HapsTrak II SRAM card is
155344.
f SRAM f SRAM
f sampling ≤ f sampling ≤
N signal + 6 N signal + 6
+2 +2
72 N slot 72 N slot
90
HapsTrak II HapsTrak 3
For example, if fSRAM = 100MHz, Nslot= 1, and Nsignal= 1900, the maximum
sampling frequency for a HapsTrak II SRAM card is 3.44MHz.
3. Select one of the two patterns (pattern 0 or pattern 1) from the Self-test
drop-down menu.
LO
Selecting 0 uses one test pattern, and selecting 1 uses another pattern. To
ensure adequate testing, repeat the command using alternate pattern
settings.
The self-test can also be run from the command line using the following
syntax:
LO
The Identify tool set fully supports the synthesizable subset of both Verilog
and VHDL design languages. Designs that contain a mixture of VHDL and
Verilog can be debugged – the Identify software reads in your design files in
either language.
Design Hierarchy
Entities that are instantiated more than once are supported for instrumenta-
tion with the exception that signals that have type characteristics specified by
unique generic parameters cannot be instrumented.
Subprograms
Subprograms such as VHDL procedures and functions cannot be instru-
mented. Signals and breakpoints within these specific subprograms cannot
be selected for instrumentation.
Loops
Breakpoints within loops cannot be instrumented.
Generics
VHDL generic parameters are fully supported as long as the generic param-
eter values for the entire design are identical during both instrumentation
and synthesis.
Transient Variables
Transient variables defined locally in VHDL processes cannot be instru-
mented.
LO
Or:
process begin
wait until clk’event and clk = '1'
synchronous_assignments;
end process;
The reset polarity and clock-edge specifications above are only exemplary.
The Identify software has no restrictions with respect to the polarity of reset
and clock. A coding style that uses wait statements must have only one wait
statement and it must be at the top of the process.
Using any other coding style for flip-flop inferring processes will have the
effect that no breakpoints can be instrumented inside the corresponding
process. During design compilation, the Identify instrumentor issues a
warning when the code cannot be instrumented.
Subprograms
Subprograms such as Verilog functions and tasks cannot be instrumented.
Signals and breakpoints within these specific subprograms cannot be
selected for instrumentation.
Loops
Breakpoints within loops cannot be instrumented.
Parameters
Verilog HDL parameters are fully supported. However, the values of all the
parameters throughout the entire design must be identical during instru-
mentation and synthesis.
adder.v File
module adder (cout, sum, a, b, cin);
parameter size = 1;
output cout;
output [size-1:0] sum;
input cin;
input [size-1:0] a, b;
assign {cout, sum} = a + b + cin;
endmodule
adder8.v File
`include "adder.v"
module adder8 (cout, sum, a, b, cin);
output cout;
parameter my_size = 8;
output [my_size - 1: 0] sum;
input [my_size - 1: 0] a, b;
input cin;
adder #(my_size) my_adder (cout, sum, a, b, cin);
endmodule
adder16.v File
`include "adder.v"
module adder16 (cout, sum, a, b, cin);
output cout;
parameter my_size = 16;
output [my_size - 1: 0] sum;
input [my_size - 1: 0] a, b;
input cin;
adder #(my_size) my_adder (cout, sum, a, b, cin);
endmodule
There is a workaround for this problem. Make a copy of the include file and
change one particular include statement to refer to the copy. Signals and
breakpoints that originate from the copied include file can now be instru-
mented.
Macro Definitions
The code inside macro definitions cannot be instrumented. If a macro defini-
tion contains important parts of some instrumentable code, that code also
cannot be instrumented. For example, if a macro definition includes the case
keyword and the controlling expression of a case statement, the case state-
ment cannot be instrumented.
Always Blocks
Breakpoints inside a synchronous flip-flop inferring an always block can only
be instrumented if the always block follows the coding styles outlined below:
The reset polarity and clock-edge specifications and the use of begin blocks
above are only exemplary. The Identify instrumentor has no restrictions with
respect to these other than required by the language.
For other coding styles, the Identify instrumentor issues a warning that the
code is not instrumentable.
LO
Typedefs
You can create your own names for type definitions that you use frequently in
your code. SystemVerilog adds the ability to define new net and variable user-
defined names for existing types using the typedef keyword. Only typedefs of
supported types are supported.
Struct Construct
A structure data type represents collections of data types. These data types
can be either standard data types (such as int, logic, or bit) or, they can be
user-defined types (using SystemVerilog typedef). Signals of type structure can
only be sampled and cannot be used for triggering; individual elements of a
structure cannot be instrumented, and it is only possible to instrument
(sample only) an entire structure. The following code segment illustrates
these limitations:
module lddt_P_Struc_top (
input sig_clk, sig_rst,
.
.
. Cannot be instrumented
output struct packed { (no sampling and
no triggering)
logic_nibble up_nibble;
logic_nibble lo_nibble;
} sig_oport_P_Struc_data Instrumentable only for
); sampling; no triggering
Union Construct
A union is a collection of different data types similar to a structure with the
exception that members of the union share the same memory location.
Unions are not supported for instrumentation and it is not possible to select
a union datatype signal for either sampling or triggering. The following code
segment illustrates this limitation:
module lddt_P_Union_top (
input sig_clk, sig_rst,
input union packed {
type_P_Struc_datapkt P_Struc_data;
logic [7:0][7:0] P_Array_data; Cannot be instrumented
} sig_iport_P_Union_data, (no sampling and
output union packed { no triggering)
type_P_Struc_datapkt P_Struc_data;
logic [7:0][7:0] P_Array_data;
} sig_oport_P_Union_data
);
Arrays
Arrays having more than one dimension cannot be instrumented for
triggering. The following code segment illustrates these limitation:
LO
In the above code segment, waddress, waddress1, and raddress are one dimen-
sional packed arrays. These signals can be instrumented for both sampling
and triggering. Signals data and data1 are 2-dimensional arrays. These signals
can only be instrumented for sampling, and triggering is not allowed.
Interface
Interface and interface items are not supported for instrumentation and
cannot be used for sampling or triggering. The following code segment illus-
trates this limitation:
interface ff_if (input logic clk, input logic rst,
input logic din, output logic dout);
modport write (input clk, input rst, input din, output dout);
endinterface: ff_if
module top (input logic clk, input logic rst,
input logic din, output logic dout) ;
ff_if ff_if_top(.clk(clk), .rst(rst), .*);
sff UUT (.ff_if_0(ff_if_top.write));
endmodule
Packages
Packages permit the sharing of language-defined data types, typedef user-
defined types, parameters, constants, function definitions, and task defini-
tions among one or more compilation units, modules, or interfaces. Instru-
mentation within a package is not supported.
Concatenation Syntax
The concatenation syntax on an array watchpoint signal is not accepted by
the Identify debugger. To illustrate, consider a signal declared as:
bit [3:0] sig_bit_type;
The 4-bit vector cannot be divided into smaller vectors and concatenated (as
accepted in SystemVerilog). For example, the below syntax is not accepted:
watch enable –iice IICE {/sig_bit_type} {{2’b10,2’b01}}
LO
Identify Instrumentor
In this section, each of these areas and their uses is described. The following
discussions assume that a project (with an HDL design) has been loaded into
the Identify instrumentor.
Instrumentation Window
The instrumentation window includes a hierarchy browser on the left and the
source-code display on the right. The window is displayed when you open a
synthesis project (prj) file in the Identify instrumentor by either launching
the Identify instrumentor from a synthesis project or explicitly loading a
synthesis project into the Identify instrumentor.
Hierarchy Browser
The hierarchy browser on the left shows a graphical representation of the
design’s hierarchy. At the top of the browser is the ROOT node. The ROOT
node represents the top-level entity or module of your design. For VHDL
designs, the first level below the ROOT is the architecture of the top-level
LO
entity. The level below the top-level architecture for VHDL designs, or below
the ROOT for Verilog designs, shows the entities or modules instantiated at
the top level.
Single clicking on any element in the hierarchy browser causes the associ-
ated HDL code to be visible in the adjacent source code display.
The popup menu functions can be duplicated in the console window using
the Identify instrumentor hierarchy command in combination with either the
Identify instrumentor breakpoints or signals command. A typical Identify instru-
mentor command sequence to instrument the signal set within a design
would be:
In the above sequence, the slash (/) indicates that all of the signals in the root
hierarchy (entire design) are to be instrumented. If you specify a lower level of
hierarchy following the slash, the command only applies to that hierarchical
level. For more information on the Identify instrumentor breakpoints, signals,
and hierarchy commands, see the Reference Manual.
Black-box modules are represented by a black icon, and their contents can
not be instrumented. Also, certain modules cannot be instrumented (see
Chapter 6, Support for Instrumenting HDL, for a specific description). Modules
that cannot be instrumented are displayed in a disabled state in a grey font.
LO
Project Window
The project window is displayed when you first start up the Identify instru-
mentor (to invoke the Identify instrumentor, see Projects in the Identify
Instrumentor, on page 24).
Project
Buttons
Project
Symbols
The project window can be displayed at any time by clicking the project name
tab that remains visible when an instrumentation window is displayed.
Console Window
The console window appears below the project or instrumentation window
and displays a history of Identify instrumentor commands that have been
executed, including those executed by menu selections and button clicks.
The Identify instrumentor console window allows you to enter commands as
well as to view the results of those commands. Command history recording is
available through a transcript command (see the Reference Manual).
When you save your instrumentation (click Save project’s active implementation),
the information at the bottom of the display reports the total number of
instrumented signals to implement in each IICE. To display the resource
estimates for the FPGA device, click the IICEs resource estimation icon.
LO
Opening Projects
To launch the Identify instrumentor from the Synopsys synthesis tool
(Synplify, Synplify Pro, Synplify Premier, or Certify) graphical interface:
Identify
Implementation
3. Either right click on the Identify implementation and select Launch Identify
Instrumentor from the popup menu or click the Launch Identify Instrumentor
toolbar icon to launch the Identify instrumentor.
• Extracts the list of design files, their work directories, and the device
family from the prj file.
• Automatically compiles the design files using the synthesis tool compiler
and displays the design hierarchy and the HDL file content with all the
potential instrumentation marked and available for selection.
When importing a synthesis tool project into the Identify instrumentor, the
working directory is automatically set from the corresponding project file. See
Chapter 3, Project Handling, for details on setting up and managing projects.
To control the overhead for the trigger logic, always instrument signals that
are not needed for triggeringLO
with the Sample only selection (the watchpoint
icon is blue for sample-only signals).
Qualified clock signals can be specified as the Sample Clock (see Sample
Clock, on page 41) and bus segments can be individually specified (see
Instrumenting Buses, on page 75). In addition, signals specified as Sample and
trigger or Sample only can be included in mux groups (see Multiplexed Groups,
on page 79).
If the icon is clear (unfilled), the signal is disabled for sampling (not instru-
mented), and if the icon is red, the signal is enabled for triggering only. If the
icon is blue, the signal is enabled for sampling only, and if the icon is green,
the signal is enabled for both sampling and triggering. In the example below,
notice that when signal “grant1” is enabled, the console window displays the
text command that implements the selection and the results of executing the
command.
To disable a signal for sampling or triggering, select the signal in the Identify
instrumentor instrumentation window and then select Not instrumented from
the popup menu; the watchpoint icon will again be clear (unfilled).
Note: You can use Find to recursively search for signals and then instru-
ment selected signals directly from the Find dialog box (see Searching
for Design Objects, on page 94).
LO
Instrumenting Buses
Entire buses or individual or groups of bits of a bus can be independently
instrumented.
1. Place the cursor over a bus that has not been fully instrumented and
select Add partial instrumentation to display the following dialog box.
2. In the dialog box, enter the most- and least-significant bits in the MSB
and LSB fields. Note that the bit range specified is contiguous; to
instrument non-contiguous bit ranges, see the section, Instrumenting
Non-Contiguous Bits or Bit Ranges, on page 76.
Note: When specifying the MSB and LSB values, the index order of the bus
must be followed. For example, when defining a partial bus range for
bus [63:0] (or “63 downto 0”), the MSB value must be greater than the
LSB value. Similarly, for bus [0:63] (or “0 upto 63”), the MSB value
must be less that the LSB value.
3. Select the type of instrumentation for the specified bit range from the
drop-down menu and click OK.
When you click OK, a large letter “P” is displayed to the left of the bus
name in place of the watchpoint icon. The color of this letter indicates if
the partial bus is enabled for triggering only (red), for sampling only
(blue), or for both sampling and triggering (green).
1. Instrument the first bit range or bit as described in one of the two
previous sections.
2. Re-position the cursor over the bus, click the right mouse button, and
again select Add partial instrumentation to redisplay the Add partial bus dialog
box. Note that the previously instrumented bit or bit range is now
displayed.
Note: Bits cannot overlap groups (a bit cannot be instrumented more than
once).
LO
1. Position the cursor over the bus and click the right mouse button.
2. Highlight the bit range or bit to be changed and select the new
instrumentation type from the adjacent menu.
Note: The above procedure is also used to remove the instrumentation from
a bit or bit range by selecting Not instrumented from the menu.
Partial Instrumentation
Partial instrumentation allows fields within a record or a structure to be
individually instrumented. Selecting a compatible signal for instrumentation,
either in the RTL window or through the Find dialog box, enables the partial
instrumentation feature and displays a dialog box where the field name and
its type of instrumentation can be entered.
• Pink indicates that all fields of the record are instrumented for trigger
only
• Yellow indicates that not all fields of the record are instrumented the
same way
The figure below shows the partial instrumentation icon on signal tt. The
yellow color indicates that the individual fields (tt.r2 and tt.c2) are assigned
different types of instrumentation.
The Find dialog also uses the partial instrumentation icon to show the state of
instrumentation on fields of partially instrumented records.
Multiplexed Groups
Multiplexed groups allow signals to be assigned to logical groups. Using
multiplexed groups can substantially reduce the amount of pattern memory
required during subsequent debugging when all of instrumented signals are
not required to be loaded into memory at the same time.
Only signals or buses that are instrumented as either Sample and trigger or
Sample only can be added to a multiplexed group. To create multiplexed
groups, right click on each individual instrumented signal or bus and select
Add mux group from the popup menu.
In the Add mux group dialog box displayed, select a corresponding group by
checking the group number and then click OK to assign to the signal or bus
to that group. A signal can be included in more than one group by checking
additional group numbers before clicking OK.
• The signals group command can be used to assign groups from the
console window (see signals, on page 79 of the Reference Manual).
Command options allow more than one instrumented signal to be
assigned in a single operation and allow the resultant group assign-
ments to be displayed.
The example below consists of a top-level entity called two-level and two
instances of the repeated_unit entity. The source code of repeated_unit is
displayed, and the list of instances of the val signal is displayed by clicking on
the watchpoint icon or the signal name. Two instances of the signal val are
available for sampling:
/rtl/cnt_inst0/val
/rtl/cnt_inst1/val
LO
4. With the net highlighted, click the right mouse button, select Identify -
Copy TCL from the popup menu, and select the type of instrumentation
to be applied.
.
Note: If you are creating a new identify.idc file, you must add the IICE
definition on lines 1, 2, and 3 to the beginning of the file as
shown in the above figure.
6. Edit the entry and add an -iice option to the line as shown in the example
below (the Copy TCL command does not automatically include the IICE
unit in the entry):
signals add -iice {IICE} -sample
{/SRS/blk_xfer_inst/cntrl_ack_o_0_sqmuxa}
When you open the Identify debugger, an SRS entry is included in the
hierarchy browser; selecting this entry displays the additional signal or
signals added to the identify.idc file. Selecting a signal in the instrumentation
window brings up the Watchpoint Setup dialog box to allow a trigger expression
to be assigned to the defined signal.
Note that trigger expressions on signals added to the identify.idc file must use
the VHDL style format.
Selecting Breakpoints
Breakpoints are used to trigger data sampling. Only the breakpoints
that are instrumented in the Identify instrumentor can be enabled as
triggers in the Identify debugger. To instrument a breakpoint in the
Identify instrumentor, simply click on the circular icon to the left of the line
number. The color of the icon changes to green when enabled.
The example below consists of a top-level entity called top and two instances
of the repeated_unit entity. The source code of repeated_unit is displayed; the list
of instances of the breakpoint on line 100 is displayed by clicking on the
breakpoint icon next to the line number. As shown in the following figure,
three instances of the breakpoint are available for sampling.
The lines in the list of breakpoint instances act to toggle the selection of an
instance of the breakpoint. To disable an instance of a breakpoint that has
been previously selected, simply select the appropriate line in the list box.
Real-time Debugging
Real-time debugging is a feature that allows users of HAPS-50 and HAPS-60
series boards to provide scope or logic analyzer access to instrumented
signals directly through a Mictor board interface connector installed on the
HAPS board.
To specify the IICE from the user interface, open the Project view and click
the New IICE button to display the following dialog box. Select the RTD radio
button and click OK.
LO
To define the IICE from the console window, enter the iice new command:
In the command syntax, iiceID is the name of the new IICE and, if omitted,
defaults to an incremental number (for example, IICE_0).
Either of the above methods creates a new, real-time IICE for the design with
all of the signals “not instrumented.” This new IICE is identified by the “R”
symbol in the IICE tab.
Before you can instrument any of the signals, you must configure the HAPS
Settings tab as outlined in the next section.
1. Specify the HAPS board you are using from the Board drop-down menu.
3. When finished with the above entries, click the OK button at the bottom
of the tab.
LO
Note: To include the original HDL source with the project, select
Options->Instrumentation preference from the menu to display the Instru-
mentation Preferences dialog box and select the Save original source in
instrumentation directory check box. If the original source is to be
encrypted, additionally select the Use encryption check box. Selecting
Save original source in instrumentation directory saves the original HDL
source to the orig_sources subdirectory in the instrumentation direc-
tory when you instrument your design.
When the Use encryption check box is additionally selected, the original sources
are encrypted when they are written into the orig_sources subdirectory. The
encryption is based on a password that is requested when you write out the
instrumented project. Encryption allows you to debug on a machine that you
feel would not be sufficiently secure to store your sources. After you transfer
the instrumentation directory to the unsecure machine, you are prompted to
reenter the encryption password when you open the project in the debugger.
The decrypted files are never written to the unsecure machine’s hard disk.
Users are discouraged from transferring the instr_sources directory to the
unsecure machine, as this directory is not required for debugging.
Note: When instrumenting a VHDL file that is not compiled into the work
library, make sure that the syn_dics.vhd file is included in the
synthesis project ahead of the user design files. Additionally, this file
must be compiled into the work library.
Listing Signals
The Identify instrumentor includes a set of menu commands and, in most
cases, icons for listing watchpoint and breakpoint conditions.
LO
The Find dialog box has an area for specifying the objects to find and an area
for displaying the results of the search.
LO
The search specification also includes a Show hidden elements check box. When
this check box is enabled, the search also includes objects that would not
normally be searched such as breakpoints in dead code.
The search results window shows each object found along with its hierar-
chical location. In addition, for breakpoints and signals, the results window
includes the corresponding icon (watchpoint or breakpoint) that indicates the
instrumentation status of the qualified signal or breakpoint.
Console Text
To capture all text written to the console, use the log console command (see
the Reference Manual). Alternately, you can click the right mouse button
inside the console window and select Save Console Output from the menu.
To capture all commands executed in the console window use the transcript
command (see the Reference Manual).
To clear the text from the console, use the clear command or click the right
mouse button from within the console window and select Clear from the
menu.
LO
Identify Debugger
The Identify debugger IICE instrumentation window opens with the corre-
sponding project displayed (see Instrumentation Window, on page 100).
The initial Identify debugger project window opens. To display the instrumen-
tation window, do either of the following:
• Click the Open existing project icon in the menu bar and, in the Open Project
File dialog box, navigate to the project directory and open the corre-
sponding project (prj) file.
• Select File->Open project from the main menu and, in the Open Project File
dialog box, navigate to the project directory and open the corresponding
project (prj) file.
In this section, each of these areas and their uses are described. The
following discussions assume that:
• a project (with an HDL design) has been loaded into the Identify instru-
mentor and instrumented
• the design has been synthesized in your synthesis tool
• the synthesized output netlist has been placed and routed by the place
and route tool
• the resultant bit file has been used to program the FPGA with the
instrumented design
• the board containing the programmed FPGA is cabled to your host for
analysis by the Identify debugger
Instrumentation Window
The instrumentation window in the Identify debugger, like the instrumenta-
tion window in the Identify instrumentor, includes a hierarchy browser on
the left and the source code display on the right.
Hierarchy Browser
The hierarchy browser on the left shows a graphical representation of the
design’s hierarchy. At the top of the browser is the ROOT node. The ROOT
node represents the top-level entity or module of your design. For VHDL
designs, the first level below the ROOT is the architecture of the top-level
entity. The level below the top-level architecture for VHDL designs, or below
the ROOT for Verilog designs, shows the entities or modules instantiated at
the top level.
LO
Single clicking on any element in the hierarchy browser causes the associ-
ated HDL code to be displayed in the adjacent source code window.
Note: Signals and breakpoints that were not enabled in the Identify instru-
mentor are not displayed in the Identify debugger.
Signals that can be selected for setting watchpoints are underlined, colored in
blue text, and have small watchpoint (or “P”) icons next to them. Breakpoints
that can be activated have small green circular icons in the left margin to the
left of the line number.
Selecting the watchpoint or “P” icon next to a signal (or the signal itself)
allows you to select the Watchpoint Setup dialog box from the popup menu. This
dialog box is used to specify a watchpoint expression for the signal. See
Setting a Watchpoint Expression, on page 105.
Selecting the green breakpoint icon to the left of the source line number
causes that breakpoint to become armed when the run command is executed.
See Run Command, on page 113.
Console Window
The Identify debugger console window displays commands that have been
executed, including those executed by menu selections and button clicks.
The Identify debugger console window also allows you to type Identify
debugger commands and to view the results of command execution.
Project Window
An empty project window is displayed when you explicitly start up the
Identify debugger from the Windows or Linux platform. The window is
replaced by the instrumentation window when the synthesis project (prj) file
is read into the Identify debugger.
The project window is restored at any time by clicking its tab at the bottom of
the window.
LO
The project window displays the symbolic view of the project on the left and a
Run button with a list of all of the available IICE units that can be debugged
on the right.
LO
Activating/Deactivating an Instrumentation
The trigger conditions used to control the sampling buffer comprise break-
points, watchpoints, and counter settings (see Chapter 10, IICE Hardware
Description). Activation and deactivation of breakpoints and watchpoints are
discussed in this chapter.
The VHDL or Verilog expressions that are entered in the Watchpoint Setup
dialog box can also contain “X” values. The “X” values allow the value of some
bits of the watched signal to be ignored (effectively, “X” values are don’t-care
values). For example, the above value watchpoint expression can be specified
as “X010” which causes the watchpoint to trigger only on the values of the
three right-most bits.
LO
x"hexValue"
Clicking OK on the Watchpoint Setup dialog box activates the watchpoint (the
watchpoint or “P” icon changes to red) which is then armed in the hardware
the next time the Run button is pressed.
Deactivating a Watchpoint
By default, a watchpoint that does not have a watchpoint expression is
inactive. A watchpoint that has a watchpoint expression can be temporarily
deactivated. A deactivated watchpoint retains the expression entered, but is
not armed in the hardware and does not result in a trigger.
The Watch menu selection will have a check mark to indicate that the watch-
point is activated. Click on the Watch menu selection to toggle the check mark
and deactivate the watchpoint.
Reactivating a Watchpoint
To reactivate an inactive watchpoint, click-and-hold on the signal or the
associated watchpoint or “P” icon. Clicking the watchpoint icon redisplays the
watchpoint popup menu: clicking the “P” icon, lists the partial bus segments;
select the bus segment from the list displayed to display the watchpoint
popup menu. Click on the Watch menu selection to toggle the check mark and
reactivate the watchpoint.
Activating a Breakpoint
Instrumented breakpoints are shown in the Identify debugger as green icons
in the left margin adjacent to the source-code line numbers. Green break-
point icons are inactive breakpoints, and red breakpoint icons are active
breakpoints. To activate a breakpoint, click on the icon to toggle it from green
to red.
LO
1. Click on the IICE icon in the top menu to display the Enhanced Settings for
IICE Unit dialog box.
2. Use the drop-down menu in the Mux Group section to select the group
number to be active for the debug session.
3. The signals group command can be used to assign groups from the
console window (see signals, on page 79 of the Reference Manual).
LO
LO
Run Command
The Run command sends watchpoint and breakpoint activations to the IICE,
waits for the trigger to occur, receives data back from the IICE when the
trigger occurs, and then displays the data in the source window.
To execute the Run command for the active IICE (or a single IICE),
select Debug->Run from the menu or click the Arm selected IICE(s) for
triggering icon. If data compression is to be used on the sample data,
see Sampled Data Compression, on page 114. To execute the Run command
for multiple IICE units, open the project window (click the project window
tab), enable the individual IICE units by checking their corresponding boxes,
and either click the large Run button or select Debug->Run from the menu.
After the Run command is executed, the sample of signal values at the trigger
position is annotated to the HDL code in the source code window. This data
can be displayed in a waveform viewer (see the Identify debugger waveform
command) or written out to a file (see the Identify debugger write vcd
command).
Note: In a multi-IICE environment, you can edit and run other IICEs while
an IICE is running. The icons within the individual IICE tabs indicate
when an IICE is running (rotating arrow) and when an IICE has new
sample data (green check mark).
The following example shows a design with one breakpoint activated, the
breakpoint triggered, and the sample data displayed. The small green arrow
next to the activated breakpoint in the example indicates that this breakpoint
was the actual breakpoint that triggered. Note that the green arrow is only
present with simple triggering.
Data compression is enabled from the project view by clicking the IICE icon to
display the Enhanced Settings for IICE Unit dialog box and clicking the Enable
check box in the Data Compression section or from the command prompt by
entering the following command:
iice sampler -datacompression 1
Data compression must be set prior to executing the Run command and
applies to all enabled IICE units. Data compression is not available when
using state-machine triggering, or qualified or always-armed sampling.
LO
For example, the following command masks bits 0 through 3 of vector signal
mybus[7:0] from consideration by the data compression mechanism:
iice sampler -enablemask 1 -msb 3 -lsb 0 mybus
Similarly, to reinstate the masked signals in the above example, use the
command:
iice sampler -enablemask 0 -msb 3 -lsb 0 mybus
Determining the correct setting for the trigger position is up to the user. For
example, if the design behavior of interest usually occurs after a particular
trigger event, set the trigger position to “early.”
Early Position
The sample buffer trigger position can be set to “early” so that the
majority of the samples occurs after the trigger event. To set the
trigger position to “early,” use the Debug->Trigger Position->early menu
selection or click on the Set trigger position to early in the sample buffer icon.
Middle Position
The sample buffer trigger position defaults to “middle” so that there is
an equal number of samples before and after the trigger event. To set
the trigger position to “middle,” use the Debug->Trigger Position->middle
menu selection or click on the Set trigger position to the middle of the sample
buffer icon.
Late Position
The sample buffer trigger position can be set to “late” so that the
majority of the samples occurs before the trigger event. To set the
trigger position to “late,” use the Debug->Trigger Position->late menu
selection or click on the Set trigger position to late in the sample buffer icon.
Stop Command
The Stop command sends control back to the Identify debugger after
you have armed the trigger, but before the trigger occurs. The Stop
command can be executed by selecting Debug->Stop from the menu or
by clicking the Stop debugging hardware icon.
Note: If you are running the IICE from the project window using the Run
button and IICE check boxes (multi-IICE mode), you can stop a run
by clicking the STOP icon adjacent to the check box.
LO
The sampled data displayed in the Identify debugger is controlled by the Cycle
text field. You can manually change the cycle number by typing a number in
the entry field. Also, the up and down arrows to the right of the cycle number
increment or decrement the cycle number for each click.
Sampled data
display controls
To reset the cycle number to the default position (the zero time
position), use the Debug->Cycle->home menu selection or click on the
Goto trigger event in sample history icon.
Radix
The radix of the sampled data displayed can be set to any of a number of
different number bases. To change the radix of a sampled signal:
1. Right click on the signal name or the watchpoint or “P” icon and select
Change signal radix to display the following dialog box.
3. Click OK.
Note: You can change the radix before the data is sampled. The watchpoint
signal value will appear in the specified radix when the sampled data
is displayed.
Specifying default resets the radix to its initial intended value. Note that the
radix value is maintained in the “activation database” and that this informa-
tion will be lost if you fail to save or reload your activation. Also, the radix set
on a signal is local to the Identify debugger and is not propagated to any of
the waveform viewers.
Note: Changing the radix of a partial bus changes the radix for all bus
segments.
LO
The example below consists of a top-level entity called top and two instances
of the repeated_unit entity. In the example, the source code of repeated_unit is
displayed, and both of the lists of instances of the signal val have been instru-
mented. The two instances are /rtl/inst0/val and /rtl/inst1/val, and their data
values are displayed in the pop-up window as shown in the following figure:
Indicator of folded data Data values for instances of folded signal val
To display the instrumented values for the individual bus segments, position
the cursor over the composite bus value. The individual partial bus values
are displayed in a tooltip in the specified radix as shown in the following
figure.
Note that in the above figure, the question marks (?) in the composite bus
value (64' h3fad7910d1????36) indicate that the corresponding segment (data_in
[23:8]) has not been instrumented.
LO
The Find dialog in the Identify debugger shows a partially instrumented signal
with the P icon. You can set the trigger expressions on the fields instru-
mented for triggering in the same manner as if the signal was fully instru-
mented (that is, select the signal, right click to bring up the dialog, and select
the option to set the trigger expression).
Saving an Activation
An activation can be explicitly saved or saved on exit. To explicitly save an
activation:
3. Select File->Save activations or click the Save current activations icon in the
menu bar to bring up the following dialog box.
4. Enter (or select) an activation name in the Save current trigger settings as:
field. Selecting an existing activation from the drop-down menu
overwrites the selected activation.
5. To include the sample data set with the activation, enable the Save
current sample data check box.
Loading an Activation
To load an existing activation:
LO
To disable the auto-save feature, uncheck the Auto-save trigger settings and
sample results check box on the Debugger Preferences dialog box (select
Options->Debugger preferences).
Cross Triggering
Cross triggering allows the trigger from one IICE unit to be used to qualify a
trigger on another IICE unit, even when the two IICE units are in different
time domains. Cross triggering is available in both the simple triggering and
complex counter triggering modes (state-machine triggering supports cross
triggering by allowing the IICE unit IDs to be included in the state-machine
equations).
disabled No triggers accepted from external IICE units (event trigger can
only originate from local IICE unit)
any Event trigger from local IICE unit occurs when an event at any
IICE unit, including the local IICE unit, occurs
all Event trigger from local IICE unit occurs when all events,
irrespective of order, occur at all IICE units including the local
IICE unit
after-iiceName Event trigger from local IICE unit occurs only after the event at
selected external IICE unit iiceName has occurred (external IICE
units are individually listed)
after all Event trigger from local IICE unit occurs after all events occur
at all IICE units
Note: If the drop-down menu does not display, make sure that Allow cross-
triggering in IICE is enabled on the IICE Controller tab of the Identify
instrumentor and that you have defined more than one IICE unit.
LO
The results are displayed in the Find Design Elements dialog box.
LO
Because the Identify tool set allows you to debug your design in the HDL, the
Identify debugger must have access to the original source files. Depending on
the type of your network, the Identify debugger may be able to access the
original sources files directly from the lab machine. If this is not possible or if
the two computers are not networked, you must also copy the original
sources to the debug machine. If the Identify debugger cannot locate the
original source files, it will open the project, but an error will be generated for
each missing file, and the corresponding source code will not be visible in the
source viewer.
Copying the source files to the debug machine can be done in two ways:
• Identify can automatically include the original source files in the imple-
mentation directory so that when you copy the implementation directory
to the lab machine, the original sources files (in the orig_sources subdi-
rectory) are included. The Identify debugger automatically looks in this
directory for any missing source files. This preference is set before
compiling the instrumented design by selecting Options->Instrumentation
preference and making sure that Save original source in instrumentation directory
is checked.
• The original source files can be manually copied to the lab machine or
may already exist in a different location on this machine. In this case, it
may be necessary to help Identify locate the design files using the search-
path command. Simply call this command from the command line before
loading the project file (projectName.prj). The argument is a semi-colon-
separated (Windows) or colon-separated (Linux) list of directories in
which to find the original source files.
searchpath {d:/temp;c:/Documents and Settings/me/my_design/}
The Identify debugger will only display files that match the CRC generated at
the time of instrumentation.
Note: If there are security issues with having the original source files on the
lab machine, the Identify instrumentor can password-protect the
original sources on the development machine for use with the Identify
debugger (for information on file encryption, see Including Original
HDL Source, on page 91).
Simultaneous Debugging
When multiple Identify debugger licenses are available, multiple FPGAs
residing on a single, non-HAPS board can be debugged concurrently through
a single cable. This capability is based on semaphores that allow more than
one debugger to share the common port.
Debugger 1
pid1
PID1 Semaphore
Cable
Board
Debugger 2
pid2
PID2 FPGA1 FPGA2
LO
Identify-Analyst Integration
The display of instrumented signals captured in a VCD file by the Identify
debugger is available within the HDL Analyst in Synplify Premier.
After generating a VCD file in the Identify debugger and opening the HDL
Analyst RTL view in Synplify Premier:
1. Click the VCD Panel icon ( ) or select VCD->VCD Panel from the
HDL-Analyst menu to display the VCD control panel.
3. Click the Open a VCD File icon ( ) or select VCD->Load VCD File from the
HDL-Analyst menu to open the Load Identify VCD File dialog box.
4. In the dialog box, enter the path to the vcd file generated by the Identify
debugger (use the browse ... button) and make sure that the Identify
Debug box is checked. The Validate VCD File with Netlist check box, when
enabled, checks for mismatches between the design netlist and the VCD
file loaded.
5. Click the Load button to load the VCD file and display the instrumented
signals from the VCD file in the waveform viewer.
6. If Validate VCD File with Netlist is checked, click the Show Mismatches button
to display any mismatched LO nets. Mismatches are reported in the
Mismatching Nets dialog box.
8. To view values for the signals, select the desired signals in the waveform
viewer and select HDL-Analyst->VCD->VCD Properties. On the Parameters
tab, enable the Annotate check box.
• To load an Identify VCD file, select Load VCD File (or click the Open a VCD
File icon ( ) on the control panel).
• To re-load an Identify VCD file, select Reload VCD File (or click the Re-open
the previously loaded VCD file icon ( ) on the control panel).
When the Identify debugger generates a revised VCD file, changes to the
VCD file must be handled after it is loaded. The reload policy imple-
mented provides the following options:
– Auto – automatically reload the VCD file (the default)
– Ask – prompt if the VCD file is to be reloaded
– Never – never reload the VCD file
The reload policy is set on the Parameters tab of the VCD Properties dialog
box. When an Identify VCD file is reloaded, the tool preserves informa-
tion as much as possible such as the current time and watched signals.
• To unload an Identify VCD file, select Unload the VCD File. This option
frees up memory used byLOthe Identify debug data without having to close
and re-open the HDL Analyst view.
These functions are described in detail in the Synopsys FPGA Synthesis User
Guide.
Waveform Display
The waveform display control displays the sampled data in a waveform style.
By default, this feature uses the Synopsys DVE waveform viewer. Provision
for using other popular waveform viewers that support VCD data is included.
Alternately, you can interface your own waveform viewer by writing a custom-
ized script to access your waveform viewer from the Identify debugger. For
details, see the application note, “Interfacing Your Waveform Viewer with the
Identify Debugger” on the SolvNet website.
Viewer selection and setup are controlled by the Waveform Viewer Preferences
dialog box. Selecting Options->Debugger preferences from the menu bar brings
up the dialog box shown below.
LO
The Synopsys DVE and Verdi waveform viewers are only available on Linux
platforms. To use the included GTKWave viewer, click the GTKWave radio
button in the Default Waveform Viewer section.
The Period field sets the period for the waveform display and is independent of
the design speed.
If you select a waveform viewer from the Waveform preference dialog box that is
not installed, an error message is displayed when you attempt to invoke the
viewer. To install the waveform viewer:
2. Select the desired waveform viewer by clicking the adjacent radio button
and then click OK.
3. Make sure that the selected simulator is installed on your machine and
that the path to the executable is set by your $PATH environment
variable.
LO
User Name
Identifies the user name on the analyzer (Tektronix only).
By default, the report is displayed on the screen (standard out). The report
can be redirected to a file using the iice assignmentsreport Tcl command (see iice,
on page 55 in the Reference Manual.
LO
Console Text
To capture all the text that is written to the console, use the log console
command (see the Reference Manual). Alternately, you can click the right
mouse button inside the console window and select Save Console Output from
the menu. To capture all commands executed in the console window, use the
transcript command (see the Reference Manual).
To clear the text in the console window, use the clear command or click the
right mouse button inside the console window and select clear from the menu.
LO
Incremental Flow
Incremental flow is a multi-pass flow available for the Xilinx technologies that
allows you to make minor changes to the set of instrumented signals without
needing to resynthesize and rerun place and route on your entire design. With
the incremental flow, signals within the initial pass can be replaced with a set
of different signals for a subsequent pass. The incremental flow is shown in
the following figure.
Setup Project
Modify Instrumented
Instrument Signals
Design
Incremental
Synthesize & Re-route
Place and Route
Debug Debug
Requirements
The incremental flow supported by the Identify tool set is available only when
using a Virtex-5 or Virtex-6 Xilinx-based technology.
3. In the project view, make sure that the Prepare incremental check box is
checked.
LO
4. Instrument and save your original design and close the Identify
instrumentor.
2. Open the project view and click the Make Incremental button to display the
Create Incremental Implementation dialog box.
3. In the dialog box, select the base (original) instrumentation and use the
Browse button to select the path to the Xilinx ncd file.
Note: Make sure that you enter the path to the correct ncd file.
Note: You cannot change the device or IICE configuration in the new
instrumentation.
When you have finished removing and adding signals, save the new instru-
mentation. This action invokes the FPGA editor and runs incremental routing
in the background and creates a new ncd file in the instrumentation direc-
tory. Use this ncd file to generate your new bit file.
1. Copy the new ncd file into the Xilinx directory of the original
instrumentation.
Note: Be careful not to rerun the entire flow which would overwrite the new
ncd file and revert to the initial instrumentation.
LO
Manual Generation
The Xilinx bitgen command can be used to manually generate the bitfile form
the new ncd file. The syntax for this command is:
Note: There are many options to the bitgen command that are usually
contained in a board-specific ut file. You can call bitgen with the board-
Name.ut file as an option to pick up any site-specific command
options.
LO
Breakpoints
Breakpoints are a way to easily create a trigger that is determined by the flow
of control in the design.
In both Verilog and VHDL, the flow of control in a design is primarily deter-
mined by if, else, and case statements. The control state of these statements is
determined by their controlling HDL conditional expressions. Breakpoints
provide a simple way to trigger when the conditional expressions of one or
more if, else, or case statements have particular values.
The example below shows a VHDL code fragment and its associated break-
points.
LO
Watchpoints
A watchpoint creates a trigger that is determined by the state of a signal in
the design. The watchpoint can trigger either on the value of a signal or on a
transition of a signal from one value to another.
Sampling Block
The sampling block is basically a large memory used to store all the sampled
signals. During an active debugging session, the sampled signals are contin-
ually being stored in the sampling block. When the sampling block receives
an event from the Master Trigger Signal event logic or the complex counter
logic, the sampling block stops writing new data to the buffer and holds its
LO
contents. Eventually, the contents of the sampling block are uploaded to the
Identify debugger for display and formatting.
Whenever possible, the sampling block should use the built-in RAM blocks
that are available in most programmable chips. Otherwise, implementing the
sample buffer using individual storage elements will consume large amounts
of the logic capacity of the chip. If you have no choice but to use individual
storage elements, analyze how much logic you have available on your chip
and adjust how many signals you sample and the depth of the sample buffer.
Complex Counter
The complex counter connects the output of the breakpoint and watchpoint
event logic to the sampling block and allows the user to implement complex
triggering behavior.
During configuration, the size of the counter is specified. For example, a 16-
bit counter is the default. This default value produces a counter that ranges
from 0 to 65535.
During the debugging of the design, the complex counter is set to zero on
invocation of the Identify debugger run command. Then, it counts events from
the Master Trigger Signal event logic in a specific way depending on the
counter mode.
Finally, the counter sends a trigger event to the sample block when a termi-
nation condition occurs. The form of the termination condition depends on
the mode of operation of the counter and on the target value of the counter:
• The counter target value can be set to any value in the counter’s range.
• The counter has four modes: events, cycles, watchdog, and pulsewidth.
The counter target value and the counter mode can be set directly from the
main menu.
The following table provides a general description of the trigger behavior for
the various complex counter modes. Each mode is described in more detail in
individual subsections, and examples are included showing how the modes
are used. In both the table and subsection descriptions, the counter target
value setting is represented by the symbol n.
events Mode
In the events mode, the number of times the Master Trigger Signal logic
produces an event is counted. When the nth Master Trigger Signal event
occurs, the complex counter sends a trigger event to the sample block. For
example, this mode could be used to trigger on the 12278th time a collision
was detected in a bus arbiter.
cycles Mode
In the cycles mode, the complex counter sends a trigger event to the sample
block on the nth cycle after the first Master Trigger Signal event is received.
The clock cycles counted are from the clock defined for sampling. For
example, this mode could be used to observe the behavior of a design
2,000,000 cycles after it is reset.
watchdog Mode
In the watchdog mode, the counter sends a trigger event to the sample block
if no Master Trigger Signal events have been received for n cycles. For
example, if an event is expected to occur regularly, such as a memory refresh
cycle, this mode triggers when the expected event fails to occur.
pulsewidth Mode
In the pulsewidth mode, the complex counter sends a trigger event to the
sample block if the Master Trigger Signal logic has produced an event during
each of the most recent n consecutive cycles. For example, this mode can be
used to detect when a request signal is held high for more than n cycles
thereby detecting when the request has not been serviced within a specified
interval.
In the advanced trigger mode, multiple such trigger conditions are instru-
mented, and a runtime-programmable state machine is also instrumented to
allow you to specify the temporal and logical behavior that combines these
trigger conditions into a complex trigger function. For instance, this state
machine enables you to trigger on a certain sequence of events like “trigger if
pattern A occurs exactly five cycles after pattern B, but only if pattern C does
not intervene.”
LO
By default, the Identify instrumentor instruments the design according to the
simple trigger mode. See the following for more information on how to select
the advanced trigger mode.
Please refer to the following text to determine cost and consequences of these
settings in the Identify instrumentor.
• the counter-load signal cntld (if ‘1’, counter is loaded with cntval)
• the counter value cntval (only useful in conjunction with cntld)
The last three outputs are only present if a counter is instrumented. Please
also refer to the figure below.
cn state
c1
reg.
nstate
c0
counter
cnten
port 1, read-only cntnull
cntval
trigger
port 2, write-only
Cost Estimation
The most critical setting with respect to cost is the number of trigger condi-
tions, as each trigger condition results in an additional address bit on the
RAM, and thus doubles the size of the RAM table with each bit. Next in
importance is the counter widthLO as this factor contributes directly to RAM
table width and is especially significant in the context of FPGA RAM primi-
tives that allow a trade-off of width for depth.
The block RAM on Xilinx Virtex-II, Virtex-II Pro, Virtex-4, and Spartan-6
devices includes 18k bits per block and a number of different possible config-
urations (Virtex-5, Virtex-6, and Virtex-7 devices include 36k bits per block).
The following table provides some hints for good, trigger state-machine
settings for the smaller, 18k-bit devices when using only a single block for the
trigger-state machine.
Table 10-1: Xilinx Virtex-II, Virtex-II Pro, Virtex-4, and Spartan-6 devices
The Identify debugger watch info command reports status information about
the signal. This information is returned in machine-processible form if the
optional parameter -raw is specified.
The order in which the transitions are added is important. In each state, the
first transition condition that matches the current data is taken and any
subsequent transitions in the list that match the current data are ignored.
Conditions
The conditions are specified using Boolean expressions comprised of
variables and operators. The available variables are:
• c0,... cn, where n is the number of trigger conditions instrumented.
These variables represent the output bit of the respective trigger condi-
tion.
• titriggerInID – the ID (0 thru 7) of an external trigger input.
• cntnull – true whenever the counter is equal to 0 (only available when a
counter is instrumented).
• iiceID – variable used with cross triggering to define the source IICE units
to be included in the equation for the destination IICE trigger.
Operators are:
• Negation: not, !, ~
• AND operators: and, &&, &
• OR operators: or, ||, |
• XOR operators: xor, ^
• NOR operators: nor, ~|
• NAND operators: nand, ~&
• XNOR operators: xnor, ~^
• Equivalence operators: ==, =
• Constants: 0, false, OFF, 1, true, ON
Other Subcommands
The Identify debugger statemachine clear command deletes all transitions from
the states given in the argument, or from all states if the argument -all is
specified.
The Identify debugger statemachine info command prints the current state
machine settings for the states given in the argument, or for the entire state
machine, if the option -all is specified. If the option -raw is given, the informa-
tion is returned in a machine-processible form.
Convenience Functions
There are a number of convenience functions to set up complex triggers avail-
able in the file identifyInstallDir/share/contrib/syn_trigger_utils.tcl which is loaded into
the Identify debugger at startup:
• st_events condition integer – Sets up the state machine to mimic counter
mode events of the simple triggering mode as described above. The
argument condition is a boolean equation setting up the condition, and
integer is the counter value.
• st_watchdog condition integer – Same as st_events for watchdog mode.
• st_cycles condition integer – Same as above for cycles mode.
• st_pulsewidth condition integer – Same as above for pulsewidth mode.
• st_B_after_A conditionA conditionB [integer:=1] – Sets up a trigger mode to
trigger if conditionB becomes true anytime after conditionA became true.
The optional integer argument defaults to 1 and denotes how many
times conditionB must become true in order to trigger.
• st_B_after_A_before_C conditionA conditionB conditionC [integer:=1] – Sets up a
trigger mode to trigger if conditionB becomes true after conditionA
becomes true, but without an intervening conditionC becoming true
(same as the second example above). The optional integer argument
defaults to 1 and denotes how many times conditionB must become true
without seeing conditionC in order to trigger.
• st_snapshot_fill condition [integer] – Uses qualified sampling to sample data
until sample buffer is full. The argument condition is a boolean equation
defining the trigger condition, and integer is the number of samples to
take with each occurrence of the trigger (default 1).
• st_snapshot_intr condition [integer] – Uses qualified sampling to sample data
until manually interrupted by an Identify debugger stop command. The
argument condition is a boolean equation defining the trigger condition
and integer is the number of samples to take with each occurrence of the
trigger (default 1).
Please refer to the file syn_trigger_utils.tcl mentioned above for the implementa-
tion of these trigger modes using the Identify debugger statemachine command.
Users can add their own convenience functions by following the examples in
this file. LO
Multiple IICE designs allow triggering and sampling of signals from different
clock domains. With an asynchronous design, a separate IICE unit can be
assigned to each clock domain, triggers can be set on signals within each
IICE unit, and then the IICE units scheduled to trigger each other on a user-
defined sequence using cross triggering. In this configuration, each IICE unit
is independent and can have unique IICE parameter settings including
sample depth, sample/trigger options, and sample clock and clock edges.
For cross triggering to function correctly, the destination and the contributing
source IICE units must be instrumented by selecting breakpoints and watch-
points. Concurrently run these units either by selecting the individual IICE
units and clicking the RUN button in the Identify debugger project view or by
entering one of the following commands in the Identify debugger console
window:
run -iice all
run -iice {iiceID1 iiceID2 ... iiceIDn}
State-Machine Editor
The Identify debugger includes a graphical state-machine editor that is avail-
able when state-machine triggering is enabled for the active IICE unit on the
IICE Controller tab in the Identify instrumentor.
Each state is defined in an individual entry field. Within each entry, you can
add multiple definitions for transitioning from that state. Each transition
includes either one or two actions and a condition. The actions and condi-
tions are defined in the following tables.
Action Description
LO
Condition Description
Enter the required parameters into the dialog box. These parameters
include events, Boolean functions, transition count, and IICE unit. Click
OK after all of the parameters are entered.
• Use the Add new transition, Edit current transition, and Delete current transition
icons as required. The Add new transition and Edit current transition icons
bring up the Statemachine transition editor dialog box which allows transi-
tions to be defined or redefined.
Note that you can view the corresponding state-machine commands in the
Identify debugger console window using the statemachine info -all command.
LO
State-Machine Examples
The Identify state-machine triggering feature allows the creation of counter-
based state machines from sequences of trigger conditions to create very
effective triggers. You can set up a state-machine trigger during instrumenta-
tion and then program the state machine dynamically during debug to create
a complex, design-specific trigger.
2. From the Identify instrumentor Configure IICE dialog box, select the IICE
Controller tab, click the State Machine triggering radio button, and specify the
number of trigger states, trigger conditions, and the counter width in the
corresponding fields.
3. Build the state machine trigger from the Identify debugger console
window. The following Identify debugger command sequence is an
example.
statemachine addtrans -from 0 -to 1 -cond c0 -cntval 7 -trigger
statemachine addtrans -from 1 -to 0 -cond "cntnull"
statemachine addtrans -from 1 -to 1 -cnten -trigger
Note that in the last Identify debugger statemachine command, the -to 1
can be omitted (unnecessary because there is no change in state) and
that because the -from states are the same in the second and third
commands, execution falls through to the third command when the
second condition is not true.
The state-machine editor in the Identify debugger GUI can be used to define
the state-machine trigger event described in step 3 as shown in the following
figure.
load counter
transition transition
count = 0 c0 = 1
trigger
State 1 count = 0
transition on counter = 0
count > 0
count
trigger when counter = 0
LO
The following figure shows the state-machine transition editor (click the Add
new transition icon).
Qualified Sampling
During qualified sampling, data is sampled on every clock. The following
example uses qualified sampling to examine the data for a given number of
clock cycles. To create a complex trigger event to perform qualified sampling:
1. From the Configure IICE dialog box in the Identify instrumentor GUI,
select the IICE Controller tab, click the State Machine triggering radio button,
and enter a value in the Counter width field to define the width of the
sample buffer.
3. From the Identify debugger GUI, select qualified_fill from the Sample Mode
drop-down menu.
5. From the Identify debugger GUI, select the st_snapshot_fill macro from the
Insert Macro drop-down menu.
Enter the trigger event (the condition that will be the qualifying trigger)
in field A, enter the number of samples to be accumulated in the sample
buffer after the trigger event occurs in field N, and click OK to update the
state-machine definition.
When you click Run in the Identify debugger project window, the sample
buffer begins accumulating data when the trigger event occurs and stops
accumulating data after the specified number of samples is reached.
Note: If you use the Identify debugger st_snapshot_intr macro in place of the
st_snapshot_fill macro, the sample buffer is continually overwritten
until manually interrupted by a stop command.
You can also perform qualified sampling using equivalent Identify debugger
Tcl commands. The following Identify debugger example command sequence
samples the data every N cycles beginning with the first trigger event.
iice sampler -samplemode qualified_fill
statemachine clear -iice IICE -all
statemachine addtrans -iice IICE -from 0 -to 1
-cond "true" -cntval 0
statemachine addtrans -iice IICE -from 1 -to 2
-cond "c0" -cntval 15 -trigger
statemachine addtrans -iice IICE -from 2 -to 2
-cond "! cntnull" -cnten
statemachine addtrans -iice IICE -from 2 -to 2
-cond "cntnull" -cntval 15 -trigger
Remote Triggering
Remote triggering allows one debugger executable to send a software trigger
event to terminate data collection in the other debugger executables, effec-
tively creating a remote stop button.
waits for the trigger condition in the active IICE and then sends a trigger to all
IICE units in the debugger executable identified by process ID 12.
LO
This chapter describes methods to connect the Identify debugger to the target
hardware system. The programmable device or devices in the target system
that contain the design to be debugged are usually placed on a printed circuit
board along with a number of other support devices. The difficulty is that the
boards differ greatly in the connections between their programmable devices,
the other components, and the external connections of the boards.
This chapter outlines how to connect the Identify debugger to most of the
common board configurations and addresses the following topics:
• Basic Communication Connection
• JTAG Communication
• JTAG Hardware in Instrumented Designs
• Using the Built-in JTAG Port
• Using the Synopsys Debug Port
• JTAG Communication Debugging
• UMRBus Communications Interface
• HAPS Board Bring-up Utility
Cable Type
The cable type is selected from a drop-down menu in the Communications
settings area of the Identify debugger project window (see following figure).
LO
The following table lists the correspondence between cable-type setting and
the supported cables in the Identify debugger.
If you are using the command interface, set the com command’s cabletype
option to xilinxparallel, xilinxusb, xilinxauto, byteblaster, Microsemi_BuiltinJTAG,
JTAGTech3710, or demo according to the cable being used. Note that if you are
using the Altera builtin JTAG port, any Altera cable type can be used
(communications are controlled through the Quartus driver). If you are using
the soft JTAG port, you must use either a ByteBlaster or ByteBlaster MV
hardware cable.
If you are using the command interface, set the com command’s cableoptions
byteblaster_port option to 1 (lpt1), 2 (lpt2), 3 (lpt3), or 4 (lpt4). Different
computers have their lpt ports defined for different address ranges so the port
you use depends on how your computer is configured.
The Identify debugger uses the “standard” I/O port definitions: lpt1: 0x378-
0x37B, lpt2: 0x278-0x27B, lpt3: 0x3BC-0x3BF, and lpt4: 0x288-0x28B if it
cannot determine the proper definitions from the operating system. If the
hardware address for your parallel port does not match the addresses for lpt1
through lpt4, you can use the setsys set command variable lpt_address to set
the hardware port address (for example, setsys set lpt_address 0x0378 defines
port lpt1).
LO
If you are using the command interface, set the com command’s port cableop-
tions xilinxparallel_port option to 1 (lpt1), 2 (lpt2), 3 (lpt3), or 4 (lpt4) and set the
xilinxparallel_speed option to 5000000 (5MHz), 2500000 (2.5 MHz), or 200000
(200kHz). Note that different computers have their lpt ports defined for
different address ranges so the port you use depends on how your computer
is configured.
The Identify debugger uses the “standard” I/O port definitions: lpt1: 0x378-
0x37B, lpt2: 0x278-0x27B, lpt3: 0x3BC-0x3BF, and lpt4: 0x288-0x28B if it
cannot determine the proper definitions from the operating system. If the
hardware address for your parallel port does not match the addresses for lpt1
through lpt4, you can use the setsys set command variable lpt_address to set
the hardware port address (for example, setsys set lpt_address 0x0378 defines
port lpt1).
Note: The Xilinx USB cable is only supported on the Windows platform.
Using the older Xilinx USB black cable with a HAPS-70 system limits
the communication frequency. The newer Xilinx USB red cable does
not have this limitation.
If you are using the command interface, set the com command’s port cableop-
tions xilinxusb_speed option to 24000000 (24MHz), 12000000 (12 MHz),
6000000 (6 MHz), 3000000 (3 MHz), 1500000 (1.5MHz), or 750000 (750
kHz).
LO
If you are using the command interface, set the com command’s port cableop-
tions xilinxparallel_port, xilinxparallel_speed, and xilinxusb_speed options described
previously in Xilinx Parallel Cable Settings, on page 183 and Xilinx USB
Cable Setting, on page 184.
LO
Client-Server Configuration
To establish a client-server connection:
2. Start the server on the machine connected to the target FPGA board,
launch the debugger, and then configure the server-side debugger as
described below:
– Load the project file (design) to be debugged.
– In the debugger UI, Configure JTAG server from the Options drop-down
menu.
– Specify the server address, port number, and log file name in the
Configure JTAG client/server settings dialog box. The server address can
be either the name of the host machine or its IP address. If you do not
know the hostname or IP address, set it to localhost. Set the
client/server port according to the selected cable type. Configuring
the JTAG client-server parameters does not start the server.
– To start the server, select the Start JTAG server button in the dialog box.
Alternatively, you can run the com check command by selecting the
Comm check button in the debugger project view. If the server starts
successfully, you seeLOthe xilinxjtag or acteljtag process running in the
task manager. If the server cannot be started on the host machine, an
error message is displayed.
The following is the syntax for the equivalent TCL command to configure the
JTAG server:
To view the existing JTAG server configuration settings, use the jtag_server get
Tcl command.
Chip Programming LO
Make sure that you program the device with the instrumented version of your
design, NOT the original version.
JTAG Communication
JTAG is a 4-wire communication protocol defined by the IEEE 1149.1
standard. The JTAG standard defines the names of the four connections as:
TCK, TMS, TDI, and TDO.
TCK
JTAG TMS TAP
Cable TDI
TDO
Control
Notice in the second figure that the TCK and TMS connections are connected
directly to both devices while the TDI and TDO connections route from one
device to the other and loop back to the JTAG cable.
TCK
JTAG TMS TAP TDI
TAP
Cable TDI Control TDO
Control
TDO
LO
Using the built-in port is slightly more complicated than using the Identify
debug port because the built-in port usually has special board-level connec-
tions that facilitate the programming of the chip. Consequently, these
programming connections must be understood to properly connect the JTAG
cable to the board and to properly communicate with the IICE.
EEPROM
TCK
JTAG TMS
TAP
Control
Cable TDI
TDO
FPGA
TAP
Control
This configuration is well suited to the Identify debugger and works just like
any other serially connected chain.
Similarly, when using the Identify tool set with the Certify tool and a HAPS
board in a multi-FPGA environment, the design is distributed among the
FPGAs and the instrumented logic is included in one or more of the FPGAs.
In this configuration, the IICE unit or units in each FPGA are individually
accessed to provide the required debugging capabilities for their associated
portion of the design logic.
LO
FPGA1
TCK
JTAG TMS
TAP
Control
Cable TDI
TDO
FPGA2
TAP
Control
LO
JTAG Registers
Xilinx-based designs allow JTAG boundary-scan registers to be user-defined
through the BSCAN_VIRTEX* library macro. After configuring the Xilinx
FPGA, these registers are accessible through the JTAG controller’s TAP pins.
The Virtex-4, Virtex-5, Virtex-6, and Virtex-7 devices include four boundary-
scan registers designated USER1, USER2, USER3, and USER4; the other
supported Xilinx devices include two registers designated USER1 and
USER2.
EEPROM
TCK
JTAG TMS TAP
Control
Cable TDI
TDO
FPGA
In this case, the only connection that allows the Identify debugger to commu-
nicate with the programmable device is a soft JTAG Port. This configuration
requires a second JTAG cable to directly connect to the four I/O pins on the
programmable device as shown in the figure below.
TCK
JTAG TMS SYN TAP
Cable TDI Control
TDO
EEPROM
Configuration Port
TCK
JTAG TMS TAP
Cable TDI Control
TDO LO
EEPROM
The Identify debugger automatically detects the JTAG chain at the beginning
of the debug session. You can review the JTAG chain settings by clicking the
Show JTAG chain button in the Communications settings section of the project
window.
Configuring a device chain is very similar to the steps required to program the
device with a JTAG programmer.
For the Identify debugger, the devices in the chain must be known and speci-
fied. The following information is required to configure the device chain:
• the number of devices in the JTAG chain
• the length of the JTAG instruction register for each device
Instruction register length information is usually available in the bsd file for
the particular device. Specifically, it is the Instruction_length attribute listed in
the bsd file.
For the board used in developing this documentation, the following sequence
of commands was used to specify a chain consisting of a PROM followed by
the FPGA. The instruction length of the PROM is 8 while the instruction
length of the FPGA is 5. Note that the chain select command identifies the
instrumented device to the system. Identifying the instrumented device is
essential when a board includes multiple FPGAs.
Note: The names PROM and FPGA have no meaning to the Identify
debugger – they simply are used for convenience. The two devices
could be named device1 and device2, and the debugger would func-
tion exactly the same.
Again, the sequence of chain commands is specific to the JTAG chain on your
board; these commands are the chain commands for the board used to
develop this document – the board you use will most likely be different.
Type the following sequence in the console window of the Identify debugger:
chain clear
chain add prom 8
chain add fpga 5
chain select fpga
chain info
The following figure shows the results of the above command sequence.
LO
The last two errors can also be the result of a syn_tck signal that is not using a
high-fanout clock buffer resource, and thus may show large clock skew
properties. If you are using a parallel port, make sure that you have selected
the correct port.
LO
• ERROR: Communication with device number XX is not correct. Please check your
chain setup.
If this error appears, the previous error does not appear. Thus, the total
JTAG instruction register length is correct, but the size of the instruc-
tion register of device number XX is incorrect. It is likely that the order
of your devices is incorrect. Review your chain settings.
The UMRBus currently is available only for HAPS-60 series and HAPS-70
series systems and requires a HAPS UMRBus Interface Kit to replace the Xilinx
USB cable. The UMRBus supports only the internal_memory buffer type and
not hapssram. To enable the use of the UMRBus:
• In the Identify instrumentor, select umrbus from the Communication port
drop-down menu in the project view or set the device jtagport option to
umrbus in the console window.
• In the Identify debugger, select umrbus from the Cable type drop-down
menu in the project view or set the com cabletype option to umrbus in the
console window.
Before you can use the HAPS board bring-up utility, the following software
must be installed:
• Current version of the Identify tool set
• ConfPro GUI
The board bring-up utility is launched directly from the command prompt
using the -board_bringup option to the indentify_debugger command:
identify_debugger -board_bringup
The above command opens a special Identify debugger window with the
board bring-up utility GUI displayed in the upper left corner of the window as
shown below.
The board bring-up utility also can be launched directly from the Certify GUI
which requires both a project and an Identify implementation to be defined
for that project. A HAPS-60 or HAPS-70 board (vb) file must be included in
the defined project (an HDL LO
design is not required, but an initial board file
must be present).
To launch the HAPS Board Bring-up Utility from the Certify GUI, highlight
the Identify implementation in the Certify GUI and, with the right mouse
button, select Launch Identify in Board Bring Up and Query Mode to display the
board bring-up utility GUI in the Identify debugger.
Function Description
UMRBus Device Selects the type and location of the UMRBus device. Eight PCIe
and eight UMRBus devices can be selected from the drop-down
menu.
ConfPro Selects the ConfPro GUI. If the location of the ConfPro GUI is not
specified, you are prompted for the install location. For more
information on the ConfPro GUI, see ConfPro GUI, on page 205.
Board/System Selects the type of board/system connected to the host. The
allowed selections are haps6x (HAPS-60 system) and haps7x
(HAPS-70 system) which are available from the drop-down
menu.
Utils & Tests Selects the query/test to be run based on the type of board
system selected. For more information on the available utilities
and tests, see Utility and Board-Test Commands, on page 207
Run Runs the selected query/test to be executed.
ConfPro GUI
The ConfPro GUI is launched from the board bring-up utility in the Identify
debugger GUI. When you click the ConfPro button, the HAPS Configuration Tool
menu shown below is displayed.
The HAPS Configuration Tool dialog box includes both a File and a Platform top-
level menu as well as the top-level Help menu. Complete ConfPro GUI
documentation is available by selecting Help->Contents from the top-level
menu. The location of the ConfPro installation is specified by selecting
Options->Configure Confpro from the Identify debugger menu.
LO
board
Displays the board status to the console window. Status includes clock and
voltage settings, reset condition, daughter card connections, firmware
version, and board serial number.
prog
Programs the FPGA specified in the FPGA ID field with the contents of the
selected bin file. Click the Open button to browse to the bin file location. The
FPGA ID selection ranges from 1 to 16.
setvcc
Sets the I/O voltage for the board regions. The voltage value and region are
selected from the corresponding drop-down menus and differ with the
board/system selected. Multiple regions can be selected using the Ctrl key.
setclk
Sets the frequency for the global input clock identified by the Clock name entry
with the frequency specified in the Frequency field. The frequency value is in
kHz unless specified otherwise.
restart
Restarts the board.
confscr
Runs confprosh Tcl scripts. For example, the confprosh command can be used
to source a HAPS clock and voltage-region configuration script; the user
could then run clock checks to verify the on-board clock configuration. The
name of the script is entered in the TCL script field; use the Open button to
browse to the script location.
vbgen
Queries the HAPS system and generates a corresponding Tcl file for Certify
board file generation. The output Tcl file is written to the filename specified in
the Output TCL file field. Clicking the Save button prompts for an alternate
location to save the Tcl file (by default, the Tcl file is saved to the current
working directory).
clock_check
Reports the clock frequency of each GCLK output to allow all of the GCLK
frequencies to be verified. As an option, the location of a Tcl script can be
specified to execute any of the individual haps commands.
con_speed
Verifies the connectivity between HapsTrak connectors as well as the speed at
which HSTDM can run. The test speed is selected from the Speed drop-down
menu. The Mode drop-down menu sets the run mode. The default is fast
mode. When Mode is set to sweep, the test sweeps every channel of the
connection which can require up to four hours to complete.
umr_check
Verifies the basic functionality of the UMRBus for the FPGA specified in the
FPGA ID field. The GCLK1 frequency is specified in the Frequency field and
unless specified otherwise, is in kHz (the default is 140000 kHz).
self_test LO
Replaces the traditional, STB2 test card self test. The self_test is only avail-
able with haps6x board/system selection.
A buffer type
hapssram 48
activations buses
auto-saving 123 instrumenting partial 75
loading 122 Byteblaster cable settings 182
saving 121
always-armed triggering 40
asynchronous clocks 165 C
cable compatibility 181
B cable type 180
cable type settings
bitfile 146
Byteblaster 182
bitgen command (Xilinx) 147
JTAGTech3710 185
black boxes 68 Microsemi 186
blocks Xilinx parallel 183
controller 21 Xilinx USB 184
JTAG communication 149 Xilinxauto 184
probe 21 cables
sampling 152 connection 190
board query 204 client-server configuration 186
board-test commands 207 clocks
board-utility commands 207 asynchronous 165
boundary-scan registers 197 edge selection 42
breakpoint icon sample 41
color coding 85 SRAM 50
breakpoints commands
activating 108 bitgen (Xilinx) 147
combined with watchpoints 152 communication cable
finding 94 settings 30
folded 111 communications settings 180
in folded hierarchy 84 complex counter 153
instance selection 85 cycles mode 155
listing all 94 disabling 155
listing available 94 events mode 155
listing instrumented 94 modes 153
multiple 151 pulsewidth mode 155
selecting 84 size 153
bring-up utility 204 watchdog mode 155
buckets complex triggering 44
sample and trigger 146 condition operators 162
U
UMRBus 203
V
value watchpoint 106
variables
PAR_BELDLYRPT 144
Verdi waveform viewer 136
Verilog
hierarchy 15
instrumentation limitations 58, 61
VHDL
hierarchy 15
instrumentation limitations 56
W
watch command 160
watch icon
color coding 81