對傳統的非DFX設計進行調試時,一個重要環節是插入ILA(Integrated Logic Analyzer,集成邏輯分析儀)。可以采用如下圖所示的兩種方式。方式1是實例化方式,即在RTL代碼或者BD中實例化ILA。如果圖中紅色字體“Instantiation”所示。方式2是網表插入方式,即在綜合后的網表中插入ILA。
不難看出方式1是在綜合之前完成,而方式2則是在綜合之后完成。方式1需要手工例化ILA,同時將待測網線連接到ILA的測試端口,這個過程稍顯繁瑣,尤其是待測信號需要穿越多個層次到達ILA所在層次時,但也確保了待測信號能夠百分之百被觀測到(不會被工具優化掉)。方式2更為自動化,在綜合后的網表中找到待測信號將其標記為debug(本質上是將其屬性mark_debug設置為true)。但有可能出現待測信號名字發生改變或者徹底被優化掉而無法找到的情形。
對于DFX設計,那么就只能使用實例化方式插入ILA。但即便如此,仍有一些特殊之處。為便于說明,我們看一個實際案例。這個DFX設計中的RP(Reconfigurable Partition)為math,該RP下有兩個RM(ReconfigurableModule),分別為add和mult,如下圖所示。
每個RM中均包含一個ILA。這個ILA無論參數配置是否一致,都要分別調用ILA IP Core,單獨例化。這是DFX設計所要求的,即每個IP都要以唯一的方式存在于RM中。
到這里我們看到的例化ILA的方式與傳統的非DFX設計并沒有什么不同。但是在每個RM的頂層,需要添加12個BSCAN端口,如下圖所示。這12個端口最終會與dbg_hub相連。這里要求端口名字必須與圖中紅色方框內的名字完全一致,如果不一致,則要通過屬性X_INTERFACE_INFO設定。
在整個設計的頂層,對RM進行實例化時,這12個端口的端口映射為空,如下圖所示,如果使用的是VHDL,端口映射內填寫open。
在綜合階段生成的網表中,dbg_hub是以黑盒子的形式存在,在設計頂層和RM內分別有一個dbg_hub,如下圖所示。dbg_hub與ILA的連接關系由工具自動處理,無需人工干預。
實際上,在opt_design階段,Vivado會自動生成dbg_hub,這可在runme.log文件中查看到,如下圖所示。
打開布線后的網表文件,執行命令get_debug_cores,可以看到當前網表中的ILA、VIO和dbg_hub。如下圖所示,設計頂層和RM中各有一個dbg_hub。
如果某個RM中并沒有使用ILA或VIO,而其他RM中至少有一個使用了ILA或VIO,那么所有的RM都要列出上文提到的12個BSCAN端口,以確保所有RM接口的一致性。
審核編輯:劉清
-
處理器
+關注
關注
68文章
19165瀏覽量
229138 -
VHDL語言
+關注
關注
1文章
113瀏覽量
17988 -
RTL
+關注
關注
1文章
385瀏覽量
59706 -
VIO
+關注
關注
0文章
11瀏覽量
10128 -
DFx
+關注
關注
0文章
35瀏覽量
10526
原文標題:如何對DFX設計進行調試?
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論