Chisel3 Versions Save

Chisel: A Modern Hardware Design Language

v6.3.0

3 weeks ago

Features

  • Add DeletedPath for targets that no longer exist. (backport #3937) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3938) Sometimes a generator wants to emit a Path that targets some Data, but that Data isn't always produced by the generator. The DeletedPath can be used to represent the presence of a Path, but the absence of a Data in this case.
  • Add requireIsAnnotatable for better errors when annotating literals (backport #3968) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3971) This gives much better error messages when accidentally dontTouching a literal

Performance

Fixes

Documentation

Build and Internal Changes

Full Changelog: https://github.com/chipsalliance/chisel/compare/v6.2.0...v6.3.0

v5.2.0

3 weeks ago

Features

Backend Code Generation

Fixes

Documentation

Dependency Updates

Build and Internal Changes

Full Changelog: https://github.com/chipsalliance/chisel/compare/v5.1.0...v5.2.0

v6.2.0

2 months ago

Features

Fixes

Documentation

Dependency Updates

Build and Internal Changes

Full Changelog: https://github.com/chipsalliance/chisel/compare/v6.1.0...v6.2.0

v6.1.0

2 months ago

Features

Fixes

Documentation

Dependency Updates

Build and Internal Changes

Full Changelog: https://github.com/chipsalliance/chisel/compare/v6.0.0...v6.1.0

v7.0.0-M1

2 months ago

Features

API Modification

  • Refactor panama binding and converter framwork (by @sequencer in https://github.com/chipsalliance/chisel/pull/3754)
  • Change the width of static shift right (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3824)
    • A UInt shifted right by a static amount >= its width will now result in a 0-bit UInt
    • An SInt shifted right by a static amount >= its width will now result in a 1-bit SInt (the sign bit) This is a change for SInts which Chisel would treat the output as a 0-bit SInt. However, FIRRTL implemented different behavior where both UInts and SInts would result in 1-bit values (which shifted right by an amount >= the width of the input). Users can emulate the old behavior by providing CLI option --use-legacy-shift-right-width. Users are encouraged to generate Verilog with and without this option and diff it to ensure the width change does not affect the correctness of their design. Note that this option is purely for code migration and should not be used long term--it will eventually be removed.
  • Bump to firtool-resolver 2.0.0 (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3855) This change should be non-breaking for the vast majority of users; however, it does have a substantial impact on Chisel's transitive dependencies which could affect some users. The following transitive dependencies were dropped:
    • com.github.luben:zstd-jni:1.5.5-10
    • com.github.plokhotnyuk.jsoniter-scala::jsoniter-scala-core:2.13.5.2
    • com.lihaoyi::sourcecode:0.3.1
    • com.outr::moduload:1.1.7
    • com.outr::perfolation:1.2.9
    • com.outr::scribe:3.13.0
    • commons-io:commons-io:2.15.0
    • io.get-coursier.jniutils:windows-jni-utils:0.3.3
    • io.get-coursier::coursier-cache:2.1.8
    • io.get-coursier::coursier-core:2.1.8
    • io.get-coursier::coursier-proxy-setup:2.1.8
    • io.get-coursier::coursier-util:2.1.8
    • io.get-coursier::coursier:2.1.8
    • io.github.alexarchambault.windows-ansi:windows-ansi:0.0.5
    • io.github.alexarchambault:concurrent-reference-hash-map:1.1.0
    • javax.inject:javax.inject:1
    • org.apache.commons:commons-compress:1.24.0
    • org.apache.xbean:xbean-reflect:3.7
    • org.codehaus.plexus:plexus-archiver:4.9.0
    • org.codehaus.plexus:plexus-classworlds:2.6.0
    • org.codehaus.plexus:plexus-container-default:2.1.1
    • org.codehaus.plexus:plexus-io:3.4.1
    • org.codehaus.plexus:plexus-utils:4.0.0
    • org.fusesource.jansi:jansi:1.18
    • org.iq80.snappy:snappy:0.4
    • org.slf4j:slf4j-api:1.7.36
    • org.tukaani:xz:1.9
    • org.virtuslab.scala-cli::config:0.2.1 Any users experiencing issues should consider manually adding whichever of these dependencies they may be relying on.

Backend Code Generation

Fixes

Documentation

Dependency Updates

Build and Internal Changes

Full Changelog: https://github.com/chipsalliance/chisel/compare/v6.0.0...v7.0.0-M1

v6.0.0

3 months ago

v6.0.0-RC2

3 months ago

Features

  • Add ModuleChoice and Groups (by @nandor in https://github.com/chipsalliance/chisel/pull/3683) Added support for the post-generation configuration of designs. Instance choices allow multiple, option-dependent targets to be specified for a single option, picking an implementation in the downstream flow.
  • make SRAM targets accessible from SRAMInterface (by @debs-sifive in https://github.com/chipsalliance/chisel/pull/3728) Makes SRAM targets accessible from SRAMInterfaces instantiated via the SRAM object, which sets the underlying field in SRAMInterface.

API Modification

  • Promote FlatIO to package chisel3 (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3727)
  • Make chisel3.internal.firrtl.* private (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3732)
    • Width, KnownWidth, and Unknown width promoted to package chisel3
    • Other classes moved to new package private chisel3.internal.firrtl.ir
  • Delete many old deprecated APIs (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3733)
    • trait AutoCloneType (its always enabled, the trait is a no-op)
    • chisel3.experimental.ChiselEnum (use chisel3.ChiselEnum)
    • chisel3.experimental.EnumType (use chisel3.EnumType)
    • chisel3.experimental.EnumType (use chisel3.reflect.DataMirror)
    • chisel3.internal.requireIsHardware (use chisel3.experimental.requireIsHardware)
    • chisel3.internal.requireIsChiselType (use chisel3.experimental.requireIsChiselType)
    • chisel3.internal.sourceinfo.* (use chisel3.experimental.sourceinfo.*)
    • chisel3.internal.prefix (use chisel3.experimental.prefix)
    • chisel3.internal.noPrefix (use chisel3.experimental.noPrefix)
    • chisel3.internal.ChiselException (use chisel3.ChiselException)
    • chisel3.internal.InstanceId (use chisel3.InstanceId)
    • trait BackendCompilationUtilities
    • chisel3.util.MuxLookup(key, default, mapping) (use chisel3.util.MuxLookup(key, default)(mapping), it has much better type inferencing behavior)
  • Clean up Bindings deprecations (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3736)
    • Make already deprecated APIs package private
    • Add deprecation warnings to a few that we missed

Performance

  • Share the globalNamespace in the DynamicContext used for Definition. (by @mikeurbach in https://github.com/chipsalliance/chisel/pull/3700) When creating large numbers of Definitions, copying the globalNamespace back and forth becomes a performance bottleneck.

Fixes

Documentation

Dependency Updates

  • Bump firtool-resolver to 1.1.0 (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3696) The logic for
    • If FIRTOOL_PATH is set, the --version regex failing no longer will return fail, instead it will set version to <unknown>.
    • If FIRTOOL_PATH is set and something fails (firtool not found or cannot execute the binary), then the error will be returned rather than firtool-resolver falling back to fetching the default version.
    • Errors from running firtool will be logged and returned rather than unconditionally turned into "Firtool binary not on FIRTOOL_PATH".
  • Bump firtool resolver to 1.2.0 (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3702) Now it will fetch llvm-firtool with classifier for the current system rather than the full artifact which contains binaries for all platforms.
  • Bump firtool-resolver to 1.3.0 (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3719) To override which firtool is used by Chisel, users can set environment variable CHISEL_FIRTOOL_PATH.
  • [cd] Bump CIRCT from firtool-1.61.0 to firtool-1.62.0 (by @chiselbot in https://github.com/chipsalliance/chisel/pull/3725)

Build and Internal Changes

  • Exclude docs project from Unidoc

Full Changelog: https://github.com/chipsalliance/chisel/compare/v6.0.0-RC1...v6.0.0-RC2

v6.0.0-RC1

5 months ago

Features

API Modification

Backend Code Generation

Fixes

  • For ModuleTargets, use the OMInstanceTarget target type, like for InstanceTargets
  • Add a new API to request "member" target types
  • set sample_element's probeInfo for Vecs (by @debs-sifive in https://github.com/chipsalliance/chisel/pull/3611) For Vecs, also set the probeInfo of their sample_element, which is used to determine its element type.
  • Add type ascription to implicits from instantiable (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3615) This fixes Scala compiler warnings in Scala 2.13.12 requiring type ascriptions on public implicit definitions.
  • Enable checkConnect for Property types in MonoConnect. (by @mikeurbach in https://github.com/chipsalliance/chisel/pull/3635) Property types never actually called the helper that was factored out of MonoConnect specifically for them. Upon adding this, it turned out that they never had assignCompatDir called either, and this was leaving directions unspecified in aggregates. Both of these have probably lingered since Property types were made subclasses of Data again. This addresses both omissions, leading to earlier error checking for Property type connections.

Documentation

Dependency Updates

Build and Internal Changes

Uncategorized

Full Changelog: https://github.com/chipsalliance/chisel/compare/v6.0.0-M3...v6.0.0-RC1

v5.1.0

5 months ago

Features

  • Fix color emission to check for interactive terminal (backport #3334) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3336)
    • Chisel will now detect when it should print warnings, errors, and deprecations in color.
    • Color can be controlled with environment variable CHISEL_USE_COLOR. Set to true to force Chisel to use color and false to disable it.
    • Due to how the JVM works, detection requires interactive stdout, stderr, and stdin. Build tools like SBT virtualize stdin and thus color will be disabled by default when running a Chisel main with SBT. Detection also requires environment variable TERM to be set to something other than dumb.
  • Add support for Instantiate for BlackBox, ExtModule, and IntrinsicModule (backport #3349) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3351)
  • Add support for zero-width bit extraction (backport #3352) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3354)
  • Implement a SyncReadMem wrapper with explicit read, write, and read/write ports (backport #3228) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3362) This SyncReadMem wrapper is instantiated using a new object, SRAM.apply, and invokes .write, .read, and .readWrite to generate a desired number of read, write, and read/write ports. This function returns a new Bundle wire containing the control signals for each requested port.
  • SRAM API: Add a parameter to initialize the memory (backport #3364) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3380) SRAM.apply and SRAM.masked now take a contents parameter, by default a None, which is a string path to a binary file on the filesystem which the SRAM should be initialized with.
  • Support literals and DontCare in DataView targets (backport #3389) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3391)
  • SRAM API: Add multiple-clocked port API (backport #3383) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3405) Add new SRAM APIs that take three Clock sequences as parameters instead of the number of read/write/read-write ports. This will sequentially instantiate a memory port for each clock in the Clock sequence and drive them accordingly.
  • Add support for configurable warnings (backport #3414) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3431) Add support for configurable warnings, see https://www.chisel-lang.org/chisel3/docs/explanations/warnings.html
  • Enrich ShiftRegister with SyncReadMem-based implementation. (backport #2891) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3571) Supplement ShiftRegister with SyncReadMem-based implementation.
  • Add --dump-fir option to ChiselStage (backport #3453) (by @mergify[bot] in https://github.com/chipsalliance/chisel/pull/3456) This option will dump the .fir before invoking firtool.
    • Additional changes:
      • Use os.lib for invoking firtool
      • Use lazy serialization to avoid holding the entire FIRRTL in memory.
      • Mix NoStackTrace into FirtoolNotFound
      • Fix detection of no firtool

API Deprecation

Performance

Fixes

Documentation

Dependency Updates

Build and Internal Changes

Full Changelog: https://github.com/chipsalliance/chisel/compare/v5.0.0...v5.1.0

v6.0.0-M3

8 months ago

Features

  • Additional changes:
    • Use os.lib for invoking firtool
    • Use lazy serialization to avoid holding the entire FIRRTL in memory.
    • Mix NoStackTrace into FirtoolNotFound
    • Fix detection of no firtool
  • Module.clockOption and Module.resetOption return Option[Clock] and Option[Reset]
  • Add Boolean Property type (by @adkian-sifive in https://github.com/chipsalliance/chisel/pull/3503) API Modification: Add Boolean support to Property API
  • Implement CIRCT converter (by @SpriteOvO in https://github.com/chipsalliance/chisel/pull/3466)
  • Add Disable, a new API for disabling simulation constructs (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3497) Disable is a new type that represents the concept of disabling a simulation construct. It is handled similarly to the implicit clock and reset except Disable is notionally a function of the current implicit reset. Its default value is "not has been reset", a two-state simulation-only construct that is 0 when simulation starts and only becomes 1 after reset has been asserted, and then de-asserted. Because Disable has simulation-only semantics, it is not a Data and can only be used by simulation-only APIs.

API Modification

API Deprecation

  • Deprecate calling .viewAs on non-hardware (by @jackkoenig in https://github.com/chipsalliance/chisel/pull/3395) Also fix a crash that could occur when viewing a non-Data containing non-hardware Data.
  • Deprecate old BoringUtils API (by @jared-barocsi in https://github.com/chipsalliance/chisel/pull/3428) BoringUtils.bore(source, sinks), BoringUtils.addSource and BoringUtils.addSink are now deprecated in favor of the new BoringUtils APIs: BoringUtils.bore(source), BoringUtils.tap(source) ...

Backend Code Generation

Performance

Fixes

Documentation

Dependency Updates

Build and Internal Changes

Full Changelog: https://github.com/chipsalliance/chisel/compare/v6.0.0-M2...v6.0.0-M3