summaryrefslogtreecommitdiff
path: root/chiselFrontend/src/main/scala/chisel3/UIntFactory.scala
diff options
context:
space:
mode:
authorJack Koenig2020-03-22 18:13:58 -0700
committerJack Koenig2020-03-25 19:17:15 -0700
commitfbf5e6f1a0e8bf535d465b748ad554575fe62156 (patch)
tree578858ab6d219ca6daf44cf87b73f75054989097 /chiselFrontend/src/main/scala/chisel3/UIntFactory.scala
parentb2e004fb615a3c931d910a338b9faa99c1c975d7 (diff)
Rename subprojects to more canonical names
* Rename coreMacros to macros * Rename chiselFrontend to core Also make each subproject publish with "chisel3-" as a prefix
Diffstat (limited to 'chiselFrontend/src/main/scala/chisel3/UIntFactory.scala')
-rw-r--r--chiselFrontend/src/main/scala/chisel3/UIntFactory.scala47
1 files changed, 0 insertions, 47 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/UIntFactory.scala b/chiselFrontend/src/main/scala/chisel3/UIntFactory.scala
deleted file mode 100644
index 3868962b..00000000
--- a/chiselFrontend/src/main/scala/chisel3/UIntFactory.scala
+++ /dev/null
@@ -1,47 +0,0 @@
-// See LICENSE for license details.
-
-package chisel3
-
-import chisel3.internal.firrtl.{IntervalRange, KnownWidth, ULit, UnknownWidth, Width}
-import firrtl.Utils
-import firrtl.constraint.IsKnown
-import firrtl.ir.{Closed, IntWidth, Open}
-
-// This is currently a factory because both Bits and UInt inherit it.
-trait UIntFactory {
- /** Create a UInt type with inferred width. */
- def apply(): UInt = apply(Width())
- /** Create a UInt port with specified width. */
- def apply(width: Width): UInt = new UInt(width)
-
- /** Create a UInt literal with specified width. */
- // scalastyle:off method.name
- protected[chisel3] def Lit(value: BigInt, width: Width): UInt = {
- val lit = ULit(value, width)
- val result = new UInt(lit.width)
- // Bind result to being an Literal
- lit.bindLitArg(result)
- }
- /** Create a UInt with the specified range, validate that range is effectively > 0
- */
- //scalastyle:off cyclomatic.complexity
- def apply(range: IntervalRange): UInt = {
- // Check is only done against lower bound because range will already insist that range high >= low
- range.lowerBound match {
- case Closed(bound) if bound < 0 =>
- throw new ChiselException(s"Attempt to create UInt with closed lower bound of $bound, must be > 0")
- case Open(bound) if bound < -1 =>
- throw new ChiselException(s"Attempt to create UInt with open lower bound of $bound, must be > -1")
- case _ =>
- }
-
- // because this is a UInt we don't have to take into account the lower bound
- val newWidth = if(range.upperBound.isInstanceOf[IsKnown]) {
- KnownWidth(Utils.getUIntWidth(range.maxAdjusted.get).max(1)) // max(1) handles range"[0,0]"
- } else {
- UnknownWidth()
- }
-
- apply(newWidth)
- }
-}