1*e3da8badSTang 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 4*e3da8badSTang Haojin* Copyright (c) 2020-2021 Peng Cheng Laboratory 5*e3da8badSTang Haojin* 6*e3da8badSTang Haojin* XiangShan is licensed under Mulan PSL v2. 7*e3da8badSTang Haojin* You can use this software according to the terms and conditions of the Mulan PSL v2. 8*e3da8badSTang Haojin* You may obtain a copy of Mulan PSL v2 at: 9*e3da8badSTang Haojin* http://license.coscl.org.cn/MulanPSL2 10*e3da8badSTang Haojin* 11*e3da8badSTang Haojin* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 12*e3da8badSTang Haojin* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 13*e3da8badSTang Haojin* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 14*e3da8badSTang Haojin* 15*e3da8badSTang Haojin* See the Mulan PSL v2 for more details. 16*e3da8badSTang Haojin***************************************************************************************/ 17*e3da8badSTang Haojin 18*e3da8badSTang Haojinpackage xiangshan.transforms 19*e3da8badSTang Haojin 20*e3da8badSTang Haojinclass PrintModuleName extends firrtl.options.Phase { 21*e3da8badSTang Haojin 22*e3da8badSTang Haojin override def invalidates(a: firrtl.options.Phase) = false 23*e3da8badSTang Haojin 24*e3da8badSTang Haojin override def transform(annotations: firrtl.AnnotationSeq): firrtl.AnnotationSeq = { 25*e3da8badSTang Haojin 26*e3da8badSTang Haojin import xiangshan.transforms.Helpers._ 27*e3da8badSTang Haojin 28*e3da8badSTang Haojin val (Seq(circuitAnno: firrtl.stage.FirrtlCircuitAnnotation), otherAnnos) = annotations.partition { 29*e3da8badSTang Haojin case _: firrtl.stage.FirrtlCircuitAnnotation => true 30*e3da8badSTang Haojin case _ => false 31*e3da8badSTang Haojin } 32*e3da8badSTang Haojin val c = circuitAnno.circuit 33*e3da8badSTang Haojin 34*e3da8badSTang Haojin def onStmt(s: firrtl.ir.Statement): firrtl.ir.Statement = s match { 35*e3da8badSTang Haojin case firrtl.ir.Print(info, firrtl.ir.StringLit(string), args, clk, en) => 36*e3da8badSTang Haojin firrtl.ir.Print(info, firrtl.ir.StringLit(string.replace(utility.XSLog.MagicStr, "%m")), args, clk, en) 37*e3da8badSTang Haojin case other: firrtl.ir.Statement => 38*e3da8badSTang Haojin other.mapStmt(onStmt) 39*e3da8badSTang Haojin } 40*e3da8badSTang Haojin 41*e3da8badSTang Haojin firrtl.stage.FirrtlCircuitAnnotation(c.mapModule(m => m.mapStmt(onStmt))) +: otherAnnos 42*e3da8badSTang Haojin } 43*e3da8badSTang Haojin} 44