From 3fad4aee26eadd55cb90c5d3153168f17a18d80e Mon Sep 17 00:00:00 2001 From: "Paul A. Clarke" Date: Mon, 3 Nov 2025 19:40:04 -0600 Subject: [PATCH 1/6] feat: add a Python example which lists extensions associated with profile(s) ``` $ ./tools/python/profile-extensions.py --profiles RVA23U64 gen/resolved_spec/_/ RVA23U64: - A = 2.1 mandatory - C = 2.0 mandatory - D = 2.2 mandatory - F = 2.2 mandatory - I ~> 2.1 mandatory - M = 2.0 mandatory - Supm ~>1.0 mandatory - U ~> 2.0 mandatory - V ~> 1.0 mandatory - Za64rs ~>1.0 mandatory [...] ``` Signed-off-by: Paul A. Clarke --- tools/python/profile-extensions.py | 66 ++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 tools/python/profile-extensions.py diff --git a/tools/python/profile-extensions.py b/tools/python/profile-extensions.py new file mode 100755 index 000000000..87264a57a --- /dev/null +++ b/tools/python/profile-extensions.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +# Copyright (c) Ventana Micro Systems +# SPDX-License-Identifier: BSD-3-Clause-Clear + +import argparse +import json +import yaml +from pathlib import Path + +profiles = [] + +parser = argparse.ArgumentParser(description="List extensions associated with profiles") +parser.add_argument("-p", "--profiles") +parser.add_argument("paths", nargs="*", default=".") +params = parser.parse_args() + +profiles_filter = [] +if params.profiles is not None: + for profile in params.profiles.split(","): + profiles_filter.append(profile) + + +def store_yaml(path): + with open(path) as f: + y = yaml.safe_load(f) + if "kind" in y: + if y["kind"] == "profile": + if len(profiles_filter) == 0 or y["name"] in profiles_filter: + y["file"] = path + profiles.append(y) + + +def find_and_load_yaml(path): + p = Path(path) + if p.is_dir(): + for dirent in p.iterdir(): + find_and_load_yaml(dirent) + else: + if str(path).endswith(".yaml"): + store_yaml(path) + + +def main(): + for path in params.paths: + find_and_load_yaml(path) + for profile in sorted(profiles, key=lambda x: x["name"]): + if "extensions" in profile: + print(f"{profile['name']}:") + if "$child_of" in profile["extensions"]: + del profile["extensions"]["$child_of"] + if "$parent_of" in profile["extensions"]: + del profile["extensions"]["$parent_of"] + for extension in sorted( + profile["extensions"], + key=lambda x: f"{profile['extensions'][x]['presence']},{x}", + ): + version = "any" + if "version" in profile["extensions"][extension]: + version = profile["extensions"][extension]["version"] + print( + f"- {extension} {version} {profile['extensions'][extension]['presence']}" + ) + + +if __name__ == "__main__": + main() From 9791dbdec39d20f7659d45e5ae6dbd8c3e0b688c Mon Sep 17 00:00:00 2001 From: "Paul A. Clarke" Date: Tue, 4 Nov 2025 20:47:42 -0600 Subject: [PATCH 2/6] feat: refactor Python example, add testing - Split common reusable components into a "UDB" module - Add a golden output, and a task to generate/update it - Add a test to verify current output matches golden output - Add to regression tests Signed-off-by: Paul A. Clarke --- .github/workflows/regress.yml | 11 + Rakefile | 5 + tools/python/UDB.py | 32 + tools/python/profile-extensions.golden | 597 ++++++++++++++++++ .../python/profile-extensions.golden.license | 2 + tools/python/profile-extensions.py | 56 +- tools/python/tasks.rake | 42 ++ 7 files changed, 708 insertions(+), 37 deletions(-) create mode 100755 tools/python/UDB.py create mode 100644 tools/python/profile-extensions.golden create mode 100644 tools/python/profile-extensions.golden.license create mode 100644 tools/python/tasks.rake diff --git a/.github/workflows/regress.yml b/.github/workflows/regress.yml index b98007bd2..db56b8df2 100755 --- a/.github/workflows/regress.yml +++ b/.github/workflows/regress.yml @@ -234,6 +234,17 @@ jobs: uses: ./.github/actions/singularity-setup - name: Run cpp unit tests run: ./do gen:ext_pdf EXT=Xqci CFG=qc_iu.yaml VERSION=latest + regress-profile-extensions: + runs-on: ubuntu-latest + env: + SINGULARITY: 1 + steps: + - name: Clone Github Repo Action + uses: actions/checkout@v4 + - name: singularity setup + uses: ./.github/actions/singularity-setup + - name: Check profile-extensions + run: ./do test:profile_extensions call-deploy: uses: ./.github/workflows/deploy.yml with: diff --git a/Rakefile b/Rakefile index 7dae0168d..a02a9910c 100755 --- a/Rakefile +++ b/Rakefile @@ -46,6 +46,11 @@ Dir.glob("#{$root}/tools/ruby-gems/*/Rakefile") do |rakefile| load rakefile end +# Load and execute tools Rakefiles +Dir.glob("#{$root}/tools/*/tasks.rake") do |rakefile| + load rakefile +end + directory "#{$root}/.stamps" file "#{$root}/.stamps/dev_gems" => ["#{$root}/.stamps"] do |t| diff --git a/tools/python/UDB.py b/tools/python/UDB.py new file mode 100755 index 000000000..0bc0a5655 --- /dev/null +++ b/tools/python/UDB.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 +# Copyright (c) Ventana Micro Systems +# SPDX-License-Identifier: BSD-3-Clause-Clear + +import yaml +from pathlib import Path + + +def store_yaml(path, kinds=[]): + database = [] + with open(path) as f: + y = yaml.safe_load(f) + if "kind" in y: + if len(kinds) == 0 or y["kind"] in kinds: + y["file"] = path + database.append(y) + return database + + +database = [] + + +def find_and_load_yaml(path, kinds=[]): + global database + p = Path(path) + if p.is_dir(): + for dirent in p.iterdir(): + find_and_load_yaml(dirent, kinds) + else: + if str(path).endswith(".yaml"): + database += store_yaml(path, kinds) + return database diff --git a/tools/python/profile-extensions.golden b/tools/python/profile-extensions.golden new file mode 100644 index 000000000..6077c563a --- /dev/null +++ b/tools/python/profile-extensions.golden @@ -0,0 +1,597 @@ +MP-S-64: +- A = 2.1 mandatory +- I ~> 2.1 mandatory +- Svade any mandatory +- Xmock ~> 0.9.9 mandatory +- Zifencei = 2.0 {'optional': 'development'} +- Zihpm = 2.0 {'optional': 'expansion'} +- S = 1.12 {'optional': 'localized'} +- Sv48 = 1.12 {'optional': 'transitory'} +MP-U-64: +- I ~> 2.1 mandatory +- Svade any mandatory +- A = 2.1 optional +RVA20S64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S = 1.11 mandatory +- Ssccptr = 1.0 mandatory +- Sstvala = 1.0 mandatory +- Sstvecd = 1.0 mandatory +- Sv39 = 1.11 mandatory +- Svade ~> 1.0 mandatory +- Svbare = 1.0 mandatory +- U ~> 1.0 mandatory +- Za128rs = 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zifencei = 2.0 mandatory +- Ssu64xl = 1.0 optional +- Sv48 = 1.11 optional +- Zihpm = 2.0 optional +RVA20U64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- U ~> 2.0 mandatory +- Za128rs = 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zihpm = 2.0 optional +RVA22S64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S = 1.12 mandatory +- Ssccptr = 1.0 mandatory +- Sscounterenw = 1.0 mandatory +- Sstvala = 1.0 mandatory +- Sstvecd = 1.0 mandatory +- Sv39 = 1.11 mandatory +- Svade ~> 1.0 mandatory +- Svbare = 1.0 mandatory +- Svinval ~> 1.0 mandatory +- Svpbmt ~> 1.0 mandatory +- U ~> 2.0 mandatory +- Za128rs = 1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zfhmin ~> 1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zifencei = 2.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zkt ~> 1.0 mandatory +- Sha ~>1.0 optional +- Sscofpmf ~> 1.0 optional +- Sstc ~> 1.0 optional +- Ssu64xl = 1.0 optional +- Sv48 ~> 1.12 optional +- Sv57 ~> 1.12 optional +- Svnapot ~> 1.0 optional +- V ~> 1.0 optional +- Zfh ~> 1.0 optional +- Zkn ~> 1.0 optional +- Zkr ~> 1.0 optional +- Zks ~> 1.0 optional +RVA22U64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- U ~> 2.0 mandatory +- Za128rs = 1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zfhmin ~> 1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zkt ~> 1.0 mandatory +- V ~> 1.0 optional +- Zfh ~> 1.0 optional +- Zkn ~> 1.0 optional +- Zks ~> 1.0 optional +RVA23M64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S ~>1.13 mandatory +- Sha ~>1.0 mandatory +- Sm ~> 1.13 mandatory +- Smpmp ~> 1.13 mandatory +- Ssccptr ~>1.0 mandatory +- Sscofpmf ~>1.0 mandatory +- Sscounterenw ~>1.0 mandatory +- Ssnpm ~>1.0 mandatory +- Sstc ~>1.0 mandatory +- Sstvala ~>1.0 mandatory +- Sstvecd ~>1.0 mandatory +- Ssu64xl ~>1.0 mandatory +- Supm ~>1.0 mandatory +- Sv39 ~>1.0 mandatory +- Svade ~>1.0 mandatory +- Svbare ~>1.0 mandatory +- Svinval ~>1.0 mandatory +- Svnapot ~>1.0 mandatory +- Svpbmt ~>1.0 mandatory +- U ~> 2.0 mandatory +- V ~> 1.0 mandatory +- Za128rs = 1.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zfhmin ~> 1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zifencei ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zvbb ~>1.0 mandatory +- Zvfhmin ~>1.0 mandatory +- Zvkt ~>1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Zvbc ~>1.0 {'optional': 'development'} +- Sdtrig ~>1.0 {'optional': 'expansion'} +- Sspm ~>1.0 {'optional': 'expansion'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Sv48 ~>1.13 {'optional': 'expansion'} +- Sv57 ~>1.13 {'optional': 'expansion'} +- Svadu ~>1.0 {'optional': 'expansion'} +- Svvptc ~>1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zkr ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zkn ~>1.0 {'optional': 'localized'} +- Zks ~>1.0 {'optional': 'localized'} +- Zvkg ~>1.0 {'optional': 'localized'} +- Zvknc ~>1.0 {'optional': 'localized'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksc ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVA23S64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S ~>1.13 mandatory +- Sha ~>1.0 mandatory +- Ssccptr ~>1.0 mandatory +- Sscofpmf ~>1.0 mandatory +- Sscounterenw ~>1.0 mandatory +- Ssnpm ~>1.0 mandatory +- Sstc ~>1.0 mandatory +- Sstvala ~>1.0 mandatory +- Sstvecd ~>1.0 mandatory +- Ssu64xl ~>1.0 mandatory +- Supm ~>1.0 mandatory +- Sv39 ~>1.0 mandatory +- Svade ~>1.0 mandatory +- Svbare ~>1.0 mandatory +- Svinval ~>1.0 mandatory +- Svnapot ~>1.0 mandatory +- Svpbmt ~>1.0 mandatory +- U ~> 2.0 mandatory +- V ~> 1.0 mandatory +- Za128rs = 1.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zfhmin ~> 1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zifencei ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zvbb ~>1.0 mandatory +- Zvfhmin ~>1.0 mandatory +- Zvkt ~>1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Zvbc ~>1.0 {'optional': 'development'} +- Sdtrig ~>1.0 {'optional': 'expansion'} +- Sspm ~>1.0 {'optional': 'expansion'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Sv48 ~>1.13 {'optional': 'expansion'} +- Sv57 ~>1.13 {'optional': 'expansion'} +- Svadu ~>1.0 {'optional': 'expansion'} +- Svvptc ~>1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zkr ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zkn ~>1.0 {'optional': 'localized'} +- Zks ~>1.0 {'optional': 'localized'} +- Zvkg ~>1.0 {'optional': 'localized'} +- Zvknc ~>1.0 {'optional': 'localized'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksc ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVA23U64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- Supm ~>1.0 mandatory +- U ~> 2.0 mandatory +- V ~> 1.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zfhmin ~> 1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zvbb ~>1.0 mandatory +- Zvfhmin ~>1.0 mandatory +- Zvkt ~>1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Zvbc ~>1.0 {'optional': 'development'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVB23M64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S ~>1.13 mandatory +- Sm ~> 1.13 mandatory +- Smpmp ~> 1.13 mandatory +- Ssccptr ~>1.0 mandatory +- Sscofpmf ~>1.0 mandatory +- Sscounterenw ~>1.0 mandatory +- Sstc ~>1.0 mandatory +- Sstvala ~>1.0 mandatory +- Sstvecd ~>1.0 mandatory +- Ssu64xl ~>1.0 mandatory +- Sv39 ~>1.0 mandatory +- Svade ~>1.0 mandatory +- Svbare ~>1.0 mandatory +- Svinval ~>1.0 mandatory +- Svnapot ~>1.0 mandatory +- Svpbmt ~>1.0 mandatory +- U ~> 2.0 mandatory +- Za128rs = 1.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zifencei ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Sdtrig ~>1.0 {'optional': 'expansion'} +- Sha ~>1.0 {'optional': 'expansion'} +- Ssnpm ~>1.0 {'optional': 'expansion'} +- Sspm ~>1.0 {'optional': 'expansion'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Supm ~>1.0 {'optional': 'expansion'} +- Sv48 ~>1.13 {'optional': 'expansion'} +- Sv57 ~>1.13 {'optional': 'expansion'} +- Svadu ~>1.0 {'optional': 'expansion'} +- Svvptc ~>1.0 {'optional': 'expansion'} +- V ~> 1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zfhmin ~> 1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zkr ~>1.0 {'optional': 'expansion'} +- Zvbb ~>1.0 {'optional': 'expansion'} +- Zvbc ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zvfhmin ~>1.0 {'optional': 'expansion'} +- Zvkt ~>1.0 {'optional': 'expansion'} +- Zkn ~>1.0 {'optional': 'localized'} +- Zks ~>1.0 {'optional': 'localized'} +- Zvkg ~>1.0 {'optional': 'localized'} +- Zvknc ~>1.0 {'optional': 'localized'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksc ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVB23S64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S ~>1.13 mandatory +- Ssccptr ~>1.0 mandatory +- Sscofpmf ~>1.0 mandatory +- Sscounterenw ~>1.0 mandatory +- Sstc ~>1.0 mandatory +- Sstvala ~>1.0 mandatory +- Sstvecd ~>1.0 mandatory +- Ssu64xl ~>1.0 mandatory +- Sv39 ~>1.0 mandatory +- Svade ~>1.0 mandatory +- Svbare ~>1.0 mandatory +- Svinval ~>1.0 mandatory +- Svnapot ~>1.0 mandatory +- Svpbmt ~>1.0 mandatory +- U ~> 2.0 mandatory +- Za128rs = 1.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zifencei ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Sdtrig ~>1.0 {'optional': 'expansion'} +- Sha ~>1.0 {'optional': 'expansion'} +- Ssnpm ~>1.0 {'optional': 'expansion'} +- Sspm ~>1.0 {'optional': 'expansion'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Supm ~>1.0 {'optional': 'expansion'} +- Sv48 ~>1.13 {'optional': 'expansion'} +- Sv57 ~>1.13 {'optional': 'expansion'} +- Svadu ~>1.0 {'optional': 'expansion'} +- Svvptc ~>1.0 {'optional': 'expansion'} +- V ~> 1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zfhmin ~> 1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zkr ~>1.0 {'optional': 'expansion'} +- Zvbb ~>1.0 {'optional': 'expansion'} +- Zvbc ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zvfhmin ~>1.0 {'optional': 'expansion'} +- Zvkt ~>1.0 {'optional': 'expansion'} +- Zkn ~>1.0 {'optional': 'localized'} +- Zks ~>1.0 {'optional': 'localized'} +- Zvkg ~>1.0 {'optional': 'localized'} +- Zvknc ~>1.0 {'optional': 'localized'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksc ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVB23U64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- U ~> 2.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Supm ~>1.0 {'optional': 'expansion'} +- V ~> 1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zfhmin ~> 1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zvbb ~>1.0 {'optional': 'expansion'} +- Zvbc ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zvfhmin ~>1.0 {'optional': 'expansion'} +- Zvkt ~>1.0 {'optional': 'expansion'} +- Zkn ~>1.0 {'optional': 'localized'} +- Zks ~>1.0 {'optional': 'localized'} +- Zvkg ~>1.0 {'optional': 'localized'} +- Zvknc ~>1.0 {'optional': 'localized'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksc ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVI20U32: +- I ~> 2.1 mandatory +- A = 2.1 optional +- C = 2.0 optional +- D = 2.2 optional +- F = 2.2 optional +- M = 2.0 optional +- Zicntr = 2.0 optional +- Zifencei = 2.0 optional +- Zihpm = 2.0 optional +RVI20U64: +- I ~> 2.1 mandatory +- A = 2.1 optional +- C = 2.0 optional +- D = 2.2 optional +- F = 2.2 optional +- M = 2.0 optional +- Zicntr = 2.0 optional +- Zifencei = 2.0 optional +- Zihpm = 2.0 optional diff --git a/tools/python/profile-extensions.golden.license b/tools/python/profile-extensions.golden.license new file mode 100644 index 000000000..d24c2d02b --- /dev/null +++ b/tools/python/profile-extensions.golden.license @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2025 Contributors to the RISCV UnifiedDB +# SPDX-License-Identifier: BSD-3-Clause-Clear diff --git a/tools/python/profile-extensions.py b/tools/python/profile-extensions.py index 87264a57a..6aa8732a7 100755 --- a/tools/python/profile-extensions.py +++ b/tools/python/profile-extensions.py @@ -3,48 +3,30 @@ # SPDX-License-Identifier: BSD-3-Clause-Clear import argparse -import json -import yaml -from pathlib import Path - -profiles = [] - -parser = argparse.ArgumentParser(description="List extensions associated with profiles") -parser.add_argument("-p", "--profiles") -parser.add_argument("paths", nargs="*", default=".") -params = parser.parse_args() - -profiles_filter = [] -if params.profiles is not None: - for profile in params.profiles.split(","): - profiles_filter.append(profile) - - -def store_yaml(path): - with open(path) as f: - y = yaml.safe_load(f) - if "kind" in y: - if y["kind"] == "profile": - if len(profiles_filter) == 0 or y["name"] in profiles_filter: - y["file"] = path - profiles.append(y) - - -def find_and_load_yaml(path): - p = Path(path) - if p.is_dir(): - for dirent in p.iterdir(): - find_and_load_yaml(dirent) - else: - if str(path).endswith(".yaml"): - store_yaml(path) +import UDB def main(): + parser = argparse.ArgumentParser( + description="List extensions associated with profiles" + ) + parser.add_argument("-p", "--profiles") + parser.add_argument("paths", nargs="*", default=".") + params = parser.parse_args() + + profiles_filter = [] + if params.profiles is not None: + for profile in params.profiles.split(","): + profiles_filter.append(profile) + + profiles = [] for path in params.paths: - find_and_load_yaml(path) + profiles += UDB.find_and_load_yaml(path, ["profile"]) + for profile in sorted(profiles, key=lambda x: x["name"]): - if "extensions" in profile: + if ( + len(profiles_filter) == 0 or profile["name"] in profiles_filter + ) and "extensions" in profile: print(f"{profile['name']}:") if "$child_of" in profile["extensions"]: del profile["extensions"]["$child_of"] diff --git a/tools/python/tasks.rake b/tools/python/tasks.rake new file mode 100644 index 000000000..784874f6f --- /dev/null +++ b/tools/python/tasks.rake @@ -0,0 +1,42 @@ +# Copyright (c) Ventana Micro Systems +# SPDX-License-Identifier: BSD-3-Clause-Clear + +namespace :chore do + + desc "Update golden profile-extensions output" + task :update_golden_profile_extensions do + Rake::Task["gen:resolved_arch"].invoke + sh "#{$root}/tools/python/profile-extensions.py #{$root}/gen/resolved_spec/_ > #{$root}/tools/python/profile-extensions.golden" + end + +end + +namespace :test do + + desc "Test that generated profile-extensions matched golden version" + task :profile_extensions do + Rake::Task["gen:resolved_arch"].invoke + + $logger.info "Testing profile-extensions" + sh "#{$root}/tools/python/profile-extensions.py #{$root}/gen/resolved_spec/_ > test-profile-extensions.txt" + sh "diff -u #{$root}/tools/python/profile-extensions.golden test-profile-extensions.txt" do |ok, res| + + rm "test-profile-extensions.txt", :force => true, :verbose => false + if ok + puts "PASSED" + else + warn <<~MSG + + The list of extensions associated with profiles has changed. + + If this is expected, run: + ./do chore:update_golden_profile_extensions + git add tools/python/profile-extensions.golden + + And commit. + MSG + exit 1 + end + end + end +end From c7402a0931ac611c9ce179e8fc98c83589c3b0cb Mon Sep 17 00:00:00 2001 From: "Paul A. Clarke" Date: Wed, 5 Nov 2025 08:32:26 -0600 Subject: [PATCH 3/6] fix: avoid using mutable default argument values --- tools/python/UDB.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/python/UDB.py b/tools/python/UDB.py index 0bc0a5655..dc4e9975d 100755 --- a/tools/python/UDB.py +++ b/tools/python/UDB.py @@ -6,7 +6,10 @@ from pathlib import Path -def store_yaml(path, kinds=[]): +def store_yaml(path, kinds=None): + if kinds is None: + kinds = [] + database = [] with open(path) as f: y = yaml.safe_load(f) From f24db50ee11ea11ffd401efcc0e94ee449db5566 Mon Sep 17 00:00:00 2001 From: "Paul A. Clarke" Date: Wed, 5 Nov 2025 20:55:37 -0600 Subject: [PATCH 4/6] fix: adopt pylint suggestions and simplify --- .github/workflows/regress.yml | 2 +- tools/python/UDB.py | 35 - tools/python/profile-extensions.golden | 597 ------------------ tools/python/profile_extensions.golden | 597 ++++++++++++++++++ ...ense => profile_extensions.golden.license} | 0 ...le-extensions.py => profile_extensions.py} | 32 +- tools/python/tasks.rake | 16 +- tools/python/udb.py | 31 + 8 files changed, 660 insertions(+), 650 deletions(-) delete mode 100755 tools/python/UDB.py delete mode 100644 tools/python/profile-extensions.golden create mode 100644 tools/python/profile_extensions.golden rename tools/python/{profile-extensions.golden.license => profile_extensions.golden.license} (100%) rename tools/python/{profile-extensions.py => profile_extensions.py} (55%) create mode 100755 tools/python/udb.py diff --git a/.github/workflows/regress.yml b/.github/workflows/regress.yml index db56b8df2..191bbcad7 100755 --- a/.github/workflows/regress.yml +++ b/.github/workflows/regress.yml @@ -243,7 +243,7 @@ jobs: uses: actions/checkout@v4 - name: singularity setup uses: ./.github/actions/singularity-setup - - name: Check profile-extensions + - name: Check profile_extensions run: ./do test:profile_extensions call-deploy: uses: ./.github/workflows/deploy.yml diff --git a/tools/python/UDB.py b/tools/python/UDB.py deleted file mode 100755 index dc4e9975d..000000000 --- a/tools/python/UDB.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python3 -# Copyright (c) Ventana Micro Systems -# SPDX-License-Identifier: BSD-3-Clause-Clear - -import yaml -from pathlib import Path - - -def store_yaml(path, kinds=None): - if kinds is None: - kinds = [] - - database = [] - with open(path) as f: - y = yaml.safe_load(f) - if "kind" in y: - if len(kinds) == 0 or y["kind"] in kinds: - y["file"] = path - database.append(y) - return database - - -database = [] - - -def find_and_load_yaml(path, kinds=[]): - global database - p = Path(path) - if p.is_dir(): - for dirent in p.iterdir(): - find_and_load_yaml(dirent, kinds) - else: - if str(path).endswith(".yaml"): - database += store_yaml(path, kinds) - return database diff --git a/tools/python/profile-extensions.golden b/tools/python/profile-extensions.golden deleted file mode 100644 index 6077c563a..000000000 --- a/tools/python/profile-extensions.golden +++ /dev/null @@ -1,597 +0,0 @@ -MP-S-64: -- A = 2.1 mandatory -- I ~> 2.1 mandatory -- Svade any mandatory -- Xmock ~> 0.9.9 mandatory -- Zifencei = 2.0 {'optional': 'development'} -- Zihpm = 2.0 {'optional': 'expansion'} -- S = 1.12 {'optional': 'localized'} -- Sv48 = 1.12 {'optional': 'transitory'} -MP-U-64: -- I ~> 2.1 mandatory -- Svade any mandatory -- A = 2.1 optional -RVA20S64: -- A = 2.1 mandatory -- C = 2.0 mandatory -- D = 2.2 mandatory -- F = 2.2 mandatory -- I ~> 2.1 mandatory -- M = 2.0 mandatory -- S = 1.11 mandatory -- Ssccptr = 1.0 mandatory -- Sstvala = 1.0 mandatory -- Sstvecd = 1.0 mandatory -- Sv39 = 1.11 mandatory -- Svade ~> 1.0 mandatory -- Svbare = 1.0 mandatory -- U ~> 1.0 mandatory -- Za128rs = 1.0 mandatory -- Ziccamoa = 1.0 mandatory -- Ziccif = 1.0 mandatory -- Zicclsm = 1.0 mandatory -- Ziccrse = 1.0 mandatory -- Zicntr = 2.0 mandatory -- Zifencei = 2.0 mandatory -- Ssu64xl = 1.0 optional -- Sv48 = 1.11 optional -- Zihpm = 2.0 optional -RVA20U64: -- A = 2.1 mandatory -- C = 2.0 mandatory -- D = 2.2 mandatory -- F = 2.2 mandatory -- I ~> 2.1 mandatory -- M = 2.0 mandatory -- U ~> 2.0 mandatory -- Za128rs = 1.0 mandatory -- Ziccamoa = 1.0 mandatory -- Ziccif = 1.0 mandatory -- Zicclsm = 1.0 mandatory -- Ziccrse = 1.0 mandatory -- Zicntr = 2.0 mandatory -- Zihpm = 2.0 optional -RVA22S64: -- A = 2.1 mandatory -- C = 2.0 mandatory -- D = 2.2 mandatory -- F = 2.2 mandatory -- I ~> 2.1 mandatory -- M = 2.0 mandatory -- S = 1.12 mandatory -- Ssccptr = 1.0 mandatory -- Sscounterenw = 1.0 mandatory -- Sstvala = 1.0 mandatory -- Sstvecd = 1.0 mandatory -- Sv39 = 1.11 mandatory -- Svade ~> 1.0 mandatory -- Svbare = 1.0 mandatory -- Svinval ~> 1.0 mandatory -- Svpbmt ~> 1.0 mandatory -- U ~> 2.0 mandatory -- Za128rs = 1.0 mandatory -- Zba ~> 1.0 mandatory -- Zbb ~> 1.0 mandatory -- Zbs ~> 1.0 mandatory -- Zfhmin ~> 1.0 mandatory -- Zic64b = 1.0 mandatory -- Zicbom ~> 1.0 mandatory -- Zicbop ~> 1.0 mandatory -- Zicboz ~> 1.0 mandatory -- Ziccamoa = 1.0 mandatory -- Ziccif = 1.0 mandatory -- Zicclsm = 1.0 mandatory -- Ziccrse = 1.0 mandatory -- Zicntr = 2.0 mandatory -- Zifencei = 2.0 mandatory -- Zihintpause = 2.0 mandatory -- Zihpm = 2.0 mandatory -- Zkt ~> 1.0 mandatory -- Sha ~>1.0 optional -- Sscofpmf ~> 1.0 optional -- Sstc ~> 1.0 optional -- Ssu64xl = 1.0 optional -- Sv48 ~> 1.12 optional -- Sv57 ~> 1.12 optional -- Svnapot ~> 1.0 optional -- V ~> 1.0 optional -- Zfh ~> 1.0 optional -- Zkn ~> 1.0 optional -- Zkr ~> 1.0 optional -- Zks ~> 1.0 optional -RVA22U64: -- A = 2.1 mandatory -- C = 2.0 mandatory -- D = 2.2 mandatory -- F = 2.2 mandatory -- I ~> 2.1 mandatory -- M = 2.0 mandatory -- U ~> 2.0 mandatory -- Za128rs = 1.0 mandatory -- Zba ~> 1.0 mandatory -- Zbb ~> 1.0 mandatory -- Zbs ~> 1.0 mandatory -- Zfhmin ~> 1.0 mandatory -- Zic64b = 1.0 mandatory -- Zicbom ~> 1.0 mandatory -- Zicbop ~> 1.0 mandatory -- Zicboz ~> 1.0 mandatory -- Ziccamoa = 1.0 mandatory -- Ziccif = 1.0 mandatory -- Zicclsm = 1.0 mandatory -- Ziccrse = 1.0 mandatory -- Zicntr = 2.0 mandatory -- Zihintpause = 2.0 mandatory -- Zihpm = 2.0 mandatory -- Zkt ~> 1.0 mandatory -- V ~> 1.0 optional -- Zfh ~> 1.0 optional -- Zkn ~> 1.0 optional -- Zks ~> 1.0 optional -RVA23M64: -- A = 2.1 mandatory -- C = 2.0 mandatory -- D = 2.2 mandatory -- F = 2.2 mandatory -- I ~> 2.1 mandatory -- M = 2.0 mandatory -- S ~>1.13 mandatory -- Sha ~>1.0 mandatory -- Sm ~> 1.13 mandatory -- Smpmp ~> 1.13 mandatory -- Ssccptr ~>1.0 mandatory -- Sscofpmf ~>1.0 mandatory -- Sscounterenw ~>1.0 mandatory -- Ssnpm ~>1.0 mandatory -- Sstc ~>1.0 mandatory -- Sstvala ~>1.0 mandatory -- Sstvecd ~>1.0 mandatory -- Ssu64xl ~>1.0 mandatory -- Supm ~>1.0 mandatory -- Sv39 ~>1.0 mandatory -- Svade ~>1.0 mandatory -- Svbare ~>1.0 mandatory -- Svinval ~>1.0 mandatory -- Svnapot ~>1.0 mandatory -- Svpbmt ~>1.0 mandatory -- U ~> 2.0 mandatory -- V ~> 1.0 mandatory -- Za128rs = 1.0 mandatory -- Za64rs ~>1.0 mandatory -- Zawrs ~>1.0 mandatory -- Zba ~> 1.0 mandatory -- Zbb ~> 1.0 mandatory -- Zbs ~> 1.0 mandatory -- Zcb ~>1.0 mandatory -- Zcmop ~>1.0 mandatory -- Zfa ~>1.0 mandatory -- Zfhmin ~> 1.0 mandatory -- Zic64b = 1.0 mandatory -- Zicbom ~> 1.0 mandatory -- Zicbop ~> 1.0 mandatory -- Zicboz ~> 1.0 mandatory -- Ziccamoa = 1.0 mandatory -- Ziccif = 1.0 mandatory -- Zicclsm = 1.0 mandatory -- Ziccrse = 1.0 mandatory -- Zicntr = 2.0 mandatory -- Zicond ~>1.0 mandatory -- Zifencei ~>1.0 mandatory -- Zihintntl ~>1.0 mandatory -- Zihintpause = 2.0 mandatory -- Zihpm = 2.0 mandatory -- Zimop ~>1.0 mandatory -- Zkt ~> 1.0 mandatory -- Zvbb ~>1.0 mandatory -- Zvfhmin ~>1.0 mandatory -- Zvkt ~>1.0 mandatory -- Zabha ~>1.0 {'optional': 'development'} -- Zacas ~>1.0 {'optional': 'development'} -- Zama16b ~>1.0 {'optional': 'development'} -- Ziccamoc ~>1.0 {'optional': 'development'} -- Zvbc ~>1.0 {'optional': 'development'} -- Sdtrig ~>1.0 {'optional': 'expansion'} -- Sspm ~>1.0 {'optional': 'expansion'} -- Ssstrict ~>1.0 {'optional': 'expansion'} -- Sv48 ~>1.13 {'optional': 'expansion'} -- Sv57 ~>1.13 {'optional': 'expansion'} -- Svadu ~>1.0 {'optional': 'expansion'} -- Svvptc ~>1.0 {'optional': 'expansion'} -- Zbc ~>1.0 {'optional': 'expansion'} -- Zfbfmin ~>1.0 {'optional': 'expansion'} -- Zfh ~>1.0 {'optional': 'expansion'} -- Zicfilp ~>1.0 {'optional': 'expansion'} -- Zicfiss ~>1.0 {'optional': 'expansion'} -- Zkr ~>1.0 {'optional': 'expansion'} -- Zvfbfmin ~>1.0 {'optional': 'expansion'} -- Zvfbfwma ~>1.0 {'optional': 'expansion'} -- Zvfh ~>1.0 {'optional': 'expansion'} -- Zkn ~>1.0 {'optional': 'localized'} -- Zks ~>1.0 {'optional': 'localized'} -- Zvkg ~>1.0 {'optional': 'localized'} -- Zvknc ~>1.0 {'optional': 'localized'} -- Zvkng ~>1.0 {'optional': 'localized'} -- Zvksc ~>1.0 {'optional': 'localized'} -- Zvksg ~>1.0 {'optional': 'localized'} -RVA23S64: -- A = 2.1 mandatory -- C = 2.0 mandatory -- D = 2.2 mandatory -- F = 2.2 mandatory -- I ~> 2.1 mandatory -- M = 2.0 mandatory -- S ~>1.13 mandatory -- Sha ~>1.0 mandatory -- Ssccptr ~>1.0 mandatory -- Sscofpmf ~>1.0 mandatory -- Sscounterenw ~>1.0 mandatory -- Ssnpm ~>1.0 mandatory -- Sstc ~>1.0 mandatory -- Sstvala ~>1.0 mandatory -- Sstvecd ~>1.0 mandatory -- Ssu64xl ~>1.0 mandatory -- Supm ~>1.0 mandatory -- Sv39 ~>1.0 mandatory -- Svade ~>1.0 mandatory -- Svbare ~>1.0 mandatory -- Svinval ~>1.0 mandatory -- Svnapot ~>1.0 mandatory -- Svpbmt ~>1.0 mandatory -- U ~> 2.0 mandatory -- V ~> 1.0 mandatory -- Za128rs = 1.0 mandatory -- Za64rs ~>1.0 mandatory -- Zawrs ~>1.0 mandatory -- Zba ~> 1.0 mandatory -- Zbb ~> 1.0 mandatory -- Zbs ~> 1.0 mandatory -- Zcb ~>1.0 mandatory -- Zcmop ~>1.0 mandatory -- Zfa ~>1.0 mandatory -- Zfhmin ~> 1.0 mandatory -- Zic64b = 1.0 mandatory -- Zicbom ~> 1.0 mandatory -- Zicbop ~> 1.0 mandatory -- Zicboz ~> 1.0 mandatory -- Ziccamoa = 1.0 mandatory -- Ziccif = 1.0 mandatory -- Zicclsm = 1.0 mandatory -- Ziccrse = 1.0 mandatory -- Zicntr = 2.0 mandatory -- Zicond ~>1.0 mandatory -- Zifencei ~>1.0 mandatory -- Zihintntl ~>1.0 mandatory -- Zihintpause = 2.0 mandatory -- Zihpm = 2.0 mandatory -- Zimop ~>1.0 mandatory -- Zkt ~> 1.0 mandatory -- Zvbb ~>1.0 mandatory -- Zvfhmin ~>1.0 mandatory -- Zvkt ~>1.0 mandatory -- Zabha ~>1.0 {'optional': 'development'} -- Zacas ~>1.0 {'optional': 'development'} -- Zama16b ~>1.0 {'optional': 'development'} -- Ziccamoc ~>1.0 {'optional': 'development'} -- Zvbc ~>1.0 {'optional': 'development'} -- Sdtrig ~>1.0 {'optional': 'expansion'} -- Sspm ~>1.0 {'optional': 'expansion'} -- Ssstrict ~>1.0 {'optional': 'expansion'} -- Sv48 ~>1.13 {'optional': 'expansion'} -- Sv57 ~>1.13 {'optional': 'expansion'} -- Svadu ~>1.0 {'optional': 'expansion'} -- Svvptc ~>1.0 {'optional': 'expansion'} -- Zbc ~>1.0 {'optional': 'expansion'} -- Zfbfmin ~>1.0 {'optional': 'expansion'} -- Zfh ~>1.0 {'optional': 'expansion'} -- Zicfilp ~>1.0 {'optional': 'expansion'} -- Zicfiss ~>1.0 {'optional': 'expansion'} -- Zkr ~>1.0 {'optional': 'expansion'} -- Zvfbfmin ~>1.0 {'optional': 'expansion'} -- Zvfbfwma ~>1.0 {'optional': 'expansion'} -- Zvfh ~>1.0 {'optional': 'expansion'} -- Zkn ~>1.0 {'optional': 'localized'} -- Zks ~>1.0 {'optional': 'localized'} -- Zvkg ~>1.0 {'optional': 'localized'} -- Zvknc ~>1.0 {'optional': 'localized'} -- Zvkng ~>1.0 {'optional': 'localized'} -- Zvksc ~>1.0 {'optional': 'localized'} -- Zvksg ~>1.0 {'optional': 'localized'} -RVA23U64: -- A = 2.1 mandatory -- C = 2.0 mandatory -- D = 2.2 mandatory -- F = 2.2 mandatory -- I ~> 2.1 mandatory -- M = 2.0 mandatory -- Supm ~>1.0 mandatory -- U ~> 2.0 mandatory -- V ~> 1.0 mandatory -- Za64rs ~>1.0 mandatory -- Zawrs ~>1.0 mandatory -- Zba ~> 1.0 mandatory -- Zbb ~> 1.0 mandatory -- Zbs ~> 1.0 mandatory -- Zcb ~>1.0 mandatory -- Zcmop ~>1.0 mandatory -- Zfa ~>1.0 mandatory -- Zfhmin ~> 1.0 mandatory -- Zic64b = 1.0 mandatory -- Zicbom ~> 1.0 mandatory -- Zicbop ~> 1.0 mandatory -- Zicboz ~> 1.0 mandatory -- Ziccamoa = 1.0 mandatory -- Ziccif = 1.0 mandatory -- Zicclsm = 1.0 mandatory -- Ziccrse = 1.0 mandatory -- Zicntr = 2.0 mandatory -- Zicond ~>1.0 mandatory -- Zihintntl ~>1.0 mandatory -- Zihintpause = 2.0 mandatory -- Zihpm = 2.0 mandatory -- Zimop ~>1.0 mandatory -- Zkt ~> 1.0 mandatory -- Zvbb ~>1.0 mandatory -- Zvfhmin ~>1.0 mandatory -- Zvkt ~>1.0 mandatory -- Zabha ~>1.0 {'optional': 'development'} -- Zacas ~>1.0 {'optional': 'development'} -- Zama16b ~>1.0 {'optional': 'development'} -- Ziccamoc ~>1.0 {'optional': 'development'} -- Zvbc ~>1.0 {'optional': 'development'} -- Ssstrict ~>1.0 {'optional': 'expansion'} -- Zbc ~>1.0 {'optional': 'expansion'} -- Zfbfmin ~>1.0 {'optional': 'expansion'} -- Zfh ~>1.0 {'optional': 'expansion'} -- Zicfilp ~>1.0 {'optional': 'expansion'} -- Zicfiss ~>1.0 {'optional': 'expansion'} -- Zvfbfmin ~>1.0 {'optional': 'expansion'} -- Zvfbfwma ~>1.0 {'optional': 'expansion'} -- Zvfh ~>1.0 {'optional': 'expansion'} -- Zvkng ~>1.0 {'optional': 'localized'} -- Zvksg ~>1.0 {'optional': 'localized'} -RVB23M64: -- A = 2.1 mandatory -- C = 2.0 mandatory -- D = 2.2 mandatory -- F = 2.2 mandatory -- I ~> 2.1 mandatory -- M = 2.0 mandatory -- S ~>1.13 mandatory -- Sm ~> 1.13 mandatory -- Smpmp ~> 1.13 mandatory -- Ssccptr ~>1.0 mandatory -- Sscofpmf ~>1.0 mandatory -- Sscounterenw ~>1.0 mandatory -- Sstc ~>1.0 mandatory -- Sstvala ~>1.0 mandatory -- Sstvecd ~>1.0 mandatory -- Ssu64xl ~>1.0 mandatory -- Sv39 ~>1.0 mandatory -- Svade ~>1.0 mandatory -- Svbare ~>1.0 mandatory -- Svinval ~>1.0 mandatory -- Svnapot ~>1.0 mandatory -- Svpbmt ~>1.0 mandatory -- U ~> 2.0 mandatory -- Za128rs = 1.0 mandatory -- Za64rs ~>1.0 mandatory -- Zawrs ~>1.0 mandatory -- Zba ~> 1.0 mandatory -- Zbb ~> 1.0 mandatory -- Zbs ~> 1.0 mandatory -- Zcb ~>1.0 mandatory -- Zcmop ~>1.0 mandatory -- Zfa ~>1.0 mandatory -- Zic64b = 1.0 mandatory -- Zicbom ~> 1.0 mandatory -- Zicbop ~> 1.0 mandatory -- Zicboz ~> 1.0 mandatory -- Ziccamoa = 1.0 mandatory -- Ziccif = 1.0 mandatory -- Zicclsm = 1.0 mandatory -- Ziccrse = 1.0 mandatory -- Zicntr = 2.0 mandatory -- Zicond ~>1.0 mandatory -- Zifencei ~>1.0 mandatory -- Zihintntl ~>1.0 mandatory -- Zihintpause = 2.0 mandatory -- Zihpm = 2.0 mandatory -- Zimop ~>1.0 mandatory -- Zkt ~> 1.0 mandatory -- Zabha ~>1.0 {'optional': 'development'} -- Zacas ~>1.0 {'optional': 'development'} -- Zama16b ~>1.0 {'optional': 'development'} -- Ziccamoc ~>1.0 {'optional': 'development'} -- Sdtrig ~>1.0 {'optional': 'expansion'} -- Sha ~>1.0 {'optional': 'expansion'} -- Ssnpm ~>1.0 {'optional': 'expansion'} -- Sspm ~>1.0 {'optional': 'expansion'} -- Ssstrict ~>1.0 {'optional': 'expansion'} -- Supm ~>1.0 {'optional': 'expansion'} -- Sv48 ~>1.13 {'optional': 'expansion'} -- Sv57 ~>1.13 {'optional': 'expansion'} -- Svadu ~>1.0 {'optional': 'expansion'} -- Svvptc ~>1.0 {'optional': 'expansion'} -- V ~> 1.0 {'optional': 'expansion'} -- Zbc ~>1.0 {'optional': 'expansion'} -- Zfbfmin ~>1.0 {'optional': 'expansion'} -- Zfh ~>1.0 {'optional': 'expansion'} -- Zfhmin ~> 1.0 {'optional': 'expansion'} -- Zicfilp ~>1.0 {'optional': 'expansion'} -- Zicfiss ~>1.0 {'optional': 'expansion'} -- Zkr ~>1.0 {'optional': 'expansion'} -- Zvbb ~>1.0 {'optional': 'expansion'} -- Zvbc ~>1.0 {'optional': 'expansion'} -- Zvfbfmin ~>1.0 {'optional': 'expansion'} -- Zvfbfwma ~>1.0 {'optional': 'expansion'} -- Zvfh ~>1.0 {'optional': 'expansion'} -- Zvfhmin ~>1.0 {'optional': 'expansion'} -- Zvkt ~>1.0 {'optional': 'expansion'} -- Zkn ~>1.0 {'optional': 'localized'} -- Zks ~>1.0 {'optional': 'localized'} -- Zvkg ~>1.0 {'optional': 'localized'} -- Zvknc ~>1.0 {'optional': 'localized'} -- Zvkng ~>1.0 {'optional': 'localized'} -- Zvksc ~>1.0 {'optional': 'localized'} -- Zvksg ~>1.0 {'optional': 'localized'} -RVB23S64: -- A = 2.1 mandatory -- C = 2.0 mandatory -- D = 2.2 mandatory -- F = 2.2 mandatory -- I ~> 2.1 mandatory -- M = 2.0 mandatory -- S ~>1.13 mandatory -- Ssccptr ~>1.0 mandatory -- Sscofpmf ~>1.0 mandatory -- Sscounterenw ~>1.0 mandatory -- Sstc ~>1.0 mandatory -- Sstvala ~>1.0 mandatory -- Sstvecd ~>1.0 mandatory -- Ssu64xl ~>1.0 mandatory -- Sv39 ~>1.0 mandatory -- Svade ~>1.0 mandatory -- Svbare ~>1.0 mandatory -- Svinval ~>1.0 mandatory -- Svnapot ~>1.0 mandatory -- Svpbmt ~>1.0 mandatory -- U ~> 2.0 mandatory -- Za128rs = 1.0 mandatory -- Za64rs ~>1.0 mandatory -- Zawrs ~>1.0 mandatory -- Zba ~> 1.0 mandatory -- Zbb ~> 1.0 mandatory -- Zbs ~> 1.0 mandatory -- Zcb ~>1.0 mandatory -- Zcmop ~>1.0 mandatory -- Zfa ~>1.0 mandatory -- Zic64b = 1.0 mandatory -- Zicbom ~> 1.0 mandatory -- Zicbop ~> 1.0 mandatory -- Zicboz ~> 1.0 mandatory -- Ziccamoa = 1.0 mandatory -- Ziccif = 1.0 mandatory -- Zicclsm = 1.0 mandatory -- Ziccrse = 1.0 mandatory -- Zicntr = 2.0 mandatory -- Zicond ~>1.0 mandatory -- Zifencei ~>1.0 mandatory -- Zihintntl ~>1.0 mandatory -- Zihintpause = 2.0 mandatory -- Zihpm = 2.0 mandatory -- Zimop ~>1.0 mandatory -- Zkt ~> 1.0 mandatory -- Zabha ~>1.0 {'optional': 'development'} -- Zacas ~>1.0 {'optional': 'development'} -- Zama16b ~>1.0 {'optional': 'development'} -- Ziccamoc ~>1.0 {'optional': 'development'} -- Sdtrig ~>1.0 {'optional': 'expansion'} -- Sha ~>1.0 {'optional': 'expansion'} -- Ssnpm ~>1.0 {'optional': 'expansion'} -- Sspm ~>1.0 {'optional': 'expansion'} -- Ssstrict ~>1.0 {'optional': 'expansion'} -- Supm ~>1.0 {'optional': 'expansion'} -- Sv48 ~>1.13 {'optional': 'expansion'} -- Sv57 ~>1.13 {'optional': 'expansion'} -- Svadu ~>1.0 {'optional': 'expansion'} -- Svvptc ~>1.0 {'optional': 'expansion'} -- V ~> 1.0 {'optional': 'expansion'} -- Zbc ~>1.0 {'optional': 'expansion'} -- Zfbfmin ~>1.0 {'optional': 'expansion'} -- Zfh ~>1.0 {'optional': 'expansion'} -- Zfhmin ~> 1.0 {'optional': 'expansion'} -- Zicfilp ~>1.0 {'optional': 'expansion'} -- Zicfiss ~>1.0 {'optional': 'expansion'} -- Zkr ~>1.0 {'optional': 'expansion'} -- Zvbb ~>1.0 {'optional': 'expansion'} -- Zvbc ~>1.0 {'optional': 'expansion'} -- Zvfbfmin ~>1.0 {'optional': 'expansion'} -- Zvfbfwma ~>1.0 {'optional': 'expansion'} -- Zvfh ~>1.0 {'optional': 'expansion'} -- Zvfhmin ~>1.0 {'optional': 'expansion'} -- Zvkt ~>1.0 {'optional': 'expansion'} -- Zkn ~>1.0 {'optional': 'localized'} -- Zks ~>1.0 {'optional': 'localized'} -- Zvkg ~>1.0 {'optional': 'localized'} -- Zvknc ~>1.0 {'optional': 'localized'} -- Zvkng ~>1.0 {'optional': 'localized'} -- Zvksc ~>1.0 {'optional': 'localized'} -- Zvksg ~>1.0 {'optional': 'localized'} -RVB23U64: -- A = 2.1 mandatory -- C = 2.0 mandatory -- D = 2.2 mandatory -- F = 2.2 mandatory -- I ~> 2.1 mandatory -- M = 2.0 mandatory -- U ~> 2.0 mandatory -- Za64rs ~>1.0 mandatory -- Zawrs ~>1.0 mandatory -- Zba ~> 1.0 mandatory -- Zbb ~> 1.0 mandatory -- Zbs ~> 1.0 mandatory -- Zcb ~>1.0 mandatory -- Zcmop ~>1.0 mandatory -- Zfa ~>1.0 mandatory -- Zic64b = 1.0 mandatory -- Zicbom ~> 1.0 mandatory -- Zicbop ~> 1.0 mandatory -- Zicboz ~> 1.0 mandatory -- Ziccamoa = 1.0 mandatory -- Ziccif = 1.0 mandatory -- Zicclsm = 1.0 mandatory -- Ziccrse = 1.0 mandatory -- Zicntr = 2.0 mandatory -- Zicond ~>1.0 mandatory -- Zihintntl ~>1.0 mandatory -- Zihintpause = 2.0 mandatory -- Zihpm = 2.0 mandatory -- Zimop ~>1.0 mandatory -- Zkt ~> 1.0 mandatory -- Zabha ~>1.0 {'optional': 'development'} -- Zacas ~>1.0 {'optional': 'development'} -- Zama16b ~>1.0 {'optional': 'development'} -- Ziccamoc ~>1.0 {'optional': 'development'} -- Ssstrict ~>1.0 {'optional': 'expansion'} -- Supm ~>1.0 {'optional': 'expansion'} -- V ~> 1.0 {'optional': 'expansion'} -- Zbc ~>1.0 {'optional': 'expansion'} -- Zfbfmin ~>1.0 {'optional': 'expansion'} -- Zfh ~>1.0 {'optional': 'expansion'} -- Zfhmin ~> 1.0 {'optional': 'expansion'} -- Zicfilp ~>1.0 {'optional': 'expansion'} -- Zicfiss ~>1.0 {'optional': 'expansion'} -- Zvbb ~>1.0 {'optional': 'expansion'} -- Zvbc ~>1.0 {'optional': 'expansion'} -- Zvfbfmin ~>1.0 {'optional': 'expansion'} -- Zvfbfwma ~>1.0 {'optional': 'expansion'} -- Zvfh ~>1.0 {'optional': 'expansion'} -- Zvfhmin ~>1.0 {'optional': 'expansion'} -- Zvkt ~>1.0 {'optional': 'expansion'} -- Zkn ~>1.0 {'optional': 'localized'} -- Zks ~>1.0 {'optional': 'localized'} -- Zvkg ~>1.0 {'optional': 'localized'} -- Zvknc ~>1.0 {'optional': 'localized'} -- Zvkng ~>1.0 {'optional': 'localized'} -- Zvksc ~>1.0 {'optional': 'localized'} -- Zvksg ~>1.0 {'optional': 'localized'} -RVI20U32: -- I ~> 2.1 mandatory -- A = 2.1 optional -- C = 2.0 optional -- D = 2.2 optional -- F = 2.2 optional -- M = 2.0 optional -- Zicntr = 2.0 optional -- Zifencei = 2.0 optional -- Zihpm = 2.0 optional -RVI20U64: -- I ~> 2.1 mandatory -- A = 2.1 optional -- C = 2.0 optional -- D = 2.2 optional -- F = 2.2 optional -- M = 2.0 optional -- Zicntr = 2.0 optional -- Zifencei = 2.0 optional -- Zihpm = 2.0 optional diff --git a/tools/python/profile_extensions.golden b/tools/python/profile_extensions.golden new file mode 100644 index 000000000..f204689f5 --- /dev/null +++ b/tools/python/profile_extensions.golden @@ -0,0 +1,597 @@ +MP-S-64: +- A = 2.1 mandatory +- I ~> 2.1 mandatory +- Svade any mandatory +- Xmock ~> 0.9.9 mandatory +- Zifencei = 2.0 {'optional': 'development'} +- Zihpm = 2.0 {'optional': 'expansion'} +- S = 1.12 {'optional': 'localized'} +- Sv48 = 1.12 {'optional': 'transitory'} +MP-U-64: +- I ~> 2.1 mandatory +- Svade any mandatory +- A = 2.1 optional +RVA20S64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S = 1.11 mandatory +- Ssccptr = 1.0 mandatory +- Sstvala = 1.0 mandatory +- Sstvecd = 1.0 mandatory +- Sv39 = 1.11 mandatory +- Svade ~> 1.0 mandatory +- Svbare = 1.0 mandatory +- U ~> 1.0 mandatory +- Za128rs = 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zifencei = 2.0 mandatory +- Ssu64xl = 1.0 optional +- Sv48 = 1.11 optional +- Zihpm = 2.0 optional +RVA20U64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- U ~> 2.0 mandatory +- Za128rs = 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zihpm = 2.0 optional +RVA22S64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S = 1.12 mandatory +- Ssccptr = 1.0 mandatory +- Sscounterenw = 1.0 mandatory +- Sstvala = 1.0 mandatory +- Sstvecd = 1.0 mandatory +- Sv39 = 1.11 mandatory +- Svade ~> 1.0 mandatory +- Svbare = 1.0 mandatory +- Svinval ~> 1.0 mandatory +- Svpbmt ~> 1.0 mandatory +- U ~> 2.0 mandatory +- Za128rs = 1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zfhmin ~> 1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zifencei = 2.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zkt ~> 1.0 mandatory +- Sha ~>1.0 optional +- Sscofpmf ~> 1.0 optional +- Sstc ~> 1.0 optional +- Ssu64xl = 1.0 optional +- Sv48 ~> 1.12 optional +- Sv57 ~> 1.12 optional +- Svnapot ~> 1.0 optional +- V ~> 1.0 optional +- Zfh ~> 1.0 optional +- Zkn ~> 1.0 optional +- Zkr ~> 1.0 optional +- Zks ~> 1.0 optional +RVA22U64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- U ~> 2.0 mandatory +- Za128rs = 1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zfhmin ~> 1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zkt ~> 1.0 mandatory +- V ~> 1.0 optional +- Zfh ~> 1.0 optional +- Zkn ~> 1.0 optional +- Zks ~> 1.0 optional +RVA23M64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S ~>1.13 mandatory +- Sha ~>1.0 mandatory +- Sm ~> 1.13 mandatory +- Smpmp ~> 1.13 mandatory +- Ssccptr ~>1.0 mandatory +- Sscofpmf ~>1.0 mandatory +- Sscounterenw ~>1.0 mandatory +- Ssnpm ~>1.0 mandatory +- Sstc ~>1.0 mandatory +- Sstvala ~>1.0 mandatory +- Sstvecd ~>1.0 mandatory +- Ssu64xl ~>1.0 mandatory +- Supm ~>1.0 mandatory +- Sv39 ~>1.0 mandatory +- Svade ~>1.0 mandatory +- Svbare ~>1.0 mandatory +- Svinval ~>1.0 mandatory +- Svnapot ~>1.0 mandatory +- Svpbmt ~>1.0 mandatory +- U ~> 2.0 mandatory +- V ~> 1.0 mandatory +- Za128rs = 1.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zfhmin ~> 1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zifencei ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zvbb ~>1.0 mandatory +- Zvfhmin ~>1.0 mandatory +- Zvkt ~>1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Zvbc ~>1.0 {'optional': 'development'} +- Sdtrig ~>1.0 {'optional': 'expansion'} +- Sspm ~>1.0 {'optional': 'expansion'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Sv48 ~>1.13 {'optional': 'expansion'} +- Sv57 ~>1.13 {'optional': 'expansion'} +- Svadu ~>1.0 {'optional': 'expansion'} +- Svvptc ~>1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zkr ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zkn ~>1.0 {'optional': 'localized'} +- Zks ~>1.0 {'optional': 'localized'} +- Zvkg ~>1.0 {'optional': 'localized'} +- Zvknc ~>1.0 {'optional': 'localized'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksc ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVA23S64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S ~>1.13 mandatory +- Sha ~>1.0 mandatory +- Ssccptr ~>1.0 mandatory +- Sscofpmf ~>1.0 mandatory +- Sscounterenw ~>1.0 mandatory +- Ssnpm ~>1.0 mandatory +- Sstc ~>1.0 mandatory +- Sstvala ~>1.0 mandatory +- Sstvecd ~>1.0 mandatory +- Ssu64xl ~>1.0 mandatory +- Supm ~>1.0 mandatory +- Sv39 ~>1.0 mandatory +- Svade ~>1.0 mandatory +- Svbare ~>1.0 mandatory +- Svinval ~>1.0 mandatory +- Svnapot ~>1.0 mandatory +- Svpbmt ~>1.0 mandatory +- U ~> 2.0 mandatory +- V ~> 1.0 mandatory +- Za128rs = 1.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zfhmin ~> 1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zifencei ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zvbb ~>1.0 mandatory +- Zvfhmin ~>1.0 mandatory +- Zvkt ~>1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Zvbc ~>1.0 {'optional': 'development'} +- Sdtrig ~>1.0 {'optional': 'expansion'} +- Sspm ~>1.0 {'optional': 'expansion'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Sv48 ~>1.13 {'optional': 'expansion'} +- Sv57 ~>1.13 {'optional': 'expansion'} +- Svadu ~>1.0 {'optional': 'expansion'} +- Svvptc ~>1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zkr ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zkn ~>1.0 {'optional': 'localized'} +- Zks ~>1.0 {'optional': 'localized'} +- Zvkg ~>1.0 {'optional': 'localized'} +- Zvknc ~>1.0 {'optional': 'localized'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksc ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVA23U64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- Supm ~>1.0 mandatory +- U ~> 2.0 mandatory +- V ~> 1.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zfhmin ~> 1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zvbb ~>1.0 mandatory +- Zvfhmin ~>1.0 mandatory +- Zvkt ~>1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Zvbc ~>1.0 {'optional': 'development'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVB23M64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S ~>1.13 mandatory +- Sm ~> 1.13 mandatory +- Smpmp ~> 1.13 mandatory +- Ssccptr ~>1.0 mandatory +- Sscofpmf ~>1.0 mandatory +- Sscounterenw ~>1.0 mandatory +- Sstc ~>1.0 mandatory +- Sstvala ~>1.0 mandatory +- Sstvecd ~>1.0 mandatory +- Ssu64xl ~>1.0 mandatory +- Sv39 ~>1.0 mandatory +- Svade ~>1.0 mandatory +- Svbare ~>1.0 mandatory +- Svinval ~>1.0 mandatory +- Svnapot ~>1.0 mandatory +- Svpbmt ~>1.0 mandatory +- U ~> 2.0 mandatory +- Za128rs = 1.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zifencei ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Sdtrig ~>1.0 {'optional': 'expansion'} +- Sha ~>1.0 {'optional': 'expansion'} +- Ssnpm ~>1.0 {'optional': 'expansion'} +- Sspm ~>1.0 {'optional': 'expansion'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Supm ~>1.0 {'optional': 'expansion'} +- Sv48 ~>1.13 {'optional': 'expansion'} +- Sv57 ~>1.13 {'optional': 'expansion'} +- Svadu ~>1.0 {'optional': 'expansion'} +- Svvptc ~>1.0 {'optional': 'expansion'} +- V ~> 1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zfhmin ~> 1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zkr ~>1.0 {'optional': 'expansion'} +- Zvbb ~>1.0 {'optional': 'expansion'} +- Zvbc ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zvfhmin ~>1.0 {'optional': 'expansion'} +- Zvkt ~>1.0 {'optional': 'expansion'} +- Zkn ~>1.0 {'optional': 'localized'} +- Zks ~>1.0 {'optional': 'localized'} +- Zvkg ~>1.0 {'optional': 'localized'} +- Zvknc ~>1.0 {'optional': 'localized'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksc ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVB23S64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- S ~>1.13 mandatory +- Ssccptr ~>1.0 mandatory +- Sscofpmf ~>1.0 mandatory +- Sscounterenw ~>1.0 mandatory +- Sstc ~>1.0 mandatory +- Sstvala ~>1.0 mandatory +- Sstvecd ~>1.0 mandatory +- Ssu64xl ~>1.0 mandatory +- Sv39 ~>1.0 mandatory +- Svade ~>1.0 mandatory +- Svbare ~>1.0 mandatory +- Svinval ~>1.0 mandatory +- Svnapot ~>1.0 mandatory +- Svpbmt ~>1.0 mandatory +- U ~> 2.0 mandatory +- Za128rs = 1.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zifencei ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Sdtrig ~>1.0 {'optional': 'expansion'} +- Sha ~>1.0 {'optional': 'expansion'} +- Ssnpm ~>1.0 {'optional': 'expansion'} +- Sspm ~>1.0 {'optional': 'expansion'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Supm ~>1.0 {'optional': 'expansion'} +- Sv48 ~>1.13 {'optional': 'expansion'} +- Sv57 ~>1.13 {'optional': 'expansion'} +- Svadu ~>1.0 {'optional': 'expansion'} +- Svvptc ~>1.0 {'optional': 'expansion'} +- V ~> 1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zfhmin ~> 1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zkr ~>1.0 {'optional': 'expansion'} +- Zvbb ~>1.0 {'optional': 'expansion'} +- Zvbc ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zvfhmin ~>1.0 {'optional': 'expansion'} +- Zvkt ~>1.0 {'optional': 'expansion'} +- Zkn ~>1.0 {'optional': 'localized'} +- Zks ~>1.0 {'optional': 'localized'} +- Zvkg ~>1.0 {'optional': 'localized'} +- Zvknc ~>1.0 {'optional': 'localized'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksc ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVB23U64: +- A = 2.1 mandatory +- C = 2.0 mandatory +- D = 2.2 mandatory +- F = 2.2 mandatory +- I ~> 2.1 mandatory +- M = 2.0 mandatory +- U ~> 2.0 mandatory +- Za64rs ~>1.0 mandatory +- Zawrs ~>1.0 mandatory +- Zba ~> 1.0 mandatory +- Zbb ~> 1.0 mandatory +- Zbs ~> 1.0 mandatory +- Zcb ~>1.0 mandatory +- Zcmop ~>1.0 mandatory +- Zfa ~>1.0 mandatory +- Zic64b = 1.0 mandatory +- Zicbom ~> 1.0 mandatory +- Zicbop ~> 1.0 mandatory +- Zicboz ~> 1.0 mandatory +- Ziccamoa = 1.0 mandatory +- Ziccif = 1.0 mandatory +- Zicclsm = 1.0 mandatory +- Ziccrse = 1.0 mandatory +- Zicntr = 2.0 mandatory +- Zicond ~>1.0 mandatory +- Zihintntl ~>1.0 mandatory +- Zihintpause = 2.0 mandatory +- Zihpm = 2.0 mandatory +- Zimop ~>1.0 mandatory +- Zkt ~> 1.0 mandatory +- Zabha ~>1.0 {'optional': 'development'} +- Zacas ~>1.0 {'optional': 'development'} +- Zama16b ~>1.0 {'optional': 'development'} +- Ziccamoc ~>1.0 {'optional': 'development'} +- Ssstrict ~>1.0 {'optional': 'expansion'} +- Supm ~>1.0 {'optional': 'expansion'} +- V ~> 1.0 {'optional': 'expansion'} +- Zbc ~>1.0 {'optional': 'expansion'} +- Zfbfmin ~>1.0 {'optional': 'expansion'} +- Zfh ~>1.0 {'optional': 'expansion'} +- Zfhmin ~> 1.0 {'optional': 'expansion'} +- Zicfilp ~>1.0 {'optional': 'expansion'} +- Zicfiss ~>1.0 {'optional': 'expansion'} +- Zvbb ~>1.0 {'optional': 'expansion'} +- Zvbc ~>1.0 {'optional': 'expansion'} +- Zvfbfmin ~>1.0 {'optional': 'expansion'} +- Zvfbfwma ~>1.0 {'optional': 'expansion'} +- Zvfh ~>1.0 {'optional': 'expansion'} +- Zvfhmin ~>1.0 {'optional': 'expansion'} +- Zvkt ~>1.0 {'optional': 'expansion'} +- Zkn ~>1.0 {'optional': 'localized'} +- Zks ~>1.0 {'optional': 'localized'} +- Zvkg ~>1.0 {'optional': 'localized'} +- Zvknc ~>1.0 {'optional': 'localized'} +- Zvkng ~>1.0 {'optional': 'localized'} +- Zvksc ~>1.0 {'optional': 'localized'} +- Zvksg ~>1.0 {'optional': 'localized'} +RVI20U32: +- I ~> 2.1 mandatory +- A = 2.1 optional +- C = 2.0 optional +- D = 2.2 optional +- F = 2.2 optional +- M = 2.0 optional +- Zicntr = 2.0 optional +- Zifencei = 2.0 optional +- Zihpm = 2.0 optional +RVI20U64: +- I ~> 2.1 mandatory +- A = 2.1 optional +- C = 2.0 optional +- D = 2.2 optional +- F = 2.2 optional +- M = 2.0 optional +- Zicntr = 2.0 optional +- Zifencei = 2.0 optional +- Zihpm = 2.0 optional diff --git a/tools/python/profile-extensions.golden.license b/tools/python/profile_extensions.golden.license similarity index 100% rename from tools/python/profile-extensions.golden.license rename to tools/python/profile_extensions.golden.license diff --git a/tools/python/profile-extensions.py b/tools/python/profile_extensions.py similarity index 55% rename from tools/python/profile-extensions.py rename to tools/python/profile_extensions.py index 6aa8732a7..f4ab6fabf 100755 --- a/tools/python/profile-extensions.py +++ b/tools/python/profile_extensions.py @@ -1,12 +1,22 @@ #!/usr/bin/env python3 # Copyright (c) Ventana Micro Systems # SPDX-License-Identifier: BSD-3-Clause-Clear +"""List RISC-V extensions associated with given (or all defined) profile(s). + +It is generally expected to be used with a "resolved architectural specification". +So, for example: +``` +$ ./profile_extensions [--profiles P1[,P2]] $UDB_ROOT/gen/resolved_spec/_ +``` +""" import argparse -import UDB +import udb def main(): + """List extensions associated with profiles.""" + parser = argparse.ArgumentParser( description="List extensions associated with profiles" ) @@ -21,7 +31,7 @@ def main(): profiles = [] for path in params.paths: - profiles += UDB.find_and_load_yaml(path, ["profile"]) + profiles += udb.find_and_load_yaml(path, ["profile"]) for profile in sorted(profiles, key=lambda x: x["name"]): if ( @@ -32,16 +42,20 @@ def main(): del profile["extensions"]["$child_of"] if "$parent_of" in profile["extensions"]: del profile["extensions"]["$parent_of"] + + # convert extensions from dict to array to facilitate sorting by closure + extensions = [] + for extension in profile["extensions"]: + profile["extensions"][extension]["name"] = extension + extensions.append(profile["extensions"][extension]) + for extension in sorted( - profile["extensions"], - key=lambda x: f"{profile['extensions'][x]['presence']},{x}", + extensions, key=lambda x: f"{x['presence']},{x['name']}" ): version = "any" - if "version" in profile["extensions"][extension]: - version = profile["extensions"][extension]["version"] - print( - f"- {extension} {version} {profile['extensions'][extension]['presence']}" - ) + if "version" in extension: + version = extension["version"] + print(f"- {extension['name']} {version} {extension['presence']}") if __name__ == "__main__": diff --git a/tools/python/tasks.rake b/tools/python/tasks.rake index 784874f6f..0cae50ddc 100644 --- a/tools/python/tasks.rake +++ b/tools/python/tasks.rake @@ -3,25 +3,25 @@ namespace :chore do - desc "Update golden profile-extensions output" + desc "Update golden profile_extensions output" task :update_golden_profile_extensions do Rake::Task["gen:resolved_arch"].invoke - sh "#{$root}/tools/python/profile-extensions.py #{$root}/gen/resolved_spec/_ > #{$root}/tools/python/profile-extensions.golden" + sh "#{$root}/tools/python/profile_extensions.py #{$root}/gen/resolved_spec/_ > #{$root}/tools/python/profile_extensions.golden" end end namespace :test do - desc "Test that generated profile-extensions matched golden version" + desc "Test that generated profile_extensions matched golden version" task :profile_extensions do Rake::Task["gen:resolved_arch"].invoke - $logger.info "Testing profile-extensions" - sh "#{$root}/tools/python/profile-extensions.py #{$root}/gen/resolved_spec/_ > test-profile-extensions.txt" - sh "diff -u #{$root}/tools/python/profile-extensions.golden test-profile-extensions.txt" do |ok, res| + $logger.info "Testing profile_extensions" + sh "#{$root}/tools/python/profile_extensions.py #{$root}/gen/resolved_spec/_ > test-profile_extensions.txt" + sh "diff -u #{$root}/tools/python/profile_extensions.golden test-profile_extensions.txt" do |ok, res| - rm "test-profile-extensions.txt", :force => true, :verbose => false + rm "test-profile_extensions.txt", :force => true, :verbose => false if ok puts "PASSED" else @@ -31,7 +31,7 @@ namespace :test do If this is expected, run: ./do chore:update_golden_profile_extensions - git add tools/python/profile-extensions.golden + git add tools/python/profile_extensions.golden And commit. MSG diff --git a/tools/python/udb.py b/tools/python/udb.py new file mode 100755 index 000000000..b8c385b3c --- /dev/null +++ b/tools/python/udb.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +# Copyright (c) Ventana Micro Systems +# SPDX-License-Identifier: BSD-3-Clause-Clear +"""Python utilities for using UDB""" + +from pathlib import Path +import yaml + + +database = [] + + +def find_and_load_yaml(path, kinds=None): + """Load the YAML files in a directory hierarchy into an array of dictionaries. + + Optionally, restrict to specific "kinds" of YAML files. + """ + + p = Path(path) + if p.is_dir(): + for dirent in p.iterdir(): + find_and_load_yaml(dirent, kinds) + else: + if str(path).endswith(".yaml"): + with open(path, encoding="utf-8") as f: + y = yaml.safe_load(f) + if "kind" in y: + if len(kinds) == 0 or y["kind"] in kinds: + y["file"] = path + database.append(y) + return database From 65becf56ae4da1d593aff33bbbb6383ff688a396 Mon Sep 17 00:00:00 2001 From: "Paul A. Clarke" Date: Thu, 6 Nov 2025 09:15:55 -0600 Subject: [PATCH 5/6] fix: simplify implementation --- tools/python/udb.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/tools/python/udb.py b/tools/python/udb.py index b8c385b3c..33a6d66f8 100755 --- a/tools/python/udb.py +++ b/tools/python/udb.py @@ -17,15 +17,11 @@ def find_and_load_yaml(path, kinds=None): """ p = Path(path) - if p.is_dir(): - for dirent in p.iterdir(): - find_and_load_yaml(dirent, kinds) - else: - if str(path).endswith(".yaml"): - with open(path, encoding="utf-8") as f: - y = yaml.safe_load(f) - if "kind" in y: - if len(kinds) == 0 or y["kind"] in kinds: - y["file"] = path - database.append(y) + for path in p.rglob("*.yaml"): + with open(path, encoding="utf-8") as f: + y = yaml.safe_load(f) + if "kind" in y: + if len(kinds) == 0 or y["kind"] in kinds: + y["file"] = path + database.append(y) return database From 92d9ce0149cdbea908ec82d4d06cc83cc261acd9 Mon Sep 17 00:00:00 2001 From: "Paul A. Clarke" Date: Thu, 6 Nov 2025 09:51:30 -0600 Subject: [PATCH 6/6] fix: use local variable and fixes for pylint --- tools/python/udb.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tools/python/udb.py b/tools/python/udb.py index 33a6d66f8..2f23ba505 100755 --- a/tools/python/udb.py +++ b/tools/python/udb.py @@ -7,21 +7,19 @@ import yaml -database = [] - - def find_and_load_yaml(path, kinds=None): """Load the YAML files in a directory hierarchy into an array of dictionaries. Optionally, restrict to specific "kinds" of YAML files. """ + database = [] p = Path(path) - for path in p.rglob("*.yaml"): - with open(path, encoding="utf-8") as f: + for file in p.rglob("*.yaml"): + with open(file, encoding="utf-8") as f: y = yaml.safe_load(f) if "kind" in y: if len(kinds) == 0 or y["kind"] in kinds: - y["file"] = path + y["file"] = file database.append(y) return database