1
1
package system
2
2
3
- import noop ._
3
+ import noop .{ Cache , CacheConfig }
4
4
import bus .axi4 .{AXI4 , AXI4Lite }
5
5
import bus .simplebus ._
6
6
import device .AXI4Timer
7
-
8
7
import chisel3 ._
9
8
import chisel3 .util ._
10
9
import chisel3 .util .experimental .BoringUtils
10
+ import xiangshan .{XSConfig , XSCore }
11
11
12
12
trait HasSoCParameter {
13
13
val EnableILA = true
14
14
val HasL2cache = true
15
15
val HasPrefetch = true
16
16
}
17
17
18
- class ILABundle extends Bundle {
19
- val WBUpc = UInt (32 .W )
20
- val WBUvalid = UInt (1 .W )
21
- val WBUrfWen = UInt (1 .W )
22
- val WBUrfDest = UInt (5 .W )
23
- val WBUrfData = UInt (64 .W )
24
- val InstrCnt = UInt (64 .W )
25
- }
18
+ class ILABundle extends Bundle {}
26
19
27
- class NOOPSoC (implicit val p : NOOPConfig ) extends Module with HasSoCParameter {
20
+ class XSSoc (implicit val p : XSConfig ) extends Module with HasSoCParameter {
28
21
val io = IO (new Bundle {
29
22
val mem = new AXI4
30
- val mmio = ( if (p.FPGAPlatform ) { new AXI4Lite } else { new SimpleBusUC })
23
+ val mmio = if (p.FPGAPlatform ) { new AXI4Lite } else { new SimpleBusUC }
31
24
val frontend = Flipped (new AXI4 )
32
25
val meip = Input (Bool ())
33
26
val ila = if (p.FPGAPlatform && EnableILA ) Some (Output (new ILABundle )) else None
34
27
})
35
28
36
- val noop = Module (new NOOP )
29
+ val xsCore = Module (new XSCore )
37
30
val cohMg = Module (new CoherenceManager )
38
31
val xbar = Module (new SimpleBusCrossbarNto1 (2 ))
39
- cohMg.io.in <> noop .io.imem.mem
40
- noop .io.dmem.coh <> cohMg.io.out.coh
32
+ cohMg.io.in <> xsCore .io.imem.mem
33
+ xsCore .io.dmem.coh <> cohMg.io.out.coh
41
34
xbar.io.in(0 ) <> cohMg.io.out.mem
42
- xbar.io.in(1 ) <> noop .io.dmem.mem
35
+ xbar.io.in(1 ) <> xsCore .io.dmem.mem
43
36
44
37
val axi2sb = Module (new AXI42SimpleBusConverter ())
45
38
axi2sb.io.in <> io.frontend
46
- noop .io.frontend <> axi2sb.io.out
39
+ xsCore .io.frontend <> axi2sb.io.out
47
40
48
41
if (HasL2cache ) {
49
42
val l2cacheOut = Wire (new SimpleBusC )
@@ -65,17 +58,16 @@ class NOOPSoC(implicit val p: NOOPConfig) extends Module with HasSoCParameter {
65
58
} else {
66
59
io.mem <> xbar.io.out.toAXI4()
67
60
}
68
-
69
- noop.io.imem.coh.resp.ready := true .B
70
- noop.io.imem.coh.req.valid := false .B
71
- noop.io.imem.coh.req.bits := DontCare
61
+ xsCore.io.imem.coh.resp.ready := true .B
62
+ xsCore.io.imem.coh.req.valid := false .B
63
+ xsCore.io.imem.coh.req.bits := DontCare
72
64
73
65
val addrSpace = List (
74
66
(0x40000000L, 0x08000000L), // external devices
75
67
(0x48000000L, 0x00010000L) // CLINT
76
68
)
77
69
val mmioXbar = Module (new SimpleBusCrossbar1toN (addrSpace))
78
- mmioXbar.io.in <> noop .io.mmio
70
+ mmioXbar.io.in <> xsCore .io.mmio
79
71
80
72
val extDev = mmioXbar.io.out(0 )
81
73
val clint = Module (new AXI4Timer (sim = ! p.FPGAPlatform ))
@@ -87,22 +79,4 @@ class NOOPSoC(implicit val p: NOOPConfig) extends Module with HasSoCParameter {
87
79
val meipSync = RegNext (RegNext (io.meip))
88
80
BoringUtils .addSource(mtipSync, " mtip" )
89
81
BoringUtils .addSource(meipSync, " meip" )
90
-
91
- // ILA
92
- if (p.FPGAPlatform ) {
93
- def BoringUtilsConnect (sink : UInt , id : String ) {
94
- val temp = WireInit (0 .U (64 .W ))
95
- BoringUtils .addSink(temp, id)
96
- sink := temp
97
- }
98
-
99
- val dummy = WireInit (0 .U .asTypeOf(new ILABundle ))
100
- val ila = io.ila.getOrElse(dummy)
101
- BoringUtilsConnect (ila.WBUpc ," ilaWBUpc" )
102
- BoringUtilsConnect (ila.WBUvalid ," ilaWBUvalid" )
103
- BoringUtilsConnect (ila.WBUrfWen ," ilaWBUrfWen" )
104
- BoringUtilsConnect (ila.WBUrfDest ," ilaWBUrfDest" )
105
- BoringUtilsConnect (ila.WBUrfData ," ilaWBUrfData" )
106
- BoringUtilsConnect (ila.InstrCnt ," ilaInstrCnt" )
107
- }
108
- }
82
+ }
0 commit comments