Chisel Project Versioning
Chisel follows Semantic Versioning 2.0.0.
Project versions are of the form MAJOR.MINOR.PATCH.
An incremented MAJOR version means there may be backwards incompatible changes (typically after an appropriate deprecation schedule).
An incremented MINOR version means there are changes in functionality (new APIs) in a backwards compatible manner.
Importantly, Chisel maintains binary compatibility between minor versions of the same major version.
For example, a project compiled against Chisel 5.0.0 can be used with future Chisel versions 5.1.0 or 5.100.2.
An incremented PATCH version means there are backwards compatible bug fixes.
Firtool Version
Starting with Chisel v3.6, Chisel uses firtool (part of the LLVM CIRCT project) to generate Verilog. Each version of Chisel is released against a specific version of firtool, shown in the tables below. Chisel automatically uses the corresponding version.
Setting Your Own Firtool Version
The following instructions apply when emitting SystemVerilog from Chisel APIs like ChiselStage.
Users are also encouraged to emit .fir from Chisel and invoke an installed firtool binary separately using their build tool of choice.
To use a specific version, add a dependency on the desired org.chipsalliance::llvm-firtool release to your build. For example:
libraryDependencies += "org.chipsalliance" %% "llvm-firtool" % "1.153.0"
def mvnDeps = Agg(
mvn"org.chipsalliance::llvm-firtool:1.153.0"
)
Alternatively, you can install firtool yourself from the pre-built artifacts or build it from source.
To use your own installed firtool binary, set CHISEL_FIRTOOL_PATH to the directory containing the firtool binary you want Chisel to use.
A given version of Chisel is only tested against the version listed in the tables below. It often works with other versions, but it is not guaranteed.
Firtool Version Tables
- Releases
- Pre-releases
Chisel 7.x
Chisel 6.x
Chisel 7.x
Chisel 6.x
Old Chisel versions (3.0 - 3.6)
As of Chisel 5.0.0, this and following sections no longer apply.
Prior to the release of Chisel 5.0.0, Chisel and related projects followed a versioning scheme similar to PVP.
Project versions were of the form A.B.C where A.B specifies the Major version and C specifies the Minor version.
Projects maintain binary compatibility between minor versions of the same major version.
Compatible Versions (Chisel 3.0 - 3.6)
Historically, various Chisel-related projects were distributed across multiple projects each with their own versioning.
Please use the following table to determine which versions of the related projects are compatible.
In particular, versions of projects in this table were compiled against the version of any dependencies listed in the same row.
For example, chisel-iotesters version 1.4 was compiled against chisel3 version 3.3.
| chisel3 | chiseltest | chisel-iotesters3 | firrtl | treadle | diagrammer | firrtl-interpreter2 |
|---|---|---|---|---|---|---|
| 3.6 | 0.6 | - | 1.6 | 1.6 | 1.6 | - |
| 3.5 | 0.54 | 2.55 | 1.5 | 1.54 | 1.54 | - |
| 3.4 | 0.3 | 1.5 | 1.4 | 1.3 | 1.3 | 1.4 |
| 3.3 | 0.2 | 1.4 | 1.3 | 1.2 | 1.2 | 1.3 |
| 3.2 | 0.11 | 1.3 | 1.2 | 1.1 | 1.1 | 1.2 |
| 3.1 | - | 1.2 | 1.1 | 1.0 | 1.0 | 1.1 |
| 3.0 | - | 1.1 | 1.0 | - | - | 1.0 |
1 chiseltest 0.1 was published under artifact name chisel-testers2 (0.2 was published under both artifact names)
2 Replaced by Treadle, in maintenance mode only since version 1.1, final version is 1.4
3 Replaced by chiseltest, final version is 2.5
4 chiseltest, treadle, and diagrammer skipped X.4 to have a consistent major version with Chisel
5 chisel-iotesters skipped from 1.5 to 2.5 to have a consistent major version with Chisel