0

我正在尝试制作一个测试台来模拟一个工作的顶级模块(和子模块),但是我无法让 iverilog 正确处理顶部的输出(LEDS、RS232Rx 和 RS232Tx 是物理引脚)

这是我在测试台上的尝试

module test();
initial begin
    $dumpfile("test.vcd");
    $dumpvars(0,test);
    # 1024 $stop;
end 
reg clk = 0; always #1 clk = !clk;
//reg rx,tx;
reg [7:0] opl;
top top1 ( .clk(clk), .RS232Rx(rx), .RS232Tx(tx), .LEDS(opl) );
endmodule 

我看到这样的错误

iverilog -o test-design testbench.v top.v
top.v:47: error: LEDS is not a valid l-value in test.top1.
top.v:8:      : LEDS is declared here as wire.
testbench.v:10: error: reg opl; cannot be driven by primitives or continuous assignment.
testbench.v:10: error: Output port expression must support continuous assignment.
testbench.v:10:      : Port 4 (LEDS) of top is connected to opl
3 error(s) during elaboration.

我已经尝试了很多东西,但没有太多的启发或不同的错误消息,最好的 LED 作为测试台输出,只显示 top.v 中的一个错误,它正在工作......我看到非常相似的错误rx,tx 但将它们注释掉以缩短输出...

只是重申 top.v 确实,不仅合成而且在实际硬件上的行为完全符合预期

4

1 回答 1

2

事实证明,尽管我的顶级设计能够输出到电线,iverilog 并不乐意这样做,

添加

reg [7:0] leds;
assign LEDS=leds;

允许我的顶级设计在硬件上工作(和以前一样),而且iverilog(icarus)现在似乎能够处理它......

于 2016-03-02T18:08:44.597 回答