diff options
| author | azidar | 2016-11-09 19:05:52 -0500 |
|---|---|---|
| committer | azidar | 2016-11-09 19:05:52 -0500 |
| commit | ba417a89c1a654d24c628c7e276433c9f5d64e55 (patch) | |
| tree | 9f6bc6fab263269e252b72d954ddf13ba5e83215 /src/main | |
| parent | c19a53a562883ebb7d9c6131c4ef308bcfbd720a (diff) | |
Bugfix: removed recursive removal in infer widths
This will certainly lead to more uninferred width errors, but now widths
that were previously incorrectly inferred are now correctly uninferred.
An example is:
reg r : UInt, clock with: (reset => (reset, UInt<2>(3)))
node x = add(r, r)
r <= x
Here, r's width follows the following formula, which cannot be solved:
rWidth >= max(max(rWidth, rWidth) + 1, 2)
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/scala/firrtl/passes/InferWidths.scala | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/passes/InferWidths.scala b/src/main/scala/firrtl/passes/InferWidths.scala index 67f2b90e..619bb25a 100644 --- a/src/main/scala/firrtl/passes/InferWidths.scala +++ b/src/main/scala/firrtl/passes/InferWidths.scala @@ -81,7 +81,7 @@ object InferWidths extends Pass { def remove_cycle(n: String)(w: Width): Width = { //;println-all-debug(["Removing cycle for " n " inside " w]) - w map remove_cycle(n) match { + w match { case wx: MaxWidth => MaxWidth(wx.args filter { case wxx: VarWidth => !(n equals wxx.name) case _ => true |
