summaryrefslogtreecommitdiff
path: root/chiselFrontend/src/main
diff options
context:
space:
mode:
authorChick Markley2020-01-02 15:16:46 -0800
committerGitHub2020-01-02 15:16:46 -0800
commit4ad624265e2b8aef5771af71006431705bdb19df (patch)
tree9ab760060a01227a74d54caaf61d842ba84d50c8 /chiselFrontend/src/main
parent98a6710cc0447d79cbd12271ea450c70e619b6f8 (diff)
parent9417b3a4f743446f978cc8268660878f4af87534 (diff)
Merge pull request #1275 from freechipsproject/interval-fix-2
Fixed problem creating Interval literals with full ranges
Diffstat (limited to 'chiselFrontend/src/main')
-rw-r--r--chiselFrontend/src/main/scala/chisel3/Bits.scala10
1 files changed, 5 insertions, 5 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/Bits.scala b/chiselFrontend/src/main/scala/chisel3/Bits.scala
index 28d1690d..af13ee44 100644
--- a/chiselFrontend/src/main/scala/chisel3/Bits.scala
+++ b/chiselFrontend/src/main/scala/chisel3/Bits.scala
@@ -2162,16 +2162,16 @@ package experimental {
protected[chisel3] def Lit(value: BigInt, range: IntervalRange): Interval = {
val lit = IntervalLit(value, range.getWidth, range.binaryPoint)
- val bigDecimal = BigDecimal(value)
+ val bigDecimal = BigDecimal(value) / (1 << lit.binaryPoint.get)
val inRange = (range.lowerBound, range.upperBound) match {
case (firrtlir.Closed(l), firrtlir.Closed(u)) => l <= bigDecimal && bigDecimal <= u
- case (firrtlir.Closed(l), firrtlir.Open(u)) => l <= bigDecimal && bigDecimal <= u
- case (firrtlir.Open(l), firrtlir.Closed(u)) => l <= bigDecimal && bigDecimal <= u
- case (firrtlir.Open(l), firrtlir.Open(u)) => l <= bigDecimal && bigDecimal <= u
+ case (firrtlir.Closed(l), firrtlir.Open(u)) => l <= bigDecimal && bigDecimal < u
+ case (firrtlir.Open(l), firrtlir.Closed(u)) => l < bigDecimal && bigDecimal <= u
+ case (firrtlir.Open(l), firrtlir.Open(u)) => l < bigDecimal && bigDecimal < u
}
if(! inRange) {
throw new ChiselException(
- s"Error literal interval value $value is not contained in specified range $range"
+ s"Error literal interval value $bigDecimal is not contained in specified range $range"
)
}
val result = Interval(range)