From 917b648a4a578211d0987b1a42e2978d14fbc608 Mon Sep 17 00:00:00 2001 From: Kai Berszin Date: Fri, 5 Dec 2025 14:11:50 +0100 Subject: [PATCH] sw: Enable cluster IRQ for clint --- .../spatz_cluster/src/generated/bootrom.sv | 4 +- .../src/generated/spatz_cluster_wrapper.sv | 5 +- hw/system/spatz_cluster/test/bootrom.S | 5 ++ hw/system/spatz_cluster/test/bootrom.bin | Bin 276 -> 292 bytes hw/system/spatz_cluster/test/bootrom.dump | 64 ++++++++++-------- hw/system/spatz_cluster/test/bootrom.elf | Bin 5320 -> 5336 bytes 6 files changed, 45 insertions(+), 33 deletions(-) diff --git a/hw/system/spatz_cluster/src/generated/bootrom.sv b/hw/system/spatz_cluster/src/generated/bootrom.sv index e1bbfa02..ed7d8331 100644 --- a/hw/system/spatz_cluster/src/generated/bootrom.sv +++ b/hw/system/spatz_cluster/src/generated/bootrom.sv @@ -20,8 +20,8 @@ module bootrom #( localparam int AddrBits = RomSize > 1 ? $clog2(RomSize) : 1; const logic [RomSize-1:0][DataWidth-1:0] mem = { - 512'h000000000000000000000000000200000000000000100000000000000000000000000000000000020000000000001000ffdff06f10500073000380670003a383, - 512'h000383930583839301c383b30205ae030185a3831050007330461073008666133040267330431073800303130000133704858593000005973053107304c30313, + 512'h0000000000100000000000000000000000000000000000020000000000001000ffdff06f10500073000380670003a383000383930583839301c383b30205ae03, + 512'h0185a383105000733046107300666633000803373040267330461073008666133040267330431073800303130000133705858593000005973053107305c30313, 512'h0000031700000f9300000f1300000e9300000e1300000d9300000d1300000c9300000c1300000b9300000b1300000a9300000a13000009930000091300000893, 512'h00000813000007930000071300000693000006130000059300000513000004930000041300000393000003130000029300000213000001930000011300000093 }; diff --git a/hw/system/spatz_cluster/src/generated/spatz_cluster_wrapper.sv b/hw/system/spatz_cluster/src/generated/spatz_cluster_wrapper.sv index dc4519e7..f9140f44 100644 --- a/hw/system/spatz_cluster/src/generated/spatz_cluster_wrapper.sv +++ b/hw/system/spatz_cluster/src/generated/spatz_cluster_wrapper.sv @@ -58,7 +58,7 @@ package spatz_cluster_pkg; localparam int unsigned TCDMStartAddr = 32'h100000; localparam int unsigned TCDMSize = 32'h20000; - + localparam logic AddrMisalign = 1'b0; // 0-aligned, 1-misalign localparam int unsigned PeriStartAddr = TCDMStartAddr + TCDMSize; localparam int unsigned BootAddr = 32'h1000; @@ -243,6 +243,7 @@ module spatz_cluster_wrapper localparam int unsigned NumSpatzOutstandingLoads [NumCores] = '{4, 4}; localparam int unsigned NumSpatzFPUs [NumCores] = '{default: 4}; localparam int unsigned NumSpatzIPUs [NumCores] = '{default: 1}; + localparam int unsigned NumSpatzTCDMPorts [NumCores] = '{default: 4}; typedef logic [IwcAxiIdOutWidth-1:0] axi_id_out_iwc_t; @@ -302,6 +303,8 @@ module spatz_cluster_wrapper .NumSpatzOutstandingLoads (NumSpatzOutstandingLoads), .NumSpatzFPUs (NumSpatzFPUs), .NumSpatzIPUs (NumSpatzIPUs), + .NumSpatzTCDMPorts (NumSpatzTCDMPorts), + .AddrMisalign (AddrMisalign), .axi_in_req_t (axi_in_req_t), .axi_in_resp_t (axi_in_resp_t), .axi_out_req_t (spatz_axi_iwc_out_req_t), diff --git a/hw/system/spatz_cluster/test/bootrom.S b/hw/system/spatz_cluster/test/bootrom.S index 1ec3ded1..a1618ec9 100644 --- a/hw/system/spatz_cluster/test/bootrom.S +++ b/hw/system/spatz_cluster/test/bootrom.S @@ -53,6 +53,11 @@ _start: csrr a2, mie ori a2, a2, 0x8 csrw mie, a2 + // Activate MCIP + csrr a2, mie + li t1, 0x80000 + or a2, a2, t1 + csrw mie, a2 // Wait for the wakeup interrupt wfi diff --git a/hw/system/spatz_cluster/test/bootrom.bin b/hw/system/spatz_cluster/test/bootrom.bin index b81b5f92db61a87d5cf0d5d4f16cb344bafdb77c..72ffb885ae6ec8b7bb9b52d5d33507f7af2e3741 100755 GIT binary patch delta 42 ycmbQjw1jCwGcRkgK(N7dRtAR2t*xvRCrEOsIT)BTb1)dErA=I%%W^}2fdK&f#0yRU delta 31 ncmZ3&G=*tGGcQZAK(N7dRtAR2t*tB*CrD1*na*-TfPn!3m>vmh diff --git a/hw/system/spatz_cluster/test/bootrom.dump b/hw/system/spatz_cluster/test/bootrom.dump index 0a6e98b1..ff4e62dc 100644 --- a/hw/system/spatz_cluster/test/bootrom.dump +++ b/hw/system/spatz_cluster/test/bootrom.dump @@ -37,54 +37,58 @@ Disassembly of section .text: 1074: 00000f13 li t5,0 1078: 00000f93 li t6,0 107c: 00000317 auipc t1,0x0 - 1080: 04c30313 addi t1,t1,76 # 10c8 + 1080: 05c30313 addi t1,t1,92 # 10d8 1084: 30531073 csrw mtvec,t1 1088: 00000597 auipc a1,0x0 - 108c: 04858593 addi a1,a1,72 # 10d0 + 108c: 05858593 addi a1,a1,88 # 10e0 1090: 00001337 lui t1,0x1 1094: 80030313 addi t1,t1,-2048 # 800 <_start-0x800> 1098: 30431073 csrw 0x304,t1 109c: 30402673 csrr a2,0x304 10a0: 00866613 ori a2,a2,8 10a4: 30461073 csrw 0x304,a2 - 10a8: 10500073 wfi - 10ac: 0185a383 lw t2,24(a1) - 10b0: 0205ae03 lw t3,32(a1) - 10b4: 01c383b3 add t2,t2,t3 - 10b8: 05838393 addi t2,t2,88 - 10bc: 00038393 mv t2,t2 - 10c0: 0003a383 lw t2,0(t2) - 10c4: 00038067 jr t2 + 10a8: 30402673 csrr a2,0x304 + 10ac: 00080337 lui t1,0x80 + 10b0: 00666633 or a2,a2,t1 + 10b4: 30461073 csrw 0x304,a2 + 10b8: 10500073 wfi + 10bc: 0185a383 lw t2,24(a1) + 10c0: 0205ae03 lw t3,32(a1) + 10c4: 01c383b3 add t2,t2,t3 + 10c8: 05838393 addi t2,t2,88 + 10cc: 00038393 mv t2,t2 + 10d0: 0003a383 lw t2,0(t2) + 10d4: 00038067 jr t2 -000010c8 : - 10c8: 10500073 wfi - 10cc: ffdff06f j 10c8 +000010d8 : + 10d8: 10500073 wfi + 10dc: ffdff06f j 10d8 Disassembly of section .rodata: -000010d0 : - 10d0: 1000 addi s0,sp,32 - 10d2: 0000 unimp - 10d4: 0000 unimp - 10d6: 0000 unimp - 10d8: 0002 0x2 - ... - 10ea: 0010 addi a2,sp,0 - 10ec: 0000 unimp - 10ee: 0000 unimp - 10f0: 0000 unimp - 10f2: 0002 0x2 +000010e0 : + 10e0: 1000 addi s0,sp,32 + 10e2: 0000 unimp + 10e4: 0000 unimp + 10e6: 0000 unimp + 10e8: 0002 0x2 ... + 10fa: 0010 addi a2,sp,0 + 10fc: 0000 unimp + 10fe: 0000 unimp 1100: 0000 unimp - 1102: 8000 0x8000 + 1102: 0002 0x2 + ... + 1110: 0000 unimp + 1112: 8000 0x8000 ... - 110c: 0001 nop + 111c: 0001 nop ... Disassembly of section .boot_section: -00001110 : - 1110: 10c8 addi a0,sp,100 +00001120 : + 1120: 10d8 addi a4,sp,100 ... Disassembly of section .Pulp_Chip.Info: @@ -101,7 +105,7 @@ Disassembly of section .Pulp_Chip.Info: 10: 495f 666e 006f 0x6f666e495f 16: 70696863 bltu s2,t1,726 <_start-0x8da> 1a: 6e3d lui t3,0xf - 1c: 20656e6f jal t3,56222 + 1c: 20656e6f jal t3,56222 20: 3d757063 bleu s7,a0,3e0 <_start-0xc20> 24: 6f6e flw ft10,216(sp) 26: 656e flw fa0,216(sp) diff --git a/hw/system/spatz_cluster/test/bootrom.elf b/hw/system/spatz_cluster/test/bootrom.elf index 221918581a230b75be0611e500dc8cb6f2c90674..dbe9525b000ac08f6e50eac0d585fe524091c983 100755 GIT binary patch delta 178 zcmX@1c|&u80%O5MMP*hMMg|6zjhKfm@Fui&v;>SqmVM2bEQXkM#bh;LQIT6 zk+s6|tROQkOui_r%qk!VQu|X_ol#`6qKG0K2It A%K!iX