xref: /XiangShan/src/main/scala/utils/DebugMem.scala (revision e3da8bad334fc71ba0d72f0607e2e93245ddaece)
151e45dbbSTang Haojin/***************************************************************************************
2*e3da8badSTang Haojin* Copyright (c) 2024 Beijing Institute of Open Source Chip (BOSC)
3*e3da8badSTang Haojin* Copyright (c) 2020-2024 Institute of Computing Technology, Chinese Academy of Sciences
451e45dbbSTang Haojin* Copyright (c) 2020-2021 Peng Cheng Laboratory
551e45dbbSTang Haojin*
651e45dbbSTang Haojin* XiangShan is licensed under Mulan PSL v2.
751e45dbbSTang Haojin* You can use this software according to the terms and conditions of the Mulan PSL v2.
851e45dbbSTang Haojin* You may obtain a copy of Mulan PSL v2 at:
951e45dbbSTang Haojin*          http://license.coscl.org.cn/MulanPSL2
1051e45dbbSTang Haojin*
1151e45dbbSTang Haojin* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
1251e45dbbSTang Haojin* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
1351e45dbbSTang Haojin* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
1451e45dbbSTang Haojin*
1551e45dbbSTang Haojin* See the Mulan PSL v2 for more details.
1651e45dbbSTang Haojin***************************************************************************************/
1751e45dbbSTang Haojin
1851e45dbbSTang Haojinpackage utils
1951e45dbbSTang Haojin
2051e45dbbSTang Haojinimport chisel3._
2151e45dbbSTang Haojin
2251e45dbbSTang Haojinobject DebugMem {
2351e45dbbSTang Haojin  def apply[T <: Data](size: Int, data: T): DebugMem[T] = {
2451e45dbbSTang Haojin    new DebugMem(size, data)
2551e45dbbSTang Haojin  }
2651e45dbbSTang Haojin}
2751e45dbbSTang Haojin
2851e45dbbSTang Haojinclass DebugMem[T <: Data](size: Int, data: T) extends IndexedSeq[T] {
29*e3da8badSTang Haojin  private val debugReg: Vec[T] = Reg(Vec(size, data))
3051e45dbbSTang Haojin
31*e3da8badSTang Haojin  def apply(addr: Int): T = debugReg(addr)
3251e45dbbSTang Haojin
33*e3da8badSTang Haojin  def apply(addr: UInt): T = debugReg(addr)
3451e45dbbSTang Haojin
35*e3da8badSTang Haojin  def length: Int = debugReg.length
3651e45dbbSTang Haojin}
37