You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vivado遇12-1023警告时,如何用get_nets查找wire?

问题:Vivado中执行get_nets无法找到wire C的原因及解决办法

问题重现

用户提供的Verilog代码如下:

`timescale 1ns/1ps
module Save_Mult_Df(A);
input A;
wire C;
assign C=A;
endmodule

module test();
reg A;
wire C;//should wire be added to testbench?

initial
A= 2'b10;

Save_Mult_Df test(
.A(A)
);
endmodule

在RTL细化设计后,执行Tcl命令 get_nets * -filter {NAME == "C"},出现警告:

WARNING: [Vivado 12-1023] No nets matched for command 'get_nets * -filter {NAME == "C"}'.

原因分析

  1. 模块内部信号被优化:Save_Mult_Df模块中的wire C是内部信号,既没有作为端口输出,也没有在模块内部被其他逻辑使用。Vivado的综合/RTL细化工具会自动移除这类“无用”信号,所以这个C在设计中实际不存在。
  2. 测试bench中的C未关联:测试bench里声明的wire C是独立信号,没有和Save_Mult_Df例化模块的任何端口连接,属于未使用信号,同样会被工具优化清除,且它和模块内部的C没有任何关联。

解决办法

方法1:将C作为模块端口引出(推荐)

修改Save_Mult_Df模块,把C设为输出端口,同时在测试bench中连接该端口,确保信号被保留:

`timescale 1ns/1ps
module Save_Mult_Df(A, C);
input A;
output C;
wire C;
assign C=A;
endmodule

module test();
reg A;
wire C;

initial
A= 2'b10;

Save_Mult_Df test_inst(
.A(A),
.C(C)
);
endmodule

此时执行get_nets * -filter {NAME == "C"}就能匹配到测试bench中的C信号,若要查看模块内部的C,可以用get_nets test_inst/C。

方法2:保留内部信号(无需引出端口)

如果不需要把C作为端口输出,仅需在Vivado中查看该内部信号,可通过以下两步操作:

  1. 在Save_Mult_Df模块中给wire C添加保留约束,阻止工具优化:
wire (* keep = "true" *) C;
  1. 使用带层级的Tcl命令查找信号:
get_nets test/C

(注:test是测试bench中Save_Mult_Df的例化名,若例化名修改需对应调整)

内容的提问来源于stack exchange,提问作者kittygirl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:17:38