Vivado Design Flow for SoC
Cristian Sisterna Universidad Nacional de San Juan Argentina
Vivado ICTP - IAEA
1
Vivado Design Flow for SoC Cristian Sisterna Universidad Nacional - - PowerPoint PPT Presentation
Vivado Design Flow for SoC Cristian Sisterna Universidad Nacional de San Juan Argentina ICTP - IAEA 1 Vivado Why Vivado Design Suite? Larger FPGAs lead to more difficult design issues Users integrating more functionality into the FPGA
Cristian Sisterna Universidad Nacional de San Juan Argentina
Vivado ICTP - IAEA
1
Larger FPGAs lead to more difficult design issues
example)
FPGA designs are now looking like ASIC platform designs
partitions)
ICTP - IAEA
2
Vivado
Vivado Design Suite provides solution to all of the above
Interactive design and analysis
utilization, timing constraint analysis, and entry
RTL development and analysis
XSIM simulator integration
package
I/O pin planning
ICTP - IAEA
3
Hierarchical Design Analysis and Implementation Environment
Vivado
Visualize and debug a design at any flow stage
ICTP - IAEA
4
Vivado
ICTP - IAEA
5
Vivado
Tcl Console enables the designer to actively query the design netlist Full Tcl scripting support in two design flows
Project-based design flow provides easy project management by the Vivado IDE Non-project batch design flow enables entire flow to be executed in memory
Journal and log files can be used for script construction
ICTP - IAEA
6
Vivado
ICTP - IAEA
7
Vivado
Interactive IP plug-n-play environment
AXI4, IP_XACT
Common constraint language (XDC) throughout flow
Apply constraints at any stage
Reporting at any stage
Robust Tcl API
Common data model throughout the flow
“In memory” model improves speed Generate reports at all stages
Save checkpoint designs at any stage
Netlist, constraints, place and route results
ICTP - IAEA
8
Vivado
All project data is stored in a project_name directory containing the following
project file)
netlists, and XDC files
ICTP - IAEA
9
Vivado
Journal file (vivado.jou)
Log file (vivado.log)
info, warning, error messages, etc.
Location
C:\Users\<user_name>\AppData\Roaming\Xilinx\Vivado
ICTP - IAEA
10
Vivado
ICTP - IAEA
11
Spec HDL Elaborate Behavioral Verification Synthesis Implementation Timing Verification Create Project (Block Design)
Constraints IPs
Bitstream Generation / Hardware Export
Vivado
Optional Optional
Constraints Constraints
Optional
ICTP - IAEA
12
Vivado
ICTP - IAEA
13
Vivado
Vivado ICTP - IAEA
14
Vivado ICTP - IAEA
15
Menu Bar Main Toolbar Workspace Status Bar Data Window Flow Navigator Status Bar Results Window Area
ICTP - IAEA
16
Main Components of the Project Navigator
panel.
guide the design from start to finish.
sources, such as Property Window, Netlist Window, and Source Window
progresses
message for each process, Tcl Console, Tcl commands of each activity, Reports, reports generated throughout the design flow, Desing Runs, display the different run for the current project
Vivado
ICTP - IAEA
17
Vivado
ICTP - IAEA
18
Vivado
To add multiple IP to the Block Design, you can highlight the additional desired IP (Ctrl+Click) and press the Enter key.
ICTP - IAEA
19
Vivado
ICTP - IAEA
20
Vivado
ICTP - IAEA
21
Vivado
ICTP - IAEA
22
Vivado
ICTP - IAEA
23
Vivado
ICTP - IAEA
24
Vivado
ICTP - IAEA
25
Vivado
ICTP - IAEA
26
Connecting IPs – Making Connections Manually
Vivado
ICTP - IAEA
27
Vivado
ICTP - IAEA
28
Connecting IPs – Making Connections With the Tool
Vivado
Connection Automation
ICTP - IAEA
29
Connecting IPs – Making Connections With the Tool
Vivado
ICTP - IAEA
30
Vivado
ICTP - IAEA
31
Vivado
ICTP - IAEA
32
Vivado
ICTP - IAEA
33
Vivado
ICTP - IAEA
34
DRC (Desing Rule Check) Design Validation
Vivado
ICTP - IAEA
35
Vivado
ICTP - IAEA
36
Vivado
ICTP - IAEA
37
Memory-Map Address Space
Vivado
ICTP - IAEA
38
Vivado
ICTP - IAEA
39
Vivado
ICTP - IAEA
40
Vivado
ICTP - IAEA
41
Spec HDL Elaborate Behavioral Verification Synthesis Implementation Timing Verification Create Project (Block Design)
Constraints IPs
Bitstream Generation
Vivado
ICTP - IAEA
42
Vivado
Accessed through the Flow Navigator by selecting Open Elaborated Design Representation of the design before synthesis
ICTP - IAEA
43
Vivado
Object names are extracted from RTL
ICTP - IAEA
44
Vivado
In a RTL based design, elaboration is the first step Click on the Open Elaborated Design under RTL Analysis to
You can check RTL structure, syntax, and logic definitions Analysis and reporting capabilities include:
views, including instantiations and logic definitions within the RTL source files
ICTP - IAEA
45
Vivado
When Schematic is clicked under the Elaborated Design, the schematic is
ICTP - IAEA
Synthesis and Reports 13-46
Vivado
Select an object in the schematic, right-click, and select Go To Source to view where the
ICTP - IAEA
47
Vivado
ICTP - IAEA
48
Vivado
ICTP - IAEA
49
Spec HDL Elaborate Behavioral Verification Synthesis Implementation Timing Verification Create Project (Block Design)
Constraints IPs
Bitstream Generation
Vivado
Constraints
Optional
ICTP - IAEA
50
Vivado
Synthesis of an RTL design not only optimizes the gate-level design but also maps the netlist to Xilinx primitives (sometimes called technology mapping)
ICTP - IAEA
51
Logic Optimization and Mapping to Device Primitives
Vivado
Accessed through the Flow Navigator by selecting Open Synthesized Design Representation of the design after synthesis
Object names are the same as names in the elaborated netlist when possible
ICTP - IAEA
52
Vivado
Flow Navigator is optimized to provide quick access to the
between clock domains
bidirectional pins in the design
Report
customized for the power supply and application environment
ICTP - IAEA
53
Vivado
While the Flow Navigator points to the most important reports, the Reports tab contains several other useful reports
RTL design
(technology-mapped cell usage)
ICTP - IAEA
54
Vivado
Reports slice logic, memory, DSP slice, IO, clocking, and other resources used by the design
ICTP - IAEA
55
Vivado
ICTP - IAEA
56
Vivado
ICTP - IAEA
57
Spec HDL Elaborate Behavioral Verification Synthesis Implementation Timing Verification Create Project (Block Design)
Constraints IPs
Bitstream Generation
Vivado
Constraints
Optional
ICTP - IAEA
58
Spec HDL Elaborate Behavioral Verification Synthesis Implementation Timing Verification Create Project (Block Design)
Constraints IPs
Bitstream Generation
Vivado
Constraints
Optional
Vivado Design Suite Implementation process transform a logical netlist (generated by the synthesis tool) into a placed and routed design ready for bitstream generation
ICTP - IAEA
59
Vivado
There are two types of design constraints, physical constraints and timing constraints.
ICTP - IAEA
60
Using Design Constraints for Guiding Implementation
Physical Constraints: define a relationship between logic design objects and device resources
Timing Constraints: define the frequency requirements for the design. Without timing constraints, Vivado Design Suite optimizes the design solely for wire length and routing congestion and makes no effort to asses or improve design performance
Vivado
Viewing the Log in the Log Window The Log window opens in the Vivado IDE after you launch a run. It shows the standard output messages. It also displays details about the progress of each individual implementation process, such as place_design and route_design.
ICTP - IAEA
61
Vivado
the exact placement of the resource on the die
Report Timing Summary
logic and its connections is shown in the Device view
with static timing analysis
ICTP - IAEA
62
Vivado
ICTP - IAEA
63
Vivado
ICTP - IAEA
64
Vivado
ICTP - IAEA
65
Vivado
Software development is performed with the Xilinx Software Development Kit tool (SDK) The design must be opened if a bitstream of the design is generated The Block design must be open before the design can be exported An XML description of the hardware is imported in the SDK tool
The SDK tool will then associate user software projects to hardware
ICTP - IAEA
66
Vivado
File Description
system.xml This file opens by default when you launch SDK and displays the address map of your system ps7_init.c s7_init.h The ps7_init.c and ps7_init.h files contain the initialization code for the Zynq Processing System and initialization settings for DDR, clocks, PLLs and MIOs. SDK uses these settings when initializing the PS so applications can run on top of the PS. ps7_init.tcl This is the Tcl version of the init file ps7_init.html This init file describes the initialization data.
ICTP - IAEA
67
Exporting IP Integrator Design to SDK – Main Files
Vivado
ICTP - IAEA
68
Vivado
There are three basic timing constraints applicable to a sequential machine
ICTP - IAEA
69
Vivado
ICTP - IAEA
70
Vivado
ICTP - IAEA
Creating Basic Timing Constraints in Vivado IDE
Vivado
ICTP - IAEA
72
Vivado
ICTP - IAEA
73
Vivado
ICTP - IAEA
74
Vivado
Vivado ICTP - IAEA
75
ICTP - IAEA
76
Vivado
ICTP - IAEA
77
Blue “Done” LED
Vivado
ICTP - IAEA
78
Vivado
ICTP - IAEA
79
Embedded System Design – Vivado-SDK Flow
Spec HDL Elaborate Behavioral Verification Synthesis Implementation Timing Verification Create Project (Block Design)
Constraints IPs
Hardware Export
Vivado
Vivado ICTP - IAEA
80
Embedded System Design – Vivado-SDK Flow
Eclipse IDE-based Software Development Kit (SDK)
Board support packages (BSPs)
ICTP - IAEA
81
Vivado
C/C++ project outline displays the elements
easy identification C/C++ editor for integrated software creation Code outline displays elements of the software file under development with file decorators (icons) for easy identification Problems, Console, Properties views list
software development flow
ICTP - IAEA
82
1 2 3 4
Vivado
Create software platform
System software, board support package LibGen program
Create software application Optionally, create linker script Build project
Compile, assemble, link output file <app_project>.elf
ICTP - IAEA
83
Vivado
Vivado ICTP - IAEA
84
Vivado ICTP - IAEA
85
Software is managed in three major areas
resources
ICTP - IAEA
86
Vivado
Xilinx additions to the Eclipse IDE
ICTP - IAEA
87
Vivado
AGREGAR DEBUG PERSPECTIVE
Vivado ICTP - IAEA
88
ICTP - IAEA
89
Vivado
Up to 24 CMTs per device One MMCM and one PLL per CMT Two software primitives (instantiation)
PLL is primarily intended for use with the I/O phaser for high-speed memory controllers The MMCM is the primary clock resource for user clocks
ICTP - IAEA
90
Vivado
Clock networks are represented by nets in your RTL design
buffer to generate that net
Certain resources can be inferred
if it drives the clock inputs of clocked resources
clock region
BUFIO, BUFR, and BUFMR cannot be inferred
networks
PLLs and MMCMs cannot be inferred
ICTP - IAEA
91
Vivado
All clocking resources can be directly instantiated in your RTL code
PLLs and MMCMs have many inputs and outputs, as well as many attributes
ICTP - IAEA
92
Vivado
Click on the IP Catalog Expand FPGA Features and Design > Clocking Double-click on Clocking Wizard The Clocking Wizard walks you through the generation of complete clocking subsystems
ICTP - IAEA
93
Vivado
Select Primitives to be used
Specify the primary input frequency and source type
Select clocking features
ICTP - IAEA
94
Vivado
frequencies
ICTP - IAEA
95
Vivado
Change input/output port names Change optional port names
ICTP - IAEA
96
Vivado
Shows the input, output frequencies Other attributes depending on the selections made The Resource tab on the left provides summary of type and number of resources used
ICTP - IAEA
97
Vivado
ICTP - IAEA
Embedded System Design Review 11-98
Vivado
ICTP - IAEA
99
Vivado
ICTP - IAEA
100
Vivado
ICTP - IAEA
Embedded System Design Review 11-101
Vivado
GCC translates C source code into assembly language GCC also functions as the user interface, passing options to the GNU assembler and to the GNU linker, calling the assembler and the linker with the appropriate parameters Supported cross-compilers ARM processor compiler
ICTP - IAEA
102
Vivado
Input: assembly language files
Output: object code
Contains
Typically, the compiler automatically calls the assembler Use the -Wa switch if the source files are assembly only and use gcc
ICTP - IAEA
Vivado
Inputs
Outputs
ICTP - IAEA
Vivado
ICTP - IAEA
Embedded System Design Review 11-105
Vivado
Tcl command: report_timing_summary
report_timing_summary -delay_type max -report_unconstrained -check_timing_verbose -max_paths 10 -input_pins -name timing_1
Vivado IDE Options tab
Advanced tab
Timer Settings
ICTP - IAEA
106
Vivado
Design Timing Summary
interest
Clock Summary
Check Timing
internal endpoints
ICTP - IAEA
107
Vivado