01 關于ILA Cross Trigger
1)ILA Cross Triggering功能使得ILA核心之間、以及ILA核心與處理器(例如,AMD Zynq 7000 SoC)之間可以進行Cross Trigger。這個功能在你需要在不同時鐘域的兩個ILA核心之間觸發(fā),或者在處理器和ILA核心之間執(zhí)行硬件/軟件跨觸發(fā)時非常有用。
要使用Cross Trigger功能,在核心生成時,你應該配置ILA核心具有專用的觸發(fā)輸入端口(TRIG_IN和TRIG_IN_ACK)和專用的觸發(fā)輸出端口(TRIG_OUT和TRIG_OUT_ACK)。
(一對ILA的TRIG_OUT和TRIG_IN 在Block Design中的互聯示意圖)
2)RIG_OUT_ACK 信號向 ILA 內核(另一個 ILA、用戶設計或處理器)指示 TRIG_OUT 已正確接收,并導致 ILA 在接收 TRIG_OUT_ACK 時降低 TRIG_OUT 信號。
換句話說,TRIG_OUT 保持高電平,直到 TRIG_OUT_ACK 可用。如果 TRIG_OUT_ACK 信號連接至低電平,則 TRIG_OUT 保持高電平,直到用戶重新啟動 ILA。只有 TRIG_OUT 變?yōu)榈碗娖?。如?TRIG_OUT_ACK 連接到低電平,您可以重新準備 ILA。
下圖展示了典型的交叉觸發(fā)設置,其中 ILA2 交叉觸發(fā)到 ILA1。ILA2 的 TRIG_OUT 信號連接到 ILA1 的 TRIG_IN 信號。ILA 1 的 TRIG_IN_ACK 信號連接到 ILA2 的 TRIG_OUT_ACK 信號。
3)典型的交叉觸發(fā)設置
02 測試工程基本情況介紹
本測試工程基與Vivado 2022.2
本測試工程基于Versal VCK190 Evaluation Platform (xcvc1902-vsva2197-2MP-e-S),這里同時介紹了以下兩種方式實現ILA Cross Trigger:
IPI的方式例化帶有Cross TRIG端口的ILA。(對應axis_ila_0和axis_ila_1)
(* MARK_DEBUG="true" *)+ Tcl腳本的的方式(這種方式只支持Vivado 2022.1及更高版本)
紅色方框內的axis_ila_0和axis_ila_1在配置IP的時候直接例化了對應的Cross Trigger接口,黃色方框內是對部分的RTL代碼設置了(* MARK_DEBUG="true" *)。
03 構建步驟
測試的C_SLR_REG module的代碼如下:
按照下圖構建BD工程。
將C_SLR_REG module以RTL的方式加入到BD內, 操作方法見下圖。
連接好整個BD然后Create HDL Wrapper并將design_1_wrapper. v設置成top。
Run Synthesis
a. 綜合完成之后點擊Open Synthesized Design
b. 使用如下方式打開Debug窗口
從Debug視圖可以看到已有兩個IPI例化的ILA(axis_ila_0和axis_ila_1),還有一些Unassigned Debug Nets(design_1_i/C_SLR_REG_0/inst/test_out,design_1_i/C_SLR_REG_0/inst/test_in_r0,design_1_i/C_SLR_REG_0/inst/test_in_r1),下面需要通過Tcl 腳本的方式創(chuàng)建新的debug core將Unassigned Debug Nets連接到新的debug core上。
c. Tcl 腳本創(chuàng)建兩個新的debug core(u_ila_2和u_ila_3),(u_ila_3) trig_out -> (u_ila_2) trig_in.新建一個Tcl腳本(此處位Cross_ila.tcl)。然后在下圖位置調用Cross_ila.tcl腳本。
Cross_ila.tcl文件內容如下:
###createu_ila_2 create_debug_coreu_ila_2ila set_propertyC_TRIGIN_ENtrue[get_debug_coresu_ila_2] set_propertyC_TRIGOUT_ENfalse[get_debug_coresu_ila_2] set_propertyC_NUM_OF_PROBES1[get_debug_coresu_ila_2] #createu_ila_2TRIG_IN_trigandTRIG_IN_ack create_debug_portu_ila_2TRIG_IN_trig create_debug_portu_ila_2TRIG_IN_ack #configu_ila_2/clk set_propertyport_width1[get_debug_portsu_ila_2/clk] connect_debug_portu_ila_2/clk[get_nets[listdesign_1_i/clk_wizard_0_clk_out3]] #configu_ila_2/probe0 set_propertyPROBE_TYPEDATA_AND_TRIGGER[get_debug_portsu_ila_2/probe0] set_propertyport_width16[get_debug_portsu_ila_2/probe0] connect_debug_portu_ila_2/probe0[get_nets[listdesign_1_i/C_SLR_REG_0/inst/test_out[*]]] ###createu_ila_3 create_debug_coreu_ila_3ila set_propertyC_TRIGIN_ENfalse[get_debug_coresu_ila_3] set_propertyC_TRIGOUT_ENtrue[get_debug_coresu_ila_3] set_propertyC_NUM_OF_PROBES2[get_debug_coresu_ila_3] #createu_ila_3TRIG_IN_trigandTRIG_IN_ack create_debug_portu_ila_3TRIG_OUT_trig create_debug_portu_ila_3TRIG_OUT_ack #configu_ila_3/clk set_propertyport_width1[get_debug_portsu_ila_3/clk] connect_debug_portu_ila_3/clk[get_nets[listdesign_1_i/clk_wizard_0_clk_out3]] ##create_debug_core的時候會自動創(chuàng)建probe0和clk端口 #configu_ila_3/probe0 set_propertyPROBE_TYPEDATA_AND_TRIGGER[get_debug_portsu_ila_3/probe0] set_propertyport_width16[get_debug_portsu_ila_3/probe0] connect_debug_portu_ila_3/probe0[get_nets[listdesign_1_i/C_SLR_REG_0/inst/test_in_r0[*]]] #configu_ila_3/probe1 create_debug_portu_ila_3probe set_propertyPROBE_TYPEDATA_AND_TRIGGER[get_debug_portsu_ila_3/probe1] set_propertyport_width16[get_debug_portsu_ila_3/probe1] connect_debug_portu_ila_3/probe1[get_nets[listdesign_1_i/C_SLR_REG_0/inst/test_in_r1[*]]] ###connectu_ila_2/3 create_netila2_trig_to_ila3 create_netila2_ack_to_ila3 connect_net-netila2_trig_to_ila3-objects[get_pinsu_ila_3/TRIG_OUT_trig] connect_net-netila2_ack_to_ila3-objects[get_pinsu_ila_3/TRIG_OUT_ack] connect_net-netila2_trig_to_ila3-objects[get_pinsu_ila_2/TRIG_IN_trig] connect_net-netila2_ack_to_ila3-objects[get_pinsu_ila_2/TRIG_IN_ack] #set_false_path set_false_path-through[get_nets{ila2_trig_to_ila3}] set_false_path-through[get_nets{ila2_ack_to_ila3}] 5)RunImplementation. 6)GenerateDevieImage/Bit.
04 HW調試
Implementation完成之后,連接上板卡。
實際運行結果
將PDI文件下載到器件中。
可以發(fā)現出現了四個hw_ila_1/2/3/4,與工程中的ila debug core對應關系如下。
hw_ila_1:axis_ila_0 hw_ila_2:axis_ila_1 hw_ila_3:u_ila_2 hw_ila_4:u_ila_3
之前配置的兩組Cross Trigger:
axis_ila_0trig_out->axis_ila_1trig_in (u_ila_3)trig_out->(u_ila_2)trig_in 即: hw_ila_1trig_out->hw_ila_2trig_in hw_ila_4trig_out->hw_ila_3trig_in
分別設置hw_ila_1/2/3/4的Trigger mode。
(hw_ila_1)
(hw_ila_2)
(hw_ila_3)
(hw_ila_4)
設置完成之后就可以實現ila之間的Cross Trigger.
審核編輯:湯梓紅
-
處理器
+關注
關注
68文章
19313瀏覽量
230044 -
amd
+關注
關注
25文章
5470瀏覽量
134237 -
信號
+關注
關注
11文章
2791瀏覽量
76829 -
ILA
+關注
關注
0文章
5瀏覽量
3608
原文標題:如何實現ILA Cross Trigger
文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論