DebugMem.scala (51e45dbbf87325e45ff2af6ca86ed6c7eed04464) DebugMem.scala (e3da8bad334fc71ba0d72f0607e2e93245ddaece)
1/***************************************************************************************
1/***************************************************************************************
2* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
2* Copyright (c) 2024 Beijing Institute of Open Source Chip (BOSC)
3* Copyright (c) 2020-2024 Institute of Computing Technology, Chinese Academy of Sciences
3* Copyright (c) 2020-2021 Peng Cheng Laboratory
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
9*
10* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,

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

20
21object DebugMem {
22 def apply[T <: Data](size: Int, data: T): DebugMem[T] = {
23 new DebugMem(size, data)
24 }
25}
26
27class DebugMem[T <: Data](size: Int, data: T) extends IndexedSeq[T] {
4* Copyright (c) 2020-2021 Peng Cheng Laboratory
5*
6* XiangShan is licensed under Mulan PSL v2.
7* You can use this software according to the terms and conditions of the Mulan PSL v2.
8* You may obtain a copy of Mulan PSL v2 at:
9* http://license.coscl.org.cn/MulanPSL2
10*
11* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,

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

21
22object DebugMem {
23 def apply[T <: Data](size: Int, data: T): DebugMem[T] = {
24 new DebugMem(size, data)
25 }
26}
27
28class DebugMem[T <: Data](size: Int, data: T) extends IndexedSeq[T] {
28 private var debugMem: Option[Mem[T]] = None
29 private var debugReg: Option[Vec[T]] = None
29 private val debugReg: Vec[T] = Reg(Vec(size, data))
30
30
31 BuildInfo.version match {
32 case "3.6.0" => debugMem = Some(Mem(size, data))
33 case _ => debugReg = Some(Reg(Vec(size, data)))
34 }
31 def apply(addr: Int): T = debugReg(addr)
35
32
36 def apply(addr: Int): T = BuildInfo.version match {
37 case "3.6.0" => debugMem.get(addr)
38 case _ => debugReg.get(addr)
39 }
33 def apply(addr: UInt): T = debugReg(addr)
40
34
41 def apply(addr: UInt): T = BuildInfo.version match {
42 case "3.6.0" => debugMem.get(addr)
43 case _ => debugReg.get(addr)
44 }
45
46 def length: Int = BuildInfo.version match {
47 case "3.6.0" => debugMem.get.length.intValue
48 case _ => debugReg.get.length
49 }
35 def length: Int = debugReg.length
50}
36}