| Age | Commit message (Collapse) | Author |
|
Remove incorrect short option for --info-mode
|
|
This should be a helpValueName and not a shortOption.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
|
|
|
|
* Add abstract "Reset" which can be inferred to AsyncReset or UInt<1>
* Enhance async reset initial value literal check to support aggregates
|
|
|
|
Improve RemoveReset on Invalid Inits
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This modifies RemoveReset to NOT generate a mux for
invalid (IsInvalid) inits. In the case of an invalid init, the reset
is converted to a self-connect and no mux is generated.
This is implemented as a new, initial pass over the module to populate
a set of all invalid signals. During the subsequent, circuit-modifying
pass, this invalid set is queried to special case the handling of
invalid inits.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
* Check mems for legal latencies; ban zero write latency.
* Trigger
|
|
* Avoid redundancy between CheckChirrtl and CheckHighForm, add more checks
* Add test case for illegal Chirrtl memory in HighForm
|
|
Fix FileUtils.getLines, add simple FileUtils tests
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Followup to PR #1142
|
|
- use scala.io.Source instead of io.Source
- .toList cleaner way to force stream to be read.
- clear old commented out code in ProtoBufSpec
|
|
Fixes a threading bug in where lazy reading of file
caused a problem for multithreaded access to the that was read.
Changes all uses of io.Source to use new API
getText
getLines
getTextResource
getLinesResouce
Make style to only import FileUtils and not its methods
So code is more explicit as e.g. FileUtils.getText()
|
|
- Provide new tools for reading in text
- from a file
- from a string file name
- from a resource file
- text can be read in as
- a single string with newlines
- a seq of strings, one string per line
- FileUtils put in its own file
- in same package to keep existing API the same
Hopefully this will protect users from creating resource leaks that
may explain sbt crashing.
Also simpler interface should make code more streamlined, existing
uses of io.Source seem often to be converting between text and seq
unnecessarily.
Add note of caution on requiring slash on resource readers
|
|
|
|
- Fixes BlackBoxSourceHelper deprecation "since"
|
|
* add multi target annotation for advices
* use Seq[Seq[Target]] store targets
* add flat function
* doc simplify
|
|
* Allow name of blackbox resource .f file to change from static value
* Restore fileListName as a deprecated def per Jack's feedback
* Support both local and absolute paths for .f resource files
|
|
This fixes a bug in the TopWiringTransform when wiring aggregates by
adding ExpandConnects to its list of fixup passes. TopWiringTransform
is MidForm => MidForm, but when wiring aggregates, it will output bulk
connects. This violates the MidForm prerequisite that ExpandConnects
has run. Symptomatically, this will manifest as match errors in
LowerTypes if a user tries to use the TopWiringTransform on
aggregates.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
|
|
* fix RenameMap chaining
* fix order of chaining, add another test case
|
|
* Add SimplifyMems transform to lower memories without splitting
* Remove spurious anonymous function
|
|
* check isLocal before removing target tokens in RenameMap
* add fix for Adam's test case, add more test cases
* fix multiple renaming bug
* call componentGet before checking underlying for ReferenceTargets in recursiveGet
* add ModuleGet that implements new instance rename order
* normalize target before renaming
* fix forall/exists bug
* add guards for isLocal cases
* fix circuit renaming, fix traverseHierarchy, add debug prints
* remove sensitivity stuff
* add more tests
* reapply parent path to renamed subpath, fix reference -> instance renames
* remove debug prints
* add instance as reference test case
* fix Ref->IsMod, IsMod->Ref renamed, fix extra test cases
* fix ofModule renaming for refs/instances
* fix renaming of ofModules, change tests
* fix more InstanceTarget rename bugs
* remove bad ReferenceTarget test case
* cleanup midRename of recursiveGet
* fix comments
* fix multiple ModuleTarget renames for InstanceTargets
* dis-allow renaming of ModuleTargets to References
* add back removed lines in RemoveCHIRRTL
* fix indents
* only add ofModule to refs if renaming an inst as a ref
* change .moduleOpt.get to .module
* disallow renaming ReferenceTarget->ModuleTarget
* disallow ref->mod renames in tests, add inst as ref test cases
* cache results of get functions
* fix bot/mid/top renames, add andThen
* fix andThen, add test case
* add more test cases, fix ++
* fix comments, make things private
* dont quit if earlier returns None, add dedup/inline rename tests
* don't rename OfModules to instances paths
* update dedup test
* don't treat references as instances, don't reapply parents to absolute paths
* fix more test cases
* short-circuit OfModule renames if an absolute path is found
* update andThen, remove orElse, deprecate ++
* removed commented code
* update comments
* respond to comments
|
|
README.md Patches
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Change Dependency API to Class[_ <: A]
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This changes the Dependency API to specify dependencies in terms of
classes subtyping the DependencyAPI trait. Previously, this was
invariant which caused a bunch of ugly, unneeded .asInstanceOf jank.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
|
|
|
|
Add Dependency API
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Adds tests for the PhaseManager. This includes outputs in
"test_run_dir" of Graphviz output. This will automatically generate a
PNG if "dot" is on the path. Otherwise, it will just generate the
Graphviz output. This includes tests that check for determinism.
|
|
Adds the DependencyManager class which can be used to determine a
legal sequence of TransformLikes given their Dependency API
constraints. A DependencyManager determines an ordering that results
in some target TransformLikes being run (without invalidations) given
an initial state (some other set of TransformLikes).
Algorithmically, this works as follows:
1. A DAG of TransformLikes w/ invalidation edges is constructed (the
"invalidate graph")
2. A DAG of TransformLikes w/ prerequisite and dependent edges is
constructed (the "dependents graph")
3. A toplogical sort of the dependents graph, seeded with the reverse
topological sort of the invalidate graph, gives an ordering of
TransformLikes.
4. This ordering is examined, node by node, cleaning up any mismatches
between TransformLikes by solving DependencyManager sub-problems.
As new graph nodes (which are classes) are found, these are lazily
constructed. Data structures are maintained that map from classes to
objects and back. All discovered classes will point to the same object.
Determinism is maintained internally using LinkedHashMap and
LinkedHashSet.
Other changes:
- Some methods that generate Graphviz for a DependencyManager are
added.
- One concrete implementation of a DependencyManager is added for
Phases called "PhaseManager".
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This adds a PreservesAll that can be used to override the default
invalidation scheme (invalidated everything except yourself) such that
nothing is invalidated.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This adds a TransformLike mixin, DependencyAPI, that defines the basis
of the Dependency API for Stage/Phase. DependencyAPI defines three
members that define dependency relationships for some TransformLike
"Foo":
- "Prerequisites" define TransformLikes that should run before Foo
- "Dependents" define TransformLikes that should run after Foo. This
allows Foo to inject prerequisites into some other TransformLike.
- "Invalidates" define a function that will return true if a specific
TransformLike would be invalidated by Foo
Prerequisites and Dependents are not Sets due to lack of a fast,
immutable Set that preserves insertion order. Internally, these are
converted to a private LinkedHashSet.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This adds a method to DiGraph called "seededLinearize". This
generalizes the original topological sort ("linearize") to be
parametric in an initial set of vertices. This enables the user to
massage the DFS to produce a better topological sort if they have
information about how the DFS should proceed.
The initial set of vertices is expected to be made ordered via a
LinkedHashSet.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
|
|
|
|
|
|
* Fix typo
* Fix simple_rest typo
Co-Authored-By: jack koenig <jack.koenig3@gmail.com>
* simple_reset isn't a Array due to 'simple_reset+' change to 'simple_reset' in FIRRTL.g4
|
|
* Add Test for AddDefaults phase
* Refactor AddDefaultsSpec
|
|
|
|
* Add sbt-scalafix
* Add scalafix guide to README
* Remove Unused Import
* Remove deprecated procedure syntax
|
|
Remove unused variables in `stage.phases.Checks`
|