From c5d3f1e5c0e175b322c20fb9b61c8040ba7afdba Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 31 Mar 2016 00:04:22 -0700 Subject: Fix fromBits for this.width > that.width Sign- or zero-extend the argument to match. --- src/main/scala/Chisel/Data.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') 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] -- cgit v1.2.3