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} |