iverilog测试台错误:输入声明为wire,但它不是';T

iverilog测试台错误:输入声明为wire,但它不是';T,verilog,test-bench,iverilog,icarus,Verilog,Test Bench,Iverilog,Icarus,我对iverilog非常陌生,我正在创建一个计数器,将100Mhz时钟频率降低到更容易使用的频率,作为更大项目的一部分。 我发现一些代码可以做到这一点,所以我试着为它编写一个测试台。 以下是我找到的代码: module slowClock(clk, reset, clk_1Hz); input clk, reset; output clk_1Hz; reg clk_1Hz; reg [27:0] counter; always@(posedge reset or posedge cl

我对iverilog非常陌生,我正在创建一个计数器,将100Mhz时钟频率降低到更容易使用的频率,作为更大项目的一部分。 我发现一些代码可以做到这一点,所以我试着为它编写一个测试台。 以下是我找到的代码:

    module slowClock(clk, reset, clk_1Hz);
input clk, reset;
output clk_1Hz;

reg clk_1Hz;
reg [27:0] counter;

always@(posedge reset or posedge clk)
begin
     if (reset == 1'b1)
         begin
             clk_1Hz <= 0;
             counter <= 0;
         end
     else
         begin
             counter <= counter + 1;
             if ( counter == 25_000_000)
                 begin
                     counter <= 0;
                     clk_1Hz <= ~clk_1Hz;
                 end
         end
end
endmodule   
以下是错误消息:

$ iverilog  slowClock.v slowClock_tb.v 
slowClock_tb.v:8: error: clk is not a valid l-value in slowClock_tb.
slowClock_tb.v:2:      : clk is declared here as wire.
slowClock_tb.v:9: error: reset is not a valid l-value in slowClock_tb.
slowClock_tb.v:3:      : reset is declared here as wire.
slowClock_tb.v:10: error: reset is not a valid l-value in slowClock_tb.
slowClock_tb.v:3:      : reset is declared here as wire.
slowClock_tb.v:14: error: clk is not a valid l-value in slowClock_tb.
slowClock_tb.v:2:      : clk is declared here as wire.
4 error(s) during elaboration.
第一条错误消息:clk在这里声明为wire。 但无论是在原始代码中还是在测试台上,它都没有被声明为连线。重置也是如此。 我试着从校内导师那里得到帮助,但他们不知道为什么会发生这种情况,也不知道如何解决


有人能建议如何解决这个问题吗?

当您不包含类型时,所有变量/信号都被推断为导线。你没有给他们一个类型,所以他们被认为是电线

您还将
clk
reset
定义为测试台模块中的输入,但随后您在测试台内部分配给它们,因此它们不是有效的l值

试试这个:

模块慢锁(
输入线时钟,
输入线复位,
输出调节时钟1Hz
);
reg[27:0]计数器;
始终@(posedge重置或posedge clk)开始
如果(重置==1'b1)开始
时钟1Hz
$ iverilog  slowClock.v slowClock_tb.v 
slowClock_tb.v:8: error: clk is not a valid l-value in slowClock_tb.
slowClock_tb.v:2:      : clk is declared here as wire.
slowClock_tb.v:9: error: reset is not a valid l-value in slowClock_tb.
slowClock_tb.v:3:      : reset is declared here as wire.
slowClock_tb.v:10: error: reset is not a valid l-value in slowClock_tb.
slowClock_tb.v:3:      : reset is declared here as wire.
slowClock_tb.v:14: error: clk is not a valid l-value in slowClock_tb.
slowClock_tb.v:2:      : clk is declared here as wire.
4 error(s) during elaboration.