| Age | Commit message (Collapse) | Author |
|
This includes the built-in functions in BackendCompilationUtilities
which are a public API
|
|
Many tools don't except 'always @(posedge 1'h0)' so we assign the
literal to a wire and use that as the posedge target.
|
|
[skip formal checks]
Adds new InlineCastsTransform to the VerilogEmitter which removes
Statements that do nothing but cast by inlining the cast Expression
|
|
|
|
[skip formal checks]
* ConstProp FoldEqual/FoldNotEqual propagate boolean (non-)equality with true/false
* transform InlineNots
* transform back-to-back Nots into straight rename
* swap mux with inverted select
Co-authored-by: Jack Koenig <jack.koenig3@gmail.com>
|
|
This removes the incorrect short --firrtl-source option. This was
supposed to be the helpValueName.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
* Move Map lookup into closure so it only occurs if necessary
* Replace gender with flow and improve code clarity
|
|
InferResets will now support last connect semantics (within the same
scope) when determining the concrete reset type for components of type
Reset. This only includes *unconditional* last connects; it remains
illegal to drive a component of type Reset with different concrete types
under differing when conditions.
For example, the following is now legal:
input a : UInt<1>
input b : AsyncReset
output z : Reset
z <= a
z <= b
The second connect will when and z will be of type AsyncReset.
The following remains illegal:
input a : UInt<1>
input b : AsyncReset
input c : UInt<1>
output z : Reset
z <= a
when c :
z <= b
This commit also ensures that components of type Reset with no drivers
(or only invalidation) default to type UInt<1>. This fixes a bug where
the transform would crash with such input.
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
FirrtlOption and CircuitOption represent, respectively, something that
is convertible to FirrtlOptions or something that is convertible to a
FirrtlCircuitAnnotation. Neither of these is intended to be serialized
automatically in output JSON.
This has the effect of *not* JSON-serializing the
FirrtlCircuitAnnotation. This serialization is supposed to be to a
file via an emitter.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
The switch to using our own Logger triggered a latent bug, described in comments to #1258. Make the `val logger` introduced by the 'trait LazyLogging` protected.
|
|
This moves the --no-dedup option to be FIRRTL-stage specific as
opposed to a global option common to all stages.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
|
|
There was some vestigial logging that conflicts with the homebrewed
logger used by most of the codebase
|
|
* Types containing bundles can't generally be converted to a single mask granularity
* Update ReplSeqMemTests to check for illegal masks
|
|
* Closes #1242
|
|
This changes uses of `getSimpleName` to `getName`. The former throws
idiotic exceptions under Java 8, e.g., `getSimpleName` will fail if
used on a class inside an object.
This fixes a bug where any call to the `name` method of a custom
transform defined inside an object (or in an environment wrapping
things in objects like a REPL) will throw a malformed class name
exception. E.g., if you do this and run with `-ll info` or your custom
transform deletes annotations.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
|
|
Recursive literal lookup needs to be guarded against combinational loops
Added a test-case to illustrate the issue when CheckResets is run before CheckCombLoops
|
|
|
|
* Closes #1162
* Instances of extmodules remain in the final hierarchy
* Extmodule definitions are not renamed or duplicated
* The rest of the pass may proceed as normal
|
|
* Fixes #1154
* Tests that #1154 example produces SyntaxErrorsException
* Generally helps catch trailing syntax errors
* Performance-neutral relative to previous grammar
* Recommended by antlr4 devs, can help performance in some cases
* See antlr/antlr4#1540
|
|
|
|
|
|
|
|
Co-Authored-By: Jack Koenig <koenig@sifive.com>
|
|
|
|
|
|
* Change FIRRTL-internal API, affecting only one corner case
* Make API more "DWIM" and consistent with other methods
* Add test cases for findInstancesInHierarchy
* Update Scaladoc
|
|
|
|
* Closes #1203
|
|
* Add Scaladoc for EdgeData API
* Include stringified vertices in EdgeNotFoundException
|
|
|
|
Modifies the Verilog emitter to emit "else if" blocks as opposed to
more deeply nested "else begin if" blocks. This improves the output
Verilog readability.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
* Additional refactoring to clean up pass implementation
* Make register names match old scheme to appease CI
|
|
Major features:
- Added Interval type, as well as PrimOps asInterval, clip, wrap, and sqz.
- Changed PrimOp names: bpset -> setp, bpshl -> incp, bpshr -> decp
- Refactored width/bound inferencer into a separate constraint solver
- Added transforms to infer, trim, and remove interval bounds
- Tests for said features
Plan to be released with 1.3
|
|
This changes TopWiringTransform to remove TopWiringAnnotations after
it runs.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
(#1186)
* Replace instance analysis code with InstanceGraph API calls
* Add convenience implicits for using TargetTokens as safe boxed strings
|
|
|
|
Fix minor regression from #1124
|
|
* Corrects behavior under write collisions
* Avoids heavily refactoring pass
|
|
* Stop ignoring read-under-write (RUW) parameter
* Add conservative check: blackbox only when RUW is "undefined"
* VerilogMemDelays now throws InternalError for read-first memories
* Previously, read-first mems were incorrectly implemented as write-first
|
|
* Make the read-under-write (RUW) parameter typesafe
* Add RUW support to the FIRRTL proto and CHIRRTL grammar
|
|
* dont chain inline and refix RenameMaps
* cache already inlined modules
* reduce number of chained RenameMaps
* InlineInstances: cleanup and add comments
|
|
Create instance maps once for each Module
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
The following names are changed:
- gender -> flow
- Gender -> Flow
- MALE -> SourceFlow
- FEMALE -> SinkFlow
- BIGENDER -> DuplexFlow
- UNKNOWNGENDER -> UnknownFlow
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Adds a space to correct in an exception message. Corrects
capitalization in Github to it's official name (GitHub) and adds a
link to file an issue.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|