summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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]