这是模块单元...
module register_unit(data_out,data_in,load,clk,rst); parameter word_size=8; output [word_size-1:0] data_out; input [word_size-1:0] data_in; input load,clk,rst; reg data_out; always@(posedge clk or negedge rst) if(rst==0) data_out <= 0; else if(load) data_out <= data_in; endmodule
这是测试台
`include "register_unit.v" module test_bench(); parameter word_size=8; reg clk,rst,load; reg [word_size-1:0] data_in; wire [word_size-1:0] data_out; register_unit m1 (.data_out(data_out),.data_in(data_in),.load(load),.clk(clk),.rst(rst)); initial begin clk=0; forever begin #5 clk = ! clk; end end initial begin rst=0; data_out=8'b0; load=0; #10 rst=1; load=1; #10 data_out=8'b00000100; #10 data_out=8'b00000101; #20 load=0; end initial begin $dumpfile ("register_unit.vcd"); $dumpvars; end endmodule
我正在使用 linux 中的 iverilog 命令编译此代码。
iverilog -o register_unit.v register_unit_tb.v
在编译代码时,它在 data_out 端口上出现错误,它说它是无效的转换。
错误是 data_out 不是 test_bench 中的有效左值,并且 data_out 在这里被声明为线。
问问题
410 次