XSTileWrap.scala (42cb64260d34f2b47839d26c7af8b31eef9031c9) XSTileWrap.scala (8cfc24b28454f1915c339ce79485711f8e438f59)
1/***************************************************************************************
2* Copyright (c) 2024 Beijing Institute of Open Source Chip (BOSC)
3* Copyright (c) 2024 Institute of Computing Technology, Chinese Academy of Sciences
4*
5* XiangShan is licensed under Mulan PSL v2.
6* You can use this software according to the terms and conditions of the Mulan PSL v2.
7* You may obtain a copy of Mulan PSL v2 at:
8* http://license.coscl.org.cn/MulanPSL2

--- 10 unchanged lines hidden (view full) ---

19import chisel3._
20import chisel3.util._
21import org.chipsalliance.cde.config._
22import freechips.rocketchip.diplomacy._
23import freechips.rocketchip.interrupts._
24import freechips.rocketchip.tilelink._
25import freechips.rocketchip.util._
26import system.HasSoCParameter
1/***************************************************************************************
2* Copyright (c) 2024 Beijing Institute of Open Source Chip (BOSC)
3* Copyright (c) 2024 Institute of Computing Technology, Chinese Academy of Sciences
4*
5* XiangShan is licensed under Mulan PSL v2.
6* You can use this software according to the terms and conditions of the Mulan PSL v2.
7* You may obtain a copy of Mulan PSL v2 at:
8* http://license.coscl.org.cn/MulanPSL2

--- 10 unchanged lines hidden (view full) ---

19import chisel3._
20import chisel3.util._
21import org.chipsalliance.cde.config._
22import freechips.rocketchip.diplomacy._
23import freechips.rocketchip.interrupts._
24import freechips.rocketchip.tilelink._
25import freechips.rocketchip.util._
26import system.HasSoCParameter
27import device.{IMSICAsync, MsiInfoBundle}
27import device.IMSICAsync
28import coupledL2.tl2chi.{AsyncPortIO, CHIAsyncBridgeSource, PortIO}
29import utility.sram.{SramBroadcastBundle, SramMbistBundle}
30import utility.{DFTResetSignals, IntBuffer, ResetGen}
31import xiangshan.backend.trace.TraceCoreInterface
32
33// This module is used for XSNoCTop for async time domain and divide different
34// voltage domain. Everything in this module should be in the core clock domain
35// and higher voltage domain.

--- 29 unchanged lines hidden (view full) ---

65
66 class XSTileWrapImp(wrapper: LazyModule) extends LazyRawModuleImp(wrapper) {
67 val clock = IO(Input(Clock()))
68 val reset = IO(Input(AsyncReset()))
69 val noc_reset = EnableCHIAsyncBridge.map(_ => IO(Input(AsyncReset())))
70 val soc_reset = IO(Input(AsyncReset()))
71 val io = IO(new Bundle {
72 val hartId = Input(UInt(hartIdLen.W))
28import coupledL2.tl2chi.{AsyncPortIO, CHIAsyncBridgeSource, PortIO}
29import utility.sram.{SramBroadcastBundle, SramMbistBundle}
30import utility.{DFTResetSignals, IntBuffer, ResetGen}
31import xiangshan.backend.trace.TraceCoreInterface
32
33// This module is used for XSNoCTop for async time domain and divide different
34// voltage domain. Everything in this module should be in the core clock domain
35// and higher voltage domain.

--- 29 unchanged lines hidden (view full) ---

65
66 class XSTileWrapImp(wrapper: LazyModule) extends LazyRawModuleImp(wrapper) {
67 val clock = IO(Input(Clock()))
68 val reset = IO(Input(AsyncReset()))
69 val noc_reset = EnableCHIAsyncBridge.map(_ => IO(Input(AsyncReset())))
70 val soc_reset = IO(Input(AsyncReset()))
71 val io = IO(new Bundle {
72 val hartId = Input(UInt(hartIdLen.W))
73 val msiInfo = Input(ValidIO(new MsiInfoBundle))
73 val msiInfo = Input(ValidIO(UInt(soc.IMSICParams.MSI_INFO_WIDTH.W)))
74 val msiAck = Output(Bool())
74 val reset_vector = Input(UInt(PAddrBits.W))
75 val cpu_halt = Output(Bool())
76 val cpu_crtical_error = Output(Bool())
77 val hartResetReq = Input(Bool())
78 val hartIsInReset = Output(Bool())
79 val traceCoreInterface = new TraceCoreInterface
80 val debugTopDown = new Bundle {
81 val robHeadPaddr = Valid(UInt(PAddrBits.W))

--- 33 unchanged lines hidden (view full) ---

115 imsicAsync.i.msiInfo := io.msiInfo
116
117 tile.module.io.hartId := io.hartId
118 tile.module.io.msiInfo := imsicAsync.o.msiInfo
119 tile.module.io.reset_vector := io.reset_vector
120 tile.module.io.sramTest := io.sramTest
121 io.cpu_halt := tile.module.io.cpu_halt
122 io.cpu_crtical_error := tile.module.io.cpu_crtical_error
75 val reset_vector = Input(UInt(PAddrBits.W))
76 val cpu_halt = Output(Bool())
77 val cpu_crtical_error = Output(Bool())
78 val hartResetReq = Input(Bool())
79 val hartIsInReset = Output(Bool())
80 val traceCoreInterface = new TraceCoreInterface
81 val debugTopDown = new Bundle {
82 val robHeadPaddr = Valid(UInt(PAddrBits.W))

--- 33 unchanged lines hidden (view full) ---

116 imsicAsync.i.msiInfo := io.msiInfo
117
118 tile.module.io.hartId := io.hartId
119 tile.module.io.msiInfo := imsicAsync.o.msiInfo
120 tile.module.io.reset_vector := io.reset_vector
121 tile.module.io.sramTest := io.sramTest
122 io.cpu_halt := tile.module.io.cpu_halt
123 io.cpu_crtical_error := tile.module.io.cpu_crtical_error
124 io.msiAck := tile.module.io.msiAck
123 io.hartIsInReset := tile.module.io.hartIsInReset
124 io.traceCoreInterface <> tile.module.io.traceCoreInterface
125 io.debugTopDown <> tile.module.io.debugTopDown
126 tile.module.io.l3Miss := io.l3Miss
127 tile.module.io.nodeID.foreach(_ := io.nodeID.get)
128 io.l2_flush_en.foreach { _ := tile.module.io.l2_flush_en.getOrElse(false.B) }
129 io.l2_flush_done.foreach { _ := tile.module.io.l2_flush_done.getOrElse(false.B) }
130 io.pwrdown_ack_n.foreach { _ := true.B }

--- 41 unchanged lines hidden ---
125 io.hartIsInReset := tile.module.io.hartIsInReset
126 io.traceCoreInterface <> tile.module.io.traceCoreInterface
127 io.debugTopDown <> tile.module.io.debugTopDown
128 tile.module.io.l3Miss := io.l3Miss
129 tile.module.io.nodeID.foreach(_ := io.nodeID.get)
130 io.l2_flush_en.foreach { _ := tile.module.io.l2_flush_en.getOrElse(false.B) }
131 io.l2_flush_done.foreach { _ := tile.module.io.l2_flush_done.getOrElse(false.B) }
132 io.pwrdown_ack_n.foreach { _ := true.B }

--- 41 unchanged lines hidden ---