1. Jul 20, 2019
  2. Jul 19, 2019
    • Albert Chen's avatar
      Fix renaming of annotations with paths (#967) · 21d5c808
      Albert Chen authored
      * 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
      21d5c808
  3. Jul 18, 2019
  4. Jul 16, 2019
  5. Jul 12, 2019
  6. Jul 09, 2019
  7. Jul 04, 2019
    • Schuyler Eldridge's avatar
      Merge pull request #1079 from freechipsproject/dependency-api · 648dddea
      Schuyler Eldridge authored
      Add Dependency API
      648dddea
    • Schuyler Eldridge's avatar
      01fb87e1
    • Schuyler Eldridge's avatar
      Add PhaseManager tests · ec3734e8
      Schuyler Eldridge authored
      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.
      ec3734e8
    • Schuyler Eldridge's avatar
      Add DependencyManager and PhaseManager · affc0e0f
      Schuyler Eldridge authored
      
      
      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: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      affc0e0f
    • Schuyler Eldridge's avatar
      Add PreservesAll stackable trait for DependencyAPI · c219be23
      Schuyler Eldridge authored
      
      
      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: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      c219be23
    • Schuyler Eldridge's avatar
      Add a DependencyAPI to firrtl.options.Phase · 2585bf98
      Schuyler Eldridge authored
      
      
      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: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      2585bf98
    • Schuyler Eldridge's avatar
      Add seeded topological sort to DiGraph · a514408c
      Schuyler Eldridge authored
      
      
      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: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      a514408c
  8. Jul 03, 2019
  9. Jun 29, 2019
  10. Jun 28, 2019
  11. Jun 21, 2019
  12. Jun 19, 2019
  13. Jun 13, 2019
  14. Jun 06, 2019
  15. Jun 04, 2019
  16. May 30, 2019
  17. May 25, 2019
  18. May 10, 2019
  19. May 04, 2019
  20. Apr 30, 2019
  21. Apr 27, 2019
  22. Apr 26, 2019
    • Schuyler Eldridge's avatar
      Add ShellOption, DeletedWrapper · ef8f06f2
      Schuyler Eldridge authored
      
      
      Abstracts away option writing such that users no longer have to
      understand scopt semantics. This adds a ShellOption class and a
      HasShellOptions trait for something which provides one or more
      ShellOptions. This refactors the FIRRTL codebase to use this style of
      option specification.
      
      Adds and uses DeletedWrapper to automatically generate
      DeletedAnnotations.
      
      Signed-off-by: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      ef8f06f2
    • Schuyler Eldridge's avatar
      OptionsView/Viewer typeclass canonicalizations · 47fe781c
      Schuyler Eldridge authored
      
      
      This switches the OptionsView/Viewer typeclass to use more canonical
      approaches and helper methods. This uses a context bound instead of an
      explicitly specified implicit argument. Additionally, this adds an
      apply method to OptionsView to enable more canonical use of the
      OptionsView typeclass.
      
      With this, you can now do things like `Viewer[FirrtlOptions].view` in
      addition to the old (and still available)
      `Viewer.view[FirrtlOptions]`. Uses of the latter are updated to use
      the former.
      
      Signed-off-by: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      47fe781c