FPGA代码中的信号优化问题

本文介绍了如何在使用QuartusII的SignalTapII Logic Analyzer时,防止软件自动优化信号导致不可见。扇入扇出问题是关键,对于组合逻辑信号,可以使用`(*keep*)`属性;对于非零扇出寄存器,应用`(*preserve*)`属性;而对于零扇出的寄存器,使用`(*noprune*)`属性。此外,可以在整个module中使用`/*synthsis noprune*/`注释来避免信号优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(笔者使用的是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*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值