报错一:app
WARNING: [Labtools 27-3361] The debug hub core was not detected.less
Resolution:ide
1. Make sure the clock connected to the debug hub (dbg_hub) core is a free running clock and is active.ui
2. Make sure the BSCAN_SWITCH_USER_MASK device property in Vivado Hardware Manager reflects the user scan chain setting in the design and refresh the device. To determine the user scan chain setting in the design, open the implemented design and use 'get_property C_USER_SCAN_CHAIN [get_debug_cores dbg_hub]'.debug
For more details on setting the scan chain property, consult the Vivado Debug and Programming User Guide (UG908).orm
WARNING: [Labtools 27-1974] Mismatch between the design programmed into the device xc7z020_1 and the probes file(s) E:/fpga/mt100_v2/nand_x8/v2/mt100_v2/mt100_v2.runs/impl_1/mt100_v2_wrapper.ltx.server
The device design has 0 ILA core(s) and 0 VIO core(s). The probes file(s) have 3 ILA core(s) and 0 VIO core(s).blog
Resolution:ci
1. Reprogram device with the correct programming file and associated probes file(s) OR资源
2. Goto device properties and associate the correct probes file(s) with the programming file already programmed in the device.
报错二:
ERROR: [Labtools 27-3312] Data read from hw_ila [hw_ila_1] is corrupted. Unable to upload waveform.
首先要了解什么是 debug hub core?
a debug core hub (dbg_hub) is automatically inserted into the synthesized design netlist to provide connectivity between the new ILA core and the JTAG scan chain.
debug hub 负责将一个或几个ILA与JTAG链接起来。JTAG指令下发以及抓取的波形数据回传到screen都要经过它。
(参考 p133 - ug908-vivado-programming-debugging.pdf)
就像这个,把3个ILA连到JTAG上。
从warning的提示来看,一、这个hub的clock不正常;或者二、两个参数不匹配(通常参数都是01没问题,能够在properties中查到)。
那么重点是clk为何不对?
Make sure the clock connected to the debug hub (dbg_hub) core is a free running clock and is active.
我遇到过两种状况,致使clock不正常的。
一、clock线连上了,可是这个wire上却没有clock波形,由于zynq的ps端没有启动配置,因此没有任何clock到pl端;
二、咱们设置的clock频率跟JTAG仿真器的不匹配。重点来讲这个。
在以前正常的project中,dbg_hub的clk都是链接在clk_out1(40mhz)上,此次连到了clk_800k,为何链接变了? 频率低了有什么问题?
在p35-ug908上有指明 “The JTAG chain is as fast as the slowest device in the chain.”
dbg_hub上面一共挂了3个device,clock分别是40mhz、20mhz、800khz,因此才连到了这个最低的800k上面。
在xilinx的forum上有个QA,Data read from hw_ila is corrupted 。其中提到 “Can you please check whether your JTAG frequency is lower than ILA clock frequency? It is recommended to keep the JTAG frequency half or less than half of ILA clock frequency.”
虽而后半句,推荐一半或更低的freq没有在ug908上找到依据,可是jtag比ILA低这个是原理性的。The JTAG chain is as fast as the slowest device in the chain.也是这个意思。
ERROR: [Xicom 50-38] xicom: No trigger mark in any sample in window: 0.
ERROR: [Xicom 50-41] Waveform data read from ILA core is corrupted (user chain=1, slave index=0).
Resolution:
1) Ensure that the clock signal connected to the debug core and/or debug hub is clean and free-running.
2) Ensure that the clock connected to the debug core and/or debug hub meets all timing constraints.
3) Ensure that the clock connected to debug core and/or debug hub is faster than the JTAG clock frequency.
ERROR: [Xicom 50-38] xicom: Error during interpreting trace readback data
ERROR: [Labtools 27-3176] hw_server failed during internal command.
Resolution: Check that the hw_server is running and the hardware connectivity to the target
此次报错已经说明的很清楚了,ILA和HUB的clock必定要比JTAG的高!
p35上还有一段,”a default JTAG clock frequency that is 15 MHz for the Digilent cable connection and 6 MHz for the USB cable connection.“
也就是说,我用的这个USB-JTAG仿真器跑的默认频率是6mhz。这个6mhz比40mhz和20mhz低能够work,但明显高于800k的。
那么根因已经很清楚了,报错的project中debug hub这个中间链接件的clock比 jtag仿真器的低,正确的应该是确保jtag是最低的!
很明显,解决办法有两个。
一、把jtag仿真器的频率降下去。
Program and Debug --> Open hardware manager--> Open Target --> Open new target (先关掉以前打开的hardware)
能够选750khz,比800k低。实测确承认行,并且明显刷新波形界面的速度慢下来了,这是确定的。
二、把debug hub的频率升上去。
在setup debug中产生的ILA相关的XDC约束文件最后一段,把 connect_debug_port dbg_hub/clk [get_nets u_ila_2_clk_800k] 改为参考 u_ila_0_clk_out1,40mhz。实测也OK。
是否能够把频率设置成800k? set_property C_CLK_INPUT_FREQ_HZ 800000 [get_debug_cores dbg_hub]
答案是不行的,这个明显是设置dbg_hub的,默认300mhz,实际仍是由 u_ila_2_clk_800k 实际决定的。还得改jtag的Hz。
延伸,ILA及DEBUG模块占用fpga资源,也会影响用户逻辑timing。因此通常系统默认连lowest的那个clock,或者把 C_ENABLE_CLK_DIVIDER true。
参考TCL指令:
get_property C_USER_SCAN_CHAIN [get_debug_cores dbg_hub]