udb 0.1.9 → 0.1.13
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 +5 -2
- 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 +4 -1
- data/.data/cfgs/rv32-riscv-tests.yaml +2 -1
- data/.data/cfgs/rv32-vector.yaml +2 -1
- data/.data/cfgs/rv64-riscv-tests.yaml +2 -1
- data/.data/cfgs/rv64-vector.yaml +2 -1
- 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 +219 -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 +153 -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 +112 -0
- data/.data/spec/schemas/config_schema.json +219 -26
- 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/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 +8 -27
- data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +8 -8
- data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +4 -4
- data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +8 -8
- data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +4 -4
- data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +8 -8
- data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +4 -4
- data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +8 -8
- data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +4 -4
- data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +8 -8
- data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +4 -4
- data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +8 -8
- data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +4 -4
- data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +8 -8
- data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +4 -4
- data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +8 -8
- data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +4 -4
- data/.data/spec/std/isa/csr/I/pmpcfgN.layout +1 -1
- 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/mcycleh.yaml +1 -1
- data/.data/spec/std/isa/csr/misa.yaml +0 -12
- data/.data/spec/std/isa/csr/mstatus.yaml +38 -0
- data/.data/spec/std/isa/csr/mstatush.yaml +17 -15
- data/.data/spec/std/isa/csr/senvcfg.yaml +16 -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/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 +1 -1
- 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 +1 -1
- data/.data/spec/std/isa/inst/I/addiw.yaml +1 -1
- data/.data/spec/std/isa/inst/I/andi.yaml +1 -1
- 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/slt.yaml +2 -2
- data/.data/spec/std/isa/inst/I/sltiu.yaml +1 -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/xori.yaml +1 -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/vadd.vv.yaml +1 -5
- 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 +3 -8
- data/.data/spec/std/isa/inst/V/vmand.mm.yaml +3 -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/vmsgt.vi.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmsle.vv.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +3 -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/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/vrsub.vx.yaml +3 -0
- data/.data/spec/std/isa/inst/V/vse8.v.yaml +3 -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/Zbkb/packw.yaml +1 -1
- 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/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/isa/builtin_functions.idl +17 -0
- data/.data/spec/std/isa/isa/fp.idl +1 -5
- data/.data/spec/std/isa/isa/globals.isa +45 -14
- 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/JVT_BASE_MASK.yaml +1 -1
- data/.data/spec/std/isa/param/MCOUNTINHIBIT_IMPLEMENTED.yaml +25 -0
- data/.data/spec/std/isa/param/MTVEC_MODES.yaml +10 -3
- data/.data/spec/std/isa/param/VLEN.yaml +2 -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/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 +72 -6
- 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 +1 -4
- 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 +23 -0
- data/lib/udb.rb +0 -3
- metadata +25 -37
- 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
|
@@ -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",
|
|
@@ -62,7 +78,23 @@
|
|
|
62
78
|
"$ref": "schema_defs.json#/$defs/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,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "v0.1",
|
|
4
|
+
"description": "An ISA extension defines a named set of instructions, CSRs, and behaviors that can be implemented by a RISC-V processor. Each extension has one or more versioned releases, with various ratification states (development, frozen, public-review, ratification-ready, ratified, or nonstandard-released).\n\n## Key Fields\n\n- `name`: Short identifier used throughout the database (e.g., `I`, `M`, `Zicsr`, `Smstateen`)\n- `long_name`: Human-readable one-line description\n- `description`: Full AsciiDoc documentation of the extension\n- `type`: Whether the extension is `unprivileged` or `privileged`\n- `versions`: Array of versioned releases, each with a `state` and optional `ratification_date`\n- `requirements`: Optional condition that must be true for the extension to be implementable (e.g., requires another extension)\n- `company`: Organization that developed the extension (defaults to RISC-V International for standard extensions)\n- `doc_license`: License for the extension documentation",
|
|
4
5
|
"type": "object",
|
|
5
6
|
"required": [
|
|
6
7
|
"$schema",
|
|
@@ -11,50 +12,105 @@
|
|
|
11
12
|
"long_name",
|
|
12
13
|
"versions"
|
|
13
14
|
],
|
|
15
|
+
"examples": [
|
|
16
|
+
{
|
|
17
|
+
"_title": "Minimal Extension (Zicsr)",
|
|
18
|
+
"_quick_start": true,
|
|
19
|
+
"$schema": "ext_schema.json#",
|
|
20
|
+
"kind": "extension",
|
|
21
|
+
"name": "Zicsr",
|
|
22
|
+
"long_name": "Control and status register instructions",
|
|
23
|
+
"description": "Control and status register instructions",
|
|
24
|
+
"type": "unprivileged",
|
|
25
|
+
"versions": [
|
|
26
|
+
{
|
|
27
|
+
"version": "2.0.0",
|
|
28
|
+
"state": "ratified",
|
|
29
|
+
"ratification_date": "2019-04"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"_title": "Extension with Requirements (B)",
|
|
35
|
+
"$schema": "ext_schema.json#",
|
|
36
|
+
"kind": "extension",
|
|
37
|
+
"name": "B",
|
|
38
|
+
"long_name": "Bit Manipulation",
|
|
39
|
+
"description": "The B standard extension comprises instructions provided by the Zba, Zbb, and Zbs extensions.",
|
|
40
|
+
"type": "unprivileged",
|
|
41
|
+
"company": {
|
|
42
|
+
"name": "RISC-V International",
|
|
43
|
+
"url": "https://riscv.org"
|
|
44
|
+
},
|
|
45
|
+
"doc_license": {
|
|
46
|
+
"name": "Creative Commons Attribution 4.0 International License",
|
|
47
|
+
"url": "https://creativecommons.org/licenses/by/4.0/"
|
|
48
|
+
},
|
|
49
|
+
"versions": [
|
|
50
|
+
{
|
|
51
|
+
"version": "1.0.0",
|
|
52
|
+
"state": "ratified",
|
|
53
|
+
"ratification_date": "2024-04",
|
|
54
|
+
"url": "https://drive.google.com/file/d/1SgLoasaBjs5WboQMaU3wpHkjUwV71UZn/view",
|
|
55
|
+
"requirements": {
|
|
56
|
+
"extension": {
|
|
57
|
+
"allOf": [
|
|
58
|
+
{ "name": "Zba", "version": "= 1.0.0" },
|
|
59
|
+
{ "name": "Zbb", "version": "= 1.0.0" },
|
|
60
|
+
{ "name": "Zbs", "version": "= 1.0.0" }
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
],
|
|
14
68
|
"properties": {
|
|
15
69
|
"$schema": {
|
|
16
70
|
"type": "string",
|
|
17
71
|
"format": "uri-reference",
|
|
18
|
-
"description": "
|
|
72
|
+
"description": "Schema reference - must be `ext_schema.json#`",
|
|
19
73
|
"const": "ext_schema.json#"
|
|
20
74
|
},
|
|
21
75
|
"kind": {
|
|
22
76
|
"type": "string",
|
|
23
77
|
"const": "extension",
|
|
24
|
-
"description": "
|
|
78
|
+
"description": "Document type identifier - must be `extension`"
|
|
25
79
|
},
|
|
26
80
|
"name": {
|
|
27
81
|
"$ref": "schema_defs.json#/$defs/extension_name"
|
|
28
82
|
},
|
|
29
83
|
"long_name": {
|
|
30
84
|
"type": "string",
|
|
31
|
-
"description": "One
|
|
85
|
+
"description": "One-line human-readable name for the extension (e.g., `Address generation`, `Bit Manipulation`)"
|
|
32
86
|
},
|
|
33
87
|
"description": {
|
|
34
88
|
"$ref": "schema_defs.json#/$defs/spec_text",
|
|
35
|
-
"description": "Full documentation of the extension"
|
|
89
|
+
"description": "Full AsciiDoc documentation of the extension. May include multiple paragraphs, code examples, and cross-references."
|
|
36
90
|
},
|
|
37
91
|
"rvi_jira_issue": {
|
|
38
92
|
"type": "string",
|
|
39
|
-
"description": "JIRA issue number
|
|
93
|
+
"description": "JIRA issue number tracking this extension in the RISC-V International issue tracker"
|
|
40
94
|
},
|
|
41
95
|
"company": {
|
|
42
|
-
"description": "
|
|
96
|
+
"description": "Organization that developed this extension. Omit for RISC-V International standard extensions.",
|
|
43
97
|
"$ref": "schema_defs.json#/$defs/company"
|
|
44
98
|
},
|
|
45
99
|
"doc_license": {
|
|
100
|
+
"description": "License for the extension documentation",
|
|
46
101
|
"$ref": "schema_defs.json#/$defs/license"
|
|
47
102
|
},
|
|
48
103
|
"type": {
|
|
49
104
|
"enum": ["unprivileged", "privileged"],
|
|
50
|
-
"description": "
|
|
105
|
+
"description": "Privilege level of the extension. `unprivileged` extensions add instructions or behaviors accessible in user mode; `privileged` extensions add supervisor- or machine-mode functionality."
|
|
51
106
|
},
|
|
52
107
|
"requirements": {
|
|
53
|
-
"description": "Condition
|
|
108
|
+
"description": "Condition that must be true for this extension to be implementable. If the condition is false, the extension cannot be implemented. Typically used to express that one extension requires another (e.g., `D` requires `F`).",
|
|
54
109
|
"$ref": "schema_defs.json#/$defs/condition"
|
|
55
110
|
},
|
|
56
111
|
"versions": {
|
|
57
112
|
"type": "array",
|
|
113
|
+
"description": "Ordered list of versioned releases of this extension, from oldest to newest.",
|
|
58
114
|
"items": {
|
|
59
115
|
"type": "object",
|
|
60
116
|
"required": ["version", "state"],
|
|
@@ -100,31 +156,34 @@
|
|
|
100
156
|
],
|
|
101
157
|
"properties": {
|
|
102
158
|
"version": {
|
|
103
|
-
"$ref": "schema_defs.json#/$defs/extension_version"
|
|
159
|
+
"$ref": "schema_defs.json#/$defs/extension_version",
|
|
160
|
+
"description": "Version number in `MAJOR.MINOR.PATCH` format (e.g., `1.0.0`, `2.1.0`)"
|
|
104
161
|
},
|
|
105
162
|
"state": {
|
|
106
163
|
"$ref": "schema_defs.json#/$defs/spec_state",
|
|
107
|
-
"description": "
|
|
164
|
+
"description": "Ratification state of this version. See `spec_state` in schema_defs for all possible values and their meanings."
|
|
108
165
|
},
|
|
109
166
|
"repositories": {
|
|
110
|
-
"description": "
|
|
167
|
+
"description": "Source repositories where this version of the extension is developed",
|
|
111
168
|
"type": "array",
|
|
112
169
|
"items": {
|
|
113
170
|
"type": "object",
|
|
114
171
|
"properties": {
|
|
115
172
|
"url": {
|
|
116
173
|
"type": "string",
|
|
117
|
-
"format": "uri"
|
|
174
|
+
"format": "uri",
|
|
175
|
+
"description": "Repository URL"
|
|
118
176
|
},
|
|
119
177
|
"branch": {
|
|
120
178
|
"type": "string",
|
|
121
|
-
"description": "Branch
|
|
179
|
+
"description": "Branch or tag containing the work for this version"
|
|
122
180
|
}
|
|
123
181
|
},
|
|
124
182
|
"additionalProperties": false
|
|
125
183
|
}
|
|
126
184
|
},
|
|
127
185
|
"ratification_date": {
|
|
186
|
+
"description": "Month when this version was ratified, in `YYYY-MM` format. Use `unknown` if the date is not recorded. Required when `state` is `ratified`.",
|
|
128
187
|
"oneOf": [
|
|
129
188
|
{
|
|
130
189
|
"type": "string",
|
|
@@ -169,37 +228,37 @@
|
|
|
169
228
|
"items": {
|
|
170
229
|
"type": "string"
|
|
171
230
|
},
|
|
172
|
-
"description": "
|
|
231
|
+
"description": "List of changes introduced in this version relative to the previous version"
|
|
173
232
|
},
|
|
174
233
|
"url": {
|
|
175
234
|
"type": "string",
|
|
176
235
|
"format": "uri",
|
|
177
|
-
"description": "
|
|
236
|
+
"description": "URL to the ratified specification document (e.g., a PDF on the RISC-V website)"
|
|
178
237
|
},
|
|
179
238
|
"contributors": {
|
|
180
|
-
"description": "
|
|
239
|
+
"description": "People who contributed to this version of the extension",
|
|
181
240
|
"type": "array",
|
|
182
241
|
"items": {
|
|
183
242
|
"type": "object",
|
|
184
243
|
"properties": {
|
|
185
244
|
"name": {
|
|
186
245
|
"type": "string",
|
|
187
|
-
"description": "Contributor name
|
|
246
|
+
"description": "Contributor name in `GIVEN_NAME SURNAME` format"
|
|
188
247
|
},
|
|
189
248
|
"company": {
|
|
190
249
|
"type": "string",
|
|
191
|
-
"description": "Company the contributor worked for, or
|
|
250
|
+
"description": "Company the contributor worked for at the time, or `Individual`"
|
|
192
251
|
},
|
|
193
252
|
"email": {
|
|
194
253
|
"type": "string",
|
|
195
254
|
"format": "email",
|
|
196
|
-
"description": "
|
|
255
|
+
"description": "Contributor email address"
|
|
197
256
|
}
|
|
198
257
|
}
|
|
199
258
|
}
|
|
200
259
|
},
|
|
201
260
|
"requirements": {
|
|
202
|
-
"description": "
|
|
261
|
+
"description": "Additional condition that must be true for this specific version to be implementable, beyond any requirements on the extension overall. If the condition is false, this version cannot be implemented.",
|
|
203
262
|
"$ref": "schema_defs.json#/$defs/condition"
|
|
204
263
|
}
|
|
205
264
|
},
|
|
@@ -208,10 +267,7 @@
|
|
|
208
267
|
},
|
|
209
268
|
"$source": {
|
|
210
269
|
"type": "string",
|
|
211
|
-
"description": "Source file
|
|
212
|
-
},
|
|
213
|
-
"cert_normative_rules": {
|
|
214
|
-
"$ref": "schema_defs.json#/$defs/cert_normative_rules"
|
|
270
|
+
"description": "Source file path when this extension was generated or copied from another file"
|
|
215
271
|
}
|
|
216
272
|
},
|
|
217
273
|
"additionalProperties": false
|
|
@@ -386,9 +386,6 @@
|
|
|
386
386
|
"operation_ast": {
|
|
387
387
|
"type": "object"
|
|
388
388
|
},
|
|
389
|
-
"cert_normative_rules": {
|
|
390
|
-
"$ref": "schema_defs.json#/$defs/cert_normative_rules"
|
|
391
|
-
},
|
|
392
389
|
"assembly": {
|
|
393
390
|
"type": "string",
|
|
394
391
|
"description": "Assembly format of the instruction. Can use decode variables"
|