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.
Files changed (275) hide show
  1. checksums.yaml +4 -4
  2. data/.data/cfgs/example_rv64_with_overlay.yaml +5 -2
  3. data/.data/cfgs/mc100-32-full-example.yaml +1 -0
  4. data/.data/cfgs/profile/README.adoc +10 -0
  5. data/.data/cfgs/profile/RVA20S64.yaml +26 -6
  6. data/.data/cfgs/profile/RVA20U64.yaml +18 -4
  7. data/.data/cfgs/profile/RVA22S64.yaml +27 -7
  8. data/.data/cfgs/profile/RVA22U64.yaml +18 -4
  9. data/.data/cfgs/profile/RVA23S64.yaml +61 -7
  10. data/.data/cfgs/profile/RVA23U64.yaml +36 -4
  11. data/.data/cfgs/profile/RVB23S64.yaml +27 -7
  12. data/.data/cfgs/profile/RVB23U64.yaml +18 -4
  13. data/.data/cfgs/profile/RVI20U32.yaml +10 -4
  14. data/.data/cfgs/profile/RVI20U64.yaml +10 -4
  15. data/.data/cfgs/qc_iu.yaml +4 -1
  16. data/.data/cfgs/rv32-riscv-tests.yaml +2 -1
  17. data/.data/cfgs/rv32-vector.yaml +2 -1
  18. data/.data/cfgs/rv64-riscv-tests.yaml +2 -1
  19. data/.data/cfgs/rv64-vector.yaml +2 -1
  20. data/.data/spec/custom/isa/qc_iu/csr/Smrnmi/mnepc.yaml +17 -0
  21. data/.data/spec/custom/isa/qc_iu/csr/Xqccmi/qc.itba.yaml +45 -0
  22. data/.data/spec/custom/isa/qc_iu/csr/Xqccmi/qc.itdec.yaml +39 -0
  23. data/.data/spec/custom/isa/qc_iu/csr/jvt.yaml +11 -0
  24. data/.data/spec/custom/isa/qc_iu/csr/mepc.yaml +16 -0
  25. data/.data/spec/custom/isa/qc_iu/ext/Xqccmi.yaml +219 -0
  26. data/.data/spec/custom/isa/qc_iu/ext/Xqccmt.yaml +127 -0
  27. data/.data/spec/custom/isa/qc_iu/inst/Xqccmi/qc.cm.ilut.yaml +153 -0
  28. data/.data/spec/custom/isa/qc_iu/inst/Xqccmt/qc.cm.jalt.yaml +84 -0
  29. data/.data/spec/custom/isa/qc_iu/inst/Xqccmt/qc.cm.jt.yaml +60 -0
  30. data/.data/spec/custom/isa/qc_iu/isa/globals.isa +112 -0
  31. data/.data/spec/schemas/config_schema.json +219 -26
  32. data/.data/spec/schemas/csr_schema.json +0 -6
  33. data/.data/spec/schemas/ext_schema.json +80 -24
  34. data/.data/spec/schemas/inst_schema.json +0 -3
  35. data/.data/spec/schemas/profile_release_schema.json +1 -1
  36. data/.data/spec/schemas/profile_schema.json +0 -3
  37. data/.data/spec/schemas/register_file_schema.json +8 -3
  38. data/.data/spec/schemas/schema_defs.json +8 -27
  39. data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +8 -8
  40. data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +4 -4
  41. data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +8 -8
  42. data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +4 -4
  43. data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +8 -8
  44. data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +4 -4
  45. data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +8 -8
  46. data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +4 -4
  47. data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +8 -8
  48. data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +4 -4
  49. data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +8 -8
  50. data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +4 -4
  51. data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +8 -8
  52. data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +4 -4
  53. data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +8 -8
  54. data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +4 -4
  55. data/.data/spec/std/isa/csr/I/pmpcfgN.layout +1 -1
  56. data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.layout +6 -2
  57. data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.yaml +6 -2
  58. data/.data/spec/std/isa/csr/hstatus.yaml +16 -0
  59. data/.data/spec/std/isa/csr/mcycleh.yaml +1 -1
  60. data/.data/spec/std/isa/csr/misa.yaml +0 -12
  61. data/.data/spec/std/isa/csr/mstatus.yaml +38 -0
  62. data/.data/spec/std/isa/csr/mstatush.yaml +17 -15
  63. data/.data/spec/std/isa/csr/senvcfg.yaml +16 -0
  64. data/.data/spec/std/isa/csr/sstatus.yaml +12 -0
  65. data/.data/spec/std/isa/csr/vsstatus.yaml +24 -0
  66. data/.data/spec/std/isa/ext/A.yaml +5 -7
  67. data/.data/spec/std/isa/ext/S.yaml +12 -0
  68. data/.data/spec/std/isa/ext/Smpmpmt.yaml +52 -0
  69. data/.data/spec/std/isa/ext/Sv32.yaml +7 -19
  70. data/.data/spec/std/isa/ext/Sv39.yaml +7 -19
  71. data/.data/spec/std/isa/ext/Sv48.yaml +4 -20
  72. data/.data/spec/std/isa/ext/Sv57.yaml +4 -20
  73. data/.data/spec/std/isa/ext/Svukte.yaml +71 -0
  74. data/.data/spec/std/isa/ext/Zawrs.yaml +1 -1
  75. data/.data/spec/std/isa/ext/Zihpm.yaml +0 -12
  76. data/.data/spec/std/isa/inst/C/c.addi.yaml +1 -0
  77. data/.data/spec/std/isa/inst/C/c.addi16sp.yaml +1 -0
  78. data/.data/spec/std/isa/inst/C/c.addiw.yaml +1 -0
  79. data/.data/spec/std/isa/inst/C/c.andi.yaml +1 -0
  80. data/.data/spec/std/isa/inst/C/c.ldsp.yaml +1 -1
  81. data/.data/spec/std/isa/inst/C/c.li.yaml +1 -0
  82. data/.data/spec/std/isa/inst/C/c.lui.yaml +1 -0
  83. data/.data/spec/std/isa/inst/C/c.mv.yaml +1 -1
  84. data/.data/spec/std/isa/inst/C/c.sdsp.yaml +1 -1
  85. data/.data/spec/std/isa/inst/D/fsgnj.d.yaml +3 -0
  86. data/.data/spec/std/isa/inst/D/fsgnjn.d.yaml +3 -0
  87. data/.data/spec/std/isa/inst/D/fsgnjx.d.yaml +3 -0
  88. data/.data/spec/std/isa/inst/F/fadd.s.yaml +5 -5
  89. data/.data/spec/std/isa/inst/F/fclass.s.yaml +2 -2
  90. data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +1 -1
  91. data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +1 -1
  92. data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +1 -1
  93. data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +1 -1
  94. data/.data/spec/std/isa/inst/F/fcvt.s.w.yaml +1 -1
  95. data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +1 -1
  96. data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +1 -1
  97. data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +1 -1
  98. data/.data/spec/std/isa/inst/F/fdiv.s.yaml +1 -1
  99. data/.data/spec/std/isa/inst/F/feq.s.yaml +2 -2
  100. data/.data/spec/std/isa/inst/F/fle.s.yaml +2 -2
  101. data/.data/spec/std/isa/inst/F/fleq.s.yaml +2 -2
  102. data/.data/spec/std/isa/inst/F/flt.s.yaml +2 -2
  103. data/.data/spec/std/isa/inst/F/fltq.s.yaml +2 -2
  104. data/.data/spec/std/isa/inst/F/flw.yaml +2 -2
  105. data/.data/spec/std/isa/inst/F/fmadd.s.yaml +1 -1
  106. data/.data/spec/std/isa/inst/F/fmax.s.yaml +6 -6
  107. data/.data/spec/std/isa/inst/F/fmin.s.yaml +6 -6
  108. data/.data/spec/std/isa/inst/F/fmsub.s.yaml +1 -1
  109. data/.data/spec/std/isa/inst/F/fmul.s.yaml +1 -1
  110. data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +2 -2
  111. data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +1 -1
  112. data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +2 -2
  113. data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +1 -1
  114. data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +4 -4
  115. data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +3 -3
  116. data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +4 -4
  117. data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +1 -1
  118. data/.data/spec/std/isa/inst/F/fsub.s.yaml +1 -1
  119. data/.data/spec/std/isa/inst/F/fsw.yaml +1 -1
  120. data/.data/spec/std/isa/inst/I/addi.yaml +1 -1
  121. data/.data/spec/std/isa/inst/I/addiw.yaml +1 -1
  122. data/.data/spec/std/isa/inst/I/andi.yaml +1 -1
  123. data/.data/spec/std/isa/inst/I/beq.yaml +1 -1
  124. data/.data/spec/std/isa/inst/I/bge.yaml +4 -2
  125. data/.data/spec/std/isa/inst/I/bgeu.yaml +3 -0
  126. data/.data/spec/std/isa/inst/I/blt.yaml +4 -2
  127. data/.data/spec/std/isa/inst/I/bltu.yaml +3 -0
  128. data/.data/spec/std/isa/inst/I/bne.yaml +1 -1
  129. data/.data/spec/std/isa/inst/I/slt.yaml +2 -2
  130. data/.data/spec/std/isa/inst/I/sltiu.yaml +1 -1
  131. data/.data/spec/std/isa/inst/I/sltu.yaml +1 -1
  132. data/.data/spec/std/isa/inst/I/sub.yaml +1 -1
  133. data/.data/spec/std/isa/inst/I/subw.yaml +1 -1
  134. data/.data/spec/std/isa/inst/I/xori.yaml +1 -1
  135. data/.data/spec/std/isa/inst/M/mul.yaml +0 -19
  136. data/.data/spec/std/isa/inst/Q/fsgnj.q.yaml +1 -1
  137. data/.data/spec/std/isa/inst/S/sret.yaml +3 -1
  138. data/.data/spec/std/isa/inst/V/vadd.vv.yaml +1 -5
  139. data/.data/spec/std/isa/inst/V/vfsgnjn.vv.yaml +3 -0
  140. data/.data/spec/std/isa/inst/V/vfsgnjx.vv.yaml +3 -0
  141. data/.data/spec/std/isa/inst/V/vl1re8.v.yaml +3 -0
  142. data/.data/spec/std/isa/inst/V/vl2re8.v.yaml +3 -0
  143. data/.data/spec/std/isa/inst/V/vl4re8.v.yaml +3 -0
  144. data/.data/spec/std/isa/inst/V/vl8re8.v.yaml +3 -0
  145. data/.data/spec/std/isa/inst/V/vle8.v.yaml +3 -8
  146. data/.data/spec/std/isa/inst/V/vmand.mm.yaml +3 -0
  147. data/.data/spec/std/isa/inst/V/vmfle.vv.yaml +3 -0
  148. data/.data/spec/std/isa/inst/V/vmflt.vv.yaml +3 -0
  149. data/.data/spec/std/isa/inst/V/vmnand.mm.yaml +3 -0
  150. data/.data/spec/std/isa/inst/V/vmsgt.vi.yaml +3 -0
  151. data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +3 -0
  152. data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +3 -0
  153. data/.data/spec/std/isa/inst/V/vmsle.vv.yaml +3 -0
  154. data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +3 -0
  155. data/.data/spec/std/isa/inst/V/vmsleu.vv.yaml +3 -0
  156. data/.data/spec/std/isa/inst/V/vmslt.vv.yaml +3 -0
  157. data/.data/spec/std/isa/inst/V/vmsltu.vv.yaml +3 -0
  158. data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +2 -13
  159. data/.data/spec/std/isa/inst/V/vmv.x.s.yaml +1 -1
  160. data/.data/spec/std/isa/inst/V/vmxnor.mm.yaml +3 -0
  161. data/.data/spec/std/isa/inst/V/vmxor.mm.yaml +3 -0
  162. data/.data/spec/std/isa/inst/V/vnsrl.wx.yaml +3 -0
  163. data/.data/spec/std/isa/inst/V/vrsub.vx.yaml +3 -0
  164. data/.data/spec/std/isa/inst/V/vse8.v.yaml +3 -4
  165. data/.data/spec/std/isa/inst/V/vwadd.vx.yaml +3 -0
  166. data/.data/spec/std/isa/inst/V/vwaddu.vx.yaml +3 -0
  167. data/.data/spec/std/isa/inst/V/vxor.vi.yaml +4 -0
  168. data/.data/spec/std/isa/inst/Zalasr/lSIZE.AQRL.layout +40 -5
  169. data/.data/spec/std/isa/inst/Zalasr/lb.aq.yaml +17 -1
  170. data/.data/spec/std/isa/inst/Zalasr/lb.aqrl.yaml +17 -1
  171. data/.data/spec/std/isa/inst/Zalasr/ld.aq.yaml +17 -1
  172. data/.data/spec/std/isa/inst/Zalasr/ld.aqrl.yaml +17 -1
  173. data/.data/spec/std/isa/inst/Zalasr/lh.aq.yaml +17 -1
  174. data/.data/spec/std/isa/inst/Zalasr/lh.aqrl.yaml +17 -1
  175. data/.data/spec/std/isa/inst/Zalasr/lw.aq.yaml +17 -1
  176. data/.data/spec/std/isa/inst/Zalasr/lw.aqrl.yaml +17 -1
  177. data/.data/spec/std/isa/inst/Zalasr/sSIZE.AQRL.layout +46 -5
  178. data/.data/spec/std/isa/inst/Zalasr/sb.aqrl.yaml +16 -1
  179. data/.data/spec/std/isa/inst/Zalasr/sb.rl.yaml +16 -1
  180. data/.data/spec/std/isa/inst/Zalasr/sd.aqrl.yaml +16 -1
  181. data/.data/spec/std/isa/inst/Zalasr/sd.rl.yaml +16 -1
  182. data/.data/spec/std/isa/inst/Zalasr/sh.aqrl.yaml +16 -1
  183. data/.data/spec/std/isa/inst/Zalasr/sh.rl.yaml +16 -1
  184. data/.data/spec/std/isa/inst/Zalasr/sw.aqrl.yaml +16 -1
  185. data/.data/spec/std/isa/inst/Zalasr/sw.rl.yaml +16 -1
  186. data/.data/spec/std/isa/inst/Zbkb/packw.yaml +1 -1
  187. data/.data/spec/std/isa/inst/Zcd/c.fld.yaml +1 -1
  188. data/.data/spec/std/isa/inst/Zcd/c.fldsp.yaml +1 -1
  189. data/.data/spec/std/isa/inst/Zcd/c.fsdsp.yaml +1 -1
  190. data/.data/spec/std/isa/inst/Zcf/c.flwsp.yaml +1 -1
  191. data/.data/spec/std/isa/inst/Zcf/c.fswsp.yaml +1 -1
  192. data/.data/spec/std/isa/inst/Zcmp/cm.pop.yaml +1 -1
  193. data/.data/spec/std/isa/inst/Zcmp/cm.popret.yaml +1 -1
  194. data/.data/spec/std/isa/inst/Zcmp/cm.popretz.yaml +1 -1
  195. data/.data/spec/std/isa/inst/Zcmp/cm.push.yaml +2 -3
  196. data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +1 -1
  197. data/.data/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +6 -6
  198. data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +5 -5
  199. data/.data/spec/std/isa/inst/Zfh/flh.yaml +1 -1
  200. data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +1 -1
  201. data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +1 -1
  202. data/.data/spec/std/isa/inst/Zfh/fsh.yaml +1 -1
  203. data/.data/spec/std/isa/inst/Zicsr/csrrc.yaml +1 -1
  204. data/.data/spec/std/isa/inst/Zicsr/csrrci.yaml +1 -1
  205. data/.data/spec/std/isa/inst/Zicsr/csrrs.yaml +2 -2
  206. data/.data/spec/std/isa/inst/Zicsr/csrrsi.yaml +1 -1
  207. data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +1 -1
  208. data/.data/spec/std/isa/inst/Zicsr/csrrwi.yaml +1 -1
  209. data/.data/spec/std/isa/isa/builtin_functions.idl +17 -0
  210. data/.data/spec/std/isa/isa/fp.idl +1 -5
  211. data/.data/spec/std/isa/isa/globals.isa +45 -14
  212. data/.data/spec/std/isa/isa/vec.idl +1 -2
  213. data/.data/spec/std/isa/manual_version/isa/20240411/isa_20240411.yaml +5 -5
  214. data/.data/spec/std/isa/param/COUNTINHIBIT_EN.yaml +8 -2
  215. data/.data/spec/std/isa/param/JVT_BASE_MASK.yaml +1 -1
  216. data/.data/spec/std/isa/param/MCOUNTINHIBIT_IMPLEMENTED.yaml +25 -0
  217. data/.data/spec/std/isa/param/MTVEC_MODES.yaml +10 -3
  218. data/.data/spec/std/isa/param/VLEN.yaml +2 -0
  219. data/.data/spec/std/isa/profile/RVA20S64.yaml +11 -4
  220. data/.data/spec/std/isa/profile/RVA20U64.yaml +14 -5
  221. data/.data/spec/std/isa/profile/RVA22S64.yaml +14 -3
  222. data/.data/spec/std/isa/profile/RVA22U64.yaml +8 -1
  223. data/.data/spec/std/isa/profile/RVA23S64.yaml +13 -0
  224. data/.data/spec/std/isa/profile/RVA23U64.yaml +15 -1
  225. data/.data/spec/std/isa/profile/RVB23S64.yaml +15 -3
  226. data/.data/spec/std/isa/profile/RVB23U64.yaml +8 -1
  227. data/.data/spec/std/isa/profile/RVI20U32.yaml +8 -1
  228. data/.data/spec/std/isa/profile/RVI20U64.yaml +7 -0
  229. data/.data/spec/std/isa/register_file/F.yaml +3 -2
  230. data/.data/spec/std/isa/register_file/V.yaml +2 -2
  231. data/.data/spec/std/isa/register_file/X.yaml +2 -1
  232. data/lib/udb/architecture.rb +4 -25
  233. data/lib/udb/cfg_arch.rb +171 -59
  234. data/lib/udb/cli.rb +10 -1
  235. data/lib/udb/condition.rb +38 -37
  236. data/lib/udb/config.rb +72 -6
  237. data/lib/udb/logic.rb +29 -56
  238. data/lib/udb/obj/csr.rb +23 -5
  239. data/lib/udb/obj/csr_field.rb +36 -21
  240. data/lib/udb/obj/database_obj.rb +2 -5
  241. data/lib/udb/obj/extension.rb +0 -3
  242. data/lib/udb/obj/instruction.rb +1 -4
  243. data/lib/udb/obj/portfolio.rb +75 -20
  244. data/lib/udb/obj/profile.rb +0 -4
  245. data/lib/udb/obj/register_file.rb +63 -2
  246. data/lib/udb/portfolio_design.rb +3 -6
  247. data/lib/udb/resolver.rb +84 -23
  248. data/lib/udb/version.rb +1 -1
  249. data/lib/udb/version_spec.rb +8 -0
  250. data/lib/udb/z3.rb +23 -0
  251. data/lib/udb.rb +0 -3
  252. metadata +25 -37
  253. data/.data/cfgs/profile/RVA23M64.yaml +0 -159
  254. data/.data/cfgs/profile/RVB23M64.yaml +0 -149
  255. data/.data/spec/schemas/proc_cert_class_schema.json +0 -35
  256. data/.data/spec/schemas/proc_cert_model_schema.json +0 -336
  257. data/.data/spec/std/isa/proc_cert_class/AC.yaml +0 -13
  258. data/.data/spec/std/isa/proc_cert_class/MC.yaml +0 -13
  259. data/.data/spec/std/isa/proc_cert_class/RVI.yaml +0 -16
  260. data/.data/spec/std/isa/proc_cert_model/AC100.yaml +0 -72
  261. data/.data/spec/std/isa/proc_cert_model/AC200.yaml +0 -58
  262. data/.data/spec/std/isa/proc_cert_model/MC100-32.yaml +0 -155
  263. data/.data/spec/std/isa/proc_cert_model/MC100-64.yaml +0 -21
  264. data/.data/spec/std/isa/proc_cert_model/MC200-32.yaml +0 -60
  265. data/.data/spec/std/isa/proc_cert_model/MC200-64.yaml +0 -21
  266. data/.data/spec/std/isa/proc_cert_model/MC300-32.yaml +0 -40
  267. data/.data/spec/std/isa/proc_cert_model/MC300-64.yaml +0 -21
  268. data/.data/spec/std/isa/proc_cert_model/RVI20-32.yaml +0 -39
  269. data/.data/spec/std/isa/proc_cert_model/RVI20-64.yaml +0 -19
  270. data/.data/spec/std/isa/profile/RVA23M64.yaml +0 -24
  271. data/.data/spec/std/isa/profile/RVB23M64.yaml +0 -86
  272. data/lib/udb/cert_normative_rule.rb +0 -41
  273. data/lib/udb/obj/certifiable_obj.rb +0 -21
  274. data/lib/udb/obj/certificate.rb +0 -230
  275. data/lib/udb/proc_cert_design.rb +0 -77
@@ -27,6 +27,10 @@
27
27
  "when": {
28
28
  "$ref": "schema_defs.json#/$defs/requires_entry"
29
29
  },
30
+ "reset_value": {
31
+ "type": "string",
32
+ "description": "IDL literal expression for the reset value (e.g., '0'). Omit if reset state is unknown."
33
+ },
30
34
  "arch_read()": {
31
35
  "type": "string",
32
36
  "description": "Function describing the architecturally defined read behavior. Use this for architecturally mandated effects (e.g., x0 always reads as zero)."
@@ -74,7 +78,7 @@
74
78
  "name",
75
79
  "long_name",
76
80
  "description",
77
- "register_length",
81
+ "register_length()",
78
82
  "registers"
79
83
  ],
80
84
  "additionalProperties": false,
@@ -103,8 +107,9 @@
103
107
  "type": "string",
104
108
  "enum": ["general_purpose", "floating_point", "vector"]
105
109
  },
106
- "register_length": {
107
- "$ref": "schema_defs.json#/$defs/bit_length_value"
110
+ "register_length()": {
111
+ "type": "string",
112
+ "description": "IDL function body returning the register width in bits. May reference params (MXLEN, VLEN) or implemented?(). Example: 'return MXLEN;'"
108
113
  },
109
114
  "registers": {
110
115
  "type": "array",
@@ -115,6 +115,7 @@
115
115
  },
116
116
  "spec_state": {
117
117
  "type": "string",
118
+ "description": "Ratification state of a specification or extension version: `development` (actively being worked on), `frozen` (feature-complete, under review), `public-review` (open for public comment), `ratification-ready` (approved by the task group, awaiting board vote), `ratified` (officially approved by RISC-V International), or `nonstandard-released` (released but not part of the RISC-V standard).",
118
119
  "enum": [
119
120
  "development",
120
121
  "frozen",
@@ -223,17 +224,20 @@
223
224
  },
224
225
  "extension_name": {
225
226
  "type": "string",
227
+ "description": "Extension name (e.g., `I`, `M`, `Zicsr`, `Smstateen`)",
226
228
  "pattern": "^(([A-WY])|([SXZ][a-z0-9]+))$"
227
229
  },
228
230
  "extension_version": {
229
- "$ref": "#/$defs/rvi_version"
231
+ "$ref": "#/$defs/rvi_version",
232
+ "description": "Exact version in `MAJOR[.MINOR[.PATCH]]` format (e.g., `2.1.0`, `2.1`, `2`)"
230
233
  },
231
234
  "requirement_string": {
232
235
  "type": "string",
236
+ "description": "Version requirement string (e.g., `>= 2.0`, `~> 1.5`, `= 2.1`). The `~>` operator is a pessimistic version constraint: `~> X.Y` means `>= X.Y` and `< (X+1).0`; `~> X.Y.Z` means `>= X.Y.Z` and `< X.(Y+1).0`.",
233
237
  "pattern": "^((>=)|(>)|(~>)|(<)|(<=)|(=))?\\s*[0-9]+(\\.[0-9]+(\\.[0-9]+(-[a-fA-F0-9]+)?)?)?$"
234
238
  },
235
239
  "version_requirements": {
236
- "description": "A (set of) version requirements",
240
+ "description": "Version requirement or list of requirements (e.g., `>= 2.0` or `['>= 2.0', '< 3.0']`)",
237
241
  "oneOf": [
238
242
  {
239
243
  "$ref": "#/$defs/requirement_string"
@@ -380,30 +384,6 @@
380
384
  }
381
385
  }
382
386
  },
383
- "cert_normative_rules": {
384
- "description": "Architecturally visible behaviors requiring validation by certification tests",
385
- "type": "array",
386
- "required": ["id", "name", "doc_links", "description"],
387
- "properties": {
388
- "id": {
389
- "type": "string"
390
- },
391
- "name": {
392
- "type": "string"
393
- },
394
- "doc_links": {
395
- "description": "Link to UDB documentation, ISA manual, Sail code, or IDL code",
396
- "type": "array",
397
- "items": {
398
- "type": "string"
399
- }
400
- },
401
- "description": {
402
- "type": "string"
403
- }
404
- },
405
- "additionalProperties": false
406
- },
407
387
  "encoding_match": {
408
388
  "oneOf": [
409
389
  {
@@ -434,7 +414,7 @@
434
414
  "reference": {
435
415
  "type": "string",
436
416
  "pattern": "^.+\\.yaml#(/.*)?$",
437
- "description": "refrence to another database object, as a JSON Reference"
417
+ "description": "reference to another database object, as a JSON Reference"
438
418
  },
439
419
  "integer": {
440
420
  "description": "An integer, either native to JSON or a number-like string",
@@ -808,6 +788,7 @@
808
788
  "additionalProperties": false
809
789
  },
810
790
  "condition": {
791
+ "description": "A condition (YAML structure or IDL function). See the conditions reference for details.",
811
792
  "oneOf": [
812
793
  {
813
794
  "$ref": "#/$defs/yaml_condition"
@@ -35,7 +35,7 @@ fields:
35
35
  ! Name ! Location ! Description
36
36
 
37
37
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
38
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
38
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
39
39
  h! A ! 4:3
40
40
  a! Address matching mode. One of:
41
41
 
@@ -93,7 +93,7 @@ fields:
93
93
  ! Name ! Location ! Description
94
94
 
95
95
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
96
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
96
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
97
97
  h! A ! 12:11
98
98
  a! Address matching mode. One of:
99
99
 
@@ -151,7 +151,7 @@ fields:
151
151
  ! Name ! Location ! Description
152
152
 
153
153
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
154
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
154
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
155
155
  h! A ! 20:19
156
156
  a! Address matching mode. One of:
157
157
 
@@ -209,7 +209,7 @@ fields:
209
209
  ! Name ! Location ! Description
210
210
 
211
211
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
212
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
212
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
213
213
  h! A ! 28:27
214
214
  a! Address matching mode. One of:
215
215
 
@@ -269,7 +269,7 @@ fields:
269
269
  ! Name ! Location ! Description
270
270
 
271
271
  h! L ! 39 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
272
- h! - ! 38:37 ! _Reserved_ Writes shall be ignored.
272
+ h! MT ! 38:37 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
273
273
  h! A ! 36:35
274
274
  a! Address matching mode. One of:
275
275
 
@@ -329,7 +329,7 @@ fields:
329
329
  ! Name ! Location ! Description
330
330
 
331
331
  h! L ! 47 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
332
- h! - ! 46:45 ! _Reserved_ Writes shall be ignored.
332
+ h! MT ! 46:45 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
333
333
  h! A ! 44:43
334
334
  a! Address matching mode. One of:
335
335
 
@@ -389,7 +389,7 @@ fields:
389
389
  ! Name ! Location ! Description
390
390
 
391
391
  h! L ! 55 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
392
- h! - ! 54:53 ! _Reserved_ Writes shall be ignored.
392
+ h! MT ! 54:53 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
393
393
  h! A ! 52:51
394
394
  a! Address matching mode. One of:
395
395
 
@@ -449,7 +449,7 @@ fields:
449
449
  ! Name ! Location ! Description
450
450
 
451
451
  h! L ! 63 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
452
- h! - ! 62:61 ! _Reserved_ Writes shall be ignored.
452
+ h! MT ! 62:61 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
453
453
  h! A ! 60:59
454
454
  a! Address matching mode. One of:
455
455
 
@@ -36,7 +36,7 @@ fields:
36
36
  ! Name ! Location ! Description
37
37
 
38
38
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
39
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
39
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
40
40
  h! A ! 4:3
41
41
  a! Address matching mode. One of:
42
42
 
@@ -94,7 +94,7 @@ fields:
94
94
  ! Name ! Location ! Description
95
95
 
96
96
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
97
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
97
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
98
98
  h! A ! 12:11
99
99
  a! Address matching mode. One of:
100
100
 
@@ -152,7 +152,7 @@ fields:
152
152
  ! Name ! Location ! Description
153
153
 
154
154
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
155
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
155
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
156
156
  h! A ! 20:19
157
157
  a! Address matching mode. One of:
158
158
 
@@ -210,7 +210,7 @@ fields:
210
210
  ! Name ! Location ! Description
211
211
 
212
212
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
213
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
213
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
214
214
  h! A ! 28:27
215
215
  a! Address matching mode. One of:
216
216
 
@@ -35,7 +35,7 @@ fields:
35
35
  ! Name ! Location ! Description
36
36
 
37
37
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
38
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
38
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
39
39
  h! A ! 4:3
40
40
  a! Address matching mode. One of:
41
41
 
@@ -93,7 +93,7 @@ fields:
93
93
  ! Name ! Location ! Description
94
94
 
95
95
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
96
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
96
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
97
97
  h! A ! 12:11
98
98
  a! Address matching mode. One of:
99
99
 
@@ -151,7 +151,7 @@ fields:
151
151
  ! Name ! Location ! Description
152
152
 
153
153
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
154
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
154
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
155
155
  h! A ! 20:19
156
156
  a! Address matching mode. One of:
157
157
 
@@ -209,7 +209,7 @@ fields:
209
209
  ! Name ! Location ! Description
210
210
 
211
211
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
212
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
212
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
213
213
  h! A ! 28:27
214
214
  a! Address matching mode. One of:
215
215
 
@@ -269,7 +269,7 @@ fields:
269
269
  ! Name ! Location ! Description
270
270
 
271
271
  h! L ! 39 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
272
- h! - ! 38:37 ! _Reserved_ Writes shall be ignored.
272
+ h! MT ! 38:37 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
273
273
  h! A ! 36:35
274
274
  a! Address matching mode. One of:
275
275
 
@@ -329,7 +329,7 @@ fields:
329
329
  ! Name ! Location ! Description
330
330
 
331
331
  h! L ! 47 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
332
- h! - ! 46:45 ! _Reserved_ Writes shall be ignored.
332
+ h! MT ! 46:45 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
333
333
  h! A ! 44:43
334
334
  a! Address matching mode. One of:
335
335
 
@@ -389,7 +389,7 @@ fields:
389
389
  ! Name ! Location ! Description
390
390
 
391
391
  h! L ! 55 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
392
- h! - ! 54:53 ! _Reserved_ Writes shall be ignored.
392
+ h! MT ! 54:53 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
393
393
  h! A ! 52:51
394
394
  a! Address matching mode. One of:
395
395
 
@@ -449,7 +449,7 @@ fields:
449
449
  ! Name ! Location ! Description
450
450
 
451
451
  h! L ! 63 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
452
- h! - ! 62:61 ! _Reserved_ Writes shall be ignored.
452
+ h! MT ! 62:61 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
453
453
  h! A ! 60:59
454
454
  a! Address matching mode. One of:
455
455
 
@@ -36,7 +36,7 @@ fields:
36
36
  ! Name ! Location ! Description
37
37
 
38
38
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
39
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
39
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
40
40
  h! A ! 4:3
41
41
  a! Address matching mode. One of:
42
42
 
@@ -94,7 +94,7 @@ fields:
94
94
  ! Name ! Location ! Description
95
95
 
96
96
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
97
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
97
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
98
98
  h! A ! 12:11
99
99
  a! Address matching mode. One of:
100
100
 
@@ -152,7 +152,7 @@ fields:
152
152
  ! Name ! Location ! Description
153
153
 
154
154
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
155
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
155
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
156
156
  h! A ! 20:19
157
157
  a! Address matching mode. One of:
158
158
 
@@ -210,7 +210,7 @@ fields:
210
210
  ! Name ! Location ! Description
211
211
 
212
212
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
213
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
213
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
214
214
  h! A ! 28:27
215
215
  a! Address matching mode. One of:
216
216
 
@@ -35,7 +35,7 @@ fields:
35
35
  ! Name ! Location ! Description
36
36
 
37
37
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
38
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
38
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
39
39
  h! A ! 4:3
40
40
  a! Address matching mode. One of:
41
41
 
@@ -93,7 +93,7 @@ fields:
93
93
  ! Name ! Location ! Description
94
94
 
95
95
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
96
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
96
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
97
97
  h! A ! 12:11
98
98
  a! Address matching mode. One of:
99
99
 
@@ -151,7 +151,7 @@ fields:
151
151
  ! Name ! Location ! Description
152
152
 
153
153
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
154
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
154
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
155
155
  h! A ! 20:19
156
156
  a! Address matching mode. One of:
157
157
 
@@ -209,7 +209,7 @@ fields:
209
209
  ! Name ! Location ! Description
210
210
 
211
211
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
212
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
212
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
213
213
  h! A ! 28:27
214
214
  a! Address matching mode. One of:
215
215
 
@@ -269,7 +269,7 @@ fields:
269
269
  ! Name ! Location ! Description
270
270
 
271
271
  h! L ! 39 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
272
- h! - ! 38:37 ! _Reserved_ Writes shall be ignored.
272
+ h! MT ! 38:37 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
273
273
  h! A ! 36:35
274
274
  a! Address matching mode. One of:
275
275
 
@@ -329,7 +329,7 @@ fields:
329
329
  ! Name ! Location ! Description
330
330
 
331
331
  h! L ! 47 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
332
- h! - ! 46:45 ! _Reserved_ Writes shall be ignored.
332
+ h! MT ! 46:45 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
333
333
  h! A ! 44:43
334
334
  a! Address matching mode. One of:
335
335
 
@@ -389,7 +389,7 @@ fields:
389
389
  ! Name ! Location ! Description
390
390
 
391
391
  h! L ! 55 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
392
- h! - ! 54:53 ! _Reserved_ Writes shall be ignored.
392
+ h! MT ! 54:53 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
393
393
  h! A ! 52:51
394
394
  a! Address matching mode. One of:
395
395
 
@@ -449,7 +449,7 @@ fields:
449
449
  ! Name ! Location ! Description
450
450
 
451
451
  h! L ! 63 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
452
- h! - ! 62:61 ! _Reserved_ Writes shall be ignored.
452
+ h! MT ! 62:61 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
453
453
  h! A ! 60:59
454
454
  a! Address matching mode. One of:
455
455
 
@@ -36,7 +36,7 @@ fields:
36
36
  ! Name ! Location ! Description
37
37
 
38
38
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
39
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
39
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
40
40
  h! A ! 4:3
41
41
  a! Address matching mode. One of:
42
42
 
@@ -94,7 +94,7 @@ fields:
94
94
  ! Name ! Location ! Description
95
95
 
96
96
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
97
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
97
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
98
98
  h! A ! 12:11
99
99
  a! Address matching mode. One of:
100
100
 
@@ -152,7 +152,7 @@ fields:
152
152
  ! Name ! Location ! Description
153
153
 
154
154
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
155
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
155
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
156
156
  h! A ! 20:19
157
157
  a! Address matching mode. One of:
158
158
 
@@ -210,7 +210,7 @@ fields:
210
210
  ! Name ! Location ! Description
211
211
 
212
212
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
213
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
213
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
214
214
  h! A ! 28:27
215
215
  a! Address matching mode. One of:
216
216
 
@@ -35,7 +35,7 @@ fields:
35
35
  ! Name ! Location ! Description
36
36
 
37
37
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
38
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
38
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
39
39
  h! A ! 4:3
40
40
  a! Address matching mode. One of:
41
41
 
@@ -93,7 +93,7 @@ fields:
93
93
  ! Name ! Location ! Description
94
94
 
95
95
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
96
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
96
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
97
97
  h! A ! 12:11
98
98
  a! Address matching mode. One of:
99
99
 
@@ -151,7 +151,7 @@ fields:
151
151
  ! Name ! Location ! Description
152
152
 
153
153
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
154
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
154
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
155
155
  h! A ! 20:19
156
156
  a! Address matching mode. One of:
157
157
 
@@ -209,7 +209,7 @@ fields:
209
209
  ! Name ! Location ! Description
210
210
 
211
211
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
212
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
212
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
213
213
  h! A ! 28:27
214
214
  a! Address matching mode. One of:
215
215
 
@@ -269,7 +269,7 @@ fields:
269
269
  ! Name ! Location ! Description
270
270
 
271
271
  h! L ! 39 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
272
- h! - ! 38:37 ! _Reserved_ Writes shall be ignored.
272
+ h! MT ! 38:37 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
273
273
  h! A ! 36:35
274
274
  a! Address matching mode. One of:
275
275
 
@@ -329,7 +329,7 @@ fields:
329
329
  ! Name ! Location ! Description
330
330
 
331
331
  h! L ! 47 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
332
- h! - ! 46:45 ! _Reserved_ Writes shall be ignored.
332
+ h! MT ! 46:45 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
333
333
  h! A ! 44:43
334
334
  a! Address matching mode. One of:
335
335
 
@@ -389,7 +389,7 @@ fields:
389
389
  ! Name ! Location ! Description
390
390
 
391
391
  h! L ! 55 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
392
- h! - ! 54:53 ! _Reserved_ Writes shall be ignored.
392
+ h! MT ! 54:53 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
393
393
  h! A ! 52:51
394
394
  a! Address matching mode. One of:
395
395
 
@@ -449,7 +449,7 @@ fields:
449
449
  ! Name ! Location ! Description
450
450
 
451
451
  h! L ! 63 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
452
- h! - ! 62:61 ! _Reserved_ Writes shall be ignored.
452
+ h! MT ! 62:61 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
453
453
  h! A ! 60:59
454
454
  a! Address matching mode. One of:
455
455
 
@@ -36,7 +36,7 @@ fields:
36
36
  ! Name ! Location ! Description
37
37
 
38
38
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
39
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
39
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
40
40
  h! A ! 4:3
41
41
  a! Address matching mode. One of:
42
42
 
@@ -94,7 +94,7 @@ fields:
94
94
  ! Name ! Location ! Description
95
95
 
96
96
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
97
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
97
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
98
98
  h! A ! 12:11
99
99
  a! Address matching mode. One of:
100
100
 
@@ -152,7 +152,7 @@ fields:
152
152
  ! Name ! Location ! Description
153
153
 
154
154
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
155
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
155
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
156
156
  h! A ! 20:19
157
157
  a! Address matching mode. One of:
158
158
 
@@ -210,7 +210,7 @@ fields:
210
210
  ! Name ! Location ! Description
211
211
 
212
212
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
213
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
213
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
214
214
  h! A ! 28:27
215
215
  a! Address matching mode. One of:
216
216
 
@@ -35,7 +35,7 @@ fields:
35
35
  ! Name ! Location ! Description
36
36
 
37
37
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
38
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
38
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
39
39
  h! A ! 4:3
40
40
  a! Address matching mode. One of:
41
41
 
@@ -93,7 +93,7 @@ fields:
93
93
  ! Name ! Location ! Description
94
94
 
95
95
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
96
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
96
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
97
97
  h! A ! 12:11
98
98
  a! Address matching mode. One of:
99
99
 
@@ -151,7 +151,7 @@ fields:
151
151
  ! Name ! Location ! Description
152
152
 
153
153
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
154
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
154
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
155
155
  h! A ! 20:19
156
156
  a! Address matching mode. One of:
157
157
 
@@ -209,7 +209,7 @@ fields:
209
209
  ! Name ! Location ! Description
210
210
 
211
211
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
212
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
212
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
213
213
  h! A ! 28:27
214
214
  a! Address matching mode. One of:
215
215
 
@@ -269,7 +269,7 @@ fields:
269
269
  ! Name ! Location ! Description
270
270
 
271
271
  h! L ! 39 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
272
- h! - ! 38:37 ! _Reserved_ Writes shall be ignored.
272
+ h! MT ! 38:37 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
273
273
  h! A ! 36:35
274
274
  a! Address matching mode. One of:
275
275
 
@@ -329,7 +329,7 @@ fields:
329
329
  ! Name ! Location ! Description
330
330
 
331
331
  h! L ! 47 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
332
- h! - ! 46:45 ! _Reserved_ Writes shall be ignored.
332
+ h! MT ! 46:45 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
333
333
  h! A ! 44:43
334
334
  a! Address matching mode. One of:
335
335
 
@@ -389,7 +389,7 @@ fields:
389
389
  ! Name ! Location ! Description
390
390
 
391
391
  h! L ! 55 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
392
- h! - ! 54:53 ! _Reserved_ Writes shall be ignored.
392
+ h! MT ! 54:53 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
393
393
  h! A ! 52:51
394
394
  a! Address matching mode. One of:
395
395
 
@@ -449,7 +449,7 @@ fields:
449
449
  ! Name ! Location ! Description
450
450
 
451
451
  h! L ! 63 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
452
- h! - ! 62:61 ! _Reserved_ Writes shall be ignored.
452
+ h! MT ! 62:61 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
453
453
  h! A ! 60:59
454
454
  a! Address matching mode. One of:
455
455