Source code for avl_riscv_coverage.coverage_packages._opcodes

import avl
from avl_riscv_coverage._coverage import COVERPACKAGES, CoverPackage
from avl_riscv_coverage._isa import ISA
from avl_riscv_coverage._trace import Trace


[docs] class Opcodes(CoverPackage):
[docs] def __init__(self) -> None: super().__init__("Opcodes") self.mnemonic = None self.cg = avl.Covergroup("opcodes", None) cp = self.cg.add_coverpoint("opcode", lambda: self.mnemonic) for k in ISA.keys(): if k is not None: cp.add_bin(k, lambda x,k=k: x == k)
[docs] def sample(self, trace : Trace) -> None: self.mnemonic = trace.instr.encoding.mnemonic if self.mnemonic is not None: self.cg.sample()
COVERPACKAGES.append(Opcodes())