问题 运行 Verilog 测试
Problems running a test in Verilog
我试图 运行 Verilog 上的测试平台,但我一直 运行 遇到一些问题。我在最后添加了错误供大家查看。
这是模块:
module combinational_logic(
A,
B,
C,
D,
AnotCnotD,
BCDnot,
ACnotDnot,
F,
);
input A;
input B;
input C;
input D;
output F;
output AnotCnotD;
output BCDnot;
output ACnotDnot;
assign AnotCnotD = ~A&~C&D;
assign BCDnot = B&C&~D;
assign ACnotDnot = A&~C&~D;
assign F = AnotCnotD|CDnot|ACnotDnot;
endmodule
这是测试:
`include "project4.v"
module tb_combLogic;
reg A;
reg B;
reg C;
reg D;
reg F;
wire AnotCnotD;
wire BCDnot;
wire ACnotDnot;
combinational_logic uut (
.A(A),
.B(B),
.C(C),
.D(D),
.AnotCnotD(AnotCnotD),
.BCDnot(BCDnot),
.ACnotDnot(ACnotDnot)
);
initial begin
$display("Start of Test.");
$dumpfile("comb_logic.vcd");
$dumpvars(0, project4_test);
$display("End of Test.");
end
endmodule
错误如下:
./project4.v:29: error: Unable to bind wire/reg/memory `CDnot' in `tb_combLogic.uut'
./project4.v:29: error: Unable to elaborate r-value: ((AnotCnotD)|(CDnot))|(ACnotDnot)
project4_test.v:31: error: Unable to bind wire/reg/memory `project4_test' in `tb_combLogic'
3 error(s) during elaboration.
前 2 条消息是让您知道您没有名为 CDnot
的信号。您的意思可能是 BCDnot
。变化:
assign F = AnotCnotD|CDnot|ACnotDnot;
至:
assign F = AnotCnotD|BCDnot|ACnotDnot;
第三条消息是让您知道您没有名为 project4_test
的信号或模块实例。解决此问题的一种方法是更改:
$dumpvars(0, project4_test);
至:
$dumpvars;
这会将两个模块中的所有信号转储到 VCD 文件中。对于大型设计,VCD 文件可能很大。但是,使用此代码您无需担心。
我试图 运行 Verilog 上的测试平台,但我一直 运行 遇到一些问题。我在最后添加了错误供大家查看。
这是模块:
module combinational_logic(
A,
B,
C,
D,
AnotCnotD,
BCDnot,
ACnotDnot,
F,
);
input A;
input B;
input C;
input D;
output F;
output AnotCnotD;
output BCDnot;
output ACnotDnot;
assign AnotCnotD = ~A&~C&D;
assign BCDnot = B&C&~D;
assign ACnotDnot = A&~C&~D;
assign F = AnotCnotD|CDnot|ACnotDnot;
endmodule
这是测试:
`include "project4.v"
module tb_combLogic;
reg A;
reg B;
reg C;
reg D;
reg F;
wire AnotCnotD;
wire BCDnot;
wire ACnotDnot;
combinational_logic uut (
.A(A),
.B(B),
.C(C),
.D(D),
.AnotCnotD(AnotCnotD),
.BCDnot(BCDnot),
.ACnotDnot(ACnotDnot)
);
initial begin
$display("Start of Test.");
$dumpfile("comb_logic.vcd");
$dumpvars(0, project4_test);
$display("End of Test.");
end
endmodule
错误如下:
./project4.v:29: error: Unable to bind wire/reg/memory `CDnot' in `tb_combLogic.uut'
./project4.v:29: error: Unable to elaborate r-value: ((AnotCnotD)|(CDnot))|(ACnotDnot)
project4_test.v:31: error: Unable to bind wire/reg/memory `project4_test' in `tb_combLogic'
3 error(s) during elaboration.
前 2 条消息是让您知道您没有名为 CDnot
的信号。您的意思可能是 BCDnot
。变化:
assign F = AnotCnotD|CDnot|ACnotDnot;
至:
assign F = AnotCnotD|BCDnot|ACnotDnot;
第三条消息是让您知道您没有名为 project4_test
的信号或模块实例。解决此问题的一种方法是更改:
$dumpvars(0, project4_test);
至:
$dumpvars;
这会将两个模块中的所有信号转储到 VCD 文件中。对于大型设计,VCD 文件可能很大。但是,使用此代码您无需担心。