udb 0.1.9 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.data/cfgs/example_rv64_with_overlay.yaml +20 -20
- data/.data/cfgs/mc100-32-full-example.yaml +1 -0
- data/.data/cfgs/profile/README.adoc +10 -0
- data/.data/cfgs/profile/RVA20S64.yaml +26 -6
- data/.data/cfgs/profile/RVA20U64.yaml +18 -4
- data/.data/cfgs/profile/RVA22S64.yaml +27 -7
- data/.data/cfgs/profile/RVA22U64.yaml +18 -4
- data/.data/cfgs/profile/RVA23S64.yaml +61 -7
- data/.data/cfgs/profile/RVA23U64.yaml +36 -4
- data/.data/cfgs/profile/RVB23S64.yaml +27 -7
- data/.data/cfgs/profile/RVB23U64.yaml +18 -4
- data/.data/cfgs/profile/RVI20U32.yaml +10 -4
- data/.data/cfgs/profile/RVI20U64.yaml +10 -4
- data/.data/cfgs/qc_iu.yaml +8 -1
- data/.data/cfgs/rv32-riscv-tests.yaml +6 -2
- data/.data/cfgs/rv32-vector.yaml +6 -2
- data/.data/cfgs/rv64-riscv-tests.yaml +6 -2
- data/.data/cfgs/rv64-vector.yaml +6 -2
- data/.data/spec/custom/isa/qc_iu/csr/Smrnmi/mnepc.yaml +17 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqccmi/qc.itba.yaml +45 -0
- data/.data/spec/custom/isa/qc_iu/csr/Xqccmi/qc.itdec.yaml +39 -0
- data/.data/spec/custom/isa/qc_iu/csr/jvt.yaml +11 -0
- data/.data/spec/custom/isa/qc_iu/csr/mepc.yaml +16 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqccmi.yaml +290 -0
- data/.data/spec/custom/isa/qc_iu/ext/Xqccmt.yaml +127 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmi/qc.cm.ilut.yaml +136 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmt/qc.cm.jalt.yaml +84 -0
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmt/qc.cm.jt.yaml +60 -0
- data/.data/spec/custom/isa/qc_iu/isa/globals.isa +134 -0
- data/.data/spec/schemas/config_schema.json +220 -27
- data/.data/spec/schemas/csr_schema.json +0 -6
- data/.data/spec/schemas/ext_schema.json +80 -24
- data/.data/spec/schemas/inst_schema.json +0 -3
- data/.data/spec/schemas/mmr_schema.json +3 -3
- data/.data/spec/schemas/profile_release_schema.json +1 -1
- data/.data/spec/schemas/profile_schema.json +0 -3
- data/.data/spec/schemas/register_file_schema.json +8 -3
- data/.data/spec/schemas/schema_defs.json +13 -27
- data/.data/spec/std/isa/csr/H/henvcfg.yaml +25 -0
- data/.data/spec/std/isa/csr/I/pmpaddr0.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr1.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr10.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr11.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr12.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr13.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr14.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr15.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr16.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr17.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr18.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr19.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr2.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr20.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr21.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr22.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr23.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr24.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr25.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr26.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr27.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr28.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr29.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr3.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr30.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr31.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr32.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr33.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr34.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr35.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr36.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr37.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr38.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr39.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr4.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr40.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr41.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr42.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr43.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr44.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr45.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr46.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr47.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr48.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr49.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr5.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr50.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr51.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr52.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr53.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr54.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr55.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr56.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr57.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr58.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr59.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr6.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr60.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr61.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr62.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr63.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr7.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr8.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr9.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddrN.layout +6 -4
- data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +128 -152
- data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +64 -76
- data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +128 -152
- data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +64 -76
- data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +128 -152
- data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +64 -76
- data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +128 -152
- data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +64 -76
- data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +128 -152
- data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +64 -76
- data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +128 -152
- data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +64 -76
- data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +128 -152
- data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +64 -76
- data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +128 -152
- data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +64 -76
- data/.data/spec/std/isa/csr/I/pmpcfgN.layout +16 -19
- data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.layout +6 -2
- data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.yaml +6 -2
- data/.data/spec/std/isa/csr/hstatus.yaml +16 -0
- data/.data/spec/std/isa/csr/jvt.yaml +1 -0
- data/.data/spec/std/isa/csr/mcycleh.yaml +1 -1
- data/.data/spec/std/isa/csr/menvcfg.yaml +20 -0
- data/.data/spec/std/isa/csr/misa.yaml +0 -12
- data/.data/spec/std/isa/csr/mstatus.yaml +46 -6
- data/.data/spec/std/isa/csr/mstatush.yaml +17 -15
- data/.data/spec/std/isa/csr/senvcfg.yaml +42 -0
- data/.data/spec/std/isa/csr/sstatus.yaml +12 -0
- data/.data/spec/std/isa/csr/vsstatus.yaml +24 -0
- data/.data/spec/std/isa/ext/A.yaml +5 -7
- data/.data/spec/std/isa/ext/S.yaml +12 -0
- data/.data/spec/std/isa/ext/Smpmpmt.yaml +52 -0
- data/.data/spec/std/isa/ext/Sv32.yaml +7 -19
- data/.data/spec/std/isa/ext/Sv39.yaml +7 -19
- data/.data/spec/std/isa/ext/Sv48.yaml +4 -20
- data/.data/spec/std/isa/ext/Sv57.yaml +4 -20
- data/.data/spec/std/isa/ext/Svukte.yaml +71 -0
- data/.data/spec/std/isa/ext/Zawrs.yaml +1 -1
- data/.data/spec/std/isa/ext/Zihpm.yaml +0 -12
- data/.data/spec/std/isa/inst/B/andn.yaml +10 -12
- data/.data/spec/std/isa/inst/B/clmul.yaml +9 -11
- data/.data/spec/std/isa/inst/B/clmulh.yaml +9 -11
- data/.data/spec/std/isa/inst/B/orn.yaml +9 -11
- data/.data/spec/std/isa/inst/B/rev8.yaml +1 -1
- data/.data/spec/std/isa/inst/B/rol.yaml +9 -11
- data/.data/spec/std/isa/inst/B/rolw.yaml +9 -11
- data/.data/spec/std/isa/inst/B/ror.yaml +9 -11
- data/.data/spec/std/isa/inst/B/rorw.yaml +9 -11
- data/.data/spec/std/isa/inst/B/xnor.yaml +9 -11
- data/.data/spec/std/isa/inst/C/c.addi.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.addi16sp.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.addiw.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.andi.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.ldsp.yaml +4 -4
- data/.data/spec/std/isa/inst/C/c.li.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.lui.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.mv.yaml +1 -1
- data/.data/spec/std/isa/inst/C/c.sdsp.yaml +1 -1
- data/.data/spec/std/isa/inst/D/fsgnj.d.yaml +3 -0
- data/.data/spec/std/isa/inst/D/fsgnjn.d.yaml +3 -0
- data/.data/spec/std/isa/inst/D/fsgnjx.d.yaml +3 -0
- data/.data/spec/std/isa/inst/F/fadd.s.yaml +5 -5
- data/.data/spec/std/isa/inst/F/fclass.s.yaml +2 -2
- data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.s.w.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fdiv.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/feq.s.yaml +2 -2
- data/.data/spec/std/isa/inst/F/fle.s.yaml +2 -2
- data/.data/spec/std/isa/inst/F/fleq.s.yaml +2 -2
- data/.data/spec/std/isa/inst/F/flt.s.yaml +2 -2
- data/.data/spec/std/isa/inst/F/fltq.s.yaml +2 -2
- data/.data/spec/std/isa/inst/F/flw.yaml +2 -2
- data/.data/spec/std/isa/inst/F/fmadd.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmax.s.yaml +6 -6
- data/.data/spec/std/isa/inst/F/fmin.s.yaml +6 -6
- data/.data/spec/std/isa/inst/F/fmsub.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmul.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +2 -2
- data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +2 -2
- data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +4 -4
- data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +3 -3
- data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +4 -4
- data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsub.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsw.yaml +1 -1
- data/.data/spec/std/isa/inst/I/addi.yaml +2 -1
- data/.data/spec/std/isa/inst/I/addiw.yaml +2 -1
- data/.data/spec/std/isa/inst/I/andi.yaml +2 -1
- data/.data/spec/std/isa/inst/I/auipc.yaml +1 -0
- data/.data/spec/std/isa/inst/I/beq.yaml +1 -1
- data/.data/spec/std/isa/inst/I/bge.yaml +4 -2
- data/.data/spec/std/isa/inst/I/bgeu.yaml +3 -0
- data/.data/spec/std/isa/inst/I/blt.yaml +4 -2
- data/.data/spec/std/isa/inst/I/bltu.yaml +3 -0
- data/.data/spec/std/isa/inst/I/bne.yaml +1 -1
- data/.data/spec/std/isa/inst/I/lb.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lbu.yaml +1 -0
- data/.data/spec/std/isa/inst/I/ld.yaml +2 -0
- data/.data/spec/std/isa/inst/I/lh.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lhu.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lui.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lw.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lwu.yaml +1 -0
- data/.data/spec/std/isa/inst/I/ori.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sb.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sd.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sh.yaml +1 -0
- data/.data/spec/std/isa/inst/I/slt.yaml +2 -2
- data/.data/spec/std/isa/inst/I/slti.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sltiu.yaml +2 -1
- data/.data/spec/std/isa/inst/I/sltu.yaml +1 -1
- data/.data/spec/std/isa/inst/I/sub.yaml +1 -1
- data/.data/spec/std/isa/inst/I/subw.yaml +1 -1
- data/.data/spec/std/isa/inst/I/sw.yaml +1 -0
- data/.data/spec/std/isa/inst/I/xori.yaml +2 -1
- data/.data/spec/std/isa/inst/M/mul.yaml +0 -19
- data/.data/spec/std/isa/inst/Q/fsgnj.q.yaml +1 -1
- data/.data/spec/std/isa/inst/S/sret.yaml +3 -1
- data/.data/spec/std/isa/inst/V/vadc.vim.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vadd.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vadd.vv.yaml +1 -5
- data/.data/spec/std/isa/inst/V/vand.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vfsgnjn.vv.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vfsgnjx.vv.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vl1re8.v.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vl2re8.v.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vl4re8.v.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vl8re8.v.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vle8.v.yaml +4 -8
- data/.data/spec/std/isa/inst/V/vmadc.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmadc.vim.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmand.mm.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmerge.vim.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmfle.vv.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmflt.vv.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmnand.mm.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmseq.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmsgt.vi.yaml +4 -0
- data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +4 -0
- data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +4 -0
- data/.data/spec/std/isa/inst/V/vmsle.vv.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +4 -0
- data/.data/spec/std/isa/inst/V/vmsleu.vv.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmslt.vv.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmsltu.vv.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmsne.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +2 -13
- data/.data/spec/std/isa/inst/V/vmv.x.s.yaml +1 -1
- data/.data/spec/std/isa/inst/V/vmxnor.mm.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmxor.mm.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vnsrl.wx.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vor.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vrsub.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vrsub.vx.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vsadd.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vsaddu.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vse8.v.yaml +4 -4
- data/.data/spec/std/isa/inst/V/vwadd.vx.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vwaddu.vx.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vxor.vi.yaml +4 -0
- data/.data/spec/std/isa/inst/Zalasr/lSIZE.AQRL.layout +40 -5
- data/.data/spec/std/isa/inst/Zalasr/lb.aq.yaml +17 -1
- data/.data/spec/std/isa/inst/Zalasr/lb.aqrl.yaml +17 -1
- data/.data/spec/std/isa/inst/Zalasr/ld.aq.yaml +17 -1
- data/.data/spec/std/isa/inst/Zalasr/ld.aqrl.yaml +17 -1
- data/.data/spec/std/isa/inst/Zalasr/lh.aq.yaml +17 -1
- data/.data/spec/std/isa/inst/Zalasr/lh.aqrl.yaml +17 -1
- data/.data/spec/std/isa/inst/Zalasr/lw.aq.yaml +17 -1
- data/.data/spec/std/isa/inst/Zalasr/lw.aqrl.yaml +17 -1
- data/.data/spec/std/isa/inst/Zalasr/sSIZE.AQRL.layout +46 -5
- data/.data/spec/std/isa/inst/Zalasr/sb.aqrl.yaml +16 -1
- data/.data/spec/std/isa/inst/Zalasr/sb.rl.yaml +16 -1
- data/.data/spec/std/isa/inst/Zalasr/sd.aqrl.yaml +16 -1
- data/.data/spec/std/isa/inst/Zalasr/sd.rl.yaml +16 -1
- data/.data/spec/std/isa/inst/Zalasr/sh.aqrl.yaml +16 -1
- data/.data/spec/std/isa/inst/Zalasr/sh.rl.yaml +16 -1
- data/.data/spec/std/isa/inst/Zalasr/sw.aqrl.yaml +16 -1
- data/.data/spec/std/isa/inst/Zalasr/sw.rl.yaml +16 -1
- data/.data/spec/std/isa/inst/Zawrs/wrs.nto.yaml +4 -2
- data/.data/spec/std/isa/inst/Zba/add.uw.yaml +9 -11
- data/.data/spec/std/isa/inst/Zbb/orc.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zbkb/brev8.yaml +3 -3
- data/.data/spec/std/isa/inst/Zbkb/packw.yaml +1 -1
- data/.data/spec/std/isa/inst/Zbkb/unzip.yaml +2 -2
- data/.data/spec/std/isa/inst/Zbkb/zip.yaml +2 -2
- data/.data/spec/std/isa/inst/Zbkx/xperm4.yaml +2 -2
- data/.data/spec/std/isa/inst/Zbkx/xperm8.yaml +2 -2
- data/.data/spec/std/isa/inst/Zcd/c.fld.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcd/c.fldsp.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcd/c.fsdsp.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcf/c.flwsp.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcf/c.fswsp.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcmp/cm.pop.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcmp/cm.popret.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcmp/cm.popretz.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcmp/cm.push.yaml +2 -3
- data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +6 -6
- data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +5 -5
- data/.data/spec/std/isa/inst/Zfh/flh.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfh/fsh.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicbop/prefetch.i.yaml +2 -0
- data/.data/spec/std/isa/inst/Zicbop/prefetch.r.yaml +2 -0
- data/.data/spec/std/isa/inst/Zicbop/prefetch.w.yaml +2 -0
- data/.data/spec/std/isa/inst/Zicsr/csrrc.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicsr/csrrci.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicsr/csrrs.yaml +2 -2
- data/.data/spec/std/isa/inst/Zicsr/csrrsi.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicsr/csrrwi.yaml +1 -1
- data/.data/spec/std/isa/inst/Zks/sm3p0.yaml +1 -1
- data/.data/spec/std/isa/inst/Zks/sm3p1.yaml +1 -1
- data/.data/spec/std/isa/inst/Zks/sm4ed.yaml +1 -1
- data/.data/spec/std/isa/inst/Zks/sm4ks.yaml +1 -1
- data/.data/spec/std/isa/isa/builtin_functions.idl +18 -0
- data/.data/spec/std/isa/isa/fp.idl +1 -5
- data/.data/spec/std/isa/isa/globals.isa +72 -21
- data/.data/spec/std/isa/isa/interrupts.idl +1 -0
- data/.data/spec/std/isa/isa/vec.idl +1 -2
- data/.data/spec/std/isa/manual_version/isa/20240411/isa_20240411.yaml +5 -5
- data/.data/spec/std/isa/param/COUNTINHIBIT_EN.yaml +8 -2
- data/.data/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml +1 -0
- data/.data/spec/std/isa/param/JVT_BASE_MASK.yaml +1 -1
- data/.data/spec/std/isa/param/MCOUNTINHIBIT_IMPLEMENTED.yaml +25 -0
- data/.data/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml +1 -0
- data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml +1 -0
- data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml +1 -0
- data/.data/spec/std/isa/param/MTVEC_MODES.yaml +10 -3
- data/.data/spec/std/isa/param/NUM_PMP_ENTRIES.yaml +11 -22
- data/.data/spec/std/isa/param/NUM_USABLE_PMP_ENTRIES.yaml +35 -0
- data/.data/spec/std/isa/param/PMP_NA4_SUPPORTED.yaml +23 -0
- data/.data/spec/std/isa/param/PMP_NAPOT_SUPPORTED.yaml +19 -0
- data/.data/spec/std/isa/param/{MSTATUS_TVM_IMPLEMENTED.yaml → PMP_TOR_SUPPORTED.yaml} +6 -6
- data/.data/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml +1 -0
- data/.data/spec/std/isa/param/TRAP_ON_EBREAK.yaml +1 -0
- data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml +1 -0
- data/.data/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml +1 -0
- data/.data/spec/std/isa/param/VLEN.yaml +2 -0
- data/.data/spec/std/isa/param/ZAWRS_NTO_IS_NOP.yaml +19 -0
- data/.data/spec/std/isa/profile/RVA20S64.yaml +11 -4
- data/.data/spec/std/isa/profile/RVA20U64.yaml +14 -5
- data/.data/spec/std/isa/profile/RVA22S64.yaml +14 -3
- data/.data/spec/std/isa/profile/RVA22U64.yaml +8 -1
- data/.data/spec/std/isa/profile/RVA23S64.yaml +13 -0
- data/.data/spec/std/isa/profile/RVA23U64.yaml +15 -1
- data/.data/spec/std/isa/profile/RVB23S64.yaml +15 -3
- data/.data/spec/std/isa/profile/RVB23U64.yaml +8 -1
- data/.data/spec/std/isa/profile/RVI20U32.yaml +8 -1
- data/.data/spec/std/isa/profile/RVI20U64.yaml +7 -0
- data/.data/spec/std/isa/register_file/F.yaml +3 -2
- data/.data/spec/std/isa/register_file/V.yaml +2 -2
- data/.data/spec/std/isa/register_file/X.yaml +2 -1
- data/lib/udb/ESPRESSO_VERSION +1 -1
- data/lib/udb/architecture.rb +4 -25
- data/lib/udb/cfg_arch.rb +171 -59
- data/lib/udb/cli.rb +10 -1
- data/lib/udb/condition.rb +38 -37
- data/lib/udb/config.rb +86 -8
- data/lib/udb/doc_link.rb +3 -4
- data/lib/udb/logic.rb +29 -56
- data/lib/udb/obj/csr.rb +23 -5
- data/lib/udb/obj/csr_field.rb +36 -21
- data/lib/udb/obj/database_obj.rb +2 -5
- data/lib/udb/obj/extension.rb +0 -3
- data/lib/udb/obj/instruction.rb +2 -5
- data/lib/udb/obj/non_isa_specification.rb +22 -100
- data/lib/udb/obj/portfolio.rb +75 -20
- data/lib/udb/obj/profile.rb +0 -4
- data/lib/udb/obj/register_file.rb +63 -2
- data/lib/udb/portfolio_design.rb +3 -6
- data/lib/udb/resolver.rb +84 -23
- data/lib/udb/version.rb +1 -1
- data/lib/udb/version_spec.rb +8 -0
- data/lib/udb/z3.rb +25 -2
- data/lib/udb.rb +0 -3
- metadata +30 -38
- data/.data/cfgs/profile/RVA23M64.yaml +0 -159
- data/.data/cfgs/profile/RVB23M64.yaml +0 -149
- data/.data/spec/schemas/proc_cert_class_schema.json +0 -35
- data/.data/spec/schemas/proc_cert_model_schema.json +0 -336
- data/.data/spec/std/isa/proc_cert_class/AC.yaml +0 -13
- data/.data/spec/std/isa/proc_cert_class/MC.yaml +0 -13
- data/.data/spec/std/isa/proc_cert_class/RVI.yaml +0 -16
- data/.data/spec/std/isa/proc_cert_model/AC100.yaml +0 -72
- data/.data/spec/std/isa/proc_cert_model/AC200.yaml +0 -58
- data/.data/spec/std/isa/proc_cert_model/MC100-32.yaml +0 -155
- data/.data/spec/std/isa/proc_cert_model/MC100-64.yaml +0 -21
- data/.data/spec/std/isa/proc_cert_model/MC200-32.yaml +0 -60
- data/.data/spec/std/isa/proc_cert_model/MC200-64.yaml +0 -21
- data/.data/spec/std/isa/proc_cert_model/MC300-32.yaml +0 -40
- data/.data/spec/std/isa/proc_cert_model/MC300-64.yaml +0 -21
- data/.data/spec/std/isa/proc_cert_model/RVI20-32.yaml +0 -39
- data/.data/spec/std/isa/proc_cert_model/RVI20-64.yaml +0 -19
- data/.data/spec/std/isa/profile/RVA23M64.yaml +0 -24
- data/.data/spec/std/isa/profile/RVB23M64.yaml +0 -86
- data/lib/udb/cert_normative_rule.rb +0 -41
- data/lib/udb/obj/certifiable_obj.rb +0 -21
- data/lib/udb/obj/certificate.rb +0 -230
- data/lib/udb/proc_cert_design.rb +0 -77
|
@@ -58,6 +58,140 @@ builtin function sync_write_after_read_device {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
# Global flag: true while the second packed instruction in an ILUT entry is executing.
|
|
62
|
+
# Set by qc.cm.ilut before executing the second slot; cleared after. Used by raise_ilut()
|
|
63
|
+
# to encode the faulting slot into mepc bit 0.
|
|
64
|
+
Boolean executing_second_inst = false;
|
|
65
|
+
|
|
66
|
+
# Simplified precise-exception raise for qc_iu (M-mode only).
|
|
67
|
+
# Identical to raise_precise except mepc.PC (or mnepc.PC for a double-trap)
|
|
68
|
+
# captures bit 0 from executing_second_inst, allowing the trap handler to
|
|
69
|
+
# distinguish first- vs second-instruction faults within an ILUT entry.
|
|
70
|
+
# This function must be called for any exception raised by an ILUT-executed
|
|
71
|
+
# instruction (first or second slot). The executing_second_inst flag must be set
|
|
72
|
+
# before calling: false for the first instruction, true for the second.
|
|
73
|
+
function raise_ilut {
|
|
74
|
+
arguments ExceptionCode exception_code, XReg tval
|
|
75
|
+
description {
|
|
76
|
+
Raise a precise exception for an ILUT-executed instruction.
|
|
77
|
+
Sets mepc.PC = $pc | (executing_second_inst ? 1 : 0) so that the trap handler
|
|
78
|
+
can determine whether the fault came from the first or second packed
|
|
79
|
+
instruction in the ILUT entry. For a double-trap, sets mnepc.PC instead.
|
|
80
|
+
Only the M-mode handling path is included because qc_iu is M-mode only.
|
|
81
|
+
}
|
|
82
|
+
body {
|
|
83
|
+
Bits<1> slot_bit = executing_second_inst ? 1'b1 : 1'b0;
|
|
84
|
+
|
|
85
|
+
# qc_iu is M-mode only; no S/H/VS/VU delegation logic needed.
|
|
86
|
+
if (implemented?(ExtensionName::Smrnmi) && CSR[mnstatus].NMIE == 1'b0) {
|
|
87
|
+
# Double-trap: use mnepc
|
|
88
|
+
CSR[mnepc].PC = $pc | slot_bit;
|
|
89
|
+
} else {
|
|
90
|
+
CSR[mepc].PC = $pc | slot_bit;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (!mtval_readonly?()) {
|
|
94
|
+
CSR[mtval].VALUE = mtval_for(exception_code, tval);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
$pc = {CSR[mtvec].BASE, 2'b00};
|
|
98
|
+
CSR[mcause].INT = 1'b0;
|
|
99
|
+
CSR[mcause].CODE = $bits(exception_code);
|
|
100
|
+
|
|
101
|
+
set_mode(PrivilegeMode::M);
|
|
102
|
+
abort_current_instruction();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function is_pc_referencing_inst? {
|
|
107
|
+
returns Boolean
|
|
108
|
+
arguments Bits<32> inst
|
|
109
|
+
description {
|
|
110
|
+
Returns true if +inst+ references PC as an input or output, making it
|
|
111
|
+
forbidden inside an ILUT entry. This covers three categories:
|
|
112
|
+
(1) PC-relative instructions: auipc, branches, jal, c.j, c.jal, c.beqz, c.bnez;
|
|
113
|
+
(2) register-indirect jumps that write PC: jalr, c.jr, c.jalr;
|
|
114
|
+
(3) return instructions that write PC: cm.popret, cm.popretz, qc.cm.popret, qc.cm.popretz.
|
|
115
|
+
For 16-bit compressed instructions, only the lower 16 bits of +inst+ are examined.
|
|
116
|
+
For 48-bit Xqci instructions, only the lower 32 bits are passed here (the upper
|
|
117
|
+
16 bits are in a separate word and are not needed for this check).
|
|
118
|
+
}
|
|
119
|
+
body {
|
|
120
|
+
if (inst[1:0] != 2'b11) {
|
|
121
|
+
# 16-bit compressed instruction: examine only the lower 16 bits
|
|
122
|
+
Bits<16> cinst = inst[15:0];
|
|
123
|
+
# c.j: funct3=101, op=01
|
|
124
|
+
if (cinst[15:13] == 3'b101 && cinst[1:0] == 2'b01) {
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
# c.jal: funct3=001, op=01
|
|
128
|
+
if (cinst[15:13] == 3'b001 && cinst[1:0] == 2'b01) {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
# c.beqz: funct3=110, op=01
|
|
132
|
+
if (cinst[15:13] == 3'b110 && cinst[1:0] == 2'b01) {
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
# c.bnez: funct3=111, op=01
|
|
136
|
+
if (cinst[15:13] == 3'b111 && cinst[1:0] == 2'b01) {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
# c.jr: bits[15:12]=1000, bits[6:2]!=00000, bits[1:0]=10 (register jump, writes PC)
|
|
140
|
+
if (cinst[15:12] == 4'b1000 && cinst[6:2] != 5'b00000 && cinst[1:0] == 2'b10) {
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
# c.jalr: bits[15:12]=1001, bits[6:2]!=00000, bits[1:0]=10 (register jump-and-link, writes PC)
|
|
144
|
+
if (cinst[15:12] == 4'b1001 && cinst[6:2] != 5'b00000 && cinst[1:0] == 2'b10) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
# cm.popret / qc.cm.popret: bits[15:8]=10111110, bits[1:0]=10 (pops stack and returns, writes PC)
|
|
148
|
+
if (cinst[15:8] == 8'b10111110 && cinst[1:0] == 2'b10) {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
# cm.popretz / qc.cm.popretz: bits[15:8]=10111100, bits[1:0]=10 (pops stack, zeroes a0, returns, writes PC)
|
|
152
|
+
if (cinst[15:8] == 8'b10111100 && cinst[1:0] == 2'b10) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
return false;
|
|
156
|
+
} else {
|
|
157
|
+
# 32-bit (or 48-bit) instruction: check opcode field bits[6:0]
|
|
158
|
+
Bits<7> opcode = inst[6:0];
|
|
159
|
+
# auipc
|
|
160
|
+
if (opcode == 7'b0010111) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
# jal
|
|
164
|
+
if (opcode == 7'b1101111) {
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
# jalr: register-indirect jump, writes PC
|
|
168
|
+
# (grouped with PC-referencing instructions, not PC-relative)
|
|
169
|
+
if (opcode == 7'b1100111) {
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
# branches
|
|
173
|
+
if (opcode == 7'b1100011) {
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
# 48-bit Xqci PC-relative instructions (inst[4:2]==3'b111 indicates 48-bit length)
|
|
177
|
+
if (inst[4:2] == 3'b111) {
|
|
178
|
+
# All Xqci 48-bit PC-relative instructions use opcode 7'b0011111
|
|
179
|
+
if (opcode == 7'b0011111) {
|
|
180
|
+
# qc.e.j / qc.e.jal: funct3=000, inst[24:20]==5'b00000
|
|
181
|
+
if (inst[14:12] == 3'b000 && inst[24:20] == 5'b00000) {
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
# qc.e.beqi/bnei/blti/bgei/bltui/bgeui: funct3=100, inst[24:23]==2'b11
|
|
185
|
+
if (inst[14:12] == 3'b100 && inst[24:23] == 2'b11) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
61
195
|
function get_and_validate_stack_pointer {
|
|
62
196
|
returns XReg
|
|
63
197
|
arguments XReg sp, Bits<INSTR_ENC_SIZE> encoding
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "v0.1",
|
|
4
|
+
"title": "Configuration Schema",
|
|
5
|
+
"description": "A configuration represents RISC-V architectural choices - ranging from complete design specifications to requirement sets to unconstrained baselines.\n\n> **See also:** Configurations Overview for a narrative introduction with examples and use cases.\n\nConfigurations come in three forms:\n\n- **Fully configured**: Concrete implementations with all extensions and parameters explicitly specified. These represent actual processor implementations where every architectural detail is known. Each extension must specify an exact version (e.g., `2.1.0` or `2.1`). Used for generating implementations, documentation, and test suites for specific hardware.\n\n- **Partially configured**: Profiles or configurable IP that define mandatory, optional, and prohibited extensions using version constraints (e.g., `>= 2.0`). These specify requirements that multiple implementations can satisfy. Can restrict whether additional extensions beyond those listed are allowed. Used for RISC-V compliance profiles, configurable IP offerings (a class of implementations a vendor may offer), and platform requirements.\n\n- **Unconfigured**: Special case representing the entire RISC-V specification without any implementation choices. Used to model the complete RISC-V architecture space before any configuration decisions are made.\n\nThe variant is selected by the `type` field. Fields common to all variants: `name`, `description`, `arch_overlay`. The `params` field is available on `fully configured` and `partially configured` variants.\n\n> **Note:** Schema validation checks structural correctness only. A schema-valid file can still be semantically invalid - for example, referencing an extension version that does not exist in the database, or omitting a parameter that is required by the implemented extensions.",
|
|
4
6
|
"$defs": {
|
|
5
7
|
"full_configuration": {
|
|
6
8
|
"type": "object",
|
|
@@ -15,17 +17,18 @@
|
|
|
15
17
|
],
|
|
16
18
|
"properties": {
|
|
17
19
|
"$schema": {
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"const": "config_schema.json#"
|
|
20
|
+
"const": "config_schema.json#",
|
|
21
|
+
"description": "Schema reference - must be `config_schema.json#`"
|
|
21
22
|
},
|
|
22
23
|
"kind": {
|
|
23
24
|
"type": "string",
|
|
24
|
-
"const": "architecture configuration"
|
|
25
|
+
"const": "architecture configuration",
|
|
26
|
+
"description": "Document type identifier - must be `architecture configuration`"
|
|
25
27
|
},
|
|
26
28
|
"type": {
|
|
27
29
|
"type": "string",
|
|
28
|
-
"const": "fully configured"
|
|
30
|
+
"const": "fully configured",
|
|
31
|
+
"description": "Configuration specificity level - `fully configured` means all extensions and parameters are explicitly specified"
|
|
29
32
|
},
|
|
30
33
|
"name": {
|
|
31
34
|
"type": "string",
|
|
@@ -33,19 +36,32 @@
|
|
|
33
36
|
},
|
|
34
37
|
"description": {
|
|
35
38
|
"type": "string",
|
|
36
|
-
"description": "
|
|
39
|
+
"description": "Human-readable description of this configuration (AsciiDoc format)"
|
|
37
40
|
},
|
|
38
41
|
"arch_overlay": {
|
|
39
42
|
"type": "string",
|
|
40
|
-
"description": "Optional arch overlay to apply. Can be either the name of a directory under arch_overlay/ or
|
|
43
|
+
"description": "Optional arch overlay to apply. Can be either the name of a directory under arch_overlay/ or an absolute or relative path to an overlay directory"
|
|
41
44
|
},
|
|
42
45
|
"$source": {
|
|
43
46
|
"type": "string",
|
|
44
47
|
"format": "uri",
|
|
45
|
-
"description": "
|
|
48
|
+
"description": "Source file path when this configuration was generated or copied from another file"
|
|
49
|
+
},
|
|
50
|
+
"compatible": {
|
|
51
|
+
"description": "Declares that this configuration is compatible with one or more other configurations — meaning there exists at least one concrete hardware implementation that satisfies both this config and each listed config simultaneously. Each pointer is either the name of a config in the repository cfgs/ directory or a path to a config YAML file (absolute, or relative to this file). Compatibility is checked transitively: if config B lists config C as compatible, then this config must also be compatible with C.",
|
|
52
|
+
"examples": [
|
|
53
|
+
"profile/RVA23U64",
|
|
54
|
+
["profile/RVA23U64", "profile/RVB23U64"],
|
|
55
|
+
"../other/my_config.yaml"
|
|
56
|
+
],
|
|
57
|
+
"oneOf": [
|
|
58
|
+
{ "type": "string" },
|
|
59
|
+
{ "type": "array", "items": { "type": "string" } }
|
|
60
|
+
]
|
|
46
61
|
},
|
|
47
62
|
"params": {
|
|
48
|
-
"type": "object"
|
|
63
|
+
"type": "object",
|
|
64
|
+
"description": "Architecture parameters that define implementation choices (e.g., `MXLEN: 64`, privilege modes, physical address width, etc.). Parameter names and valid values are defined by the parameter data files in `spec/std/isa/param/`."
|
|
49
65
|
},
|
|
50
66
|
"implemented_extensions": {
|
|
51
67
|
"description": "Extensions implemented by this architecture",
|
|
@@ -59,10 +75,26 @@
|
|
|
59
75
|
"description": "Extension name"
|
|
60
76
|
},
|
|
61
77
|
"version": {
|
|
62
|
-
"$ref": "schema_defs.json#/$defs/
|
|
78
|
+
"$ref": "schema_defs.json#/$defs/implemented_extension_version"
|
|
63
79
|
}
|
|
64
80
|
}
|
|
65
|
-
}
|
|
81
|
+
},
|
|
82
|
+
"examples": [
|
|
83
|
+
[
|
|
84
|
+
{
|
|
85
|
+
"name": "I",
|
|
86
|
+
"version": "2.1.0"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "M",
|
|
90
|
+
"version": "2.0.0"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "Zicsr",
|
|
94
|
+
"version": "2.0.0"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
]
|
|
66
98
|
}
|
|
67
99
|
},
|
|
68
100
|
"additionalProperties": false
|
|
@@ -81,15 +113,18 @@
|
|
|
81
113
|
"$schema": {
|
|
82
114
|
"type": "string",
|
|
83
115
|
"format": "uri-reference",
|
|
84
|
-
"const": "config_schema.json#"
|
|
116
|
+
"const": "config_schema.json#",
|
|
117
|
+
"description": "Schema reference - must be `config_schema.json#`"
|
|
85
118
|
},
|
|
86
119
|
"kind": {
|
|
87
120
|
"type": "string",
|
|
88
|
-
"const": "architecture configuration"
|
|
121
|
+
"const": "architecture configuration",
|
|
122
|
+
"description": "Document type identifier - must be `architecture configuration`"
|
|
89
123
|
},
|
|
90
124
|
"type": {
|
|
91
125
|
"type": "string",
|
|
92
|
-
"const": "partially configured"
|
|
126
|
+
"const": "partially configured",
|
|
127
|
+
"description": "Configuration specificity level - `partially configured` means some extensions/parameters are specified as requirements while others are left open"
|
|
93
128
|
},
|
|
94
129
|
"name": {
|
|
95
130
|
"type": "string",
|
|
@@ -97,19 +132,32 @@
|
|
|
97
132
|
},
|
|
98
133
|
"description": {
|
|
99
134
|
"type": "string",
|
|
100
|
-
"description": "
|
|
135
|
+
"description": "Human-readable description of this configuration (AsciiDoc format)"
|
|
101
136
|
},
|
|
102
137
|
"params": {
|
|
103
|
-
"type": "object"
|
|
138
|
+
"type": "object",
|
|
139
|
+
"description": "Architecture parameters that constrain compliant implementations. The entire `params` key may be omitted if no parameter constraints are needed. Parameter names and valid values are defined by the parameter data files in `spec/std/isa/param/`."
|
|
104
140
|
},
|
|
105
141
|
"arch_overlay": {
|
|
106
142
|
"type": "string",
|
|
107
|
-
"description": "Optional arch overlay to apply. Can be either the name of a directory under arch_overlay/ or
|
|
143
|
+
"description": "Optional arch overlay to apply. Can be either the name of a directory under arch_overlay/ or an absolute or relative path to an overlay directory"
|
|
108
144
|
},
|
|
109
145
|
"$source": {
|
|
110
146
|
"type": "string",
|
|
111
147
|
"format": "uri",
|
|
112
|
-
"description": "
|
|
148
|
+
"description": "Source file path when this configuration was generated or copied from another file"
|
|
149
|
+
},
|
|
150
|
+
"compatible": {
|
|
151
|
+
"description": "Declares that this configuration is compatible with one or more other configurations — meaning there exists at least one concrete hardware implementation that satisfies both this config and each listed config simultaneously. Each pointer is either the name of a config in the repository cfgs/ directory or a path to a config YAML file (absolute, or relative to this file). Compatibility is checked transitively: if config B lists config C as compatible, then this config must also be compatible with C.",
|
|
152
|
+
"examples": [
|
|
153
|
+
"profile/RVA23U64",
|
|
154
|
+
["profile/RVA23U64", "profile/RVB23U64"],
|
|
155
|
+
"../other/my_config.yaml"
|
|
156
|
+
],
|
|
157
|
+
"oneOf": [
|
|
158
|
+
{ "type": "string" },
|
|
159
|
+
{ "type": "array", "items": { "type": "string" } }
|
|
160
|
+
]
|
|
113
161
|
},
|
|
114
162
|
"mandatory_extensions": {
|
|
115
163
|
"description": "Extensions mandatory in this architecture",
|
|
@@ -119,7 +167,7 @@
|
|
|
119
167
|
}
|
|
120
168
|
},
|
|
121
169
|
"non_mandatory_extensions": {
|
|
122
|
-
"description": "
|
|
170
|
+
"description": "Optional extensions with special significance in this architecture. For configurable IP, these are optionally supported extensions. For profiles, these are profile-optional extensions.",
|
|
123
171
|
"type": "array",
|
|
124
172
|
"items": {
|
|
125
173
|
"$ref": "schema_defs.json#/$defs/extension_requirement"
|
|
@@ -138,10 +186,11 @@
|
|
|
138
186
|
"additional_extensions": {
|
|
139
187
|
"type": "boolean",
|
|
140
188
|
"default": true,
|
|
141
|
-
"description": "Whether
|
|
189
|
+
"description": "Whether a compliant instance may implement extensions beyond those listed in `mandatory_extensions`/`non_mandatory_extensions`. Defaults to `true` if omitted."
|
|
142
190
|
},
|
|
143
191
|
"requirements": {
|
|
144
|
-
"$ref": "schema_defs.json#/$defs/condition"
|
|
192
|
+
"$ref": "schema_defs.json#/$defs/condition",
|
|
193
|
+
"description": "Additional condition that must be satisfied for this configuration to be valid (e.g., a parameter constraint or extension dependency)."
|
|
145
194
|
}
|
|
146
195
|
},
|
|
147
196
|
"additionalProperties": false
|
|
@@ -153,15 +202,18 @@
|
|
|
153
202
|
"$schema": {
|
|
154
203
|
"type": "string",
|
|
155
204
|
"format": "uri-reference",
|
|
156
|
-
"const": "config_schema.json#"
|
|
205
|
+
"const": "config_schema.json#",
|
|
206
|
+
"description": "Schema reference - must be `config_schema.json#`"
|
|
157
207
|
},
|
|
158
208
|
"kind": {
|
|
159
209
|
"type": "string",
|
|
160
|
-
"const": "architecture configuration"
|
|
210
|
+
"const": "architecture configuration",
|
|
211
|
+
"description": "Document type identifier - must be `architecture configuration`"
|
|
161
212
|
},
|
|
162
213
|
"type": {
|
|
163
214
|
"type": "string",
|
|
164
|
-
"const": "unconfigured"
|
|
215
|
+
"const": "unconfigured",
|
|
216
|
+
"description": "Configuration specificity level - `unconfigured` represents the entire RISC-V specification with all implementation choices left unresolved"
|
|
165
217
|
},
|
|
166
218
|
"name": {
|
|
167
219
|
"type": "string",
|
|
@@ -169,16 +221,16 @@
|
|
|
169
221
|
},
|
|
170
222
|
"arch_overlay": {
|
|
171
223
|
"type": "string",
|
|
172
|
-
"description": "Optional arch overlay to apply. Can be either the name of a directory under arch_overlay/ or
|
|
224
|
+
"description": "Optional arch overlay to apply. Can be either the name of a directory under arch_overlay/ or an absolute or relative path to an overlay directory"
|
|
173
225
|
},
|
|
174
226
|
"$source": {
|
|
175
227
|
"type": "string",
|
|
176
228
|
"format": "uri",
|
|
177
|
-
"description": "
|
|
229
|
+
"description": "Source file path when this configuration was generated or copied from another file"
|
|
178
230
|
},
|
|
179
231
|
"description": {
|
|
180
232
|
"type": "string",
|
|
181
|
-
"description": "
|
|
233
|
+
"description": "Human-readable description of this configuration (AsciiDoc format)"
|
|
182
234
|
}
|
|
183
235
|
},
|
|
184
236
|
"additionalProperties": false
|
|
@@ -194,5 +246,146 @@
|
|
|
194
246
|
{
|
|
195
247
|
"$ref": "#/$defs/unconfiguration"
|
|
196
248
|
}
|
|
249
|
+
],
|
|
250
|
+
"examples": [
|
|
251
|
+
{
|
|
252
|
+
"_title": "Minimal Fully Configured",
|
|
253
|
+
"_quick_start": true,
|
|
254
|
+
"$schema": "config_schema.json#",
|
|
255
|
+
"kind": "architecture configuration",
|
|
256
|
+
"type": "fully configured",
|
|
257
|
+
"name": "MyProcessor",
|
|
258
|
+
"description": "A minimal 64-bit RISC-V processor",
|
|
259
|
+
"params": {
|
|
260
|
+
"MXLEN": 64
|
|
261
|
+
},
|
|
262
|
+
"implemented_extensions": [
|
|
263
|
+
{ "name": "I", "version": "2.1" },
|
|
264
|
+
{ "name": "Sm", "version": "1.12" }
|
|
265
|
+
]
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"_title": "Minimal Partially Configured",
|
|
269
|
+
"_quick_start": true,
|
|
270
|
+
"$schema": "config_schema.json#",
|
|
271
|
+
"kind": "architecture configuration",
|
|
272
|
+
"type": "partially configured",
|
|
273
|
+
"name": "MyProfile",
|
|
274
|
+
"description": "A minimal profile requiring base integer instructions",
|
|
275
|
+
"mandatory_extensions": [{ "name": "I", "version": ">= 2.1" }]
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"_title": "Minimal Unconfigured",
|
|
279
|
+
"_quick_start": true,
|
|
280
|
+
"$schema": "config_schema.json#",
|
|
281
|
+
"kind": "architecture configuration",
|
|
282
|
+
"type": "unconfigured",
|
|
283
|
+
"name": "generic",
|
|
284
|
+
"description": "The complete RISC-V specification with no implementation choices"
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"_title": "Full Configuration Example (RV64)",
|
|
288
|
+
"$schema": "config_schema.json#",
|
|
289
|
+
"kind": "architecture configuration",
|
|
290
|
+
"type": "fully configured",
|
|
291
|
+
"name": "RV64GC",
|
|
292
|
+
"description": "64-bit RISC-V with General-purpose and Compressed extensions",
|
|
293
|
+
"params": {
|
|
294
|
+
"XLEN": 64,
|
|
295
|
+
"MXLEN": 64,
|
|
296
|
+
"SXLEN": 64,
|
|
297
|
+
"UXLEN": 64
|
|
298
|
+
},
|
|
299
|
+
"implemented_extensions": [
|
|
300
|
+
{
|
|
301
|
+
"name": "I",
|
|
302
|
+
"version": "2.1"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"name": "M",
|
|
306
|
+
"version": "2.0"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"name": "A",
|
|
310
|
+
"version": "2.1"
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"name": "F",
|
|
314
|
+
"version": "2.2"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"name": "D",
|
|
318
|
+
"version": "2.2"
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"name": "C",
|
|
322
|
+
"version": "2.0"
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"name": "Zicsr",
|
|
326
|
+
"version": "2.0"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"name": "Zifencei",
|
|
330
|
+
"version": "2.0"
|
|
331
|
+
}
|
|
332
|
+
]
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"_title": "Partial Configuration Example (Profile)",
|
|
336
|
+
"$schema": "config_schema.json#",
|
|
337
|
+
"kind": "architecture configuration",
|
|
338
|
+
"type": "partially configured",
|
|
339
|
+
"name": "RVA22U64",
|
|
340
|
+
"description": "RISC-V Application Profile for 64-bit Unix-like systems",
|
|
341
|
+
"mandatory_extensions": [
|
|
342
|
+
{
|
|
343
|
+
"name": "I",
|
|
344
|
+
"version": ">= 2.1"
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"name": "M",
|
|
348
|
+
"version": ">= 2.0"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"name": "A",
|
|
352
|
+
"version": ">= 2.1"
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"name": "F",
|
|
356
|
+
"version": ">= 2.2"
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"name": "D",
|
|
360
|
+
"version": ">= 2.2"
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"name": "C",
|
|
364
|
+
"version": ">= 2.0"
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
"name": "Zicsr",
|
|
368
|
+
"version": ">= 2.0"
|
|
369
|
+
}
|
|
370
|
+
],
|
|
371
|
+
"non_mandatory_extensions": [
|
|
372
|
+
{
|
|
373
|
+
"name": "V",
|
|
374
|
+
"version": ">= 1.0"
|
|
375
|
+
}
|
|
376
|
+
],
|
|
377
|
+
"params": {
|
|
378
|
+
"XLEN": 64
|
|
379
|
+
},
|
|
380
|
+
"additional_extensions": false
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"_title": "Unconfigured Example",
|
|
384
|
+
"$schema": "config_schema.json#",
|
|
385
|
+
"kind": "architecture configuration",
|
|
386
|
+
"type": "unconfigured",
|
|
387
|
+
"name": "generic",
|
|
388
|
+
"description": "Generic unconfigured RISC-V architecture"
|
|
389
|
+
}
|
|
197
390
|
]
|
|
198
391
|
}
|
|
@@ -115,9 +115,6 @@
|
|
|
115
115
|
}
|
|
116
116
|
],
|
|
117
117
|
"description": "Extension(s) that affect the definition of the field beyond the extension (or base) the field is originally defined in"
|
|
118
|
-
},
|
|
119
|
-
"cert_normative_rules": {
|
|
120
|
-
"$ref": "schema_defs.json#/$defs/cert_normative_rules"
|
|
121
118
|
}
|
|
122
119
|
},
|
|
123
120
|
"allOf": [
|
|
@@ -272,9 +269,6 @@
|
|
|
272
269
|
"$source": {
|
|
273
270
|
"description": "Path to the source file this definition came from; used by downstream tooling -- not expected to be in handwritten files",
|
|
274
271
|
"type": "string"
|
|
275
|
-
},
|
|
276
|
-
"cert_normative_rules": {
|
|
277
|
-
"$ref": "schema_defs.json#/$defs/cert_normative_rules"
|
|
278
272
|
}
|
|
279
273
|
},
|
|
280
274
|
"additionalProperties": false,
|