summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/package.scala7
-rw-r--r--src/test/scala/chiselTests/LiteralExtractorSpec.scala3
2 files changed, 10 insertions, 0 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/core/package.scala b/chiselFrontend/src/main/scala/chisel3/core/package.scala
index f68ce0e8..99c9a7ae 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/package.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/package.scala
@@ -24,6 +24,13 @@ package chisel3 {
* `0.asUInt(16)` (instead of `16.W`) compile without error and produce undesired results.
*/
implicit class fromBigIntToLiteral(bigint: BigInt) {
+ /** Int to Bool conversion, allowing compact syntax like 1.B and 0.B
+ */
+ def B: Bool = bigint match {
+ case bigint if bigint == 0 => Bool.Lit(false)
+ case bigint if bigint == 1 => Bool.Lit(true)
+ case bigint => Builder.error(s"Cannot convert $bigint to Bool, must be 0 or 1"); Bool.Lit(false)
+ }
/** Int to UInt conversion, recommended style for constants.
*/
def U: UInt = UInt.Lit(bigint, Width()) // scalastyle:ignore method.name
diff --git a/src/test/scala/chiselTests/LiteralExtractorSpec.scala b/src/test/scala/chiselTests/LiteralExtractorSpec.scala
index e3cf2587..2879f2d9 100644
--- a/src/test/scala/chiselTests/LiteralExtractorSpec.scala
+++ b/src/test/scala/chiselTests/LiteralExtractorSpec.scala
@@ -32,6 +32,9 @@ class LiteralExtractorSpec extends ChiselFlatSpec {
"litToBoolean" should "return the literal value" in {
assert(true.B.litToBoolean === true)
assert(false.B.litToBoolean === false)
+
+ assert(1.B.litToBoolean === true)
+ assert(0.B.litToBoolean === false)
}
"litToDouble" should "return the literal value" in {