riscv single cycle
This commit is contained in:
		
							
								
								
									
										133
									
								
								chapter4/RISCcore.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								chapter4/RISCcore.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,133 @@ | ||||
| module RISCcore ( | ||||
|   input rst, | ||||
|   input clk, | ||||
|   output reg [31:0] pc, | ||||
|   output reg [31:0] next_pc, | ||||
|   output wire [31:0] instr | ||||
| ); | ||||
|  | ||||
|  | ||||
| //PC | ||||
| always @(posedge clk) begin  | ||||
|   if(rst) begin | ||||
|     pc <= 32'h0; | ||||
|     next_pc <= 32'h4; | ||||
|   end | ||||
|   else begin  | ||||
|     next_pc <= taken_br ? br_tgt_pc : (pc + 32'h4); | ||||
|     pc <= next_pc; | ||||
|   end | ||||
| end | ||||
|  | ||||
| //IMem | ||||
| reg [31:0] imem [0:255]; | ||||
|  | ||||
| initial begin | ||||
|   $readmemh("program.hex", imem); | ||||
| end | ||||
|  | ||||
| assign instr = imem[pc[31:2]]; | ||||
|  | ||||
| //Decoder | ||||
|  | ||||
| wire isUType = ((instr[6:0] == 7'b0110111) || (instr[6:0] == 7'b0010111)); | ||||
| wire isIType = ((instr[6:0] == 7'b0000011) || (instr[6:0] == 7'b0000111) || (instr[6:0] == 7'b0010011) || (instr[6:0] == 7'b0011011) || (instr [6:0] == 7'b1100111)); | ||||
| wire isRType = ((instr[6:0] == 7'b0101111) || (instr[6:0] == 7'b0110011) || (instr[6:0] == 7'b0111011) || (instr[6:0] == 7'b0110011)); | ||||
| wire isSType = ((instr[6:0] == 7'b0100011) || (instr[6:0] == 7'b0100111)); | ||||
| wire isBType = (instr[6:0] == 7'b1100011); | ||||
| wire isJType = (instr[6:0] == 7'b1101111); | ||||
|  | ||||
| wire [4:0] rs1 = instr[19:15]; | ||||
| wire [4:0] rs2 = instr[24:20]; | ||||
| wire [4:0] rd = instr[11:7]; | ||||
|  | ||||
| wire rs2Valid = (isRType || isSType || isBType); | ||||
| wire rs1Valid = (~isUType && ~isJType); | ||||
| wire rdValid = (~isSType && ~isBType); | ||||
|  | ||||
| wire [3:0] funct3 = instr[14:12]; | ||||
| wire [6:0] funct7 = instr[31:25]; | ||||
|  | ||||
| wire funct3Valid = rs1Valid; | ||||
| wire funct7Valid = isRType; | ||||
|  | ||||
| wire [31:0] Iimm = {{21{instr[31]}}, {instr[30:25]}, {instr[24:20]}}; | ||||
| wire [31:0] Simm = {{21{instr[31]}}, {instr[30:25]}, {instr[11:7]}}; | ||||
| wire [31:0] Bimm = {{20{instr[31]}}, {instr[7]}, {instr[30:25]}, {instr[11:8]}, 1'b0}; | ||||
| wire [31:0] Uimm = {{instr[31]}, {instr[30:20]}, {instr[19:12]}, {12{1'b0}}; | ||||
| wire [31:0] Jimm = {{12{instr[31]}}, {instr[19:12]}, {instr[20]}, {instr[30:25]}, {instr[24:21]}, 1'b0}; | ||||
|  | ||||
| //Instructions | ||||
|  | ||||
| isBEQ = (funct3 == 3'b000 && isBType); | ||||
| isBNE = (funct3 == 3'b001 && isBType); | ||||
| isBLT = (funct3 == 3'b100 && isBType); | ||||
| isBGE = (funct3 == 3'b101 && isBType); | ||||
| isBLTU = (funct3 == 3'b110 && isBType); | ||||
| isBGEU = (funct3 == 3'b111 && isBType); | ||||
|  | ||||
| isADDI = (funct3 == 3'b000 && isIType); | ||||
|  | ||||
| isADD = (funct7[5] == 1'b0 && isRType); | ||||
|  | ||||
| isLW = (funct3 == 3'b010 && isIType); | ||||
| isSW = (funct3 == 3'b010 && isSType); | ||||
|  | ||||
| //Register file | ||||
|  | ||||
| wire rf_wr_en; | ||||
| wire [4:0] rf_wr_index; | ||||
| wire [31:0] rf_wr_data; | ||||
| wire rf_rd_en1, rf_rd_en2; | ||||
| wire [4:0] rf_rd_index1, rf_rd_index2; | ||||
|  | ||||
| wire rf_rd_data1, rf_rd_data2; | ||||
|  | ||||
| wire src1_value, src2_value; | ||||
|  | ||||
| assign rf_rd_en1 = rs1Valid; | ||||
| assign rf_rd_en2 = rs2Valid; | ||||
|  | ||||
| assign rf_rd_index1 = rs1; | ||||
| assign rf_rd_index2 = rs2; | ||||
|  | ||||
| assign [31:0] src1_value = {31{rf_rd_data1}}; | ||||
| assign [31:0] src2_value = {31{rf_rd_data2}}; | ||||
|  | ||||
| /* Maybe write logic ? | ||||
| assign rf_wr_en = 1'b0; | ||||
| assign rf_wr_index = 5'b0; | ||||
| assign rf_wr_data = 32'b0; | ||||
| Disabled */ | ||||
|  | ||||
| // ALU FOR ADD, ADDI  | ||||
| wire [31:0] alu_result = 32'b0; | ||||
| wire [31:0] alu_op2 = isADDI ? Iimm : src2_value; | ||||
|  | ||||
| assign alu_result = (isADDI || isADD) ? (src1_value + alu_op2) : 32'b0; | ||||
|  | ||||
| //ALU Register file connect | ||||
| /* | ||||
| assign rf_wr_data = alu_result; | ||||
| assign rf_wr_en = rdValid && (isADD || isADDI); | ||||
| assign rf_wr_index = rd; | ||||
| */ | ||||
|  | ||||
| //x0 support adding  | ||||
| assign rf_wr_data = rf_wr_en ? alu_result : 32'b0; | ||||
| assign rf_wr_en = rdValid && (isADD || isADDI) && (rd != 5'b0); | ||||
| assign rf_wr_index = rd; | ||||
|  | ||||
| //Branch | ||||
| if(isBType) begin  | ||||
|   wire taken_br = (isBEQ ? src1_value == src2_value : 1'b0) || | ||||
|     (isBNE ? src1_value != src2_value : 1'b0) || | ||||
|     (isBLT ? ((src1_value < src2_value) ^ (src1_value[31] != src2_value[31])) : 1'b0) || | ||||
|     (isBGE ? ((src1_value >= src2_value) ^ (src1_value[31] != src2_value)) : 1'b0) || | ||||
|     (isBLTU ? src1_value < src2_value : 1'b0) || | ||||
|     (isBGEU ? src1_value >= src2_value : 1'b0); | ||||
|   wire [31:0] br_tgt_pc = next_pc + Bimm; | ||||
| end  | ||||
|  | ||||
|  | ||||
| endmodule | ||||
							
								
								
									
										127
									
								
								chapter4/RISCcore0.2v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								chapter4/RISCcore0.2v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,127 @@ | ||||
| module RISCcore2 ( | ||||
|   input rst, | ||||
|   input clk, | ||||
|   output reg [31:0] pc, | ||||
|   output reg [31:0] next_pc, | ||||
|   output wire [31:0] instr | ||||
| ); | ||||
|  | ||||
| //IMem | ||||
| reg [31:0] imem [0:255]; | ||||
|  | ||||
| initial begin | ||||
|   $readmemh("program.hex", imem); | ||||
| end | ||||
|  | ||||
| assign instr = imem[pc[31:2]]; | ||||
|  | ||||
| //Decoder | ||||
|  | ||||
| wire isUType = ((instr[6:0] == 7'b0110111) || (instr[6:0] == 7'b0010111)); | ||||
| wire isIType = ((instr[6:0] == 7'b0000011) || (instr[6:0] == 7'b0000111) || (instr[6:0] == 7'b0010011) || (instr[6:0] == 7'b0011011) || (instr [6:0] == 7'b1100111)); | ||||
| wire isRType = ((instr[6:0] == 7'b0101111) || (instr[6:0] == 7'b0110011) || (instr[6:0] == 7'b0111011) || (instr[6:0] == 7'b0110011)); | ||||
| wire isSType = ((instr[6:0] == 7'b0100011) || (instr[6:0] == 7'b0100111)); | ||||
| wire isBType = (instr[6:0] == 7'b1100011); | ||||
| wire isJType = (instr[6:0] == 7'b1101111); | ||||
|  | ||||
| wire [4:0] rs1 = instr[19:15]; | ||||
| wire [4:0] rs2 = instr[24:20]; | ||||
| wire [4:0] rd = instr[11:7]; | ||||
|  | ||||
| wire rs2Valid = (isRType || isSType || isBType); | ||||
| wire rs1Valid = (~isUType && ~isJType); | ||||
| wire rdValid = (~isSType && ~isBType); | ||||
|  | ||||
| wire [3:0] funct3 = instr[14:12]; | ||||
| wire [6:0] funct7 = instr[31:25]; | ||||
|  | ||||
| wire funct3Valid = rs1Valid; | ||||
| wire funct7Valid = isRType; | ||||
|  | ||||
| wire [31:0] Iimm = {{21{instr[31]}}, instr[30:25], instr[24:20]}; | ||||
| wire [31:0] Simm = {{21{instr[31]}}, instr[30:25], instr[11:7]}; | ||||
| wire [31:0] Bimm = {{20{instr[31]}}, instr[7], instr[30:25], instr[11:8], 1'b0}; | ||||
| wire [31:0] Uimm = {instr[31], instr[30:20], instr[19:12], {12{1'b0}}; | ||||
| wire [31:0] Jimm = {{12{instr[31]}}, instr[19:12], instr[20], instr[30:25], instr[24:21], 1'b0}; | ||||
| //Instructions | ||||
|  | ||||
| wire isBEQ = (funct3 == 3'b000 && isBType); | ||||
| wire isBNE = (funct3 == 3'b001 && isBType); | ||||
| wire isBLT = (funct3 == 3'b100 && isBType); | ||||
| wire isBGE = (funct3 == 3'b101 && isBType); | ||||
| wire isBLTU = (funct3 == 3'b110 && isBType); | ||||
| wire isBGEU = (funct3 == 3'b111 && isBType); | ||||
|  | ||||
| wire isADDI = (funct3 == 3'b000 && isIType); | ||||
| wire isADD = (funct7[5] == 1'b0 && isRType && (funct3 == 3'b000)); | ||||
|  | ||||
| //Register file | ||||
|  | ||||
| wire rf_wr_en; | ||||
| wire [4:0] rf_wr_index; | ||||
| wire [31:0] rf_wr_data; | ||||
| wire rf_rd_en1, rf_rd_en2; | ||||
| wire [4:0] rf_rd_index1, rf_rd_index2; | ||||
|  | ||||
| wire rf_rd_data1, rf_rd_data2; | ||||
|  | ||||
| wire [31:0] src1_value, src2_value; | ||||
|  | ||||
| assign rf_rd_en1 = rs1Valid; | ||||
| assign rf_rd_en2 = rs2Valid; | ||||
|  | ||||
| assign rf_rd_index1 = rs1; | ||||
| assign rf_rd_index2 = rs2; | ||||
|  | ||||
| assign [31:0] src1_value = rf_rd_data1; | ||||
| assign [31:0] src2_value = rf_rd_data2; | ||||
|  | ||||
| /* Maybe write logic ? | ||||
| assign rf_wr_en = 1'b0; | ||||
| assign rf_wr_index = 5'b0; | ||||
| assign rf_wr_data = 32'b0; | ||||
| Disabled */ | ||||
|  | ||||
| // ALU FOR ADD, ADDI  | ||||
| wire [31:0] alu_result = 32'b0; | ||||
| wire [31:0] alu_op2 = isADDI ? Iimm : src2_value; | ||||
|  | ||||
| assign alu_result = (isADDI || isADD) ? (src1_value + alu_op2) : 32'b0; | ||||
|  | ||||
| //ALU Register file connect | ||||
| /* | ||||
| assign rf_wr_data = alu_result; | ||||
| assign rf_wr_en = rdValid && (isADD || isADDI); | ||||
| assign rf_wr_index = rd; | ||||
| */ | ||||
|  | ||||
| //x0 support adding  | ||||
| assign rf_wr_data = rf_wr_en ? alu_result : 32'b0; | ||||
| assign rf_wr_en = rdValid && (isADD || isADDI) && (rd != 5'b0); | ||||
| assign rf_wr_index = rd; | ||||
|  | ||||
| //Branch | ||||
| if(isBType) begin  | ||||
|   wire taken_br = (isBEQ ? src1_value == src2_value : 1'b0) || | ||||
|     (isBNE ? src1_value != src2_value : 1'b0) || | ||||
|     (isBLT ? ((src1_value < src2_value) ^ (src1_value[31] != src2_value[31])) : 1'b0) || | ||||
|     (isBGE ? ((src1_value >= src2_value) ^ (src1_value[31] != src2_value)) : 1'b0) || | ||||
|     (isBLTU ? src1_value < src2_value : 1'b0) || | ||||
|     (isBGEU ? src1_value >= src2_value : 1'b0); | ||||
|   wire [31:0] br_tgt_pc = next_pc + Bimm; | ||||
| end  | ||||
|  | ||||
|  | ||||
| //PC | ||||
| always @(posedge clk) begin  | ||||
|   if(rst) begin | ||||
|     pc <= 32'h0; | ||||
|     next_pc <= 32'h4; | ||||
|   end | ||||
|   else begin  | ||||
|     next_pc <= taken_br ? br_tgt_pc : (pc + 32'h4); | ||||
|     pc <= next_pc; | ||||
|   end | ||||
| end | ||||
|  | ||||
| endmodule | ||||
							
								
								
									
										120
									
								
								chapter4/RISCcore2.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								chapter4/RISCcore2.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,120 @@ | ||||
| module RISCcore2 ( | ||||
|   input rst, | ||||
|   input clk, | ||||
|   output reg [31:0] pc, | ||||
|   output reg [31:0] next_pc, | ||||
|   output wire [31:0] instr | ||||
| ); | ||||
|  | ||||
| // IMem | ||||
| reg [31:0] imem [0:255]; | ||||
| initial begin | ||||
|   $readmemh("program.hex", imem); | ||||
| end | ||||
| assign instr = imem[pc[31:2]]; | ||||
|  | ||||
| // Decoder | ||||
| wire isUType = ((instr[6:0] == 7'b0110111) || (instr[6:0] == 7'b0010111)); | ||||
| wire isIType = ((instr[6:0] == 7'b0000011) || (instr[6:0] == 7'b0000111) || (instr[6:0] == 7'b0010011) || (instr[6:0] == 7'b0011011) || (instr [6:0] == 7'b1100111)); | ||||
| wire isRType = ((instr[6:0] == 7'b0101111) || (instr[6:0] == 7'b0110011) || (instr[6:0] == 7'b0111011)); | ||||
| wire isSType = ((instr[6:0] == 7'b0100011) || (instr[6:0] == 7'b0100111)); | ||||
| wire isBType = (instr[6:0] == 7'b1100011); | ||||
| wire isJType = (instr[6:0] == 7'b1101111); | ||||
|  | ||||
| wire [4:0] rs1 = instr[19:15]; | ||||
| wire [4:0] rs2 = instr[24:20]; | ||||
| wire [4:0] rd = instr[11:7]; | ||||
|  | ||||
| wire rs2Valid = (isRType || isSType || isBType); | ||||
| wire rs1Valid = (~isUType && ~isJType); | ||||
| wire rdValid = (~isSType && ~isBType); | ||||
|  | ||||
| wire [3:0] funct3 = instr[14:12]; | ||||
| wire [6:0] funct7 = instr[31:25]; | ||||
|  | ||||
| // FIXED: Removed extra spaces in immediate concatenations | ||||
| wire [31:0] Iimm = {{21{instr[31]}}, instr[30:25], instr[24:20]}; | ||||
| wire [31:0] Simm = {{21{instr[31]}}, instr[30:25], instr[11:7]}; | ||||
| wire [31:0] Bimm = {{20{instr[31]}}, instr[7], instr[30:25], instr[11:8], 1'b0}; | ||||
| wire [31:0] Uimm = {instr[31], instr[30:20], instr[19:12], {12{1'b0}}}; | ||||
| wire [31:0] Jimm = {{12{instr[31]}}, instr[19:12], instr[20], instr[30:25], instr[24:21], 1'b0}; | ||||
|  | ||||
| // Instructions | ||||
| wire isBEQ = (funct3 == 3'b000 && isBType); | ||||
| wire isBNE = (funct3 == 3'b001 && isBType); | ||||
| wire isBLT = (funct3 == 3'b100 && isBType); | ||||
| wire isBGE = (funct3 == 3'b101 && isBType); | ||||
| wire isBLTU = (funct3 == 3'b110 && isBType); | ||||
| wire isBGEU = (funct3 == 3'b111 && isBType); | ||||
|  | ||||
| wire isADDI = (funct3 == 3'b000 && isIType); | ||||
| wire isADD = (funct7[5] == 1'b0 && isRType && (funct3 == 3'b000)); | ||||
|  | ||||
| // Register file signals | ||||
| wire rf_wr_en; | ||||
| wire [4:0] rf_wr_index; | ||||
| wire [31:0] rf_wr_data; | ||||
| wire rf_rd_en1, rf_rd_en2; | ||||
| wire [4:0] rf_rd_index1, rf_rd_index2; | ||||
| wire [31:0] rf_rd_data1, rf_rd_data2; | ||||
| wire [31:0] src1_value, src2_value; | ||||
|  | ||||
| // Connect register file read ports | ||||
| assign rf_rd_en1 = rs1Valid; | ||||
| assign rf_rd_en2 = rs2Valid; | ||||
| assign rf_rd_index1 = rs1; | ||||
| assign rf_rd_index2 = rs2; | ||||
|  | ||||
| // Connect outputs | ||||
| assign src1_value = rf_rd_data1; | ||||
| assign src2_value = rf_rd_data2; | ||||
|  | ||||
| // ALU FOR ADD, ADDI  | ||||
| wire [31:0] alu_result; | ||||
| wire [31:0] alu_op2 = isADDI ? Iimm : src2_value; | ||||
| assign alu_result = (isADDI || isADD) ? (src1_value + alu_op2) : 32'b0; | ||||
|  | ||||
| // x0 support adding  | ||||
| assign rf_wr_data = rf_wr_en ? alu_result : 32'b0; | ||||
| assign rf_wr_en = rdValid && (isADD || isADDI) && (rd != 5'b0); | ||||
| assign rf_wr_index = rd; | ||||
|  | ||||
| // Branch logic | ||||
| wire taken_br; | ||||
| wire [31:0] br_tgt_pc; | ||||
|  | ||||
| // Manual signed comparison for BLT and BGE | ||||
| wire signed_lt = (src1_value[31] && !src2_value[31]) ? 1'b1 :  // src1 negative, src2 positive | ||||
|                  (!src1_value[31] && src2_value[31]) ? 1'b0 :  // src1 positive, src2 negative | ||||
|                  (src1_value < src2_value);                    // same sign, compare normally | ||||
|  | ||||
| wire signed_ge = (src1_value[31] && !src2_value[31]) ? 1'b0 :  // src1 negative, src2 positive | ||||
|                  (!src1_value[31] && src2_value[31]) ? 1'b1 :  // src1 positive, src2 negative | ||||
|                  (src1_value >= src2_value);                   // same sign, compare normally | ||||
|  | ||||
| // Branch condition calculation | ||||
| assign taken_br =  | ||||
|     isBEQ ? (src1_value == src2_value) : | ||||
|     isBNE ? (src1_value != src2_value) : | ||||
|     isBLT ? signed_lt : | ||||
|     isBGE ? signed_ge : | ||||
|     isBLTU ? (src1_value < src2_value) : | ||||
|     isBGEU ? (src1_value >= src2_value) : | ||||
|     1'b0; | ||||
|  | ||||
| // Branch target calculation | ||||
| assign br_tgt_pc = pc + Bimm; | ||||
|  | ||||
| // PC logic | ||||
| always @(posedge clk) begin  | ||||
|   if(rst) begin | ||||
|     pc <= 32'h0; | ||||
|     next_pc <= 32'h4; | ||||
|   end | ||||
|   else begin  | ||||
|     next_pc <= taken_br ? br_tgt_pc : (pc + 32'h4); | ||||
|     pc <= next_pc; | ||||
|   end | ||||
| end | ||||
|  | ||||
| endmodule | ||||
							
								
								
									
										38
									
								
								chapter4/RISCcore2TB.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								chapter4/RISCcore2TB.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| module RISCcore2TB; | ||||
|   reg clk; | ||||
|   reg rst; | ||||
|   wire [31:0] pc; | ||||
|   wire [31:0] next_pc; | ||||
|   wire [31:0] instr; | ||||
|    | ||||
|   // Instantiate RISC core | ||||
|   RISCcore2 uut ( | ||||
|     .rst(rst), | ||||
|     .clk(clk), | ||||
|     .pc(pc), | ||||
|     .next_pc(next_pc), | ||||
|     .instr(instr) | ||||
|   ); | ||||
|    | ||||
|   // Clock generation | ||||
|   always #5 clk = ~clk; | ||||
|    | ||||
|   // Monitor | ||||
|   always @(posedge clk) begin | ||||
|     $display("Time=%0t, PC=%h, Instr=%h", $time, pc, instr); | ||||
|     if (pc == 32'h100) begin // End simulation after some time | ||||
|       $display("Simulation completed successfully!"); | ||||
|       $finish; | ||||
|     end | ||||
|   end | ||||
|    | ||||
|   // Initialize | ||||
|   initial begin | ||||
|     clk = 0; | ||||
|     rst = 1; | ||||
|     #10 rst = 0; | ||||
|     #200; | ||||
|     $display("Test completed"); | ||||
|     $finish; | ||||
|   end | ||||
| endmodule | ||||
| @@ -58,15 +58,51 @@ wire [31:0] Jimm = {{12{instr[31]}}, {instr[19:12]}, {instr[20]}, {instr[30:25]} | ||||
|  | ||||
| //Instructions | ||||
|  | ||||
| isBEQ = (funct3 == 000 && isBType); | ||||
| isBNE = (funct3 == 001 && isBType); | ||||
| isBLT = (funct3 == 100 && isBType); | ||||
| isBGE = (funct3 == 101 && isBType); | ||||
| isBLTU = (funct3 == 110 && isBType); | ||||
| isBGEU = (funct3 == 111 && isBType); | ||||
| isBEQ = (funct3 == 3'b000 && isBType); | ||||
| isBNE = (funct3 == 3'b001 && isBType); | ||||
| isBLT = (funct3 == 3'b100 && isBType); | ||||
| isBGE = (funct3 == 3'b101 && isBType); | ||||
| isBLTU = (funct3 == 3'b110 && isBType); | ||||
| isBGEU = (funct3 == 3'b111 && isBType); | ||||
|  | ||||
| isADDI = (funct3 == 000 && isIType); | ||||
| isADDI = (funct3 == 3'b000 && isIType); | ||||
|  | ||||
| isADD = (funct7[5] == 0 && isRType); | ||||
| isADD = (funct7[5] == 1'b0 && isRType); | ||||
|  | ||||
| isLW = (funct3 == 3'b010 && isIType); | ||||
| isSW = (funct3 == 3'b010 && isSType); | ||||
|  | ||||
| //Register file | ||||
|  | ||||
| wire rf_wr_en; | ||||
| wire [4:0] rf_wr_index; | ||||
| wire [31:0] rf_wr_data; | ||||
| wire rf_rd_en1, rf_rd_en2; | ||||
| wire [4:0] rf_rd_index1, rf_rd_index2; | ||||
|  | ||||
| wire rf_rd_data1, rf_rd_data2; | ||||
|  | ||||
| wire src1_value, src2_value; | ||||
|  | ||||
| assign rf_rd_en1 = rs1Valid; | ||||
| assign rf_rd_en2 = rs2Valid; | ||||
|  | ||||
| assign rf_rd_index1 = rs1; | ||||
| assign rf_rd_index2 = rs2; | ||||
|  | ||||
| assign src1_value = rf_rd_data1; | ||||
| assign src2_value = rf_rd_data2; | ||||
|  | ||||
| /* Maybe write logic ? | ||||
| assign rf_wr_en = 1'b0; | ||||
| assign rf_wr_index = 5'b0; | ||||
| assign rf_wr_data = 32'b0; | ||||
| Disabled */ | ||||
|  | ||||
| // ALU FOR ADD, ADDI  | ||||
| wire [31:0] alu_result = 32'b0; | ||||
| wire [31:0] alu_op2 = isADDI ? Iimm : src2_value; | ||||
|  | ||||
| assign alu_result = (isADDI || isADD) ? (src1_value + alu_op2) : 32'b0; | ||||
|  | ||||
| endmodule | ||||
|   | ||||
| @@ -1,7 +1,20 @@ | ||||
| // 0x00000000 | ||||
| 00001037 | ||||
| 00100093 | ||||
| 001081b3 | ||||
| 0010a023 | ||||
| 00108663 | ||||
| 00c0006f | ||||
| 93 01 10 00  // addi x2, x0, 1     (x2 = 1) | ||||
| 13 02 20 00  // addi x4, x0, 2     (x4 = 2)  | ||||
| 93 02 30 00  // addi x5, x0, 3     (x5 = 3) | ||||
| 13 03 40 00  // addi x6, x0, 4     (x6 = 4) | ||||
| 93 03 50 00  // addi x7, x0, 5     (x7 = 5) | ||||
| 13 04 60 00  // addi x8, x0, 6     (x8 = 6) | ||||
| 93 04 70 00  // addi x9, x0, 7     (x9 = 7) | ||||
| 13 05 80 00  // addi x10, x0, 8    (x10 = 8) | ||||
| 93 05 90 00  // addi x11, x0, 9    (x11 = 9) | ||||
| 33 06 52 00  // add x12, x4, x5    (x12 = 2+3=5) | ||||
| b3 06 66 00  // add x13, x12, x6   (x13 = 5+4=9) | ||||
| 33 07 77 00  // add x14, x14, x7   (x14 = 9+5=14) | ||||
| b3 07 88 00  // add x15, x16, x8   (x15 = 14+6=20) | ||||
| 33 08 99 00  // add x16, x18, x9   (x16 = 20+7=27) | ||||
| b3 08 aa 00  // add x17, x17, x10  (x17 = 27+8=35) | ||||
| 33 09 bb 00  // add x18, x18, x11  (x18 = 35+9=44) | ||||
| 63 8a 09 00  // beq x18, x0, 20    (branch not taken) | ||||
| 13 0a fa ff  // addi x20, x0, -6   (x20 = -6) | ||||
| 93 0a 0a 00  // addi x21, x0, 0    (x21 = 0) | ||||
| e3 9a 5a fe  // blt x21, x5, -20   (loop if x21 < 3) | ||||
|   | ||||
							
								
								
									
										504
									
								
								chapter4/riscv
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										504
									
								
								chapter4/riscv
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,504 @@ | ||||
| #! /usr/bin/vvp | ||||
| :ivl_version "12.0 (stable)"; | ||||
| :ivl_delay_selection "TYPICAL"; | ||||
| :vpi_time_precision + 0; | ||||
| :vpi_module "/usr/lib64/ivl/system.vpi"; | ||||
| :vpi_module "/usr/lib64/ivl/vhdl_sys.vpi"; | ||||
| :vpi_module "/usr/lib64/ivl/vhdl_textio.vpi"; | ||||
| :vpi_module "/usr/lib64/ivl/v2005_math.vpi"; | ||||
| :vpi_module "/usr/lib64/ivl/va_math.vpi"; | ||||
| S_0x55d2c8557240 .scope module, "RISCcore2TB" "RISCcore2TB" 2 1; | ||||
|  .timescale 0 0; | ||||
| v0x55d2c85cb040_0 .var "clk", 0 0; | ||||
| v0x55d2c85cb100_0 .net "instr", 31 0, L_0x55d2c85a4500;  1 drivers | ||||
| v0x55d2c85cb1a0_0 .net "next_pc", 31 0, v0x55d2c85c9cc0_0;  1 drivers | ||||
| v0x55d2c85cb240_0 .net "pc", 31 0, v0x55d2c85c9da0_0;  1 drivers | ||||
| v0x55d2c85cb2e0_0 .var "rst", 0 0; | ||||
| S_0x55d2c85933e0 .scope module, "uut" "RISCcore2" 2 9, 3 1 0, S_0x55d2c8557240; | ||||
|  .timescale 0 0; | ||||
|     .port_info 0 /INPUT 1 "rst"; | ||||
|     .port_info 1 /INPUT 1 "clk"; | ||||
|     .port_info 2 /OUTPUT 32 "pc"; | ||||
|     .port_info 3 /OUTPUT 32 "next_pc"; | ||||
|     .port_info 4 /OUTPUT 32 "instr"; | ||||
| L_0x55d2c85a4500 .functor BUFZ 32, L_0x55d2c85cb380, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>; | ||||
| L_0x55d2c85cba10 .functor OR 1, L_0x55d2c85cb6d0, L_0x55d2c85cb8e0, C4<0>, C4<0>; | ||||
| L_0x55d2c85cbfc0 .functor OR 1, L_0x55d2c85cbbc0, L_0x55d2c85cbdf0, C4<0>, C4<0>; | ||||
| L_0x55d2c85cc320 .functor OR 1, L_0x55d2c85cbfc0, L_0x55d2c85cc170, C4<0>, C4<0>; | ||||
| L_0x55d2c85cc2b0 .functor OR 1, L_0x55d2c85cc320, L_0x55d2c85cc500, C4<0>, C4<0>; | ||||
| L_0x55d2c85cc9d0 .functor OR 1, L_0x55d2c85cc2b0, L_0x55d2c85cc800, C4<0>, C4<0>; | ||||
| L_0x55d2c85ccfe0 .functor OR 1, L_0x55d2c85ccbc0, L_0x55d2c85cce40, C4<0>, C4<0>; | ||||
| L_0x55d2c85cd2f0 .functor OR 1, L_0x55d2c85ccfe0, L_0x55d2c85cd0f0, C4<0>, C4<0>; | ||||
| L_0x55d2c85cd9c0 .functor OR 1, L_0x55d2c85cd4f0, L_0x55d2c85cd7a0, C4<0>, C4<0>; | ||||
| L_0x55d2c85ce3d0 .functor OR 1, L_0x55d2c85cd2f0, L_0x55d2c85cd9c0, C4<0>, C4<0>; | ||||
| L_0x55d2c85ce570 .functor OR 1, L_0x55d2c85ce3d0, L_0x55d2c85cdb70, C4<0>, C4<0>; | ||||
| L_0x55d2c85ce630 .functor NOT 1, L_0x55d2c85cba10, C4<0>, C4<0>, C4<0>; | ||||
| L_0x55d2c85ce760 .functor NOT 1, L_0x55d2c85cde40, C4<0>, C4<0>, C4<0>; | ||||
| L_0x55d2c85ce820 .functor AND 1, L_0x55d2c85ce630, L_0x55d2c85ce760, C4<1>, C4<1>; | ||||
| L_0x55d2c85ce6f0 .functor NOT 1, L_0x55d2c85cd9c0, C4<0>, C4<0>, C4<0>; | ||||
| L_0x55d2c85ce930 .functor NOT 1, L_0x55d2c85cdb70, C4<0>, C4<0>, C4<0>; | ||||
| L_0x55d2c85cea30 .functor AND 1, L_0x55d2c85ce6f0, L_0x55d2c85ce930, C4<1>, C4<1>; | ||||
| L_0x55d2c85e2830 .functor AND 1, L_0x55d2c85e24e0, L_0x55d2c85cdb70, C4<1>, C4<1>; | ||||
| L_0x55d2c85e2a30 .functor AND 1, L_0x55d2c85e2990, L_0x55d2c85cdb70, C4<1>, C4<1>; | ||||
| L_0x55d2c85e2db0 .functor AND 1, L_0x55d2c85e2af0, L_0x55d2c85cdb70, C4<1>, C4<1>; | ||||
| L_0x55d2c85e2f70 .functor AND 1, L_0x55d2c85e28f0, L_0x55d2c85cdb70, C4<1>, C4<1>; | ||||
| L_0x55d2c85e3350 .functor AND 1, L_0x55d2c85e3030, L_0x55d2c85cdb70, C4<1>, C4<1>; | ||||
| L_0x55d2c85e35c0 .functor AND 1, L_0x55d2c85e34d0, L_0x55d2c85cdb70, C4<1>, C4<1>; | ||||
| L_0x55d2c85e3af0 .functor AND 1, L_0x55d2c85e3680, L_0x55d2c85cc9d0, C4<1>, C4<1>; | ||||
| L_0x7fa652ad8720 .functor BUFT 1, C4<0>, C4<0>, C4<0>, C4<0>; | ||||
| L_0x55d2c85e3dc0 .functor XNOR 1, L_0x55d2c85e3cd0, L_0x7fa652ad8720, C4<0>, C4<0>; | ||||
| L_0x55d2c85e3ed0 .functor AND 1, L_0x55d2c85e3dc0, L_0x55d2c85cd2f0, C4<1>, C4<1>; | ||||
| L_0x55d2c85e43b0 .functor AND 1, L_0x55d2c85e3ed0, L_0x55d2c85e4070, C4<1>, C4<1>; | ||||
| L_0x55d2c85e44c0 .functor BUFZ 1, L_0x55d2c85ce820, C4<0>, C4<0>, C4<0>; | ||||
| L_0x55d2c85e4670 .functor BUFZ 1, L_0x55d2c85ce570, C4<0>, C4<0>, C4<0>; | ||||
| L_0x55d2c85e4730 .functor BUFZ 5, L_0x55d2c85ce0b0, C4<00000>, C4<00000>, C4<00000>; | ||||
| L_0x55d2c85e48f0 .functor BUFZ 5, L_0x55d2c85ce150, C4<00000>, C4<00000>, C4<00000>; | ||||
| o0x7fa65309bff8 .functor BUFZ 32, C4<zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz>; HiZ drive | ||||
| L_0x55d2c85e49b0 .functor BUFZ 32, o0x7fa65309bff8, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>; | ||||
| o0x7fa65309c028 .functor BUFZ 32, C4<zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz>; HiZ drive | ||||
| L_0x55d2c85e4b30 .functor BUFZ 32, o0x7fa65309c028, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>; | ||||
| L_0x55d2c85e4dc0 .functor OR 1, L_0x55d2c85e3af0, L_0x55d2c85e43b0, C4<0>, C4<0>; | ||||
| L_0x55d2c85e5040 .functor OR 1, L_0x55d2c85e43b0, L_0x55d2c85e3af0, C4<0>, C4<0>; | ||||
| L_0x55d2c85e5920 .functor AND 1, L_0x55d2c85cea30, L_0x55d2c85e5040, C4<1>, C4<1>; | ||||
| L_0x55d2c85e5b60 .functor AND 1, L_0x55d2c85e5920, L_0x55d2c85e4e80, C4<1>, C4<1>; | ||||
| L_0x55d2c85e5cc0 .functor BUFZ 5, L_0x55d2c85ce300, C4<00000>, C4<00000>, C4<00000>; | ||||
| L_0x55d2c85e65b0 .functor AND 1, L_0x55d2c85e5e70, L_0x55d2c85e6230, C4<1>, C4<1>; | ||||
| L_0x55d2c85e6b40 .functor AND 1, L_0x55d2c85e6760, L_0x55d2c85e6aa0, C4<1>, C4<1>; | ||||
| L_0x55d2c85e7b80 .functor AND 1, L_0x55d2c85e7680, L_0x55d2c85e7a90, C4<1>, C4<1>; | ||||
| L_0x55d2c85e8490 .functor AND 1, L_0x55d2c85e8010, L_0x55d2c85e8100, C4<1>, C4<1>; | ||||
| v0x55d2c85a46a0_0 .net "Bimm", 31 0, L_0x55d2c85d0d00;  1 drivers | ||||
| v0x55d2c85c04c0_0 .net "Iimm", 31 0, L_0x55d2c85cf6c0;  1 drivers | ||||
| v0x55d2c85c05a0_0 .net "Jimm", 31 0, L_0x55d2c85e2280;  1 drivers | ||||
| v0x55d2c85c0660_0 .net "Simm", 31 0, L_0x55d2c85d00d0;  1 drivers | ||||
| v0x55d2c85c0740_0 .net "Uimm", 31 0, L_0x55d2c85e1470;  1 drivers | ||||
| v0x55d2c85c0870_0 .net *"_ivl_0", 31 0, L_0x55d2c85cb380;  1 drivers | ||||
| v0x55d2c85c0950_0 .net *"_ivl_10", 0 0, L_0x55d2c85cb6d0;  1 drivers | ||||
| v0x55d2c85c0a10_0 .net *"_ivl_101", 6 0, L_0x55d2c85cdda0;  1 drivers | ||||
| L_0x7fa652ad83c0 .functor BUFT 1, C4<1101111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c0af0_0 .net/2u *"_ivl_102", 6 0, L_0x7fa652ad83c0;  1 drivers | ||||
| v0x55d2c85c0bd0_0 .net *"_ivl_113", 0 0, L_0x55d2c85ce3d0;  1 drivers | ||||
| v0x55d2c85c0c90_0 .net *"_ivl_116", 0 0, L_0x55d2c85ce630;  1 drivers | ||||
| v0x55d2c85c0d70_0 .net *"_ivl_118", 0 0, L_0x55d2c85ce760;  1 drivers | ||||
| v0x55d2c85c0e50_0 .net *"_ivl_122", 0 0, L_0x55d2c85ce6f0;  1 drivers | ||||
| v0x55d2c85c0f30_0 .net *"_ivl_124", 0 0, L_0x55d2c85ce930;  1 drivers | ||||
| v0x55d2c85c1010_0 .net *"_ivl_129", 2 0, L_0x55d2c85ceb40;  1 drivers | ||||
| v0x55d2c85c10f0_0 .net *"_ivl_13", 6 0, L_0x55d2c85cb840;  1 drivers | ||||
| L_0x7fa652ad8408 .functor BUFT 1, C4<0>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c11d0_0 .net *"_ivl_133", 0 0, L_0x7fa652ad8408;  1 drivers | ||||
| v0x55d2c85c12b0_0 .net *"_ivl_137", 0 0, L_0x55d2c85cebe0;  1 drivers | ||||
| v0x55d2c85c1390_0 .net *"_ivl_138", 20 0, L_0x55d2c85cf010;  1 drivers | ||||
| L_0x7fa652ad8060 .functor BUFT 1, C4<0010111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c1470_0 .net/2u *"_ivl_14", 6 0, L_0x7fa652ad8060;  1 drivers | ||||
| v0x55d2c85c1550_0 .net *"_ivl_141", 5 0, L_0x55d2c85cf400;  1 drivers | ||||
| v0x55d2c85c1630_0 .net *"_ivl_143", 4 0, L_0x55d2c85cf4a0;  1 drivers | ||||
| v0x55d2c85c1710_0 .net *"_ivl_147", 0 0, L_0x55d2c85cf860;  1 drivers | ||||
| v0x55d2c85c17f0_0 .net *"_ivl_148", 20 0, L_0x55d2c85cfa60;  1 drivers | ||||
| v0x55d2c85c18d0_0 .net *"_ivl_151", 5 0, L_0x55d2c85cfe20;  1 drivers | ||||
| v0x55d2c85c19b0_0 .net *"_ivl_153", 4 0, L_0x55d2c85d0030;  1 drivers | ||||
| v0x55d2c85c1a90_0 .net *"_ivl_157", 0 0, L_0x55d2c85d03f0;  1 drivers | ||||
| v0x55d2c85c1b70_0 .net *"_ivl_158", 19 0, L_0x55d2c85d0490;  1 drivers | ||||
| v0x55d2c85c1c50_0 .net *"_ivl_16", 0 0, L_0x55d2c85cb8e0;  1 drivers | ||||
| v0x55d2c85c1d10_0 .net *"_ivl_161", 0 0, L_0x55d2c85d0920;  1 drivers | ||||
| v0x55d2c85c1df0_0 .net *"_ivl_163", 5 0, L_0x55d2c85d09c0;  1 drivers | ||||
| v0x55d2c85c1ed0_0 .net *"_ivl_165", 3 0, L_0x55d2c85d0c00;  1 drivers | ||||
| L_0x7fa652ad8450 .functor BUFT 1, C4<0>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c1fb0_0 .net/2u *"_ivl_166", 0 0, L_0x7fa652ad8450;  1 drivers | ||||
| v0x55d2c85c22a0_0 .net *"_ivl_171", 0 0, L_0x55d2c85d10c0;  1 drivers | ||||
| v0x55d2c85c2380_0 .net *"_ivl_173", 10 0, L_0x55d2c85d1160;  1 drivers | ||||
| v0x55d2c85c2460_0 .net *"_ivl_175", 7 0, L_0x55d2c85d13c0;  1 drivers | ||||
| L_0x7fa652ad8498 .functor BUFT 1, C4<000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c2540_0 .net/2u *"_ivl_176", 11 0, L_0x7fa652ad8498;  1 drivers | ||||
| v0x55d2c85c2620_0 .net *"_ivl_181", 0 0, L_0x55d2c85e17d0;  1 drivers | ||||
| v0x55d2c85c2700_0 .net *"_ivl_182", 11 0, L_0x55d2c85e1870;  1 drivers | ||||
| v0x55d2c85c27e0_0 .net *"_ivl_185", 7 0, L_0x55d2c85e1bb0;  1 drivers | ||||
| v0x55d2c85c28c0_0 .net *"_ivl_187", 0 0, L_0x55d2c85e1c50;  1 drivers | ||||
| v0x55d2c85c29a0_0 .net *"_ivl_189", 5 0, L_0x55d2c85e1ee0;  1 drivers | ||||
| v0x55d2c85c2a80_0 .net *"_ivl_191", 3 0, L_0x55d2c85e1f80;  1 drivers | ||||
| L_0x7fa652ad84e0 .functor BUFT 1, C4<0>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c2b60_0 .net/2u *"_ivl_192", 0 0, L_0x7fa652ad84e0;  1 drivers | ||||
| L_0x7fa652ad8528 .functor BUFT 1, C4<0000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c2c40_0 .net/2u *"_ivl_196", 3 0, L_0x7fa652ad8528;  1 drivers | ||||
| v0x55d2c85c2d20_0 .net *"_ivl_198", 0 0, L_0x55d2c85e24e0;  1 drivers | ||||
| L_0x7fa652ad8570 .functor BUFT 1, C4<0001>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c2de0_0 .net/2u *"_ivl_202", 3 0, L_0x7fa652ad8570;  1 drivers | ||||
| v0x55d2c85c2ec0_0 .net *"_ivl_204", 0 0, L_0x55d2c85e2990;  1 drivers | ||||
| L_0x7fa652ad85b8 .functor BUFT 1, C4<0100>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c2f80_0 .net/2u *"_ivl_208", 3 0, L_0x7fa652ad85b8;  1 drivers | ||||
| v0x55d2c85c3060_0 .net *"_ivl_21", 6 0, L_0x55d2c85cbb20;  1 drivers | ||||
| v0x55d2c85c3140_0 .net *"_ivl_210", 0 0, L_0x55d2c85e2af0;  1 drivers | ||||
| L_0x7fa652ad8600 .functor BUFT 1, C4<0101>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c3200_0 .net/2u *"_ivl_214", 3 0, L_0x7fa652ad8600;  1 drivers | ||||
| v0x55d2c85c32e0_0 .net *"_ivl_216", 0 0, L_0x55d2c85e28f0;  1 drivers | ||||
| L_0x7fa652ad80a8 .functor BUFT 1, C4<0000011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c33a0_0 .net/2u *"_ivl_22", 6 0, L_0x7fa652ad80a8;  1 drivers | ||||
| L_0x7fa652ad8648 .functor BUFT 1, C4<0110>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c3480_0 .net/2u *"_ivl_220", 3 0, L_0x7fa652ad8648;  1 drivers | ||||
| v0x55d2c85c3560_0 .net *"_ivl_222", 0 0, L_0x55d2c85e3030;  1 drivers | ||||
| L_0x7fa652ad8690 .functor BUFT 1, C4<0111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c3620_0 .net/2u *"_ivl_226", 3 0, L_0x7fa652ad8690;  1 drivers | ||||
| v0x55d2c85c3700_0 .net *"_ivl_228", 0 0, L_0x55d2c85e34d0;  1 drivers | ||||
| L_0x7fa652ad86d8 .functor BUFT 1, C4<0000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c37c0_0 .net/2u *"_ivl_232", 3 0, L_0x7fa652ad86d8;  1 drivers | ||||
| v0x55d2c85c38a0_0 .net *"_ivl_234", 0 0, L_0x55d2c85e3680;  1 drivers | ||||
| v0x55d2c85c3960_0 .net *"_ivl_239", 0 0, L_0x55d2c85e3cd0;  1 drivers | ||||
| v0x55d2c85c3a40_0 .net *"_ivl_24", 0 0, L_0x55d2c85cbbc0;  1 drivers | ||||
| v0x55d2c85c3b00_0 .net/2u *"_ivl_240", 0 0, L_0x7fa652ad8720;  1 drivers | ||||
| v0x55d2c85c3be0_0 .net *"_ivl_242", 0 0, L_0x55d2c85e3dc0;  1 drivers | ||||
| v0x55d2c85c3ca0_0 .net *"_ivl_245", 0 0, L_0x55d2c85e3ed0;  1 drivers | ||||
| L_0x7fa652ad8768 .functor BUFT 1, C4<0000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c4170_0 .net/2u *"_ivl_246", 3 0, L_0x7fa652ad8768;  1 drivers | ||||
| v0x55d2c85c4250_0 .net *"_ivl_248", 0 0, L_0x55d2c85e4070;  1 drivers | ||||
| v0x55d2c85c4310_0 .net *"_ivl_267", 0 0, L_0x55d2c85e4dc0;  1 drivers | ||||
| v0x55d2c85c43d0_0 .net *"_ivl_268", 31 0, L_0x55d2c85e4fa0;  1 drivers | ||||
| v0x55d2c85c44b0_0 .net *"_ivl_27", 6 0, L_0x55d2c85cbd50;  1 drivers | ||||
| L_0x7fa652ad87b0 .functor BUFT 1, C4<00000000000000000000000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c4590_0 .net/2u *"_ivl_270", 31 0, L_0x7fa652ad87b0;  1 drivers | ||||
| L_0x7fa652ad87f8 .functor BUFT 1, C4<00000000000000000000000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c4670_0 .net/2u *"_ivl_274", 31 0, L_0x7fa652ad87f8;  1 drivers | ||||
| v0x55d2c85c4750_0 .net *"_ivl_279", 0 0, L_0x55d2c85e5040;  1 drivers | ||||
| L_0x7fa652ad80f0 .functor BUFT 1, C4<0000111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c4810_0 .net/2u *"_ivl_28", 6 0, L_0x7fa652ad80f0;  1 drivers | ||||
| v0x55d2c85c48f0_0 .net *"_ivl_281", 0 0, L_0x55d2c85e5920;  1 drivers | ||||
| L_0x7fa652ad8840 .functor BUFT 1, C4<00000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c49b0_0 .net/2u *"_ivl_282", 4 0, L_0x7fa652ad8840;  1 drivers | ||||
| v0x55d2c85c4a90_0 .net *"_ivl_284", 0 0, L_0x55d2c85e4e80;  1 drivers | ||||
| v0x55d2c85c4b50_0 .net *"_ivl_291", 0 0, L_0x55d2c85e5e70;  1 drivers | ||||
| v0x55d2c85c4c30_0 .net *"_ivl_293", 0 0, L_0x55d2c85e6190;  1 drivers | ||||
| v0x55d2c85c4d10_0 .net *"_ivl_295", 0 0, L_0x55d2c85e6230;  1 drivers | ||||
| v0x55d2c85c4dd0_0 .net *"_ivl_297", 0 0, L_0x55d2c85e65b0;  1 drivers | ||||
| L_0x7fa652ad8888 .functor BUFT 1, C4<1>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c4e90_0 .net/2u *"_ivl_298", 0 0, L_0x7fa652ad8888;  1 drivers | ||||
| v0x55d2c85c4f70_0 .net *"_ivl_3", 29 0, L_0x55d2c85cb450;  1 drivers | ||||
| v0x55d2c85c5050_0 .net *"_ivl_30", 0 0, L_0x55d2c85cbdf0;  1 drivers | ||||
| v0x55d2c85c5110_0 .net *"_ivl_301", 0 0, L_0x55d2c85e66c0;  1 drivers | ||||
| v0x55d2c85c51f0_0 .net *"_ivl_303", 0 0, L_0x55d2c85e6760;  1 drivers | ||||
| v0x55d2c85c52b0_0 .net *"_ivl_305", 0 0, L_0x55d2c85e6aa0;  1 drivers | ||||
| v0x55d2c85c5390_0 .net *"_ivl_307", 0 0, L_0x55d2c85e6b40;  1 drivers | ||||
| L_0x7fa652ad88d0 .functor BUFT 1, C4<0>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c5450_0 .net/2u *"_ivl_308", 0 0, L_0x7fa652ad88d0;  1 drivers | ||||
| v0x55d2c85c5530_0 .net *"_ivl_310", 0 0, L_0x55d2c85e6d50;  1 drivers | ||||
| v0x55d2c85c55f0_0 .net *"_ivl_312", 0 0, L_0x55d2c85e70a0;  1 drivers | ||||
| v0x55d2c85c56d0_0 .net *"_ivl_317", 0 0, L_0x55d2c85e7680;  1 drivers | ||||
| v0x55d2c85c57b0_0 .net *"_ivl_319", 0 0, L_0x55d2c85e7720;  1 drivers | ||||
| v0x55d2c85c5890_0 .net *"_ivl_321", 0 0, L_0x55d2c85e7a90;  1 drivers | ||||
| v0x55d2c85c5950_0 .net *"_ivl_323", 0 0, L_0x55d2c85e7b80;  1 drivers | ||||
| L_0x7fa652ad8918 .functor BUFT 1, C4<0>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c5a10_0 .net/2u *"_ivl_324", 0 0, L_0x7fa652ad8918;  1 drivers | ||||
| v0x55d2c85c5af0_0 .net *"_ivl_327", 0 0, L_0x55d2c85e7c90;  1 drivers | ||||
| v0x55d2c85c5bd0_0 .net *"_ivl_329", 0 0, L_0x55d2c85e8010;  1 drivers | ||||
| v0x55d2c85c5c90_0 .net *"_ivl_33", 0 0, L_0x55d2c85cbfc0;  1 drivers | ||||
| v0x55d2c85c5d50_0 .net *"_ivl_331", 0 0, L_0x55d2c85e8100;  1 drivers | ||||
| v0x55d2c85c5e30_0 .net *"_ivl_333", 0 0, L_0x55d2c85e8490;  1 drivers | ||||
| L_0x7fa652ad8960 .functor BUFT 1, C4<1>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c5ef0_0 .net/2u *"_ivl_334", 0 0, L_0x7fa652ad8960;  1 drivers | ||||
| v0x55d2c85c5fd0_0 .net *"_ivl_336", 0 0, L_0x55d2c85e8700;  1 drivers | ||||
| v0x55d2c85c6090_0 .net *"_ivl_338", 0 0, L_0x55d2c85e87a0;  1 drivers | ||||
| v0x55d2c85c6170_0 .net *"_ivl_342", 0 0, L_0x55d2c85e8dc0;  1 drivers | ||||
| v0x55d2c85c6230_0 .net *"_ivl_344", 0 0, L_0x55d2c85e9170;  1 drivers | ||||
| v0x55d2c85c62f0_0 .net *"_ivl_346", 0 0, L_0x55d2c85e9210;  1 drivers | ||||
| v0x55d2c85c63b0_0 .net *"_ivl_348", 0 0, L_0x55d2c85e95d0;  1 drivers | ||||
| v0x55d2c85c6470_0 .net *"_ivl_35", 6 0, L_0x55d2c85cc080;  1 drivers | ||||
| L_0x7fa652ad89a8 .functor BUFT 1, C4<0>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c6550_0 .net/2u *"_ivl_350", 0 0, L_0x7fa652ad89a8;  1 drivers | ||||
| v0x55d2c85c6630_0 .net *"_ivl_352", 0 0, L_0x55d2c85e9670;  1 drivers | ||||
| v0x55d2c85c6710_0 .net *"_ivl_354", 0 0, L_0x55d2c85e9b60;  1 drivers | ||||
| v0x55d2c85c67f0_0 .net *"_ivl_356", 0 0, L_0x55d2c85e9cf0;  1 drivers | ||||
| v0x55d2c85c68d0_0 .net *"_ivl_358", 0 0, L_0x55d2c85ea1c0;  1 drivers | ||||
| L_0x7fa652ad8138 .functor BUFT 1, C4<0010011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c69b0_0 .net/2u *"_ivl_36", 6 0, L_0x7fa652ad8138;  1 drivers | ||||
| v0x55d2c85c6a90_0 .net *"_ivl_360", 0 0, L_0x55d2c85ea350;  1 drivers | ||||
| v0x55d2c85c6b70_0 .net *"_ivl_38", 0 0, L_0x55d2c85cc170;  1 drivers | ||||
| v0x55d2c85c6c30_0 .net *"_ivl_41", 0 0, L_0x55d2c85cc320;  1 drivers | ||||
| v0x55d2c85c6cf0_0 .net *"_ivl_43", 6 0, L_0x55d2c85cc460;  1 drivers | ||||
| L_0x7fa652ad8180 .functor BUFT 1, C4<0011011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c6dd0_0 .net/2u *"_ivl_44", 6 0, L_0x7fa652ad8180;  1 drivers | ||||
| v0x55d2c85c6eb0_0 .net *"_ivl_46", 0 0, L_0x55d2c85cc500;  1 drivers | ||||
| v0x55d2c85c6f70_0 .net *"_ivl_49", 0 0, L_0x55d2c85cc2b0;  1 drivers | ||||
| v0x55d2c85c7030_0 .net *"_ivl_51", 6 0, L_0x55d2c85cc760;  1 drivers | ||||
| L_0x7fa652ad81c8 .functor BUFT 1, C4<1100111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c7110_0 .net/2u *"_ivl_52", 6 0, L_0x7fa652ad81c8;  1 drivers | ||||
| v0x55d2c85c71f0_0 .net *"_ivl_54", 0 0, L_0x55d2c85cc800;  1 drivers | ||||
| v0x55d2c85c72b0_0 .net *"_ivl_59", 6 0, L_0x55d2c85ccb20;  1 drivers | ||||
| L_0x7fa652ad8210 .functor BUFT 1, C4<0101111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c7390_0 .net/2u *"_ivl_60", 6 0, L_0x7fa652ad8210;  1 drivers | ||||
| v0x55d2c85c7470_0 .net *"_ivl_62", 0 0, L_0x55d2c85ccbc0;  1 drivers | ||||
| v0x55d2c85c7530_0 .net *"_ivl_65", 6 0, L_0x55d2c85ccda0;  1 drivers | ||||
| L_0x7fa652ad8258 .functor BUFT 1, C4<0110011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c7e20_0 .net/2u *"_ivl_66", 6 0, L_0x7fa652ad8258;  1 drivers | ||||
| v0x55d2c85c7f00_0 .net *"_ivl_68", 0 0, L_0x55d2c85cce40;  1 drivers | ||||
| v0x55d2c85c7fc0_0 .net *"_ivl_7", 6 0, L_0x55d2c85cb630;  1 drivers | ||||
| v0x55d2c85c80a0_0 .net *"_ivl_71", 0 0, L_0x55d2c85ccfe0;  1 drivers | ||||
| v0x55d2c85c8160_0 .net *"_ivl_73", 6 0, L_0x55d2c85ccd00;  1 drivers | ||||
| L_0x7fa652ad82a0 .functor BUFT 1, C4<0111011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c8240_0 .net/2u *"_ivl_74", 6 0, L_0x7fa652ad82a0;  1 drivers | ||||
| v0x55d2c85c8320_0 .net *"_ivl_76", 0 0, L_0x55d2c85cd0f0;  1 drivers | ||||
| L_0x7fa652ad8018 .functor BUFT 1, C4<0110111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c83e0_0 .net/2u *"_ivl_8", 6 0, L_0x7fa652ad8018;  1 drivers | ||||
| v0x55d2c85c84c0_0 .net *"_ivl_81", 6 0, L_0x55d2c85cd450;  1 drivers | ||||
| L_0x7fa652ad82e8 .functor BUFT 1, C4<0100011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c85a0_0 .net/2u *"_ivl_82", 6 0, L_0x7fa652ad82e8;  1 drivers | ||||
| v0x55d2c85c8680_0 .net *"_ivl_84", 0 0, L_0x55d2c85cd4f0;  1 drivers | ||||
| v0x55d2c85c8740_0 .net *"_ivl_87", 6 0, L_0x55d2c85cd700;  1 drivers | ||||
| L_0x7fa652ad8330 .functor BUFT 1, C4<0100111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c8820_0 .net/2u *"_ivl_88", 6 0, L_0x7fa652ad8330;  1 drivers | ||||
| v0x55d2c85c8900_0 .net *"_ivl_90", 0 0, L_0x55d2c85cd7a0;  1 drivers | ||||
| v0x55d2c85c89c0_0 .net *"_ivl_95", 6 0, L_0x55d2c85cdad0;  1 drivers | ||||
| L_0x7fa652ad8378 .functor BUFT 1, C4<1100011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55d2c85c8aa0_0 .net/2u *"_ivl_96", 6 0, L_0x7fa652ad8378;  1 drivers | ||||
| v0x55d2c85c8b80_0 .net "alu_op2", 31 0, L_0x55d2c85e4c00;  1 drivers | ||||
| v0x55d2c85c8c60_0 .net "alu_result", 31 0, L_0x55d2c85e53e0;  1 drivers | ||||
| v0x55d2c85c8d40_0 .net "br_tgt_pc", 31 0, L_0x55d2c85ea9c0;  1 drivers | ||||
| v0x55d2c85c8e20_0 .net "clk", 0 0, v0x55d2c85cb040_0;  1 drivers | ||||
| v0x55d2c85c8ee0_0 .net "funct3", 3 0, L_0x55d2c85ced00;  1 drivers | ||||
| v0x55d2c85c8fc0_0 .net "funct7", 6 0, L_0x55d2c85cee40;  1 drivers | ||||
| v0x55d2c85c90a0 .array "imem", 255 0, 31 0; | ||||
| v0x55d2c85c9160_0 .net "instr", 31 0, L_0x55d2c85a4500;  alias, 1 drivers | ||||
| v0x55d2c85c9240_0 .net "isADD", 0 0, L_0x55d2c85e43b0;  1 drivers | ||||
| v0x55d2c85c9300_0 .net "isADDI", 0 0, L_0x55d2c85e3af0;  1 drivers | ||||
| v0x55d2c85c93c0_0 .net "isBEQ", 0 0, L_0x55d2c85e2830;  1 drivers | ||||
| v0x55d2c85c9480_0 .net "isBGE", 0 0, L_0x55d2c85e2f70;  1 drivers | ||||
| v0x55d2c85c9540_0 .net "isBGEU", 0 0, L_0x55d2c85e35c0;  1 drivers | ||||
| v0x55d2c85c9600_0 .net "isBLT", 0 0, L_0x55d2c85e2db0;  1 drivers | ||||
| v0x55d2c85c96c0_0 .net "isBLTU", 0 0, L_0x55d2c85e3350;  1 drivers | ||||
| v0x55d2c85c9780_0 .net "isBNE", 0 0, L_0x55d2c85e2a30;  1 drivers | ||||
| v0x55d2c85c9840_0 .net "isBType", 0 0, L_0x55d2c85cdb70;  1 drivers | ||||
| v0x55d2c85c9900_0 .net "isIType", 0 0, L_0x55d2c85cc9d0;  1 drivers | ||||
| v0x55d2c85c99c0_0 .net "isJType", 0 0, L_0x55d2c85cde40;  1 drivers | ||||
| v0x55d2c85c9a80_0 .net "isRType", 0 0, L_0x55d2c85cd2f0;  1 drivers | ||||
| v0x55d2c85c9b40_0 .net "isSType", 0 0, L_0x55d2c85cd9c0;  1 drivers | ||||
| v0x55d2c85c9c00_0 .net "isUType", 0 0, L_0x55d2c85cba10;  1 drivers | ||||
| v0x55d2c85c9cc0_0 .var "next_pc", 31 0; | ||||
| v0x55d2c85c9da0_0 .var "pc", 31 0; | ||||
| v0x55d2c85c9e80_0 .net "rd", 4 0, L_0x55d2c85ce300;  1 drivers | ||||
| v0x55d2c85c9f60_0 .net "rdValid", 0 0, L_0x55d2c85cea30;  1 drivers | ||||
| v0x55d2c85ca020_0 .net "rf_rd_data1", 31 0, o0x7fa65309bff8;  0 drivers | ||||
| v0x55d2c85ca100_0 .net "rf_rd_data2", 31 0, o0x7fa65309c028;  0 drivers | ||||
| v0x55d2c85ca1e0_0 .net "rf_rd_en1", 0 0, L_0x55d2c85e44c0;  1 drivers | ||||
| v0x55d2c85ca2a0_0 .net "rf_rd_en2", 0 0, L_0x55d2c85e4670;  1 drivers | ||||
| v0x55d2c85ca360_0 .net "rf_rd_index1", 4 0, L_0x55d2c85e4730;  1 drivers | ||||
| v0x55d2c85ca440_0 .net "rf_rd_index2", 4 0, L_0x55d2c85e48f0;  1 drivers | ||||
| v0x55d2c85ca520_0 .net "rf_wr_data", 31 0, L_0x55d2c85e5570;  1 drivers | ||||
| v0x55d2c85ca600_0 .net "rf_wr_en", 0 0, L_0x55d2c85e5b60;  1 drivers | ||||
| v0x55d2c85ca6c0_0 .net "rf_wr_index", 4 0, L_0x55d2c85e5cc0;  1 drivers | ||||
| v0x55d2c85ca7a0_0 .net "rs1", 4 0, L_0x55d2c85ce0b0;  1 drivers | ||||
| v0x55d2c85ca880_0 .net "rs1Valid", 0 0, L_0x55d2c85ce820;  1 drivers | ||||
| v0x55d2c85ca940_0 .net "rs2", 4 0, L_0x55d2c85ce150;  1 drivers | ||||
| v0x55d2c85caa20_0 .net "rs2Valid", 0 0, L_0x55d2c85ce570;  1 drivers | ||||
| v0x55d2c85caae0_0 .net "rst", 0 0, v0x55d2c85cb2e0_0;  1 drivers | ||||
| v0x55d2c85caba0_0 .net "signed_ge", 0 0, L_0x55d2c85e8c30;  1 drivers | ||||
| v0x55d2c85cac60_0 .net "signed_lt", 0 0, L_0x55d2c85e7230;  1 drivers | ||||
| v0x55d2c85cad20_0 .net "src1_value", 31 0, L_0x55d2c85e49b0;  1 drivers | ||||
| v0x55d2c85cae00_0 .net "src2_value", 31 0, L_0x55d2c85e4b30;  1 drivers | ||||
| v0x55d2c85caee0_0 .net "taken_br", 0 0, L_0x55d2c85ea830;  1 drivers | ||||
| E_0x55d2c857c4c0 .event posedge, v0x55d2c85c8e20_0; | ||||
| L_0x55d2c85cb380 .array/port v0x55d2c85c90a0, L_0x55d2c85cb450; | ||||
| L_0x55d2c85cb450 .part v0x55d2c85c9da0_0, 2, 30; | ||||
| L_0x55d2c85cb630 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cb6d0 .cmp/eq 7, L_0x55d2c85cb630, L_0x7fa652ad8018; | ||||
| L_0x55d2c85cb840 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cb8e0 .cmp/eq 7, L_0x55d2c85cb840, L_0x7fa652ad8060; | ||||
| L_0x55d2c85cbb20 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cbbc0 .cmp/eq 7, L_0x55d2c85cbb20, L_0x7fa652ad80a8; | ||||
| L_0x55d2c85cbd50 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cbdf0 .cmp/eq 7, L_0x55d2c85cbd50, L_0x7fa652ad80f0; | ||||
| L_0x55d2c85cc080 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cc170 .cmp/eq 7, L_0x55d2c85cc080, L_0x7fa652ad8138; | ||||
| L_0x55d2c85cc460 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cc500 .cmp/eq 7, L_0x55d2c85cc460, L_0x7fa652ad8180; | ||||
| L_0x55d2c85cc760 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cc800 .cmp/eq 7, L_0x55d2c85cc760, L_0x7fa652ad81c8; | ||||
| L_0x55d2c85ccb20 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85ccbc0 .cmp/eq 7, L_0x55d2c85ccb20, L_0x7fa652ad8210; | ||||
| L_0x55d2c85ccda0 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cce40 .cmp/eq 7, L_0x55d2c85ccda0, L_0x7fa652ad8258; | ||||
| L_0x55d2c85ccd00 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cd0f0 .cmp/eq 7, L_0x55d2c85ccd00, L_0x7fa652ad82a0; | ||||
| L_0x55d2c85cd450 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cd4f0 .cmp/eq 7, L_0x55d2c85cd450, L_0x7fa652ad82e8; | ||||
| L_0x55d2c85cd700 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cd7a0 .cmp/eq 7, L_0x55d2c85cd700, L_0x7fa652ad8330; | ||||
| L_0x55d2c85cdad0 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cdb70 .cmp/eq 7, L_0x55d2c85cdad0, L_0x7fa652ad8378; | ||||
| L_0x55d2c85cdda0 .part L_0x55d2c85a4500, 0, 7; | ||||
| L_0x55d2c85cde40 .cmp/eq 7, L_0x55d2c85cdda0, L_0x7fa652ad83c0; | ||||
| L_0x55d2c85ce0b0 .part L_0x55d2c85a4500, 15, 5; | ||||
| L_0x55d2c85ce150 .part L_0x55d2c85a4500, 20, 5; | ||||
| L_0x55d2c85ce300 .part L_0x55d2c85a4500, 7, 5; | ||||
| L_0x55d2c85ceb40 .part L_0x55d2c85a4500, 12, 3; | ||||
| L_0x55d2c85ced00 .concat [ 3 1 0 0], L_0x55d2c85ceb40, L_0x7fa652ad8408; | ||||
| L_0x55d2c85cee40 .part L_0x55d2c85a4500, 25, 7; | ||||
| L_0x55d2c85cebe0 .part L_0x55d2c85a4500, 31, 1; | ||||
| LS_0x55d2c85cf010_0_0 .concat [ 1 1 1 1], L_0x55d2c85cebe0, L_0x55d2c85cebe0, L_0x55d2c85cebe0, L_0x55d2c85cebe0; | ||||
| LS_0x55d2c85cf010_0_4 .concat [ 1 1 1 1], L_0x55d2c85cebe0, L_0x55d2c85cebe0, L_0x55d2c85cebe0, L_0x55d2c85cebe0; | ||||
| LS_0x55d2c85cf010_0_8 .concat [ 1 1 1 1], L_0x55d2c85cebe0, L_0x55d2c85cebe0, L_0x55d2c85cebe0, L_0x55d2c85cebe0; | ||||
| LS_0x55d2c85cf010_0_12 .concat [ 1 1 1 1], L_0x55d2c85cebe0, L_0x55d2c85cebe0, L_0x55d2c85cebe0, L_0x55d2c85cebe0; | ||||
| LS_0x55d2c85cf010_0_16 .concat [ 1 1 1 1], L_0x55d2c85cebe0, L_0x55d2c85cebe0, L_0x55d2c85cebe0, L_0x55d2c85cebe0; | ||||
| LS_0x55d2c85cf010_0_20 .concat [ 1 0 0 0], L_0x55d2c85cebe0; | ||||
| LS_0x55d2c85cf010_1_0 .concat [ 4 4 4 4], LS_0x55d2c85cf010_0_0, LS_0x55d2c85cf010_0_4, LS_0x55d2c85cf010_0_8, LS_0x55d2c85cf010_0_12; | ||||
| LS_0x55d2c85cf010_1_4 .concat [ 4 1 0 0], LS_0x55d2c85cf010_0_16, LS_0x55d2c85cf010_0_20; | ||||
| L_0x55d2c85cf010 .concat [ 16 5 0 0], LS_0x55d2c85cf010_1_0, LS_0x55d2c85cf010_1_4; | ||||
| L_0x55d2c85cf400 .part L_0x55d2c85a4500, 25, 6; | ||||
| L_0x55d2c85cf4a0 .part L_0x55d2c85a4500, 20, 5; | ||||
| L_0x55d2c85cf6c0 .concat [ 5 6 21 0], L_0x55d2c85cf4a0, L_0x55d2c85cf400, L_0x55d2c85cf010; | ||||
| L_0x55d2c85cf860 .part L_0x55d2c85a4500, 31, 1; | ||||
| LS_0x55d2c85cfa60_0_0 .concat [ 1 1 1 1], L_0x55d2c85cf860, L_0x55d2c85cf860, L_0x55d2c85cf860, L_0x55d2c85cf860; | ||||
| LS_0x55d2c85cfa60_0_4 .concat [ 1 1 1 1], L_0x55d2c85cf860, L_0x55d2c85cf860, L_0x55d2c85cf860, L_0x55d2c85cf860; | ||||
| LS_0x55d2c85cfa60_0_8 .concat [ 1 1 1 1], L_0x55d2c85cf860, L_0x55d2c85cf860, L_0x55d2c85cf860, L_0x55d2c85cf860; | ||||
| LS_0x55d2c85cfa60_0_12 .concat [ 1 1 1 1], L_0x55d2c85cf860, L_0x55d2c85cf860, L_0x55d2c85cf860, L_0x55d2c85cf860; | ||||
| LS_0x55d2c85cfa60_0_16 .concat [ 1 1 1 1], L_0x55d2c85cf860, L_0x55d2c85cf860, L_0x55d2c85cf860, L_0x55d2c85cf860; | ||||
| LS_0x55d2c85cfa60_0_20 .concat [ 1 0 0 0], L_0x55d2c85cf860; | ||||
| LS_0x55d2c85cfa60_1_0 .concat [ 4 4 4 4], LS_0x55d2c85cfa60_0_0, LS_0x55d2c85cfa60_0_4, LS_0x55d2c85cfa60_0_8, LS_0x55d2c85cfa60_0_12; | ||||
| LS_0x55d2c85cfa60_1_4 .concat [ 4 1 0 0], LS_0x55d2c85cfa60_0_16, LS_0x55d2c85cfa60_0_20; | ||||
| L_0x55d2c85cfa60 .concat [ 16 5 0 0], LS_0x55d2c85cfa60_1_0, LS_0x55d2c85cfa60_1_4; | ||||
| L_0x55d2c85cfe20 .part L_0x55d2c85a4500, 25, 6; | ||||
| L_0x55d2c85d0030 .part L_0x55d2c85a4500, 7, 5; | ||||
| L_0x55d2c85d00d0 .concat [ 5 6 21 0], L_0x55d2c85d0030, L_0x55d2c85cfe20, L_0x55d2c85cfa60; | ||||
| L_0x55d2c85d03f0 .part L_0x55d2c85a4500, 31, 1; | ||||
| LS_0x55d2c85d0490_0_0 .concat [ 1 1 1 1], L_0x55d2c85d03f0, L_0x55d2c85d03f0, L_0x55d2c85d03f0, L_0x55d2c85d03f0; | ||||
| LS_0x55d2c85d0490_0_4 .concat [ 1 1 1 1], L_0x55d2c85d03f0, L_0x55d2c85d03f0, L_0x55d2c85d03f0, L_0x55d2c85d03f0; | ||||
| LS_0x55d2c85d0490_0_8 .concat [ 1 1 1 1], L_0x55d2c85d03f0, L_0x55d2c85d03f0, L_0x55d2c85d03f0, L_0x55d2c85d03f0; | ||||
| LS_0x55d2c85d0490_0_12 .concat [ 1 1 1 1], L_0x55d2c85d03f0, L_0x55d2c85d03f0, L_0x55d2c85d03f0, L_0x55d2c85d03f0; | ||||
| LS_0x55d2c85d0490_0_16 .concat [ 1 1 1 1], L_0x55d2c85d03f0, L_0x55d2c85d03f0, L_0x55d2c85d03f0, L_0x55d2c85d03f0; | ||||
| LS_0x55d2c85d0490_1_0 .concat [ 4 4 4 4], LS_0x55d2c85d0490_0_0, LS_0x55d2c85d0490_0_4, LS_0x55d2c85d0490_0_8, LS_0x55d2c85d0490_0_12; | ||||
| LS_0x55d2c85d0490_1_4 .concat [ 4 0 0 0], LS_0x55d2c85d0490_0_16; | ||||
| L_0x55d2c85d0490 .concat [ 16 4 0 0], LS_0x55d2c85d0490_1_0, LS_0x55d2c85d0490_1_4; | ||||
| L_0x55d2c85d0920 .part L_0x55d2c85a4500, 7, 1; | ||||
| L_0x55d2c85d09c0 .part L_0x55d2c85a4500, 25, 6; | ||||
| L_0x55d2c85d0c00 .part L_0x55d2c85a4500, 8, 4; | ||||
| LS_0x55d2c85d0d00_0_0 .concat [ 1 4 6 1], L_0x7fa652ad8450, L_0x55d2c85d0c00, L_0x55d2c85d09c0, L_0x55d2c85d0920; | ||||
| LS_0x55d2c85d0d00_0_4 .concat [ 20 0 0 0], L_0x55d2c85d0490; | ||||
| L_0x55d2c85d0d00 .concat [ 12 20 0 0], LS_0x55d2c85d0d00_0_0, LS_0x55d2c85d0d00_0_4; | ||||
| L_0x55d2c85d10c0 .part L_0x55d2c85a4500, 31, 1; | ||||
| L_0x55d2c85d1160 .part L_0x55d2c85a4500, 20, 11; | ||||
| L_0x55d2c85d13c0 .part L_0x55d2c85a4500, 12, 8; | ||||
| L_0x55d2c85e1470 .concat [ 12 8 11 1], L_0x7fa652ad8498, L_0x55d2c85d13c0, L_0x55d2c85d1160, L_0x55d2c85d10c0; | ||||
| L_0x55d2c85e17d0 .part L_0x55d2c85a4500, 31, 1; | ||||
| LS_0x55d2c85e1870_0_0 .concat [ 1 1 1 1], L_0x55d2c85e17d0, L_0x55d2c85e17d0, L_0x55d2c85e17d0, L_0x55d2c85e17d0; | ||||
| LS_0x55d2c85e1870_0_4 .concat [ 1 1 1 1], L_0x55d2c85e17d0, L_0x55d2c85e17d0, L_0x55d2c85e17d0, L_0x55d2c85e17d0; | ||||
| LS_0x55d2c85e1870_0_8 .concat [ 1 1 1 1], L_0x55d2c85e17d0, L_0x55d2c85e17d0, L_0x55d2c85e17d0, L_0x55d2c85e17d0; | ||||
| L_0x55d2c85e1870 .concat [ 4 4 4 0], LS_0x55d2c85e1870_0_0, LS_0x55d2c85e1870_0_4, LS_0x55d2c85e1870_0_8; | ||||
| L_0x55d2c85e1bb0 .part L_0x55d2c85a4500, 12, 8; | ||||
| L_0x55d2c85e1c50 .part L_0x55d2c85a4500, 20, 1; | ||||
| L_0x55d2c85e1ee0 .part L_0x55d2c85a4500, 25, 6; | ||||
| L_0x55d2c85e1f80 .part L_0x55d2c85a4500, 21, 4; | ||||
| LS_0x55d2c85e2280_0_0 .concat [ 1 4 6 1], L_0x7fa652ad84e0, L_0x55d2c85e1f80, L_0x55d2c85e1ee0, L_0x55d2c85e1c50; | ||||
| LS_0x55d2c85e2280_0_4 .concat [ 8 12 0 0], L_0x55d2c85e1bb0, L_0x55d2c85e1870; | ||||
| L_0x55d2c85e2280 .concat [ 12 20 0 0], LS_0x55d2c85e2280_0_0, LS_0x55d2c85e2280_0_4; | ||||
| L_0x55d2c85e24e0 .cmp/eq 4, L_0x55d2c85ced00, L_0x7fa652ad8528; | ||||
| L_0x55d2c85e2990 .cmp/eq 4, L_0x55d2c85ced00, L_0x7fa652ad8570; | ||||
| L_0x55d2c85e2af0 .cmp/eq 4, L_0x55d2c85ced00, L_0x7fa652ad85b8; | ||||
| L_0x55d2c85e28f0 .cmp/eq 4, L_0x55d2c85ced00, L_0x7fa652ad8600; | ||||
| L_0x55d2c85e3030 .cmp/eq 4, L_0x55d2c85ced00, L_0x7fa652ad8648; | ||||
| L_0x55d2c85e34d0 .cmp/eq 4, L_0x55d2c85ced00, L_0x7fa652ad8690; | ||||
| L_0x55d2c85e3680 .cmp/eq 4, L_0x55d2c85ced00, L_0x7fa652ad86d8; | ||||
| L_0x55d2c85e3cd0 .part L_0x55d2c85cee40, 5, 1; | ||||
| L_0x55d2c85e4070 .cmp/eq 4, L_0x55d2c85ced00, L_0x7fa652ad8768; | ||||
| L_0x55d2c85e4c00 .functor MUXZ 32, L_0x55d2c85e4b30, L_0x55d2c85cf6c0, L_0x55d2c85e3af0, C4<>; | ||||
| L_0x55d2c85e4fa0 .arith/sum 32, L_0x55d2c85e49b0, L_0x55d2c85e4c00; | ||||
| L_0x55d2c85e53e0 .functor MUXZ 32, L_0x7fa652ad87b0, L_0x55d2c85e4fa0, L_0x55d2c85e4dc0, C4<>; | ||||
| L_0x55d2c85e5570 .functor MUXZ 32, L_0x7fa652ad87f8, L_0x55d2c85e53e0, L_0x55d2c85e5b60, C4<>; | ||||
| L_0x55d2c85e4e80 .cmp/ne 5, L_0x55d2c85ce300, L_0x7fa652ad8840; | ||||
| L_0x55d2c85e5e70 .part L_0x55d2c85e49b0, 31, 1; | ||||
| L_0x55d2c85e6190 .part L_0x55d2c85e4b30, 31, 1; | ||||
| L_0x55d2c85e6230 .reduce/nor L_0x55d2c85e6190; | ||||
| L_0x55d2c85e66c0 .part L_0x55d2c85e49b0, 31, 1; | ||||
| L_0x55d2c85e6760 .reduce/nor L_0x55d2c85e66c0; | ||||
| L_0x55d2c85e6aa0 .part L_0x55d2c85e4b30, 31, 1; | ||||
| L_0x55d2c85e6d50 .cmp/gt 32, L_0x55d2c85e4b30, L_0x55d2c85e49b0; | ||||
| L_0x55d2c85e70a0 .functor MUXZ 1, L_0x55d2c85e6d50, L_0x7fa652ad88d0, L_0x55d2c85e6b40, C4<>; | ||||
| L_0x55d2c85e7230 .functor MUXZ 1, L_0x55d2c85e70a0, L_0x7fa652ad8888, L_0x55d2c85e65b0, C4<>; | ||||
| L_0x55d2c85e7680 .part L_0x55d2c85e49b0, 31, 1; | ||||
| L_0x55d2c85e7720 .part L_0x55d2c85e4b30, 31, 1; | ||||
| L_0x55d2c85e7a90 .reduce/nor L_0x55d2c85e7720; | ||||
| L_0x55d2c85e7c90 .part L_0x55d2c85e49b0, 31, 1; | ||||
| L_0x55d2c85e8010 .reduce/nor L_0x55d2c85e7c90; | ||||
| L_0x55d2c85e8100 .part L_0x55d2c85e4b30, 31, 1; | ||||
| L_0x55d2c85e8700 .cmp/ge 32, L_0x55d2c85e49b0, L_0x55d2c85e4b30; | ||||
| L_0x55d2c85e87a0 .functor MUXZ 1, L_0x55d2c85e8700, L_0x7fa652ad8960, L_0x55d2c85e8490, C4<>; | ||||
| L_0x55d2c85e8c30 .functor MUXZ 1, L_0x55d2c85e87a0, L_0x7fa652ad8918, L_0x55d2c85e7b80, C4<>; | ||||
| L_0x55d2c85e8dc0 .cmp/eq 32, L_0x55d2c85e49b0, L_0x55d2c85e4b30; | ||||
| L_0x55d2c85e9170 .cmp/ne 32, L_0x55d2c85e49b0, L_0x55d2c85e4b30; | ||||
| L_0x55d2c85e9210 .cmp/gt 32, L_0x55d2c85e4b30, L_0x55d2c85e49b0; | ||||
| L_0x55d2c85e95d0 .cmp/ge 32, L_0x55d2c85e49b0, L_0x55d2c85e4b30; | ||||
| L_0x55d2c85e9670 .functor MUXZ 1, L_0x7fa652ad89a8, L_0x55d2c85e95d0, L_0x55d2c85e35c0, C4<>; | ||||
| L_0x55d2c85e9b60 .functor MUXZ 1, L_0x55d2c85e9670, L_0x55d2c85e9210, L_0x55d2c85e3350, C4<>; | ||||
| L_0x55d2c85e9cf0 .functor MUXZ 1, L_0x55d2c85e9b60, L_0x55d2c85e8c30, L_0x55d2c85e2f70, C4<>; | ||||
| L_0x55d2c85ea1c0 .functor MUXZ 1, L_0x55d2c85e9cf0, L_0x55d2c85e7230, L_0x55d2c85e2db0, C4<>; | ||||
| L_0x55d2c85ea350 .functor MUXZ 1, L_0x55d2c85ea1c0, L_0x55d2c85e9170, L_0x55d2c85e2a30, C4<>; | ||||
| L_0x55d2c85ea830 .functor MUXZ 1, L_0x55d2c85ea350, L_0x55d2c85e8dc0, L_0x55d2c85e2830, C4<>; | ||||
| L_0x55d2c85ea9c0 .arith/sum 32, v0x55d2c85c9da0_0, L_0x55d2c85d0d00; | ||||
|     .scope S_0x55d2c85933e0; | ||||
| T_0 ; | ||||
|     %vpi_call 3 12 "$readmemh", "program.hex", v0x55d2c85c90a0 {0 0 0}; | ||||
|     %end; | ||||
|     .thread T_0; | ||||
|     .scope S_0x55d2c85933e0; | ||||
| T_1 ; | ||||
|     %wait E_0x55d2c857c4c0; | ||||
|     %load/vec4 v0x55d2c85caae0_0; | ||||
|     %flag_set/vec4 8; | ||||
|     %jmp/0xz  T_1.0, 8; | ||||
|     %pushi/vec4 0, 0, 32; | ||||
|     %assign/vec4 v0x55d2c85c9da0_0, 0; | ||||
|     %pushi/vec4 4, 0, 32; | ||||
|     %assign/vec4 v0x55d2c85c9cc0_0, 0; | ||||
|     %jmp T_1.1; | ||||
| T_1.0 ; | ||||
|     %load/vec4 v0x55d2c85caee0_0; | ||||
|     %flag_set/vec4 8; | ||||
|     %jmp/0 T_1.2, 8; | ||||
|     %load/vec4 v0x55d2c85c8d40_0; | ||||
|     %jmp/1 T_1.3, 8; | ||||
| T_1.2 ; End of true expr. | ||||
|     %load/vec4 v0x55d2c85c9da0_0; | ||||
|     %addi 4, 0, 32; | ||||
|     %jmp/0 T_1.3, 8; | ||||
|  ; End of false expr. | ||||
|     %blend; | ||||
| T_1.3; | ||||
|     %assign/vec4 v0x55d2c85c9cc0_0, 0; | ||||
|     %load/vec4 v0x55d2c85c9cc0_0; | ||||
|     %assign/vec4 v0x55d2c85c9da0_0, 0; | ||||
| T_1.1 ; | ||||
|     %jmp T_1; | ||||
|     .thread T_1; | ||||
|     .scope S_0x55d2c8557240; | ||||
| T_2 ; | ||||
|     %delay 5, 0; | ||||
|     %load/vec4 v0x55d2c85cb040_0; | ||||
|     %inv; | ||||
|     %store/vec4 v0x55d2c85cb040_0, 0, 1; | ||||
|     %jmp T_2; | ||||
|     .thread T_2; | ||||
|     .scope S_0x55d2c8557240; | ||||
| T_3 ; | ||||
|     %wait E_0x55d2c857c4c0; | ||||
|     %vpi_call 2 22 "$display", "Time=%0t, PC=%h, Instr=%h", $time, v0x55d2c85cb240_0, v0x55d2c85cb100_0 {0 0 0}; | ||||
|     %load/vec4 v0x55d2c85cb240_0; | ||||
|     %cmpi/e 256, 0, 32; | ||||
|     %jmp/0xz  T_3.0, 4; | ||||
|     %vpi_call 2 24 "$display", "Simulation completed successfully!" {0 0 0}; | ||||
|     %vpi_call 2 25 "$finish" {0 0 0}; | ||||
| T_3.0 ; | ||||
|     %jmp T_3; | ||||
|     .thread T_3; | ||||
|     .scope S_0x55d2c8557240; | ||||
| T_4 ; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v0x55d2c85cb040_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v0x55d2c85cb2e0_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v0x55d2c85cb2e0_0, 0, 1; | ||||
|     %delay 200, 0; | ||||
|     %vpi_call 2 35 "$display", "Test completed" {0 0 0}; | ||||
|     %vpi_call 2 36 "$finish" {0 0 0}; | ||||
|     %end; | ||||
|     .thread T_4; | ||||
| # The file index is used to find the file name in the following table. | ||||
| :file_names 4; | ||||
|     "N/A"; | ||||
|     "<interactive>"; | ||||
|     "RISCcore2TB.v"; | ||||
|     "RISCcore2.v"; | ||||
		Reference in New Issue
	
	Block a user