我写了下面的代码。它仅适用于一个显示段,在本例中为"e"。我用 http://www.edaplayground.com/来尝试模拟它;但是,每次尝试运行它时都会收到此错误:
testbench.sv:13:错误:无法绑定线路/注册/内存Seg_e"Seg_e_testbench"1 在阐述过程中出现错误。预期的退出代码:0, 收到: 1
module Seg_e (
output reg seg,
input [3: 0] BCD
);
parameter ZERO = 1'b0;
parameter ONE = 1'b1;
always @ (BCD)
case (BCD)
0: seg = ONE;
1: seg = ZERO;
2: seg = ONE;
3: seg = ZERO;
4: seg = ZERO;
5: seg = ZERO;
6: seg = ONE;
7: seg = ZERO;
8: seg = ONE;
9: seg = ZERO;
default: seg = ZERO;
endcase
endmodule
module Seg_e_testbench;
wire seg;
reg [3: 0] BCD;
parameter ZERO = 1'b0;
parameter ONE = 1'b1;
initial #250 $finish;
initial fork
begin
$dumpfile("dump.vcd");
$dumpvars(1,Seg_e);
end
#10 BCD = 0;
#20 BCD = 1;
#30 BCD = 2;
#40 BCD = 3;
#50 BCD = 4;
#60 BCD = 5;
#70 BCD = 6;
#80 BCD = 7;
#90 BCD = 8;
#100 BCD = 9;
join
Seg_e M0 (seg, BCD);
endmodule
在 $dumpvars
语句中指定模块实例名称,而不是模块名称:
$dumpvars(1, M0);
请参阅 IEEE Std 1800-2012 的"21.7.1.2 指定要转储的变量 ($dumpvars)"一节。
您应该给出模块实例名称或测试平台 (Seg_e_testbench) 的模块名称,而不是设计的模块名称。
http://www.referencedesigner.com/tutorials/verilog/verilog_62.php