Skip to content
This repository has been archived by the owner on Aug 20, 2024. It is now read-only.

FIRRTL v1.5.0-RC1

Compare
Choose a tag to compare
@chick chick released this 24 Sep 22:21

Feature

  • Allow Side Effecting Statement to have Names (#2057)
  • Stop padding multiply and divide ops (#2058)
  • Refactor emitter (#1879)
  • Add SortModules Transform (#1905)
  • Make {Stage, FirrtlStage}.run protected (#1926)
  • Create annotation to allow inline readmem in Verilog (#2107)
  • Add -fpga flag to enable FPGA-oriented compilation strategies (currently for memories) (#2111)
  • Add NoConstantPropagationAnnotation to disable constant propagation (#2150)
  • Add options for memory initialization inside or outside the ifndef SYNTHESIS block. (#2166)
  • Add indent parameter to Serializer.serialize() (#2177)
  • Rewrite vlsi_mem_gen into a Firrtl Transform, Add GenVerilogMemBehaviorModelAnno & vlsiMemGen (#2202)
  • Implement MFC-style source locator compression (#2212)
  • Improve performance of RenameMap in LowerTypes (#2233)
  • Add -X mhigh compiler for minimal high form (#2268)
  • Add Protocol Buffer emission export, this adds infrastructure and annotations that let a user emit a FIRRTL circuit as a Protocol Buffer. (#2271)
  • Add a new option to the FIRRTL compiler, "--start-from = ". 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. (#2273)
  • Relax spec on 0-bit mux select, use SFC behavior, change the FIRRTL specification document to allow for 0-bit mux selects. (#2285)
  • Implement NoCommonSubexpressionElimination (#2291)

API Modification

  • Memlib Refactor, switch to new API. (#2191)
  • Add --dont-fold option to disable folding prim ops (#2040)

Fix

  • Fix Serializer for single indented DefModule emission (#2332)
  • Bug fix for VerilogPrep using wrong type. (#1932)
  • Fix dshl zero-width shift behavior (#2339)
  • Fix RemoveWires handling of invalidated non-UInt wires (#1949)
  • Fix Type Error fuzzer Example code (#1960)
  • Fix subaccess (#1984)
  • Remove explicit pom scm from build.sbt (#2004)
  • ExpandWhens: ensure that statement names are maintained (#2082)
  • Fix ProtoBuf conversions for Verification IR (#2100)
  • Fix CSESubAccesses for SubAccesses with flips (#2112)
  • Fix cat of zero-width SInt (#2116)
  • Fix width of constant propagation of SInt with zero (#2120)
  • Fix issue where inlined cvt could cause crash (#2124)
  • Legalize neg: -x becomes 0 - x (#2128)
  • Ensure InlineCasts does not inline complex Expressions (#2130)
  • Fix bug in zero-width memory removal (#2153)
  • Don't use declaration-assigns for wires representing mem ports (#2189)
  • Fix CheckWidths error message for uninferred width (#2196)
  • Fix SBT deprecation warnings (#2214)
  • Fix renaming of local targets in InlineInstances (#2238)
  • WiringTransform: cannot run after RemoveWires (#2240)
  • Fix MultiInfo parser + serialization bug (#2265)
  • [spec] Explicit widths may be non-negative, not just positive (#2277)
  • Dedup attribute annos, restore annotation order when dedupping annotations (#2297)
  • Fix Specification Memory Port Types (#2319)

Miscellany

  • Improve performance of LowerTypes renaming (#2024)
  • full64 is required to detect VCS. (#1930)
  • Remove caching from RenameMap (#1938)
  • Fix Type Error fuzzer Example code (#1960)
  • Make MultiTargetAnnotation.targets a def (#1969)
  • add weak and strong to Utils.v_keywords (#1983)
  • Suport ir.SubAccess in Utils.splitRef (#2021)
  • IR: turn some IR nodes into data classes (#2071)
  • Emit space after 'if' for all Verilog conditional synchronous assignments (#2091)
  • don't use protoc-jar anymore, mill can handle it better. (#2162)
  • Constant propagation of the Xor op folds xor(a, SInt(0)) toasUInt(a). For comparison, Or folds to asUInt(pad(a, W)). (#2179)
  • Make InferTypes error on enable conditions > 1-bit wide (#2182)
  • With Stage/Phase, users can provide complex functionality at the phase level rather than just the transform level. It is useful to have the same logging information at that level. Note that this change still logs transforms in the same way (#2190)
  • Make MustDeduplicateAnnotation deletable (#2215)
  • This function will safely wrap any unserializeable annotations in UnserializeableAnnotations so that they can be safely serialized to JSON for logging. (#2227)
  • Replace mem macros renaming (#2243)
  • ir: make HashCode.toHashString public. This will allow chiseltest to save the hash code to disk for the purpose of caching simulation binaries. (#2302)
  • add emitter for optimized low firrtl (#2304)
  • Require Andr, Orr, Xorr, Neg to have one operand (#2312)
  • Uses virtual method .getBytesBuffered: Iterable[Array[Byte]] to optimize file emission. (#2334)
  • Multiprotobuf algorithm now pulls the top module from the protobufs (#2344)

Verification

  • smt: ensure that all signals have a unique name (#1943)
  • Fix SMT Memory Bug (#1942)
  • smt: add support for write-first memories (#1948)
  • smt: add support for uninterpreted ext modules (#1994)
  • smt: run DeadCodeElimination after PropagatePresetAnnotations (#2036)
  • SMT Backend: move undefined memory behavior modelling to firrtl IR level (#2095)
  • SMT Backend: model Invalid and Division by Zero with DefRandom nodes (#2104)
  • SMT: memory port inout fields cannot be used as RHS expressions (#2105)
  • smt: use existing bitWidth API(#2175)
  • make PresetRegAnnotation public (#2254)
  • Replace hard coded line separators with system specific ones (#2281)
  • PropagatePresetAnnotations: remove false prerequisites (#2323)(#2325)
  • smt make SMTLib + Btor2 emitters public objects, This will make it easier for formal verification libraries to make use of these emitters. (#2326)
  • treat stop with non-zero ret like an assertion (#2338)

Testing and Continuous Integration

  • Switch from Travis to Github Actions CI (#2041)
  • Automatically publish SNAPSHOTs on pushes to master (#1955)
  • Restore scalafmt CI check (#2047)
  • Fix mill compile and add to CI (#2147)

Documentation

  • Fix Mergify badge in README (#1974)
  • fix scaladoc for ReferenceTarget (#2014)
  • Update spec to disallow 0-bit mux sel (#2305)

Deprecation and Code Removal

  • Deprecate ToWorkingIR (#2028)
  • Remove Scala 2.11 (#2062)
  • Deprecate InlineCasts, add InlineAcrossCasts (#2146)
  • Fix RemoveAccesses, delete CSESubAccesses (#2157)
  • Deprecate memlib APIs.(#2199)
  • Remove java.io in FileUtils, Add deprecation annotation in FileUtils (#2256)
  • Deprecate BlackBoxResourceAnno (#2262)
  • remove LoweringCompilersSpec, it has outlived its usefulness. (#2310)