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..dc4e9975d --- /dev/null +++ b/tools/python/UDB.py @@ -0,0 +1,35 @@ +#!/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 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 new file mode 100755 index 000000000..6aa8732a7 --- /dev/null +++ b/tools/python/profile-extensions.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +# Copyright (c) Ventana Micro Systems +# SPDX-License-Identifier: BSD-3-Clause-Clear + +import argparse +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: + profiles += UDB.find_and_load_yaml(path, ["profile"]) + + for profile in sorted(profiles, key=lambda x: x["name"]): + 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"] + 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() 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