diff --git a/src/main/scala/xiangshan/utils/LogUtils.scala b/src/main/scala/xiangshan/utils/LogUtils.scala index 97b78f2d272c68b5f8abe6358836ac832312ee9b..40be797aaf2d584e4497198bf4946fd4f56777bd 100644 --- a/src/main/scala/xiangshan/utils/LogUtils.scala +++ b/src/main/scala/xiangshan/utils/LogUtils.scala @@ -28,15 +28,18 @@ object XSLog extends HasXSParameter{ } } -sealed abstract class LogHelper(val logLevel: XSLogLevel) { +sealed abstract class LogHelper(val logLevel: XSLogLevel) extends HasXSParameter { def apply(cond: Bool, fmt: String, data: Bits*)(implicit m: Module): Any = apply(cond, Printable.pack(fmt, data:_*)) - def apply(cond: Bool, pable: Printable)(implicit m: Module): Any = XSLog(logLevel)(cond, pable) def apply(fmt: String, data: Bits*)(implicit m: Module): Any = apply(true.B, Printable.pack(fmt, data:_*)) def apply(pable: Printable)(implicit m: Module): Any = XSLog(logLevel)(true.B, pable) + + // Do not use that unless you have valid reasons + def apply(cond: Bool = true.B)(body: => Unit): Any = + if (logLevel >= LogLevel) { when (cond) { body } } } object XSDebug extends LogHelper(XSLogLevel.DEBUG)