vivado Mark debug 方式添加测试端口

     在线调试,可以用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文件格式来续。

 

 

 

 

 

 

 

 

 

 

     

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章