summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorRichard Lin2016-11-21 13:25:03 -0800
committerGitHub2016-11-21 13:25:03 -0800
commitcd6eb41275381a4399a8a88c886110d276bb805c (patch)
treeee1a0d87a49903cd4d3a97fce200096452104615 /src/main
parent822160cc8e76e70643fb56707bb39f6f7526b6fd (diff)
parente8aea3f4153b58321784ac33734305207570ef75 (diff)
Merge pull request #369 from ucb-bar/rangemacro
Add ranging API
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/chisel3/package.scala14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/main/scala/chisel3/package.scala b/src/main/scala/chisel3/package.scala
index 3cdda971..29aa6528 100644
--- a/src/main/scala/chisel3/package.scala
+++ b/src/main/scala/chisel3/package.scala
@@ -3,7 +3,7 @@
package object chisel3 { // scalastyle:ignore package.object.name
import scala.language.experimental.macros
- import internal.firrtl.Width
+ import internal.firrtl.{Width, NumericBound}
import internal.sourceinfo.{SourceInfo, SourceInfoTransform}
import util.BitPat
@@ -202,5 +202,17 @@ package object chisel3 { // scalastyle:ignore package.object.name
implicit def fromBigIntToIntParam(x: BigInt): IntParam = IntParam(x)
implicit def fromDoubleToDoubleParam(x: Double): DoubleParam = DoubleParam(x)
implicit def fromStringToStringParam(x: String): StringParam = StringParam(x)
+
+ implicit class ChiselRange(val sc: StringContext) extends AnyVal {
+ /** Specifies a range using mathematical range notation. Variables can be interpolated using
+ * standard string interpolation syntax.
+ * @example {{{
+ * UInt(range"[0, 2)")
+ * UInt(range"[0, $myInt)")
+ * UInt(range"[0, ${myInt + 2})")
+ * }}}
+ */
+ def range(args: Any*): (NumericBound[Int], NumericBound[Int]) = macro chisel3.internal.RangeTransform.apply
+ }
}
}