1. Aug 08, 2019
  2. Aug 06, 2019
  3. Aug 02, 2019
    • Schuyler Eldridge's avatar
      ac42287b
    • chick's avatar
      Followup to PR #1142 · 2bf399c2
      chick authored
      - use scala.io.Source instead of io.Source
      - .toList cleaner way to force stream to be read.
      - clear old commented out code in ProtoBufSpec
      2bf399c2
    • chick's avatar
      Followup to PR #1142 · 54e67889
      chick authored
      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()
      54e67889
  4. Aug 01, 2019
    • Chick Markley's avatar
      io.Source is not closed when used in most common text reading idiom (#1142) · 86d2470d
      Chick Markley authored
      - 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
      86d2470d
  5. Jul 31, 2019
  6. Jul 26, 2019
  7. Jul 25, 2019
    • Schuyler Eldridge's avatar
      Add ExpandConnects to TopWiringTransform fixup (#1135) · 0512b6c7
      Schuyler Eldridge authored
      
      
      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: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      0512b6c7
  8. Jul 24, 2019
  9. Jul 22, 2019
  10. Jul 20, 2019
  11. 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
  12. Jul 18, 2019
  13. Jul 16, 2019
  14. Jul 12, 2019
  15. Jul 09, 2019
  16. 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
  17. Jul 03, 2019
  18. Jun 29, 2019
  19. Jun 28, 2019
  20. Jun 21, 2019
  21. Jun 19, 2019