1. 程式人生 > >vivado----fpga硬體除錯 (五) ----找不到ila核問題及解決

vivado----fpga硬體除錯 (五) ----找不到ila核問題及解決

問題 一:

  1. WARNING: [Xicom 50-38] xicom: No CseXsdb register file specified for CseXsdb slave type: 0, cse driver version: 0. Slave initialization skipped.
  2. INFO: [Labtools 27-1434] Device xc7k410t (JTAG device index = 0) is programmed with a design that has no supported debug core(s) in it.
  3. WARNING: [Labtools 27-3123] The debug hub core was not detected at User Scan Chain 1 or 3. You must manually launch hw_server
  4. with -e "set xsdb-user-bscan <C_USER_SCAN_CHAIN scan_chain_number>" to detect the debug hub at User Scan Chain of 2 or 4.
  5. To determine the user scan chain setting, open the implemented design and use: get_property C_USER_SCAN_CHAIN [get_debug_cores dbg_hub].
  6. WARNING: [Labtools 27-1974] Mismatch between the design programmed into the device xc7k410t_0 and the probes file D:/Vivado/xc7k410t-2ffg900/ddr_slave_410t_20150527_1/ddr_slave_410t_20150527_1.runs/impl_1/debug_nets.ltx.
  7. The device design has 0 ILA core(s) and 0 VIO core(s). The probes file has 1 ILA core(s) and 0 VIO core(s).
  8. Resolution:
  9. 1. Reprogram device with the correct programming file and associated probes file OR
  10. 2. Goto device properties and associate the correct probes file with the programming file already programmed in the device.
複製程式碼


大概是說設計裡沒有ILA core,但是debug檔案裡有ILA core,而且debug probes視窗下什麼也沒有。但是,我綜合後明明插入了debug core呀,而且在約束檔案裡也自動生成了相關資訊,檢視schematic,也添加了debug相關的兩個元件,為毛program時就是看不到呢?

不知道有沒有人遇到過類似的情況,求指點,萬分感謝!

解決:

1: VIO 和 ILA 的CLK 有問題。

2: 我查的Xilinx的論壇,貌似也這麼說,說是要用free running clock,但我也沒弄明白什麼樣的叫free running clock。我用的就是那些暫存器本來的時鐘,如果換個時鐘的話,怎麼能保證取樣不會出問題呢?還是不太明白,能否詳細指教?謝謝啦!

       所謂的free running clock就是上電就跑的時鐘,而不是依賴某些條件才有的。補充一點,FREE CLOCK的確是要求上電無條件執行的時鐘。有一次我碰到一種情況。用MMCM或者PLL輸出的時鐘作為取樣時鐘,但是如果MMCM或者PLL這個輸入並不是上電就來的話,而是等FPGA程式運行了之後時鐘輸入才來,那麼下載程式之後還是在ILA除錯介面看不到任何訊號。把MMCM或者PLL的輸入時鐘改為晶振的時鐘,那麼就可以正常使用ILA了。這是我的個人感覺,沒有經過大量驗證,所以希望大家多多指教。補充一點,FREE CLOCK的確是要求上電無條件執行的時鐘。

        其實不用FREE CLOCK也沒問題。比方用ZYNQ PS產生的CLK也可以。上電後做PS初始化,再把需要的暫存器設定一下,然後更新一下DEVICE,就可以找到ILA了。

3 : 這個問題我遇到過,其實第一種情況是你的時鐘訊號可能沒加入成功(比如外部輸出時鐘訊號沒進來或者幅度太小,內部時鐘可能沒有lock);第二種情況是,你輸入到ila核的時鐘頻率不合適。其實,ila就是個取樣你需要的檢視的訊號的始終,因此最好是直接用外部始終的mmcm生成大於你需要採集訊號的最高頻率來取樣(具體多大頻率,看你取樣點數的需求和你訊號的頻率了)。

4: 這個問題是時鐘引起的。當bit file program完成之後,fpga/vivado會自動檢測ila的clock是否存在,如果不存在(在本例中是pll/mmcm沒有lock),它就會report 這個warning。這個時候我們只要讓時鐘工作起來,refresh一下device,ila就會啟動--ila的視窗就會出來了。

5 : 你試試直接用外部輸入的時鐘(可經過時鐘buf)作為ila的clk,不要用其它模組產生的時鐘。

問題 二:

我在vivado下進行除錯,呼叫了ILA IP Core。如果ila採用晶振輸入作為clk時(也即全域性時鐘),在頂層RTL級,可以看到ila的資料和時鐘都連上了。Debug時也能在Hardware下看到XADC和ILA。
但如果ila的clk,採用邏輯計數辦法分頻後的時鐘訊號、或者採用clock wizard倍頻後的時鐘訊號。在頂層RTL下看ILA的clk並沒有和上述時鐘源連線上。此時將bit流下載後Debug,也只能看到XADC而看不到ILA核。
  
想知道使用ILA時,ila的clk的輸入源是不是有什麼特殊限制?

解決:

1 : 難道是:(Xilinx PG172)
The clk input port is the clock used by the ILA core to register the probe values. For best results, it should be the same clock signal that is synchronous to the design logic that is attached to the probe ports of the ILA core.
  
  


2 : 首先確保你的分頻結果是有效的。
然後,如果你非要用分頻結果的話,過一個bufg試試。

// BUFG: 全域性時鐘快取(Global Clock Buffer),只能以內部訊號驅動  
// Xilinx HDL庫嚮導版本,ISE 9.1  
BUFG BUFG_inst (  
.O(O), //時鐘快取輸出訊號  
.I(I) // /時鐘快取輸入訊號  
);  
// 結束BUFG_ins模組的例化過程