signal tap ii观察wire和reg类型信号

在FPGA程序调试中,SignalTap是常用的板级调试工具,但有时变量无法在SignalTap中显示,原因是综合器进行了优化。本文介绍了如何通过添加/*synthesiskeep*/、/*synthesisnoprune*/和/*synthesispreserve*/等综合属性,防止wire型和reg型变量在Quartus综合时被优化,确保它们在SignalTap中可见。这两种类型的变量有不同的处理方式,例如wire型使用(*keep*)或/*synthesiskeep*/,而reg型则使用(*noprune*)或(*preserve*),确保调试过程中能有效观察变量变化。

在待观察的wire信号旁边加上/*synthesis keep*/;

wire [31:0] readdata /* synthesis keep = 1 */;

对于没有output的reg信号,Quartus在综合时也采用了最佳方式,因此,在SIgnalTap II中不能观察该信号。

解决方法:

对于reg信号则加/*synthesis noprune*/  或者 /* synthesis preserve */

两者的不同之处在于:

/*synthesis noprune*/避免Quartus II优化掉没output的reg。

/*synthesis preserve*/避免Quartus II将reg优化为常数,或者合并重复的reg。

 

若是想观察整个模块中的reg信号,则在module之后添加/*synthesis noprune*/ 

module test(clk,rst,data)/*synthesis noprune*/ ;

 

0. 简介

  在FPGA程序调试时,我们除了仿真还经常的会用到SignalTap进行板级调试,其可以真实有效的反应某些变量的变化,方便我们理解内在跳转,方便Debug的运行。SignalTap需要制定时钟,根据需求进行选择,其采样遵循奈奎斯特因采样定律。

  我们在Debug中有时会经常遇到这样的情况,在SignalTap中并不能观察到所有的变量值。有些变量添加进入面板后会变红,这就表示SignalTap抓取不到此数值。出现这一现象的原因是,综合器在综合时对一些变量进行了优化,所以就显示不出来了。下文将针对两种变量类型,wire和reg来分别讲述如何让其正常的显示出来。这一部分的知识其实很简单就是,基本思想就是使用综合属性Synthesis Attribute来控制综合时的一些优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值