爱板网论坛

查看: 325|回复: 0

[教程] 【转】fpga硬件调试vivado——mark_debug(下)

[复制链接]

582

主题

3

好友

1万

积分

翰林

Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    擦汗
    2014-2-12 10:49
  • 签到天数: 150 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2017-7-21 10:11:18 |显示全部楼层

    在Vivado下在线调试是利用ILA进行的,Xilinx官方给出了一个视频,演示了如何使用Vivado的debug cores,下面我根据这个官方视频的截图的来演示一下:
    官方的视频使用的软件版本为2012.2,不过在2015.3下也是差不多的。


    第一步:标记需要debug的信号
    例如:
    VHDL:attribute mark_debug of sineSel  :  signal is "true";
                 attribute mark_debug of sine       :   signal is "true";
    Verilog: 在需要debug的信号前加上 (* MARKDEBUG = "TRUE" *)


    第二步:设置debug
    首先打开synthesis design,可以看到之前标记的debug信号,然后点击tools,选择set up debug
    20151105155030301.png


    点击find nets to add,可以找到之前标记的信号,把信号添加完毕,检查Clock Domain是否正确,点击下一步。
    20151105155807537.png


    在下图中,将Capture control和Advanced trigger打上勾,这样在后面的调试中可以使用高级的捕获功能,再下一步,这样ILA的设置工作就完成了。
    20151105160240133.png


    可以在debug视图中看到,Vivado自动帮我们插入了dbg_bug和ila,接下来生成bit文件,写入FPGA中,在Vivado的调试界面上就能进行在线的波形输出了。
    20151105160502386.png





    在vivado中fpga功能验证比ise中方便了很多,主要体现在debug的ip核生成以及最后的波形观察和调试上,下面我就从这两个方面说一下vivado的fpga验证调试。
        fpga验证的步骤一般是:
        × 在代码中加入关键字,表示信号要被调试.
        × 进行elaboration和synthesis.
        × 打开synthesis, 设置debug核.
        × 重新进行synthesis和implement以及write bitstream.
        1,vivado中debug核的生成:
        原来在ise中,要进行fpga的验证,必须生成两个debug核,一个是ICon,另外一个就是ILA,分别对应是控制和收集波形。但是在vivado中,我们只需生成ILA即可,不需生成ICon。
        在生成ILA之前,我们要指定哪些信号应该被调试,原来在ise中,如果不用例化的方式的话,我们就必须一点点去net中找哪些信号应该被调试,很不方便,但是在vivado中,我们可以事先在源代码中加入关键字mark_debug="true"来告诉软件这个信号是要被调试的,从而在生成debug核的过程中,这些被调试的信号就直接显示出来了。如下所示:
    1. <font size="3" color="#000000">(* mark_debug="true" *)output reg [17:0]  wr_addr,                       // Memory Write Address  
    2. (* mark_debug="true" *)output reg [7:0]   wr_be,                         // Memory Write Byte Enable  
    3. (* mark_debug="true" *)output reg [31:0]  wr_data,                       // Memory Write Data  
    4. (* mark_debug="true" *)output reg         wr_en,                         // Memory Write Enable  
    5. (* mark_debug="true" *)input              wr_busy                        // Memory Write Busy </font>
    复制代码
       接着我们对加入关键字的代码进行elaborate和synthesis。等到综合完成之后,我们就要生成debug核了,生成debug核的方式有好几种,这里只说我感觉比较方便的一种,及Open Implemention Design下的Set Up Debug选项,如下所示:
    20160618085119746.png


    上图中的信号就是我们在verilog源码中标记的要debug的信号,在生成debug核之前,首先要为debug核生成时钟信号,即上图蓝色圆圈标记的部分。这里Set UpDebug是自动为所选信号生成debug核,也就是说我们可以全选上面的信号,然后点击Next就自动生成所需要的debug核。
        2,观察调试信号
        在debug核生成之后,我们要对设计重新synthesis和implementation,然后生成比特流下载到fpga上进行验证。在配置好bit流和debug文件之后,就会自动出现调试波形接口,如下所示:
    20160618092907063.png


    在调试窗口中,可以设置Tigger Setup,这里要说一个对实际观察波形非常方便的一个功能,就是在Trigger Setup窗口中可以选择一个信号,然后编辑enumeration,就是现实信号所代表的含义,而不是只现实数值,这在状态机观察中非常方便,如下图所示:
    20160618093315380.png


      然后在点击Trigger程序就可观察实时的波形了,如下图所示:
    20160618094002608.png

      如何保存vivado中ila采集到的数据
            最后可以选择保存收集到的波形,可以看出上图中的Enumeration的作用(例如PIO_RX_WAIT_STATE不是数值而是名称),这个比chipscope方便多了,因为在chipscope里面好像就无法保存收集到的波形(至少我现在还没有找到),保存(上图蓝色圆圈标记的部分),可以选择不同的格式,Native(vivado本身波形的格式),CSV和VCD,保存成VCD格式,其他软件就能打开了。
           导出csv或者vcd文件,vcd文件为通用波形文件,只能用来查看;所以只能通过csv文件解析数据。



    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /2 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-11-23 02:44 , Processed in 0.126887 second(s), 11 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部