Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


  • Latest Draft Fast Interrupt Specification (v0.9-draft-20220104)
    • 01/04/2022 issue #45 - remove new alignment constraint on CLINT mode when CLIC added
    • 01/04/2022 issue #188 - clarification that writes to xcause affect xstatus
  • What's next:
    • 23 28 outstanding issues. 
      • 10 12 active spec issues.
        • 1 issue (new CSR address) dependent on opcode review
        • big items: hypervisor, cliccfg reformat proposal
      • 6 5 issues to track Definition of Done tasks
      • 7 6 issues kept open for future enhancements (post rev1.0
    • Major items on Freeze Checklist: 

      • RISC-V SAIL 

      Saravana introduction.  will be working on interrupts and SAIL.  From networking background.  Coming up to speed on SAIL model.  Went through cookbook model.  Starting with PLIC.  PLIC is non-ISA.  interrupt registers  PLIC is almost completely MMIO addresses.  wires from PLIC into interrupt registers.  That I/f is sort of architectural.  hook up pseudo event generator to wiggle the wires.  if hook up PLIC have to connect to PLIC. 

      From a hart perspective there are a lot of interrupt wires coming in.  how do they get there.  incoming write addr turns into wiggling a wire.   

      Event generator relative to retired count of a hart. Assert the wire 5 instruction retires from now. As independent from implementation as possible.  instruction retires are relatively deterministic. 

      SAIL status – 1 more pull request for vector.  do have backlog.  7 or 8 prs that are pending.  some PRs may affect the same file.  instruction extension usually just a separate file.  CLIC will add CSRs and is more complicated (touch at least 3 files).  RNMI.  PRs priority things that are ratified. 

      • RISC-V Tests 

      If there is a PR for ACT should have been tested and compared to Spike.  riscv-non-isa/riscv-arch-test ( 

      Ovpsim may be a good alternative to spike with initial development while spike is being updated.  have to do in environment that generates interrupts. 

      Regression testing – interaction with CLINT. 

      Would CLIC get its own folder under riscv-arch-test/riscv-test-suite/rv32i? 

      In one place but say execute if RV32I or RV64I or don’t run test. 

      Test plan – need to write something that stimulates clic sources, turns into wires.   

      ACT – read/understood/implemented the spec.  not DV coverage (lots of combinations).  but do want some cross-coverage.  

      • RISC-V Tests Input 

      riscv-software-src/riscv-config: RISC-V Configuration Validator ( 

      Schema_isa.yaml - gives allowed configuration on risc-v and allowed values.  WARL fields give allowed ranges.  10k lines in file. 

      Examples/rivc32i_isa.yaml is compared against schema_isa.yaml to see if it is allowed. 

      When add new CSRs, add PR to add to schema_isa.yaml and then will be checked against example implementation. 

      Schemas/schema_platforml.yaml - memory mapped registers (like clicintctl, etc.) 

      Run python scripts that look at your implementation and see if it is valid.  e.g., if have d then have f- extenstion, etc. checks if WARL field is valid. 

      Write anything, read legal.  mapping from what is illegal to what is legal.  mapping is arbitrary.  so prefer (easiest) if implementers implement when write something illegal, don’t write.  that works easiest for describing in this file. 

Encoding/OpCode consistency review