Uploaded by Jun Jun

Xilinx VIO ILA

advertisement
TUTORIAL
Using Integrated Logic Analyzer (ILA) and Virtual
Input/Output (VIO)
Wav.eform - llw_ilac.1
Q
+
ct
►
» ■
e.
•
►I
ILA Status: Idle
Name
This tutorial covers using the Integrated Logic Analyzer (ILA) and Virtual Input/Output (VIO) cores to debug and monitor your
VHDL design in the Xilinx Vivado IDE.
In many cases, designers are in need to perform on-chip verification. That is, gaining access to an internal signal's behavior in their
FPGA design for verification purposes.
One option is to bring these signals to the FPGA pins and connect them to LEDs to see their behavior visually. This option is easy,
fast, and works well for simple cases, but it is not flexible, scalable, or realistic.
Another option is to have an external logic analyzer with advanced features that can display and depict these signals' behavior, but
it requires external and relatively expensive equipment.
The Integrated Logic Analyzer (ILA) is an alternative that combines the advantages of both previous options. It is easy, fast, flexible,
and has many advanced features that help designers quickly view and check the chosen signals' behavior.
Overview
This article contains multiple screenshots from the Vivado GUI. Click the images to make them larger!
Use the sidebar to navigate the outline for this tutorial, or scroll down and click the pop-up navigation button in the top-right
corner if you are using a mobile device.
ILAandVIO
The ILA and VIO are free customizable IPs from Xilinx. The ILA IP helps you easily probe internal signals inside your FPGA and bring
them out into a simulation-like environment to monitor them and verify their behavior.
Unlike ILA, the VIO IP allows you to virtually drive internal signals inside your FPGA to stimulate or control your design, like driving
the RESET signal.
• Xilinx Intellectual ProP-fil!Y.: Integrated Logic Analyzer (ILA)
• Xilinx Intellectual ProP-erzy.: Virtual lnP-ut/OutP-Ut (VIO)
Requirements
1. A Xilinx FPGA board
2. The Vivado Design Suite
3. Basic VHDL knowledge
I'm using the Kintex-7 FPGA KC705 Evaluation Kit but the methods shown in this tutorial should work on any modern Xilinx FPGA
board.
Download the example project
You can download the example project and VHDL code using the form below. It should work in Vivado version 2020.2 or newer.
Extract the Zip and open the ila_tutorial.xpr file in Vivado to view the example design, or read the rest of this article to learn to
create it from scratch.
Create a project with Vivado
Start by opening Vivado. In Vivado's welcome screen, click the Create Project button.
flle
FJow
Iools
�nclow
!:!@Ip
Q· Qu!ckAccei»
£ XILINX.
VIVADO
HLr Editions
�.�!.��, �
1
tart
Open ProJect )
Open Example ProJect )
Tasks
Manage IP >
Open Hardware Manager )
XHub Stores )
Learning Center
Documentation and Tutorials )
Quick Take Videos >
Release Notes Gulde >
j Tel Console ]
Clear Lisi
Click on Next to continue.
-
X
New Project
VIVADO.'
HLrEd1liot\S
Create a New Viva do Project
This w!Lard will guide you through the creation of a new project.
To create a Viva do project you wlll need to provide a name and a location for your project files. Next, you will specify lhe type offiow you'll be
working with. Finally, you will specify your project sources and choose a default part.
£ XILIN
Cancel
Change the name of the project to ila_tutorial and click on Next.
Note: Do not use spaces in the project name. Instead, use an underscore or dash.
Add sources
£ XILINX.
Specify HDL netlist. Block Design, and IP files. or dlrec!ories containing those flies. to add to your project Create a new source flle on disk and add h to your project
You can also add and create sources later.
+. -
/
•
AddSourceFiles
Lookjn•
design
ecounler.vhdl
I•
counler_top.vhdll
Recent Directories
2
C:JUsers/ahma�esklop/ila_Moriallde319n
FHePreview
1--------------------------------------------�
USi!AddFi
Filename·
·c:.ounter.vlldl""counter_topvlldl"
Files of type Design SourceFiles (.vhd. vhdl. vhf. vhdp, vho, v, vf. verilog. vr. Y!I, vb. If. vlog. vp. vm. veo. svo. vh. h. svh, vhp. s,ihp, edn. edf, edif. ngi:. s.. s.p, brrm nil, mern elf, dcp, bd.,,.
,-
It
----------,
Scan and aocl RTL include files ,nto pro1ed
C{lpy�urce� ntopr ,ed
Addsoyrr.esllomsI
Target lanQuage:
VHDL
redone
II
MdFlles
4
S!rrulat r lanaua!le:
MdDirector1es
II
CreateFlle
MIXed
G)
I TdConsole )
New Project Wiz.ard will ;uide you through the process of selecting design sources and a target device !or .a new project
Add the constraint file top.xdc from the design folder. Check Copy constraints files into project and click on Next to continue.
Note:this constraint file is specific to the KC705 board. You need to change the elk pin and the led pin according to your board.
And also, the -period of your board clock.
,
'faado..2.0l0.2
file
Fjow
Iools
:Wndo
,
Ci
N� Project
-----------------
Add constraints (optlonolJ
£ XILINX.
Specify or create constraint flies !or physical and tining constraints
,
+. -
•
•
AddConrtr.,intFilH
X
Lookjn:
2
Tasks
Manage IP >
Open Hardware Man
File name:
XHub Stores )
Fllesoltype·
Documentation and T
Quick Take Videos
C0Q)'COflslralrltsfilesintoprnJeCI
>
Release Notes Gulde
to�udc
Recent Olrectories
CJ1.Jsers/ahmac110es1ctop/lla_Morialldesi9n
set_pn,pert'J PAC'n..Gt_P1ll A88 [vet_ports tiiQ'Qe..i:_2)
(
Oesi11nConstraintFlles{.scfc,xdc)
3
Learning
X
I
4
G)
j TdConsole I
New Project Wiz.ard will ;uide you through the processof selecting design sources and a target device !or a new project
Search for your board and select it from the list. Click on Next to continue.
ENTITY INSTANTIATION --
in:,tantiate
counter 1 inst
PORT MAP(
=>
elk
=>
reset
enable =>
trigger =>
first counter
: ENTITY work.counter(rtl)
elk,
reset (Q),
tied_to_vec,
trigger_l_o
in:,tantiate
counter 2 inst
PORT MAP(
elk
=>
reset
=>
enable =>
trigger =>
second counter
: ENTITY work.counter(rtl)
trigger_l_o,
reset (0) ,
tied_to_vcc,
trigger_2_o
Creating the VIO core for RESET
Now that you understand the design example, we will create a VIO to control the input port reset. That will give us the ability to
manipulate (toggle) the reset from Vivado IDE so we can manually control when to start/stop the counters.
Click on IP Catalog, then search for VIC, then double-click on VIC (Virtual Input/Output).
: Default Layout
FtowNevtgator
; ; ., _
Sources
0- Sett!n11s
l=Q=
Pr010ct Summary
'? _ □ C X
i)
Add Sources
v
1.....----
Languagelefll)lates
IPCatalog
?X
PROJECT MANAGER -ila_tutolial
�
,'
Seard!:
>
Constraints
>
Sil'TIJlation Sources(1)
Name
>
UtllltySources
..,
■
i)
t.. {1 matdl}
�1
AX14
status
License
VLNV
Production
lnduded
xllinx.com:lp:vio:3.0
Debu0 & Verfficatlon
"'
Ubrnrtes
[!] -c. .,.
VfvadoRepos!tory
Open Block Design
Hierarchy
$
E] ....--­
v
Create Block Design
GenernteBloCI\Oesagn
,i:
Cores I Interfaces
DeSignSources(i)
> e.■• counter_top(rtj){counter_top.vhdll(2J
..., IP INTEGRATOR
x I JP Catalog
Corrcille Order
J•
Debug
VIO{Virtual Input/Output),....---
Prwerues
i)
RunSirrulallon
.., RTLANALYSIS
Deta1ts
> Open Elaborated Design
Select an o:::1ect to see oropertles
Select an IP or !nterlace or Repository to see details
"' SYNTliESIS
► Run Synthesis
> Open Syntllesized Design
Td Console
Messages
v IM Pl.EM ENTATION
Log
Reports
Desig11 Ru11s
x
? - □ c.::
)) + %
► Run lfllllementallon
Name
> Open lrn:>lemented Des,0n
constraints
v ./ synth_1
lrrcil_1
Status
constrs_1
synth_deSignCorrc,lete!
consirs_1
Nol startea
WNS
TNS
WHS
THS
TPWS
Total Power
Failed Routes
LUT
FF
BRAM
10
10
0.0
URAM
DSP
0
Start
2/'20121. B:07 PM
Elapsed
00:00:52
Run StralelJY
Vl\lado Synthesis Defaults IVN<
VivadolrrcilerrnnlatonDefault:
.., PROGRAM AND DEB UG
19 Generate BJtstream
> Open HarctwareManai;ier
v
< ------------------------------•
First, we change the name to vio_reset.
Second, we only need an output port for the reset, so we put O in the input probe count box, and we put 1 in the output probe
count box.
After Vivado finishes synthesizing the VIO, we need to add it to our design by declaring a component for it and instantiating it in the
counter_top.vhdl file as below.
First, add a component declaration for the vio_reset in the component declaration section in the counter_top.vhdl file.
-- Declare vio_reset
COMPONENT vio_reset
PORT(
elk
IN STD LOGIC;
OUT STD_LOGIC_VECTOR(0 DOWNTO 0)
probe_out0
);
END COMPONENT;
1
2
3
4
5
6
7
Now, the VIO is complete, and we are ready to synthesize the design. But before that, we need to change the synthesis setting
flatten_hierarchy to None.
file
FJow
fdlt
Window
Rep.Qrts
Iools
..
.., PROJE TMANAGE�
�
_
J 0- Seltin11s ).-
►•
Laiout,---'=�=-"'-''"""..,.,--------------------------�
X
ELABORATED DES
Sources
l
Add Sources
"
Lan11ua11elerl"l1lales
'9' IPCatalO!I
,.: Ne
Q·
,
PrOject Settings
General
IP\iJ
{1lvl
>
CreateBlock Design
>
OpenBlockDeSi!ln
>
GenerateBlockOesa,;in
Hierarchy
.., SIMULATION
E laboration
I
..., 9■ vio_res
"' IP INTEGRATOR
Sirrulation
Synthesis
� 2
Synlfl
Strate(IY:
Too(Settings
Slm..if
0 Write Incremental Syntriesls
IP Defaults
) XHubstore
IP S
jncrementalsynthesis::
Source FIie
Ja Vtvado SynlhesisDefaults' (Vtvado Synth
WebTalk
.Q.escripllon
Help
) TextEdi!or
..., SYNTHESIS
) Colors
v Synlh Design (VNado)
3rd Party Sirrulators
► RunSynlhesis
let.pre
1-i,anen hierarc:ti]I"
Shortcuts
> Open SynmeStZeli □esian
> Strategies
TdConsole
> Oper, lmp!emented DeSIQn
-,;iated_doct_conversion
off
--d'irecti\le
Default
-t:,Ufg
) Window Behavior
Me
v
□
WI
VNado Syntriesis Delaults
tci.posl
Selectron Rules
Run l!Tl)lementatton
Notset
Display
> RTlANALYSIS
v IMPLEMENTATION
Iii VNado Syntriesis Dela ult Reports (Vtvado Synlhesis 2020)
Settings
Project
Chan
? □ � X
ReJ>Ort Settings
) IP
�Vf
?X
constrs_·1 (adiYe)
Default �onstraint set
l�lementation
Propenies
Run Sifll..lla�on
I
: Default Layout
Synthesis
Specify various settings associated to Synthesis
12
-retmn11
, ...,...--
□
□
3
? - □ C
D
Select an optioo aOO'o'e to see a descrIpnon 0111
,.. • Synlhesis(38
.., • Out-of-Co
v PROGRAM AND DEBUG
v ;,.vlo_re
Generate81tstream
0
> Open Harctware Mana11er
Click on Run Synthesis and then on OK.
file
fdit
Fjow
Iools
FIOWN8Vlgator
v PROJECTMANAGER
Rep,2rts
-:' i; ? _
0- Sellln11s
'fiindow
Larout
Yiew
t!elp
Q·Otflcli:Acc:ess
PROJECT MANAGER - ila_tutorial
' .---------------------,
Sources
AddSources
v
Langua11eTe�lates
=Q' IPCataI011
)
>
>
>
CreateBlock Design
? _ □ t:l X
DeSiansources(1l
Sirn.Jlation sources(1l
GenerateBloctDesagn
-
utility Sources
IP Sources
Libraries
Colll)ile Or
@1.aunc:tiruns onlocalhost
Select an ob1ectto see prop
) Open Elaborated Design
"'�_,/
�
Tel Console
> Open SynlheslZ.ed Design
Na=
-., IMPLEMENTATION
v t synlh_1 (ac:trve)
► Run l�lementation
r. lllllL1
) Open l�lementedOesign
vio_reset_synlt1_1
v PROGRAM AND DEBUG
> Open Harctware Manager
Mess.ages
..,
<
Log
QQ.eneratesoiptsonly
Design Runs
»
%
Constraints
consm1_1
status
Nolstllned
constrs_i
Not started
vio_resel
Notstarted
Edit
Ha tutorial
X
pesktop/ila_tutorialfila_tutor1al
lmplementallon
Nurrileroflobs: 2
summary I Route Status
Status
mings
002.nistiow ltlisdialo.;iagaln
Reporu
+
Overview I Dashboard
• .:OelaultLauncti□irectory>
Options
Run Sirrula�on
? □ � X
Launc:ti lhe selected synthes1s or i�lementation runs
Launcht;!irector,:
Properties
" RTL ANALYSlS
? X
Pro·ectname
Launch Run�
Ready
De!aultlay '" '
_ - -�-
Protect Summary
Settings
e.■• co1mter_top[rt1)(counter_top.vhdl)(JJ
Constraintst2)
Hierarchy
OpenBlock De�',ln
ljj GenerateBltstream
=
Messages:
No errors or warnings
irrpl_1
AdiYerun·
Part
2
xc7k70tfb!1484-2
Strategy
s Defaults
I Failed Nets
Vivado l�ementafion Defau�s
)(
WNS
TNS
WHS
THS
TPWS
Total Power
Failed Routes
LUT
FF
BRAM
URAM
DSP
start
Elapsed
Run :
Vl'lat
Vlvac
VNac
When Vivado finishes synthesis, click on Open Synthesized Design.
£lie
£!tit
Fjow
Iools
FtowNov1gator
'='
v PROJECT MANAGER
Rep.9:rts
; ? _
�ndow
Larout
!:ielp
Q• Ouic:kAo:ess
Synlt1eslsCofT1)1ete
Add Sources
..,
Langua11elefT1)lates
=Q= IPCatalog
>
v P
I INTEGRATOR
>
>
Create8lockDesi11n
?X
x Netis1
Project Summary
? _ □ �
Overview I Dashboard
DeSignsourcest1l
Settings
> e.■• counter_top[rtl)(counler_lopvtidl) (2)
Constraints
SimJlation Sources(1)
P roject location:
0
Libraries
Colll!l!e Ofder
? _
v RTlANALYSIS
> Open Elaborated Design
0Bun lfT1]1ementa!lon
□ �
J ® _Qpen SynllleSU:ed Design
/
Q Ylewf
Analy:z_e and constra.71'°sl syntllesisnetlisl design
QQon1shOWUlll>Ul<ll\/',i'iil,lr
.2Jdata/boards/board_�les
► Run Synthesis
Board overview.
> Open Synthesll.ed Design
Td Console
.., IMPLEMENTATION
► Run lrll)lementallon
Messa11es
Name
"./ synth_1
> Open 1fT1)lemented Design
lfT111_,
v PROGRAM AND DEBUG
19 Gener;,teBltstream
> OpenHard'wareManao;ier
I
S!!'lect an oDJectto see pmpertJes
v SYNTHESIS
..,
Log
Constraints
cons!rs_1
c onslrs_ 1
Repons
Design Runs
»
%
+
status
syntll_desio;inCorrcilele!
Evaluation Plalform(lc7s100fg11a676--2)
SynlllesisStJccessfultycorrcileled
NeJtt
.. ..
Properties
RunSlm.ilation
lla_tutorial
C-.JJsers/ahmadi1Jesktoplila_tuto!1al/lla_Morial
�--------�
Synt��is Completed
utilltySources
Hierarchy
Ed!!
Project name·
OpenBloCTDesign
Generate81oe11Desagn
SpartaJ1-a-7 SP701 Evalua�on Platform
)(
WNS
TNS
WHS
THS
TPW S
Total Power
Falled Route s
Not started
LUT
10
FF
10
BRAM
0.0
URAM
DSP
0
Start
212.0f21.B:07PM
Elapsed
00:00:52
Run Slrate11y
V!vadoSynlllesisDelaulls{Viv
Vivado lfT1llementaton Default
'"'L-==========================�!!!!!!!!!!_____________________
2J
Change the layout to debug by clicking on Layout and then Debug.
Inserting debugging probe flow
Our synthesized design now contains the vio_reset instance, and it is time to specify the signals that we want to probe. There are
three ways to do that:
1. Insertion from VHDL file
2. Insertion from the Netlist
3. Insertion from xdc/tcl file
We will use the first two methods and leave the third for a later tutorial.
Insertion from VHDL file
This method is the easiest and fastest way to insert a probe, especially when it's a composite type (array or record). But it requires
adding code to the design files, VHDL code that's redundant in the real product.
We can insert a probe in the VHDL design file by:
1. Declaring a special attribute called MARK_DEBUG
2. Attach the signal that we want to probe with this attribute
3. And activate it by giving it the value "true" as below:
1
2
3
../
: Default Layout
ELABORATED DESIGN -xc7s100lg11a676-2
Sources
0- Settings
y-few
-- ATTRIBUTE DECLARATION -ATTRIBUTE MARK_DEBUG : STRING;
ATTRIBUTE MARK_DEBUG OF count : SIGNAL IS "true";
Note:we only need to declare the attribute once in each VHDL design file, allowing us to attach it to multiple signals.
We can see from the synthesized design that the signal count in both counter_ 1_inst and counter_2_inst are listed under
Unassigned Debug Nets and marked with a bug icon in both the Netlist and the Schematic.
=
SYNTHESIZED DESIGN· synltl_ 11 xc7s100f<JQa676-2
-
-
�.
Soo,m
N,W,.
x
?X
Schematic
? _ □ c;;
'? □ c;; X
-
a:
>
Debug
';I
counter_top
C
11ceIIs
<>
13Nets
Nets{62)
>
LeafCells(4J
v [I] counter_1_inst(counler_1)
v
NetsrH)
> I• counl(4)
> J plus0p(4)
_J <const1>
_f dk
_J p_O_ln
_J reset
_Ibi<J<Jer
)
leafCells(11)
> II] c:£lunter_2_Ins!fcounterl
JI dog_hub (dbg_hUb_CV)
Tel Console
Menages
Log
Reperts
DfNer Cell
N•=
v I dbg_hubflabtools_xsdbm_v3)
v
Desl(Jn Runs
Debllg
Drtver Pin
x
<>
Probe Type
vio_resel_fnst{labtools_vIo_v3)
> •dk(1)
> • probe_oul0{1)
Debug Cores
Debug Nets
Name: counter_1_instlcounij0Li_1 {ll1T1) Reference narre: Ll1T1
Type: LllT
Insertion from the Netlist
This insertion method is also easy, but it requires that you first synthesize the design and then manually click on each signal to mark
it for debugging. It could be exhausting if the design is large and you want to monitor many signals.
We will probe the output port trigger in both counters using the Netlist. We can do this either from the Netlist window or the
Schematic by locating the signal net and then right-click on it and choose Mark Debug.
From the Netlist window, find trigger under counter_ 1_inst
flle
_Ed!t
Fjow
Iools
..., PROJECT MANAGER
0- SeltlnQs
Add Sources
LanguageTer111Iates
=Q= IP Calalog
RepQrts
�ndow
i
_
:z·•;
Larout
~
constraintsWl!ard
Edi!Tlninaconstraints
;j" Set UpDebug
1::J Report Tirring Sunmary
Report Clock Networks
Report Clock Interaction
� Report Methadalogy
ReportDRC
+ -
Nets/131
C
7Cells
counter_ 1 _Inst
> J* counl/4)
> .!I plus0p(4)
elk
_I <const1>
_f dk
?X
21/0Ports
<>
62Nels
*
_J p_O_jn
Ireset
......-I_J trigger I
>
LeafCells(11)
) III counter_2_inst(counter)
b
) : �1:��:�:1�: =��I�:���:)
Tel Console
I
:t
counter_ 1
-+-
reset
-+-"��='-"-------<
trigger_2_0BUF_inst
>_-0-_
______ ___,
OBUF
MarkDebug ,......--
SelectDriver Pin
!;1
.., I dbg_hub(laotoals_xsdb
v
"' a
- - -e_oa_b_le
Report Net Route status
i:
Messages
Na=
trigger
�
reset
NelPraperlJes
counter_2_inst
a
enable
Sctiemalic:
ShowConnecllvlty
ShowHierardly
vio_reset_fnst(\aotool
) •clk{1)
F4
Ctrl .. T
"
> • probe_aut0(1)
Unassij-.nedDebu11 Nets
> 1"* counter_2_Inst/coun
a@,
Mark
> _ ._ counter_1_Inst/caun.__
___________.
,
Debug Cores
../
'? □ � X
LearCells(4)
';I
..,
..., SIMULATION
"" Open Synlllesized Desl\jn
Syn1t1es1scor111Iete
"'II] counter_ 1_1nst(cnuntl'r_11
GenerateBlact.Design
► Run synthesis
trigger. Then, right-click on it and choose Mark Debug.
Q·QuiO:Acc:ess
Nets(62\
>
Open Block DeSign
..., SYNTHESIS
➔
Schematic
CreateBlocllDesign
> RTlANALYSIS
!:ielp
Nets
: Debu11
/I(
--------------------------------�
..., IP INTEGRATOR
RunSim.JlaMn
Yfew
➔
Debug Nets
From the Schematic window, find trigger output from counter_2_inst. Then, right-click on it and choose Mark Debug.
<>
flle
fllit
Fjow
Iools
RepQrts
�ndow
Larout
y1ew
!::!.elp
Q·OU1ckAccess
=
SYNTHESIZED DESIGN•· srntti_1 I xc7s1001QQa676-2
-�-�
i
.. -
7 Cells
. + - C
0. e. :�
!
2 uo Pons
SynltlesisCor111!ete
DebuQ
'?
62 Nets
../
?X
□ �X
(>
,
z
elk
dbg_hub
vio_reset_lnst
p_or_t 0 �[36_co�]
_s�,-�1
-+sl_fportO_o[36:0] ,____
probe out0
sl_oport.0(16:0]
vio_reset
1port0_i[16:0]
dbg_hub_CV
*
:ic
elk
counter_1_inst
enable
a
reset
cmmter_2_lnst
trigger
*
counter_1
;t,-
.:
enable
reset
N• IPrn_"_"_"
•�- - _
,.-­
countery
t..
SeledDrlverPin
StiowConnec!ivity
CtrhT
HiQtlllctit
�
Mark
+
AddSelededllemstoSctiernatic
tb:
Clrl+E
MarkDeOUQ
ExpandCone
Remove Seledecl ltemsfromSctiemalic
SelectAII
Cyde Selectlon
View
I
Td Console
I
Messaces
I
. ,.
StlowWor1dVlew
Loe
I Desi11nRuns �I
I Reports
�
ReportTIITlng
Save as PDF File
EJ:portSctiematlc
We can see that they now are listed under Unassigned Debug Nets.
flle
fctit
Fjow
Iools
FlowNav1g11tor
..., PROJECT MANAGER
Rep.Qrts
= � ., _
(> SettlnQs
Add Sources
q IPCatalog
�ndow
ao
►,
LaJ'.Oul
lfi
�
.
_
Sources
a.
Create Bl odeDesign
IP(1)
EdilTiningConstraints
0 ReportTinin!I surrmary
Report Clock Netw'orks
ReportClock Interaction
� ReportMel/iodolo,;i:y
ReportORC
:E
? -
------------------------------------
+
Schematic
□ �
(>
lnstanlialionTe�!ate(2)
>
Synlt1esis(8)
+ -
C
7Cells
21/0Ports
62Nets
=
Syn1t1eslsCor111!ete
Debuc
../
?X
?
□
DX
(>
al vio_resetvtio
Cl vlo_resetveo
Slm.ilalion{3)
ChanlileLog(1)
vlo_resetdcp
• vio_reseLsim_ne�lstvhal
e vlo_reset_srm_ne�Jst.v
• vlo_reset_stub.vtlcll
Run Sim.Jlalion
• Se!UpDebU!I
Q· Quiel A=ss
...,
..., SIIWLATION
ConstraintsWlzard
(>
$
v-'Q'ii111io_resel(i!I)
:
>
GenerateB1oe1<:QeSjgn
"' Open Synthesized Design
i'J
x Netllsl
>
Open Block: Oe�<;in
► Runsynthesls
!::!elp
t!J
SYNTHESIZED DESIGN • - synlh_1 lxc7s100fgga676--2
"" IP INTEGRATOR
> RTLANALYSIS
yiew
>;1
• vlo_reset_stub.v
H1erarctiy
Tci console
0.
:
IP Sources
$
Messaces
Na=
> • cll<{1)
-.
LI bran es� � ::
Log
+, .:
> a proDe_outO(l)
Una�lilned Debu!I Nets (iOl
�eports
--------�
>
• counler_2_!nst/caunt (4)
> J • cotmter_1_1nstlcountt4l
_J II tr1gger_2_0BUF
Oe51gn Runs �
O rt.erCell
DrtlierP!n
a
FORE
___,,,,.,.,,,,,
.,.FORE
ProbeType
(>
O
---------�---············
_[11 counter_1_1nsWi!IQer
Debug Cores
Debui. Nels
FORE
a
Creating the ILA debug core
Now it is time to create the ILA debug core. We need to create a probe for each signal that we want to analyze. The easiest way is to
take advantage ofVivado wizard Set Up Debug.
Click on Set Up Debug and then click on Next.
flle
f!l!t
Fjow
rools
Rep.Qrts
�noow
La�mJt
.. ►•
flowN;mgator
�iew
!:ielp
';I
=
Q·QwckAa::ess.
(t
:E
Synlt1esisCo"1)lete
SYNTHESIZED DESIGN -synltU lxc7k70lfb11484-2
:' � ? _
"' PROJECT MANAGER
Sources
0 Settln11s
it.ddSources
>
IP Catalog
Nels(124)
>
" P
I lmEGRA TOR
LeafCells(4)
□�
X
(t
Tilis wizard will 11u!de you 1t1rau11h the process o!
lll.xEd1!0\I
> (I] counter_1_in
1. Choosln11 nets and connecting ttiem to debu11 cores.
> [I] counter_2_in
2. Associating a clockdomaln with eadl ofttie nets chosen for debug.
3. Choosing additonal features on the debug cores like Data Depth. Advanced Tri1111er roode and Capture
Contra!
II u_lla_o (u_lla
Open Block De!".ign
'?
Set Up Debug
VIVADO
II db!J_hubtdog
Cre.iteBloCKDesl11n
?
Nellist r->----------'L-....Cl.-'L-Sclu-"'---------------------�
j S�UpDebug
X
counter_top
Lan11ua11eTe!llllates
J
Debu!l
Note: This setup wtzard does not apply to the VIO, IBERT or JTAG-to---AX!-Master debu11 cores. Please refer to
Y!Yado Desl11ri SUili! User Guide Pro11rarmin11 and Detiu1111In11 (UG908) !or further lristructioris on how !o use
these P
I s
> II Yio_resel_Jn�
GenernteBtoc:KDesi11n
Properties
RunS1rrulallon
"' Rn.ANALYSIS
Sele
> Open Elaboratea DEsl!Jn
" SYNTHESIS
TclCcn�
Mes
Runsynthe�s
..,, Open Syn!Jleslleil Deslan
£ XILINX.
Na�
(t
v II dbg_hub1Jabt
Consuam1s W1ra1e1
..., Ivlo_reset_l
> • dk{1)
> .. prabe_outO 1
0 Report Tlmn,;i Surrmary
.., II u_11a_0(labtools_Ha_v6)
> a dk(1)
Ri!port Clock NelworkE­
Data and Trig11er v
> lit praheO (4)
Ri!port Clack/nleradian
Debug Cores
� ReportMel!ladolagy
Debu11 Nets
Vivado will list all the debug signals and capture the clock domain for you automatically. Here we see that our four signals are listed.
You can remove the signals that you are not interested in or add extra signals, but we will use all of them.
Note:we don't have to use all the signals that we have marked as Debug.
Click on Next.
;
X
Set.Up D�ug
Nets to Debug
w
Toe riets belowwlll be debugged with IL.A. cores. To add nets dlck"find Nets to Add". You cari also select rietsiri the Nellist or other windows. then drag them to the list or dick Add Selected Netsw.
: sJ
.:
�earcn:
"
IUI
+
-
I)
Na,re
Clock Domain
Driver Cell
Probe Type
..,, .!I a counter_2_!nst/courit (4)
dk_lBUF _BUFG
FDRE
Data amf Tri9ger
.f ■ counljOJ
dk_lBUF_BUFG
FORE
Data arid Trigger
I• countt1I
dlUBUF_BUFG
FORE
Data and Trigger
_f • counlj2J
dk_lBUF_BUFG
FORE
Data arid Trigger
S• counlj3J
dk_lBUF_BUFG
FORE
Data arid Trigger
dk_lBUF _BUFG
FORE
Data .indTrl(lger
I• counll:OJ
clk_lBUF_BUFG
FORE
Data arid Trigger
I• counl{1J
cik_lBUF _BUFG
FORE
Data arid Trigger
I• couritj2J
dk_lBUF_BUFG
FORE
Data arid Tri9ger
.[Iii c:ounlj3J
dk_lBUF_BUFG
FORE
Data arid Tr1i;iger
S Ill counter 1 inst/trigger
dk__lBUF_BUFG
FORE
Data arid Trigger
trlgger 2 OBUF
dk_lBUF _BUFG
FORE
Data and Trigger
.., 11
r
I
fa•
* counter_1_lristlcounl(4)
Flnd Nets to �dd ..
Nets to debug: 10
� l■•iM■I �"� �
Now we configure the ILA by choosing the FIFO depth and checking Capture control. We can leave the FIFO at 1024 as it is enough
depth for our example.
Click on Next.
=.
£He
f!l!t
Fjow
rools
=;
Iii
FlowN1mgator
v PROJECT MANAGER
Rep.9:rts
? _
Yfindow
l.aJ'.Oul
0- Settings
:
:
�.
Language Tefll}lates
f:ielp
Q·QuickAccess
=
SYNTHESIZED DESIGN' - synth_ 1 lxc7s100fgga576-2
•�
Add Sources
y-iew
>
=Q= IPCatalog
�
Hallist
X
Schematic
Nets(124)
LearCells(-1)
> III counter_1_1nst(counlllr_1)
> III counler_2_inst(co1mler)
v P
I N
I TEGRATOR
I dO!I hUD ldD!LhUO CV)
_ O{u Ila o cvi �
jll u 11a
CreateBlock.Desl,;in
I
01JenBloct-Design
> I[ vio_reset_lnst (vto_reset)
GenerateBloCl!.Desagn
RunSi!TlJlalion
Tel Console
"' Rn.ANALYSIS
Messages
log
Reports
DrNerCell
v II cH>!l_hubf!abtools_xsdbnt_v3)
v
v SYNTHESIS
► RunSynthesls
Design Runs
?X
'? □ � X
C
7CE!lls
21/0Ports
62Nets
• �- �,.:::-:=:./=�'biQ.��• • :::-�
--�
Na=
> 01Jen Elaborated Design
+ -
counter_top
Debu,;i
----.-.
j
'? - □ �
�
DrtverP!n
c-•
ProbeType
vlo_reseUnst(lamools_vlo_v3)
> •clk.(1)
1-....;.>_•...:;;P';;.;°'"-'..;;'�;;;0'-'(1._l ______________��
v Open Synthesized Desr11n
v II u_lla_Ollabtools_ila_v5)
Con strainls'Nizard
> •clk.(1)
EditTIITTngConstraints
> • probeO{J}
Data andTrlgger v
> .., probe2(1)
Data andTrigger v
> • probe1(4)
;t· SetUpOebu,;i
c;, Re1Jort Til'Tln,;i Surrmary
Data andTrigger v
> •probe3(1)
ReportClockNetworks
Dataand Tri1111er v
Un assigned DebugNets{O)
Re1JortClock.lnteraction
Debug Cores
� Re1JortMethodology
Debug Nets
IMPORTANT: It is very important to save the constraint in this stage so it can be added to the design. Otherwise, we risk losing our
ILA core.
Click the Save icon or hit Ctrl+S.
=.
£lie
fdlt
Fjow
Iools
Iii
Rep2rts
I;]
Wfndow
Add Sources
Languagelefll}lales
=Q= IPCatalO!I
Yiew
l::lelp
Q· OU1DCAccess
soo,�,
�
'a'
Nelli"
X
=
)I(
SYNTHESIZED DESIGN ' - synth_1 lxc7s100fgga676-2
.., PROJECT MANAGER
0- Sell!n!JS
La�out
? _
□�
Debug
? X
Schemalic
+ -
';I
> J sl_iport1_o_1 {37)
C
7 Cells
21/DPorts
62 Nets
> I sl_oportO (17)
> J st_oport1_1_ 1 (17)
_f <const1>
J" dk
_f dk_lBUF
CrealeBlock.DEsi!ln
_f d�_IBUF _BUFG
OpenBloc!< Desi11n
S• reset
J trigger_,_o
GenerateBlock Design
0
_J trigger_2
_f • tr111ger_2_0BUF
RunSiITTJlalion
"' RTLANALYSJS
> Open Elaborated DeSi11n
..,. SYNTHESIS
► RunSynthesls
v Open SynU!esized Design
Constrain1s'Nizard
Edil TIITTngConstraints
;t" SetUpDebu,;i
� ReportTlnin11Sun-mary
Report Clock.Networks
Report Clock I n teraction
� Repor!Methodology
Tel Consol'e
Message$
log
R
a
Jn
1
i
� :;�si��o�::��::�� �� ��i� r:����;�:::ie5!:. ��un��:r:�� �:��n
up-lo-date by seledlng the run in the Desi11n Runs tab, rfght dlcidn11, and selectin11
'Force Up-to-Date'
D Q.oni show ltlis dialog agafn
Name
"' II dbg_hub(!ablools_xsdbnt_v3i
v JI vlo_reset_insl(la1ltools_vlo_v3)
> •clk.(1)
> a probe_out0(1)
v II u_lla_Or\abiools_!la_v5)
> •clk.(1)
> IJprobe0/4}
Data andTli!l!IBf V
> •probe2(1)
Data andTrl11ger v
> It probe1 f4)
> •probe3(1)
Unassigned Debu11Nets (0)
Debug Cores
Debu,;i Nets
Save the constraintslorthe currentdesi11n
Name the file ila_core and click OK.
Data andTrigger
..,
DataandTrigger v
1 - □ �
Note:the clock connected to ILA and Debug_hub must be a free-running clock.
Now, the ILA is completed and saved. We need to rerun the synthesis so the ILA can be added to the synthesized design.
Click Run Synthesis and then on OK.
When Vivado finishes running the synthesis, click on Open Synthesized Design and then on Schematic.
We can see now that Vivado has added the ILA and Debug_Hub to our design and has connected the debug signals to the ILA
probes.
-i"'
file
Edit
Flow
Iools
ll
Repo.rts
Window
Laiout
'1.i-
Help
Synthesis Complete
Q· Quick Access
: Default layout
SYNTHESIZED DESIGN - synth.J I xc7k325tffg900-2
.E
Project Summary
E
ii• �
x counter_top.\lhdl
x Schematic
a a :: � o
z -
x
+ - c
8 Cells
21/0 Ports
124 Nets
✓
? X
0
� _!_
u_ila_O
SL IPORT 1[36!'.l]
G_inst
,---- probe0[0:3]
- prob l[0:3]
e
� '""'"
P'"'"
I
I
Tel Console ] Messages
I
Sl._OPORT_0[16:0]
"-'•-O_CV
dbg_hub
;_>pMO_,,,.,.
I
:::::
I Reports
Log
ru::J'"
::� :::''"'�
h"
"" a
I
Fl
vio_reset_inst
�,•
prob _outO il
e
t• I
'--''"' "M"""'"''m
"t - - --'➔ "'�
., _, ,.re ,
i
w
:
er_ljnst
triQQPI'
�
____.___,..._
r
uilaOcouruiOl
o
uilaOcountnl
1
u il�Ocoun1m
1
u 1la O rnunUJl ,
-';'.,.,�,
, �""'° �,_-_-, -,�_'"_""_"_'-_''_'°_" '--'--- -+
l
1
i
cou er_2jnst
;
tri9gff
�
t
ee
& r5
�
counter
*
u 11� o rount[O
u1la0coumm ,
ui(a0countl71 z
u i\aocoumrJ]
.,�
trigge
I Design Runs I
Now we are ready to implement our design and generate the bitstream so we can test our design.
Click on Run Implementation and then on OK.
£lie
fd!t
Fjow
Ioals
FIOWN8VIIJ8lOr
,., PROJECTMANAGER
Rep2rts
-:' ,; ? _
0 Sellln11s
Add Sources
Lan11ua11e lefll}lates
'9' IPCatalog
> IP INTEGRATOR
"' SIIAUL.ATION
Run Sim.Jlation
"' RTLANALYS/S
1flindow
Larout
Yiew
J::!_elp
Q· Orncil:AcceS9
PROJECT MANAGER -ila_l1Jlofial
sources
v
v
□eSignSourcesri1
Settings
Constraints(1)
..,
>
constrs_1 (1
-
t: lla_core.xdc(targel)
Slm.Jlation Sources (1)
Hierarchy
IPSources
Libraries
Cofll}i!e or
Seled an obied lo see prop
> Open Synthesized Des!vn
Run lfll}lementatlon
,., PROGRAM ANO DEBUG
Ill Generate Blt�eam
> Open HardWare t� anager
lfll}lemenlthe acti\fesynlhesl.!:ed netlist
Td Console
Messages
Na�
v ✓ synth_1 (ac:uve.)
L lrf1ll_i
LOiJ
%
Nun"'ber of iobs: 2
aluation Platform
r101_0
)(
Sl;atus
synth_design Complern!
constrs_,
Not started
vio_reset
syntti_design Cofll}le!el
Oul-of-ConleIIModuleRuns
✓ vio_reset_synth_1
Design Runs
conslJs_1
eskloplila_tutorial/ila_tutor1al
Evaluation Plallorm[xc7s1DO!gga576-2)
0 D_g_nl stiow this dialog again
»
Constraints
X
• «Delault Launch Directory>
QQenerate scriptsonly
Reports
+
llallrtortal
Launch tt,e selected synltlesls or ifll}lementaMn runs
@ ,Launch runs on local host
► RunSynthesls
Edit
Launch Runs
Launch giredory·
Net l'roperties
✓
? □ � X
0¥er.iew I Dashboard
> e.■• counter_tc,p[rt1)(counter_top...-hdll !3)
"' SYNTHESIS
> Open lfll}lementedDeslgn
Protect Summary
? _ □ � X
> Open Elaborated Design
.., IMPLEMENTATION
SynlllesisCofll}lete
: Default La ''"'
:.. - -�? X
\/\INS
TNS
\IVHS
THS
TPWS
Total Power
Failed Routes
LVT
10
102
FF
10
231
BRAM
0.0
00
URAM
DSP
0
start
2/21121,8:32AM
morn, 11:59 PM
Elapsed
00:01:0-4
oo:oi:Jo
Runstrate1n
V"rvadoSynthe
VNadOlrf11lem
VNadoSynlhei
After Vivado finish running the implementation, click on Generate Bitstream and then on OK.
FlowN11v1uator
:' � ? _
v PROJECT MA.NA.GER
0- Sen!n11s
=
PROJECT MANAGER -i!a_tutorial
Add Sources
v
Languagele"lllates
V' IPCatalog
v
> IP INTEGRATOR
>
"' SIMULATION
DeSiQnSourcesrii
Constraints(1)
constrs_1 (1)
Sim.Jlation Sources(1J
IP Sources
Net Properties
"' RTl.ANALYSIS
> Open E laborated Desi11r1
Utlrar!es
CofllJi!e On
Launch _11iredory:
O�enerate sciptsonly
Select an otlJE<dto see prop
) Open .Synlheslzed Design
.., IM PLEM ENTATION
Tel Console
► Run l"lllemenlallon
> Open l"lllemenled Design
Mess�es
LOIi
Na=
I
..t IOlJL1
v
> Open HarctwareManager
WNS
�io_reset
-
Nurrberoflolls: 2
TNS
W HS
27.769 0.000 0.048
route_deslqn COOlJletel
O ut-of-ContextModuleRuns
Ha tutortal
X Desk1opfila_Morlal/i!a_tulorlal
Evaluation Plalform[xc7s100fgga676-2J
aluaUonP1atform
rt0:1.0
X
synth_design Com pie le!
constrs_1
✓ vlo_reset_synlt1_1
Design Runs
status
constJs_ 1
Edit
D D2.ni stiow this dialog a<;lain
» + %
ConslTaints
v ..t synth_1 (ac:t1ve)
.., PROGR AM AND DEBUG
Repons
Settings
• .:Default Launch Oiredorp
@J.aunch runsonlocalhost
► RunSynthesls
?X
overview I Dashboard
Launch the selected synthesis or il'T"Cllemenla�on runs and <;lenerate
bltstream.
Options
v SYNTHESIS
J 1n Generate Bllstream
, Launch Run§
['_ lla_core.xdc(targel)
Hierarchy
RunSim.Jlallon
I
> e-■• co1mter_toprrtO(counter_lop.�hdl} (JJ
..,
Project Summary
? _ □� X
Sources
-----
DefaultLayout
synth_desir;inCo"l)letel
THS
0.000
TPWS
0.000
Total Power
0.099
FailedRoutes
0
LUT
10
FF
10
1471 2419
102
231
BRAM
0.0
0.5
00
URAfJ
DSP
0
0
Start
2121/21,8:32AM
2121'21. 9:31 AIA
2fl0f21, 9:59 PIA
Elapsed
00:01:04
00:08:25
00'.01:30
RunStrate
V-JYadoSy
VIYado Im
VNadoSy
Generate a prograrrrring file after i�lerrenla�an
After Vivado finishes generating the bitstream, click on Open Hardware Manager and then on Open Target, and finally on Auto
connect.
file
fdit
Fjow
Iools
Iii
Rep.11rts
La�out
Yiew
J:ielp
Sources
=Q= IPCatala11
..., IPINTEGRATOR
v
Create Block.Desi11n
v
Ooen Block Design
Genera!eBlockDesign
..., Sll�ULATION
>
RunSirrulation
>
x Hetllst
=
..,
constrs_1 (2)
l: lla_core.xdc
C? top.1dc(largetl
SirrulationSaurces(1)
Name:
► RunSynlhesis
General
> Open Synthesited Design
TciConsole
., IMPL.EMENTATION
► RunlfT"C}lementallon
.., PROGRAM AND DEBUG
I v O pen Harctware Manager I
IP Sources
Libraries
...,,,..-
-
Co�le Order
bigger_..2_0BUF
Properties
Mess11ges
Connectrvlly
Name
> Open l�lementedDesign
LOIi
v JI u_lla_O(labl:001s_11a_v6)
Power
Reports
Alf,.1 ► ;;
D&sl011 Runs
OrlYerCe11
DriverPln
> • dk(1)
> D protleO (4)
> 8 pratle1(41
> iw prabe2[1)
�o, 1 l +-l o,ea_r
)
_ _ .,. ..__ ___u.._",.�)
� _
Program Dtl ti AutoCanned
s
a
ne
r,_ :�.!J· · d
· · �:��51.�!: _t?� ••••••• OpenNewTar<;lel.
?X
? _ a a
e.-. coun1er_top(rt1){counter_topvl1dl)l3)
S • triqger_2_0BUF
..., SYNTHESIS
0
Desi11nSources[1)
Properties
> Open Elaborated Deslr;in
Debug
Constralntst2)
Hierarchy
.., RTLANALYSIS
A.lfdConffg
l
write_bltstreamERROR
Q· Omcil:Access
SYNTHESIZED DESIGN syntt1_1 I xc7k.701fbg484-2
Langua11eTefT"C}lales
Iii Generate Bitstream
!llindow
t:ores
I
Debug
x
? - a�
PratleType
Data ancfTrl!Jger v
Data and Tr19ger v
Data andTrtgqer v
Data and Trt11ger v
I
Debu!JNets
Next, we need to program the FPGA with the bit file (*.bit) and the debug probe file (*.ltx). Vivado automatically finds them for you.
Click on Program Device and then on Program.
file
"'
fdit
Flow
!ools
RepQrts
►.
Window
(I
"
�out
�-
Help
write_bitstream Complete
Q· U '
.,/
: Default Layout
D.ishboard •
I:
HARDWARE MANAGER localhosVxilirur_td/DigilenV210203337626A
0 There a1e no debug cores. Prog1am de...ice Refresh device
v IP INTEGRATOR
Create Block Design
0J)Pfl81odr: De!>ign
» ■
Cienefate Block Design
v
v SIMULATION
I loc.alhos111)
v
■ • xitirur_td/DigilenV2
S xc7k32St_O (1)
Run Simulation
Not program._
► Run Synthesis
> Open Sy,ithesii.ed Design
xc7k32St
Q
> Open Implemented Design
v Opeo H••dw•,o Mmg"
ProgramDevice
Pait
Tel Console
► Run Implementation
OpenTar�t
xc7k32St_O
I
x Messagn
e
:
11
Serial 1/0 links
II
)rial/i\a_tutorial/ila_tutorial.runs/impl_t/counter_top.bli
0 Enable end of startup check
□
□
0
.� ....................................... .
General
Prope,lies
,., IMPLEMENTATION
tD Generate Bitstream
Bitstreamflle:
Name:
X
Debug probes file: oriaVila_tutofiaVila_tutorial.runs/impl_ 1/coumer_top.ltx
(I
,., SYNTHESIS
Program Device
Select II bitstream programming file and download it to your hardware device.
You can optionally select a debug probes file that corresponds to the debug
cores contained in the bitstream progr11mming file.
Hardw•re Device Properties
> Open Elaborated Design
,., PROGRAM ANO DEBUG
-
Open
XAOC (Sr,tem
,., RTlANAtVSIS
(I
Status
Connected
Hrial 1/0 Saons
7 - □ [:;
II
: INFO: [Labtool:!!tcl 4.4-466] Opening hw target loc:alhost:3121/xilinx tc:t/Digi.lent/210203ll7626A
: open_hw_target.: Time (s): c:pu • 00:00--;-07 ; elap:sed • 00:00:07 . He;;;.,ry (MB): peak• 2416.469 ; 9ain • 1408.211
' set property PROGRAM.f"IL?: fC:/O"sers/11hlllad/Desktop/il,1 tutoral/i.la tutoriAl/ila tutorial.ru.n:s/i111pl 1/counter top.bit! [get hli' dev1ces xc1k32St OJ
:set.J'ropeny PR01!£5. nLE IC: /users/ahmad/Dellktop/ 1111_lutori<'ll/ila_tutorilll/ila_lutorlal. runs/ lmpt_l/counter_toi,. ltx) [Qet_hw_dev1ces xc1kl2St_01
set._property nJt.1._PROB!':S. nu: IC: /Users/ illmQ3d/�sktop/ ila_tutorial/ ila_tutori-,.1/ .1-l•_tutorial. runs/Ul!pl _ 1/counter_ top. l tx l (get _hw_devices xc:1kl2St_OJ
current_hw_devic:t! [get_hw_devicea xc71r;32St_OJ
retresh_hw_df!vice [11.ndex [get_hw_�v1.ces ,u:1kl2St_O] 01
[Labtool:s 27-1435) oevic;:e xc;:1k325t (JTAG device index • 01 is not pi:o,;i-n,mrned (PONE statu:s • OJ.
J
,_-
AddConfigurationMefl'lOf)'.., �• •--------------------------------------------------•-h_•
�
Configuring the ILA triggers
After programming the device, we can see that Vivado's GUI layout has changed, and a new hw_ila_1 dashboard has opened,
containing several windows.
We will minimize some windows that we don't need so we can work comfortably.
file
"'·
fdit
Flow
!ools
Reparts
►.
v IP INTEGRATOR
Create Blodc Design
Ge-nerale Block °'"'19"
v SIMULATION
Window
(I
Laiout
V SYNTHESIS
write_bitstream Complete
Q 0\
? _ □ □ X
St11tus
No=
v
I localhostll)
v
(I
XAOC [System
hw_ila_t {u_1la
Idle
Hardwue Device Properties
E> xc71<32St_O
(I
Programmed
Pfogramming file: ,1/ila_tutorial.!uns/impl_ 1/counter_top,
v PROGRAM ANO DEBUG
IU Generate Bitstre-am
v O�n H•rdwo1re Mo1no1ger
OpenTarget
ProgramDevice
A ddConfigurationM@m01y v
W•veform hw_il._1
hw_vio_ 1 (vio_, OK ·Outputs_
> Open Sy,ithesized Ot>slgn
> Open Implemented Design
X
Programmed
Status;
► Run Jmplemencation
x hw \OOs
Conoected
► Run Synthe>sis
" IMPLEMENTATION
? X
hw_i1•_1
■ • xi!irur_tcf{DigilenV2 Open
e xc7k325t_O (3)
Prnbesfile:
Use.- chain count
Settings - hw_ib1 1
,1/ila_tutmial.runs/impl_t/counter_lop.
4
tt
►
Statu1 - hw_ila_l x
TriggerSetup-hw_il,1_1
x Muwges
�
Seri•I 1/0 Links
x C.ptureSetup-hw_il•_l
» ■
-�- ·······-··-· ........................ ..
Genenil
Propert,es
Td Console
../
: Default Ulywt
Dashboard •
Hardware
" RTlANAI.YSIS
Open Elaborated Design
Help
HARDWARE MANAGER localhosVxiliroi:_td/[)igilenV210203337626A
Run Simulation
>
�-
I:
Pres5 lhe
+
buttoo lo add probl''i
SelUll 1/0 X'ilns-
Q
:
e
II IJ
11
: INro: [Labtool!I 27-3164) End of !ltartup !ltat.u!I: H.IGH
:
proqram_hw_devices: Time (s): cpu• 00:00:07 ; elapsed• 00:00:07 . Me111oi:y tMBJ peak• 2463.930 ; gain• 0.000
retresh_hw_dl!'vice []index [get_hw_dev1ces xc1kl25t_OJ 01
: TNm, rr... hr..,...1-, ,7_,-lo,1 n.-vtr,- 11rT1,1,<,r !,1'T'Ar. <"l"vlrp inrlP>< "'0\ i� nrnnr"""""<"I with;,, rt,--,;,,., th11r hll"< 1 TT.A r-nr..,!"<l.
<
From the dashboard options, check hw_vio_1 and uncheck Capture Setup.
Also, close the hw_vios tab because when we checked hw_vio_1, it has been added to the Trigger setup window.
? - □
..
file
Edit
Flow
I;)
!ools
Repo.115
►
"
Window
0
l:
L�t
'y.-
HARDWARE MANAGER· localhosVxilinx_td/Digilent/210203337626A
►
••=
v
»
Status
I localhost 11
v
■
0
Coonected
■ • xllinx_td/Digilenl/2 Open
Programmed
m xc71t3251_0 (3)
XAOC[System
hw_vio_l(vio_r OIC·Outputs ...
hw_ila_l (u_�il_
r Idle
I
hw_il&_1
Help
f>.
Q •
X hw vios
DHhbo&rd Options
Q
W&veform - hw_ila_ 1
•
-
write_bitstream Complete
: Default layout
Dashboard •
./
? X
1 - □ X
...-(j):71t32:t _O
..., I!} hw_ila_l (u_,ta_0)
0 Status
--------..
0 Settings
0 Tr[gg!'fSetlJp
0 Capture Setup
�Wavef01m
0 hw_vio_l(vio_reset...Jnst
0 XADC fSy,>em M=i<o
1
Setting,· hw_ila_l JC SOit.us • hw_ih1_1
? -□
Trigger Mode Settin!J5
TriggerSe,tup• hw_11a_1 >Clhw_vto_l
+ - .{}.
I
? - □
T,iggermocle:
Capture Modi! Settings
Capture mode:
ALWAYS
v
Window data depth:
1024
V
Numbef of windows:
Trigger position in window:
�nenit Settings
\1
[O
32
10241
(1
+
Press thE
1024]
button 10 add proOOS
10231
Refresh ,ate: S00
Td Console
M�si,ges
Now, we need to add the reset button to the VIO so we can control the reset.
Click on hw_vio_ 1 and then add reset as shown in the picture below.
..
file
Edit
Flow
!ools
Repo.ru
►
"
Window
0
l:
L�t
!llew
HARDWARE MANAGER - localhost/xiUnx_td/DigilenV210203337626A
Q
••=
'
�
v I localhost{1)
v
Status
■
0
Connected
■ • xllinx_td/Digiletil/2 Open
l!l xc7k325t_O (3]
XAOC (System
Programmed
hw_vio_l(vio_r OIC ·Outputs ...
hw_ila_1 (u_Ua_
r Idle
Help
hw_ila_l
�
l
O
I
Q
Q Q
Dashboard •
write_bitstream Complete
�
:; Default Layout
0
5.earch: Q·
i . �:: "-- ,
I◄
ILAl Ptobesfc»"hw_vio_l(T)
►I
i:.
1
-□
/
? X
? □ a X
X
Add Probes
> <
TriggerSetvp-hw_ila_1
,r
2
1 - □ X
• .r
0
4
3
jhw_vio_\ x
!.
6
1
8
9
10
I
?-□
Pre-ss the
+
b\Juon to add prohes.
�
Td Console
Debug Probe: reset
Messages
Serial 110 Links
Sena) 1/0Scans
We can see that hw_vio_ 1 now contains the reset probe.
Change the value of the reset in vio_reset to 1 if it's not 1.
Now, we will add the triggers that we will use. A change of value on a trigger signal will cause the ILA to start recording the probed
signals.
Let us say that we want to trigger (start recording) on the rising edge of the output port trigger of counter_ 1_inst. To do that,
follow these steps:
1. Go to the Trigger Setup - hw_ila_1 window
./
2. Click on the+ icon to add a new trigger and choose counter_1_inst/trigger and click on OK.
..
fdit
file
Flow
Re-PQ{ts
!ools
►
L�t
Window
..
(t
'f-
Help
Hudwar�
v
I
►
I localhost 1)
v
■•
»
w,veforn
�
Kllinx_td/DigilenV2 Open
XAOC (System
Programmed
Add Probes
r•
I: =�7'�� '
j
Idle
�,ch:Q·
ILASta11.1 • counter_1JnsVcount{3:0]
Name
hw_vio_l(vio_r Oit;•Outputs ...
hw_ila_1 (u_ila_
write_bitstream Complete
:Default�
l
✓
?
? □ C X
la +
Coooected
v El xc7k325t_0 (3)
,.
hw_ila_l
(t
■
Status
Q ll
D.lshboard •
:!:
HARDWARE MANAGER· localhost/xilinx_td/Oigileot/210203337626A
1• 6_1E!iiiJ
'-
+r
1
2
1 - 0 X
(t
• .r
J
4
�
6
1
B
9
10
> <
Trigger Setup· hw_ija_l x hw_vio_l
Settings
+ -
Triggert
�]
►I
I<
? - □
0
�2
ea••
1
Numl
Prl"S'i" the
4
Wied
+
buttoo lo add probes.
Trigg
Refresh rilte: 500
Td Console
Serial 1/0 Links
Messages
Se11aJ 1/0 Scans
3. We can see that the trigger has been added, and now we need to set up the condition. Click on the Value box and choose R(O
to 1 transition). Click on the Operator box and choose == (equal)
We will also change the trigger position to 32, meaning that it will record 32 samples before the trigger event in addition to what
comes after.
Now, the trigger is set up and ready to be armed.
file
.Edit
FJow
Iools
RePQrt:s
Y{indow
L.:iitout
�iew
HARDWARE MANAGER localhosVxilinx_tcf/DfgilenV210203337626A
l�i
H
� 1l
:
•
$
S
Name
I "' ■•
c:;: �
0
�
dw
►
»
?
V I localhost (1)
0
-
;
□ �
:
Status
It
tlelp
0- Quick Access
write_bltstre<1m Complete
: Default Layout
Dashboard �
Waveform
hw_ila_1
1
Conll&led
• XADC (System Monit
Programmed
◄
►I
'l!
!.r
+r
r.
? - □ X
(t
..r
• hw_vio_l (vio_resel_i1 OK - Outputs R
If hw_ila_l (u_1la_O)
Cldle
<
) <
Settings• hw_ila_l x Status - hw_ila_1
Capture Mode Settings
ALWAYS
v
Window data depth:
1024
V
Trigger position in window:
General Settings
Refresh rate
Tel Console
Mes;ages
Debug Probe Value: counter_ l_insVtrigger
? - □
Capture mode
Number of windows·
[
? X
hw_ila_t
xiliru1_tcf/Dfgilent/2102:0C Open
..,, 13 xc7k325t_0 (3)
I Serial 1/0 Links I
Serial 1/0 Scans I
500
32
11-1024]
[1 •1024]
!0-1023)
I
I
Trigger Snup - hw_ila_l x hw_vio_t
Q
Name
+ -
o.
counteJ_ Unst/trigger
,"O�••�"�'o�, ----, Radix
I
J
,_I =_• ____v� !B
v
,,/
/
Value
Port
(
t-X-(d-0-,,-,-,,-,. ---1 probe2 0J
0 (logical zero)
1 (logical one)
X don't care
R (0·to· 1 transition)
../ F (1-to·0 tran_sition)
/
B (both trans1t1ons)
N (no transitions)
Now, we move to the waveform window to add the signals that we want to view. First, let's maximize the inner window to gain a
better view.
Second, we need to add some missing signals to the probe. Vivado usually adds all the assigned signals automatically, but in this
case, it didn't.
✓
file
"'
fdit
Flow
61
!ools
Repnrts
►
"
Window
(>
L�t
l:
�-
Help
HARDWARE MANAGER· localhost/xilinx_td/Digilent/210203337626A
Hudwar�
Q
I
v
'a
■•
�
Coonected
O
KilinxJd/Digilenl/2 Open
v m xc7k325t_0 (3)
Programmed
XAOC (System
: Default Layout
Add Probes
hw_ila_l
(>
Status
I localhost (1)
v
» •
►
write_bil!itream Complete
Q ...LL
Dashboard •
Waveform�
QGJ-
ILA Status: Idle
ct
►
» ■
D
El
El
X
✓
? X
••
hw_vio_l!vio_t OK·OutpuU ...
hw_ila_1 (u_�a_ I Idle
TdConsole
Serial 1/0 Links
Messages
Debug Probe: counter_1_insVcount(3:0]
Serial 1/0 Scans
Now, we change the radix of the count signal to Unsigned as it is easier to follow.
Right-click on the count signal name and then choose radix and then Unsigned.
file
Edit
Flow
61
Iools
R�
►
"
Window
(>
l:
La:l()Ut
�
HARDWARE MANAGER localhost/:cilinK_ld/DigilenV210203337626A
�
Help
Q ,
Dashboard •
�
hwJI.J_I
i ·&
t
ILA Status: Idle
►
» • [)
El
El
••
Copy
End.•
Find �alue,.
Selec!AII
"'"""
Waveform Style
SigrlalColor
!Ii
Unsigned Decimal
./
? X
?CC X
Wo1veform - hw_ila_1
-�la+- �
write_bitstream Complete
;; Default layout
¥
ReverseBitOrdei
NewGrQUp
New Divider
New �rtu11I Bus
Cre.-te U5el' Defined Probe.•
Running the ILA and VIO
Now, we have finished configuring and customizing the ILA, and we are ready to run it.
ILA has two running modes: Immediate and trigger.
Immediate mode
Immediate mode triggers the ILA immediately and starts recording the samples directly until the FIFO is full.
Click on the Run trigger immediate button.
We can now see the recorded samples in the waveform window. We see that both count signals are 0, and both trigger signals are
low ·o· because the reset is active.
file
Edit
Flow
Rf!P!2(ts
!ools
►
L�t
Window
:i:
(t
"
}ftw1
Help
Q �
Dllshboold •
A.i.
write_bitstrYm Complete
: Default Layout
? X
HARDWARE MANAGER· localhost/Milinx_td/Oigilent/210203337626A
!
i
·f £
hw_ il" -'---�
� -
?□ax
Wo1vefonn - hw_ila_1
z •
I� I
a
- g
+
-
llA Status: Idle
✓
.. ►
Td Console
Messitge!>
Run lrigg� imm@diate fOf this HA core
�
■
»
[l
Senal 1/0 links
0.
,.0.
::
I◄
•
1 - 61 X
.r
►I
(t
Serial 1/0 Scans
Trigger mode
Trigger mode requires that we set up a condition for at least one trigger and arm it. The ILA will keep waiting for the armed trigger's
condition to become true, and then it will start recording the samples directly until the FIFO is full.
We have already added the trigger and set it up to R(O to 1 transition).
Running ILA with one trigger
Change reset back to 1 from vio_reset.
file
Edit
Flow
!ools
61
Repg_rts
►
Window
:i:
(t
"
Laiout
!Liew
Help
Q .Ju
wril@_bitstrNm Complete
f>
iiii Default Layout
Dashboard •
/I(
? ,
HARDWARE MANAGER localhostbrilini_td/DigilenV21O2O3337626A
.., J loailhost 1)
..., ■ • xilinx_td/DigHent/2
"' 0 xc7k32St_O (3]
XAOC[System
su,tus
■
?□OX
(t
Connected
Open
Waveform - hwjla_l
1
0
0+-&►
ILA Status: Idle
■
»
G
0.
hw_vio_l(vio_r Ol<·Outputs ...
<a
••
1•
Value
Programmed
• hwJla_1 (u_�a_ r Idle
'W
, t
r r
1
'W
11
1
,r
? - □ X
(t
►I
l
2
J
4
!,
6
7
B
9
10
> <
Settings - hw_ila_1 >< St•tus - hw_il• 1
7 _ □
Trigger Mode Settings
Trigger Setup- hw il•_I
? - □
Value
Triggl!f mode:
Activity
Direction
Oulput
v,o
hw_vio_1
Capture Mode Settings
Al.WAYS
v
Window data depth·
1024
v
Trigger position in window:
32
Capture mode:
Number of windows:
{l -10241
!l
102--1]
10 10231
Genenil Settings
Refresh rate: S00
Td Console
Debug Probe.: reset
Me�s;tges
Sen.ii 1/0 Links
./
Se,ial l/0 Scans
Click on the window Status hw_ila_ 1. We see that the core status is Idle as there are no triggers armed. Click on the Run trigger
button, and that will arm the trigger.
We see now that the core status changed to waiting for trigger. As the reset is high, there is no activity on our trigger signal (port
trigger of counter_1_inst), and I LA is waiting.
file
Edit
Flow
!ools
ReP!2{ts
e
►
Window
"
0
L�t
�-
Help
:i:
Q Qu
write_bitstrNm Complete
Ai.
HARDWARE MANAGER· localhost/xilinxJd,OigileoV210203337626A
hw_il.,_1
Wo1veform - hw_ila_1 �
a + - tt�» ■
[}
©.
llA Status: Waitina For Tri< Run triggei for this ILA c:01
Value
? X
I "' " "' '" ,:. '" '" '" '" .,,
©.
I◄
••
up<Uted .. t
1 -
►I
.r
Core status
•
Walling forTrigger
□
X
0
ioa Feb n 11 tz 46
? _ O
I
./
: Default Layout
Dashboard •
Trigge.-Setup-hw_il.,_1
I
hw_vio_l X
Value
?-□
Activity
[Bl 1
Direction
VIO
Output
hw_vio_l
Capture status - Wlfldow 1 of 1
Window sample 32 of 1024
3%
Td Console
Messages
Serial l/0 links
Se,ia! VO Scans
Run trigger fo, this 1LA core
Now, let us change the reset to O so that the counters start working.
..
file
Flow
Edit
RepQrts
!ools
Laiout
Window
► " 0
�
Help
:i:
Q Ou
writ@_bilstream Complet@
f>.
./
;;; Default Layout
Dashboard·
HARDWARE MANAGER- kxalhort/xillnx_td/Digilent/210203337626A
hw_il.1_1
W.aveform - hw_ila_l
»
■
[}
©.
©.
I◄
••
1 - 0 X
►I
0
.r
llA Status: Waitina Fot Triaoet !32 out of 1024 same
Value
.OO
00
lOO
400
SOO
600
70C
800
900
l 00
0
Upd.ot<td
Settings-hw_ih, 1
t.t
►
»
Coremtus
Shltu5- hw_ila_l X
Waiting for Trigger
C.apture status - W1t1dow 1 of 1
Window sample 32 of 1024
3%
Td Console
Messages
Serial 1/0 Links
20n Feb
22:
11 12 46
? - 0
■
•
•t
TrigguSetup-hw_il.11
�
?-□
u ;; e
Value
1E
!Bl t
V
Activity
..-----
Direction
VIO
Output
hw_vio_1
Seiial VO Scam;
Debug Probe: reset
We see now the ILA has got triggered and has recorded the samples, and the core status changed back to Idle.
We see the red vertical line (marker) on the rising edge of our trigger signal {port trigger of counter_ 1_inst), and it is in position 32.
We also can verify that the signal count is behaving correctly and the signal counter_ 1_instltriggeris high for four clock cycles
between 12 and 15 (the output is delayed by one clock cycle).
file
fdit
Flow
Iools
Repo.rt:s
►
Window
Ill
O
Lay_out
'i_ie:w
Help
I:
Q· Quick Access
Dashboard T
=
write_bitstream Complete
./
Default Layout
HARDWARE MANAGER- localhost/xilinx_tcf/Digilent/210203337626A
? X
If we zoom out a little bit, we can also verify the behavior of count and trigger signals for counter_2_inst.
file
fdit
Flow
Iools
Repo.rts
►
.
Window
Ill
O
Lay_out
'i_ie:w
I:
Help
Q· Quiet Access
Dashboard T
write_bltstream Complete
./
:;; Default Layout
HARDWARE MANAGER localhost/xilinx_tcf/Digilent/210203B7626A
? X
Running ILA with multiple triggers
We can use a combination of triggers for complex or advanced conditions. To capture several disjoint time frames in the same
waveform, we can use multiple triggers that fire repeatedly.
For example, let's say we want to trigger when the count signal from counter_ 1_inst is equal to 9 (count== 9) and when the count
signal from counter_2_inst is greater than 2 (count> 2). To do that and split the FIFO into four time windows, follow these steps:
1. Change reset back to 1 from vio_reset
2. Remove the previous trigger probe:
file
fdit
FJow
Iools
Repo.rts
.W.iOOow
Lay_out
'i_ie:w
1::1.elp
61
Q· Qwck Access
write__bitstream Complete
= Default Layout
Dashboard �
HARDWARE MANAGER-localhost/xilinx_tct/Digilent/210203B7626A
? X
Settings • hw_ila_ 1 x Status• hw_ila_1
? _ □
Capture Mode Settings
Name
v
ALWAYS
Number of windows:
{1-1024)
32
!0-511]
General Settings
Refresh rate:
Remove selected probe{s)
500
I
Mes;ages
Serial 1/0 Links
I
+
? - □
El .,.,
Remove selected probe(s) (Delete) adix
V
Bl
v
v
R
Port
probe2!0]
Comparator Us.age
1 of 1
J
E311-s121
Window data depth:
Triggerposition in window.
j Tel Console
Trigger Setup- hw_ila_l x hw_vio_1
Q
Capture mode
✓
Serial 1/0 Scans ]
3. Add both count signals as triggers:
file
fdit
FJow
Iools
Repo.rts
61
►
.W.iOOow
,11
.
(I
Lal{out
'i_iew
1::1.elp
Q· Quick Access
write__bltstream Complete
HARDWARE MANAGER localhost/xilinx_tct/Oigilent/210203337626A
_
ii
-
�
?X
hw_n,_1
� _!,_
��... !
�arch: Q•
+ - �
L. counter_l_inst/count[3:0]
I I · ··
�
8'
? □ (5 X
Add Probes
Waveform - hw_ila_ 1
Q
ILA Status: Idle
I-
• rnunter_l_inst!trigger
�ounter_2_inst/count[3:0�I
l. trigger_2_0BUF
Settings- hw_ila_l x 5tatus-hw_ila_1
? _ □
Trigger Setup- hw_ila_l x hw_vio_1
? - □
Capture Mode Settings
ALWAYS
v
Window data depth:
S12
v
Trigger position in window.
32
Capture mode
[1-1024]
Number of windows:
[1-S121
[0-511]
General Settings
Refresh rate: 500
[ Tel Console
Mes;ages
Debug Probe:counter_l_inst/count{3:0]
I
Seriall/Ollnks
I
✓
:: Default layout
Dashboard �
I:
Serial l/OScans]
4. Configure the signal count for counter_1_inst to (count== 9):
Pless the
+
button to add probes.
101
Cancel
file
fdit
FJow
Iools
Repo.rts
►
.W.ir.dow
"
0
Lay_out
'i_ie:w
1::1.elp
Q· Qwck Access
write_bitstream Complete
✓
= Default Layout
Dashboard �
I:
HARDWARE MANAGER- localhost/xilinx_tcf/Digilent/21020 3337626A
? X
□
X
? -
□
? -
¥counter 1 rist count[J0
¥lourter 2 r\1tcou1t[30
• tr ager 2 oeur
Settings • hw_ila_ 1 x Status - hw_ila_1
? _
Q
Capture Mode Settings
ALWAYS
Capture mode
Number of windows:
counter_2_inst/count{3:0]
{1-1024)
256
V
Trigger position in wir.dow.
32
[0-255}
Refresh rate: 500
I
Mes>ages
Debug Probe Value: counter_ 1_inst/count[3:0]
v
[HJ
!�I -
[1 ·256]
General Settings
I
+ - ""·
Radix
N,_m_• _____o..
,._"_,o_, -,--,
counter_1_inst/count!3:0]
V
IHI
v
Wir.dow data depth:
j Td Console
Trigger Setup- hw_ila_l x hw_vio_1
□
Serial 1/0 Links [ Serial 1/0 Scans]
Value
,--------,
Port
Comparator Usage
v
v probe0(3:0J
_x_____ _1
probe1!3:0J
Value: 9
5. Configure the signal countfor counter_2_inst to (count> 2):
write_bitstream Complete
"'·
►
,11
0
HARDWARE MANAGER localhost/xilinx_td/Oigilent/210203337626A
11
� -=-.
_ �-
? X
hwJla_\
Wa11eform
���I
Q
hw_ila_ 1
- ..
+
11 · ··
"'
0
llA Status: Idle
'tl'counter1 ristcount[30
¥couriter 2 flitcou l1 30
• tr qqer" OBUf
Settings• hw_ila_l x Status- hw_ila_1
? _
Capture mode:
ALWAYS
[1 · 10241
Wir.dow data depth:
256
V
Trigger position in window.
32
(0-2SSJ
[1-256]
Td Console
I
500
Mes>ages
I
Debug Probe Value: caunter_2_inst/caunt[3:0]
Serial 1/0 Links
I
Serial 1/0 Scans]
? -
+ - ""·
counter_ UnsVcaurit!3:0]
General Settings
I
Trigger Setup- hw_ila_l x hw_vio_1
Name
v
Number of windows:
Refresh rate:
□
Q
Capture Mode Settings
✓
: Default Layout
Dashboard �
I:
counter_2_inst/caunt(3:0]
Radix
Operator
v
[HJ
V
IHI
Value
�
v
Port
v __,prabe0!3:0J
V�9_____
X
v
� ---,
Value: 2
Probe1!3:0J
Comparator Us.age
l of 1
□
file
fdit
FJow
Iools
Repo.rts
►
.W.ir.dow
ID
O
Lay_out
Y.iew
Help
I:
write_bitstream Complete
Q· Qu,ck Access
HARDWARE MANAGER- localhost/xiliro:_tcf/Digilent/21020.B37626A
I llI
? X
hwJl•_I
I
!1
✓
= Default Layout
Dashboard �
?
Waveform - hw_ila_l
1◄ ►I
,!
!r
? -
•r r. .1
□
□
CX
X
(I
'Ill' lOUnt�r I n,t LOU 11[30
'lll'counter 2•rist cou•7t30
•troog<'r 2 OBUf
Scttin515- hw_ila_l x Statu5-hw_ila_1
? _
□
Tri!it51erSetup- hw_ila_l )( hw_vio_1
Capture Mode Sctting5
Capture mode
Name
v
ALWAYS
Number of wi11dows:
Wir.dow data depth:
256
32
V
Value
V
9
v
probe0!3:0J
1 of 1
v [H
:�0]-••__ (eq
/ _ 0"_"'_(3
,_
_ ,_ll ____,.
J
1-'°"_
-" te,_ _2J
_ n>l_ <_
V
2
v
probe1[3:0J
1 of 1
V
□
Comparator Us.age
Port
[HJ
a== (equal)
[1-256]
!= (not equal}
{0-255]
< {lessthanJ
<= (less lh<m or equal)
GeneralSettlng5
> {greater than)
>= (greater than or equal)
Refresh rate: 500
j Tel Console
Radix
Operator
rnunter_Unst/rnurit(3:0]
[1-10241
Trigger positiori in window:
? -
� Serial I/0Links ] Seriall/OScans
I
Debug Probe Value: <:ounter_2.j11stjcount[3:0J
6. Configure the number of windows to 4 and FIFO depth to 256, and position to 32.
...
file
fdit
FJow
Iools
RePQrts
►
.W.ir.dow
Ill
(I
Lay_out
Y.iew
Help
I:
Q· Qu1dc Access
write_bltstream Complete
HARDWARE MANAGER localhost/xiliruc_tcf/Digile11t/2102.03H7626A
? X
□
BX
? -
□
?
I
<
I
> <
Settings hwjla_ 1 )( status -hw_lla_1
? _
ALWAYS
v
Window data depth:
256
V
Trigger position in window:
32
Capture mode:
Number of wi11dows:
□
TriggerSetup- hwjla_l )( hw_vio_t
Q
[1- 1024]
[1-256]
+ -
o-.
Name
Operator
Radix
Pon
Value
Comparator Usage
cou11ter_ 1_inst/count(3:0]
v
[HJ
V
9
v
probe1[3:0] 1 of 1
cou11ter_2._inst/count!3:0]
V
IHI
V
2
v
probe0[3:0J 1 of 1
!0-255}
GeneralSetting5
Refresh rate: 500
I
Serial 1/0Links
I
Serial 1/0Sca11s ]
7. Click on the Run trigger button, and that will arm the trigger. Notice that in the window Status hw_ila_1, the capture status is
now window 1 of 4 because we have four windows.
Change reset back to O from vio_reset.
✓
:;; Default layout
Dashboard �
file
fdit
FJow
Iools
'"
Repo.rts
►
.W.ir.dow
"
0
Lay_out
'i_ie:w
1::1.elp
write__bitstream Complete
Q· Qwck Access
HARDWARE MANAGER- localhost/xilinx_tcf/Digilent/210203B7626A
�j I
? X
hwjl•_1
� �
Waveform - hw_il.i_l
i-�i- 8'� l 0
iI
0
✓
= Def.iutt Lllyout
Dashbo.ird �
I:
�
? - □ X
+ - <>0» ■
[J
rlA Status; Waitina Forlrtoaer (32 out of 1024,
N,m,
.v
,1"'
'lil'Lcunter1 n,twu1t[30
i
'lll'counter 2 nstcou•1t30
•tr(lqer 2 OBUf
Settin51s - hw_ila_1
t!
I
<
status - hw_il.i_l x
» ■ .,
►
Core status
•
I
' <
2
ggerSetup-hw_ila_1
? - □
�
Q
ame
Waitir,g for Trigger
;;
$
[;;d-•to_l x
+ -
Value
. .
ActIvIty
Capture status - Wir.dow 1 of 4
? - □
.
Direction
VIO
Output
hw_vio_l
Window sample32 of 256
I ,,.
I
j Tci Console
Debug Probe: reset
I
Messages
Serial 1/0 Links ] Serial 1/0 Scans ]
Maximize the waveform window. We see now that we have four windows and a trigger associated with each window. Notice that
these windows are independent and not continuous.
The ILA waits for the trigger event to happen, and when it does, the ILA uses the first window to record 256 samples. It then
immediately waits for the next trigger until all the windows are full.
file
-]~
ii
fdit
Flow
'"
Iools
RePQns
►
.
.W.ir.dow
"
0
Laiout
'i_iew
I:
Help
Q· Quick Access
Dashbo.ird �
write_bitstream Complete
HARDWARE MANAGER localhost/xiliruc_td/Digilent/210203337626A
� �1
� �
hwjl•_1
✓
;: Defaultlilyout
? X
? □ C5 X
Waveform - hw_ila_ 1
'1
j Tel Console
Mestages
Running ILA with Auto re-trigger mode
ILA has a nice feature called Auto re-trigger that will automatically arm the trigger after it gets triggered. It is useful when
monitoring events that occur seldom and you want to run a test overnight. Or you can use it when the trigger happens so often and
fast that you cannot arm the trigger manually to capture the samples repeatedly.
Let us assume that the output port trigger of counter_2_inst gets asserted every 3 hours, and you want to record the data each
time it happens. To use the Auto trigger, follow these steps:
1. Change reset back to 1 from vio_reset
2. Remove the previous trigger probe
3. Add trigger_2_0BUFsignal as trigger:
file
,Edit
FJow
Iool5
RePQrts
►
Window
"
0
l..ll(OUt
�iew
H.elp
write_bitstream Complete ./
0.- Quiel: Access
= Defauttlayout
Dashboard•
I:
HARDWARE MANAGER lrn:alho5tfxilinx._td/Oigilentf210203337626A
? X
Add Probes
.Search: Q·
1◄
7
iii-
►I
,!:
!r
+r
r. .r
t. counter_1_instjcount[3:0]
... counter_2_inst}count[3:0J
Value
¥counter l ,nit coult 30
'If counter 2 r,st coult 'JO
otnoaer 2 oeur
<
'l. trigger_Z_OBUF
> <
Settings• hw_ila_l x Status• hw_ila_1
Trigger Setup- hw_ila_l x hw_vio_1
? _ □
Q
Capture Mode Settings
Capture mode
0
1. counter_l_inst/trigger
ALWAYS
v
1024
V
Number of wi11dows:
? - □
+ - <>,
[1-1024]
Window d.itil depth:
Trigger position in window:
32
[1-102_4]
l'Tess the
{0-1023]
+
button to add probes.
General Settings
Refresh rate: 500
I let Console
I Serial I/Olinks ] Seriall/OScans I
I Messages
4. Configure the trigger to the condition to equal(==} and falling edge F(1-to-0 transition}
5. Configure the number of windows to 1 and FIFO depth to 1024, and position to 32:
file
.Edit
Flow
Iools
RePQ.rts
►
WiOOow
"
0
La;tout
Y'.iew
I:
tlelp
)>{
Q- Ou•ck Access
write_bitstream Complete ../
= Default Layout
Dashboard �
HARDWARE MANAGER localhosVxiliruUcf/DigilenV210203337626A
?X
? - □ X
►
»
■
IJ
<a
<a
,.
iii-
1◄
►I
,!
!,-
+r
r.
0
.. r
Value
'ti'counter 1 nst co,111130
Wcouner Z nst countlJO
• tr qqer 2 08Uf
<
> <
Settings hwjla_l ic Status-hw_ila_1
Trigger Setup- hwjla_l x hw_vio_1
Q
Capture Mode Settings
Capture mode
ALWAYS
v
1024
V
Name
trigger_2_OBUF
[l -10241
Number of windows:
WiOOow data depth:
Trigger position in window:
32
[1-1024)
!0-1023]
General Settings
] Tci Console
I Message>
Operator
? - □
Radix
V
16]
Value
, c- a-ce_)
v rj X-(d-o -,
0 (logical zero)
1 (logical one)
X(don"tcare)
R {0-to-1 transition)
F(l-to-0 transition)
B (both transitions)
I Serial 1/0 Links I Serial 1/0Scans I
6. Click on Auto re-trigger button:
Port
_�I probe 3(0]
N (oo transitions)
Refresh rate : 500
Debug Probe Value: trigger_2_OBUF
+ - <>,
Comparator Us.age
file
Edit
FJow
Iools
Repo.rts
►
.W.ir.dow
"
0
La�ut
'i_ie:w
Help
write_bitstream Complete
Q· Quick Access
HARDWARE MANAGER- localhost/xilinx_tcf/DigilenV210203337626A
■
»
Settings hw_ila_1
t!'
IJ
El
El
? X
::
•
Status- hw_ila_1 x
Corestatus •
1◄
►J
'I!
!r
•r r. .r
Trigger Setup- hwJ1a_1
? _ □
» ■
►
✓
= Default Layout
Dashboard �
I:
Name
Idle
Value
1. reset
Capturestatus - Window 1 of 1
hw_vio_l x
Activity
!BJ 1
? - □
Direction
VIO
Output
hw_vio_l
Window sampleOof 1024
Idle
I
j Tci Console
I
Messages
Serial 1/0 Links ] Serial 1/0 Scans
Toggle auto re-trigger mode for this I LA core
I
7. Finally, change reset back to O from vio_reset:
file
fdit
FJow
Iools
Repo.rts
.W.ir.dow
"
►
.
0
La�ut
'i_ie:w
Help
Q· QJ1ci: Access
write_bitstream Complete
✓
: Default Layout
Dashboard �
I:
?X
HARDWARE MANAGER localhost/xilinx_td/DigilenV210203337626A
�counter1 ristcount[30
lllllcounter 2 nst countl30
• tr,oger 2 OBUf
Settings- hw_ila_1
t!'
►
»
Status- hw_ilcU x
■
•
? - □
Waiting for Trigger
r;;gger Setup hw 1la 1
IQ"' � +
Name
Capturestatus - Window 1 of 1
Value
reset [Bl 1
hw v10 1 x
Activity
? - □
Direction
VIO
Output
hw_vio_l
Window sample 32 of 1024
I_
] Tel Console
Debug Probe: reset
"
I
Messages
I
Serial 1/0 Links
I
Serial 1/0 Scans ]
We can see now that the waveform window is getting refreshed and updated as the trigger happen. It is fast, but the behavior is
noticeable.
Click on Stop trigger and toggle Auto re-trigger.
Running ILA with Capture mode
Another feature of ILA is the Capture mode. In some cases, you are not interested in recording all the data but rather capture a
specific sample. Capture mode helps you filter out data and record only the samples you are interested in.
Let's say we are only interested in sampling when the output port trigger of counter_ 1_inst is '1' AND the output port trigger of
counter_2_inst is 'O'.
To use Capture mode to achieve this, follow these steps:
1. Change reset back to 1 from vio_reset
2. Remove the previous trigger probe
3. From the dashboard, Uncheck Trigger Setup and check Capture Setup. Notice that a Capture Setup window will appear.
From the Settings - hw_ila_ 1 window, Change Capture mode to BASIC, the window to 1, the FIFO depth to 1024, and position to
1:
write_bitstream Complete ../
OlJ•(� Access
" 0 I:
.
HARDWARE MANAGER lrn:alho<;t/xilinx_td/Digilentf210203337626A
_
-
ii
� �
z �•
� �
i
= Default Layout
Dashboard•
►
? X
hw,I• 1
Waveform - hwjla_1
Dashboard Options
1◄ ►I
Q
�
$
v Ii) xc7k32St_O
Settings- hwjla_l x Status hw_ila_1
hw_vio_1
? - □
Q
Capture Mode Settings
Capture mode:
+
I
t!
!r
? -
•r r. .r
Capture Setup- hwjla_l x
□
X
0
I
? - □
o-,
BASIC
r, - ,024,
Number of windows:
Window data depth
1024
Trigger position i11 window:
1
[1-1024]
I I
Pre55 the
+
button to <1dd probes
[0 -10231
General Settings
Refresh rate: 500
I Td Console
I Serial 1/0links I 5eriall/05cans]
I Mes�ges
4. Add trigger_2_0BUF, and counter_1_inst/triggerfrom the Capture Setup window:
file
~ ]~
FJow
Edit
Iools
RePQrts
►
.W:iOOow
,11
0
Laiout
'i_iew
l:
.!::l_elp
Q· Owck Access
write_bitstream Complete ./
= Default Layout
Dashboard �
HARDWARE MANAGER localhosVxiliruc_tcf/OigilenV210203337626A
ii
hwjl,_1
? □ C X
��!Q + - e
/!j
f£ )
i
Add Probes
Waveform - hw_ila_ 1
� _i_
�
? X
llA Status: Idle
►
X
□ X
0
» ■
cl
Settings• hw_ila_l -.c Status• hw_ila_1
? _ □
Number of windows:
s-I
hw_vio_1
Q
BASIC
Capture mode:
Capture Setup • hwjla_ 1 -.c
j
- □
o-,
{1-10241
Window data depth:
1024
Trigger position in window:
32
V
[1-1024)
[0-10231
Press the
General Settings
Refresh rate: 500
[ Tel Console
Mes�ges
Debug Probe Value: counter_ l_instftrigger
I Serial 1/0links I 5eriall/05cans I
5. Configure counter_1_inst/triggerto the condition equal (==) and 1 (logical one):
+
button to add probet
file
fdit
FJow
Iools
'"
RePQrts
►
.W.ir.dow
"
0
Laiout
Y.ie:w
Q· Qwck Access
1::1.elp
write__bitstream Complete
✓
= Default Layout
Dashboard 7
I:
HARDWARE MANAGER- localhost/xilinx_tcf/Digilent/210203B7626A
? X
? □ t:, X
? - □ X
'tl'counter1 nstcount[:lO
<> cour !er I nst,tr ager
o tr ager 2 oeur
Settings • hw_ila_ 1 x Status- hw_ila_1
? - □
Capture Mode Settings
BASIC
Capture mode
{1-1024)
Number of windows:
Wir.dow data depth:
1024
Trigger position in wir.dow:
1
V
I
hw vI0 1
Q
Capture Setup- hw Ila 1 x
+
-
? - □
o-.
Name
Radix
Operator
c0tmter_Unst/trigger
V
[Bl
trigger_2_0BUF
V
[Bl
Value
1 (logical one)
[1 • 1024]
X(don'tcare)
R(O-to-1 transition)
[0 -1023]
F(1-to-Otransition)
General Settings
Refresh rate:
) Td Console
I
Port
v r X-(d-o-,,-ca-,.-, -�1 probe2(0]
l
probe3!0J
v j O(logical zero)
B (both transitions)
N (no transitions)
500
Mes,ages
Debug Probe Value: counter_ l_inst/trigger
j Serial 1/0 Links I Serial 1/0 Scans ]
6. Configure trigger_2_0BUFto the condition equal(==) and O (logical zero):
file
fdit
FJow
Iools
Repo.rts
►
.W.ir.dow
,11
.
0
Laiout
Y.ie:w
Q· Qwck Access
1::1.elp
write__bitstream Complete
Dashboard 7
I:
✓
: Default Layout
HARDWARE MANAGER localhost/xilinx_tcf/Digilent/210203337626A
? X
'tl'counter! rist coul1[30
<> couriter I r>st tr qqer
o tr aqer 2 OBUf
Settings· hw_ila_l x Status- hw_ila_1
7 - □
hw_vio_1
Q
Capture Mode Settings
Number of windows:
[1 ·10241
Wir.dow data depth:
1024
Trigger position in window:
I
Capture Setup- hw_ila_l x
-
V
] Td Console
I
Radix
Operator
V
[Bl
trigger_2_0BUF
V
(Bl
[1 - 1024]
General Settings
Refresh rate:
? - □
counter_Unst{trigger
!0 -1023]
1
I
o-.
Name
BASIC
Capture mode
+
Value
v
0 (logical zero)
1 (logical one)
X(don'tcare)
R(O-to-1 transition)
F(Ho-Otransition)
B (both transitions)
500
Mes,ages
Debug Probe Value: trigger_2_0BUF
I
Serial 1/0 Links
I
N (no transitions)
Serial 1/0 Scans ]
7. Change the Capture Condition to Global AND:
Port
1
v probe2(0J
�
- - �
prabe3(0J
v X(don'tcare)
file
.Edit
FJow
Iools
Repo.rts
►
Y[ir.dow
Ill
O
LaJ"_out
lliew
l:
HARDWARE MANAGER- localhost/xilinx_tcf/Digilent/210203B7626A
? X
? _ □
BASIC
Name
[1-1024]
Window data depth:
1024
Trigger position in window:
32
hw_vio_1
Q
Number of windows:
V
✓
= Default Layout
Dashbo;ud �
Settings hw_ila_l x Status - hw_ila_1
Capture mode:
write__bitstream Complete
Q· Quick Access
1::1.elp
"
Capture Setup hw_ila_ 1 x
-ro::
�'-1------------,
+
Set Capture Cor.dition to Global AND'
counter_ l_inst/trigger
[1-1024)
5€1 Capture Condition to 'Global OR'
trigger_2_0BUF
(0-10231
? - □
Value
Set Capture Condition to GlobalNAND'
Set Capture Condition to 'GlobalNOR'
V
V
Port
probe2[0]
probe3[0]
General Settings
Refresh rate:
500
I
J serial 1/0Links
Seriall/05<:ans
Set capture condition to Gtoba1 ANO, OR.NAND orNOR function
I
8. Click on the Run trigger button and then change resetto O from vio_reset:
file
.Edit
FJow
Iools
Repo.rts
►
Y[iOOow
"
.
0
LaJ"_out
HARDWARE MANAGER localhost/xilinx_tcf/Digilent/2102.03B7626A
I �I
Ii
z •
J
hw ,l::v.form - hwjla_1
i I ·-·
.c
O
+ -
Q
t!
0»
■
lJ
llA Status Pre-tnaaerCacture (Oout of 1024 s;
ca
"
lliew
l:
Q· Quick Access
1::1.elp
write__bitstream Complete
? X
e. �"
•f
1◄
►I
'I!
!r
+r
r.
...r
0
Value
'll'counter 1 nst cm lt ,0
o counter I r,st tr qqe
• tr oqer 2 OBUf
Settings-hw_ila_1
t!
►
»
Core status
7 _ □
Status- hw_ila_l x
■
•
�CapturcSnup-hw_lla_1
�¼ + Name
Pre-Trigger
Capture status - Window 1 of 1
Value
Activity
Direction
Output
VIO
hw_vio_1
Window ,ample O of 1024
I Tel Console
Debug Probe: reset
Mes>ages
I
Serial 1/0Links
I
✓
::: Default layout
Dashboard �
Seriall/OScans]
As we can see from the image below, the waveform has only recorded data when counter_ 1_inst's count signal is 13, 14, 15, or 0.
Any other counts are filtered out because counter_ 1_inst/triggeris high on these counts only.
file
Edit
FJow
Iools
Repo_rt:s
Window
Lay_out
Jliew
Help
Q· Quick An:es�
61
wrlte_bitstream Complete
HARDWARE MANAGER- localhost/xillnx_tcf/Digilent/210203B7626A
Conclusion
In this tutorial, we learned about ILA and VIO and different use-cases for them. ILA and VIO are excellent options for on-chip
debugging. They are free, easy to use, flexible, scalable, and simple yet offer advanced features. The use of multiple triggers and
Capture mode helps you achieve a complex debugging scheme.
✓
= Default Layout
? X
Download