summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman2016-03-31 00:04:22 -0700
committerAndrew Waterman2016-03-31 00:04:22 -0700
commitc5d3f1e5c0e175b322c20fb9b61c8040ba7afdba (patch)
tree279ccc85815ffb0600f337346a3a37fed62a9a4e
parent48caf43af55a61991c0945ec6d086c668d78096d (diff)
Fix fromBits for this.width > that.width
Sign- or zero-extend the argument to match.
-rw-r--r--src/main/scala/Chisel/Data.scala5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/main/scala/Chisel/Data.scala b/src/main/scala/Chisel/Data.scala
index 2ae9ec63..fa6e5729 100644
--- a/src/main/scala/Chisel/Data.scala
+++ b/src/main/scala/Chisel/Data.scala
@@ -93,8 +93,11 @@ abstract class Data(dirArg: Direction) extends HasId {
def fromBits(n: Bits): this.type = {
var i = 0
val wire = Wire(this.cloneType)
+ val bits =
+ if (n.width.known && n.width.get >= wire.width.get) n
+ else Wire(n.cloneTypeWidth(wire.width), init = n)
for (x <- wire.flatten) {
- x := n(i + x.getWidth-1, i)
+ x := bits(i + x.getWidth-1, i)
i += x.getWidth
}
wire.asInstanceOf[this.type]