1. Jul 26, 2020
    • Schuyler Eldridge's avatar
      Add missing ResolveKinds/ResolveFlows invalidates · f5e7c2ef
      Schuyler Eldridge authored
      
      
      Update the dependencies of transforms which empirically invalidate
      ResolveKinds or ResolveFlows.
      
      This was discovered with some to-be-committed work that automates
      looking for incorrect transform dependencies. Specifically, the
      deficient transforms were found to not invalidate ResolveKinds or
      ResolveFlows, yet running ReslveKinds or ResolveFlows after these
      transforms would result in modifications to the circuit.
      
      The LoweringCompilersSpec was updated with patches to indicate the
      location of these new transforms.
      
      Signed-off-by: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      f5e7c2ef
  2. Jul 25, 2020
    • Schuyler Eldridge's avatar
      Integrate new transforms with firrtl.stage.Forms (#1754) · d4e1a466
      Schuyler Eldridge authored
      
      
      Move new transforms, recently added, into existing or new sets of
      transforms (defined in firrtl.stage.Forms).
      
      One transform is a mandatory low FIRRTL optimization:
      
        - firrtl.transforms.LegalizeAndReductionsTransform
      
      Previously, this was included as a prerequisite of all Verilog
      emitters (minimum, normal, and SystemVerilog).
      
      Two transforms associated with converting and removing the new
      verification statements are moved into a new set of transforms,
      AssertsRemoved:
      
        - firrtl.transforms.formal.ConvertAsserts
        - firrtl.transforms.formal.RemoveVerificationStatements
      
      Previously, these transforms were directly added as prerequisites to
      the minimum Verilog and normal Verilog emitter, but not the
      SystemVerilog emitter.
      
      The designation of inputForm=LowForm for legacy, custom transforms is
      updated to include assertion removal transforms as part of their
      optionalPrerequisites. This has the effect of continuing to cause
      inputForm=LowForm transforms to run as late as possible (right before
      the low FIRRTL, minimum Verilog, Verilog, or SystemVeriog emitter).
      
      Tests are updated to reflect the new order in both CustomTransformSpec
      and LoweringCompilersSpec.
      
      Signed-off-by: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      
      Co-authored-by: default avatarmergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
      d4e1a466
    • Albert Chen's avatar
      Fix sign extension issue in Emitter (#1785) · b24b9a01
      Albert Chen authored
      * add sign-extend const-prop test
      
      * Emitter: don't wrap Neg operand in concat
      b24b9a01
  3. Jul 24, 2020
  4. Jul 20, 2020
  5. Jul 18, 2020
    • Kevin Laeufer's avatar
      Faster dedup instance graph (#1732) · 1b9f4ddf
      Kevin Laeufer authored
      
      
      * dedup: add faster InstanceGraph implementation and use it in dedup
      
      The new implementation takes care not to hash the instance
      types contained in DefInstance nodes.
      This should make dedup considerably faster.
      
      * FastInstanceGraph: cache vertices for faster findInstancesInHierarchy
      
      * FastInstanceGraph: remove the parent name field since it isn't actually necessary
      
      * FastInstanceGraph -> InstanceKeyGraph
      
      * InstanceGraph: describe performance problems.
      
      * InstanceKeyGraph: turn moduleMap into a def instead of a val
      
      This will make changing implementation details much easier
      in the future.
      
      * InstanceKeyGraph: return childInstances as Seq instead of Map
      
      This ensures a deterministic iteration order and it
      can easily be turned into a Map for O(1) accesses.
      
      * InstanceKeyGraph: add tests for public methods
      
      * InstanceKeyGraph: group public methods together
      
      * InstanceKeyGraphSpec: fix wording of a comment
      
      Co-authored-by: default avatarmergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
      1b9f4ddf
    • Schuyler Eldridge's avatar
      Cross-build unidoc in CI (#1772) · 5f70175d
      Schuyler Eldridge authored
      
      
      Add cross-building of unidoc to test issues if a user later does a
      +publishLocal (like with Chisel CI).
      
      Signed-off-by: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      5f70175d
    • Schuyler Eldridge's avatar
      Merge pull request #1771 from freechipsproject/fuzzer-2.11-fixes · 59607657
      Schuyler Eldridge authored
      Fix Fuzzer for 2.11
      59607657
  6. Jul 17, 2020
  7. Jul 16, 2020
    • Kevin Laeufer's avatar
      ir: store FileInfo string in escaped format (#1690) · 24be0ac3
      Kevin Laeufer authored
      This should speed up the common case
      as the compiler never operates on the
      unescaped string.
      The new escape function also fixes a bug
      where ']' was not escaped even though it
      is the delimiting character for FileInfo.
      In order to maintain backwards
      compatibility for the ProtoBuf format,
      this patch adds escape/unescape calls
      when going from/to protobuf format.
      For better performance we should consider
      changing the protobuf format.
      24be0ac3
  8. Jul 15, 2020
  9. Jul 14, 2020
  10. Jul 11, 2020
  11. Jul 10, 2020
  12. Jul 09, 2020
    • Kevin Laeufer's avatar
      dedup: use structural sha256 hash instead of agnostify and serialize (#1731) · 3fee5f87
      Kevin Laeufer authored
      
      
      * benchmark: add hot.DedupBenchmark
      
      * dedup: use structural md5 hash instead of agnostify and serialize
      
      * StructuralHash: generate PrimOp LUT
      
      * StructuralHash: change MessageDigestHasher to not be a case class
      
      * StructuralHash: we want Blocks and EmptyStmt to be ignored
      
      * StructuralHash: use SHA-256 instead of MD5
      
      * StructuralHash: clarify extmodule port name agnistification
      
      * StructuralHash: hash the name of width vars instead of trying to agnostify
      
      This should be in line with the old Dedup behavior.
      The prior use of n(..) was incorrect since the namespace
      of these vars is different from the normal module scope namespace.
      
      * StructuralHash: address Schuyler's review comments
      
      Co-authored-by: default avatarmergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
      3fee5f87
    • Kevin Laeufer's avatar
      ir: add faster serializer (#1694) · 05ba1c9d
      Kevin Laeufer authored
      
      
      This Serializer which is implemented
      external to the IR node definition
      uses a StringBuilder to achieve about a
      1.7x performance improvement when serializing.
      
      Eventually, all implementations of the
      `serialize` methd should be replaced with
      a call to `Serializer.serialize`.
      
      However, for this PR we keep the old
      code in place in order to allow for easy
      regression testing with the benchmark JAR
      like this:
      > java -cp utils/bin/firrtl-benchmark.jar \
        firrtl.benchmark.hot.SerializationBenchmark \
        ~/benchmarks/medium.pb 2 5 test
      
      Co-authored-by: default avatarmergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
      05ba1c9d
  13. Jul 08, 2020
  14. Jul 02, 2020
  15. Jun 27, 2020
  16. Jun 26, 2020