From 85f48b802d8439ff578cf6f24fc76ed9bf2ca1c5 Mon Sep 17 00:00:00 2001 From: Ved Shanbhogue Date: Mon, 25 Dec 2023 11:07:39 -0700 Subject: [PATCH 1/2] Add Ssqosid extension --- CHANGELOG.md | 3 + riscv_config/__init__.py | 2 +- riscv_config/constants.py | 2 +- riscv_config/schemaValidator.py | 7 ++ riscv_config/schemas/schema_isa.yaml | 125 +++++++++++++++++++++++++++ setup.cfg | 2 +- 6 files changed, 138 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bb947c..9245356 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.14.4] - 2023-12-25 + - Add support for Ssqosid extension + ## [3.14.3] - 2023-12-01 - Add support for Zimop extension diff --git a/riscv_config/__init__.py b/riscv_config/__init__.py index e8dd3aa..22a7cb0 100644 --- a/riscv_config/__init__.py +++ b/riscv_config/__init__.py @@ -1,4 +1,4 @@ from pkgutil import extend_path __path__ = extend_path(__path__, __name__) -__version__ = '3.14.3' +__version__ = '3.14.4' diff --git a/riscv_config/constants.py b/riscv_config/constants.py index ab410aa..8e94fd2 100644 --- a/riscv_config/constants.py +++ b/riscv_config/constants.py @@ -33,7 +33,7 @@ "Zpn", "Zpsf" ] + Zve_extensions + Zvl_extensions -S_extensions = ['Smrnmi','Svnapot','Svadu', 'Sdext'] +S_extensions = ['Smrnmi','Svnapot','Svadu', 'Sdext', 'Ssqosid'] sub_extensions = Z_extensions + S_extensions diff --git a/riscv_config/schemaValidator.py b/riscv_config/schemaValidator.py index 01a7498..5233746 100644 --- a/riscv_config/schemaValidator.py +++ b/riscv_config/schemaValidator.py @@ -47,6 +47,13 @@ def _check_with_zicfiss_check(self, field, value): "Register cannot be implemented without Zicfiss extension in ISA." ) + def _check_with_ssqosid_check(self, field, value): + global extension_list + if value and 'Ssqosid' not in extension_list: + self._error(field, + "Register cannot be implemented without Ssqosid extension in ISA." + ) + def _check_with_satp_modes64(self, field, value): pass diff --git a/riscv_config/schemas/schema_isa.yaml b/riscv_config/schemas/schema_isa.yaml index d7d2960..de7e9d0 100644 --- a/riscv_config/schemas/schema_isa.yaml +++ b/riscv_config/schemas/schema_isa.yaml @@ -9733,6 +9733,131 @@ hart_schema: check_with: - rv64_check default: {accessible: false} + srmcfg: + type: dict + schema: + description: { type: string, default: SXLEN-bit register which provides supervisor-mode resource management configurations } + address: {type: integer, default: 0x181, allowed: [0x181]} + priv_mode: {type: string, default: S, allowed: [S]} + reset-val: { type: integer, check_with: max_length , default: 0} + rv32: + type: dict + check_with: s_check + schema: + fields: {type: list, default: []} + rcid: + type: dict + schema: + description: { type: string , default: Resource Control Identifier. } + shadow: {type: string, default: , nullable: True} + shadow_type: {type: string, default: rw, nullable: True, allowed: ['rw','ro']} + msb: {type: integer, default: 11, allowed: [11]} + lsb: {type: integer, default: 0, allowed: [0]} + implemented: {type: boolean, default: true} + type: + type: dict + oneof: + - schema: {ro_constant: {type: integer, max: 4095}} + - schema: { warl: *ref_warl } + default: + warl: + dependency_fields: [] + legal: + - rcid[11:0] in [0x0:0xFFF] + wr_illegal: + - Unchanged + default: {implemented: False} + check_with: s_check + mcid: + type: dict + schema: + description: { type: string, default: Monitoring counter identifier. } + shadow: {type: string, default: , nullable: True} + shadow_type: {type: string, default: rw, nullable: True, allowed: ['rw','ro']} + msb: {type: integer, default: 27, allowed: [27]} + lsb: {type: integer, default: 16, allowed: [16]} + implemented: {type: boolean, default: true} + type: + type: dict + oneof: + - schema: {ro_constant: {type: integer, max: 4095 }} + - schema: { warl: *ref_warl } + default: + warl: + dependency_fields: [] + legal: + - mcid[11:0] in [0x0:0xFFF] + wr_illegal: + - Unchanged + default: {implemented: False} + check_with: s_check + accessible: + type: boolean + check_with: + - rv32_check + - ssqosid_check + default: {accessible: false} + rv64: + type: dict + check_with: s_check + schema: + fields: {type: list, default: []} + rcid: + type: dict + schema: + description: + type: string + default: Resource control identifier + shadow: {type: string, default: , nullable: True} + shadow_type: {type: string, default: rw, nullable: True, allowed: ['rw','ro']} + msb: {type: integer, default: 11, allowed: [11]} + lsb: {type: integer, default: 0, allowed: [0]} + implemented: {type: boolean, default: true} + type: + type: dict + oneof: + - schema: {ro_constant: {type: integer, max: 4095}} + - schema: { warl: *ref_warl } + default: + warl: + dependency_fields: [] + legal: + - rcid[13:0] in [0x0:0xFFF] + wr_illegal: + - Unchanged + default: {implemented: False} + check_with: s_check + mcid: + type: dict + schema: + description: + type: string + default: Monitoring counter identifier. + shadow: {type: string, default: , nullable: True} + shadow_type: {type: string, default: rw, nullable: True, allowed: ['rw','ro']} + msb: {type: integer, default: 27, allowed: [27]} + lsb: {type: integer, default: 16, allowed: [16]} + implemented: {type: boolean, default: true} + type: + type: dict + oneof: + - schema: {ro_constant: {type: integer, max: 4095}} + - schema: { warl: *ref_warl } + default: + warl: + dependency_fields: [] + legal: + - mcid[11:0] in [0x0:0xFFF] + wr_illegal: + - Unchanged + default: {implemented: False} + check_with: s_check + accessible: + type: boolean + check_with: + - rv64_check + - ssqosid_check + default: {accessible: false} ustatus: type: dict schema: diff --git a/setup.cfg b/setup.cfg index 102806c..f083b81 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 3.14.3 +current_version = 3.14.4 commit = True tag = True From b8c31afbfc52faf43de9d3040493931fae9b3fbe Mon Sep 17 00:00:00 2001 From: Ved Shanbhogue Date: Sat, 30 Dec 2023 13:19:10 -0600 Subject: [PATCH 2/2] add Smstateen; required for Ssqosid --- riscv_config/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/riscv_config/constants.py b/riscv_config/constants.py index 8e94fd2..c98e6e4 100644 --- a/riscv_config/constants.py +++ b/riscv_config/constants.py @@ -33,7 +33,7 @@ "Zpn", "Zpsf" ] + Zve_extensions + Zvl_extensions -S_extensions = ['Smrnmi','Svnapot','Svadu', 'Sdext', 'Ssqosid'] +S_extensions = ['Smrnmi','Svnapot','Svadu', 'Sdext', 'Ssqosid', 'Smstateen'] sub_extensions = Z_extensions + S_extensions