lowRISC / opentitan

OpenTitan: Open source silicon root of trust
https://www.opentitan.org
Apache License 2.0
2.56k stars 762 forks source link

Update HW IP version numbers #22222

Closed andreaskurth closed 3 months ago

andreaskurth commented 7 months ago

Since Earlgrey-ES TO, we made multiple changes to HW IP modules that demand an increase of the version number, but we haven't updated all versions. To resolve this issue, we need to go through the changes for each IP and decide on the new version number.

To determine the new version number, we apply semantic versioning to HW IP blocks with a focus on the HW/SW interface. (The focus is not on HW interfaces because those aren't well-defined: for an RTL designer only the ports and parameters of the top-most module may be relevant, while for an engineer working on synthesis or physical design any signal in the internal structure of a HW block could be relevant.) Specifically, the algorithm to determine whether the patch version, minor version, or major version need to be increased for PROD compared to ES is as follows:

The results are as follows (details in this table (OT domain)):

HW IP Block Version for ES/Z1 Version for PROD/A1: is currently Version for PROD/A1: should be
adc_ctrl 1.0 2.0.0 2.0.0
aes 1.0 1.0.0 1.0.1
alert_handler 1.0 1.0.0 1.0.1
aon_timer 1.0 2.0.0 2.0.0
clkmgr 1.0 1.0.0 1.0.1
csrng 1.0 2.0.0 2.0.0
edn 1.0 2.0.0 2.0.0
entropy_src 1.0 2.0.0 2.0.0
flash_ctrl 1.0 2.0.0 2.0.0
gpio 1.1 1.1.0 1.1.0
hmac 1.0 2.0.0 2.0.0
i2c 1.0 2.0.0 2.0.0
keymgr 1.0 1.0.0 2.0.0
kmac 1.0 2.0.0 2.0.0
lc_ctrl 1.0 2.0.0 2.0.0
otbn 1.0 1.0.0 1.1.0
otp_ctrl 1.0 2.0.0 2.0.0
pattgen 1.0 1.0.0 1.1.0
pinmux 1.0 1.0.0 1.1.0
pwm 1.0 1.0.0 1.0.0
pwrmgr 1.0 1.0.0 1.0.1
rom_ctrl 1.0 1.0.0 1.0.1
rstmgr 1.0 1.0.0 1.0.0
rv_core_ibex 1.0 1.0.0 2.0.0
rv_dm 1.0 2.0.0 1.1.0
rv_plic 1.0 1.0.0 2.0.0
rv_timer 1.0 1.0.0 1.0.0
sensor_ctrl 1.0 2.0.0 2.0.0
spi_device 1.0 2.0.0 2.0.0
spi_host 1.0 1.0.0 2.0.0
sram_ctrl 1.0 1.1.0 1.1.0
sysrst_ctrl 1.0 2.0.0 2.0.0
uart 1.1 2.0.0 2.0.0
usbdev 1.0 1.0.0 2.0.0
andreaskurth commented 6 months ago

No version numbers in ROM, chip version from lc_ctrl is used. We should do this before taking the tapeout branch, so M5.

johngt commented 4 months ago

Discussed with @vogelpi Needs to be done before branching @andreaskurth