FPGA在线调试信号被优化原因分析及防止优化方法总结

时间:2025-06-13  作者:Diven  阅读:0

之前的一篇文章介绍了FPGA在线调试的方法[1]。这几种方法都比较常用,但是现实往往没有这么简单,很多时候,工具在综合,布局布线阶段会对某些代码进行优化,所以实际的电路与代码中的信号无法对应上,也是很常见的事情。而我们常常会使用代码中的信号名来抓取信号,后期布局布线阶段,无法找到对应的电路信号,可能会导致无法抓取信号或者布局布线失败。

FPGA在线调试信号被优化原因分析及防止优化方法总结

信号被优化,主要情况大致为两点:

  1. 多余的bit

例如,我们定义状态机信号state为4bit信号,但实际上我们的状态机只有0,1两种状态。这种情况下,工具会自动认为多余的3bit没有用到,直接将state优化为1bit,所以想直接抓取state完整的信号就没有办法抓到;计数器信号被优化大部分也是因为bit数多余了。

  1. 重复的信号,或者有更好的设计方法

很多人说verilog编写,心中要有电路。但是对于初学者来说,将verilog代码与数字电路对应上,还是比较困难的,所以代码上,有很多优化空间,也有些代码只是为了“测试”,后期没有驱动其信号。而工具也较为“智能”地发现这一点,帮助设计者做好优化。设计者的信号可能就会被省略,导致实际电路没有代码对应的信号。

解决这种问题的方法也有多种,分为被动和主动方法。

  1. 被动方法:将被省略的信号输出

在我初学的时候,遇到这种情况的解决方案,是直接将被省略的信号输出,以上面说的state为例,直接在Module的输入输出端口增加一个output reg [3:0] state,并将原来的state定义注释掉。如此一来,信号必须要输出,工具不会对信号进行优化。

对于一些仅仅用于“测试”的代码,没有驱动其信号而被优化的情况,初学时的方法一般是给增加一个驱动,让这个信号去驱动别的信号,让工具看到这个信号的“价值”,从而避免被干掉。

  1. 主动方法:使用SYNTHESIS 语句防止被优化

使用专用的SYNTHESIS语句告诉工具,不要优化该信号,在不同的工具中,语句内容,使用方式不同。

在Quartus中,使用/ synthesis noprune /,/ synthesis preserve /等语句,注意,这些语句如果是用于信号的定义时,需要放在定义的语句尾部。如下图所示:

reg [3:0] state ;
reg [3:0] nxt_state ;

当然也有别的语句,还有将语句放在Module定义尾部,防止模块内任意信号被优化,由于好久没有使用过quartus,怕说错了这部分内容,就不多说了,这些资料可以使用baidu/google/bing搜索“QUARTUS防止信号优化”获得。

在Vivado中,使用(* keep="true" ),( keep_hierarchy="yes" *)语句。这些语句是放在信号定义之前的。

(* keep="true" *)reg [3:0] state ;
(* keep="true" *)(* max_fanout=50 *) reg [12:0] index ;

以及

(* keep_hierarchy="yes" *)
clk_manager
clk_manager_inst(
.clk_in(clk_in),
.rst(rst),
...
);

(* keep="true" )对信号进行保护,但并不是说一定有效。一般遇到加了( keep="true" )还被优化的信号,我会使用( keep_hierarchy="yes" *)对整体模块进行保护,一般到这一步,信号就可以抓取到了。

当然,也可以用SchematIC,查看具体的实现之后,信号是否还存在。SchematIC如下:当然,最主要还是要提高自己的姿势水平,写出更“规范”的代码,规避工具所想与自己所想有差异。

使用工具版本:

QUARTUS II: 13.1

VIVADO: 2019.1

猜您喜欢


智能功率模块(IPM)是集成化的功率电子器件,应用于电动机驱动、变频器和电源管理等领域。其主要优势体现在以下几个方面:IPM具有高度集成性,内部集成了功率器件、...
2014-07-02 00:00:00

1、 概述随着信息社会的发展,数据交换,网上交易等活动日益频繁,从而网络安全成为人们关注的重要问题。随着信息技术的发展与应用,信息安全的内涵也在不断延伸,从最...
2020-07-22 17:52:00


在纷繁复杂的标识世界中,国标标识犹如一盏明灯,独特参数引领规范之路。尺寸、颜色、字体,每一项都蕴含深意。尺寸需符合人体工学,确保一目了然;颜色则需遵循标准,红色...
2010-04-21 00:00:00

任何信息需要借助声、光、电信 号进行传递,由于光信号和电信号在海水中的衰减比较严重,而声波是人类迄今为止已知的惟一能在水中远距离传播的能量形势,因此,近些年海洋...
2018-09-09 10:53:00

在实验室中,泵是非常重要的设备,应用于液体的传输和处理。选择合适的泵规格和尺寸,能够有效提高实验效率和数据准确性。一般而言,实验室用泵的规格尺寸主要取决于使用目...
2016-07-06 00:00:00

功率电感是电力电子中重要元件。用于储存能量和滤波。设计功率电感需要考虑多个因素。本文将详细讲解功率电感的设计要点。功率电感的基本概念功率电感是磁性元件。在电路中...
2025-03-27 15:00:35

熔断器是必不可少的安全元件。随着技术的发展,宾雅熔断器因其稳定的性能和多样的封装形式,逐渐成为市场上的热门选择。本文将详细介绍宾雅熔断器的定义、封装参数及知名品...
2022-12-13 18:38:30

贴片电阻,电子产品中 ubiquitous 的小元件,其阻值往往并非直接印在表面,而是用字母数字组合表示。别担心,读懂这些「神秘代码」其实很简单!对于三位数的标...
2025-04-14 15:03:39