FPGA代码中的信号优化问题

(笔者使用的是QuartusII 的SignalTap II Logic Analyzer)在使用开发软件逻辑分析仪的时候,软件为了节约内存。有时候会自动优化一些信号,使得这些信号变得不可见,通过以下方式可以得到一些解决。

解决这个问题首先要了解一下扇入扇出问题。

网上的解释很多,但是个人认为扇入就是指定义的reg类型寄存器作为输入,扇出就是作为reg类型的寄存器作输出。若这个信号没有作为输出,则称为零扇出,若这个信号没有作为输入,则称为这个信号作为零扇入。从这个理解角度,我们可以:

1. 如果是组合逻辑信号,可以使用keep属性:

(* keep *) wire sig;

2. 如果是寄存器,并且不是零扇出,可以使用preserve属性:

(* preserve *) reg sig;

使用preserve有以下限制:

    1)不会从该寄存器推断出状态机;

    2)对零扇出寄存器无效。

3. 如果是寄存器,并且是零扇出的,可以使用noprune属性:

(* noprune *) reg sig;

倘若想要整个module中定义的信号都不被优化掉。我们可以:

module TEXT(

        input clk,

        input rst_n,

        input cnt,

        output data

);/*synthsis noprune*/

及在module定义结束处,加上/*synthsis noprune*/

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值