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