- Fix checking for large constants (#1743)
- Better static inlining for single cycle
if(#1734) - Implement
schedule-compactionpass to optimize inferred static islands (#1722) - Add
std_signextprimitive
- BREAKING: Deprecate
Cell::find_with_attrin favor ofCell::find_with_unique_attr. The former is error-prone because pass logic might implicitly assume that there is only one port with a particular attribute. - BREAKING: Redesign the
ir::Rewriterinterface to take all the rewrite maps when constructing their::Rewriterstruct. - Merge the logic of
compile-refpass intocompile-invokeso thatrefcells can be invoked. - The
guard!macro supports parsing complex guard expressions that use logical connectives and comparison operators. - The
calyxlibrary no longer exposes any methods and should not be depended upon. Instead, the newcalyx-backendcrate provides the code needed to emit Verilog from Calyx.
- Change the
calyxbuild script to use theCALYX_PRIMITIVES_DIRenv variable to install primitive libraries. If unset, use$HOME/.calyx.
- Don't require
@clkand@resetports incombcomponents inlinepass supports inliningrefcellscomb-prop: disable rewrite fromwire.in = portwhen the output of a wire is read.- BREAKING: Remove
PortDef::into()because it makes it easy to miss copying attributes. - Remove the
futilbinary. - The
calyxbinary ships all the primitives and therefore self-contained now.- Add the
calyx-stdlibpackage - Add a new build script that installs primitives when the package is installed.
- Add the
- Language: New
repeatoperator that can be used in dynamic contexts as well. When possible,static-promotionwill attempt to promote it. - Fix:
wrap-maincorrectly instantiates the original"toplevel"component in the generatedmaincomponent. - Make
Workspace::construct_with_all_depspublic to allow construction of multi-file workspaces. - Don't emit
clkports for@externalcells in the AXI generator. - BREAKING: Redesign the interface for
LibrarySignatures.- Expose methods to add new primitives to the library
- Rewrite the IR printer to print out source primitives when
skip_primitiveis set.
ir::Componenttakes ahas_interfaceargument and ensures that interface ports are present when it is true.- The
Visitortrait supports newstart_contextandfinish_contextmethods which allow the pass to affect the context before and after the components are visited respectively. - New
wrap-mainpass that generates a top-levelmaincomponent if the top-level component is not named that. - Pretty printer prints code more tersely.
- Remove necessary indentation inlined verilog primitives
- Add new
discover-externalpass to transform inlined cells into@externalcells - Implementation of
staticprimitives and components and finish work on static milestone paving way for deprecation of the@staticattribute. - Get rid of generation of
initialblocks and the--disable-initflag.
- The core compilation primitives are included in the compiler distribution eliminating reliance on the primitives path.
- Add new
data-path-inferpass to infer@dataannotation allowing more backend optimization - Distribute
calyxandfutilbinaries together and show deprecation warning for the latter.
- Initial release with seperate Calyx crates and the new
staticprimitives