summaryrefslogtreecommitdiff
path: root/core/src/main/scala/chisel3/internal
diff options
context:
space:
mode:
authorAditya Naik2024-08-06 05:35:30 -0700
committerAditya Naik2024-08-06 05:35:30 -0700
commit51864db8176662d134e1a260f92eafc83f9933d8 (patch)
treea92572eb64033060304df5ab9ebec0047e97dbbb /core/src/main/scala/chisel3/internal
parentcf31062758d4d9722ac30f89fdfe7cc7c1d8cc74 (diff)
Update ChiselEnum.scala
And more changes
Diffstat (limited to 'core/src/main/scala/chisel3/internal')
-rw-r--r--core/src/main/scala/chisel3/internal/Binding.scala1
-rw-r--r--core/src/main/scala/chisel3/internal/Error.scala4
-rw-r--r--core/src/main/scala/chisel3/internal/Warning.scala36
-rw-r--r--core/src/main/scala/chisel3/internal/firrtl/IR.scala38
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