原创 Vivado 调试工具的使用 (2)

2017-9-21 22:21 4797 17 17 分类: FPGA/CPLD

(一)网表插入调试探测流程的方法

当在分层设计时,插入vivado工具中的调试核,用于解决不同设计者的不同需求:

(1)最高级是在一个简单的向导内,基于所选择的用于调试的网络集合自动创建和配置集成逻辑分析仪(Integrated Logic Analyzer,ILA)核;

(2)下一个层次是,在Vivado主界面点击命令菜单 Window,弹出Debug。这个窗口内,允许控制单个调试核、端口和它们的属性;

(3)最低层次是Tcl调试命令集合,设计者可以手工输入或者作为脚本反复使用.

1.标记用于调试的HDL信号

  在综合前,通过使用mark_debug属性,设计者可以在HDL源文件中标识用于调试的信号。在HDL中,标识用于调试的信号所对应的网络将在“Debug”窗口中自动列出。用于调试所标记网络的过程,取决于RTL级的工程还是综合后的网表工程。

(1)对一个RTL网表工程

        <1> VHDL 或者 Verilog 源文件中,使用mark_debug约束可以标记用于调试的HDL信号。在HDL中,用于mark_debug约束的有效值是 TRUE 或者 FALSEVivado 综合特性不支持 SOFT值;

       <2>使用Xilinx综合技术(Xilinx Synthesis Technology,XST),设计者可以在VHDLVeilog源文件中,使用mark_debug属性标记用于调试的网络。此外,有效值是 TRUE 或者 FALSE。如果可能,SOFT值允许软件优化指定的网络。

(2)对一个综合后的网表工程

        <1>使用Synopsys Synplify综合工具,设计者可以在VHDL或者Veilog文件内,使用mark_debugsyn_keep属性,或者在SDC文件内单独使用mark_debug属性,来标记用于调试的网络。当该行为由syn_keep属性控制时,Synplify不支持SOFT值。

   <2>使用Mentor Graphics Precision综合工具,设计者可以在VHDL或者Verilog文件内,使用mark_debug属性来标记用于调试的网络。


2.标记用于调试的HDL信号的例子


(1)Vivado 综合mark_debug的例子

<1>VHDL语法

attribute mark_debug:string;
attributemark_debug of char_fifo_dout:signal is “true”;

<2>Verilog语法

(*mark_debug=”true”*)wire[7:0]char_fifo_dout;


(2)XST mark_debug语法例子

<1>VHDL语法

attribute mark_debug:string;
attributemark_debug of char_fifo_dout:signal is “true”;

<2>Veilog语法

(*mark_debug=”true”*)wire[7:0]char_fifo_dout;


(3)Synplify mark_debug语法

<1>VHDL语法

attribute syn_keep:Boolean;
attributemark_debug:string;
attribute syn_keepof char_fifo_dout:signal is true;
attributemark_debug of char_fifo_dout:signal is “true”;

<2>Verilog语法

(*syn_keep=”true”,mark_debug=”true”*)wire[7:0]char_fifo_dout;

<3>SDC语法

define_attribute {n:char_fifo_din
  • }{mark_debug}{“true”}

  • (二)网表插入探测流程的实现

    1、添加测试点

        首先对设计进行综合,完成后,选择Open Synthesized Design,在Netlist窗口下,列出了当前设计中存在的所有网络的节点。


       

        从所列出的网络节点中,选择需要调试的端口,并进行标记。找到Inst_fifo1,展开,找到dout(8),单击鼠标右键,在浮动菜单内执行命令Mark Debug。将din,rd_en,wr_en 都进行同样的设置。

       然后运行实现,生成比特流,并将其下载到zeboard。下载完后,会出现调试器的界面。(将rd_en和er_en所对应的拨码开关置高,表明外部读写信号有效)

      找到Trigger Setup 对话框,将fifo_inst/rd_en  fifo_inst/wr_en添加进来,将它们的比较值都设置为1。同时设置 Set Trigger Condition to Global OR,表明rd_en 或者wr_en 1时,满足触发条件,用于捕获数据。



    点击运行按钮



















    PARTNER CONTENT

    文章评论0条评论)

    登录后参与讨论
    EE直播间
    更多
    我要评论
    0
    17
    关闭 站长推荐上一条 /3 下一条