Skip to content

Chisel v6.0.0-M2

Pre-release
Pre-release
Compare
Choose a tag to compare
@jackkoenig jackkoenig released this 16 Jun 17:42
435d5cc

Features

  • Add Top-level parameterized reset type (by @mwachs5 in #3276)
    Add a HasParameterizedResetType to mix into Modules for their top level .reset
  • Allow out-of-package svsim backend implementations (by @GeorgeLyon in #3306)
    • Allow users of chisel to specify their own svsim.Backend implementations outside of Chisel. This is useful since in-tree backends may not support all versions of the specified backend (and we don't necessarily want them to).
  • Support ref types on interfaces (by @trilorez in #3301)
  • Fix color emission to check for interactive terminal (by @jackkoenig in #3334)
    • 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.
  • Unify recursive Data traversals into DataMirror (by @jared-barocsi in #3300)
  • Add support for Instantiate for BlackBox, ExtModule, and IntrinsicModule (by @jackkoenig in #3349)
  • Add support for zero-width bit extraction (by @jackkoenig in #3352)
  • Add basic linear temporal logic assertions (by @fabianschuiki in #3337)
  • Implement a SyncReadMem wrapper with explicit read, write, and read/write ports (by @jared-barocsi in #3228)
    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.

API Modification

  • Create "tap" API for boring probe-type (non-synthesizable) ports (by @debs-sifive in #3237)
    Create "tap" API for boring probe-type (non-synthesizable) ports.
  • BoringUtils writable tap (rwTap) API (by @debs-sifive in #3284)
    Add writable tap (rwTap) API to BoringUtils, which drills writable probe ports downwards only.
  • Remove support for Scala 2.12 (by @jackkoenig in #3331)
    Chisel 5 was the last major version supporting Scala 2.12, please upgrade to Scala 2.13.

API Deprecation

Backend Code Generation

Performance

Fixes

  • Gate sys/personality.h include under define (by @trilorez in #3307)
  • Make svsim shutdown gracefully when the test throws an exception (by @GeorgeLyon in #3309)
    • Fixed an issue where throwing an assert from an svsim simulation run may kill the simulated process before it can finish writing a waveform.
  • Don't emit implicit clock warnings for SyncReadMem.readWrite when explicit clocks are used (by @jared-barocsi in #3313)
  • Report Builder errors even when exception is thrown (by @jackkoenig in #3341)
    Chisel will report multiple errors, but this can be cut short by any thrown Exception which would then take precedence over the previously encountered errors. Now Chisel will prioritize reporting errors even if an Exception is thrown.
  • Support linking ref types on interfaces (by @trilorez in #3326)

Documentation

Dependency Updates

Build and Internal Changes

  • SemanticDB requires private fields of case class to use "val" (by @jackkoenig in #3270)
  • Update PULL_REQUEST_TEMPLATE.md (by @mwachs5 in #3279)
    Update PR template to be less comment-driven
  • [CI] Update versions in CI Workflow (by @jackkoenig in #3291)
  • Update ChiselRunners to use svsim (by @GeorgeLyon in #3147)
    • All ChiselRunner tests now use svsim when calling assertTester{Passes,Fails}
  • Add tests for using DataView with ref types (by @trilorez in #3320)
  • Update sbt to 1.9.0 (by @scala-steward in #3339)
  • Update sbt-scalafix to 0.11.0 (by @scala-steward in #3338)
  • Make devcontainer point to CIRCT top-of-tree instead of latest release (by @GeorgeLyon in #3360)
    • VSCode devcontainer now follows CIRCT top-of-tree rather than latest release

Full Changelog: v6.0.0-M1...v6.0.0-M2