diff options
| author | Andrew Waterman | 2016-03-31 00:04:22 -0700 |
|---|---|---|
| committer | Andrew Waterman | 2016-03-31 00:04:22 -0700 |
| commit | c5d3f1e5c0e175b322c20fb9b61c8040ba7afdba (patch) | |
| tree | 279ccc85815ffb0600f337346a3a37fed62a9a4e /src | |
| parent | 48caf43af55a61991c0945ec6d086c668d78096d (diff) | |
Fix fromBits for this.width > that.width
Sign- or zero-extend the argument to match.
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/Chisel/Data.scala | 5 |
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] |
