Professional Documents
Culture Documents
Advanced Xilinx FPGA PDF
Advanced Xilinx FPGA PDF
Advanced Xilinx FPGA PDF
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
Agenda - 3
Agenda
Section 5 : Reduce Debug Time
ChipScope Pro
Demo
Agenda - 4
Objectives
After completing this course, you will be able to:
Agenda - 5
Describe Virtex-II advanced architectural features and how they can be used to
improve performance
Create and integrate cores into your design flow using the CORE Generator System
Describe the different ISE options available and how they can be used to improve
performance
Describe a flow for obtaining timing closure with Advance Timing Constraints
Use FloorPlanner to improve timing
Reduce implementation time with Incremental Design Techniques and Modular Design
Techniques
Reduce debugging time with FPGA Editor
On-Chip Verification with ChipScope Pro
Prerequisites
Basic knowledge of :
Agenda - 6
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
Objectives
After completing this module, you will be able to:
Outline
Introduction
Using the CORE Generator System
CORE Generator Design Flows
Summary
A core is a ready-made function that you can instantiate into your design
as a black box
Cores can range in complexity
Types of Cores
LogiCORE
AllianceCORE
LogiCORE Solutions
Typically customizable
Fully tested, documented, and supported by Xilinx
Many are pre-placed for predictable timing
Many are unlicensed and provided for free with the Xilinx software
AllianceCORE Solutions
Point-solution cores
Sample Functions
LogiCORE solutions
DSP functions
Math functions
Accumulators, adders,
multipliers, integrators,
square root
Memories
Synchronous FIFOs
AllianceCORE solutions
Peripherals
DMA controllers
Programmable interrupt
controllers
UARTs
Communications and
networking
ATM
Reed-Solomon encoders /
decoders
T1 framers
PCMCIA, USB
Outline
Introduction
Using the CORE Generator System
CORE Generator Design Flows
Summary
Graphical User Interface (GUI) that allows central access to the cores
themselves, plus:
Data sheets
Customizable parameters (available for some cores)
Creates graphical symbols for schematic-based designs
Creates instantiation templates for HDL-based designs
Selecting a Core
Or select a core, and click the Customize or Data Sheet icons in the toolbar
Parameters
tab allows
you to
customize
the core
Web Links
tab provides
direct access
to related
Web pages
Contact tab provides
information about the vendor
Data sheet
access
Performance
expectations (not shown)
Features
Functionality
Pinout
Resource utilization
Outline
Introduction
Using the CORE Generator System
CORE Generator Design Flows
Summary
Generate a core
.EDN
&
symbol
.xco
Generate
Core
Instantiate
Implement
Simulate
Generate
Core
.xco
Instantiate
Simulate
.VHD,
.VHO, .V
.VEO
.EDN
Implement
Core generation
and integration
Located in $XILINX\bin\<platform>
Supports ModelSim, Cadence NC-Verilog, VCS, Speedwave, and Scirocco
ISE automatically uses wrapper files when cores are present in the design
VHDL: Analyze the wrapper file for each core before analyzing the file that
instantiates the core
Outline
Introduction
Using the CORE Generator System
CORE Generator Design Flows
Summary
Skills Check
Review Questions
Answers
What is the difference between the VHO/VEO files and the VHD/V files that
are created by the CORE Generator system?
Summary
A core is a ready-made function that you can drop into your design
LogiCORE products are sold and supported by Xilinx
AllianceCORE products are sold and supported by AllianceCORE
partners
Using cores can save design time and provide increased performance
Cores can be used in schematic or HDL design flows
Software updates
Download new cores as they are released
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
CORE Generator
System Lab
Objectives
After completing this lab, you will be able to:
Lab Design:
Correlate and Accumulate
Lab Overview
General Flow
Step 1:
Step 2:
Step 3:
Step 4:
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
Objectives
After completing this module, you will be able to:
Outline
Timing Reports
Interpreting Timing Reports
Report Options
Summary
Timing Reports
Timing reports enable you to determine how and why constraints were
not met
The Project Navigator can create timing reports at two points in the
design flow
The Timing Analyzer is a utility for creating and reading timing reports
Hierarchical browser
Report text
Cross Probing
Timing Constraints
Timing Summary
Number of paths covered and number of paths that failed for each constraint
Detailed descriptions of the longest paths
Report Example
Constraint summary
Total delay
Outline
Timing Reports
Interpreting Timing Reports
Report Options
Summary
Estimating Design
Performance
60/40 Rule
Under 60 percent: Good chance that the design will meet timing
60 to 80 percent: Design may meet timing if advanced options are used
Over 80 percent: Design will probably not meet timing (go back to improve
synthesis results)
Correct interpretation of timing reports can reveal the most likely cause
Logical Resource(s)
------------------source
net_1
lut_1
net_2
lut_2
net_3
lut_3
net_4
dest
-----------------------------(1.256ns logic, 4.396ns route)
(22.2% logic, 77.8% route)
Logical Resource(s)
------------------source
net_1
lut_1
net_2
lut_2
net_3
lut_3
net_4
dest
-------------------------------------6.888ns (1.256ns logic, 5.632ns route)
(18.2% logic, 81.8% route)
Logical Resource(s)
------------------source
net_1
lut_1
net_2
lut_2
net_3
lut_3
net_4
lut_4
net_5
lut_5
net_6
lut_6
net_7
dest
-------------------------------------5.559ns (2.129ns logic, 3.430ns route)
(38.3% logic, 61.7% route)
Use the retiming option during synthesis to distribute logic more evenly
between flip-flops
Confirm that good coding techniques were used to build this logic
(no nested IF or CASE statements)
Add a pipeline stage
Logical Resource(s)
------------------clk
clk_BUFGP/IBUFG
net (fanout=1)
0.019
clk_BUFGP/IBUFG
Tgi0o
0.802
clk_BUFGP/BUFG.GCLKMUX
clk_BUFGP/BUFG
net (fanout=226)
0.307
clk_BUFGP
---------------------------- -----------------------------Total
1.797ns (1.471ns logic, 0.326ns route)
(81.9% logic, 18.1% route)
Logical Resource(s)
------------------source_ff
net_1
lut_1
net_2
dest_pad_OBUF
dest_pad
---------------------------- -----------------------------Total
7.665ns (4.738ns logic, 2.927ns route)
(61.8% logic, 38.2% route)
Outline
Timing Reports
Interpreting Timing Reports
Report Options
Summary
The Post-Map and Post-Place & Route Static Timing Reports are usually
sufficient timing analysis tools
Custom reports can be created with the Timing Analyzer to:
Used for Post-Map and Post-Place & Route Static Timing Reports if design contains no
constraints
Used for Post-Map and Post-Place & Route Static Timing Reports if design contains
constraints
Analyze Against User Specified Paths by Defining Clock and I/O Timing
Options Tab
Speed grade
Constraint Details
Exclude paths
containing this net
Include Only paths
containing this net
Default
Outline
Timing Reports
Interpreting Timing Reports
Report Options
Summary
Review Questions
Answers
Summary
Timing reports enable you to determine how and why constraints were
not met
Use the synthesis report and Post-Map Static Timing Report to estimate
performance before running place & route
The detailed path description offers clues to the cause of timing failures
Cross probe to the Floorplanner to view the placement of logic in a
timing path
The Timing Analyzer can generate various types of reports for specific
circumstances
Online Help
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
Objectives
After completing this module, you will be able to:
Outline
Introduction
Creating Groups
OFFSET Constraints
Summary
Path-Specific Timing
Constraints
Multi-cycle paths
Paths that cross between clock domains
Bidirectional buses
I/O timing
Using the global PERIOD, OFFSET IN, and OFFSET OUT constraints will
constrain all of these paths
This makes it easy to control the overall performance of your design
ADATA
FLOP1
FLOP2
FLOP3
OUT1
CLK
BUFG
FLOP4
FLOP5
BUS [7..0]
CDATA
OUT2
Path-Specific
Constraint Example
FLOP1
FLOP2
D Q
D Q
FLOP3
D Q
OUT1
CLK
BUFG
FLOP4
FLOP5
D Q
D Q
BUS [7..0]
CDATA
OUT2
Creating path-specific
constraints requires two steps
Outline
Introduction
Creating Groups
OFFSET Constraints
Summary
The Constraints Editor makes this easy by allowing you to define groups
of path end points (pads, flip-flops, latches, and RAMs)
Specific delay paths can then be constrained with advanced timing
constraints
Group by nets
Group by instance name
Group by hierarchy
Group by output net name
Timing THRU Points option
Group by clock edge
Grouping by Nets or
Output Net Name
FLOP1
FLOP2
Allows you to optimize paths through specific nets and 3-state buffers
In this example, a group of nets was named TEOUTS. A constraint can now
be referenced such that only the delay paths through the TEOUTS nets will
be optimized
TPTHRU = TEOUTS
D
reg
MYCTR
reg
D
reg
Step 1
Enter TPTHRU Name
Step 2
Select Element Type
Step 3
Select Nets or 3-state
Buffers and click on Add
Managing Groups
Groups that you have defined are written into the UCF file
To add items to an existing group, click one of the grouping buttons and
use the same Time Name
You cannot remove items from a group with the Constraints Editor
Outline
Introduction
Creating Groups
OFFSET constraints
Summary
Pin-Specific OFFSET
Constraints
Click the Pad to Setup or Clock to Pad button to define group OFFSETs
OFFSET IN/OUT
constraints can also be
entered in the
Advanced tab
The Pad-to-Setup and
Clock-to-Pad options
allow you to enter
OFFSET IN/OUT
constraints on specific
groups of pads
Source Synchronous
OFFSET Constraints
OFFSET constraints define the relationship between the data and the initial
clock edge at the pins of the FPGA
Initial clock edge is defined in the global PERIOD constraint using the HIGH
or LOW keyword
If all I/O are clocked on a single edge, use the HIGH/LOW keywords in the
PERIOD constraint to define which edge is used
If both clock edges are used, create two OFFSET constraints
OFFSET IN Using
Both Clock Edges
clk
10 ns
3ns
2ns
3ns
data_rising
data_falling
t = -3 0ns 2 5
clk
3ns
10 ns
3ns
data_rising
data_falling
t = 0ns 3
Outline
Introduction
Creating Groups
OFFSET Constraints
Summary
Review Questions
OUT
C
CLK
RESET_A
RESET_B
Answers
How would you constrain this design to get a maximum internal clock
frequency of 100 MHz?
They give the implementation tools more flexibility to meet all of your timing
objectives
Assuming that the PERIOD constraint uses the HIGH keyword and
50-percent duty cycle:
Summary
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
Review of Global
Timing Constraints
Lab
Objectives
After completing this lab, you will be able to:
Lab Design:
Correlate and Accumulate
Lab Overview
General Flow
Step 1:
Step 2:
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
Objectives
After completing this module, you will be able to:
Outline
OUT
CLK
Constraining Between
Related Clock Domains
Constraining Between
Unrelated Clock Domains
In this example, the delay path between the two clock domains is NOT
covered by either of the PERIOD constraints
You must add a constraint to cover paths when crossing between related
clock domains
PERIOD CLK_B
D Q
CLK_A
CLK_B
D Q
D Q
OUT1
Constraining Between
Unrelated Clock Domains
Define groups of registers CLK_A and CLK_B with the Group by Nets option
Automatically done if you have specified a PERIOD constraint for both clock
domains
5 ns
PERIOD CLK_B
D
OUT1
CLK_A
CLK_B
Constraining Between
Unrelated Clock Domains
Constraining Between
Unrelated Clock Domains
Outline
200 MHz
CLK
PRE2
Q0 Q1
TC
CE
50 MHz
COUT14
Q2 Q3 Q4
Q14 Q15
Outline
False Paths
Outline
Miscellaneous Tab
Prorating Constraints
This will prorate the device delay characteristics to accurately reflect your
worst-case system conditions
FROM THRU TO
FROM TO
Pin-Specific OFFSETs
Group OFFSETs
Highest
False Paths
Lowest
Whenever a path is covered by more than one constraint, the tools must
choose which constraint to use for timing analysis
If the constraints are of different types, the highest priority constraint is
applied
If the constraints are of the same type (Example: FROM TO), the
decision is more complex
Under Properties for Post-Place & Route Static Timing Report, type in a
filename
In the Timing Analyzer, select Analyze Constraints Interaction
Outline
Skills Check
Review Question
Background Information
However, COUT14 registers are disabled 3/4 of the time so they do not have to
meet a 200-MHz PERIOD constraint
200 MHz
CLK
PRE2
Q0 Q1
TC
CE
50 MHz
COUT14
Q2 Q3 Q4
Q14 Q15
Review Questions
What constraints need to be placed on this design to assure it will meet the
performance objectives?
How would you enter these constraints through the Constraints Editor?
How do multi-cycle path constraints improve your designs performance?
200 MHz
CLK
PRE2
Q0 Q1
TC
CE
50 MHz
COUT14
Q2 Q3 Q4
Q14 Q15
Answers
How would you enter these constraints through the Constraints Editor?
Group the flip-flops in COUT14 by clock enable net (group name: MSB)
Constrain from MSB to MSB
They allow the implementation tools to place some logic farther apart and use
slower routing resources
Review Questions
If a PERIOD constraint were placed on this design, what delay paths would
be constrained?
If the goal is to optimize the input and output times without constraining the
paths between registers, what constraints are needed?
Status
Register
Control
Register
Control_Enable
BIDIR_PAD(7:0)
BIDIR_BUS(7:0)
Status_Enable
Answers
Paths between the control registers and the status registers would be
constrained
Status
Registers
Control
Registers
Control_Enable
BIDIR_PAD(7:0)
BIDIR_BUS(7:0)
Status_Enable
Answers
If the goal is to optimize the input and output times without constraining the
paths between registers, what constraints are needed?
Control
Registers
Control_Enable
BIDIR_PAD(7:0)
BIDIR_BUS(7:0)
Status_Enable
Summary
These paths will use slower routing resources, which frees up fast routing
for critical signals
Prorating your operating conditions gives the tools the most accurate
picture of your design environment
In general, more-specific constraints have a higher priority than lessspecific constraints
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
Achieving Timing
Closure with Advance
Constraints Lab
Objectives
After completing this lab, you will be able to:
Lab Design:
Correlate and Accumulate
Lab Overview
General Flow
Step 1:
Step 2:
Step 3:
Step 4:
Step 5:
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
Floorplanner - 2
Objectives
After completing this module, you will be able to:
Floorplanner - 4
Outline
Introduction
Floorplanning Procedures
Area Constraints & I/O Layout
PACE
Summary
Appendix:
Floorplanner - 5
RPM Core
Overcoming MAP/PAR Limitations
Pseudo Guide File with Floorplanner
Additional I/O Considerations
Floorplanner - 6
When to Floorplan
Floorplanner - 7
Floorplanner Prerequisites
Do not perform significant floorplanning unless you are very familiar with:
The design
The target device architecture
Xilinx software
Floorplanner - 8
Floorplanning Advantage:
Floorplanner - 9
Floorplanning Flow
edn, ngc
ucf
Floorplanner
NGDBUILD
ngd
MAP
fnf
ncd, pcf
PAR
ncd
Floorplanner - 10
ncf
PACE:
Easiest tool for specifying pin placement constraints and area constraints
Floorplanner:
Floorplanner - 11
Design Hierarchy
Displays colorcoded
hierarchical
Blocks.
Traverse
hierarchy to view
any component in
the design
Design Nets
Lists all the nets in the
design
Floorplanner - 12
Function
Generators
and RAM
Flip-flops
and latches
Three-state buffers
I/O pads
and global buffers
Floorplanner - 13
Floorplanner - 14
Viewing Connectivity
Floorplanner - 15
Package View
Floorplanner - 16
Timing Analyzer
Cross-Probing
The Timing Analyzer and Floorplanner can be used together to crossprobe paths
2
1
Click
Clickon
onpath
path
in
Timing
Analyzer
in Timing Analyzer
Floorplanner - 17
Path
Pathappears
appears
in
inFloorplanner
Floorplanner
Outline
Introduction
Floorplanning Procedures
Area Constraints & I/O Layout
PACE
Summary
Appendix:
Floorplanner - 18
RPM Core
Overcoming MAP/PAR Limitations
Pseudo Guide File with Floorplanner
Additional I/O Considerations
Floorplanning Procedures
Floorplanner - 19
Floorplanner - 20
Floorplanner - 21
Constraining Logic to
a Specific Location
Floorplanner - 22
Moving Logic
Select the logic that you want to move (in the Hierarchy, Placement, or
Floorplan window)
Click the logic to pick it up
Move the cursor to a new location
Click to place the logic
Floorplanner - 23
The placement algorithm for block RAM does not always result in an
optimal placement with its source and load
Consider placing most (if not all) of your block RAMs
Block RAM placement can be very critical to the timing of your design
Floorplanner - 24
Use these commands when you want to make minor layout changes
Select the logic that you want to constrain, from the Placement window
Use the command Floorplan Constrain from Placement
The layout for the selected logic is copied from the Placement window into
the Floorplan window
Make changes to the logic placement in the Floorplan window
Floorplanner - 25
For high-speed, complicated, and large I/O designs, Xilinx suggests you
manually lock I/O
Floorplanner - 26
From ISE Project Navigator: Expand Implement Design, expand Place &
Route, double-click Back-annotate Pin Locations
Floorplanner
Outline
Introduction
Floorplanning Procedures
Area Constraints & I/O Layout
PACE
Summary
Appendix:
Floorplanner - 27
RPM Core
Overcoming MAP/PAR Limitations
Pseudo Guide File with Floorplanner
Additional I/O Considerations
Floorplanner - 28
Assignments must follow the I/O banking rules and the pre-grouping of
the differential I/O pins
Clock pin assignments affect clock region access and shared input pairs
Pin Constraints
Eight global clocks or eight clocks total into each clock region
Rules previously described
Floorplanner - 29
Bit 0
Datapath
A+B
C+D
E+F
Floorplanner - 30
Floorplanner - 31
Data Flow
Control Signals
Data Buses
Control Signals
Data Buses
Floorplanner - 32
Data Flow
Control Signals
Control Signals
MSB
Floorplanner - 33
For example:
C <= A + B; or
C <= A * B;
B(3)
A(3)
B(2)
A(2)
B(1)
A(1)
B(0)
A(0)
Floorplanner - 34
Area Constraints
(a.k.a. Layout, a.k.a. AREA_GROUPs)
Area constraints allow you to provide guidance while still giving the
implementation tools freedom
This is the primary floorplanning methodology for use with incremental
design techniques
Floorplanner - 35
Area Constraints
1. Select the area group you want
to constrain
2. Click the Assign Area button
3. Click and drag to define the
area constraint
Floorplanner - 36
Area Constraint
Compression
Floorplanner - 37
Constraint: Compression
Value: <%>
Click OK
For example:
Floorplanner - 38
RANGE Constraints
RANGE constraints are written for slices, block RAM, multipliers, and 3state buffers
Slices:
Block RAMs:
Block multipliers:
Floorplanner - 39
In this situation, you are only interested in constraining the slices and
3-state buffers
Floorplanner - 40
Floorplanner - 41
Outline
Introduction
Floorplanning Procedures
Area Constraints & I/O Layout
PACE
Summary
Appendix:
Floorplanner - 42
RPM Core
Overcoming MAP/PAR Limitations
Pseudo Guide File with Floorplanner
Additional I/O Considerations
Floorplanner - 43
Package Pins
Allows pin loc
specifications
Package Pins
Legend
Floorplanner - 44
Device Architecture
Allows area
constraint
specification
Pin Constraints
Floorplanner - 45
PACE Features
To prohibit pin sites or slice sites, use the Prohibit icon in the toolbar
Floorplanner - 46
Area Constraints
1. Select the area group that
you want to constrain
2. Click the Assign Area
button
3. Click and drag to define the
area constraint
Floorplanner - 47
2
1
Area Constraint
Compression
Floorplanner - 48
Outline
Introduction
Floorplanning Procedures
Area Constraints & I/O Layout
PACE
Summary
Appendix:
Floorplanner - 49
RPM Core
Overcoming MAP/PAR Limitations
Pseudo Guide File with Floorplanner
Additional I/O Considerations
2003 Xilinx, Inc. All Rights Reserved
Review Questions
Will the implementation tools override any manual edits that decrease
performance of your design?
What is Floorplanner beneficial for?
What is the easiest and most beneficial application of floorplanning?
After which implementation steps can you perform floorplanning?
After creating a new floorplan, which phases of implementation need to
be run again?
Describe an optimal pin layout for Virtex-II/Spartan -3 devices
Floorplanner - 50
Review Questions
Floorplanner - 51
Answers
Will the implementation tools override any manual edits that decrease
performance of your design?
Floorplanner - 52
No
Answers
Floorplanner - 53
Answers
Floorplanner - 54
Answers
Design Nets
Lists all nets in the design
Floorplan (in back)
Shows the current placement
constraints and design edits
Floorplanner - 55
Placement
Shows the current design layout from the
implementation tools
Answers
Floorplanner - 56
Summary
Floorplanner - 57
Virtex-II, Virtex-II Pro, and Spartan-3 User Guides and Data book
http://support.xilinx.com Documentation
Floorplanner - 58
Outline
Introduction
Floorplanning Procedures
Area Constraints & I/O Layout
PACE
Summary
Appendix:
Floorplanner - 59
RPM Core
Overcoming MAP/PAR Limitations
Pseudo Guide-File with Floorplanner
Additional I/O Considerations
Floorplanner - 60
Step 3: Process the EDIF netlist using NGDBuild to produce an NGD file,
such as my_core.ngd
Step 4: Load your design (NGD or NCD) into the Floorplanner, and shape
the relative placement of the design
Step 5: Save your design using the Write RPM to NCF command in the
File menu
Floorplanner - 61
You must be aware that too many RPM blocks can significantly hinder
the placement tools
Floorplanner - 62
Outline
Introduction
Floorplanning Procedures
Area Constraints & I/O Layout
PACE
Summary
Appendix:
Floorplanner - 63
RPM Core
Overcoming MAP/PAR Limitations
Pseudo Guide File with Floorplanner
Additional I/O Considerations
MAP Limitations
Floorplanner - 64
Floorplanner - 65
8-Bit Inc-Dec
8 Flip-flops
Floorplanner - 66
8-Bit Inc-Dec
8 Flip-flops
8-Bit Inc-Dec
Floorplanner - 67
8 registers
Design Considerations
When locking down flip-flops, make sure you know what is sourcing them
If the flip-flops are sourced by an RPM, you should lock down the RPM
instead of the flip-flops
If flops are sourced by non-RPM logic, then it is up to you to determine
whether you want to lock down the logic
Floorplanner - 68
Constrained By Packing
F/G
H
F/G
A
D Q
Slice R1C1
MAP
D Q
F/G
H
F/G
A
D Q
D Q
Floorplanner - 69
Constrained by Packing:
Workarounds
Floorplanner - 70
Interleaving Logic
Floorplanner - 71
Interleaving Example:
Related Buses
B1
A1
B0
A0
VHDL:
process ( clk )
begin
if ( clk' event and clk = '1' ) then
Q <= (A AND B);
end if;
end process;
Floorplanner - 72
LUT
FF
LUT
FF
Verilog:
always@(posedge CLK)
OUT <= A & B;
Interleaving Example:
Dual-Port RAM
Dual-Port
RAM
Floorplanner - 73
6-7
4-5
2-3
0-1
Arithmetic
Function
The Capture Pattern and Impose Pattern commands allow you to create
a template pattern of placed logic that can be used later when placing
similar logic
Procedure:
Select a template group of logic, and click the Capture Pattern button
Select a new group of logic to impose the pattern upon and click the Impose
Pattern button
Floorplanner - 74
The new group of logic must have the same number and type of components
as the template group
Outline
Introduction
Floorplanning Procedures
Area Constraints & I/O Layout
PACE
Summary
Appendix:
Floorplanner - 75
RPM Core
Overcoming MAP/PAR Limitations
Pseudo Guide File with Floorplanner
Additional I/O Considerations
Guide Introduction
A guide file is a file from a previous implementation that is used to guide the
placement and/or routing of future implementations
Guiding of logic is based on re-using named elements (FFS, latches, RAMs,
ROMs, LUTs, BUFTs, etc.) from a previous implementation on a new one
Floorplanner - 76
Skills Check
Floorplanner - 77
Guide Questions
Floorplanner - 78
Guide Answers
Preservation of hierarchy
Small changes to overall design (generally, less than ten percent)
Floorplanner - 79
Floorplanner - 80
Floorplanner - 81
Keep in mind with this flow that you are preserving only the placement of
the synchronous elements
In addition to not placing any LUT logic, you have not retained the routing
You are only guiding the placement of LUT logic based on the location of
the synchronous elements
Floorplanner - 82
Outline
Introduction
Floorplanning Procedures
Area Constraints & I/O Layout
PACE
Summary
Appendix:
Floorplanner - 83
RPM Core
Overcoming MAP/PAR Limitations
Pseudo Guide File with Floorplanner
Additional I/O Considerations
Device Migration
Considerations
Virtex-II and Virtex-II Pro pinouts were created to allow for migration
to a larger or smaller device
For a larger device, the number of reference voltage pins will increase
(Vcco and Vref)
Those pins will need to be connected on the PCB, as if you are planning for
the larger device
Floorplanner - 84
Package Migration
Considerations
Floorplanner - 85
Floorplanner - 86
This chart describes the maximum number of SSO pins per power and
ground pair for Virtex-II devices
Do not exceed these ratings if possible
If you do, you may need to modify your design, your pin assignments, or
your system to reduce the risk of suffering from ground bounce
PACE will help you review SSO via command Tools SSO Analysis
Floorplanner - 87
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
Floorplanner - 88
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
Incremental and
Modular Design
Techniques
Objectives
After completing this module, you will be able to:
Outline
Incremental design is used to make iterative design changes to one subblock and preserve the placement and routing of unchanged blocks
Top-Level
Block Top
Sub-Block
Block A
Sub-Block
Block A1
Sub-Block
Block B
Sub-Block
Block A2
Sub-Block
Block B1
Sub-Block
Block C
Sub-Block
Block B2
Why Use
Incremental Design?
The first expectation is that the recompiled design must meet timing
How?
Top-Level
Block Top
Sub-Block
Block A
Sub-Block
Block A1
Sub-Block
Block A2
Sub-Block
Block B
Sub-Block
Block B1
Sub-Block
Block C
Sub-Block
Block B2
XC2V500 -4 FG456
Utilization:
Performance Objectives:
92% of Slices
67% of FFs
25 MHz clock
~1.5 hours
Implementation after IDT implemented (after each incremental design change):
~20 minutes
XC2V3000 -4 FF1152
Utilization:
Performance Objectives:
85% of Slices
59% of FFs
112 MHz clock
~8 hours
Implementation after IDT implemented (after each incremental design change):
2.5 hours
Outline
Sub-Block
Block A2
Team A
Incremental & Modular Design Techniques - 12
Sub-Block
Block B
Sub-Block
Block B1
Sub-Block
Block C
Sub-Block
Block B2
Team B
2003 Xilinx, Inc. All Rights Reserved
Team C
Why Use
Modular Design?
Team-based design
A Consistent Spectrum
of Flows
Divide and Conquer Methodologies
Area Groups
Simplest
Simplest
Changes
Changesstill
still
uncontrolled
uncontrolled
Incremental Design
Developed
for quick
Quick runtimes
for
runtimes
for small
small design
design
changes
changes
Simple
Simpleflow
flow
requirements
requirements
Modular Design
True
Truebottom-up
bottom-upflow:
flow:
modules
implemented
modules
implemented
separately
separately
Most
Mostcomplex
complex
Module
ModuleTSPECs
TSPECsare
are
required
required
How?
Create a layout that identifies where to place each design block on the die
Each block is fully implemented independently of one another
All blocks are combined using their individual implementation information
Block
A
Top-Level
Block Top
Sub-Block
Block A
Sub-Block
Block A1
Sub-Block
Block A2
Sub-Block
Block B
Sub-Block
Block B1
Chip Layout
Sub-Block
Block C
Sub-Block
Block B2
Block
B
Block
C
The modular design tools are available as part of all ISE toolsets starting
with 5.2
Currently, modular design tools can only be used via the command line
Skills Check
Review
Answer
Incremental Design Techniques: used for rapid bug fixes where changes
are limited to a single design block
Modular Design Techniques: used for team based designs where individual
design blocks are implemented independently by individual teams
Outline
The synthesis tool must not be allowed to optimize across these boundaries
XST, LS, Synplify pre 7.2: Individual netlists for each incremental block
Synplify using Multi-Point synthesis: One netlist for entire design
Typically, you would create between two and eight blocks
Sub-Block
Block A2
Sub-Block
Block B
Sub-Block
Block B1
Sub-Block
Block C
Sub-Block
Block B2
Generally, write out individual netlists (EDIF, NGC) for each incremental block
For incremental block netlists, you need to disable I/O insertion (I/O pads and
buffers)
Incremental Implementation
Outline
Modular Flow
Three goals:
Position global logic in the top-level design outside of the other modules
Size and position each module in the target device using the floorplanner to
create Area Groups
Position the I/O ports of each module in such a way as to guide the
implementation tools on the flow of the signals from one module to another
Phases 2 to 3:
Implementation
Phase 2:
Phase 3:
Under your work directory you will create the following structure:
/<top_level_directory>
/<active_moduleA_directory>, /<active_moduleB_directory>
Will contain top-level NGO file and UCF which are used for all active module
implementations
One directory for each active module
This will contain the active module implementation information
/<pim_directory>
At this point, clocks may not drive any loads, hand edit constraints in UCF
to specify clocks
Floorplan
floorplanner <design_name>.ngd
Such as: Top-level I/O ports, global buffers, 3-state buffers, flip-flops, and lookup tables
This allows you to maintain common top level constraints but also add module
level specific constraints
If changes are made to the UCF, rerun the modular NGDBUILD command
To incorporate all the logic for each module into the top-level design, run
ngdbuild as follows:
ngdbuild -modular assemble -pimpath pim_directory_path <design_name>.ngo
Outline
IDT/MDT Prerequisites
Basic guidelines
Partitioning
The design must have an effective functional and physical partition into
proper modules
The design should be broken into functional hierarchical blocks that can be
placed onto the chip with a well-defined physical flow
Separate structural levels and RTL levels of the code
Hierarchy Preservation
Why?
If the hierarchy is flattened, any change to any single piece of code will
require the entire design to be resynthesized
This will cause a ripple effect; any small change will effectively change the
entire netlist
Also, to effectively use incremental design, the hierarchy must be in place
Hierarchy Preservation
Exemplar, Synplicity, Synopsys, and XST synthesis tools all have the
capability to preserve the hierarchy
Synopsys:
Synplicity:
Exemplar:
XST:
Data-Flow
Block A1
Block B2
Block A2
Port Interaction
Registered Boundaries
This requires copying and renaming the entity/module for each unique instance
IDT allows this, assuming the synthesis tools support it (XST does not)
The 3-state logic should not span several different hierarchical blocks
For incremental design to be effective, the full design netlist must change
very little for each iteration
You will generally generate a netlist file for each incremental block
Select the top-level EDIF/NGC in the Xilinx implementation tools, and the
implementation tools will find the remaining files in the same directory
Or you can provide the search directory information (-sd) if each netlist is in
a separate directory/folder
Incremental Synthesis
LeonardoSpectrum
For more than one directory add -sd (search directory) for each netlist, for
example:
-sd ../<ls_blockB_directory> -sd ../<ls_blockC_directory>
Incremental Synthesis
Synplify
Incremental Synthesis
XST
Verilog example:
// synthesis attribute incremental_synthesis of <module_name> is yes;
// synthesis attribute resynthesize of <module_name> is yes;
XCF example:
MODEL <entity_name> incremental_synthesis = yes;
MODEL <module_name> incremental_synthesis = yes;
MODEL <module_name> resynthesize = yes;
Outline
Guide File
A checkerboard of changes
Incremental Design
Guide File
Due to floorplanning
For the checkerboard approach, the netlist should change less than ten
percent
For an incremental design approach, only a single incremental block should
change
Recompile only the input HDL files where the changes are made
Use the Guide Design File, and browse to the location of the previous
implementation NCD file that you want to use as the guide file
Only the packing of the logic into CLBs and IOBs will remain the same as
the guide file. No placement & routing information will be retained
Guide Mode
Exact:
Leverage:
Incremental:
Within a floorplanned block, if any component does not match the previous implementation,
none of the components within that block are guided
Outline
Review Questions
Answers
Answers
Answers
What are the basic prerequisites for incremental and modular design?
Summary
Agenda
Section 1 : Optimize Your Design for Xilinx Architecture
Floorplanner
Lab: Floorplanner
Agenda
Section 5 : Reduce Debug Time
ChipScope Pro
Demo
FPGA Editor - 2
Objectives
After completing this module, you will be able to:
FPGA Editor - 4
Outline
FPGA Editor - 5
Insert Probes
FPGA Editor - 6
When to Use
the FPGA Editor
FPGA Editor - 7
Floorplan
Carelessly control the place and route
FPGA Editor - 8
FPGA Editor
NCD
BITGEN
PAR
BIT
FPGA Editor
Push
Button
Panel
Menu
Bar
Array
Window
List
Window
History
Window
World
Window
FPGA Editor - 10
Navigating
FPGA Editor - 11
Zoom
List Window
Components
Nets
Paths
Layers
Constraints
Macros
Limit the number of elements shown
Use Wildcards (* and ?)
FPGA Editor - 12
Outline
FPGA Editor - 13
LUT
RAM
ROM
SRL
FPGA Editor - 14
Trace window
FPGA Editor - 15
FPGA Editor - 16
Calculating Skew
Net destination
Associated delay
Determine skew
FPGA Editor - 17
FPGA Editor - 18
Outline
FPGA Editor - 19
Adding a Probe:
Probes GUI
FPGA Editor - 20
Adding a Probe:
Probes GUI
FPGA Editor - 21
Defining a Probe
Method
Automatic routing
Manual routing
FPGA Editor - 22
Outline
FPGA Editor - 23
Adding Components
Adding a Component
Select the resource (slice, IOB, etc.) from the Array window
Click the add button
Complete the Component Properties box
FPGA Editor - 24
Select pin
Select add in push button panel
Complete Properties box
FPGA Editor - 25
Pin name
Modifying LUTs
FPGA Editor - 26
Modifying Other
Slice Resources
Add resources
FPGA Editor - 27
Routing Signals
FPGA Editor - 28
Default
Rerouting Signals
Auto Routing
Rerouting a signal:
FPGA Editor - 29
FPGA Editor - 30
FPGA Editor - 31
Click previously
routed segment
Hold down the Shift key
Click site pin
FPGA Editor - 32
Adding an IOB
Select IOB
FPGA Editor - 33
IOB Resources
FPGA Editor - 34
Outline
FPGA Editor - 35
Review Questions
FPGA Editor - 36
Answers
FPGA Editor - 37
FPGA Editor should not be used to Floorplan a design or control the place
and route
Answers
FPGA Editor - 38
It is necessary to document your changes because the netlist will not reflect
the changes made by the FPGA Editor
Summary
FPGA Editor - 39
Tech Tips
FPGA Editor - 40
Outline
FPGA Editor - 41
FPGA Editor - 42
FPGA Editor - 43
Instantiation of
WIDEAND Macro
VHDL
Verilog
component WIDEAND
port ( in1, in2, in3, in4 : in std_logic;
XOUT : out std_logic);
end component;
-- Instantiation of Macros ------ (port_map_name=>signal_name)
U1:WIDEAND port map (
in1=>W, in2=>X, in3=>Y, in4=>Z,
XOUT=>PROD);
FPGA Editor - 44
In an RPM
FPGA Editor - 45
FPGA Editor - 46
Converting an Existing
Design to a Macro
FPGA Editor - 47
Agenda
Section 5 : Reduce Debug Time
ChipScope Pro
Demo
FPGA Editor - 48
FPGA Editor
Lab
Objectives
After completing this lab, you will be able to:
FPGA Editor - 50
Lab Design:
Correlate and Accumulate
FPGA Editor - 51
General Flow
Step 1:
Step 2:
Step 3:
Step 4:
Step 5:
Step 6:
Step 7:
Step 8:
FPGA Editor - 52
Xilinx Confidential
Agenda
Section 5 : Reduce Debug Time
FPGA Editor: Viewing and Editing a Routed Design
Lab: FPGA Editor
Presentation Name 2
Xilinx Confidential
Presentation Name 3
Xilinx Confidential
Viterbi
OPB GPIO
OPB Bus
Arbiter
Bridge
PLB Bus
ATM Utopia L2
Presentation Name 4
Xilinx Confidential
VIRTEX-II PRO
Probe
points
JTAG
ILA Block
RAM
XC2VP20
FF1152
Xilinx Confidential
ATC
Probe
points
FPGA
Trace Port Analyzer
ChipScope Pro
JTAG
Trace
LAN
XC2VP20
FF1152
Presentation Name 6
Xilinx Confidential
ChipScope Pro
IBA
ILA with ATC
Logic Analyzer
ChipScope Pro
ILA
ChipScope Pro
ILA with ATC
Solution
Xilinx Confidential
Xilinx Confidential
Agenda
Section 5 : Reduce Debug Time
ChipScope Pro
Demo
Course Summary - 2
Course Summary
Summary
CORE Generator cores can be used to take full advantage of the Xilinx
FPGA architecture
Timing reports are used to identify critical paths and analyze the cause of
timing failures
Multi-cycle, false path, and critical path timing constraints can be easily
specified via the Advanced tab in the Xilinx Constraints Editor
Advanced implementation options, like timing-driven packing and extra
effort, can help increase performance
Floorplanner can be uses to improve timing for the design
FPGA Editor can be use to make minor changes to routed design to reduce
debugging time
You can improve implementation time with Incremental Design Techniques
and Module Design Techniques
On-Chip Verification with ChipScope Pro
Course Summary - 4
Power Estimation
Objectives
After completing this module, you will be able to:
List the three phases of the design cycle where power calculations can
be performed
Estimate power consumption by using the Xilinx Power Estimator
worksheet
Estimate power consumption by using the XPower utility
Power Estimation - 3
Outline
Power Estimation - 4
Introduction
Power Estimator Worksheet
Using XPower Software
Summary
Lower performance
Lower power requirements
No package power concerns
Package Power
Limit
PMAX
Power Estimation - 5
High Density
Low
Density
Real World Design
Power Consumption
Performance (MHz)
Power Estimation - 6
System performance
Design density
Package options
Device reliability
Estimating Power
Consumption
Power Estimation - 7
Output loading
System performance (switching frequency)
Design density (number of interconnects)
Design activity (percent of interconnects switching)
Logic block and interconnect structure
Supply voltage
Estimating Power
Consumption
Power Estimation - 8
Activity Rates
Power Estimation - 9
Outline
Power Estimation - 10
Introduction
Power Estimator Worksheet
Using XPower Software
Summary
Worksheet sections:
Power Estimation - 11
Power Estimation - 12
Power Estimation - 13
Power Estimation - 14
Outline
Power Estimation - 15
Introduction
Power Estimator Worksheet
Using XPower Software
Summary
Clock frequencies
Activity rates for nets, logic elements, and output pins
Capacitive loading on output pins
Power supply data and ambient temperature
Detailed design activity data from simulation (VCD file)
Power Estimation - 16
Running XPower
Power Estimation - 17
XPower GUI
Power Estimation - 18
XPower Reports
Power Estimation - 19
Junction temperature
Theta J-A for chosen package
. . .
------------------------------------------------------------------------------Logic:
Loads Loading(fF) C(pF) F(MHz) I(mA) P(mW)
------------------------------------------------------------------------------cha_fifo_inst/.../FIFO_BRAM.A
32
6.0
0.3
0.4
. . .
Power Estimation - 21
Outline
Power Estimation - 22
Introduction
Power Estimator Worksheet
Using XPower Software
Summary
Review Questions
Power estimations are typically made during which three phases of the
design cycle?
What methods can be used to enter activity rates into the XPower tool?
Power Estimation - 23
Answers
Power estimations are typically made during which three phases of the
design cycle?
What methods can be used to enter activity rates into the XPower tool?
Power Estimation - 24
Summary
Accurate power calculation at an early stage in the design cycle will result in
fewer problems later
XPower software is a utility for estimating the power consumption and the
junction temperature of FPGA and CPLD devices
XPower software uses activity rates to calculate total average power
consumption
Power Estimation - 25
XPower chapter
Power Estimation - 26
http://www.xilinx.com/ise/power_tools/spreadsheet_pt.htm
Advanced
Implementation
Options
Objectives
After completing this module, you will be able to:
Outline
Introduction
Timing-Driven Packing
Advanced Place & Route Options
Summary
Introduction
When to Use
Advanced Options
If timing is still not met, consider using advanced Map or Place & Route
(PAR) options
This module discusses the expected tradeoffs and benefits of each option
Outline
Introduction
Timing-Driven Packing
Advanced Place & Route Options
Summary
Timing-Driven Packing
Timing constraints are used to optimize which pieces of logic are packed
into each slice
Post-Map Static Timing Report will contain more realistic net delays
Example
FF1
FF2
FF2
Turning on
Timing-Driven Packing
Tradeoffs
Up to 200 percent
Outline
Introduction
Timing-Driven Packing
Advanced Place & Route Options
Summary
Place
Route
Running MPPR
MPPR Results
Lists all of the cost tables that were run, from best to worst
Saved results are marked
Each cost table has its own subdirectory
The best result is also copied back into the main project directory
Use this result to continue with re-entrant routing if timing has not been met
To try a different result, manually copy the files out of the subdirectory
Re-entrant Routing
Runs the Place & Route process on a design that has already been
placed & routed before
Mapped
Design
Place
Route
Re-entrant Routed
Design
When to Use
Re-entrant Routing
Right-click Implement or
Place & Route process, and
select Properties
Outline
Introduction
Timing-Driven Packing
Advanced Place & Route Options
Summary
Skills Check
Review Questions
Under what conditions will timing-driven packing have the most impact on
design performance?
What is the tradeoff when using PAR with the Extra Effort option?
Answers
Under what conditions will timing-driven packing have the most impact
on design performance?
What is the tradeoff when using PAR with the Extra Effort option?
Summary
Xilinx Embedded
Solutions
GUI
GUI
Your Code,
Apps, OS
Bash (Unix-style)
Shell with Tcl
applications
and text input
Optimized SW
Libs and
Drivers
libc.a
Xilinx
Micro-Kernel
Your
Custom
Computing
Platform
Ethernet
Ethernet
32/33
32/33PCI
PCI
LEDs
LEDs
&&
Buttons
Buttons
OPB
GPIO
128MB
128MB
DDR
DDR
SDRAM
SDRAM
Serial
Serial
Serial Serial
Port
Port
Port Port
16450
UART
16550
UART
DDR
DDR
Cntrl
Cntrl
JTAG
JTAG
4KB
4KBIOCM
IOCM
BRAM
BRAM
OPB
10/100 E-Net
OPB
PCI
2KB
BRAM
OPB
OPB
Arbiter
Arbiter
OPB
OPB
<>
<>
PLB
PLB
BRAM
Cntrl
32KB
32KB
BRAM
BRAM
PLB
PLB
Arbiter
Arbiter
BRAM
BRAM
Cntrl
Cntrl
VxWorks
VxWorks
BSP
BSP&&
Kernel
Kernel
PPC
PPC
405
405
8KB
8KBDOCM
DOCM
BRAM
BRAM
Linux
Linux
BSP
BSP&&
Kernel
Kernel
Your Custom
HW
Parameterizable
HW IP
Work
Workthe
theWay
Way
You
YouWant
WantGUI,
GUI,
Command
CommandLines
Lines
or
orBoth!
Both!
Dedicated Hard IP
DSOCM
BRAM
PowerPC
405 Core
Off-Chip
Memory
OPB
Hi-Speed
Peripheral
e.g.
Memory
Controller
ZBT SSRAM
DCR Bus
Data
PLB
Flexible Soft IP
GB
E-Net
DDR SDRAM
IBM CoreConnect
on-chip bus standard
PLB, OPB, and DCR
Bus
On-Chip Peripheral Bus
Bridge
UART
SDRAM
GPIO
Arbiter
Arbiter
Instruction
ISOCM
BRAM
On-Chip
Peripheral
BRAM
Local Memory
MicroBlaze
Bus
I-Cache
BRAM
D-Cache
BRAM
Flexible Soft IP
Configurable
Sizes
Possible in Dedicated Hard IP
PowerPC
Virtex-II Pro
Custom
Functions
UART
Bus
Bridge
10/100
E-Net
FLASH/SRAM
On-Chip
Peripheral
Data
PLB
Processor Local Bus
Hi-Speed
Peripheral
Custom
Functions
Off-Chip
Memory
Instruction
OPB
e.g.
Memory
Controller
GB
E-Net
Arbiter
LocalLink
FIFO Channels
0,1.32
Arbiter
405 Core
Standard Embedded SW
Development Flow
C Code
VHDL/Verilog
Compiler/Linker
Synthesizer
(Simulator)
Simulator
Object Code
?
CPU code in
off-chip memory
Bitstream
CPU code in
on-chip memory
Download to FPGA
Debugger
vxWorks 5.4/5.5
Nucleus
Nucleus
Neutrino
ThreadX
ThreadX
Linux
NetBSD
C/OS-II
C/OS-II
eCos
CLinux
Linux
C
OSes
Tools
;
;
;
;
;
;
;
Generated System
Dedicated Hard IP
300MHz
Flexible Soft IP
PowerPC
405 Core
INTC
Data
100MHz
Processor Local Bus
DCR Bus
100MHz
Bus
Bridge On-Chip Peripheral Bus
Arbiter
Arbiter
Instruction
16KB BRAM
Memory
Controller
Memory
Controller
10/100
Enet MAC
UARTLite
DCM
Off-Chip
Memory
32MB SDRAM
100MHz
Ref Clk In
IBM CoreConnect
On-chip bus standard
PLB, OPB & DCR
PLB2OPB
INTC
PPC
Proc_Sys_
Reset
DCM
PLB
BRAM
Cntlr
PLB
BRAM
PLB
BRAM
Cntlr
PLB
BRAM
LCD
MY IP
Timer
GPIO
PSB
GPIO
LEDs
GPIO
SWs
Additional Slides
ppc-eabi-gdb
Others
gdb remote
protocol
TCP/IP
sockets
XMD
MB/PPC Cycle
Accurate ISSes
RISCWatch
Protocol
overJTAG
Simultaneous, multiple
targets and applications
gdb remote
protocol
JTAG
TCP/IP
sockets
Serial
XMD
Protocol
MB
dbg
port
XMDStub
mb-gdb
MB-GDB
Others
Hardware-Software Integration
Enables automatic
generation of stand-alone
or RTOS BSP that
matches the custom
hardware platform
Hand-creating drivers to match
and be optimized for the
processor, bus structure and
peripherals is a time-consuming
task that involves HW and SW
developer interaction. The EDK
provides these as a push-button
process Xilinx has already
done the work (source is
provided as well)
RTOS or Application
Memory management
Threads, ITC
RTOS-specific calls
Etc.
L2 Driver
L1 Driver
L0 Driver
Custom HW Platform
Low Level or
Lightweight Driver
#defines for registers
Polled mode blocking
Etc.
As Needed
(Vendor, roll your
own, services, etc.)
Desirable
(Vendor, roll your
own, services, etc.)
Step4, Additional
Complete,
Complete,automatic
automaticBSP
BSPgeneration
generation
(Steps
1-4)
for
VxWorks
5.4/5.5
(Steps 1-4) for VxWorks 5.4/5.5on
on
PowerPC
and
XMK
on
PowerPC
PowerPC and XMK on PowerPC&&
MicroBlaze
MicroBlaze
Required
Basic
Kernel
Process management,
Schedulers, IPC facilities, etc.
Net
Standard block
open/close/read/write/chdir
.txt
Platform Studio
System
System
Details
Details
View
View
System
System
Diagram
Diagram
View
View
Integrated
IntegratedHW
HW&&SW
SW
System
SystemDevelopment
DevelopmentTools
Tools
Advanced Implementation Options - 17 - 16
Source
Source
Code
Code
Editor
Editor
Data-driven extensibility
Select MB or PPC
2
Note: Support for a generic board is in upcoming release. For now, you can
target any system as the UCF file is the only board-specific item
Configure CPU
3
Auto-Generated
Memory Map
Configure IP
4
Base HW Done!
6
Done!
4
Start
1
Identify source type
3
Bus Type
Supported EDK IP
bram_block_v1_00_a
dcm_module_v1_00_a (New)
dcr_intc_v1_00_b
dcr_v29_v1_00_a
dsbram_if_cntlr_v1_00_a
dsbram_if_cntlr_v2_00_a (New)
dsocm_v10_v1_00_a (New)
fit_timer_v1_00_a
fsl_v20_v1_00_b
isbram_if_cntlr_v1_00_a
isbram_if_cntlr_v2_00_a (New)
isocm_v10_v1_00_a
jtagppc_cntlr_v1_00_a
jtagppc_cntlr_v1_00_b (New)
lmb_bram_if_cntlr_v1_00_b
lmb_v10_v1_00_a
microblaze_v2_00_a
mii_to_rmii_v1_00_a
opb2dcr_bridge_v1_00_a
opb2plb_bridge_v1_00_c
opb_atmc_v2_00_a
opb_bram_if_cntlr_v1_00_a
opb_bram_if_cntlr_v2_00_a
opb_central_dma_v1_00_a (New)
Advanced Implementation Options - 17 - 21
opb_ddr_v1_00_b
opb_emc_v1_10_a
opb_emc_v1_10_b
opb_ethernet_v1_00_m (New)
opb_ethernetlite_v1_00_a
opb_gpio_v1_00_a
opb_gpio_v2_00_a (New)
opb_hdlc_v1_00_b (New)
opb_iic_v1_01_a
opb_intc_v1_00_b
opb_intc_v1_00_c
opb_jtag_uart_v1_00_b
opb_mdm_v1_00_b
opb_mdm_v1_00_c
opb_memcon_v1_00_a
opb_opb_lite_v1_00_a
opb_pci_v1_00_b
opb_sdram_v1_00_c
opb_spi_v1_00_b
opb_sysace_v1_00_a
opb_timebase_wdt_v1_00_a
opb_timer_v1_00_b
opb_uart16550_v1_00_c
opb_uartlite_v1_00_b
opb_v20_v1_10_b
plb2opb_bridge_v1_00_b
plb_atmc_v1_00_a
plb_bram_if_cntlr_v1_00_a
plb_ddr_v1_00_b
plb_ddr_v1_00_c
plb_emc_v1_10_b
plb_ethernet_v1_00_a (New)
plb_gemac_v1_00_b (New)
plb_rapidio_lvds_v1_00_a
plb_sdram_v1_00_c
plb_uart16550_v1_00_c
plb_v34_v1_01_a
ppc405_v1_00_a
ppc405_v2_00_a (New)
proc_sys_reset_v1_00_a
util_bus_split_v1_00_a (New)
util_flipflop_v1_00_a (New)
util_reduced_logic_v1_00_a
(New)
util_vector_logic_v1_00_a (New)
Processor IP Included as
VHDL Source
CoreConnect bus
infrastructure IP
PLB2OPB Bridge
PLB & OPB Arbiter
PLB & OPB IPIF Interface
Memory controllers
OPB Block Memory OPB
SDRAM, OPB DDR, OPB
EMC, OPB ZBT
PLB Block Memory, PLB
SDRAM, PLB DDR
Standard peripherals
OPB Timer / Counter, OPB
Watchdog Timer
OPB Uart-Lite, OPB JTAG
Uart, OPB GPIO, OPB SPI
OPB Interrupt Controller
Additional IP
OPB System ACE
controller
Xilinx Developed,
Delivered, and
Supported
Xilinx Developed,
Delivered, and
Supported
Xilinx IP Evaluation
EDK Supported IP
The Xilinx Embedded Development Kit (EDK) includes an extensive list of IP
to support designs using the IBM PowerPC hard processor core and the Xilinx
MicroBlaze soft processor core.
EDK Supported IP
The Xilinx Embedded Development Kit (EDK) includes an extensive list of IP
to support designs using the IBM PowerPC hard processor core and the Xilinx
MicroBlaze soft processor core.
EDK Supported IP
The Xilinx Embedded Development Kit (EDK) includes an extensive list of IP
to support designs using the IBM PowerPC hard processor core and the Xilinx
MicroBlaze soft processor core.
High-Performance DSP
in an FPGA
Made Easy and Affordable
Xilinx Confidential
Agenda
Why should I use FPGAs for DSP?
Which FPGAs for DSP?
VirtexTM-II Series, SpartanTM-3
Whats next?
Xilinx XtremeDSP 2
Xilinx Confidential
Agenda
Why should I use FPGAs for DSP?
Which FPGAs for DSP?
Virtex-II Series, Spartan-3
Whats Next?
Xilinx XtremeDSP 3
Xilinx Confidential
Data In
Reg
C0
Reg1
Reg0
C1
Reg2
C2
Reg255
.... C255
MAC unit
Data Out
Data Out
Xilinx Confidential
LPF
ch1
LPF
ch2
LPF
ch3
LPF
ch4
80MHz
Samples
LPF
Multi Channel
Filter
Xilinx XtremeDSP 5
Xilinx Confidential
A
Q = (A x B) + (C x D) + (E x F) + (G x H)
can be implemented in parallel
B
C
D
E
F
G
H
+
+
+
+
Xilinx Confidential
+
+
Semi-Parallel
Serial
+
+
+
+
+
+
+
DQ
+
+
DQ
Speed
Optimized for?
Cost
Xilinx Confidential
A/D
SDRAM
A/D
MACs
Hundreds of
Termination Resistors
DDC
DDC
DSP MACs
Procs.
Control
DDC
DDC Control
DDC
DDC
DDC
DDC
D/A
DUC
DUC
DUC
DUC
D/A
DUC
DUC
DUC
DUC
A/D
A/D
FPGA
Quad
TRx
DSP
Card
w
Po
SSTL3
Translators
C
rP
FPGA
SDRAM
Control
ASSP
PL4
3.125 Gbps
D/A
D/A
Xilinx XtremeDSP 8
MACs,
DUCs,
DDCs, Logic
PowerPC
Control
PowerPC
SDRAM
CORBA
Xilinx Confidential
Quad Network
TRx
Card
SDRAM
PowerPC PowerPC
ASSP
Agenda
Why should I use FPGAs for DSP?
Which FPGAs for DSP?
Virtex-II Series, Spartan-3
Whats Next?
Xilinx XtremeDSP 9
Xilinx Confidential
Industrys most used FPGAs for DSP Industrys lowest cost FPGA
90nm process
Highest performance DSP
Up to 556 hard embedded 18x18
300mm wafers
multipliers
Up to 10MB of dual port block RAM
Up to 4 PPC 405 processors for control
3.125 Gbps serial transceivers
Xilinx Confidential
multipliers
Up to 2MB of dual port block RAM
32-bit MicroBlazeTM P
Xilinx XtremeDSP 11
LUT
D
CE
LUT
D
CE
F2
LUT
LUT
F3
D
CE
D
CE
Xilinx Confidential
CE
A0
A1
A2
A3
SRL16E
RAM16x1S
Gates
Q0 Q0
0000
Q1
0001
DIN
0010
CE
0011
A0
A1Q14
A2Q15 Q15
1101
A3
0
0
DOUT
0
Dout
0
0
1110 0
CLK
1111 1
AND4
FEC
Viterbi decoder at OC3 data rates: 203 MHz
Interleaver/de-interleaver @fclk > 200 MHz
RS decoding OC192 rates (10 Gbps)
16 parallel RS decoders in a single XC2V3000-4
OC768 (40 Gbps) can also be achieved
Xilinx Confidential
Unit Price
$1,600
First
First FPGA
FPGA with
with
dedicated
dedicated DSP
DSP features
features
$1,200
First
First FPGA
FPGA with
with
DSP
DSP features
features ++ processors
processors
Industrys
Industrys first
first
-- 90nm
90nm process
process
-- 300mm
300mm wafer
wafer
-- DSP
DSP features
features
$800
$400
1999
2000
2001
2002
Xilinx Confidential
2003
2004
Control Path
MicroBlaze processor for control path
68 DMIPs at 85 MHz
Xilinx Confidential
Processor I/F
M6 Cipher
8-bit C
SHA-1
DTCP
32-bit P
VGA
Controller
MDCT for
MP3
DDR Memory
Controller
Flash
Controller
UART, I2C,
SPI, PWM
MemoryStick
Xilinx XtremeDSP 15
MMC/SD
CF+
Peripherals
Peripherals
Xilinx Confidential
PCI
Controller
1394
LVDS
Tx
Multi-Ch
CAN
Controller
USB 2.0
MOST
Front
Display
SDRAM
SDRAM
PHY
PHY
Agenda
Why should I use FPGAs for DSP?
Which FPGAs for DSP?
Virtex-II Series, Spartan-3
Whats Next?
Xilinx XtremeDSP 16
Xilinx Confidential
Filters,
MAC, DA, CIC etc.
FEC
RS, Viterbi, TPC, (De)Interleavers, TCC, AWGN etc.
Video/Imaging
DCT/IDCT, JPEG, JPEG2000, Color space conversion
Cable Modem
DOCSIS ITU-T J.83 Modulator
Xilinx XtremeDSP 17
Xilinx Confidential
Embedded
Multipliers
Digital
Down
Conversion
Interpolator
FFT Core
Frame
Synchronization
Channel
Estimation
Remove Cyclic
Prefix
Channel
Equalizer &
Detector
Frequency
Synchronization
MACbased FIR
Filter Core
DDS Core
Sample Clock
Synchronization
CORDIC Core
Xilinx XtremeDSP 18
CORDIC Core
Xilinx Confidential
FFT
FEC
FEC Cores:
Reed-Solomon Decoder
Viterbi Decoder
De-interleaver
Turbo Product Code
(TPC) Decoder
Data
In
M PEG
F ram er
8b->7 b
&
F IFO
RS
(12 8,
12 2)
In te rle a ver
Optional
R andom izer
F ram e C o n tro ls
TCM
Xilinx Confidential
2 ch.
RRC
a =0 .18
or
a =0 .12
Cable
Q
P ro g . C o n tro ls
Interlea ver S elect
Q A M S elect
Level S elect
Xilinx XtremeDSP 19
Modulator
Downlink
(Forward
Link)
Uplink
(Reverse
Link)
Rx
Tx
Mobile
Station
Interface to
Base
Station
Controller
IF Mixer&
BP Filter
Multi Carrier
Power Amp.
(MCPA)
Low Power
Antenna
Combiners
ADC
DAC
Digital
Up/Down
Conversion
Decimation LPF
Matched Filtering
Interpolation LPF
Pulse Shaping (RRC)
Digital Pre-distortion
I/Q
2nd De-interleaving
Radio frame deconstruction
Rate recovery
1st De-interleaving
FEC decoding
CRC decoding
Searcher(for multipaths)
LFSR code generator
Channel estimation
Tracking rake receiver
Multipath combiner (max ratio)
I/Q
Base Band
Processing
Xilinx Confidential
Quadrature
Modulation
QPSK
Power scaling
Dedicated phys channel generation
Phys channel combining
LFSR code generation
Spreading/scrambling
FEC Cores
Xilinx XtremeDSP 20
CRC coding
FEC coding
Rate matching
1st Interleaving
TrCH radio frame generation
2nd Interleaving
Digital
Quadrature
Demod
Digital Up Conversion
RF
FEC Cores
CDMA2000 TCC
Encoder
Convolutional Encoder
Interleaver
Rx Linear
Amplifier
Xilinx XtremeDSP 21
Xilinx Confidential
Agenda
Why should I use FPGAs for DSP?
Which FPGAs for DSP?
Virtex-II Series, Spartan-3
Whats Next?
Xilinx XtremeDSP 22
Xilinx Confidential
System
Engineers
using MATLAB
only
System
Engineers
Using
CoWare
MATLAB, Simulink
& SysGen for DSP
MATLAB &
AccelFPGA
SPW
System
Engineers
using MATLAB
& Simulink
HDL
Manual Entry of
VHDL or Verilog
HDL Automatically
Generated- SysGen
RTL Automatically
Generated
HDL Automatically
Generated
Synthesis
Leonardo Spectrum,
Synplify Pro or XST
Leonardo Spectrum
Synplify Pro or XST
Leonardo Spectrum
Synplify Pro or XST
XST
Implementation
ISE Foundation
ISE Foundation
ISE Foundation
ISE Foundation
Increasing Cost
Xilinx XtremeDSP 23
Xilinx Confidential
Xilinx Confidential
Unrivaled Capabilities on
System Generator for DSP
Hardware in the loop
co-simulation
Allows the user to simulate
part of his system on actual
hardware. This means
acceleration & verification
Xilinx XtremeDSP 25
Xilinx Confidential
Xilinx Confidential
PowerPC
PowerPC
Processor
Processor
Control Tasks
FIR Filter
Control Tasks
OCM
RAM
Processing
Traditional
FIR Filter
FIR Filter
Processing time
Xilinx XtremeDSP 27
Xilinx Confidential
UART Lite
PowerPC/
MicroBlaze
Reloadable DA
FIR Peripheral
OPB
Xilinx Confidential
Host PC
(post-processing and
filter design in Matlab)
HW Development Flow
MSS
SW Configuration
2. Automatic Software
BSP/Library Generation
Executable
in off-chip
memory
Xflow /
ProjNav
Executable
in on-chip
memory
Data2BRAM
Download to Board
MHS
LibGen PlatGen
3. Software Compilation
Executable
1. Specify Processor,
Bus & Peripherals
RTOS/eOS
GDB /
XMD
GPIO
MicroBlaze/
PPC
Arbiter
Module
in EDK
Xilinx XtremeDSP 29
UART
Xilinx Confidential
HW Configuration
2.
Automatic Hardware
Platform Generation
3. Xilinx Implementation
Flow
Bitstream
Download to FPGA
MATLAB/Simulink
Xilinx System Generator for DSP
Xilinx ISE
Synplify ProTM (Synplicity) & FPGA AdvantageTM (Mentor)
Xilinx Confidential
2 DAC channels
AD9772A D/As (14-bits up to 160 MSPS)
Xilinx Confidential
Xilinx Confidential
Agenda
Why should I use FPGAs for DSP?
Which FPGAs for DSP?
Virtex-II Series, Spartan-3
Whats Next?
Xilinx XtremeDSP 33
Xilinx Confidential
Highest
Performance
Lowest Cost
(90nm)
Comprehensive Library
Fast Turnaround
Exceptional Performance
Xilinx XtremeDSP 34
Xilinx Confidential
Systems Expertise
Whats Next?
Evaluate Xilinx System Generator for DSP
Free 60 day eval CD kit or web download
Xilinx Confidential