Chisel v3.6.1
Features
- Implement read-write memory accessors for SyncReadMem (backport #3190) (by @mergify[bot] in #3213)
- Allow DataView of Reset <=> [UInt<1>, AsyncReset] (backport #3181) (by @mergify[bot] in #3258)
- Fix color emission to check for interactive terminal (backport #3334) (by @mergify[bot] in #3335)
- 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
.
- Color can be controlled with environment variable
- Chisel will now detect when it should print warnings, errors, and deprecations in color.
- Implement a SyncReadMem wrapper with explicit read, write, and read/write ports (backport #3228) (by @mergify[bot] in #3361)
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 #3379)
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 #3390)
- SRAM API: Add multiple-clocked port API (backport #3383) (by @mergify[bot] in #3404)
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 Instance.suggestName (backport #2886) (by @mergify[bot] in #3723)
AddssuggestName
API for hierarchy instances. - Implement typeName API for stable Module names (backport #3130) (by @mergify[bot] in #4145)
This gives a flexible way to generate a stable name for a Chisel type, which is useful for problems like generating stable names forModules
andQueues
API Deprecation
- Deprecate calling .viewAs on non-hardware (backport #3395) (by @mergify[bot] in #3399)
Also fix a crash that could occur when viewing a non-Data containing non-hardware Data.
Backend Code Generation
- Don't emit nodes when calling .asBool on a Bool (backport #3637) (by @mergify[bot] in #3638)
This results in a slight improvement to emitted FIRRTL quality
Performance
- Optimize BitPat equals, overlap, and cover (backport #3285) (by @mergify[bot] in #3287)
- Convert Vec dynamic index with a literal to static index (backport #3314) (by @mergify[bot] in #3318)
- Fix issue where reify would do the same lookup twice (backport #3392) (by @mergify[bot] in #3396)
Fixes
- Fix Instantiate for Product parameters (backport #3210) (by @mergify[bot] in #3217)
- Don't emit implicit clock warnings for
SyncReadMem.readWrite
when explicit clocks are used (backport #3313) (by @mergify[bot] in #3315) - Report Builder errors even when exception is thrown (backport #3341) (by @mergify[bot] in #3342)
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 #3387)
- log2 functions
- unsignedBitLength
- log2 functions
- Sanitize Record._elements (backport #3419) (by @mergify[bot] in #3426)
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. - Fix DataMirror.internal.chiselTypeClone to preserve Scala type (backport #3553) (by @mergify[bot] in #3554)
- Fix Decodetable (backport #3563) (by @mergify[bot] in #3579)
- Add type ascription to implicits from instantiable (backport #3615) (by @mergify[bot] in #3617)
This fixes Scala compiler warnings in Scala 2.13.12 requiring type ascriptions on public implicit definitions. - Support === on empty Aggregates (backport #3747) (by @mergify[bot] in #3749)
- Fix
Reg()
to properly handle clocks as rvalues (backport #3775) (by @mergify[bot] in #3778)- Clocks are now properly supported by
DataView
(includingFlatIO
) - Users will also received better error messages when providing invalid clocks to
Reg()
- Clocks are now properly supported by
- Report source locator in when scoping error messages (backport #3804) (by @mergify[bot] in #3806)
- Fix === for abstract Reset types (backport #3979) (by @mergify[bot] in #3980)
Previously, the function would infinitely recurse resulting in a stack overflow. - Fix widths for literal values in Bundle literals (backport #4082) (by @mergify[bot] in #4090)
Previously, the user-specified (or unspecified minimum width) of the literal would be used in some operations like concatenation. For literal values that are too-wide, they will now truncate to the correct width. This will become a warning (then later an error) in newer major versions of Chisel.
Documentation
- [fix] typo fix: chosen port of arbiter is not onehot but UInt (backport #3235) (by @mergify[bot] in #3260)
Just a oneline fix to the comment of Arbiter chosen port - Changed Array to Seq in MuxLookup explantation (backport #3547) (by @mergify[bot] in #3549)
- Update CONTRIBUTING.md (backport #3785) (by @mergify[bot] in #3786)
Update CONTRIBUTING instructions to clarify backport process and branch to target. - [website] Update chisel-template repo link to chipsalliance (backport #3871) (by @mergify[bot] in #3894)
- Rename Scala CLI template to example (backport #3917) (by @mergify[bot] in #3918)
Existing links tohttps://github.com/chipsalliance/chisel/releases/latest/download/chisel-template.scala
should instead usehttps://github.com/chipsalliance/chisel/releases/latest/download/chisel-example.scala
- Add a test for issue 4159 (backport #4161) (by @mergify[bot] in #4164)
Dependency Updates
- Add Scala 2.13.11 and 2.12.18 to plugin cross versions (backport #3327) (by @mergify[bot] in #3329)
- Add support for Scala 2.13.12 to the compiler plugin (backport #3527) (by @mergify[bot] in #3529)
- Add Scala 2.13.13 to cross-build (backport #3851) (by @mergify[bot] in #3862)
- Add Scala 2.13.14 to cross-build (backport #4044) (by @mergify[bot] in #4045)
Build and Internal Changes
- Read previousVersions for bincompat checking from a file (backport #3202) (by @mergify[bot] in #3207)
- Add workflow to automatically update binary compatibility checks (backport #3242) (by @mergify[bot] in #3249)
- Add new workflow to fixup backports for release notes (backport #3252) (by @mergify[bot] in #3253)
Improve backport automation so that release notes generation from backport PRs works properly. - SemanticDB requires private fields of case class to use "val" (backport #3270) (by @mergify[bot] in #3271)
- Fix BuildInfo in 3.6.x (by @sequencer in #3371)
- Update Scala CLI Template (backport #3757) (by @mergify[bot] in #3758)
- Use "dep" instead of deprecated "lib"
- Move ChiselStage import above
import chisel3._
- This makes users less likely to run into issues adding
import chisel3.util._
- This makes users less likely to run into issues adding
- Bump versions in Github workflows
- Enhance release notes automation (backport #3751) (by @mergify[bot] in #3776)
- Bump
mikepenz/release-changelog-builder-action
to v4.1.1 - It now tabs every line included in the Release Notes section of the PR template
- Bump
- [ci] Stop copying body over to backports in backport-fixup (backport #4005) (by @mergify[bot] in #4048)
- [3.6.x] Modernize Release Flow (by @jackkoenig in #4213)
Full Changelog: v3.6.0...v3.6.1