在線調試,可以用ila,也可以用debug。平時我都用的ila或者chipscope。但是在block開發方式下,module裏面不能含有IP核,否則add module失敗。當然也可以把module封裝成IP核,然後在block中添加。自己開發的時候,又懶得把所有模塊封裝成IP核,耗時,麻煩。這樣想要添加測試信號的時候,就需要用到debug。
在使用chipscope的時候,有的信號可能你在端口列表中根本找不到,添加(*keep= “true”*)也不行,這裏就可以凸顯mark_debug 的優勢。用mark_debug 就能觀測到改信號。
1 、 在代碼中添加(* mark_debug="true" *) 語句
2、在block design 時,在信號上右鍵 ------ debug
在使用debug 的時候,有一個問題很頭疼。比如我這次添加了3個信號,等會想去掉一個,或者添加一個。首先,綜合然後才能打開添加debug的界面;其次,每次新打開debug,代碼中所有的debug都會有,而不是上次添加多的,還需要自己一個個找,如果代碼中debug的信號特別多,添加/刪除 信號很麻煩。
其實,第一次採用debug界面生成,後面直接修改XDC文件就可以了,下面是我嘗試添加了兩個信號,已經生成的bit文件。
上圖,紅色方框圈起來的是後來自己新添加的信號。後期添加,就按照這樣,每組4條指令添加即可。第一組是位寬爲1 的信號,第二組是位寬爲8的信號。
上圖中各標號說明:
1:probe 15 ,緊接上面的編號往下續的
2:probe 15 ,緊接上面的編號往下續的
3:標識該測試信號的位寬爲1
4:probe 15 ,緊接上面的編號往下續的
5:測試的信號。注意和後面“7”對比,不僅僅是位寬拼接的不同,這裏比“7”中也多了一個ssd_rd_judge_0_XXX。o_ssd_m_tready和其他module相連,這裏在使用o_ssd_m_tready這個信號 的時候,要標識是哪個模塊的數據。所以這裏使用了
ssd_rd_judge_0_o_ssd_m_tready (注意ssd_rd_judge_0 是模塊block界面上面的名字)
6:標識該測試信號的位寬爲8
7:測試的信號。和“5”的不同不僅僅是位寬拼接,在信號說明的時候,沒有RAID_CTRL_0.那是因爲,這裏的信號沒有和其他模塊相連。 多位拼接按照固定格式來就可以了。
8: 額外說明一點:多數據拼接的時候不要有換行,有的時候換行會報錯。然後把換行去掉,所有的都寫爲一行,就沒有錯誤了。自動生成的XDC文件中也有換行的,不知道爲什麼自己添加的就不行。
上面的描述,我都是在block中,右鍵debug看的信號。代碼內部的在這裏沒用到。代碼內部的,應該是design_1_i/module_name/signal 這類格式。信號索引按照module一層層往下找。可以參考自動生成的xdc文件格式來續。