Chisel v5.1.0
Features
- Fix color emission to check for interactive terminal (backport #3334) (by @mergify[bot] in #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 totrue
to force Chisel to use color andfalse
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 thandumb
.
- Add support for Instantiate for BlackBox, ExtModule, and IntrinsicModule (backport #3349) (by @mergify[bot] in #3351)
- Add support for zero-width bit extraction (backport #3352) (by @mergify[bot] in #3354)
- Implement a SyncReadMem wrapper with explicit read, write, and read/write ports (backport #3228) (by @mergify[bot] in #3362)
ThisSyncReadMem
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 newBundle
wire containing the control signals for each requested port. - SRAM API: Add a parameter to initialize the memory (backport #3364) (by @mergify[bot] in #3380)
SRAM.apply
andSRAM.masked
now take acontents
parameter, by default aNone
, 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 #3391)
- SRAM API: Add multiple-clocked port API (backport #3383) (by @mergify[bot] in #3405)
Add newSRAM
APIs that take threeClock
sequences as parameters instead of the number of read/write/read-write ports. This will sequentially instantiate a memory port for each clock in theClock
sequence and drive them accordingly. - Add support for configurable warnings (backport #3414) (by @mergify[bot] in #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 #3571)
Supplement ShiftRegister with SyncReadMem-based implementation. - Add --dump-fir option to ChiselStage (backport #3453) (by @mergify[bot] in #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
- Additional changes:
API Deprecation
- Deprecate calling .viewAs on non-hardware (backport #3395) (by @mergify[bot] in #3400)
Also fix a crash that could occur when viewing a non-Data containing non-hardware Data.
Performance
- Convert Vec dynamic index with a literal to static index (backport #3314) (by @mergify[bot] in #3319)
- Fix issue where reify would do the same lookup twice (backport #3392) (by @mergify[bot] in #3397)
- Optimize source locator escaping when emitting FIRRTL (backport #3439) (by @mergify[bot] in #3449)
Only escape/unescape source locators that need it, avoids a String copy in the common case.
Fixes
- Gate sys/personality.h include under define (backport #3307) (by @mergify[bot] in #3308)
- Don't emit implicit clock warnings for
SyncReadMem.readWrite
when explicit clocks are used (backport #3313) (by @mergify[bot] in #3316) - Make svsim shutdown gracefully when the test throws an exception (backport #3309) (by @mergify[bot] in #3310)
- Fixed an issue where throwing an
assert
from ansvsim
simulation run may kill the simulated process before it can finish writing a waveform.
- Fixed an issue where throwing an
- Report Builder errors even when exception is thrown (backport #3341) (by @mergify[bot] in #3343)
Chisel will to 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. - Add messages to require statements in Math (backport #3385) (by @mergify[bot] in #3388)
- log2 functions
- unsignedBitLength
- [svsim] Don't redirect simulation stderr to a pipe (backport #3403) (by @mergify[bot] in #3406)
- Fixes an issue where simulations that logged to
stderr
could hang
- Fixes an issue where simulations that logged to
- Sanitize Record._elements (backport #3419) (by @mergify[bot] in #3427)
Fixes a bug in D/I where unsanitary names would lead to a crash. It also makes the Printable output for Bundles and Records use the sanitary names which makes them better match the FIRRTL. - Restore BundleUpcastable (backport #3487) (by @mergify[bot] in #3494)
Restore BundleUpcastable and deprecate it. - Fix DataMirror.internal.chiselTypeClone to preserve Scala type (backport #3553) (by @mergify[bot] in #3555)
- Fix Decodetable (backport #3563) (by @mergify[bot] in #3580)
- Add type ascription to implicits from instantiable (backport #3615) (by @mergify[bot] in #3618)
This fixes Scala compiler warnings in Scala 2.13.12 requiring type ascriptions on public implicit definitions.
Documentation
- Remove references to interval types from the website docs (backport #3345) (by @mergify[bot] in #3348)
Fixes #3325 - Bring ToC and Menu into alignment, some minor cleanup within docs (backport #3346) (by @mergify[bot] in #3347)
Fix #3322 - Changed Array to Seq in MuxLookup explantation (backport #3547) (by @mergify[bot] in #3550)
Dependency Updates
- Add Scala 2.13.11 and 2.12.18 to plugin cross versions (backport #3327) (by @mergify[bot] in #3330)
- Bump to firtool 1.43.0 (backport #3332) (by @mergify[bot] in #3333)
See release notes for firtool 1.41.0, 1.42.0, and 1.43.0. - Add support for Scala 2.13.12 to the compiler plugin (backport #3527) (by @mergify[bot] in #3530)
Build and Internal Changes
- [5.x] Enable MiMa for v5.0.0 (by @chiselbot in #3290)
- [CI] Update versions in CI Workflow (backport #3291) (by @mergify[bot] in #3292)
- upgrade mill to 0.11.0 (backport #3367) (by @mergify[bot] in #3407)
Full Changelog: v5.0.0...v5.1.0