udb 0.1.9 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. checksums.yaml +4 -4
  2. data/.data/cfgs/example_rv64_with_overlay.yaml +20 -20
  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 +8 -1
  16. data/.data/cfgs/rv32-riscv-tests.yaml +6 -2
  17. data/.data/cfgs/rv32-vector.yaml +6 -2
  18. data/.data/cfgs/rv64-riscv-tests.yaml +6 -2
  19. data/.data/cfgs/rv64-vector.yaml +6 -2
  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 +290 -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 +136 -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 +134 -0
  31. data/.data/spec/schemas/config_schema.json +220 -27
  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/mmr_schema.json +3 -3
  36. data/.data/spec/schemas/profile_release_schema.json +1 -1
  37. data/.data/spec/schemas/profile_schema.json +0 -3
  38. data/.data/spec/schemas/register_file_schema.json +8 -3
  39. data/.data/spec/schemas/schema_defs.json +13 -27
  40. data/.data/spec/std/isa/csr/H/henvcfg.yaml +25 -0
  41. data/.data/spec/std/isa/csr/I/pmpaddr0.yaml +6 -4
  42. data/.data/spec/std/isa/csr/I/pmpaddr1.yaml +6 -4
  43. data/.data/spec/std/isa/csr/I/pmpaddr10.yaml +6 -4
  44. data/.data/spec/std/isa/csr/I/pmpaddr11.yaml +6 -4
  45. data/.data/spec/std/isa/csr/I/pmpaddr12.yaml +6 -4
  46. data/.data/spec/std/isa/csr/I/pmpaddr13.yaml +6 -4
  47. data/.data/spec/std/isa/csr/I/pmpaddr14.yaml +6 -4
  48. data/.data/spec/std/isa/csr/I/pmpaddr15.yaml +6 -4
  49. data/.data/spec/std/isa/csr/I/pmpaddr16.yaml +6 -4
  50. data/.data/spec/std/isa/csr/I/pmpaddr17.yaml +6 -4
  51. data/.data/spec/std/isa/csr/I/pmpaddr18.yaml +6 -4
  52. data/.data/spec/std/isa/csr/I/pmpaddr19.yaml +6 -4
  53. data/.data/spec/std/isa/csr/I/pmpaddr2.yaml +6 -4
  54. data/.data/spec/std/isa/csr/I/pmpaddr20.yaml +6 -4
  55. data/.data/spec/std/isa/csr/I/pmpaddr21.yaml +6 -4
  56. data/.data/spec/std/isa/csr/I/pmpaddr22.yaml +6 -4
  57. data/.data/spec/std/isa/csr/I/pmpaddr23.yaml +6 -4
  58. data/.data/spec/std/isa/csr/I/pmpaddr24.yaml +6 -4
  59. data/.data/spec/std/isa/csr/I/pmpaddr25.yaml +6 -4
  60. data/.data/spec/std/isa/csr/I/pmpaddr26.yaml +6 -4
  61. data/.data/spec/std/isa/csr/I/pmpaddr27.yaml +6 -4
  62. data/.data/spec/std/isa/csr/I/pmpaddr28.yaml +6 -4
  63. data/.data/spec/std/isa/csr/I/pmpaddr29.yaml +6 -4
  64. data/.data/spec/std/isa/csr/I/pmpaddr3.yaml +6 -4
  65. data/.data/spec/std/isa/csr/I/pmpaddr30.yaml +6 -4
  66. data/.data/spec/std/isa/csr/I/pmpaddr31.yaml +6 -4
  67. data/.data/spec/std/isa/csr/I/pmpaddr32.yaml +6 -4
  68. data/.data/spec/std/isa/csr/I/pmpaddr33.yaml +6 -4
  69. data/.data/spec/std/isa/csr/I/pmpaddr34.yaml +6 -4
  70. data/.data/spec/std/isa/csr/I/pmpaddr35.yaml +6 -4
  71. data/.data/spec/std/isa/csr/I/pmpaddr36.yaml +6 -4
  72. data/.data/spec/std/isa/csr/I/pmpaddr37.yaml +6 -4
  73. data/.data/spec/std/isa/csr/I/pmpaddr38.yaml +6 -4
  74. data/.data/spec/std/isa/csr/I/pmpaddr39.yaml +6 -4
  75. data/.data/spec/std/isa/csr/I/pmpaddr4.yaml +6 -4
  76. data/.data/spec/std/isa/csr/I/pmpaddr40.yaml +6 -4
  77. data/.data/spec/std/isa/csr/I/pmpaddr41.yaml +6 -4
  78. data/.data/spec/std/isa/csr/I/pmpaddr42.yaml +6 -4
  79. data/.data/spec/std/isa/csr/I/pmpaddr43.yaml +6 -4
  80. data/.data/spec/std/isa/csr/I/pmpaddr44.yaml +6 -4
  81. data/.data/spec/std/isa/csr/I/pmpaddr45.yaml +6 -4
  82. data/.data/spec/std/isa/csr/I/pmpaddr46.yaml +6 -4
  83. data/.data/spec/std/isa/csr/I/pmpaddr47.yaml +6 -4
  84. data/.data/spec/std/isa/csr/I/pmpaddr48.yaml +6 -4
  85. data/.data/spec/std/isa/csr/I/pmpaddr49.yaml +6 -4
  86. data/.data/spec/std/isa/csr/I/pmpaddr5.yaml +6 -4
  87. data/.data/spec/std/isa/csr/I/pmpaddr50.yaml +6 -4
  88. data/.data/spec/std/isa/csr/I/pmpaddr51.yaml +6 -4
  89. data/.data/spec/std/isa/csr/I/pmpaddr52.yaml +6 -4
  90. data/.data/spec/std/isa/csr/I/pmpaddr53.yaml +6 -4
  91. data/.data/spec/std/isa/csr/I/pmpaddr54.yaml +6 -4
  92. data/.data/spec/std/isa/csr/I/pmpaddr55.yaml +6 -4
  93. data/.data/spec/std/isa/csr/I/pmpaddr56.yaml +6 -4
  94. data/.data/spec/std/isa/csr/I/pmpaddr57.yaml +6 -4
  95. data/.data/spec/std/isa/csr/I/pmpaddr58.yaml +6 -4
  96. data/.data/spec/std/isa/csr/I/pmpaddr59.yaml +6 -4
  97. data/.data/spec/std/isa/csr/I/pmpaddr6.yaml +6 -4
  98. data/.data/spec/std/isa/csr/I/pmpaddr60.yaml +6 -4
  99. data/.data/spec/std/isa/csr/I/pmpaddr61.yaml +6 -4
  100. data/.data/spec/std/isa/csr/I/pmpaddr62.yaml +6 -4
  101. data/.data/spec/std/isa/csr/I/pmpaddr63.yaml +6 -4
  102. data/.data/spec/std/isa/csr/I/pmpaddr7.yaml +6 -4
  103. data/.data/spec/std/isa/csr/I/pmpaddr8.yaml +6 -4
  104. data/.data/spec/std/isa/csr/I/pmpaddr9.yaml +6 -4
  105. data/.data/spec/std/isa/csr/I/pmpaddrN.layout +6 -4
  106. data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +128 -152
  107. data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +64 -76
  108. data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +128 -152
  109. data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +64 -76
  110. data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +128 -152
  111. data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +64 -76
  112. data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +128 -152
  113. data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +64 -76
  114. data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +128 -152
  115. data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +64 -76
  116. data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +128 -152
  117. data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +64 -76
  118. data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +128 -152
  119. data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +64 -76
  120. data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +128 -152
  121. data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +64 -76
  122. data/.data/spec/std/isa/csr/I/pmpcfgN.layout +16 -19
  123. data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.layout +6 -2
  124. data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.yaml +6 -2
  125. data/.data/spec/std/isa/csr/hstatus.yaml +16 -0
  126. data/.data/spec/std/isa/csr/jvt.yaml +1 -0
  127. data/.data/spec/std/isa/csr/mcycleh.yaml +1 -1
  128. data/.data/spec/std/isa/csr/menvcfg.yaml +20 -0
  129. data/.data/spec/std/isa/csr/misa.yaml +0 -12
  130. data/.data/spec/std/isa/csr/mstatus.yaml +46 -6
  131. data/.data/spec/std/isa/csr/mstatush.yaml +17 -15
  132. data/.data/spec/std/isa/csr/senvcfg.yaml +42 -0
  133. data/.data/spec/std/isa/csr/sstatus.yaml +12 -0
  134. data/.data/spec/std/isa/csr/vsstatus.yaml +24 -0
  135. data/.data/spec/std/isa/ext/A.yaml +5 -7
  136. data/.data/spec/std/isa/ext/S.yaml +12 -0
  137. data/.data/spec/std/isa/ext/Smpmpmt.yaml +52 -0
  138. data/.data/spec/std/isa/ext/Sv32.yaml +7 -19
  139. data/.data/spec/std/isa/ext/Sv39.yaml +7 -19
  140. data/.data/spec/std/isa/ext/Sv48.yaml +4 -20
  141. data/.data/spec/std/isa/ext/Sv57.yaml +4 -20
  142. data/.data/spec/std/isa/ext/Svukte.yaml +71 -0
  143. data/.data/spec/std/isa/ext/Zawrs.yaml +1 -1
  144. data/.data/spec/std/isa/ext/Zihpm.yaml +0 -12
  145. data/.data/spec/std/isa/inst/B/andn.yaml +10 -12
  146. data/.data/spec/std/isa/inst/B/clmul.yaml +9 -11
  147. data/.data/spec/std/isa/inst/B/clmulh.yaml +9 -11
  148. data/.data/spec/std/isa/inst/B/orn.yaml +9 -11
  149. data/.data/spec/std/isa/inst/B/rev8.yaml +1 -1
  150. data/.data/spec/std/isa/inst/B/rol.yaml +9 -11
  151. data/.data/spec/std/isa/inst/B/rolw.yaml +9 -11
  152. data/.data/spec/std/isa/inst/B/ror.yaml +9 -11
  153. data/.data/spec/std/isa/inst/B/rorw.yaml +9 -11
  154. data/.data/spec/std/isa/inst/B/xnor.yaml +9 -11
  155. data/.data/spec/std/isa/inst/C/c.addi.yaml +1 -0
  156. data/.data/spec/std/isa/inst/C/c.addi16sp.yaml +1 -0
  157. data/.data/spec/std/isa/inst/C/c.addiw.yaml +1 -0
  158. data/.data/spec/std/isa/inst/C/c.andi.yaml +1 -0
  159. data/.data/spec/std/isa/inst/C/c.ldsp.yaml +4 -4
  160. data/.data/spec/std/isa/inst/C/c.li.yaml +1 -0
  161. data/.data/spec/std/isa/inst/C/c.lui.yaml +1 -0
  162. data/.data/spec/std/isa/inst/C/c.mv.yaml +1 -1
  163. data/.data/spec/std/isa/inst/C/c.sdsp.yaml +1 -1
  164. data/.data/spec/std/isa/inst/D/fsgnj.d.yaml +3 -0
  165. data/.data/spec/std/isa/inst/D/fsgnjn.d.yaml +3 -0
  166. data/.data/spec/std/isa/inst/D/fsgnjx.d.yaml +3 -0
  167. data/.data/spec/std/isa/inst/F/fadd.s.yaml +5 -5
  168. data/.data/spec/std/isa/inst/F/fclass.s.yaml +2 -2
  169. data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +1 -1
  170. data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +1 -1
  171. data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +1 -1
  172. data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +1 -1
  173. data/.data/spec/std/isa/inst/F/fcvt.s.w.yaml +1 -1
  174. data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +1 -1
  175. data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +1 -1
  176. data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +1 -1
  177. data/.data/spec/std/isa/inst/F/fdiv.s.yaml +1 -1
  178. data/.data/spec/std/isa/inst/F/feq.s.yaml +2 -2
  179. data/.data/spec/std/isa/inst/F/fle.s.yaml +2 -2
  180. data/.data/spec/std/isa/inst/F/fleq.s.yaml +2 -2
  181. data/.data/spec/std/isa/inst/F/flt.s.yaml +2 -2
  182. data/.data/spec/std/isa/inst/F/fltq.s.yaml +2 -2
  183. data/.data/spec/std/isa/inst/F/flw.yaml +2 -2
  184. data/.data/spec/std/isa/inst/F/fmadd.s.yaml +1 -1
  185. data/.data/spec/std/isa/inst/F/fmax.s.yaml +6 -6
  186. data/.data/spec/std/isa/inst/F/fmin.s.yaml +6 -6
  187. data/.data/spec/std/isa/inst/F/fmsub.s.yaml +1 -1
  188. data/.data/spec/std/isa/inst/F/fmul.s.yaml +1 -1
  189. data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +2 -2
  190. data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +1 -1
  191. data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +2 -2
  192. data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +1 -1
  193. data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +4 -4
  194. data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +3 -3
  195. data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +4 -4
  196. data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +1 -1
  197. data/.data/spec/std/isa/inst/F/fsub.s.yaml +1 -1
  198. data/.data/spec/std/isa/inst/F/fsw.yaml +1 -1
  199. data/.data/spec/std/isa/inst/I/addi.yaml +2 -1
  200. data/.data/spec/std/isa/inst/I/addiw.yaml +2 -1
  201. data/.data/spec/std/isa/inst/I/andi.yaml +2 -1
  202. data/.data/spec/std/isa/inst/I/auipc.yaml +1 -0
  203. data/.data/spec/std/isa/inst/I/beq.yaml +1 -1
  204. data/.data/spec/std/isa/inst/I/bge.yaml +4 -2
  205. data/.data/spec/std/isa/inst/I/bgeu.yaml +3 -0
  206. data/.data/spec/std/isa/inst/I/blt.yaml +4 -2
  207. data/.data/spec/std/isa/inst/I/bltu.yaml +3 -0
  208. data/.data/spec/std/isa/inst/I/bne.yaml +1 -1
  209. data/.data/spec/std/isa/inst/I/lb.yaml +1 -0
  210. data/.data/spec/std/isa/inst/I/lbu.yaml +1 -0
  211. data/.data/spec/std/isa/inst/I/ld.yaml +2 -0
  212. data/.data/spec/std/isa/inst/I/lh.yaml +1 -0
  213. data/.data/spec/std/isa/inst/I/lhu.yaml +1 -0
  214. data/.data/spec/std/isa/inst/I/lui.yaml +1 -0
  215. data/.data/spec/std/isa/inst/I/lw.yaml +1 -0
  216. data/.data/spec/std/isa/inst/I/lwu.yaml +1 -0
  217. data/.data/spec/std/isa/inst/I/ori.yaml +1 -0
  218. data/.data/spec/std/isa/inst/I/sb.yaml +1 -0
  219. data/.data/spec/std/isa/inst/I/sd.yaml +1 -0
  220. data/.data/spec/std/isa/inst/I/sh.yaml +1 -0
  221. data/.data/spec/std/isa/inst/I/slt.yaml +2 -2
  222. data/.data/spec/std/isa/inst/I/slti.yaml +1 -0
  223. data/.data/spec/std/isa/inst/I/sltiu.yaml +2 -1
  224. data/.data/spec/std/isa/inst/I/sltu.yaml +1 -1
  225. data/.data/spec/std/isa/inst/I/sub.yaml +1 -1
  226. data/.data/spec/std/isa/inst/I/subw.yaml +1 -1
  227. data/.data/spec/std/isa/inst/I/sw.yaml +1 -0
  228. data/.data/spec/std/isa/inst/I/xori.yaml +2 -1
  229. data/.data/spec/std/isa/inst/M/mul.yaml +0 -19
  230. data/.data/spec/std/isa/inst/Q/fsgnj.q.yaml +1 -1
  231. data/.data/spec/std/isa/inst/S/sret.yaml +3 -1
  232. data/.data/spec/std/isa/inst/V/vadc.vim.yaml +1 -0
  233. data/.data/spec/std/isa/inst/V/vadd.vi.yaml +1 -0
  234. data/.data/spec/std/isa/inst/V/vadd.vv.yaml +1 -5
  235. data/.data/spec/std/isa/inst/V/vand.vi.yaml +1 -0
  236. data/.data/spec/std/isa/inst/V/vfsgnjn.vv.yaml +3 -0
  237. data/.data/spec/std/isa/inst/V/vfsgnjx.vv.yaml +3 -0
  238. data/.data/spec/std/isa/inst/V/vl1re8.v.yaml +3 -0
  239. data/.data/spec/std/isa/inst/V/vl2re8.v.yaml +3 -0
  240. data/.data/spec/std/isa/inst/V/vl4re8.v.yaml +3 -0
  241. data/.data/spec/std/isa/inst/V/vl8re8.v.yaml +3 -0
  242. data/.data/spec/std/isa/inst/V/vle8.v.yaml +4 -8
  243. data/.data/spec/std/isa/inst/V/vmadc.vi.yaml +1 -0
  244. data/.data/spec/std/isa/inst/V/vmadc.vim.yaml +1 -0
  245. data/.data/spec/std/isa/inst/V/vmand.mm.yaml +3 -0
  246. data/.data/spec/std/isa/inst/V/vmerge.vim.yaml +1 -0
  247. data/.data/spec/std/isa/inst/V/vmfle.vv.yaml +3 -0
  248. data/.data/spec/std/isa/inst/V/vmflt.vv.yaml +3 -0
  249. data/.data/spec/std/isa/inst/V/vmnand.mm.yaml +3 -0
  250. data/.data/spec/std/isa/inst/V/vmseq.vi.yaml +1 -0
  251. data/.data/spec/std/isa/inst/V/vmsgt.vi.yaml +4 -0
  252. data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +4 -0
  253. data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +4 -0
  254. data/.data/spec/std/isa/inst/V/vmsle.vv.yaml +3 -0
  255. data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +4 -0
  256. data/.data/spec/std/isa/inst/V/vmsleu.vv.yaml +3 -0
  257. data/.data/spec/std/isa/inst/V/vmslt.vv.yaml +3 -0
  258. data/.data/spec/std/isa/inst/V/vmsltu.vv.yaml +3 -0
  259. data/.data/spec/std/isa/inst/V/vmsne.vi.yaml +1 -0
  260. data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +2 -13
  261. data/.data/spec/std/isa/inst/V/vmv.x.s.yaml +1 -1
  262. data/.data/spec/std/isa/inst/V/vmxnor.mm.yaml +3 -0
  263. data/.data/spec/std/isa/inst/V/vmxor.mm.yaml +3 -0
  264. data/.data/spec/std/isa/inst/V/vnsrl.wx.yaml +3 -0
  265. data/.data/spec/std/isa/inst/V/vor.vi.yaml +1 -0
  266. data/.data/spec/std/isa/inst/V/vrsub.vi.yaml +1 -0
  267. data/.data/spec/std/isa/inst/V/vrsub.vx.yaml +3 -0
  268. data/.data/spec/std/isa/inst/V/vsadd.vi.yaml +1 -0
  269. data/.data/spec/std/isa/inst/V/vsaddu.vi.yaml +1 -0
  270. data/.data/spec/std/isa/inst/V/vse8.v.yaml +4 -4
  271. data/.data/spec/std/isa/inst/V/vwadd.vx.yaml +3 -0
  272. data/.data/spec/std/isa/inst/V/vwaddu.vx.yaml +3 -0
  273. data/.data/spec/std/isa/inst/V/vxor.vi.yaml +4 -0
  274. data/.data/spec/std/isa/inst/Zalasr/lSIZE.AQRL.layout +40 -5
  275. data/.data/spec/std/isa/inst/Zalasr/lb.aq.yaml +17 -1
  276. data/.data/spec/std/isa/inst/Zalasr/lb.aqrl.yaml +17 -1
  277. data/.data/spec/std/isa/inst/Zalasr/ld.aq.yaml +17 -1
  278. data/.data/spec/std/isa/inst/Zalasr/ld.aqrl.yaml +17 -1
  279. data/.data/spec/std/isa/inst/Zalasr/lh.aq.yaml +17 -1
  280. data/.data/spec/std/isa/inst/Zalasr/lh.aqrl.yaml +17 -1
  281. data/.data/spec/std/isa/inst/Zalasr/lw.aq.yaml +17 -1
  282. data/.data/spec/std/isa/inst/Zalasr/lw.aqrl.yaml +17 -1
  283. data/.data/spec/std/isa/inst/Zalasr/sSIZE.AQRL.layout +46 -5
  284. data/.data/spec/std/isa/inst/Zalasr/sb.aqrl.yaml +16 -1
  285. data/.data/spec/std/isa/inst/Zalasr/sb.rl.yaml +16 -1
  286. data/.data/spec/std/isa/inst/Zalasr/sd.aqrl.yaml +16 -1
  287. data/.data/spec/std/isa/inst/Zalasr/sd.rl.yaml +16 -1
  288. data/.data/spec/std/isa/inst/Zalasr/sh.aqrl.yaml +16 -1
  289. data/.data/spec/std/isa/inst/Zalasr/sh.rl.yaml +16 -1
  290. data/.data/spec/std/isa/inst/Zalasr/sw.aqrl.yaml +16 -1
  291. data/.data/spec/std/isa/inst/Zalasr/sw.rl.yaml +16 -1
  292. data/.data/spec/std/isa/inst/Zawrs/wrs.nto.yaml +4 -2
  293. data/.data/spec/std/isa/inst/Zba/add.uw.yaml +9 -11
  294. data/.data/spec/std/isa/inst/Zbb/orc.b.yaml +1 -1
  295. data/.data/spec/std/isa/inst/Zbkb/brev8.yaml +3 -3
  296. data/.data/spec/std/isa/inst/Zbkb/packw.yaml +1 -1
  297. data/.data/spec/std/isa/inst/Zbkb/unzip.yaml +2 -2
  298. data/.data/spec/std/isa/inst/Zbkb/zip.yaml +2 -2
  299. data/.data/spec/std/isa/inst/Zbkx/xperm4.yaml +2 -2
  300. data/.data/spec/std/isa/inst/Zbkx/xperm8.yaml +2 -2
  301. data/.data/spec/std/isa/inst/Zcd/c.fld.yaml +1 -1
  302. data/.data/spec/std/isa/inst/Zcd/c.fldsp.yaml +1 -1
  303. data/.data/spec/std/isa/inst/Zcd/c.fsdsp.yaml +1 -1
  304. data/.data/spec/std/isa/inst/Zcf/c.flwsp.yaml +1 -1
  305. data/.data/spec/std/isa/inst/Zcf/c.fswsp.yaml +1 -1
  306. data/.data/spec/std/isa/inst/Zcmp/cm.pop.yaml +1 -1
  307. data/.data/spec/std/isa/inst/Zcmp/cm.popret.yaml +1 -1
  308. data/.data/spec/std/isa/inst/Zcmp/cm.popretz.yaml +1 -1
  309. data/.data/spec/std/isa/inst/Zcmp/cm.push.yaml +2 -3
  310. data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +1 -1
  311. data/.data/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +6 -6
  312. data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +5 -5
  313. data/.data/spec/std/isa/inst/Zfh/flh.yaml +1 -1
  314. data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +1 -1
  315. data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +1 -1
  316. data/.data/spec/std/isa/inst/Zfh/fsh.yaml +1 -1
  317. data/.data/spec/std/isa/inst/Zicbop/prefetch.i.yaml +2 -0
  318. data/.data/spec/std/isa/inst/Zicbop/prefetch.r.yaml +2 -0
  319. data/.data/spec/std/isa/inst/Zicbop/prefetch.w.yaml +2 -0
  320. data/.data/spec/std/isa/inst/Zicsr/csrrc.yaml +1 -1
  321. data/.data/spec/std/isa/inst/Zicsr/csrrci.yaml +1 -1
  322. data/.data/spec/std/isa/inst/Zicsr/csrrs.yaml +2 -2
  323. data/.data/spec/std/isa/inst/Zicsr/csrrsi.yaml +1 -1
  324. data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +1 -1
  325. data/.data/spec/std/isa/inst/Zicsr/csrrwi.yaml +1 -1
  326. data/.data/spec/std/isa/inst/Zks/sm3p0.yaml +1 -1
  327. data/.data/spec/std/isa/inst/Zks/sm3p1.yaml +1 -1
  328. data/.data/spec/std/isa/inst/Zks/sm4ed.yaml +1 -1
  329. data/.data/spec/std/isa/inst/Zks/sm4ks.yaml +1 -1
  330. data/.data/spec/std/isa/isa/builtin_functions.idl +18 -0
  331. data/.data/spec/std/isa/isa/fp.idl +1 -5
  332. data/.data/spec/std/isa/isa/globals.isa +72 -21
  333. data/.data/spec/std/isa/isa/interrupts.idl +1 -0
  334. data/.data/spec/std/isa/isa/vec.idl +1 -2
  335. data/.data/spec/std/isa/manual_version/isa/20240411/isa_20240411.yaml +5 -5
  336. data/.data/spec/std/isa/param/COUNTINHIBIT_EN.yaml +8 -2
  337. data/.data/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml +1 -0
  338. data/.data/spec/std/isa/param/JVT_BASE_MASK.yaml +1 -1
  339. data/.data/spec/std/isa/param/MCOUNTINHIBIT_IMPLEMENTED.yaml +25 -0
  340. data/.data/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml +1 -0
  341. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml +1 -0
  342. data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml +1 -0
  343. data/.data/spec/std/isa/param/MTVEC_MODES.yaml +10 -3
  344. data/.data/spec/std/isa/param/NUM_PMP_ENTRIES.yaml +11 -22
  345. data/.data/spec/std/isa/param/NUM_USABLE_PMP_ENTRIES.yaml +35 -0
  346. data/.data/spec/std/isa/param/PMP_NA4_SUPPORTED.yaml +23 -0
  347. data/.data/spec/std/isa/param/PMP_NAPOT_SUPPORTED.yaml +19 -0
  348. data/.data/spec/std/isa/param/{MSTATUS_TVM_IMPLEMENTED.yaml → PMP_TOR_SUPPORTED.yaml} +6 -6
  349. data/.data/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml +1 -0
  350. data/.data/spec/std/isa/param/TRAP_ON_EBREAK.yaml +1 -0
  351. data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml +1 -0
  352. data/.data/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml +1 -0
  353. data/.data/spec/std/isa/param/VLEN.yaml +2 -0
  354. data/.data/spec/std/isa/param/ZAWRS_NTO_IS_NOP.yaml +19 -0
  355. data/.data/spec/std/isa/profile/RVA20S64.yaml +11 -4
  356. data/.data/spec/std/isa/profile/RVA20U64.yaml +14 -5
  357. data/.data/spec/std/isa/profile/RVA22S64.yaml +14 -3
  358. data/.data/spec/std/isa/profile/RVA22U64.yaml +8 -1
  359. data/.data/spec/std/isa/profile/RVA23S64.yaml +13 -0
  360. data/.data/spec/std/isa/profile/RVA23U64.yaml +15 -1
  361. data/.data/spec/std/isa/profile/RVB23S64.yaml +15 -3
  362. data/.data/spec/std/isa/profile/RVB23U64.yaml +8 -1
  363. data/.data/spec/std/isa/profile/RVI20U32.yaml +8 -1
  364. data/.data/spec/std/isa/profile/RVI20U64.yaml +7 -0
  365. data/.data/spec/std/isa/register_file/F.yaml +3 -2
  366. data/.data/spec/std/isa/register_file/V.yaml +2 -2
  367. data/.data/spec/std/isa/register_file/X.yaml +2 -1
  368. data/lib/udb/ESPRESSO_VERSION +1 -1
  369. data/lib/udb/architecture.rb +4 -25
  370. data/lib/udb/cfg_arch.rb +171 -59
  371. data/lib/udb/cli.rb +10 -1
  372. data/lib/udb/condition.rb +38 -37
  373. data/lib/udb/config.rb +86 -8
  374. data/lib/udb/doc_link.rb +3 -4
  375. data/lib/udb/logic.rb +29 -56
  376. data/lib/udb/obj/csr.rb +23 -5
  377. data/lib/udb/obj/csr_field.rb +36 -21
  378. data/lib/udb/obj/database_obj.rb +2 -5
  379. data/lib/udb/obj/extension.rb +0 -3
  380. data/lib/udb/obj/instruction.rb +2 -5
  381. data/lib/udb/obj/non_isa_specification.rb +22 -100
  382. data/lib/udb/obj/portfolio.rb +75 -20
  383. data/lib/udb/obj/profile.rb +0 -4
  384. data/lib/udb/obj/register_file.rb +63 -2
  385. data/lib/udb/portfolio_design.rb +3 -6
  386. data/lib/udb/resolver.rb +84 -23
  387. data/lib/udb/version.rb +1 -1
  388. data/lib/udb/version_spec.rb +8 -0
  389. data/lib/udb/z3.rb +25 -2
  390. data/lib/udb.rb +0 -3
  391. metadata +30 -38
  392. data/.data/cfgs/profile/RVA23M64.yaml +0 -159
  393. data/.data/cfgs/profile/RVB23M64.yaml +0 -149
  394. data/.data/spec/schemas/proc_cert_class_schema.json +0 -35
  395. data/.data/spec/schemas/proc_cert_model_schema.json +0 -336
  396. data/.data/spec/std/isa/proc_cert_class/AC.yaml +0 -13
  397. data/.data/spec/std/isa/proc_cert_class/MC.yaml +0 -13
  398. data/.data/spec/std/isa/proc_cert_class/RVI.yaml +0 -16
  399. data/.data/spec/std/isa/proc_cert_model/AC100.yaml +0 -72
  400. data/.data/spec/std/isa/proc_cert_model/AC200.yaml +0 -58
  401. data/.data/spec/std/isa/proc_cert_model/MC100-32.yaml +0 -155
  402. data/.data/spec/std/isa/proc_cert_model/MC100-64.yaml +0 -21
  403. data/.data/spec/std/isa/proc_cert_model/MC200-32.yaml +0 -60
  404. data/.data/spec/std/isa/proc_cert_model/MC200-64.yaml +0 -21
  405. data/.data/spec/std/isa/proc_cert_model/MC300-32.yaml +0 -40
  406. data/.data/spec/std/isa/proc_cert_model/MC300-64.yaml +0 -21
  407. data/.data/spec/std/isa/proc_cert_model/RVI20-32.yaml +0 -39
  408. data/.data/spec/std/isa/proc_cert_model/RVI20-64.yaml +0 -19
  409. data/.data/spec/std/isa/profile/RVA23M64.yaml +0 -24
  410. data/.data/spec/std/isa/profile/RVB23M64.yaml +0 -86
  411. data/lib/udb/cert_normative_rule.rb +0 -41
  412. data/lib/udb/obj/certifiable_obj.rb +0 -21
  413. data/lib/udb/obj/certificate.rb +0 -230
  414. data/lib/udb/proc_cert_design.rb +0 -77
@@ -73,5 +73,7 @@ operation(): |
73
73
  }
74
74
  }
75
75
 
76
- # stall while the reservation set is valid and no interrupt is pending
77
- wrs_nto();
76
+ if (!ZAWRS_NTO_IS_NOP) {
77
+ # stall while the reservation set is valid and no interrupt is pending
78
+ wrs_nto();
79
+ }
@@ -16,17 +16,15 @@ definedBy:
16
16
  - extension:
17
17
  name: Zba
18
18
  assembly: xd, xs1, xs2
19
- format:
20
- $inherits:
21
- - inst_subtype/R/R-x.yaml#/data
22
- opcodes:
23
- funct7:
24
- display_name: ADD.UW
25
- value: 0b0000100
26
- funct3:
27
- display_name: ADD.UW
28
- value: 0b000
29
- opcode: { $inherits: inst_opcode/OP-32.yaml#/data }
19
+ encoding:
20
+ match: 0000100----------000-----0111011
21
+ variables:
22
+ - name: xs2
23
+ location: 24-20
24
+ - name: xs1
25
+ location: 19-15
26
+ - name: xd
27
+ location: 11-7
30
28
  access:
31
29
  s: always
32
30
  u: always
@@ -35,7 +35,7 @@ operation(): |
35
35
  XReg input = X[xs1];
36
36
  XReg output = 0;
37
37
 
38
- for (U32 i=0; i<(xlen() - 8); i = i+8) {
38
+ for (U32 i=0; i < xlen(); i = i+8) {
39
39
  output[(i+7):i] = (input[(i+7):i] == 0) ? 8'd0 : ~8'd0;
40
40
  }
41
41
 
@@ -25,14 +25,14 @@ access:
25
25
  u: always
26
26
  vs: always
27
27
  vu: always
28
- data_independent_timing: false
28
+ data_independent_timing: true
29
29
  operation(): |
30
30
  XReg input = X[xs1];
31
31
  XReg output = 0;
32
32
 
33
- for(U32 i=0; i<(xlen()-8); i = i+8) {
33
+ for(U32 i=0; i < xlen(); i = i+8) {
34
34
  for(U32 j=0; j<8; j = j+1) {
35
- output[(i*8)+(7-j)] = input[(i*8)+j];
35
+ output[i+(7-j)] = input[i+j];
36
36
  }
37
37
  }
38
38
 
@@ -32,5 +32,5 @@ access:
32
32
  data_independent_timing: true
33
33
  pseudoinstructions:
34
34
  - when: (xs2 == 0x0)
35
- to: zext.h xd,xs1
35
+ to: zext.h xd, xs1
36
36
  operation(): |
@@ -29,12 +29,12 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
- data_independent_timing: false
32
+ data_independent_timing: true
33
33
  operation(): |
34
34
  XReg input = X[xs1];
35
35
  XReg output = 0;
36
36
 
37
- for(U32 i=0; i<(xlen()/2-1); i = i+1) {
37
+ for(U32 i=0; i < (xlen()/2); i = i+1) {
38
38
  output[i] = input[2*i];
39
39
  output[i+xlen()/2] = input[2*i+1];
40
40
  }
@@ -29,12 +29,12 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
- data_independent_timing: false
32
+ data_independent_timing: true
33
33
  operation(): |
34
34
  XReg input = X[xs1];
35
35
  XReg output = 0;
36
36
 
37
- for(U32 i=0; i<(xlen()/2-1); i = i+1){
37
+ for(U32 i=0; i < (xlen()/2); i = i+1){
38
38
  output[2*i] = input[i];
39
39
  output[2*i+1] = input[i+xlen()/2];
40
40
  }
@@ -29,13 +29,13 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
- data_independent_timing: false
32
+ data_independent_timing: true
33
33
  operation(): |
34
34
  XReg input1 = X[xs1];
35
35
  XReg input2 = X[xs2];
36
36
  XReg output = 0;
37
37
 
38
- for(U32 i=0; i<(xlen()-4); i = i+4) {
38
+ for(U32 i=0; i < xlen(); i = i+4) {
39
39
  XReg index = input2[i+3:i];
40
40
  if(4*index < xlen()) {
41
41
  output[i+3:i] = input1[4*index+3:4*index];
@@ -29,13 +29,13 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
- data_independent_timing: false
32
+ data_independent_timing: true
33
33
  operation(): |
34
34
  XReg input1 = X[xs1];
35
35
  XReg input2 = X[xs2];
36
36
  XReg output = 0;
37
37
 
38
- for(U32 i=0; i<(xlen()-8); i = i+8) {
38
+ for(U32 i=0; i < xlen(); i = i+8) {
39
39
  XReg index = input2[i+7:i];
40
40
  if(8*index < xlen()) {
41
41
  output[i+7:i] = input1[8*index+7:8*index];
@@ -38,4 +38,4 @@ operation(): |
38
38
 
39
39
  XReg virtual_address = X[creg2reg(xs1)] + imm;
40
40
 
41
- f[fd] = sext(read_memory(64, virtual_address, $encoding), 64);
41
+ F[fd] = sext(read_memory(64, virtual_address, $encoding), 64);
@@ -39,4 +39,4 @@ operation(): |
39
39
 
40
40
  XReg virtual_address = X[2] + imm;
41
41
 
42
- f[fd] = read_memory(64, virtual_address, $encoding);
42
+ F[fd] = read_memory(64, virtual_address, $encoding);
@@ -39,4 +39,4 @@ operation(): |
39
39
 
40
40
  XReg virtual_address = X[2] + imm;
41
41
 
42
- write_memory(64, virtual_address, f[fs2][63:0], $encoding);
42
+ write_memory(64, virtual_address, F[fs2][63:0], $encoding);
@@ -39,4 +39,4 @@ operation(): |
39
39
 
40
40
  XReg virtual_address = X[2] + imm;
41
41
 
42
- f[fd] = read_memory(32, virtual_address, $encoding);
42
+ F[fd] = read_memory(32, virtual_address, $encoding);
@@ -39,4 +39,4 @@ operation(): |
39
39
 
40
40
  XReg virtual_address = X[2] + imm;
41
41
 
42
- write_memory(32, virtual_address, f[fs2][31:0], $encoding);
42
+ write_memory(32, virtual_address, F[fs2][31:0], $encoding);
@@ -20,7 +20,7 @@ description: |
20
20
  definedBy:
21
21
  extension:
22
22
  name: Zcmp
23
- assembly: reg_list, stack_adj
23
+ assembly: "{reg_list}, stack_adj"
24
24
  encoding:
25
25
  match: 10111010------10
26
26
  variables:
@@ -20,7 +20,7 @@ description: |
20
20
  definedBy:
21
21
  extension:
22
22
  name: Zcmp
23
- assembly: reg_list, stack_adj
23
+ assembly: "{reg_list}, stack_adj"
24
24
  encoding:
25
25
  match: 10111110------10
26
26
  variables:
@@ -20,7 +20,7 @@ description: |
20
20
  definedBy:
21
21
  extension:
22
22
  name: Zcmp
23
- assembly: reg_list, stack_adj
23
+ assembly: "{reg_list}, stack_adj"
24
24
  encoding:
25
25
  match: 10111100------10
26
26
  variables:
@@ -21,7 +21,7 @@ description: |
21
21
  definedBy:
22
22
  extension:
23
23
  name: Zcmp
24
- assembly: reg_list, -stack_adj
24
+ assembly: "{reg_list}, -stack_adj"
25
25
  encoding:
26
26
  match: 10111000------10
27
27
  variables:
@@ -30,7 +30,6 @@ encoding:
30
30
  not: [0, 1, 2, 3]
31
31
  - name: spimm
32
32
  location: 3-2
33
- left_shift: 4
34
33
  access:
35
34
  s: always
36
35
  u: always
@@ -45,7 +44,7 @@ operation(): |
45
44
  XReg nreg = (rlist == 15) ? 13 : (rlist - 3);
46
45
  XReg stack_aligned_adj = (nreg * 4 + 15) & ~0xF;
47
46
  XReg virtual_address_sp = X[2];
48
- XReg virtual_address_new_sp = virtual_address_sp - stack_aligned_adj - spimm;
47
+ XReg virtual_address_new_sp = virtual_address_sp - stack_aligned_adj - spimm * 16;
49
48
  XReg virtual_address_base = virtual_address_sp - (nreg * size);
50
49
 
51
50
  write_memory_xlen_aligned(virtual_address_base + 0*size, X[ 1], $encoding);
@@ -37,5 +37,5 @@ data_independent_timing: true
37
37
  operation(): |
38
38
  check_f_ok($encoding);
39
39
  RoundingMode rounding_mode = rm_to_mode(rm, $encoding);
40
- f[fd] = round_f32_to_integral(f[fs1], rounding_mode);
40
+ F[fd] = round_f32_to_integral(F[fs1], rounding_mode);
41
41
  mark_f_state_dirty();
@@ -39,7 +39,7 @@ access:
39
39
  operation(): |
40
40
  check_f_ok($encoding);
41
41
 
42
- Bits<16> hp_value = f[fs1][15:0];
42
+ Bits<16> hp_value = F[fs1][15:0];
43
43
 
44
44
  Bits<1> sign = hp_value[15];
45
45
  Bits<5> exp = hp_value[14:10];
@@ -50,22 +50,22 @@ operation(): |
50
50
  if ((hp_value & 0x0200) != 0) {
51
51
  set_fp_flag(FpFlag::NV);
52
52
  }
53
- f[fd] = HP_CANONICAL_NAN;
53
+ F[fd] = HP_CANONICAL_NAN;
54
54
  } else {
55
- f[fd] = packToF32UI(sign, 0xFF, 0);
55
+ F[fd] = packToF32UI(sign, 0xFF, 0);
56
56
  }
57
57
  } else {
58
58
  if (exp != 0) {
59
59
  if (frac != 0) {
60
- f[fd] = packToF32UI(sign, 0, 0);
60
+ F[fd] = packToF32UI(sign, 0, 0);
61
61
  } else {
62
62
  Bits<6> norm_exp;
63
63
  (norm_exp, frac) = softfloat_normSubnormalF16Sig( frac );
64
64
  exp = norm_exp - 1;
65
- f[fd] = packToF32UI(sign, exp + 0x70, frac << 13);
65
+ F[fd] = packToF32UI(sign, exp + 0x70, frac << 13);
66
66
  }
67
67
  } else {
68
- f[fd] = packToF32UI(sign, exp + 0x70, frac << 13);
68
+ F[fd] = packToF32UI(sign, exp + 0x70, frac << 13);
69
69
  }
70
70
  }
71
71
 
@@ -36,7 +36,7 @@ access:
36
36
  operation(): |
37
37
  check_f_ok($encoding);
38
38
 
39
- Bits<32> sp_value = f[fs1][31:0];
39
+ Bits<32> sp_value = F[fs1][31:0];
40
40
 
41
41
  Bits<1> sign = sp_value[31];
42
42
  Bits<8> exp = sp_value[30:23];
@@ -47,9 +47,9 @@ operation(): |
47
47
  if ((sp_value & 0x00400000) != 0) {
48
48
  set_fp_flag(FpFlag::NV);
49
49
  }
50
- f[fd] = nan_box(16, FLEN, HP_CANONICAL_NAN);
50
+ F[fd] = nan_box(16, FLEN, HP_CANONICAL_NAN);
51
51
  } else {
52
- f[fd] = nan_box(16, FLEN, packToF16UI( sign, 0x1F, 0 ));
52
+ F[fd] = nan_box(16, FLEN, packToF16UI( sign, 0x1F, 0 ));
53
53
  }
54
54
  } else {
55
55
 
@@ -58,10 +58,10 @@ operation(): |
58
58
  # is OR-red with the sticky
59
59
  Bits<16> frac16 = (frac >> 9) | ((frac & 0x1ff) != 0 ? 1 : 0);
60
60
  if ((exp | frac16) == 0) {
61
- f[fd] = nan_box(16, FLEN, packToF16UI( sign, 0, 0 ));
61
+ F[fd] = nan_box(16, FLEN, packToF16UI( sign, 0, 0 ));
62
62
  } else {
63
63
  assert(false, "TODO: implement roundPackToF16");
64
- # f[fd] = soffloat_roundPackToF16(sign, exp - 0x71, frac16 | 0x4000);
64
+ # F[fd] = soffloat_roundPackToF16(sign, exp - 0x71, frac16 | 0x4000);
65
65
  }
66
66
 
67
67
  }
@@ -39,6 +39,6 @@ operation(): |
39
39
 
40
40
  Bits<16> hp_value = read_memory(16, virtual_address, $encoding);
41
41
 
42
- f[fd] = nan_box(16, FLEN, hp_value);
42
+ F[fd] = nan_box(16, FLEN, hp_value);
43
43
 
44
44
  mark_f_state_dirty();
@@ -33,6 +33,6 @@ operation(): |
33
33
 
34
34
  Bits<16> hp_value = X[xs1][15:0];
35
35
 
36
- f[fd] = nan_box(16, FLEN, hp_value);
36
+ F[fd] = nan_box(16, FLEN, hp_value);
37
37
 
38
38
  mark_f_state_dirty();
@@ -35,4 +35,4 @@ access:
35
35
  operation(): |
36
36
  check_f_ok($encoding);
37
37
 
38
- X[xd] = sext(f[fs1][15:0], 16);
38
+ X[xd] = sext(F[fs1][15:0], 16);
@@ -40,6 +40,6 @@ operation(): |
40
40
 
41
41
  XReg virtual_address = X[xs1] + $signed(imm);
42
42
 
43
- Bits<16> hp_value = f[fs2][15:0];
43
+ Bits<16> hp_value = F[fs2][15:0];
44
44
 
45
45
  write_memory(16, virtual_address, hp_value, $encoding);
@@ -21,6 +21,8 @@ encoding:
21
21
  variables:
22
22
  - name: imm
23
23
  location: 31-25
24
+ left_shift: 5
25
+ sign_extend: true
24
26
  - name: xs1
25
27
  location: 19-15
26
28
  access:
@@ -21,6 +21,8 @@ encoding:
21
21
  variables:
22
22
  - name: imm
23
23
  location: 31-25
24
+ left_shift: 5
25
+ sign_extend: true
24
26
  - name: xs1
25
27
  location: 19-15
26
28
  access:
@@ -21,6 +21,8 @@ encoding:
21
21
  variables:
22
22
  - name: imm
23
23
  location: 31-25
24
+ left_shift: 5
25
+ sign_extend: true
24
26
  - name: xs1
25
27
  location: 19-15
26
28
  access:
@@ -41,7 +41,7 @@ access:
41
41
  data_independent_timing: false
42
42
  pseudoinstructions:
43
43
  - when: xd == 0
44
- to: csrc csr,xs1
44
+ to: csrc csr, xs1
45
45
  operation(): |
46
46
  Csr csr_handle = direct_csr_lookup(csr);
47
47
 
@@ -35,7 +35,7 @@ access:
35
35
  data_independent_timing: false
36
36
  pseudoinstructions:
37
37
  - when: xd == 0
38
- to: csrci csr,imm
38
+ to: csrci csr, imm
39
39
  operation(): |
40
40
  Boolean will_write = imm != 0;
41
41
 
@@ -54,9 +54,9 @@ pseudoinstructions:
54
54
  - when: xs1 == 0 && csr == 0xC82
55
55
  to: rdinstreth xd
56
56
  - when: xs1 == 0
57
- to: csrr xd,csr
57
+ to: csrr xd, csr
58
58
  - when: xd == 0
59
- to: csrs csr,xs1
59
+ to: csrs csr, xs1
60
60
  operation(): |
61
61
  Boolean will_write = xs1 != 0;
62
62
 
@@ -35,7 +35,7 @@ access:
35
35
  data_independent_timing: false
36
36
  pseudoinstructions:
37
37
  - when: xd == 0
38
- to: csrsi csr,imm
38
+ to: csrsi csr, imm
39
39
  operation(): |
40
40
  Boolean will_write = imm != 0;
41
41
 
@@ -35,7 +35,7 @@ access:
35
35
  vu: always
36
36
  pseudoinstructions:
37
37
  - when: xd == 0
38
- to: csrw csr,xs1
38
+ to: csrw csr, xs1
39
39
  operation(): |
40
40
  Csr csr_handle = direct_csr_lookup(csr);
41
41
 
@@ -35,7 +35,7 @@ access:
35
35
  vu: always
36
36
  pseudoinstructions:
37
37
  - when: xd == 0
38
- to: csrwi csr,imm
38
+ to: csrwi csr, imm
39
39
  operation(): |
40
40
  Csr csr_handle = direct_csr_lookup(csr);
41
41
 
@@ -25,5 +25,5 @@ access:
25
25
  u: always
26
26
  vs: always
27
27
  vu: always
28
- data_independent_timing: false
28
+ data_independent_timing: true
29
29
  operation(): |
@@ -25,5 +25,5 @@ access:
25
25
  u: always
26
26
  vs: always
27
27
  vu: always
28
- data_independent_timing: false
28
+ data_independent_timing: true
29
29
  operation(): |
@@ -29,5 +29,5 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
- data_independent_timing: false
32
+ data_independent_timing: true
33
33
  operation(): |
@@ -29,5 +29,5 @@ access:
29
29
  u: always
30
30
  vs: always
31
31
  vu: always
32
- data_independent_timing: false
32
+ data_independent_timing: true
33
33
  operation(): |
@@ -280,6 +280,23 @@ builtin function ebreak {
280
280
  }
281
281
  }
282
282
 
283
+ builtin function execute_instruction {
284
+ arguments
285
+ Bits<32> encoding
286
+ description {
287
+ Fetch and execute the instruction with the given 32-bit encoding in the current hart
288
+ context. The instruction executes as if it were a normal instruction, with the
289
+ following differences:
290
+
291
+ * The PC is not advanced after execution (the calling instruction is responsible
292
+ for PC management).
293
+ * If the instruction raises an exception, the exception propagates normally.
294
+
295
+ This builtin is intended for use by instructions that dynamically dispatch
296
+ sub-instructions fetched from memory (e.g., instruction lookup table instructions).
297
+ }
298
+ }
299
+
283
300
  builtin function prefetch_instruction {
284
301
  arguments
285
302
  XReg virtual_address # virtual cache block address
@@ -422,6 +439,7 @@ function read_physical_memory {
422
439
  return read_physical_memory_64(paddr);
423
440
  } else {
424
441
  assert(false, "Invalid len");
442
+ return 0;
425
443
  }
426
444
  }
427
445
  }
@@ -9,11 +9,7 @@
9
9
  # Files in berkely-softfloat-3 repository are licensed under BSD-3-clause.
10
10
 
11
11
  # floating point register file
12
- U32 FLEN = 64; # implemented?(ExtensionName::D) ? 7'd64 : 7'd32;
13
- Bits<FLEN> f[32] = [0, 0, 0, 0, 0, 0, 0, 0,
14
- 0, 0, 0, 0, 0, 0, 0, 0,
15
- 0, 0, 0, 0, 0, 0, 0, 0,
16
- 0, 0, 0, 0, 0, 0, 0, 0];
12
+ U32 FLEN = implemented?(ExtensionName::Q) ? 8'd128 : (implemented?(ExtensionName::D) ? 7'd64 : 7'd32);
17
13
 
18
14
  # FP constants
19
15
  Bits<32> SP_POS_INF = 32'b0_11111111_00000000000000000000000;