23 Commits (ec7cfdd719dcf80494a44fe43e35607c08110e1c)

Author SHA1 Message Date
Jean-François Nguyen ec7cfdd719 cores/microwatt: move microwatt.py to its own python module.
Also:
* update dependencies.
* add amaranth-soc as a dependency, in order to reuse its bus
  interfaces (e.g. Wishbone).
* add a `prog` argument to PowerFVSession that overrides the name of
  its CLI.
2 years ago
Jean-François Nguyen dd6048f14b In-depth refactoring, improved user interface.
* A PowerFVSession class provides a REPL interface. Functionality is
  split into commands (e.g. add checks, build) which can be provided
  interactively or from a file.

  See cores/microwatt for an example of its integration.

* Instruction specifications are now separated from verification
  testbenches.

  An InsnSpec class provides a behavioral model using the same PowerFV
  interface as a core. This interface is output-only for a core, but
  bidirectional for the InsnSpec:
    - fields related to context (e.g. read data) are inputs,
    - fields related to side-effects (e.g. write strobes) are outputs.

  The testbench is responsible for driving inputs to the same values
  as the core, then check outputs for equivalence. This decoupling
  provides a path towards using PowerFV in simulation.

* Instruction encodings are now defined by their fields, not their
  format (which was problematic e.g. X-form has dozens of variants).

  Field declarations can be preset to a value, or left undefined. In
  the latter case, they are implicitly cast to AnyConst (which is
  useful for arbitrary values like immediates).
2 years ago
Jean-François Nguyen 951ca2cdfb cores/microwatt: add checks for add/subtract instructions. 2 years ago
Jean-François Nguyen baaac86be1 cores/microwatt: add checks for MTSPR and MFSPR instructions. 2 years ago
Jean-François Nguyen 21be78c4f8 cores/microwatt: add checks for compare instructions. 2 years ago
Jean-François Nguyen a413025fcb Update SPR interface and split consistency check.
* Use bitmasks to describe SPR accesses at the field granularity.

* Use separate checks for each SPR, instead of covering them all at
  once. Users may run them in the same batch, and know which SPR passes
  or fails its check.
2 years ago
Jean-François Nguyen e3f4bf6e24 cores/microwatt: add check for MCRF instruction. 2 years ago
Jean-François Nguyen 2c0b22b96c cores/microwatt: add checks for CR logical instructions. 2 years ago
Jean-François Nguyen 9ea58a47a9 Refactor to facilitate integration with CLIs and config files.
* Checks are now split in two modules: checks.cons for consistency
  checks, checks.insn for instructions.

* Checks are derived from PowerFVCheck and have a shorthand (e.g.
  "insn_b"). PowerFVCheck holds a mapping between its subclasses and
  their shorthands.

* Instruction checks definitions have been simplified to one-liners,
  and grouped into a single file.

* A Trigger class has been added to define testbench triggers.
2 years ago
Jean-François Nguyen 5c097b9474 checks._branch: fix branches to LR/CTR/TAR.
- remove check for undefined mnemonics (afaiu, their BO value isn't illegal).
- add check for illegal bcctr/bcctrl forms (with BO(2) = 0).
- fix target offset for branches to LR/CTR/TAR.
- use MSR.SF to check the upper bits of target addresses.
2 years ago
Jean-François Nguyen bc13b27212 cores/microwatt: expose MSR and SRR0/SRR1. 2 years ago
Jean-François Nguyen 58bef1a741 checks: add checks for branch instructions. 3 years ago
Jean-François Nguyen 5c9bc3e68c cores/microwatt: add support for concurrent execution of formal checks. 3 years ago
Jean-François Nguyen 6ae4978f0c pfv: expose CR as a flat 32-bit value. 3 years ago
Jean-François Nguyen ed2122d940 cores/microwatt: add support for SPRCheck. 3 years ago
Jean-François Nguyen ca66e3a45e cores/microwatt: add support for CRCheck. 3 years ago
Jean-François Nguyen 5076bdb9eb cores/microwatt: add support for GPRCheck. 3 years ago
Jean-François Nguyen 6922b4bd53 cores/microwatt: add support for IAForwardCheck.
Also, use non-default cache sizes for faster verification.
3 years ago
Jean-François Nguyen bfd1f3135e cores/microwatt: remove outdated patch.
The demo README provides an URL to a fork with experimental support for
PowerFV.
3 years ago
Jean-François Nguyen 935110411f cores/microwatt: update demo. 3 years ago
Jean-François Nguyen 0cf05e305e cores/microwatt: update proof-of-concept. 3 years ago
Jean-François Nguyen 776ec784ff Add very basic README. 3 years ago
Jean-François Nguyen cce0fa0729 Add Microwatt proof-of-concept. 3 years ago