1. Aug 11, 2021
  2. Aug 10, 2021
  3. Aug 06, 2021
    • Schuyler Eldridge's avatar
      Fix Specification Memory Port Types (#2319) · 8abf3085
      Schuyler Eldridge authored
      
      
      Correct incorrect type specified for memories in the FIRRTL
      specification.  This is important because the memory type determines
      what is a legal bundle to try to connect to a memory port.
      
      I based this off of FIRRTL accepting the following circuit:
      
          circuit MemOrder:
            module MemOrder:
              input r: {addr : UInt<3>, en : UInt<1>, clk : Clock, flip data : UInt<1>}
              input w: {addr : UInt<3>, en : UInt<1>, clk : Clock, data : UInt<1>, mask : UInt<1>}
              input rw: {addr : UInt<3>, en : UInt<1>, clk : Clock, flip rdata : UInt<1>, wmode : UInt<1>, wdata : UInt<1>, wmask : UInt<1>}
      
              mem memory:
                data-type => UInt<1>
                depth => 8
                reader => r
                writer => w
                readwriter => rw
                read-latency => 1
                write-latency => 1
                read-under-write => undefined
      
              memory.r <= r
              memory.w <= w
              memory.rw <= rw
      
      Signed-off-by: default avatarSchuyler Eldridge <schuyler.eldridge@sifive.com>
      8abf3085
  4. Aug 05, 2021
  5. Aug 04, 2021
  6. Aug 03, 2021
  7. Jul 30, 2021
  8. Jul 27, 2021
  9. Jul 25, 2021
    • Jiuyang Liu's avatar
      Add typedef in DependencyManager. · b14d25ea
      Jiuyang Liu authored
      This is a bug fix, before this PR, Scala compiler will infer `Nothing`, which makes code below failed to compile:
      ```
      class UserCompiler extends TransformManager(Seq(Dependency(UserPass))) {
        override def optionalPrerequisiteOf: Seq[TransformDependency] = Seq(
          Dependency[DedupModules]
        )
      }
      ```
      b14d25ea
  10. Jul 15, 2021
    • Jared Barocsi's avatar
      Fix memory annotation deduplication (#2286) · 4081d9f4
      Jared Barocsi authored
      
      
      * Add transform to deduplicate memory annotations
      * Add annotation deduplication to Dedup stage
      * ResolveAnnotationPaths and EliminateTargetPaths now invalidate the dedup annotations transform
      * Verilog emitter now throws exception when memory annotations fail to dedup
      
      Co-authored-by: default avatarJack Koenig <koenig@sifive.com>
      4081d9f4
  11. Jul 12, 2021
  12. Jul 11, 2021
  13. Jul 09, 2021
  14. Jul 07, 2021
  15. Jun 30, 2021
  16. Jun 26, 2021
  17. Jun 23, 2021
    • Jack Koenig's avatar
      Fix VerilogMemDelays use before declaration (#2278) · 11128d93
      Jack Koenig authored
      The pass injects pipe registers immediately after the declaration of the
      memory. This can be problematic if the clock for the associated memory
      port is defined after the declaration of the memory. For any memory port
      clocks that are driven by non-ports, we now inject a wire before the
      pipe register declarations to be sure there are no
      use-before-declaration issues.
      11128d93
  18. Jun 22, 2021
  19. Jun 19, 2021
  20. Jun 18, 2021
  21. Jun 17, 2021
    • Schuyler Eldridge's avatar
      Add --start-from option (#2273) · c7eaa67d
      Schuyler Eldridge authored
      
      
      Add a new option to the FIRRTL compiler, "--start-from = <form>".  If
      used, this will cause the compiler to assume that the input FIRRTL
      circuit is already in the specific form.  It will then skip unnecessary
      passes given this information.
      
      E.g., if a user requests to run "firrtl -X verilog --start-from low"
      then the compiler will only run transforms necessary to get from low
      FIRRTL to Verilog.  Transforms necessary for ingesting FIRRTL IR will be
      run if needed (checks and type/kind/flow resolution).
      
      To implement this, a CurrentFirrtlStateAnnotation is added.  Advanced
      users can use this directly to tell the FIRRTL compiler exactly what
      transforms have already been run, including the ability to ignore checks
      or type/kind/flow resolution if they so desire.
      
      Signed-off-by: default avatarSchuyler Eldridge <schuyler.eldridge@sifive.com>
      c7eaa67d
    • Schuyler Eldridge's avatar
      Add Protocol Buffer emission (#2271) · d708d3f0
      Schuyler Eldridge authored
      
      
      * Add Protocol Buffer emission export
      
      This adds infrastructure and annotations that let a user emit a FIRRTL
      circuit as a Protocol Buffer.
      
      Fixes #1696.
      
      Signed-off-by: default avatarSchuyler Eldridge <schuyler.eldridge@sifive.com>
      
      * fixup! Add Protocol Buffer emission export
      d708d3f0
  22. Jun 16, 2021
    • Kevin Laeufer's avatar
      make PresetRegAnnotation public (#2254) · 117054bb
      Kevin Laeufer authored
      * make PresetRegAnnotation public
      
      this annotation is useful outside the firrtl compiler:
      - to implement a pass that creates registers which
        need to be initialized at the beginning of simulation
        (e.g., for formal verification)
      - to support preset registers in treadle
      
      * add PresetRegAnnotation test and deal with annotation correctly in RemoveReset pass
      117054bb
  23. Jun 15, 2021
  24. Jun 09, 2021