【CPLD Verilog】WARNING - IO buffer missing for top level port

在编写的一个监控风扇板的TACH信号的程序中

module FanTachMonitor (
 input sys_clk
,input auxgood
,input [31:0] fan_count_num // fan_count_num * 20ns = fan_time
,input fan_tach
,output reg [15:0] fan_rps 
);

综合之后报了一组warning

WARNING - IO buffer missing for top level port i_CPLD_FAN1_TACH0...logic will be discarded.

WARNING - IO buffer missing for top level port i_CPLD_FAN1_TACH1...logic will be discarded.

WARNING - IO buffer missing for top level port i_CPLD_FAN2_TACH0...logic will be discarded.

WARNING - IO buffer missing for top level port i_CPLD_FAN2_TACH1...logic will be discarded.

WARNING - IO buffer missing for top level port i_CPLD_FAN3_TACH0...logic will be discarded.

WARNING - IO buffer missing for top level port i_CPLD_FAN3_TACH1...logic will be discarded

从网上搜了一下这个warning,发现了一个案例是说这个warning是综合器在综合的时候将部分net优化掉了。通过RTL发现相关的net根本没有连到任何模块,实际上整个FanTachMonitor都没有被综合!

相应的检查FanTachMonitor的输出端口,发现本应输出给RAM模块的信号,在RAM中只是接了一个0的常数寄存器。

回到程序中,检查发现在顶层模块存在这样的一组语句:

wire [15:0] w_CPLD_FAN1_RPS0=16'b0; //mean round per second
wire [15:0] w_CPLD_FAN1_RPS1=16'b0;
wire [15:0] w_CPLD_FAN2_RPS0=16'b0;
wire [15:0] w_CPLD_FAN2_RPS1=16'b0;
wire [15:0] w_CPLD_FAN3_RPS0=16'b0;
wire [15:0] w_CPLD_FAN3_RPS1=16'b0;

猜测是否是这里将wire型的变量的“赋初始值”的动作,导致综合器在综合的时候认为这里的wire型变量和常数寄存器相连,从而综合器在优化时认为,FanTachMonitor这个模块无法输出任何东西(输出的wire锁死为常数),因此将整个FanTachMonitor给优化掉了。

将上面的代码中的赋值动作去掉后,RTL正确生成的该部分的电路,并且warning也消除了。

总结:

(1)wire型变量别乱赋初始值;

(2)综合器有时候会优化掉一些模块,但是这种情况会被认为是warning,而不是error,有可能出错。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Verilog中设置IO,可以通过定义输入和输出端口来实现。在引用\[1\]中的例子中,定义了一个监控风扇板的TACH信号的模块FanTachMonitor,其中包括了输入端口sys_clk、auxgood、fan_count_num和fan_tach,以及输出端口fan_rps。这些端口可以根据需要进行定义和连接。 在引用\[2\]和引用\[3\]中的例子中,展示了如何拓展SCL和SDA端口。通过定义选择信号i2c_io_sel,可以根据选择信号的值来决定将哪个信号输入到模块中。例如,在拓展SCL端口的例子中,根据i2c_io_sel的值,将scl_r信号输入到对应的scl_0、scl_1、scl_2、scl_3、scl_4端口中。类似地,在拓展SDA端口的例子中,根据i2c_io_sel的值,将sda_0、sda_1、sda_2、sda_3、sda_4信号输入到对应的sda_in端口中。 因此,通过定义选择信号和根据选择信号的值来连接不同的信号到对应的端口,可以实现Verilog中的IO设置。 #### 引用[.reference_title] - *1* [【CPLD VerilogWARNING - IO buffer missing for top level port](https://blog.csdn.net/u011605941/article/details/102917983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [verilog 如何做到带双向IO口模块的接口拓展](https://blog.csdn.net/qq_32290049/article/details/105051708)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值