(一)网表插入调试探测流程的方法
当在分层设计时,插入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 或者 FALSE。Vivado 综合特性不支持 SOFT值;
<2>使用Xilinx综合技术(Xilinx Synthesis Technology,XST),设计者可以在VHDL和Veilog源文件中,使用mark_debug属性标记用于调试的网络。此外,有效值是 TRUE 或者 FALSE。如果可能,SOFT值允许软件优化指定的网络。
(2)对一个综合后的网表工程
<1>使用Synopsys Synplify综合工具,设计者可以在VHDL或者Veilog文件内,使用mark_debug和syn_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
(二)网表插入探测流程的实现
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时,满足触发条件,用于捕获数据。
点击运行按钮
文章评论(0条评论)
登录后参与讨论