bugfix
This commit is contained in:
		
							
								
								
									
										122
									
								
								chapter5/RISCcore2.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								chapter5/RISCcore2.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | ||||
| module RISCcore2 ( | ||||
|   input rst, | ||||
|   input clk, | ||||
|   output reg [31:0] pc, | ||||
|   output wire [31:0] next_pc,  // Changed to wire | ||||
|   output wire [31:0] instr | ||||
| ); | ||||
|  | ||||
|   // IMem - reduced size for simplicity | ||||
|   reg [31:0] imem [0:63]; | ||||
|   initial begin | ||||
|     $readmemh("program.hex", imem); | ||||
|   end | ||||
|   assign instr = imem[pc[31:2]];  // Word-aligned access | ||||
|  | ||||
|   // Instruction decoder | ||||
|   wire [6:0] opcode = instr[6:0]; | ||||
|   wire [4:0] rs1 = instr[19:15]; | ||||
|   wire [4:0] rs2 = instr[24:20]; | ||||
|   wire [4:0] rd = instr[11:7]; | ||||
|   wire [2:0] funct3 = instr[14:12]; | ||||
|   wire [6:0] funct7 = instr[31:25]; | ||||
|  | ||||
|   // Instruction type detection | ||||
|   wire isUType = (opcode == 7'b0110111) || (opcode == 7'b0010111);  // LUI, AUIPC | ||||
|   wire isIType = (opcode == 7'b0000011) || (opcode == 7'b0000111) ||  // LOAD | ||||
|                  (opcode == 7'b0010011) || (opcode == 7'b0011011) ||  // OP-IMM | ||||
|                  (opcode == 7'b1100111);                               // JALR | ||||
|   wire isRType = (opcode == 7'b0110011) || (opcode == 7'b0111011);     // OP | ||||
|   wire isSType = (opcode == 7'b0100011) || (opcode == 7'b0100111);     // STORE | ||||
|   wire isBType = (opcode == 7'b1100011);                               // BRANCH | ||||
|   wire isJType = (opcode == 7'b1101111);                               // JAL | ||||
|  | ||||
|   // Immediate generation | ||||
|   wire [31:0] Iimm = {{20{instr[31]}}, instr[31:20]}; | ||||
|   wire [31:0] Simm = {{20{instr[31]}}, instr[31:25], instr[11:7]}; | ||||
|   wire [31:0] Bimm = {{19{instr[31]}}, instr[31], instr[7], instr[30:25], instr[11:8], 1'b0}; | ||||
|   wire [31:0] Uimm = {instr[31:12], 12'b0}; | ||||
|   wire [31:0] Jimm = {{11{instr[31]}}, instr[31], instr[19:12], instr[20], instr[30:21], 1'b0}; | ||||
|  | ||||
|   // Register file | ||||
|   reg [31:0] rf [0:31]; | ||||
|    | ||||
|   // Initialize register file (x0 always zero) | ||||
|   integer i; | ||||
|   initial begin | ||||
|     for (i = 0; i < 32; i = i + 1) begin | ||||
|       rf[i] = 32'b0; | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   // Read ports | ||||
|   wire [31:0] rs1_val = (rs1 != 0) ? rf[rs1] : 32'b0; | ||||
|   wire [31:0] rs2_val = (rs2 != 0) ? rf[rs2] : 32'b0; | ||||
|  | ||||
|   // Instruction decoding | ||||
|   wire isADDI = (opcode == 7'b0010011) && (funct3 == 3'b000); | ||||
|   wire isADD  = (opcode == 7'b0110011) && (funct3 == 3'b000) && (funct7 == 7'b0000000); | ||||
|    | ||||
|   // Branch instructions | ||||
|   wire isBEQ  = (opcode == 7'b1100011) && (funct3 == 3'b000); | ||||
|   wire isBNE  = (opcode == 7'b1100011) && (funct3 == 3'b001); | ||||
|   wire isBLT  = (opcode == 7'b1100011) && (funct3 == 3'b100); | ||||
|   wire isBGE  = (opcode == 7'b1100011) && (funct3 == 3'b101); | ||||
|   wire isBLTU = (opcode == 7'b1100011) && (funct3 == 3'b110); | ||||
|   wire isBGEU = (opcode == 7'b1100011) && (funct3 == 3'b111); | ||||
|  | ||||
|   // ALU operations | ||||
|   wire [31:0] alu_src2 = isADDI ? Iimm : rs2_val; | ||||
|   wire [31:0] alu_result = (isADDI || isADD) ? (rs1_val + alu_src2) : 32'b0; | ||||
|  | ||||
|   // Branch condition logic | ||||
|   wire signed [31:0] signed_rs1 = rs1_val; | ||||
|   wire signed [31:0] signed_rs2 = rs2_val; | ||||
|    | ||||
|   wire branch_taken = | ||||
|       isBEQ  ? (rs1_val == rs2_val) : | ||||
|       isBNE  ? (rs1_val != rs2_val) : | ||||
|       isBLT  ? (signed_rs1 < signed_rs2) : | ||||
|       isBGE  ? (signed_rs1 >= signed_rs2) : | ||||
|       isBLTU ? (rs1_val < rs2_val) : | ||||
|       isBGEU ? (rs1_val >= rs2_val) : | ||||
|       1'b0; | ||||
|  | ||||
|   // Next PC calculation - FIXED: using wire for continuous assignment | ||||
|   wire [31:0] branch_target = pc + Bimm; | ||||
|   wire [31:0] next_pc_base = pc + 32'h4; | ||||
|   assign next_pc = branch_taken ? branch_target : next_pc_base; | ||||
|  | ||||
|   // Register write back | ||||
|   wire rf_write_enable = (rd != 0) && (isADDI || isADD); | ||||
|   wire [31:0] writeback_data = alu_result; | ||||
|  | ||||
|   // PC update | ||||
|   always @(posedge clk) begin | ||||
|     if (rst) begin | ||||
|       pc <= 32'h0; | ||||
|     end else begin | ||||
|       pc <= next_pc; | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   // Register write back | ||||
|   always @(posedge clk) begin | ||||
|     if (rf_write_enable && !rst) begin | ||||
|       rf[rd] <= writeback_data; | ||||
|       $display("RF Write: x%d = %h", rd, writeback_data); | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   // Debug monitoring | ||||
|   always @(posedge clk) begin | ||||
|     if (!rst) begin | ||||
|       $display("PC=%08h, Instr=%08h, rs1=x%d(%h), rs2=x%d(%h), rd=x%d, branch_taken=%b", | ||||
|                pc, instr, rs1, rs1_val, rs2, rs2_val, rd, branch_taken); | ||||
|       if (pc[1:0] != 2'b00) begin | ||||
|         $display("WARNING: PC not word-aligned: %h", pc); | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|  | ||||
| endmodule | ||||
							
								
								
									
										40
									
								
								chapter5/RISCcore2TB.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								chapter5/RISCcore2TB.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| 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 | ||||
|     if (!rst) begin | ||||
|       $display("Time=%0t, PC=%h, Next_PC=%h, Instr=%h", $time, pc, next_pc, instr); | ||||
|       if (pc >= 32'h100) begin // Safety stop | ||||
|         $display("Simulation completed!"); | ||||
|         $finish; | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|    | ||||
|   // Initialize | ||||
|   initial begin | ||||
|     clk = 0; | ||||
|     rst = 1; | ||||
|     #15 rst = 0; | ||||
|     #500; | ||||
|     $display("Test completed"); | ||||
|     $finish; | ||||
|   end | ||||
| endmodule | ||||
							
								
								
									
										15
									
								
								chapter5/program.hex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								chapter5/program.hex
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| 00100093  // addi x1, x0, 1     (x1 = 1) | ||||
| 00200113  // addi x2, x0, 2     (x2 = 2) | ||||
| 00300193  // addi x3, x0, 3     (x3 = 3) | ||||
| 00400213  // addi x4, x0, 4     (x4 = 4) | ||||
| 00500293  // addi x5, x0, 5     (x5 = 5) | ||||
| 00600313  // addi x6, x0, 6     (x6 = 6) | ||||
| 00700393  // addi x7, x0, 7     (x7 = 7) | ||||
| 00800413  // addi x8, x0, 8     (x8 = 8) | ||||
| 00900493  // addi x9, x0, 9     (x9 = 9) | ||||
| 00510233  // add  x4, x2, x5    (x4 = 2+3=5) | ||||
| 00620333  // add  x6, x4, x6    (x6 = 5+6=11) | ||||
| 007303b3  // add  x7, x6, x7    (x7 = 11+7=18) | ||||
| 00840433  // add  x8, x8, x8    (x8 = 8+8=16) | ||||
| 009484b3  // add  x9, x9, x9    (x9 = 9+9=18) | ||||
| 0000006f  // jal x0, 0          (infinite loop) | ||||
							
								
								
									
										506
									
								
								chapter5/riscv
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										506
									
								
								chapter5/riscv
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,506 @@ | ||||
| #! /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_0x55e64947d800 .scope module, "RISCcore2TB" "RISCcore2TB" 2 1; | ||||
|  .timescale 0 0; | ||||
| v0x55e6494ee5e0_0 .var "clk", 0 0; | ||||
| v0x55e6494ee6a0_0 .net "instr", 31 0, L_0x55e6494c9210;  1 drivers | ||||
| v0x55e6494ee740_0 .net "next_pc", 31 0, L_0x55e64950a6d0;  1 drivers | ||||
| v0x55e6494ee7e0_0 .net "pc", 31 0, v0x55e6494edb20_0;  1 drivers | ||||
| v0x55e6494ee880_0 .var "rst", 0 0; | ||||
| S_0x55e6494bcc80 .scope module, "uut" "RISCcore2" 2 9, 3 1 0, S_0x55e64947d800; | ||||
|  .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_0x55e6494c9210 .functor BUFZ 32, L_0x55e6494ee920, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>; | ||||
| L_0x55e6494c49e0 .functor OR 1, L_0x55e6494ef0b0, L_0x55e6494ef1d0, C4<0>, C4<0>; | ||||
| L_0x55e6494c55e0 .functor OR 1, L_0x55e6494ef370, L_0x55e6494ef440, C4<0>, C4<0>; | ||||
| L_0x55e6494ef7b0 .functor OR 1, L_0x55e6494c55e0, L_0x55e6494ef6c0, C4<0>, C4<0>; | ||||
| L_0x55e6494ef560 .functor OR 1, L_0x55e6494ef7b0, L_0x55e6494ef8f0, C4<0>, C4<0>; | ||||
| L_0x55e6494efbf0 .functor OR 1, L_0x55e6494ef560, L_0x55e6494efb00, C4<0>, C4<0>; | ||||
| L_0x55e6494eff60 .functor OR 1, L_0x55e6494efd40, L_0x55e6494efec0, C4<0>, C4<0>; | ||||
| L_0x55e6494f02f0 .functor OR 1, L_0x55e6494f0070, L_0x55e6494f0200, C4<0>, C4<0>; | ||||
| L_0x55e649504ce0 .functor AND 1, L_0x55e6495048d0, L_0x55e6495049c0, C4<1>, C4<1>; | ||||
| L_0x55e6495053d0 .functor AND 1, L_0x55e649504df0, L_0x55e6495050f0, C4<1>, C4<1>; | ||||
| L_0x55e649505630 .functor AND 1, L_0x55e6495053d0, L_0x55e649505540, C4<1>, C4<1>; | ||||
| L_0x55e649505ad0 .functor AND 1, L_0x55e649505740, L_0x55e649505a30, C4<1>, C4<1>; | ||||
| L_0x55e649506250 .functor AND 1, L_0x55e649505c50, L_0x55e649506160, C4<1>, C4<1>; | ||||
| L_0x55e649506760 .functor AND 1, L_0x55e649506360, L_0x55e649506670, C4<1>, C4<1>; | ||||
| L_0x55e649505be0 .functor AND 1, L_0x55e6495068f0, L_0x55e649506c10, C4<1>, C4<1>; | ||||
| L_0x55e6495071f0 .functor AND 1, L_0x55e649506da0, L_0x55e6495070d0, C4<1>, C4<1>; | ||||
| L_0x55e6495077f0 .functor AND 1, L_0x55e649507390, L_0x55e6495076d0, C4<1>, C4<1>; | ||||
| L_0x55e649507cf0 .functor OR 1, L_0x55e649504ce0, L_0x55e649505630, C4<0>, C4<0>; | ||||
| L_0x55e649507ef0 .functor BUFZ 32, L_0x55e649503c10, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>; | ||||
| L_0x55e649508400 .functor BUFZ 32, L_0x55e649504570, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>; | ||||
| L_0x55e64950a290 .functor OR 1, L_0x55e649504ce0, L_0x55e649505630, C4<0>, C4<0>; | ||||
| L_0x55e64950ae20 .functor AND 1, L_0x55e64950ace0, L_0x55e64950a290, C4<1>, C4<1>; | ||||
| L_0x55e64950afa0 .functor BUFZ 32, L_0x55e649508000, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>; | ||||
| v0x55e6494c93b0_0 .net "Bimm", 31 0, L_0x55e6494f1fa0;  1 drivers | ||||
| v0x55e6494c4b00_0 .net "Iimm", 31 0, L_0x55e6494f0b70;  1 drivers | ||||
| v0x55e6494c5700_0 .net "Jimm", 31 0, L_0x55e649503070;  1 drivers | ||||
| v0x55e6494e5250_0 .net "Simm", 31 0, L_0x55e6494f1420;  1 drivers | ||||
| v0x55e6494e5330_0 .net "Uimm", 31 0, L_0x55e6495026e0;  1 drivers | ||||
| v0x55e6494e5460_0 .net *"_ivl_0", 31 0, L_0x55e6494ee920;  1 drivers | ||||
| v0x55e6494e5540_0 .net *"_ivl_103", 0 0, L_0x55e6494f16c0;  1 drivers | ||||
| v0x55e6494e5620_0 .net *"_ivl_104", 18 0, L_0x55e6494f1760;  1 drivers | ||||
| v0x55e6494e5700_0 .net *"_ivl_107", 0 0, L_0x55e6494f1c20;  1 drivers | ||||
| v0x55e6494e57e0_0 .net *"_ivl_109", 0 0, L_0x55e6494f1cc0;  1 drivers | ||||
| v0x55e6494e58c0_0 .net *"_ivl_111", 5 0, L_0x55e6494f2090;  1 drivers | ||||
| v0x55e6494e59a0_0 .net *"_ivl_113", 3 0, L_0x55e6494f2160;  1 drivers | ||||
| L_0x7f63bbaa73c0 .functor BUFT 1, C4<0>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e5a80_0 .net/2u *"_ivl_114", 0 0, L_0x7f63bbaa73c0;  1 drivers | ||||
| v0x55e6494e5b60_0 .net *"_ivl_119", 19 0, L_0x55e6494f24f0;  1 drivers | ||||
| L_0x7f63bbaa7408 .functor BUFT 1, C4<000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e5c40_0 .net/2u *"_ivl_120", 11 0, L_0x7f63bbaa7408;  1 drivers | ||||
| v0x55e6494e5d20_0 .net *"_ivl_125", 0 0, L_0x55e6495027d0;  1 drivers | ||||
| v0x55e6494e5e00_0 .net *"_ivl_126", 10 0, L_0x55e6495029c0;  1 drivers | ||||
| v0x55e6494e5ee0_0 .net *"_ivl_129", 0 0, L_0x55e649502b20;  1 drivers | ||||
| v0x55e6494e5fc0_0 .net *"_ivl_131", 7 0, L_0x55e649502d20;  1 drivers | ||||
| v0x55e6494e60a0_0 .net *"_ivl_133", 0 0, L_0x55e649502dc0;  1 drivers | ||||
| v0x55e6494e6180_0 .net *"_ivl_135", 9 0, L_0x55e649502fd0;  1 drivers | ||||
| L_0x7f63bbaa7450 .functor BUFT 1, C4<0>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e6260_0 .net/2u *"_ivl_136", 0 0, L_0x7f63bbaa7450;  1 drivers | ||||
| v0x55e6494e6340_0 .net *"_ivl_140", 31 0, L_0x55e649503450;  1 drivers | ||||
| L_0x7f63bbaa7498 .functor BUFT 1, C4<000000000000000000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e6420_0 .net *"_ivl_143", 26 0, L_0x7f63bbaa7498;  1 drivers | ||||
| L_0x7f63bbaa74e0 .functor BUFT 1, C4<00000000000000000000000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e6500_0 .net/2u *"_ivl_144", 31 0, L_0x7f63bbaa74e0;  1 drivers | ||||
| v0x55e6494e65e0_0 .net *"_ivl_146", 0 0, L_0x55e6495035c0;  1 drivers | ||||
| v0x55e6494e66a0_0 .net *"_ivl_148", 31 0, L_0x55e649503890;  1 drivers | ||||
| v0x55e6494e6780_0 .net *"_ivl_150", 6 0, L_0x55e649503930;  1 drivers | ||||
| L_0x7f63bbaa7528 .functor BUFT 1, C4<00>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e6860_0 .net *"_ivl_153", 1 0, L_0x7f63bbaa7528;  1 drivers | ||||
| L_0x7f63bbaa7570 .functor BUFT 1, C4<00000000000000000000000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e6940_0 .net/2u *"_ivl_154", 31 0, L_0x7f63bbaa7570;  1 drivers | ||||
| v0x55e6494e6a20_0 .net *"_ivl_158", 31 0, L_0x55e649503da0;  1 drivers | ||||
| L_0x7f63bbaa75b8 .functor BUFT 1, C4<000000000000000000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e6b00_0 .net *"_ivl_161", 26 0, L_0x7f63bbaa75b8;  1 drivers | ||||
| L_0x7f63bbaa7600 .functor BUFT 1, C4<00000000000000000000000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e6be0_0 .net/2u *"_ivl_162", 31 0, L_0x7f63bbaa7600;  1 drivers | ||||
| v0x55e6494e6ed0_0 .net *"_ivl_164", 0 0, L_0x55e649504090;  1 drivers | ||||
| v0x55e6494e6f90_0 .net *"_ivl_166", 31 0, L_0x55e6495041d0;  1 drivers | ||||
| v0x55e6494e7070_0 .net *"_ivl_168", 6 0, L_0x55e649504430;  1 drivers | ||||
| L_0x7f63bbaa7648 .functor BUFT 1, C4<00>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e7150_0 .net *"_ivl_171", 1 0, L_0x7f63bbaa7648;  1 drivers | ||||
| L_0x7f63bbaa7690 .functor BUFT 1, C4<00000000000000000000000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e7230_0 .net/2u *"_ivl_172", 31 0, L_0x7f63bbaa7690;  1 drivers | ||||
| L_0x7f63bbaa76d8 .functor BUFT 1, C4<0010011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e7310_0 .net/2u *"_ivl_176", 6 0, L_0x7f63bbaa76d8;  1 drivers | ||||
| v0x55e6494e73f0_0 .net *"_ivl_178", 0 0, L_0x55e6495048d0;  1 drivers | ||||
| L_0x7f63bbaa7018 .functor BUFT 1, C4<0110111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e74b0_0 .net/2u *"_ivl_18", 6 0, L_0x7f63bbaa7018;  1 drivers | ||||
| L_0x7f63bbaa7720 .functor BUFT 1, C4<000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e7590_0 .net/2u *"_ivl_180", 2 0, L_0x7f63bbaa7720;  1 drivers | ||||
| v0x55e6494e7670_0 .net *"_ivl_182", 0 0, L_0x55e6495049c0;  1 drivers | ||||
| L_0x7f63bbaa7768 .functor BUFT 1, C4<0110011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e7730_0 .net/2u *"_ivl_186", 6 0, L_0x7f63bbaa7768;  1 drivers | ||||
| v0x55e6494e7810_0 .net *"_ivl_188", 0 0, L_0x55e649504df0;  1 drivers | ||||
| L_0x7f63bbaa77b0 .functor BUFT 1, C4<000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e78d0_0 .net/2u *"_ivl_190", 2 0, L_0x7f63bbaa77b0;  1 drivers | ||||
| v0x55e6494e79b0_0 .net *"_ivl_192", 0 0, L_0x55e6495050f0;  1 drivers | ||||
| v0x55e6494e7a70_0 .net *"_ivl_195", 0 0, L_0x55e6495053d0;  1 drivers | ||||
| L_0x7f63bbaa77f8 .functor BUFT 1, C4<0000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e7b30_0 .net/2u *"_ivl_196", 6 0, L_0x7f63bbaa77f8;  1 drivers | ||||
| v0x55e6494e7c10_0 .net *"_ivl_198", 0 0, L_0x55e649505540;  1 drivers | ||||
| v0x55e6494e7cd0_0 .net *"_ivl_20", 0 0, L_0x55e6494ef0b0;  1 drivers | ||||
| L_0x7f63bbaa7840 .functor BUFT 1, C4<1100011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e7d90_0 .net/2u *"_ivl_202", 6 0, L_0x7f63bbaa7840;  1 drivers | ||||
| v0x55e6494e7e70_0 .net *"_ivl_204", 0 0, L_0x55e649505740;  1 drivers | ||||
| L_0x7f63bbaa7888 .functor BUFT 1, C4<000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e7f30_0 .net/2u *"_ivl_206", 2 0, L_0x7f63bbaa7888;  1 drivers | ||||
| v0x55e6494e8010_0 .net *"_ivl_208", 0 0, L_0x55e649505a30;  1 drivers | ||||
| L_0x7f63bbaa78d0 .functor BUFT 1, C4<1100011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e80d0_0 .net/2u *"_ivl_212", 6 0, L_0x7f63bbaa78d0;  1 drivers | ||||
| v0x55e6494e81b0_0 .net *"_ivl_214", 0 0, L_0x55e649505c50;  1 drivers | ||||
| L_0x7f63bbaa7918 .functor BUFT 1, C4<001>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e8270_0 .net/2u *"_ivl_216", 2 0, L_0x7f63bbaa7918;  1 drivers | ||||
| v0x55e6494e8350_0 .net *"_ivl_218", 0 0, L_0x55e649506160;  1 drivers | ||||
| L_0x7f63bbaa7060 .functor BUFT 1, C4<0010111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e8410_0 .net/2u *"_ivl_22", 6 0, L_0x7f63bbaa7060;  1 drivers | ||||
| L_0x7f63bbaa7960 .functor BUFT 1, C4<1100011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e84f0_0 .net/2u *"_ivl_222", 6 0, L_0x7f63bbaa7960;  1 drivers | ||||
| v0x55e6494e85d0_0 .net *"_ivl_224", 0 0, L_0x55e649506360;  1 drivers | ||||
| L_0x7f63bbaa79a8 .functor BUFT 1, C4<100>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e8690_0 .net/2u *"_ivl_226", 2 0, L_0x7f63bbaa79a8;  1 drivers | ||||
| v0x55e6494e8770_0 .net *"_ivl_228", 0 0, L_0x55e649506670;  1 drivers | ||||
| L_0x7f63bbaa79f0 .functor BUFT 1, C4<1100011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e8830_0 .net/2u *"_ivl_232", 6 0, L_0x7f63bbaa79f0;  1 drivers | ||||
| v0x55e6494e8910_0 .net *"_ivl_234", 0 0, L_0x55e6495068f0;  1 drivers | ||||
| L_0x7f63bbaa7a38 .functor BUFT 1, C4<101>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e89d0_0 .net/2u *"_ivl_236", 2 0, L_0x7f63bbaa7a38;  1 drivers | ||||
| v0x55e6494e8ab0_0 .net *"_ivl_238", 0 0, L_0x55e649506c10;  1 drivers | ||||
| v0x55e6494e8b70_0 .net *"_ivl_24", 0 0, L_0x55e6494ef1d0;  1 drivers | ||||
| L_0x7f63bbaa7a80 .functor BUFT 1, C4<1100011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e8c30_0 .net/2u *"_ivl_242", 6 0, L_0x7f63bbaa7a80;  1 drivers | ||||
| v0x55e6494e8d10_0 .net *"_ivl_244", 0 0, L_0x55e649506da0;  1 drivers | ||||
| L_0x7f63bbaa7ac8 .functor BUFT 1, C4<110>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e8dd0_0 .net/2u *"_ivl_246", 2 0, L_0x7f63bbaa7ac8;  1 drivers | ||||
| v0x55e6494e8eb0_0 .net *"_ivl_248", 0 0, L_0x55e6495070d0;  1 drivers | ||||
| L_0x7f63bbaa7b10 .functor BUFT 1, C4<1100011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e8f70_0 .net/2u *"_ivl_252", 6 0, L_0x7f63bbaa7b10;  1 drivers | ||||
| v0x55e6494e9050_0 .net *"_ivl_254", 0 0, L_0x55e649507390;  1 drivers | ||||
| L_0x7f63bbaa7b58 .functor BUFT 1, C4<111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e9110_0 .net/2u *"_ivl_256", 2 0, L_0x7f63bbaa7b58;  1 drivers | ||||
| v0x55e6494e91f0_0 .net *"_ivl_258", 0 0, L_0x55e6495076d0;  1 drivers | ||||
| v0x55e6494e92b0_0 .net *"_ivl_265", 0 0, L_0x55e649507cf0;  1 drivers | ||||
| v0x55e6494e9370_0 .net *"_ivl_266", 31 0, L_0x55e649507e50;  1 drivers | ||||
| L_0x7f63bbaa7ba0 .functor BUFT 1, C4<00000000000000000000000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e9450_0 .net/2u *"_ivl_268", 31 0, L_0x7f63bbaa7ba0;  1 drivers | ||||
| v0x55e6494e9530_0 .net *"_ivl_276", 0 0, L_0x55e649507db0;  1 drivers | ||||
| v0x55e6494e95f0_0 .net *"_ivl_278", 0 0, L_0x55e649508520;  1 drivers | ||||
| L_0x7f63bbaa70a8 .functor BUFT 1, C4<0000011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e96b0_0 .net/2u *"_ivl_28", 6 0, L_0x7f63bbaa70a8;  1 drivers | ||||
| v0x55e6494e9790_0 .net *"_ivl_280", 0 0, L_0x55e649508840;  1 drivers | ||||
| v0x55e6494e9850_0 .net *"_ivl_282", 0 0, L_0x55e6495088e0;  1 drivers | ||||
| v0x55e6494e9910_0 .net *"_ivl_284", 0 0, L_0x55e649508c10;  1 drivers | ||||
| v0x55e6494e99d0_0 .net *"_ivl_286", 0 0, L_0x55e649508cb0;  1 drivers | ||||
| L_0x7f63bbaa7be8 .functor BUFT 1, C4<0>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494e9a90_0 .net/2u *"_ivl_288", 0 0, L_0x7f63bbaa7be8;  1 drivers | ||||
| v0x55e6494e9b70_0 .net *"_ivl_290", 0 0, L_0x55e649509020;  1 drivers | ||||
| v0x55e6494e9c50_0 .net *"_ivl_292", 0 0, L_0x55e6495091e0;  1 drivers | ||||
| v0x55e6494e9d30_0 .net *"_ivl_294", 0 0, L_0x55e649509620;  1 drivers | ||||
| v0x55e6494e9e10_0 .net *"_ivl_296", 0 0, L_0x55e6495097b0;  1 drivers | ||||
| v0x55e6494e9ef0_0 .net *"_ivl_298", 0 0, L_0x55e649509c00;  1 drivers | ||||
| v0x55e6494e9fd0_0 .net *"_ivl_3", 29 0, L_0x55e6494ee9f0;  1 drivers | ||||
| v0x55e6494ea0b0_0 .net *"_ivl_30", 0 0, L_0x55e6494ef370;  1 drivers | ||||
| L_0x7f63bbaa7c30 .functor BUFT 1, C4<00000000000000000000000000000100>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494ea170_0 .net/2u *"_ivl_304", 31 0, L_0x7f63bbaa7c30;  1 drivers | ||||
| v0x55e6494ea250_0 .net *"_ivl_310", 31 0, L_0x55e64950a8b0;  1 drivers | ||||
| L_0x7f63bbaa7c78 .functor BUFT 1, C4<000000000000000000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494ea330_0 .net *"_ivl_313", 26 0, L_0x7f63bbaa7c78;  1 drivers | ||||
| L_0x7f63bbaa7cc0 .functor BUFT 1, C4<00000000000000000000000000000000>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494ea410_0 .net/2u *"_ivl_314", 31 0, L_0x7f63bbaa7cc0;  1 drivers | ||||
| v0x55e6494ea4f0_0 .net *"_ivl_316", 0 0, L_0x55e64950ace0;  1 drivers | ||||
| v0x55e6494ea5b0_0 .net *"_ivl_319", 0 0, L_0x55e64950a290;  1 drivers | ||||
| L_0x7f63bbaa70f0 .functor BUFT 1, C4<0000111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494ea670_0 .net/2u *"_ivl_32", 6 0, L_0x7f63bbaa70f0;  1 drivers | ||||
| v0x55e6494ea750_0 .net *"_ivl_34", 0 0, L_0x55e6494ef440;  1 drivers | ||||
| v0x55e6494ea810_0 .net *"_ivl_37", 0 0, L_0x55e6494c55e0;  1 drivers | ||||
| L_0x7f63bbaa7138 .functor BUFT 1, C4<0010011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494ea8d0_0 .net/2u *"_ivl_38", 6 0, L_0x7f63bbaa7138;  1 drivers | ||||
| v0x55e6494ea9b0_0 .net *"_ivl_40", 0 0, L_0x55e6494ef6c0;  1 drivers | ||||
| v0x55e6494eaa70_0 .net *"_ivl_43", 0 0, L_0x55e6494ef7b0;  1 drivers | ||||
| L_0x7f63bbaa7180 .functor BUFT 1, C4<0011011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494eab30_0 .net/2u *"_ivl_44", 6 0, L_0x7f63bbaa7180;  1 drivers | ||||
| v0x55e6494eac10_0 .net *"_ivl_46", 0 0, L_0x55e6494ef8f0;  1 drivers | ||||
| v0x55e6494eacd0_0 .net *"_ivl_49", 0 0, L_0x55e6494ef560;  1 drivers | ||||
| L_0x7f63bbaa71c8 .functor BUFT 1, C4<1100111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494ead90_0 .net/2u *"_ivl_50", 6 0, L_0x7f63bbaa71c8;  1 drivers | ||||
| v0x55e6494eae70_0 .net *"_ivl_52", 0 0, L_0x55e6494efb00;  1 drivers | ||||
| L_0x7f63bbaa7210 .functor BUFT 1, C4<0110011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494eaf30_0 .net/2u *"_ivl_56", 6 0, L_0x7f63bbaa7210;  1 drivers | ||||
| v0x55e6494eb010_0 .net *"_ivl_58", 0 0, L_0x55e6494efd40;  1 drivers | ||||
| L_0x7f63bbaa7258 .functor BUFT 1, C4<0111011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494eb0d0_0 .net/2u *"_ivl_60", 6 0, L_0x7f63bbaa7258;  1 drivers | ||||
| v0x55e6494eb1b0_0 .net *"_ivl_62", 0 0, L_0x55e6494efec0;  1 drivers | ||||
| L_0x7f63bbaa72a0 .functor BUFT 1, C4<0100011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494eb270_0 .net/2u *"_ivl_66", 6 0, L_0x7f63bbaa72a0;  1 drivers | ||||
| v0x55e6494eb350_0 .net *"_ivl_68", 0 0, L_0x55e6494f0070;  1 drivers | ||||
| L_0x7f63bbaa72e8 .functor BUFT 1, C4<0100111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494eb410_0 .net/2u *"_ivl_70", 6 0, L_0x7f63bbaa72e8;  1 drivers | ||||
| v0x55e6494eb4f0_0 .net *"_ivl_72", 0 0, L_0x55e6494f0200;  1 drivers | ||||
| L_0x7f63bbaa7330 .functor BUFT 1, C4<1100011>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494eb5b0_0 .net/2u *"_ivl_76", 6 0, L_0x7f63bbaa7330;  1 drivers | ||||
| L_0x7f63bbaa7378 .functor BUFT 1, C4<1101111>, C4<0>, C4<0>, C4<0>; | ||||
| v0x55e6494eb690_0 .net/2u *"_ivl_80", 6 0, L_0x7f63bbaa7378;  1 drivers | ||||
| v0x55e6494eb770_0 .net *"_ivl_85", 0 0, L_0x55e6494f0670;  1 drivers | ||||
| v0x55e6494eb850_0 .net *"_ivl_86", 19 0, L_0x55e6494f07d0;  1 drivers | ||||
| v0x55e6494eb930_0 .net *"_ivl_89", 11 0, L_0x55e6494f0a00;  1 drivers | ||||
| v0x55e6494eba10_0 .net *"_ivl_93", 0 0, L_0x55e6494f0c90;  1 drivers | ||||
| v0x55e6494ebaf0_0 .net *"_ivl_94", 19 0, L_0x55e6494f0e10;  1 drivers | ||||
| v0x55e6494ebbd0_0 .net *"_ivl_97", 6 0, L_0x55e6494f11c0;  1 drivers | ||||
| v0x55e6494ebcb0_0 .net *"_ivl_99", 4 0, L_0x55e6494f1350;  1 drivers | ||||
| v0x55e6494ec5a0_0 .net "alu_result", 31 0, L_0x55e649508000;  1 drivers | ||||
| v0x55e6494ec680_0 .net "alu_src2", 31 0, L_0x55e649507900;  1 drivers | ||||
| v0x55e6494ec760_0 .net "branch_taken", 0 0, L_0x55e649509d90;  1 drivers | ||||
| v0x55e6494ec820_0 .net "branch_target", 31 0, L_0x55e64950a1f0;  1 drivers | ||||
| v0x55e6494ec900_0 .net "clk", 0 0, v0x55e6494ee5e0_0;  1 drivers | ||||
| v0x55e6494ec9c0_0 .net "funct3", 2 0, L_0x55e6494eeec0;  1 drivers | ||||
| v0x55e6494ecaa0_0 .net "funct7", 6 0, L_0x55e6494eef60;  1 drivers | ||||
| v0x55e6494ecb80_0 .var/i "i", 31 0; | ||||
| v0x55e6494ecc60 .array "imem", 63 0, 31 0; | ||||
| v0x55e6494ecd20_0 .net "instr", 31 0, L_0x55e6494c9210;  alias, 1 drivers | ||||
| v0x55e6494ece00_0 .net "isADD", 0 0, L_0x55e649505630;  1 drivers | ||||
| v0x55e6494ecec0_0 .net "isADDI", 0 0, L_0x55e649504ce0;  1 drivers | ||||
| v0x55e6494ecf80_0 .net "isBEQ", 0 0, L_0x55e649505ad0;  1 drivers | ||||
| v0x55e6494ed040_0 .net "isBGE", 0 0, L_0x55e649505be0;  1 drivers | ||||
| v0x55e6494ed100_0 .net "isBGEU", 0 0, L_0x55e6495077f0;  1 drivers | ||||
| v0x55e6494ed1c0_0 .net "isBLT", 0 0, L_0x55e649506760;  1 drivers | ||||
| v0x55e6494ed280_0 .net "isBLTU", 0 0, L_0x55e6495071f0;  1 drivers | ||||
| v0x55e6494ed340_0 .net "isBNE", 0 0, L_0x55e649506250;  1 drivers | ||||
| v0x55e6494ed400_0 .net "isBType", 0 0, L_0x55e6494f0450;  1 drivers | ||||
| v0x55e6494ed4c0_0 .net "isIType", 0 0, L_0x55e6494efbf0;  1 drivers | ||||
| v0x55e6494ed580_0 .net "isJType", 0 0, L_0x55e6494f0160;  1 drivers | ||||
| v0x55e6494ed640_0 .net "isRType", 0 0, L_0x55e6494eff60;  1 drivers | ||||
| v0x55e6494ed700_0 .net "isSType", 0 0, L_0x55e6494f02f0;  1 drivers | ||||
| v0x55e6494ed7c0_0 .net "isUType", 0 0, L_0x55e6494c49e0;  1 drivers | ||||
| v0x55e6494ed880_0 .net "next_pc", 31 0, L_0x55e64950a6d0;  alias, 1 drivers | ||||
| v0x55e6494ed960_0 .net "next_pc_base", 31 0, L_0x55e64950a350;  1 drivers | ||||
| v0x55e6494eda40_0 .net "opcode", 6 0, L_0x55e6494eebd0;  1 drivers | ||||
| v0x55e6494edb20_0 .var "pc", 31 0; | ||||
| v0x55e6494edc00_0 .net "rd", 4 0, L_0x55e6494eede0;  1 drivers | ||||
| v0x55e6494edce0 .array "rf", 31 0, 31 0; | ||||
| v0x55e6494edda0_0 .net "rf_write_enable", 0 0, L_0x55e64950ae20;  1 drivers | ||||
| v0x55e6494ede60_0 .net "rs1", 4 0, L_0x55e6494eec70;  1 drivers | ||||
| v0x55e6494edf40_0 .net "rs1_val", 31 0, L_0x55e649503c10;  1 drivers | ||||
| v0x55e6494ee020_0 .net "rs2", 4 0, L_0x55e6494eed40;  1 drivers | ||||
| v0x55e6494ee100_0 .net "rs2_val", 31 0, L_0x55e649504570;  1 drivers | ||||
| v0x55e6494ee1e0_0 .net "rst", 0 0, v0x55e6494ee880_0;  1 drivers | ||||
| v0x55e6494ee2a0_0 .net/s "signed_rs1", 31 0, L_0x55e649507ef0;  1 drivers | ||||
| v0x55e6494ee380_0 .net/s "signed_rs2", 31 0, L_0x55e649508400;  1 drivers | ||||
| v0x55e6494ee460_0 .net "writeback_data", 31 0, L_0x55e64950afa0;  1 drivers | ||||
| E_0x55e64948e4e0 .event posedge, v0x55e6494ec900_0; | ||||
| L_0x55e6494ee920 .array/port v0x55e6494ecc60, L_0x55e6494ee9f0; | ||||
| L_0x55e6494ee9f0 .part v0x55e6494edb20_0, 2, 30; | ||||
| L_0x55e6494eebd0 .part L_0x55e6494c9210, 0, 7; | ||||
| L_0x55e6494eec70 .part L_0x55e6494c9210, 15, 5; | ||||
| L_0x55e6494eed40 .part L_0x55e6494c9210, 20, 5; | ||||
| L_0x55e6494eede0 .part L_0x55e6494c9210, 7, 5; | ||||
| L_0x55e6494eeec0 .part L_0x55e6494c9210, 12, 3; | ||||
| L_0x55e6494eef60 .part L_0x55e6494c9210, 25, 7; | ||||
| L_0x55e6494ef0b0 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7018; | ||||
| L_0x55e6494ef1d0 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7060; | ||||
| L_0x55e6494ef370 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa70a8; | ||||
| L_0x55e6494ef440 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa70f0; | ||||
| L_0x55e6494ef6c0 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7138; | ||||
| L_0x55e6494ef8f0 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7180; | ||||
| L_0x55e6494efb00 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa71c8; | ||||
| L_0x55e6494efd40 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7210; | ||||
| L_0x55e6494efec0 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7258; | ||||
| L_0x55e6494f0070 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa72a0; | ||||
| L_0x55e6494f0200 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa72e8; | ||||
| L_0x55e6494f0450 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7330; | ||||
| L_0x55e6494f0160 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7378; | ||||
| L_0x55e6494f0670 .part L_0x55e6494c9210, 31, 1; | ||||
| LS_0x55e6494f07d0_0_0 .concat [ 1 1 1 1], L_0x55e6494f0670, L_0x55e6494f0670, L_0x55e6494f0670, L_0x55e6494f0670; | ||||
| LS_0x55e6494f07d0_0_4 .concat [ 1 1 1 1], L_0x55e6494f0670, L_0x55e6494f0670, L_0x55e6494f0670, L_0x55e6494f0670; | ||||
| LS_0x55e6494f07d0_0_8 .concat [ 1 1 1 1], L_0x55e6494f0670, L_0x55e6494f0670, L_0x55e6494f0670, L_0x55e6494f0670; | ||||
| LS_0x55e6494f07d0_0_12 .concat [ 1 1 1 1], L_0x55e6494f0670, L_0x55e6494f0670, L_0x55e6494f0670, L_0x55e6494f0670; | ||||
| LS_0x55e6494f07d0_0_16 .concat [ 1 1 1 1], L_0x55e6494f0670, L_0x55e6494f0670, L_0x55e6494f0670, L_0x55e6494f0670; | ||||
| LS_0x55e6494f07d0_1_0 .concat [ 4 4 4 4], LS_0x55e6494f07d0_0_0, LS_0x55e6494f07d0_0_4, LS_0x55e6494f07d0_0_8, LS_0x55e6494f07d0_0_12; | ||||
| LS_0x55e6494f07d0_1_4 .concat [ 4 0 0 0], LS_0x55e6494f07d0_0_16; | ||||
| L_0x55e6494f07d0 .concat [ 16 4 0 0], LS_0x55e6494f07d0_1_0, LS_0x55e6494f07d0_1_4; | ||||
| L_0x55e6494f0a00 .part L_0x55e6494c9210, 20, 12; | ||||
| L_0x55e6494f0b70 .concat [ 12 20 0 0], L_0x55e6494f0a00, L_0x55e6494f07d0; | ||||
| L_0x55e6494f0c90 .part L_0x55e6494c9210, 31, 1; | ||||
| LS_0x55e6494f0e10_0_0 .concat [ 1 1 1 1], L_0x55e6494f0c90, L_0x55e6494f0c90, L_0x55e6494f0c90, L_0x55e6494f0c90; | ||||
| LS_0x55e6494f0e10_0_4 .concat [ 1 1 1 1], L_0x55e6494f0c90, L_0x55e6494f0c90, L_0x55e6494f0c90, L_0x55e6494f0c90; | ||||
| LS_0x55e6494f0e10_0_8 .concat [ 1 1 1 1], L_0x55e6494f0c90, L_0x55e6494f0c90, L_0x55e6494f0c90, L_0x55e6494f0c90; | ||||
| LS_0x55e6494f0e10_0_12 .concat [ 1 1 1 1], L_0x55e6494f0c90, L_0x55e6494f0c90, L_0x55e6494f0c90, L_0x55e6494f0c90; | ||||
| LS_0x55e6494f0e10_0_16 .concat [ 1 1 1 1], L_0x55e6494f0c90, L_0x55e6494f0c90, L_0x55e6494f0c90, L_0x55e6494f0c90; | ||||
| LS_0x55e6494f0e10_1_0 .concat [ 4 4 4 4], LS_0x55e6494f0e10_0_0, LS_0x55e6494f0e10_0_4, LS_0x55e6494f0e10_0_8, LS_0x55e6494f0e10_0_12; | ||||
| LS_0x55e6494f0e10_1_4 .concat [ 4 0 0 0], LS_0x55e6494f0e10_0_16; | ||||
| L_0x55e6494f0e10 .concat [ 16 4 0 0], LS_0x55e6494f0e10_1_0, LS_0x55e6494f0e10_1_4; | ||||
| L_0x55e6494f11c0 .part L_0x55e6494c9210, 25, 7; | ||||
| L_0x55e6494f1350 .part L_0x55e6494c9210, 7, 5; | ||||
| L_0x55e6494f1420 .concat [ 5 7 20 0], L_0x55e6494f1350, L_0x55e6494f11c0, L_0x55e6494f0e10; | ||||
| L_0x55e6494f16c0 .part L_0x55e6494c9210, 31, 1; | ||||
| LS_0x55e6494f1760_0_0 .concat [ 1 1 1 1], L_0x55e6494f16c0, L_0x55e6494f16c0, L_0x55e6494f16c0, L_0x55e6494f16c0; | ||||
| LS_0x55e6494f1760_0_4 .concat [ 1 1 1 1], L_0x55e6494f16c0, L_0x55e6494f16c0, L_0x55e6494f16c0, L_0x55e6494f16c0; | ||||
| LS_0x55e6494f1760_0_8 .concat [ 1 1 1 1], L_0x55e6494f16c0, L_0x55e6494f16c0, L_0x55e6494f16c0, L_0x55e6494f16c0; | ||||
| LS_0x55e6494f1760_0_12 .concat [ 1 1 1 1], L_0x55e6494f16c0, L_0x55e6494f16c0, L_0x55e6494f16c0, L_0x55e6494f16c0; | ||||
| LS_0x55e6494f1760_0_16 .concat [ 1 1 1 0], L_0x55e6494f16c0, L_0x55e6494f16c0, L_0x55e6494f16c0; | ||||
| LS_0x55e6494f1760_1_0 .concat [ 4 4 4 4], LS_0x55e6494f1760_0_0, LS_0x55e6494f1760_0_4, LS_0x55e6494f1760_0_8, LS_0x55e6494f1760_0_12; | ||||
| LS_0x55e6494f1760_1_4 .concat [ 3 0 0 0], LS_0x55e6494f1760_0_16; | ||||
| L_0x55e6494f1760 .concat [ 16 3 0 0], LS_0x55e6494f1760_1_0, LS_0x55e6494f1760_1_4; | ||||
| L_0x55e6494f1c20 .part L_0x55e6494c9210, 31, 1; | ||||
| L_0x55e6494f1cc0 .part L_0x55e6494c9210, 7, 1; | ||||
| L_0x55e6494f2090 .part L_0x55e6494c9210, 25, 6; | ||||
| L_0x55e6494f2160 .part L_0x55e6494c9210, 8, 4; | ||||
| LS_0x55e6494f1fa0_0_0 .concat [ 1 4 6 1], L_0x7f63bbaa73c0, L_0x55e6494f2160, L_0x55e6494f2090, L_0x55e6494f1cc0; | ||||
| LS_0x55e6494f1fa0_0_4 .concat [ 1 19 0 0], L_0x55e6494f1c20, L_0x55e6494f1760; | ||||
| L_0x55e6494f1fa0 .concat [ 12 20 0 0], LS_0x55e6494f1fa0_0_0, LS_0x55e6494f1fa0_0_4; | ||||
| L_0x55e6494f24f0 .part L_0x55e6494c9210, 12, 20; | ||||
| L_0x55e6495026e0 .concat [ 12 20 0 0], L_0x7f63bbaa7408, L_0x55e6494f24f0; | ||||
| L_0x55e6495027d0 .part L_0x55e6494c9210, 31, 1; | ||||
| LS_0x55e6495029c0_0_0 .concat [ 1 1 1 1], L_0x55e6495027d0, L_0x55e6495027d0, L_0x55e6495027d0, L_0x55e6495027d0; | ||||
| LS_0x55e6495029c0_0_4 .concat [ 1 1 1 1], L_0x55e6495027d0, L_0x55e6495027d0, L_0x55e6495027d0, L_0x55e6495027d0; | ||||
| LS_0x55e6495029c0_0_8 .concat [ 1 1 1 0], L_0x55e6495027d0, L_0x55e6495027d0, L_0x55e6495027d0; | ||||
| L_0x55e6495029c0 .concat [ 4 4 3 0], LS_0x55e6495029c0_0_0, LS_0x55e6495029c0_0_4, LS_0x55e6495029c0_0_8; | ||||
| L_0x55e649502b20 .part L_0x55e6494c9210, 31, 1; | ||||
| L_0x55e649502d20 .part L_0x55e6494c9210, 12, 8; | ||||
| L_0x55e649502dc0 .part L_0x55e6494c9210, 20, 1; | ||||
| L_0x55e649502fd0 .part L_0x55e6494c9210, 21, 10; | ||||
| LS_0x55e649503070_0_0 .concat [ 1 10 1 8], L_0x7f63bbaa7450, L_0x55e649502fd0, L_0x55e649502dc0, L_0x55e649502d20; | ||||
| LS_0x55e649503070_0_4 .concat [ 1 11 0 0], L_0x55e649502b20, L_0x55e6495029c0; | ||||
| L_0x55e649503070 .concat [ 20 12 0 0], LS_0x55e649503070_0_0, LS_0x55e649503070_0_4; | ||||
| L_0x55e649503450 .concat [ 5 27 0 0], L_0x55e6494eec70, L_0x7f63bbaa7498; | ||||
| L_0x55e6495035c0 .cmp/ne 32, L_0x55e649503450, L_0x7f63bbaa74e0; | ||||
| L_0x55e649503890 .array/port v0x55e6494edce0, L_0x55e649503930; | ||||
| L_0x55e649503930 .concat [ 5 2 0 0], L_0x55e6494eec70, L_0x7f63bbaa7528; | ||||
| L_0x55e649503c10 .functor MUXZ 32, L_0x7f63bbaa7570, L_0x55e649503890, L_0x55e6495035c0, C4<>; | ||||
| L_0x55e649503da0 .concat [ 5 27 0 0], L_0x55e6494eed40, L_0x7f63bbaa75b8; | ||||
| L_0x55e649504090 .cmp/ne 32, L_0x55e649503da0, L_0x7f63bbaa7600; | ||||
| L_0x55e6495041d0 .array/port v0x55e6494edce0, L_0x55e649504430; | ||||
| L_0x55e649504430 .concat [ 5 2 0 0], L_0x55e6494eed40, L_0x7f63bbaa7648; | ||||
| L_0x55e649504570 .functor MUXZ 32, L_0x7f63bbaa7690, L_0x55e6495041d0, L_0x55e649504090, C4<>; | ||||
| L_0x55e6495048d0 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa76d8; | ||||
| L_0x55e6495049c0 .cmp/eq 3, L_0x55e6494eeec0, L_0x7f63bbaa7720; | ||||
| L_0x55e649504df0 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7768; | ||||
| L_0x55e6495050f0 .cmp/eq 3, L_0x55e6494eeec0, L_0x7f63bbaa77b0; | ||||
| L_0x55e649505540 .cmp/eq 7, L_0x55e6494eef60, L_0x7f63bbaa77f8; | ||||
| L_0x55e649505740 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7840; | ||||
| L_0x55e649505a30 .cmp/eq 3, L_0x55e6494eeec0, L_0x7f63bbaa7888; | ||||
| L_0x55e649505c50 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa78d0; | ||||
| L_0x55e649506160 .cmp/eq 3, L_0x55e6494eeec0, L_0x7f63bbaa7918; | ||||
| L_0x55e649506360 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7960; | ||||
| L_0x55e649506670 .cmp/eq 3, L_0x55e6494eeec0, L_0x7f63bbaa79a8; | ||||
| L_0x55e6495068f0 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa79f0; | ||||
| L_0x55e649506c10 .cmp/eq 3, L_0x55e6494eeec0, L_0x7f63bbaa7a38; | ||||
| L_0x55e649506da0 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7a80; | ||||
| L_0x55e6495070d0 .cmp/eq 3, L_0x55e6494eeec0, L_0x7f63bbaa7ac8; | ||||
| L_0x55e649507390 .cmp/eq 7, L_0x55e6494eebd0, L_0x7f63bbaa7b10; | ||||
| L_0x55e6495076d0 .cmp/eq 3, L_0x55e6494eeec0, L_0x7f63bbaa7b58; | ||||
| L_0x55e649507900 .functor MUXZ 32, L_0x55e649504570, L_0x55e6494f0b70, L_0x55e649504ce0, C4<>; | ||||
| L_0x55e649507e50 .arith/sum 32, L_0x55e649503c10, L_0x55e649507900; | ||||
| L_0x55e649508000 .functor MUXZ 32, L_0x7f63bbaa7ba0, L_0x55e649507e50, L_0x55e649507cf0, C4<>; | ||||
| L_0x55e649507db0 .cmp/eq 32, L_0x55e649503c10, L_0x55e649504570; | ||||
| L_0x55e649508520 .cmp/ne 32, L_0x55e649503c10, L_0x55e649504570; | ||||
| L_0x55e649508840 .cmp/gt.s 32, L_0x55e649508400, L_0x55e649507ef0; | ||||
| L_0x55e6495088e0 .cmp/ge.s 32, L_0x55e649507ef0, L_0x55e649508400; | ||||
| L_0x55e649508c10 .cmp/gt 32, L_0x55e649504570, L_0x55e649503c10; | ||||
| L_0x55e649508cb0 .cmp/ge 32, L_0x55e649503c10, L_0x55e649504570; | ||||
| L_0x55e649509020 .functor MUXZ 1, L_0x7f63bbaa7be8, L_0x55e649508cb0, L_0x55e6495077f0, C4<>; | ||||
| L_0x55e6495091e0 .functor MUXZ 1, L_0x55e649509020, L_0x55e649508c10, L_0x55e6495071f0, C4<>; | ||||
| L_0x55e649509620 .functor MUXZ 1, L_0x55e6495091e0, L_0x55e6495088e0, L_0x55e649505be0, C4<>; | ||||
| L_0x55e6495097b0 .functor MUXZ 1, L_0x55e649509620, L_0x55e649508840, L_0x55e649506760, C4<>; | ||||
| L_0x55e649509c00 .functor MUXZ 1, L_0x55e6495097b0, L_0x55e649508520, L_0x55e649506250, C4<>; | ||||
| L_0x55e649509d90 .functor MUXZ 1, L_0x55e649509c00, L_0x55e649507db0, L_0x55e649505ad0, C4<>; | ||||
| L_0x55e64950a1f0 .arith/sum 32, v0x55e6494edb20_0, L_0x55e6494f1fa0; | ||||
| L_0x55e64950a350 .arith/sum 32, v0x55e6494edb20_0, L_0x7f63bbaa7c30; | ||||
| L_0x55e64950a6d0 .functor MUXZ 32, L_0x55e64950a350, L_0x55e64950a1f0, L_0x55e649509d90, C4<>; | ||||
| L_0x55e64950a8b0 .concat [ 5 27 0 0], L_0x55e6494eede0, L_0x7f63bbaa7c78; | ||||
| L_0x55e64950ace0 .cmp/ne 32, L_0x55e64950a8b0, L_0x7f63bbaa7cc0; | ||||
|     .scope S_0x55e6494bcc80; | ||||
| T_0 ; | ||||
|     %vpi_call 3 12 "$readmemh", "program.hex", v0x55e6494ecc60 {0 0 0}; | ||||
|     %end; | ||||
|     .thread T_0; | ||||
|     .scope S_0x55e6494bcc80; | ||||
| T_1 ; | ||||
|     %pushi/vec4 0, 0, 32; | ||||
|     %store/vec4 v0x55e6494ecb80_0, 0, 32; | ||||
| T_1.0 ; | ||||
|     %load/vec4 v0x55e6494ecb80_0; | ||||
|     %cmpi/s 32, 0, 32; | ||||
|     %jmp/0xz T_1.1, 5; | ||||
|     %pushi/vec4 0, 0, 32; | ||||
|     %ix/getv/s 4, v0x55e6494ecb80_0; | ||||
|     %store/vec4a v0x55e6494edce0, 4, 0; | ||||
|     %load/vec4 v0x55e6494ecb80_0; | ||||
|     %addi 1, 0, 32; | ||||
|     %store/vec4 v0x55e6494ecb80_0, 0, 32; | ||||
|     %jmp T_1.0; | ||||
| T_1.1 ; | ||||
|     %end; | ||||
|     .thread T_1; | ||||
|     .scope S_0x55e6494bcc80; | ||||
| T_2 ; | ||||
|     %wait E_0x55e64948e4e0; | ||||
|     %load/vec4 v0x55e6494ee1e0_0; | ||||
|     %flag_set/vec4 8; | ||||
|     %jmp/0xz  T_2.0, 8; | ||||
|     %pushi/vec4 0, 0, 32; | ||||
|     %assign/vec4 v0x55e6494edb20_0, 0; | ||||
|     %jmp T_2.1; | ||||
| T_2.0 ; | ||||
|     %load/vec4 v0x55e6494ed880_0; | ||||
|     %assign/vec4 v0x55e6494edb20_0, 0; | ||||
| T_2.1 ; | ||||
|     %jmp T_2; | ||||
|     .thread T_2; | ||||
|     .scope S_0x55e6494bcc80; | ||||
| T_3 ; | ||||
|     %wait E_0x55e64948e4e0; | ||||
|     %load/vec4 v0x55e6494edda0_0; | ||||
|     %flag_set/vec4 9; | ||||
|     %flag_get/vec4 9; | ||||
|     %jmp/0 T_3.2, 9; | ||||
|     %load/vec4 v0x55e6494ee1e0_0; | ||||
|     %nor/r; | ||||
|     %and; | ||||
| T_3.2; | ||||
|     %flag_set/vec4 8; | ||||
|     %jmp/0xz  T_3.0, 8; | ||||
|     %load/vec4 v0x55e6494ee460_0; | ||||
|     %load/vec4 v0x55e6494edc00_0; | ||||
|     %pad/u 7; | ||||
|     %ix/vec4 3; | ||||
|     %ix/load 4, 0, 0; Constant delay | ||||
|     %assign/vec4/a/d v0x55e6494edce0, 0, 4; | ||||
|     %vpi_call 3 107 "$display", "RF Write: x%d = %h", v0x55e6494edc00_0, v0x55e6494ee460_0 {0 0 0}; | ||||
| T_3.0 ; | ||||
|     %jmp T_3; | ||||
|     .thread T_3; | ||||
|     .scope S_0x55e6494bcc80; | ||||
| T_4 ; | ||||
|     %wait E_0x55e64948e4e0; | ||||
|     %load/vec4 v0x55e6494ee1e0_0; | ||||
|     %nor/r; | ||||
|     %flag_set/vec4 8; | ||||
|     %jmp/0xz  T_4.0, 8; | ||||
|     %vpi_call 3 114 "$display", "PC=%08h, Instr=%08h, rs1=x%d(%h), rs2=x%d(%h), rd=x%d, branch_taken=%b", v0x55e6494edb20_0, v0x55e6494ecd20_0, v0x55e6494ede60_0, v0x55e6494edf40_0, v0x55e6494ee020_0, v0x55e6494ee100_0, v0x55e6494edc00_0, v0x55e6494ec760_0 {0 0 0}; | ||||
|     %load/vec4 v0x55e6494edb20_0; | ||||
|     %parti/s 2, 0, 2; | ||||
|     %cmpi/ne 0, 0, 2; | ||||
|     %jmp/0xz  T_4.2, 4; | ||||
|     %vpi_call 3 117 "$display", "WARNING: PC not word-aligned: %h", v0x55e6494edb20_0 {0 0 0}; | ||||
| T_4.2 ; | ||||
| T_4.0 ; | ||||
|     %jmp T_4; | ||||
|     .thread T_4; | ||||
|     .scope S_0x55e64947d800; | ||||
| T_5 ; | ||||
|     %delay 5, 0; | ||||
|     %load/vec4 v0x55e6494ee5e0_0; | ||||
|     %inv; | ||||
|     %store/vec4 v0x55e6494ee5e0_0, 0, 1; | ||||
|     %jmp T_5; | ||||
|     .thread T_5; | ||||
|     .scope S_0x55e64947d800; | ||||
| T_6 ; | ||||
|     %wait E_0x55e64948e4e0; | ||||
|     %load/vec4 v0x55e6494ee880_0; | ||||
|     %nor/r; | ||||
|     %flag_set/vec4 8; | ||||
|     %jmp/0xz  T_6.0, 8; | ||||
|     %vpi_call 2 23 "$display", "Time=%0t, PC=%h, Next_PC=%h, Instr=%h", $time, v0x55e6494ee7e0_0, v0x55e6494ee740_0, v0x55e6494ee6a0_0 {0 0 0}; | ||||
|     %load/vec4 v0x55e6494ee7e0_0; | ||||
|     %cmpi/u 256, 0, 32; | ||||
|     %flag_inv 5; GE is !LT | ||||
|     %jmp/0xz  T_6.2, 5; | ||||
|     %vpi_call 2 25 "$display", "Simulation completed!" {0 0 0}; | ||||
|     %vpi_call 2 26 "$finish" {0 0 0}; | ||||
| T_6.2 ; | ||||
| T_6.0 ; | ||||
|     %jmp T_6; | ||||
|     .thread T_6; | ||||
|     .scope S_0x55e64947d800; | ||||
| T_7 ; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v0x55e6494ee5e0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v0x55e6494ee880_0, 0, 1; | ||||
|     %delay 15, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v0x55e6494ee880_0, 0, 1; | ||||
|     %delay 500, 0; | ||||
|     %vpi_call 2 37 "$display", "Test completed" {0 0 0}; | ||||
|     %vpi_call 2 38 "$finish" {0 0 0}; | ||||
|     %end; | ||||
|     .thread T_7; | ||||
| # 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