Skip to content

Releases: chipsalliance/chisel

Chisel v7.1.1

27 Sep 23:50
5cb6aa7

Choose a tag to compare

Fixes

  • Rename private[chisel3] SourceInfo$Intf to SourceInfoIntf (by @jackkoenig in #5033)
    This works around an issue in IntelliJ around using the macro to materialize SourceInfo.

Documentation

Build and Internal Changes

Full Changelog: v7.1.0...v7.1.1

Chisel v7.1.0

22 Sep 22:18
40c1f46

Choose a tag to compare

Features

Fixes

  • Fix construction of PseudoModules to have correct parent (by @jackkoenig in #5012)
    This fixes subtle bugs where accessing children of an Instance (whether directly or by using Select APIs) could change the result of future Select to be incorrect. For example, a call to Select.unsafe.allCurrentInstancesIn could cause Select.unsafe.currentInstancesIn to also incorrectly include grandchildren and all other transitive children.
  • [svsim] Update c++ CFLAGS for verilator from c++14 to c++17 (by @Gallagator in #5017)
    Verilator CFLAGS bumped from c++14 to c++17
  • Overload Stage methods to use Seq[Annotation] (by @jackkoenig in #5030)
    Also deprecate the older forms using AnnotationSeq.

Documentation

  • [docs] Update layer docs for temporal layer, NFC (by @seldridge in #5020)
  • [docs] Fix duplicate versions in Firrtl Version table (by @jackkoenig in #5025)
    Also refactor some build util code to be Tasks so they can be cached on disk.
  • [doc] Document temporal layers and ChiselSim (by @seldridge in #5027)

Dependency Updates

  • [cd] Bump CIRCT from firtool-1.128.0 to firtool-1.129.0 (by @chiselbot in #5010)
  • [cd] Bump CIRCT from firtool-1.129.0 to firtool-1.130.0 (by @chiselbot in #5015)
  • [cd] Bump CIRCT from firtool-1.130.0 to firtool-1.131.0 (by @chiselbot in #5021)

Build and Internal Changes

Full Changelog: v7.0.0...v7.1.0

Chisel v7.0.0

08 Sep 20:45
c1ed928

Choose a tag to compare

Features

  • Preserve UInt and SInt literals across .pad (by @jackkoenig in #4156)
  • Add support for marking things as readOnly (by @jackkoenig in #4190)
    Users can call .readOnly on any Data to prevent connections to the returned value. Resolves #1267.
  • Add ChiselStage.emitCHIRRTLFile (by @jackkoenig in #4232)
    Emits a file without returning the serialized object which is more memory efficient and supports > 2 GiB of serialized FIRRTL text.
  • Make requireTypeEquivalent public and add context message (by @mwachs5 in #4243)
    Make Add a contextual message to Data.requireTypeEquivalent and expose a public API in DataMirror.requireTypeEquivalent, to make it easier for user code to have good error messages when requiring type equivalence between two chisel Datas
  • Add map method for Valid (by @tymcauley in #4255)
    Users can now apply a function f to the bits field of a Valid instance with the new Valid.map(f) method.
  • Add more information when probe types don't match (by @mwachs5 in #4269)
    Add more information to the error message when attempting to probe.define to a mismatched chisel type.
  • Add AffectsChiselName (by @adkian-sifive in #4283)
    Adds new trait AffectsChiselName that adds support for naming user-defined types
  • Add --remap-layers to ChiselStage (by @seldridge in #4322)
  • Add common layers to Chisel (by @seldridge in #4326)
  • Add skipIfAlreadyInBlock arg to layer.block (by @seldridge in #4327)
  • Add skipIfLayersEnabled param to layer.block (by @seldridge in #4346)
  • Add layer.elideBlocks API (by @seldridge in #4348)
  • Make layer.addLayer API public (by @seldridge in #4349)
  • Add Property expression for list concatenation. (by @mikeurbach in #4347)
    This adds a list concatenation operation for Property[Seq[T]], using the same typeclass approach used for other Property expressions.
  • Add support for circt.OutputDirAnnotation. (by @dtzSiFive in #4352)
    Expose capability to request a Module be placed in a specific directory.
    Functions as with Layer output directories.
  • Make '--module' support arguments (by @seldridge in #4358)
  • Add DataMirror API for currentInstancePorts. (by @mikeurbach in #4362)
    This allows users to query an Instance without it being closed or forcing it to close, which can be useful in atModuleBodyEnd and other scenarios.
  • Add experimental Select APIs for current instances in a BaseModule. (by @mikeurbach in #4363)
    This is useful in situations like atModuleBodyEnd to reflect on the current BaseModule before it is closed.
  • Add Path.apply() to support HasTarget (by @debs-sifive in #4364)
    Adds Path.apply() function that support HasTargets, so that the paths of things that extend HasTarget, like SRAM, can be put into properties.
  • feat: implement SerializableModuleElaborator (by @unlsycn in #4409)
    Add SerializableModuleElaborator
  • Add SourceLocator for Sequence (by @unlsycn in #4436)
    Add source locator for Sequence
  • Add Property expression for integer shift left (by @maerhart in #4440)
    This adds an API for integer Property shift left.
  • Support creation of Paths from HasTargets (by @debs-sifive in #4455)
  • Add --firtool-option arg to ChiselStage (by @seldridge in #4463)
  • switch SRAMDescription to Class (by @sequencer in #4437)
  • add additionalAnnotations for SerializableModuleElaborator (by @sequencer in #4477)
  • Implement Lookupable for HasTarget (used by SRAM) (by @jackkoenig in #4481)
  • Allow BoringUtils to use existing port in a closed module (by @tmckay-sifive in #4484)
    When trying to drill a port, it doesn't matter if the module is closed. We do not need to construct new hardware and can just use the existing port.
  • Implement Lookupable for Unit (by @jackkoenig in #4497)
  • [Module] Add afterModuleBuilt hook (by @fabianschuiki in #4479)
    The new afterModuleBuilt hook can be used to schedule code to be executed once a module has been fully generated and its definition is available. This allows further collateral such as unit tests to be generated alongside a module.
  • Add withModulePrefix (by @mmaloney-sf in #4487)
  • Add AutoBlackbox (by @unlsycn in #4495)
  • Add new InlineInstanceAllowDedup trait (by @rwy7 in #4508)
  • Add module prefixing to BaseModule definitions (by @jackkoenig in #4509)
    • BaseModule.localModulePrefix can be used to set a prefix for the module and its children.
    • BaseModule.localPrefixAppliesToSelf (defaults to true) allows the module to exclude itself from the prefix.
    • localModulePrefix composes with prefixes added via withModulePrefix.
  • feat: add CIRCTSRAMInterface (by @unlsycn in #4494)
    Add CIRCTSRAMInterface
  • Add APIs to omit module prefix separator (by @jackkoenig in #4532)
    • withModulePrefix now optionally takes a 2nd parameter includeSeparator (passing false will omit separator).
    • Overriding localModulePrefixUseSeparator in a Module to false will omit separator for local prefix applied by overriding localModulePrefix in that Module.
  • feat: add SRAMBlackBox (by @unlsycn in #4544)
  • Add partial cross-compilation for Scala 3 (by @adkian-sifive in #4549)
    Adds initial support for Scala 3 LTS version 3.3.3
  • [util] Add a withShadowLayer Queue (by @seldridge in #4589)
  • Add FormalTest marker (by @fabianschuiki in #4635)
  • [core] Add layer block that returns colored wire (by @seldridge in #4623)
  • Add UnitTest marker and test discovery utility (by @fabianschuiki in #4642)
  • [chiselsim] Add Default (non-Ephemeral) Simulator (by @seldridge in #4665)
  • [Chiselsim] Add WithTestingDirectory (by @seldridge in #4669)
  • [chiselsim] Rewrite EphemeralSimulator in terms of DefaultSimulator (by @seldridge in #4675)
  • [chiselsim] Add, use HasSimulator type class (by @seldridge in #4678)
  • [firrtl] Add, use dramaticMessage (by @seldridge in #4684)
  • [chiselsim] Add SimulatorAPI, reduce DefaultSimulator to nothing (by @seldridge in #4680)
  • [chiselsim] Add ChiselSim APIs (by @seldridge in #4685)
  • Add simple API for generating testharnesses inline (by @tmckay-sifive in #4629)
    Add an API to generate testharnesses inline that are emitted as additional public modules in the output.
  • Dev/seldridge/switch to chisel settings (by @seldridge in #4708)
  • Add RequireProperty and EnsureProperty (by @fabianschuiki in #4681)
  • [chiselsim] Add FIRRTL macro control (by @seldridge in #4699)
  • [Chiselsim] Replace Chiselspec w/ ChiselSim (by @seldridge in #4706)
  • [testing] Add FileCheck API (by @seldridge in #4749)
  • Add formal contracts (by @fabianschuiki in #4682)
  • [testing] Add HasTestingDirectory subdir factory (by @seldridge in #4774)
  • [chiselsim] Allow command line options to be passed to ChiselSim tests (by @seldridge in #4773)
  • [scalatest] Add HasCliSimulator (by @seldridge in #4776)
  • Change Data._fromUInt to protected (by @jackkoenig in #4782)
    This enables external libraries like FixedPoint to override it. This is not an ideal API, but it works until we have a better way to do this.
  • [chiselsim] Add ControlAPI w/ Waveform Enable/Disable Support (by @seldridge in #4779)
  • [ChiselSim] Factor reset procedure out of SimulatorAPI and into stimulus (by @seldridge in #4784)
    -...
Read more

Chisel v7.0.0-RC4

29 Aug 17:53
c1ed928

Choose a tag to compare

Chisel v7.0.0-RC4 Pre-release
Pre-release

Features

  • Add PopCount compare functions to reduce circuitry for common cases (by @maartenboersma in #5002)
    Can call PopCount.greaterThan(n), PopCount.equalTo(n), PopCount.atLeast(n). If n is such that it allows for optimization, the generated circuitry is cheaper and faster compared to "first PopCount, then compare".

API Modification

  • Make ChiselEnum width inference consider known-width Value() literals (by @CSharperMantle in #4990)
    The inferred width for a ChiselEnum using Value() now correctly accommodates both known-width values and the largest specified literal integer. Closes #4989.

Backend Code Generation

  • Support emitting variadic cat (by @jackkoenig in #4992)
    This should not be visible to most users unless they inspect emitted .fir. It reduces memory use, improves performance, and reduces the size of emitted .fir a little bit, ~2-5% depending on the design.
  • Bump emitted FIRRTL version to 6.0.0 (by @jackkoenig in #5008)

Fixes

Dependency Updates

  • [cd] Bump CIRCT from firtool-1.125.0 to firtool-1.126.0 (by @chiselbot in #4991)
  • [cd] Bump CIRCT from firtool-1.126.0 to firtool-1.127.0 (by @chiselbot in #4998)
  • [cd] Bump CIRCT from firtool-1.127.0 to firtool-1.128.0 (by @chiselbot in #5007)

Build and Internal Changes

Full Changelog: v7.0.0-RC3...v7.0.0-RC4

Chisel v7.0.0-RC3

11 Jul 23:01
1a2980c

Choose a tag to compare

Chisel v7.0.0-RC3 Pre-release
Pre-release

Features

Dependency Updates

  • [cd] Bump CIRCT from firtool-1.124.0 to firtool-1.125.0 (by @chiselbot in #4973)
  • [cd] Bump CIRCT from firtool-1.124.0 to firtool-1.125.0 (by @chiselbot in #4974)

Build and Internal Changes

  • [Scala3] Split plugin resource files based on Scala major version (by @adkian-sifive in #4971)
    Split plugin resource files into separate directories for Scala 2 and Scala 3
  • [Scala3] Add Bundle plugin (by @adkian-sifive in #4947)
    Adds Bundle plugin
  • Upgrade to Mill 1.0.0 (by @jackkoenig in #4972)
    No SNAPSHOT publishing yet, that will be follow on work. See the Mill 1.0.0 changelog.

Full Changelog: v7.0.0-RC2...v7.0.0-RC3

Chisel v7.0.0-RC2

03 Jul 22:45

Choose a tag to compare

Chisel v7.0.0-RC2 Pre-release
Pre-release

Features

  • [core] Add Bool "implies" method (by @seldridge in #4933)
  • Add timing parameter support to Verilator backend (by @shahzaibk23 in #4934)
    Added extra option Verilator Backend for Timing option. User now has choice to either add --timing or --no-timing or nothing for this parameter, in the Verilator Args Seq
  • [svsim] Trace options for the Verilator backend (by @kammoh in #4911)
  • [chiselsim] Add Randomization.x (by @seldridge in #4939)
  • Allow bare Chisel types to be looked up from a Hierarchy (by @tmckay-sifive in #4940)
    • Allow lookup of bare Chisel types from a Hierarchy
  • [chiselsim] Add frequency control to stimulus (by @seldridge in #4942)
  • Add API to include comments in the FIRRTL (by @jackkoenig in #4949)
    This is for debugging generated FIRRTL only--comments are ignored by the FIRRTL compiler.
  • Add Lookupable for ActualDirection (by @tmckay-sifive in #4950)
    • Allow ActualDirection to be looked up from a Hierarchy
  • ChiselSim API for inline testing (by @tmckay-sifive in #4946)
    • Add a ChiselSim API for simulating inline tests
  • Add OverrideSerializationClass for custom annotation serialization (by @jackkoenig in #4953)
    Annotations can now mixin OverrideSerializationClass to customize the "class" field in annotation serialization. This allows annotation classes to reside in a different package than firtool is expecting for the class field. Note that this breaks automatic deserialization which does not matter to firtool but would matter for annotations communicating information between Chisel generator invocations.
  • ChiselSim peek/poke/expect for Enums, Records, Vecs, and generic Data (by @kammoh in #4824)

API Modification

  • Support concatenating Properties of Seq subtypes (by @debs-sifive in #4907)
  • Fail boring into module with endIOCreation set (by @azidar in #4925)
    Setting endIOCreation now also errors if any IOs are created using BoringUtils.

Fixes

  • Improve error for bad connections with null module name (by @jackkoenig in #4917)
  • [testing] Mangle more directories (by @seldridge in #4927)
  • [testing] Mangle even more directories (by @kammoh in #4928)
  • [svsim/ChiselSim] Discover the project's root directory in a sandboxed build (by @kammoh in #4931)
  • Fix naming plugin support for unapply (by @jackkoenig in #4943)
    Previously, naming support on unapply only worked for subtypes of Data, but now it works for all namable types, including user-extensible AffectsChiselName as well as non-Data Chisel built-in types: Mem, VerificationStatement, properties.DynamicObject, and Disable.

Documentation

Dependency Updates

  • [cd] Bump CIRCT from firtool-1.114.1 to firtool-1.115.0 (by @chiselbot in #4908)
  • [cd] Bump CIRCT from firtool-1.115.0 to firtool-1.116.0 (by @chiselbot in #4912)
  • [cd] Bump CIRCT from firtool-1.116.0 to firtool-1.117.0 (by @chiselbot in #4920)
  • [cd] Bump CIRCT from firtool-1.117.0 to firtool-1.118.0 (by @chiselbot in #4926)
  • [cd] Bump CIRCT from firtool-1.118.0 to firtool-1.119.0 (by @chiselbot in #4936)
  • [cd] Bump CIRCT from firtool-1.119.0 to firtool-1.120.0 (by @chiselbot in #4944)
  • [cd] Bump CIRCT from firtool-1.120.0 to firtool-1.121.0 (by @chiselbot in #4948)
  • [cd] Bump CIRCT from firtool-1.121.0 to firtool-1.122.0 (by @chiselbot in #4954)
  • [cd] Bump CIRCT from firtool-1.122.0 to firtool-1.123.0 (by @chiselbot in #4960)
  • [cd] Bump CIRCT from firtool-1.123.0 to firtool-1.123.1 (by @chiselbot in #4962)
  • [cd] Bump CIRCT from firtool-1.123.1 to firtool-1.123.2 (by @chiselbot in #4965)
  • [cd] Bump CIRCT from firtool-1.123.2 to firtool-1.124.0 (by @chiselbot in #4966)
  • Bump os-lib to 0.10.7 (by @jackkoenig in #4967)
    Also bump mdoc to 2.7.1 (but this isn't visible to users).
    Note that we are not yet bumping os-lib to 0.11 because it will raise the minimum supported JVM to 11. Similarly we are not bumping upickle to 4.0 because it does not support Scala 3.3 which is our target for Scala 3 support (because 3.3 is LTS).

Build and Internal Changes

Full Changelog: v7.0.0-RC1...v7.0.0-RC2

Chisel v7.0.0-RC1

25 Apr 17:52
d15f145

Choose a tag to compare

Chisel v7.0.0-RC1 Pre-release
Pre-release

Features

  • Add AffectsChiselName (by @adkian-sifive in #4283)
    Adds new trait AffectsChiselName that adds support for naming user-defined types
  • Add --remap-layers to ChiselStage (by @seldridge in #4322)
  • Add common layers to Chisel (by @seldridge in #4326)
  • Add skipIfAlreadyInBlock arg to layer.block (by @seldridge in #4327)
  • Add skipIfLayersEnabled param to layer.block (by @seldridge in #4346)
  • Add layer.elideBlocks API (by @seldridge in #4348)
  • Make layer.addLayer API public (by @seldridge in #4349)
  • Add Property expression for list concatenation. (by @mikeurbach in #4347)
    This adds a list concatenation operation for Property[Seq[T]], using the same typeclass approach used for other Property expressions.
  • Add support for circt.OutputDirAnnotation. (by @dtzSiFive in #4352)
    Expose capability to request a Module be placed in a specific directory.
    Functions as with Layer output directories.
  • Make '--module' support arguments (by @seldridge in #4358)
  • Add DataMirror API for currentInstancePorts. (by @mikeurbach in #4362)
    This allows users to query an Instance without it being closed or forcing it to close, which can be useful in atModuleBodyEnd and other scenarios.
  • Add experimental Select APIs for current instances in a BaseModule. (by @mikeurbach in #4363)
    This is useful in situations like atModuleBodyEnd to reflect on the current BaseModule before it is closed.
  • Add Path.apply() to support HasTarget (by @debs-sifive in #4364)
    Adds Path.apply() function that support HasTargets, so that the paths of things that extend HasTarget, like SRAM, can be put into properties.
  • feat: implement SerializableModuleElaborator (by @unlsycn in #4409)
    Add SerializableModuleElaborator
  • Add SourceLocator for Sequence (by @unlsycn in #4436)
    Add source locator for Sequence
  • Add Property expression for integer shift left (by @maerhart in #4440)
    This adds an API for integer Property shift left.
  • Support creation of Paths from HasTargets (by @debs-sifive in #4455)
  • Add --firtool-option arg to ChiselStage (by @seldridge in #4463)
  • switch SRAMDescription to Class (by @sequencer in #4437)
  • add additionalAnnotations for SerializableModuleElaborator (by @sequencer in #4477)
  • Implement Lookupable for HasTarget (used by SRAM) (by @jackkoenig in #4481)
  • Allow BoringUtils to use existing port in a closed module (by @tmckay-sifive in #4484)
    When trying to drill a port, it doesn't matter if the module is closed. We do not need to construct new hardware and can just use the existing port.
  • Implement Lookupable for Unit (by @jackkoenig in #4497)
  • [Module] Add afterModuleBuilt hook (by @fabianschuiki in #4479)
    The new afterModuleBuilt hook can be used to schedule code to be executed once a module has been fully generated and its definition is available. This allows further collateral such as unit tests to be generated alongside a module.
  • Add withModulePrefix (by @mmaloney-sf in #4487)
  • Add AutoBlackbox (by @unlsycn in #4495)
  • Add new InlineInstanceAllowDedup trait (by @rwy7 in #4508)
  • Add module prefixing to BaseModule definitions (by @jackkoenig in #4509)
    • BaseModule.localModulePrefix can be used to set a prefix for the module and its children.
    • BaseModule.localPrefixAppliesToSelf (defaults to true) allows the module to exclude itself from the prefix.
    • localModulePrefix composes with prefixes added via withModulePrefix.
  • feat: add CIRCTSRAMInterface (by @unlsycn in #4494)
    Add CIRCTSRAMInterface
  • Add APIs to omit module prefix separator (by @jackkoenig in #4532)
    • withModulePrefix now optionally takes a 2nd parameter includeSeparator (passing false will omit separator).
    • Overriding localModulePrefixUseSeparator in a Module to false will omit separator for local prefix applied by overriding localModulePrefix in that Module.
  • feat: add SRAMBlackBox (by @unlsycn in #4544)
  • Add partial cross-compilation for Scala 3 (by @adkian-sifive in #4549)
    Adds initial support for Scala 3 LTS version 3.3.3
  • [util] Add a withShadowLayer Queue (by @seldridge in #4589)
  • Add FormalTest marker (by @fabianschuiki in #4635)
  • [core] Add layer block that returns colored wire (by @seldridge in #4623)
  • Add UnitTest marker and test discovery utility (by @fabianschuiki in #4642)
  • [chiselsim] Add Default (non-Ephemeral) Simulator (by @seldridge in #4665)
  • [Chiselsim] Add WithTestingDirectory (by @seldridge in #4669)
  • [chiselsim] Rewrite EphemeralSimulator in terms of DefaultSimulator (by @seldridge in #4675)
  • [chiselsim] Add, use HasSimulator type class (by @seldridge in #4678)
  • [firrtl] Add, use dramaticMessage (by @seldridge in #4684)
  • [chiselsim] Add SimulatorAPI, reduce DefaultSimulator to nothing (by @seldridge in #4680)
  • [chiselsim] Add ChiselSim APIs (by @seldridge in #4685)
  • Add simple API for generating testharnesses inline (by @tmckay-sifive in #4629)
    Add an API to generate testharnesses inline that are emitted as additional public modules in the output.
  • Dev/seldridge/switch to chisel settings (by @seldridge in #4708)
  • Add RequireProperty and EnsureProperty (by @fabianschuiki in #4681)
  • [chiselsim] Add FIRRTL macro control (by @seldridge in #4699)
  • [Chiselsim] Replace Chiselspec w/ ChiselSim (by @seldridge in #4706)
  • [testing] Add FileCheck API (by @seldridge in #4749)
  • Add formal contracts (by @fabianschuiki in #4682)
  • [testing] Add HasTestingDirectory subdir factory (by @seldridge in #4774)
  • [chiselsim] Allow command line options to be passed to ChiselSim tests (by @seldridge in #4773)
  • [scalatest] Add HasCliSimulator (by @seldridge in #4776)
  • Change Data._fromUInt to protected (by @jackkoenig in #4782)
    This enables external libraries like FixedPoint to override it. This is not an ideal API, but it works until we have a better way to do this.
  • [chiselsim] Add ControlAPI w/ Waveform Enable/Disable Support (by @seldridge in #4779)
  • [ChiselSim] Factor reset procedure out of SimulatorAPI and into stimulus (by @seldridge in #4784)
  • Add resetType to inline test TestParameters (by @tmckay-sifive in #4789)
    • Add resetType to chisel3.experimental.inlinetest.TestParameters. It will now be easier to properly handle DUTs with uninferred resets.
  • [svsim] Add coverage collection to VCS backend (by @seldridge in #4793)
  • [svsim][chiselsim] Add plusarg support (by @seldridge in #4796)
  • [chiselsim] Add CLI FSDB, VPD support, enable waves (VCD, too) (by @seldridge in #4797)
  • [chiselsim] Add waves at time zero to settings (by @seldridge in #4801)
  • Provide custom error for Mem masked write wrong data type (by @jackkoenig in #4805)
    The old error was Cannot prove that chisel3.UInt <:< chisel3.Vec[_], the new error is Masked write requires that the data type is a Vec, got chisel3.UInt.
  • [chiselsim] HasCliOptions, EmitVcd for ChiselSim (by @seldridge in #4807)
  • [chiselsim] Chisel/firtool update type classes (by @seldridge in #4808)
  • [svsim] Add Coverage Directory and Name to VCS Backend (by @seldridge in #4812)
  • [chiselsim] Add subdirectory to SimulatorAPI fns (by @seldridge in https://github.com/chipsalliance/chisel/pull/...
Read more

Chisel v6.7.0

07 Mar 23:09
8db8c1e

Choose a tag to compare

This release primarily exists to help get users ready for the coming Chisel 7 release--there are several advanced APIs that are now deprecated and will be removed in the Chisel 7.0 release.

API Deprecation

  • Add ElaboratedCircuit and deprecate use of internal ir Circuit (backport #4683) (by @chiselbot in #4693)
    Change ChiselCircuitAnnotation and CircuitSerializationAnnotation to no longer be case classes to help with the transition to ElaboratedCircuit.
  • Add safer Chisel annotation API, deprecate old ones (backport #4643) (by @chiselbot in #4697)
    Creating annotations in Chisel now requires reporting what InstanceIds are going to be annotated so that Chisel can do some safety checks.
  • [testers] Deprecate everything the testers package (backport #4742) (by @chiselbot in #4743)
  • Mass deprecations, to be removed in Chisel 7 (backport #4754) (by @chiselbot in #4756)
  • Warn on .asUInt|.asSInt(_: Int) (backport #4764) (by @chiselbot in #4766)
    The user probably forgot .W. Apply the same technique as used for .U|.S.

Performance

  • Speedup Computation for whether Aggregates containsProbe (backport #4656) (by @chiselbot in #4664)
    Add a private containsProbe var to Aggregate and use it to speed up containsProbe checks.

Fixes

  • fix up extra waveform dump behavior in svsim (backport #4592) (by @mergify[bot] in #4600)
  • Fixes sendBits()'s handling of signed numbers in svsim (backport #4599) (by @jackkoenig in #4606)
  • Deterministic FibonacciLFSR reductions (backport #4688) (by @chiselbot in #4690)
  • Escape special characters in Property String literals (backport #4564) (by @mergify[bot] in #4565)
    This technically breaks backwards compatibility for firrtl.ir.StringPropertyLiteral but firrtl.ir is considered an internal API.
  • Dev/biancolin/fix module choice under di (backport #4569) (by @mergify[bot] in #4570)
  • Support boring on original Module after .toInstance call (backport #4602) (by @mergify[bot] in #4604)

Documentation

  • fix typo in SourceInfoTransform.scala (backport #4594) (by @mergify[bot] in #4597)
    Fix typo in scaladoc for sourceInfoTransform macro

Dependency Updates

Build and Internal Changes

  • Update CD permissions for uploading release artifacts (backport #4529) (by @mergify[bot] in #4531)
    Also bump softprops/action-gh-release to v2.1.0.
  • [6.x] Enable MiMa for v6.6.0 (by @chiselbot in #4527)

Full Changelog: v6.6.0...v6.7.0

Chisel v6.6.0

26 Nov 17:38
6e0428d

Choose a tag to compare

Features

  • Implement Lookupable for HasTarget (used by SRAM) (backport #4481) (by @mergify[bot] in #4482)
  • Allow BoringUtils to use existing port in a closed module (backport #4484) (by @mergify[bot] in #4486)
    When trying to drill a port, it doesn't matter if the module is closed. We do not need to construct new hardware and can just use the existing port.
  • Implement Lookupable for Unit (backport #4497) (by @mergify[bot] in #4498)

API Modification

API Deprecation

Fixes

  • Remove unnecessary overrides of lref and ref in Property (backport #4309) (by @mergify[bot] in #4310)
    This fixes an issue with views of List of Property.
  • Improve error messages for empty Mux1H and PriorityMux (backport #4391) (by @mergify[bot] in #4393)
  • Handle define on views of Probes (backport #4308) (by @mergify[bot] in #4311)
  • Support BoringUtils.bore on OpaqueType wrapping a Property. (backport #4337) (by @mergify[bot] in #4338)
    This ensures boring from an OpaqueType that wraps a Property uses the correct connection operator in the IR.
  • Make it legal to extract zero bits from a zero-width UInt (backport #4445) (by @mergify[bot] in #4447)
  • Fix Arg.name and earlyLocalName for probes (backport #4359) (by @mergify[bot] in #4360)
  • Fix Boring.rwTap on instance ports (backport #4451) (by @mergify[bot] in #4452)
    BoringUtils.rwTap can now works on a port of an instance: Instance[..]
  • Fix Select.attachedTo (backport #4458) (by @mergify[bot] in #4461)
  • Fix missing string interpolators, add -Xlint:missing-interpolator (backport #4471) (by @mergify[bot] in #4473)
  • Add Probes to .toString Data methods (backport #4478) (by @mergify[bot] in #4480)
    Probe chisel types now include the kind of probe and layer in their .toString method

Documentation

  • Improve the error message for mismatched types in Mux (backport #4331) (by @mergify[bot] in #4332)

Dependency Updates

  • [6.x] Bump to CIRCT 1.62.1 (by @jackkoenig in #4387)
  • Add Scala 2.13.15 to compiler plugin cross-build (backport #4410) (by @mergify[bot] in #4413)
    Add support for Scala 2.13.15

Build and Internal Changes

Full Changelog: v6.5.0...v6.6.0

Chisel v7.0.0-M2

15 Jul 23:05
ae54349

Choose a tag to compare

Chisel v7.0.0-M2 Pre-release
Pre-release

Features

  • Add getClassType API to Definition[T <: Class]. (by @mikeurbach in #3877)
    This allows users to get a ClassType for use in other Property types, which is especially useful when constructing aggregate Property types of a specific Class.
  • Add suggestName method to HasTarget (by @debs-sifive in #3881)
    HasTarget trait now also exposes suggestName method of a NamedComponent.
  • Print the optional Printable passed to stop ops (by @nandor in #3886)
    The message passed to stop is no longer ignored. The construct was extended to accept Printable.
  • Add DeletedPath for targets that no longer exist. (by @mikeurbach in #3937)
    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.
  • Make firtool options for elaborateGeneratedModule in workspace parametric (by @rameloni in #3952)
    This adds the support in Chiselsim to configure the workspace with additional args for firtool (#3932). The user can specify how the sv circuit is compiled for simulation (i.e. including debug information -g).
  • Add a new BoringUtils.drive API for boring to drive a sink. (by @mikeurbach in #3960)
    This API allows users to bore to a sink they plan to drive, which complements the existing API to bore from a source to read.
  • Add requireIsAnnotatable for better errors when annotating literals (by @jackkoenig in #3968)
    This gives much better error messages when accidentally dontTouching a literal
  • Add extension points on Data for customizing Connectable behavior. (by @mikeurbach in #3978)
    The user can override these methods to customize how their Data applies waive, squeeze, and exclude in its Connectable.
  • Add support for generic intrinsic expressions and statements. (by @dtzSiFive in #3986)
    Intrinsic expressions and statements are now supported, streamlining their use. These should be preferred over intrinsicModule's, which in the future will be deprecated and removed.
  • make SerializableModuleGenerator work with D/I (by @sequencer in #4003)
  • Add Instanitate.definition to get Definition from cache. (by @sequencer in #4020)
  • Add private Module API and internal DataMirror API for moduleIOs. (by @mikeurbach in #4036)
    The DataMirror API allows users who know what they're doing to access a module's ports before it is closed.
  • [LTL] Added overloadings for AssertProperty (by @dobios in #4037)
  • [Formal] Expose Btor2 target (by @dobios in #4035)
    • [Formal] Allow for Chisel to be compiled to btor2 for Bounded Model Checking using ChiselStage.emitBtor2.
  • Add modulePorts and fullModulePorts in DataMirror for Instance (by @debs-sifive in #4076)
    Added modulePorts and fullModulePorts methods in DataMirror that returns all ports on an Instance of a module.
  • Add .toRelativeTargetToHierarchy (by @mwachs5 in #4067)
    Add .toRelativeTargetToHierarchy for getting .toRelativeTarget functionality when the root is a Definition or Instance.
  • Don't ... top of stack trace if it isn't actually trimmed (by @jackkoenig in #4142)
  • [LTL] Add support for new sequence and property ops (by @dobios in #4120)
    • [LTL] Add support for intersect, repeat, gotoRepeat, and nonConsecutiveRepeat ops.
  • PeekPokeAPI: include source location on failed expect() calls. (by @kivikakk in #4144)
    SimulationData.expect calls now record source location and report it in the FailedExpectationException on failure.
  • Preserve literals across .asUInt (by @jackkoenig in #4148)
    This is mostly useful for initial values for async reset registers and for constructing literal values in testing contexts (e.g. ChiselSim). It also should slightly reduce memory use and .fir size.
  • Preserve literal value across .asSInt and .zext (by @jackkoenig in #4151)
  • Preserve UInt and SInt literals across .pad (by @jackkoenig in #4156)
  • Add support for marking things as readOnly (by @jackkoenig in #4190)
    Users can call .readOnly on any Data to prevent connections to the returned value. Resolves #1267.
  • Add ChiselStage.emitCHIRRTLFile (by @jackkoenig in #4232)
    Emits a file without returning the serialized object which is more memory efficient and supports > 2 GiB of serialized FIRRTL text.
  • Make requireTypeEquivalent public and add context message (by @mwachs5 in #4243)
    Make Add a contextual message to Data.requireTypeEquivalent and expose a public API in DataMirror.requireTypeEquivalent, to make it easier for user code to have good error messages when requiring type equivalence between two chisel Datas
  • Add map method for Valid (by @tymcauley in #4255)
    Users can now apply a function f to the bits field of a Valid instance with the new Valid.map(f) method.
  • Add more information when probe types don't match (by @mwachs5 in #4269)
    Add more information to the error message when attempting to probe.define to a mismatched chisel type.

API Modification

  • Fix tests to avoid inferred width ports on public modules. (by @dtzSiFive in #3869)
    Main module are "public" (#3813, soon mandatory) which means they cannot have inferred widths or abstract resets. Code relying on old behavior will presently encounter an error in firtool.
  • Remove circt.Intrinsic annotation. (by @dtzSiFive in #3945)
    IntrinsicModules (intmodule's in FIRRTL) have replaced this entirely for some time now.
  • [svsim] Expose further verilator options for trace file name and simulation speed optimization (by @kammoh in #3985)
  • Make AssertPropertyLike.createIntrinsic protected (by @jackkoenig in #4058)
    It should never have been a public API
  • checkTypeEquivalence now considers ProbeInfo (by @mwachs5 in #4064)
    Now checkTypeEquivalence will check whether data have the same probe type modifier including writeability and color (layer).
  • Make "deprecated public" binding APIs private (by @jackkoenig in #4177)
    These chisel3.internal APIs should never have been public in the first place.
  • Fix width of ChiselEnum values in emitted FIRRTL (by @jackkoenig in #4200)
    Fixes #4159.
    Previously, the width reported by Chisel under .getWidth was inconsistent with the width of the emitted FIRRTL for ChiselEnum values cast to UInt.
    Temporarily preserve the old behavior under CLI option --use-legacy-width (formerly known as --use-legacy-shift-right-width). Users are encouraged to build Verilog with and without this option enabled and diff the result to verify that this change in width behavior did not silently affect the correctness of their designs.
  • Preserve literals across .asTypeOf (by @jackkoenig in #4168)
    Casting a literal (of any type) to another type with .asTypeOf will result in a literal of the new type. For non-literals, the FIRRTL representation will now be a little bit more efficient.
  • Intern Width (by @jackkoenig in #4242)
    • UnknownWidth becomes a case object (Drop () when using it).
    • KnownWidths 0-1024 are interned
  • SourceInfo: simplify the common case for makeMessage, print it differently (by @mwachs5 in #4249)
    Add a default to SourceInfo.makeMessage() so that users don't always have to write makeMessage(x => x). Change the toString of SourceLine so that it puts a colon instead of a space between the file name and line number, which makes it possible to click-to-source in editors like VSCode.
  • Micro-optimize Direction (by @jackkoenig in #4251)
    • Specified and actual direction information are each now stored as single bytes rather than references.
    • This reduces the memory use of a typical bound UInt from 72 bytes shallow, 128 bytes retained to 64 bytes shallow, 120 bytes retained.
    • The change is mostly source compatible, but ActualDirection.Bidirectional, has changed slightly to memoize its two possibilities (Bidirectional.Default and Bidirectional.Flipped). There are deprecations for the typical APIs

API Deprecation

  • IntrinsicModule: deprecate in favor of intrinsic expressions. (by @dtzSiFive in #4060)
    IntrinsicModule has been replaced by Intrinsic and IntrinsicExpr ...
Read more