module alu(input [7:0] A,B,
input [3:0] selector,
output [7:0] ALU_output,
output ALU_output_carry
);
reg [7:0] ALU_result;
wire [8:0] tmp;
assign ALU_result=ALU_output;
assign tmp={1'b0,A}+{1'b0,B};
assign ALU_output_carry= tmp[8];
always @(*) begin
case(selector)
4'b0000: ALU_result= A+B;
4'b0001: ALU_result=A-B;
4'b0010: ALU_result=A&B;
4'b0011:ALU_result=A|B;
default: ALU_result=A-B;
endcase
end
endmodule
Выше код Verilog (я сохранил его под этим именем 8it_alu_code.v, без двойных кавычек) для 8-битного ALU, а ниже - тестовый стенд (я сохранил его под этим именем 8it_alu_tb.v, без двойных кавычек).
`timescale 1ns/1ps
module alu_tb;
reg[7:0] A,B;
reg[3:0] selector;
wire[7:0] ALU_output;
wire ALU_output_carry;
integer i;
alu test(A , B , selector , ALU_output , ALU_output_carry )
initial begin
$dumpfile("dump.vcd");
$dumpvars(1,alu_tb);
A=8'b00000010;
B=8'b00000110;
selector=4'b0000;
for(i=0;i<4;i++)
begin
selector=selector+4'b0001;
#10
end
end
endmodule
Когда я компилирую его в ICARUS Tool следующим образом:
iverilog -o 8it_alu_code.v 8it_alu_tb.v
Я получаю эту ошибку (я думаю, в файле testbench)
8it_alu_tb.v:1: syntax error
I give up.
Затем я подумал, что в симуляторе может быть какая-то проблема, поэтому я пошел на веб-сайт EDAplayground и запустил оба файла в онлайн-симуляторе. Там я получил следующие ошибки, без какой-либо формы выходного сигнала или чего-то еще:
No top level modules, and no -s option.
Exit code expected: 0, received: 1
Я хочу, чтобы он успешно работал либо на моем 'ICARUS + GTKWAVE' и выдавал некоторый выходной сигнал, либо на онлайн-симуляторе EDA Playground. Но он не компилируется. Итак, пожалуйста, дайте несколько советов, что мне делать, чтобы от него избавиться.