diff options
| author | Adam Izraelevitz | 2017-10-26 12:39:42 -0700 |
|---|---|---|
| committer | Jim Lawson | 2017-10-26 12:39:42 -0700 |
| commit | c313e137d4e562ef20195312501840ceab8cbc6a (patch) | |
| tree | 37e290d3c5af672624b9ac267ccb33421acca84e /src/main/scala/chisel3 | |
| parent | 8168a8eea6c3465966081c5acd0347e09791361c (diff) | |
Invalidateapi (#645)
* Require explicit connection to DontCare to generate "is invalid".
* Add tests for RefNotInitializedException.
Currently, we fail the when ... otherwise ...
* Disable ScalaTest shrinking on error in ComplexAssignSpec.
* fix broken merge; still some binding issues
* cleanup DontCare connection checks; add missing directions to test module IOs
* Have library code inherit compileOptions from the enclosing Module (if it exists).
* work around current firrtl uninitialized references with Strict compile options and explicitInvalidate
* more CompileOptions cleanup; move test-specific defines to package object
* minimize differences with master
* set default CompileOptions.explicitInvalidate to false until we fix the FIRRTL when issue
* ignore the StrictCompiler property checks (until CompileOptions.explicitInvalidate is defaulted to true)
* Revert "more CompileOptions cleanup; move test-specific defines to package object"
This reverts commit e4486edcba990d150e76e08a2fc6abca033556e0.
* Revert "work around current firrtl uninitialized references with Strict compile options and explicitInvalidate"
This reverts commit 426faa430a62c3dac2dbdf33044d3386d4243157.
* remove unused code
* Convert to binding-based DontCare implementation
* comment cleanup to minimize differences with master
* Tentatively remove possibly redundant DefInvalid on module ports.
* Respond to code review change request.
- backout build.sbt change
- correct indentation
- handle bulk of DontCare semantics in elemConnect()
- have DontCare extend Element, not Data (eliminate most Object specific methods
- add comments indicating reason for explicit DontCare connections
* Initialize test elements without requiring a DontCare.
* Respond to review change requests.
- DontCare should work on left or right side in BiDirectional connections
- call bind() to set DontCare binding instead of messing with internal variables
- DontCares are only equivalent with DontCares
- clean up processWhens() definition
* Eliminate DontCare connection to inputs in MonoConnect().
* Pull aggregates apart for the purpose of DontCare connections.
* Restore the explicit (conditionally executed) ports DefInvalidin ImplicitModule()
* Don't add DontCare's to the module list of _ids.
* Add missing DefInvalid() to LegacyModule().
* Respond to review requests: add DontCare BiConnect Vec, remove null parent hack to avoid addId(), initialize singletons early in Builder
* Move DontCare out of chisel3.experimental.
Diffstat (limited to 'src/main/scala/chisel3')
| -rw-r--r-- | src/main/scala/chisel3/internal/firrtl/Emitter.scala | 14 | ||||
| -rw-r--r-- | src/main/scala/chisel3/package.scala | 3 | ||||
| -rw-r--r-- | src/main/scala/chisel3/util/Decoupled.scala | 2 |
3 files changed, 13 insertions, 6 deletions
diff --git a/src/main/scala/chisel3/internal/firrtl/Emitter.scala b/src/main/scala/chisel3/internal/firrtl/Emitter.scala index 09984722..26ccc09d 100644 --- a/src/main/scala/chisel3/internal/firrtl/Emitter.scala +++ b/src/main/scala/chisel3/internal/firrtl/Emitter.scala @@ -159,10 +159,16 @@ private class Emitter(circuit: Circuit) { * alternative-free statements reset the indent level to the * enclosing block upon emission. */ - private def processWhens(cmds: Seq[Command]): - Seq[Command] = { cmds.zip(cmds.tail).map({ case (a: WhenEnd, b: - AltBegin) => a.copy(hasAlt = true) case (a, b) => a }) ++ - cmds.lastOption } + private def processWhens(cmds: Seq[Command]): Seq[Command] = { + if (cmds.isEmpty) { + Seq.empty + } else { + cmds.zip(cmds.tail).map{ + case (a: WhenEnd, b: AltBegin) => a.copy(hasAlt = true) + case (a, b) => a + } ++ cmds.lastOption + } + } private var indentLevel = 0 private def newline = "\n" + (" " * indentLevel) diff --git a/src/main/scala/chisel3/package.scala b/src/main/scala/chisel3/package.scala index d335f1f1..f31b4015 100644 --- a/src/main/scala/chisel3/package.scala +++ b/src/main/scala/chisel3/package.scala @@ -349,6 +349,9 @@ package object chisel3 { // scalastyle:ignore package.object.name a.allElements } def getModulePorts(m: Module): Seq[Port] = m.getPorts + // Invalidate API - a DontCare element for explicit assignment to outputs, + // indicating the signal is intentionally not driven. + val DontCare = chisel3.core.DontCare /** Package for experimental features, which may have their API changed, be removed, etc. * diff --git a/src/main/scala/chisel3/util/Decoupled.scala b/src/main/scala/chisel3/util/Decoupled.scala index 451fd039..d35046af 100644 --- a/src/main/scala/chisel3/util/Decoupled.scala +++ b/src/main/scala/chisel3/util/Decoupled.scala @@ -44,8 +44,6 @@ object ReadyValidIO { */ def noenq(): Unit = { target.valid := false.B - // We want the type from the following, not any existing binding. - target.bits := Wire(target.bits.cloneType) } /** Assert ready on this port and return the associated data bits. |
