diff options
| author | Aditya Naik | 2024-08-06 05:35:30 -0700 |
|---|---|---|
| committer | Aditya Naik | 2024-08-06 05:35:30 -0700 |
| commit | 51864db8176662d134e1a260f92eafc83f9933d8 (patch) | |
| tree | a92572eb64033060304df5ab9ebec0047e97dbbb /core/src/main/scala/chisel3/internal | |
| parent | cf31062758d4d9722ac30f89fdfe7cc7c1d8cc74 (diff) | |
Update ChiselEnum.scala
And more changes
Diffstat (limited to 'core/src/main/scala/chisel3/internal')
4 files changed, 37 insertions, 42 deletions
diff --git a/core/src/main/scala/chisel3/internal/Binding.scala b/core/src/main/scala/chisel3/internal/Binding.scala index 3a12afde..db85b355 100644 --- a/core/src/main/scala/chisel3/internal/Binding.scala +++ b/core/src/main/scala/chisel3/internal/Binding.scala @@ -10,6 +10,7 @@ import scala.collection.immutable.VectorMap /** Requires that a node is hardware ("bound") */ +// remove/move this to chisel3.experimental once references are fixed object requireIsHardware { def apply(node: Data, msg: String = ""): Unit = { node._parent match { // Compatibility layer hack diff --git a/core/src/main/scala/chisel3/internal/Error.scala b/core/src/main/scala/chisel3/internal/Error.scala index b7c4be35..730c9510 100644 --- a/core/src/main/scala/chisel3/internal/Error.scala +++ b/core/src/main/scala/chisel3/internal/Error.scala @@ -324,10 +324,6 @@ private class Error(msg: => String, line: Option[StackTraceElement]) extends Log def format: String = tag("error", Console.RED) } -class Warning(msg: => String, line: Option[StackTraceElement]) extends LogEntry(msg, line) { - def format: String = tag("warn", Console.YELLOW) -} - private class Info(msg: => String, line: Option[StackTraceElement]) extends LogEntry(msg, line) { def format: String = tag("info", Console.MAGENTA) } diff --git a/core/src/main/scala/chisel3/internal/Warning.scala b/core/src/main/scala/chisel3/internal/Warning.scala new file mode 100644 index 00000000..5ac506c9 --- /dev/null +++ b/core/src/main/scala/chisel3/internal/Warning.scala @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: Apache-2.0 + +package chisel3.internal + +/////////////////////////////////////////////////// +// Never remove IDs and only ever add to the end // +/////////////////////////////////////////////////// + +// TODO should deprecations be included here? +private[chisel3] object WarningID extends Enumeration { + type WarningID = Value + + val NoID = Value(0) // Reserved + val UnsafeUIntCastToEnum = Value(1) + val DynamicBitSelectTooWide = Value(2) + val DynamicBitSelectTooNarrow = Value(3) + val DynamicIndexTooWide = Value(4) + val DynamicIndexTooNarrow = Value(5) + val ExtractFromVecSizeZero = Value(6) + val BundleLiteralValueTooWide = Value(7) + val AsTypeOfReadOnly = Value(8) +} +import WarningID.WarningID + +// Argument order differs from apply below to avoid type signature collision with apply method below +private[chisel3] case class Warning(id: WarningID, msg: String) +private[chisel3] object Warning { + def apply(id: WarningID, msg: String): Warning = { + val num = f"[W${id.id}%03d] " + new Warning(info, id, num + msg) + } + def noInfo(id: WarningID, msg: String): Warning = { + implicit val info = SourceInfo.materializeFromStacktrace + Warning(id, msg) + } +} diff --git a/core/src/main/scala/chisel3/internal/firrtl/IR.scala b/core/src/main/scala/chisel3/internal/firrtl/IR.scala index de3d8716..9fee727c 100644 --- a/core/src/main/scala/chisel3/internal/firrtl/IR.scala +++ b/core/src/main/scala/chisel3/internal/firrtl/IR.scala @@ -216,44 +216,6 @@ case class LitIndex(imm: Arg, value: Int) extends Arg { override def localName: String = s"${imm.localName}[$value]" } -object Width { - def apply(x: Int): Width = KnownWidth(x) - def apply(): Width = UnknownWidth() -} - -sealed abstract class Width { - type W = Int - def min(that: Width): Width = this.op(that, _ min _) - def max(that: Width): Width = this.op(that, _ max _) - def +(that: Width): Width = this.op(that, _ + _) - def +(that: Int): Width = this.op(this, (a, b) => a + that) - def shiftRight(that: Int): Width = this.op(this, (a, b) => 0.max(a - that)) - def dynamicShiftLeft(that: Width): Width = - this.op(that, (a, b) => a + (1 << b) - 1) - - def known: Boolean - def get: W - protected def op(that: Width, f: (W, W) => W): Width -} - -sealed case class UnknownWidth() extends Width { - def known: Boolean = false - def get: Int = None.get - def op(that: Width, f: (W, W) => W): Width = this - override def toString: String = "" -} - -sealed case class KnownWidth(value: Int) extends Width { - require(value >= 0) - def known: Boolean = true - def get: Int = value - def op(that: Width, f: (W, W) => W): Width = that match { - case KnownWidth(x) => KnownWidth(f(value, x)) - case _ => that - } - override def toString: String = s"<${value.toString}>" -} - object BinaryPoint { def apply(x: Int): BinaryPoint = KnownBinaryPoint(x) def apply(): BinaryPoint = UnknownBinaryPoint |
