Skip to content

Commit

Permalink
Fix isa string generation (#424)
Browse files Browse the repository at this point in the history
  • Loading branch information
piotro888 committed Jul 3, 2023
1 parent 98f5b88 commit 18ec744
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 9 deletions.
5 changes: 5 additions & 0 deletions coreblocks/params/isa.py
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,11 @@ class Extension(enum.IntFlag):
Extension.B: Extension.ZBA | Extension.ZBB | Extension.ZBC | Extension.ZBS,
}

# Extensions (not aliases) that only imply other sub-extensions, but don't add any new OpTypes.
extension_only_implies = {
Extension.B,
}


class ISA:
"""
Expand Down
5 changes: 3 additions & 2 deletions coreblocks/params/optypes.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from enum import IntEnum, auto, unique

from coreblocks.params import Extension
from coreblocks.params.isa import extension_implications
from coreblocks.params.isa import extension_implications, extension_only_implies


@unique
Expand Down Expand Up @@ -117,7 +117,8 @@ def optypes_required_by_extensions(
implied_extensions = Extension(0)
for ext in Extension:
if ext in extensions:
if ext in extension_implications and ext in optypes_by_extensions:
# check if extensions has implications, but skip if we don't have defined any optypes for it yet
if ext in extension_implications and (ext in optypes_by_extensions or ext in extension_only_implies):
implied_extensions |= extension_implications[ext]
extensions |= implied_extensions

Expand Down
11 changes: 4 additions & 7 deletions test/params/test_configurations.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,7 @@ class ISAStrTest:

TEST_CASES = [
ISAStrTest(basic_core_config, "rv32i", "rv32", "rv32i"),
ISAStrTest(
full_core_config,
"rv32imzicsr_zba_zbb_zbc_zbs",
"rv32mzicsr_zba_zbb_zbc_zbs",
"rv32imczicsr_zba_zbb_zbc_zbs",
),
ISAStrTest(full_core_config, "rv32imcbzicsr", "rv32mcbzicsr", "rv32imcbzicsr"),
ISAStrTest(tiny_core_config, "rv32i", "rv32", "rv32i"),
ISAStrTest(test_core_config, "rv32", "rv32", "rv32i"),
]
Expand All @@ -34,7 +29,9 @@ def test_isa_str_gp(self):

def test_isa_str_raw(self):
for test in self.TEST_CASES:
partial, full = extensions_supported(test.core_config.func_units_config)
partial, full = extensions_supported(
test.core_config.func_units_config, test.core_config.embedded, test.core_config.compressed
)

partial = gen_isa_string(partial, 32)
full = gen_isa_string(full, 32)
Expand Down

0 comments on commit 18ec744

Please sign in to comment.