ฉันจะลบข้อผิดพลาดในรหัสต่อไปนี้ได้อย่างไร:

ทุกครั้งที่ฉันพยายามคอมไพล์ มันจะแสดงข้อผิดพลาดต่อไปนี้ในบรรทัด 7 และ 13 ของโค้ดของฉัน เช่น ใกล้ฟังก์ชัน [2:0] และใกล้ [31:0] Data_in คอมไพเลอร์ให้ข้อผิดพลาดต่อไปนี้:

ใกล้ [: ข้อผิดพลาดทางไวยากรณ์ '[' ที่ไม่คาดคิด คาดว่าจะมี IDENTIFIER หรือ TYPE_IDENTIFIER หรือ NETTYPE_IDENTIFIER

ฉันควรทำอย่างไรดี?

module rv32i(clk, reset);// Input is read from files
input clk, reset;
//Wires are defined to connect to various components

// ALU wires
wire rz;
wire [2:0] funct, [31:0] v1, [31:0] v2, [31:0] result;

// Instruction Memory Wires
wire [31:0] ins;

// Register File Wires
wire [31:0] Data_in, [31:0] Data_Out2, [4:0] Write_Addr;

// Data Memory Wires
wire [31:0] read_data;
wire write_en, read_en;

// Controller Wires
wire reg_dst, jump, branch, mem_read, mem_to_reg,
 alu_op, mem_write, alu_src, reg_write;

// Immediate instruction wires
wire [31:0] imm_ext;

//Connections of the processor
memory m(
    .ins(ins),
    .imm(imm_ext[6:0]),
    .branch(branch),
    .rz(rz),
    .jump(jump),
    .clk(clk)
    );

controller c(
    .clk(clk),
    .reset(reset),
    .opcode(ins[6:0]),
    .reg_dst(reg_dst),
    .jump(jump),
    .branch(branch),
    .mem_read(mem_read),
    .mem_to_reg(mem_to_reg),
    .alu_op(alu_op),
    .mem_write(mem_write),
    .alu_src(alu_src),
    .reg_write(reg_write)
    );

data_mem d(
    .d_addr(result),
    .write_en(write_en),
    .read_en(read_en),
    .write_data(Data_Out2),
    .read_data(read_data),
    .clk(clk)
    );

mux2_1 mem_reg(
    .a(result),
    .b(read_data),
    .s(mem_to_reg),
    .c(Data_in)
    );

mux2_1_5 ins_reg(
    .a(ins[24:20]),
    .b(ins[11:7]),
    .s(reg_dst),
    .c(Write_Addr)
    );

Registers r(
    .Data_in(Data_in),
    .Data_Out1(v1),
    .Data_Out2(Data_Out2),
    .Read_Addr_1(ins[19:15]),
    .Read_Addr_2(ins[24:20]),
    .Write_Addr(Write_Addr),
    .Write_Enable(reg_write),
    .clk(clk)
    );

alu_control ac(
    .ins_func(ins[14:12]),
    .ins_out(funct),
    .alu_op(alu_op)
    );

extend alu_imm(
    .a1(ins[31:20]),
    .a2(imm_ext)
    );

mux2_1 alu_mux(
    .a(Data_Out2), .b(imm_ext), .s(alu_src), .c(v2)
    );

ALU a(
    .clk(clk),
    .reset(reset),
    .funct(funct),
    .v1(v1),
    .v2(v2),
    .rz(rz),
    .result(result)
    );

endmodule

ฉันไม่พบข้อผิดพลาดใด ๆ แต่จะไม่คอมไพล์


person Ego    schedule 15.02.2021    source แหล่งที่มา
comment
มีข้อผิดพลาดสองสามประการเช่นนั้นสำหรับสายพิเศษ แต่ข้อผิดพลาดในโค้ดที่ให้มานั้นไม่ใช่ข้อผิดพลาดเพิ่มเติม ทั้งหมดกำลังถูกนำมาใช้   -  person Ego    schedule 16.02.2021


คำตอบ (1)


คุณได้รับอนุญาตเพียงชุดเดียวของขนาดที่บรรจุต่อการประกาศลวด คุณต้องแยกมันออก

wire [2:0] funct, [31:0] v1, [31:0] v2, [31:0] result;

ควรจะเป็น

wire [2:0] funct;
wire [31:0] v1, v2, result;

และเหมือนกันกับอีกบรรทัดด้านล่าง

person dave_59    schedule 15.02.2021