CDL Modules
riscv_internal_types.h
Go to the documentation of this file.
1 
19 /*a Includes
20  */
21 include "riscv.h"
22 
23 /*a Constants
24  */
25 
26 /*v RISC-V 32-bit instruction decoding - see fig 2.3 RISC-V specification v2.1
27  *
28  * Constants for the RISC-V 32-bit instruction decoding
29  */
30 constant integer riscv_i32_ones = 0 "Two bits of 1 for 32-bit encoded instructions";
31 constant integer riscv_i32_opc = 2 "Five bit field of opcode, for all types";
32 constant integer riscv_i32_rd = 7 "Five bit field of destination register for r/i/u/uj, imm for s/sb type";
33 constant integer riscv_i32_f3 = 12 "Three bit function field for r/i/s/sb, imm for u/uj type";
34 constant integer riscv_i32_rs1 = 15 "Five bit source register 1 field for r/i/s/sb, imm for u/uj type";
35 constant integer riscv_i32_rs2 = 20 "Five bit source register 2 field for r/s/sb, imm for i/u/uj type";
36 constant integer riscv_i32_f7 = 25 "Seven bit function field for r, imm for i/s/sb/u/uj type";
37 constant integer riscv_i32_f12 = 20 "Twelve bit function/immediage field for i type";
38 
39 /*a RISC-V ABI register names */
40 typedef enum[5] {
44 } t_riscv_abi;
45 
46 /*a RISC-V instruction decode types */
47 /*t t_riscv_opc (I32) enumeration - from inst[5;2] - see table 19.1 in RISC-V spec v2.2
48  */
49 typedef enum[5] {
50  riscv_opc_load = 0, // rv32i (lb, lh, lw, lbu, lhu); rv64i (lwu, ld)
51  riscv_opc_load_fp = 1, // rv32f (flw)
53  riscv_opc_misc_mem = 3, // rv32i (fence, fence.i)
54  riscv_opc_op_imm = 4, // rv32i (addi, slti, sltiu, xori, ori, andi); rv64i (slli, srli, srai)
55  riscv_opc_auipc = 5, // rv32i (auipc)
56  riscv_opc_op_imm32 = 6, // rv64i (addiw, slliw, srliw, sraiw)
57  riscv_opc_store = 8, // rv32i (sb, sh, sw); rv64i (sd)
58  riscv_opc_store_fp = 9, // rv32f (fsw)
60  riscv_opc_amo = 11, // rv32a (lr.w, sc.w, amoswap.w, amoadd.w, amoxor.w, amoand.w, amoor.w, amomin.w, amomax.w, amomaxu.w) (+rv64a)
61  riscv_opc_op = 12, // rv32i (add, sub, sll, slt, sltu, xor, srl, sra, or, and); rv32m (mul, mulh, mulhsu, mulhu, div, divu, rem, remu)
62  riscv_opc_lui = 13, // rv32i
63  riscv_opc_op32 = 14, // rv64i (addw, subw, sllw, srlw, sraw)
64  riscv_opc_madd = 16, // rv32f (fmadd.s)
65  riscv_opc_msub = 17, // rv32f (fmsub.s)
66  riscv_opc_nmsub = 18, // rv32f (fnmsub.s)
67  riscv_opc_nmadd = 19, // rv32f (fnmadd.s)
68  riscv_opc_op_fp = 20, // rv32f (fadd.s, fsub.s, fmul.s, fdiv.s, fsqrt.s, fsgnj.s, fsgnjn.s, fsgnjx.s, fmin.s, ... fmv.s.x)
71  riscv_opc_branch = 24, // rv32i (beq, bne, blt, bge, bltu, bgeu)
72  riscv_opc_jalr = 25, // rv32i (jalr)
74  riscv_opc_jal = 27, // rv32i (jal)
75  riscv_opc_system = 28, // rv32i (ecall, ebreak, csrrw, csrrs, csrrc, csrrwi, csrrsi, csrrci)
79 
80 /*t t_riscv_opcc (I32C) enumeration
81  */
82 typedef enum[3] {
98 
100 
101 /*t t_riscv_f12- see RISC-V spec 2.1 table 9.2
102  */
103 typedef enum[12] {
104  riscv_f12_ecall = 12h0, // originally scall
105  riscv_f12_ebreak = 12h1, // originally sbreak
106 
107  riscv_f12_mret = 12h302, // from RISC-V privileged spec
108  riscv_f12_mwfi = 12h105, // from RISC-V privileged spec
109 
111 
112 /*t t_riscv_f3_alu
113  */
114 typedef enum[3] {
115  riscv_f3_addsub = 0, // sub has f7[5] set, add has it clear
120  riscv_f3_srlsra = 5, // sra has f7[5] set, srl has it clear
124 
125 /*t t_riscv_f3_muldiv
126  */
127 typedef enum[3] {
137 
138 /*t t_riscv_f3_branch
139  */
140 typedef enum[3] {
148 
149 /*t t_riscv_f3_load
150  */
151 typedef enum[3] {
158 
159 /*t t_riscv_f3_store
160  */
161 typedef enum[3] {
166 
167 /*t t_riscv_f3_misc_mem
168  */
169 typedef enum[3] {
173 
174 /*t t_riscv_f3_system
175  */
176 typedef enum[3] {
185 
186 /*t t_riscv_mem_width */
187 typedef enum[2] {
192 
193 /*t t_riscv_op - RISC-V decoded instruction operation class */
194 typedef enum[4] {
207  riscv_op_ext, // for custom extensions
209 } t_riscv_op;
210 
211 /*t t_riscv_subop - RISC-V decoded instruciton operation class */
212 typedef enum[4] {
213  riscv_subop_valid=0, // for op==illegal, really - means op==invalid is sufficient for illegal op
214  riscv_subop_illegal = 0xf, // for many of the ops...
215 
216  riscv_subop_beq=0, // same as rvi_branch_f3
222 
223  riscv_subop_add = 0, // same as riscv_op_f3, with bit[3] as the 'extra' ops
233 
234  riscv_subop_mull = 0, // same as riscv_op_f3
242 
243  riscv_subop_lb = 0, // same as rvi_f3_load
248 
249  riscv_subop_sb = 0, // same as rvi_f3_store
252 
257 
258  riscv_subop_fence = 0, // to match riscv_op_f3
260 
261  riscv_subop_csrrw = 1, // to match riscv_op_f3
264 } t_riscv_subop;
265 
266 /*t t_riscv_mcause
267  * Non-interrupt MCAUSE reasons, from the spec
268  */
269 typedef enum[8] {
283 
284 /*t t_riscv_trap_cause
285  */
286 typedef enum[4] {
300 
301 /*a CSR types */
302 /*t t_riscv_csr_access_type
303  */
304 typedef enum[3] {
312 
313 /*t t_riscv_csr_access
314  */
315 typedef struct {
317  bit[12] address;
319 
320 /*t t_riscv_csr_data
321  */
322 typedef struct {
325  t_riscv_mode interrupt_mode "Mode to enter if take_interrupt is asserted";
326  bit[4] interrupt_cause "From table 3.6 in RV priv space 1.10";
329 
330 /*t t_riscv_csr_controls
331  */
332 typedef struct {
333  t_riscv_mode exec_mode "Mode of instruction in the execution stage";
334  bit retire;
338  bit[64] timer_value;
340  bit trap;
342  bit[32] trap_pc;
343  bit[32] trap_value;
345 
346 /*t t_riscv_csr_addr
347  *
348  * RISC-V CSR addresses; the top bit indicates readable, next
349  * writable; next two are the minimum privilege level to access
350  * (00=user, 11=machine)
351  *
352  * From RISCV privileged spec v1.1
353  */
354 typedef enum[12] {
360 
366 
367  // Read-write registers accessible from user mode (if provided)
368  CSR_ADDR_USTATUS = 12h000 "User status register, optional",
369  // 1, 2, 3 are floating point (fflags, frm, fcsr)
370  CSR_ADDR_UIE = 12h004 "User interrupt enable register, optional",
371  CSR_ADDR_UTVEC = 12h005 "User trap handler base register, optional",
372 
373  CSR_ADDR_USCRATCH = 12h040 "Scratch register for user trap handlers, only if user mode provided",
374  CSR_ADDR_UEPC = 12h041 "User exception program counter, only if user mode provided",
375  CSR_ADDR_UCAUSE = 12h042 "User trap cause register, only if user mode provided",
376  CSR_ADDR_UTVAL = 12h043 "User trap value register, only if user mode provided",
377  CSR_ADDR_UIP = 12h044 "User interrupt pending register, only if user mode interrupts provided",
378 
379  // Read-only registers accessible from user mode
380  CSR_ADDR_CYCLE = 12hC00 "Required register for RV32I, low 32-bits of cycle counter",
381  CSR_ADDR_TIME = 12hC01 "Required register for RV32I, low 32-bits of wall-clock timer",
382  CSR_ADDR_INSTRET = 12hC02 "Required register for RV32I, low 32-bits of instructions retired counter",
383  // c03 to c1f are more high performance counters if required
384  CSR_ADDR_CYCLEH = 12hC80 "Required register for RV32I, high 32-bits of cycle counter - may be implemented in software with a trap",
385  CSR_ADDR_TIMEH = 12hC81 "Required register for RV32I, high 32-bits of wall-clock timer - may be implemented in software with a trap",
386  CSR_ADDR_INSTRETH = 12hC82 "Required register for RV32I, high 32-bits of instructions retired counter - may be implemented in software with a trap",
387  // c83 to c9f are more high performance counters high 32 bits if required
388 
389  // Read-write registers accessible from system mode (if provided)
390  CSR_ADDR_SSTATUS = 12h100 "Supervisor status register, optional",
391  CSR_ADDR_SEDELEG = 12h102 "Supervisor exception delegation register, optional",
392  CSR_ADDR_SIDELEG = 12h103 "Supervisor interrupt delegation register, optional",
393  CSR_ADDR_SIE = 12h104 "Supervisor interrupt enable register, optional",
394  CSR_ADDR_STVEC = 12h105 "Supervisor trap handler base register, optional",
395  CSR_ADDR_SCOUNTEREN = 12h106 "Supervisor counter enable, optional",
396  CSR_ADDR_SSCRATCH = 12h140 "Scratch register for supervisor trap handlers",
397  CSR_ADDR_SEPC = 12h141 "Supervisor exception program counter, optional",
398  CSR_ADDR_SCAUSE = 12h142 "Supervisor trap cause register, optional",
399  CSR_ADDR_SBADADDR = 12h143 "Supervisor trap value register, optional",
400  CSR_ADDR_SIP = 12h144 "Supervisor interrupt pending register, optional",
401  CSR_ADDR_SPTBR = 12h180 "Supervisor page-table base register, optional",
402 
403  // Read-write registers accessible from machine mode (if provided)
404  CSR_ADDR_MSTATUS = 12h300 "Machine status register, required",
405  CSR_ADDR_MISA = 12h301 "ISA and extensions, required - but may be hardwire to zero",
406  CSR_ADDR_MEDELEG = 12h302 "Machine exception delegation register, optional - tests require this to not be illegal",
407  CSR_ADDR_MIDELEG = 12h303 "Machine interrupt delegation register, optional - tests require this to not be illegal",
408  CSR_ADDR_MIE = 12h304 "Machine interrupt enable register, optional - tests require this to not be illegal",
409  CSR_ADDR_MTVEC = 12h305 "Machine trap handler base register, optional - tests require this to not be illegal",
410  CSR_ADDR_MCOUNTEREN = 12h306 "Machine counter enable, optional",
411  CSR_ADDR_MSCRATCH = 12h340 "Scratch register for machine trap handlers",
412  CSR_ADDR_MEPC = 12h341 "Machine exception program counter",
413  CSR_ADDR_MCAUSE = 12h342 "Machine trap cause register",
414  CSR_ADDR_MTVAL = 12h343 "Machine trap value register",
415  CSR_ADDR_MIP = 12h344 "Machine interrupt pending register, optional",
416 
417  // Machine-mode only read-write registers that shadow other registers (read-only elsewhere)
418  // Clarvi maps the following to Fxx, rather than the specs Bxx - hence the spec has them read/write
419  CSR_ADDR_MCYCLE = 12hB00 "Required register for RV32I, low 32-bits of cycle counter",
420  CSR_ADDR_MINSTRET = 12hB02 "Required register for RV32I, low 32-bits of instructions retired counter",
421  CSR_ADDR_MCYCLEH = 12hB80 "Required register for RV32I, high 32-bits of cycle counter - may be implemented in software with a trap",
422  CSR_ADDR_MINSTRETH = 12hB82 "Required register for RV32I, high 32-bits of instructions retired counter - may be implemented in software with a trap",
423 
424  // Read-only registers, accesible from machine mode only
425  CSR_ADDR_MVENDORID = 12hF11 "Vendor ID, required - but may be hardwired to zero for not implemented or non-commercial",
426  CSR_ADDR_MARCHID = 12hF12 "Architecture ID, required - but may be hardwired to zero for not implemented",
427  CSR_ADDR_MIMPID = 12hF13 "Implementation ID, required - but may be hardwired to zero for not implemented",
428  CSR_ADDR_MHARTID = 12hF14 "Hardware thread ID, required - but may be hardwired to zero (if only one thread in system)",
429 
430  // CLARVI does not memory-map mtime and mtime_cmp, but the spec says it should - these are clarvi-specific, then
431  // Rumor has it that MTIME has now been removed entirely; the spec does not say so. This is a sadness of open source hardware - architecture by github...
432  //CSR_ADDR_MTIME = 12hF01,
433  //CSR_ADDR_MTIMEH = 12hF81,
434  //CSR_ADDR_MTIMECMP = 12h7C1,
435  //CSR_ADDR_MTIMECMPH = 12h7C2,
436 
437  // provisional debug, used across these RISC-V implementations
440 
441 /*t t_riscv_csr_dcsr
442  *
443  * From Debug spec v?
444  *
445  */
446 typedef struct {
447  bit[4] xdebug_ver "4 for conformant debug support, 0 otherwise";
448  bit ebreakm "make ebreak instructions in machine mode enter debug mode";
449  bit ebreaks "make ebreak instructions in system mode enter debug mode";
450  bit ebreaku "make ebreak instructions in user mode enter debug mode";
451  bit stepie "set to enable interrupts during stepping (may be hardwired to 0)";
452  bit stopcount "set to stop cycle and instret incrementing on instructions executed in debug mode";
453  bit stoptime "set to disable incrementing of hart-local timers when in debug mode";
454  bit[3] cause "1=ebreak, 2=trigger module, 3=debugger request, 4=single step as step was set";
455  bit mprven "if clear ignore mstatus.mprv when in debug mode";
456  bit nmip "asserted if an NMI is pending for the hart";
457  bit step "when set enter debug mode after current instruction completes";
458  bit[2] prv "mode of execution prior to entry to debug mode, and to return to on dret";
460 
461 /*t t_riscv_csr_mstatus
462  *
463  * From Priv spec v1.10
464  *
465  */
466 typedef struct {
467  bit sd;
468  bit tsr;
469  bit tw;
470  bit tvm;
471  bit mxr;
472  bit sum;
473  bit mprv;
474  bit[2] xs;
475  bit[2] fs;
476  bit[2] mpp;
477  bit spp;
478  bit mpie;
479  bit spie;
480  bit upie;
481  bit mie;
482  bit sie;
483  bit uie;
485 
486 /*t t_riscv_csr_mip
487  *
488  * From Priv spec v1.10
489  *
490  */
491 typedef struct {
492  bit meip "Machine-external interrupt pending, mirroring the input pin";
493  bit seip "System-external interrupt pending, mirroring the input pin";
494  bit ueip "User-external interrupt pending, mirroring the input pin";
495  bit mtip "Machine timer interrupt pending, set by memory-mapped machine timer comparator meeting mtime";
496  bit stip "System timer interrupt pending, set by software";
497  bit utip "User timer interrupt pending, set by software";
498  bit msip "Machine system interrupt pending, set by memory-mapped register if supported";
499  bit ssip "System software interrupt pending, set by software";
500  bit usip "User software interrupt pending, set by software";
502 
503 /*t t_riscv_csr_mie
504  *
505  * From Priv spec v1.10
506  *
507  */
508 typedef struct {
509  bit meie "Enable for machine-external interrupt pending";
510  bit seie "Enable for system-external interrupt pending";
511  bit ueie "Enable for user-external interrupt pending";
512  bit mtie "Enable for machine timer interrupt pending";
513  bit stie "Enable for system timer interrupt pending";
514  bit utie "Enable for user timer interrupt pending";
515  bit msie "Enable for machine system interrupt pending";
516  bit ssie "Enable for system software interrupt pending";
517  bit usie "Enable for user software interrupt pending";
519 
520 /*t t_riscv_csrs_minimal
521  *
522  * Minimal set of RISC-V CSRs
523  *
524  * mstatus - see above
525  * medeleg - sync exceptions delegation - must be 0 if machine mode only
526  * mideleg - interrupt delegation - must be 0 if machine mode only
527  * mie - interrupt enable - meie, mtie, msie as a minimum
528  * mtvec - can be hardwired to 0
529  * mcounteren - counter permissions - should be 0 if machine mode only
530  * mcause - cause of interrupt/trap - top bit set if interrupt, bottom bits indicate trap/irq
531  * mscratch
532  * mepc
533  * mtval
534  * mip - interrupt pending - meip, mtip, msip as a minimum
535  *
536  * dcsr - see above
537  * dpc - address of ebreak, or of instruction to be executed after (single step or halt)
538  * dscratch
539  *
540  */
541 typedef struct {
542  bit[64] cycles "Number of cycles since reset";
543  bit[64] instret "Number of instructions retired";
544  bit[64] time "Mirror of irqs.time - may be tied to 0 if only machine mode is supported";
545 
546  bit[32] mscratch "Scratch register for exception routines";
547  bit[32] mepc "PC at last exception";
548  bit[32] mcause "Cause of last exception";
549  bit[32] mtval "Value associated with last exception";
550  bit[32] mtvec "Trap vector, can be hardwired or writable";
552 
553 /*a I32 types */
554 /*t t_riscv_i32_inst
555  */
556 typedef struct {
558  bit[32] data;
560 
561 /*t t_riscv_i32_decode_ext
562  *
563  * A type that can be used to create an extended RISC-V, returned as part of the decode
564  *
565  */
566 typedef struct {
567  bit dummy; // not used, but the struct must not be empty
569 
570 /*t t_riscv_i32_decode
571  * Decoded i32 instruction, used throughout a pipeline (decode onwards)
572  */
573 typedef struct {
574  bit[5] rs1 "Source register 1 that is required by the instruction";
575  bit rs1_valid "Asserted if rs1 is valid; if deasserted then rs1 is not used";
576  bit[5] rs2 "Source register 2 that is required by the instruction";
577  bit rs2_valid "Asserted if rs2 is valid; if deasserted then rs2 is not used";
578  bit[5] rd "Destination register that is written by the instruction";
579  bit rd_written "Asserted if Rd is written to (hence also Rd will be non-zero)";
580  t_riscv_csr_access csr_access "CSR access if valid and legal";
581  bit[32] immediate "Immediate value decoded from the instruction";
582  bit[5] immediate_shift "Immediate shift value decoded from the instruction";
583  bit immediate_valid "Asserted if immediate data is valid (generally used instead of source register 2)";
584  t_riscv_op op "Operation class of the instruction";
585  t_riscv_subop subop "Subclass of the operation class";
586  bit requires_machine_mode "Indicates that in non-machine-mode the instruction is illlegal";
587  bit memory_read_unsigned "if a memory read (op is riscv_opc_load), this indicates an unsigned read; otherwise ignored";
588  t_riscv_mem_width memory_width "ignored unless @a memory_read or @a memory_write; indicates size of memory transfer";
589  bit illegal "asserted if an illegal opcode";
590  bit is_compressed "asserted if from an i32-c decode, clear otherwise (effects link register)";
591  t_riscv_i32_decode_ext ext "extended decode, not used by the main pipeline";
593 
594 /*t t_riscv_i32_alu_result
595  *
596  * Result of i32 ALU operation
597  */
598 typedef struct {
599  t_riscv_word result "Result of ALU operation, dependent on subop";
600  t_riscv_word arith_result "Use for mem_address";
605 
606 
607 /*t t_riscv_i32_coproc_controls
608  */
609 typedef struct {
610  bit dec_idecode_valid "Mid-cycle: validates dec_idecode";
611  t_riscv_i32_decode dec_idecode "Mid-cycle: Idecode for the next cycle";
612  bit dec_to_alu_blocked "Late in the cycle: if set, ALU will not take decode; note that ALU flush overpowers this";
613  t_riscv_word alu_rs1 "Early in cycle (after some muxes)";
614  t_riscv_word alu_rs2 "Early in cycle (after some muxes)";
615  bit alu_flush_pipeline "Late in cycle: If asserted, flush everything prior to alu; will only be asserted during a cycle if first cycle if ALU instruction - or if alu_cannot_start";
616  bit alu_cannot_start "Late in cycle: If asserted, alu_idecode may be valid but rs1/rs2 are not; once deasserted it remains deasserted until a new ALU instruction starts";
617  bit alu_cannot_complete "Late in cycle: If asserted, alu cannot complete because it is still working on its operation";
619 
620 /*t t_riscv_i32_coproc_response
621  */
622 typedef struct {
623  bit cannot_start "If asserted, block start of the ALU stage - the instruction is then tried again in the next cycle, but can be interrupted";
625  bit result_valid "Early in cycle, if asserted then coproc overcomes the ALU result";
626  bit cannot_complete "Early in cycle: if deasserted the module is performing a calculation that has not produced a valid result yet (feeds back in to controls alu_cannot_complete)";
628 
629 /*t t_riscv_i32_trace
630  */
631 typedef struct {
633  bit[32] instr_pc "Program counter of the instruction";
634  t_riscv_i32_inst instruction "Instruction word being decoded";
635  bit rfw_retire "Asserted if an instruction is being retired";
637  bit[5] rfw_rd;
638  t_riscv_word rfw_data "Result of ALU/memory operation for the instruction";
639  bit branch_taken "Asserted if a branch is being taken";
640  bit[32] branch_target "Target of branch if being taken";
641  bit trap;
642  // Needs tag
644 
Definition: riscv_internal_types.h:412
bit uie
Definition: riscv_internal_types.h:483
Definition: riscv_internal_types.h:256
bit[32] trap_pc
Definition: riscv_internal_types.h:342
Definition: riscv_internal_types.h:305
Definition: riscv_internal_types.h:375
Definition: riscv_internal_types.h:57
bit spie
Definition: riscv_internal_types.h:479
Definition: riscv_internal_types.h:153
bit[32] t_riscv_word
Definition: riscv.h:73
Definition: riscv_internal_types.h:59
Definition: riscv_internal_types.h:310
Definition: riscv_internal_types.h:364
Definition: riscv_internal_types.h:225
Definition: riscv_internal_types.h:237
Definition: riscv_internal_types.h:393
Definition: riscv_internal_types.h:400
Definition: riscv_internal_types.h:189
Definition: riscv_internal_types.h:228
Definition: riscv_internal_types.h:332
Definition: riscv_internal_types.h:199
Definition: riscv_internal_types.h:622
Definition: riscv_internal_types.h:259
Definition: riscv_internal_types.h:297
Definition: riscv_internal_types.h:356
Definition: riscv_internal_types.h:204
Definition: riscv_internal_types.h:363
Definition: riscv_internal_types.h:41
Definition: riscv_internal_types.h:236
Definition: riscv_internal_types.h:426
bit[64] timer_value
Definition: riscv_internal_types.h:338
t_riscv_trap_cause
Definition: riscv_internal_types.h:286
t_riscv_csr_access csr_access
Definition: riscv_internal_types.h:603
Definition: riscv_internal_types.h:411
Definition: riscv_internal_types.h:87
Definition: riscv_internal_types.h:92
Definition: riscv_internal_types.h:69
Definition: riscv_internal_types.h:377
Definition: riscv_internal_types.h:89
Definition: riscv_internal_types.h:384
bit upie
Definition: riscv_internal_types.h:480
Definition: riscv_internal_types.h:208
t_riscv_word branch_target
Definition: riscv_internal_types.h:602
Definition: riscv_internal_types.h:421
constant integer riscv_i32_f7
Definition: riscv_internal_types.h:36
Definition: riscv_internal_types.h:235
Definition: riscv_internal_types.h:308
Definition: riscv_internal_types.h:52
bit sie
Definition: riscv_internal_types.h:482
Definition: riscv_internal_types.h:119
t_riscv_subop
Definition: riscv_internal_types.h:212
Definition: riscv_internal_types.h:223
Definition: riscv_internal_types.h:155
t_riscv_mode
Definition: riscv.h:89
Definition: riscv_internal_types.h:141
Definition: riscv_internal_types.h:573
Definition: riscv_internal_types.h:371
Definition: riscv_internal_types.h:58
Definition: riscv_internal_types.h:205
constant integer riscv_i32_opc
Definition: riscv_internal_types.h:31
Definition: riscv_internal_types.h:164
t_riscv_trap_cause trap_cause
Definition: riscv_internal_types.h:341
bit branch_condition_met
Definition: riscv_internal_types.h:601
Definition: riscv_internal_types.h:214
Definition: riscv_internal_types.h:104
bit tsr
Definition: riscv_internal_types.h:468
Definition: riscv_internal_types.h:51
Definition: riscv_internal_types.h:598
Definition: riscv_internal_types.h:399
bit tvm
Definition: riscv_internal_types.h:470
Definition: riscv_internal_types.h:541
Definition: riscv_internal_types.h:370
bit[32] trap_value
Definition: riscv_internal_types.h:343
bit timer_load
Definition: riscv_internal_types.h:337
Definition: riscv_internal_types.h:226
Definition: riscv_internal_types.h:246
Definition: riscv_internal_types.h:95
Definition: riscv_internal_types.h:53
Definition: riscv_internal_types.h:216
Definition: riscv_internal_types.h:142
Definition: riscv_internal_types.h:144
bit take_interrupt
Definition: riscv_internal_types.h:324
Definition: riscv_internal_types.h:218
Definition: riscv_internal_types.h:401
Definition: riscv_internal_types.h:67
bit trap
Definition: riscv_internal_types.h:340
Definition: riscv_internal_types.h:279
t_riscv_op
Definition: riscv_internal_types.h:194
bit[32] data
Definition: riscv_internal_types.h:558
t_riscv_word result
Definition: riscv_internal_types.h:624
Definition: riscv_internal_types.h:221
Definition: riscv_internal_types.h:272
Definition: riscv_internal_types.h:359
Definition: riscv_internal_types.h:201
Definition: riscv_internal_types.h:362
Definition: riscv_internal_types.h:261
Definition: riscv_internal_types.h:380
Definition: riscv_internal_types.h:415
t_riscv_f3_system
Definition: riscv_internal_types.h:176
Definition: riscv_internal_types.h:306
Definition: riscv_internal_types.h:263
Definition: riscv_internal_types.h:77
Definition: riscv_internal_types.h:556
t_riscv_system_f12
Definition: riscv_internal_types.h:103
Definition: riscv_internal_types.h:118
Definition: riscv_internal_types.h:196
Definition: riscv_internal_types.h:609
t_riscv_abi
Definition: riscv_internal_types.h:40
Definition: riscv_internal_types.h:133
Definition: riscv_internal_types.h:289
constant integer riscv_i32_rs1
Definition: riscv_internal_types.h:34
Definition: riscv_internal_types.h:278
Definition: riscv_internal_types.h:281
bit mxr
Definition: riscv_internal_types.h:471
Definition: riscv_internal_types.h:244
Definition: riscv_internal_types.h:224
bit mie
Definition: riscv_internal_types.h:481
t_riscv_word read_data
Definition: riscv_internal_types.h:323
Definition: riscv_internal_types.h:117
Definition: riscv_internal_types.h:508
Definition: riscv_internal_types.h:200
Definition: riscv_internal_types.h:74
Definition: riscv_internal_types.h:381
bit[5] rfw_rd
Definition: riscv_internal_types.h:637
Definition: riscv_internal_types.h:274
Definition: riscv_internal_types.h:66
Definition: riscv_internal_types.h:143
Definition: riscv_internal_types.h:180
Definition: riscv_internal_types.h:108
Definition: riscv_internal_types.h:65
Definition: riscv_internal_types.h:177
Definition: riscv_internal_types.h:154
Definition: riscv_internal_types.h:491
Definition: riscv_internal_types.h:61
Definition: riscv_internal_types.h:73
Definition: riscv_internal_types.h:135
Definition: riscv_internal_types.h:132
Definition: riscv_internal_types.h:410
Definition: riscv_internal_types.h:206
Definition: riscv_internal_types.h:398
Definition: riscv_internal_types.h:386
bit trap
Definition: riscv_internal_types.h:641
Definition: riscv_internal_types.h:322
Definition: riscv_internal_types.h:309
t_riscv_f3_load
Definition: riscv_internal_types.h:151
t_riscv_f3_branch
Definition: riscv_internal_types.h:140
Definition: riscv_internal_types.h:179
Definition: riscv_internal_types.h:128
Definition: riscv_internal_types.h:466
t_riscv_opc_rv32
Definition: riscv_internal_types.h:49
Definition: riscv_internal_types.h:438
Definition: riscv_internal_types.h:129
Definition: riscv_internal_types.h:64
Definition: riscv_internal_types.h:131
Definition: riscv_internal_types.h:152
Definition: riscv_internal_types.h:315
Definition: riscv_internal_types.h:446
Definition: riscv_internal_types.h:250
Definition: riscv_internal_types.h:357
Definition: riscv_internal_types.h:232
Definition: riscv_internal_types.h:43
Definition: riscv_internal_types.h:385
Definition: riscv_internal_types.h:295
Definition: riscv_internal_types.h:258
Definition: riscv_internal_types.h:390
Definition: riscv_internal_types.h:88
Definition: riscv_internal_types.h:280
Definition: riscv_internal_types.h:298
Definition: riscv_internal_types.h:394
Definition: riscv_internal_types.h:156
Definition: riscv_internal_types.h:273
Definition: riscv_internal_types.h:130
bit[2] mpp
Definition: riscv_internal_types.h:476
Definition: riscv_internal_types.h:83
bit mprv
Definition: riscv_internal_types.h:473
Definition: riscv_internal_types.h:70
Definition: riscv_internal_types.h:55
Definition: riscv_internal_types.h:217
Definition: riscv_internal_types.h:296
Definition: riscv_internal_types.h:251
Definition: riscv_internal_types.h:219
t_riscv_mem_width
Definition: riscv_internal_types.h:187
Definition: riscv_internal_types.h:392
Definition: riscv_internal_types.h:413
t_riscv_f3_muldiv
Definition: riscv_internal_types.h:127
Definition: riscv_internal_types.h:134
Definition: riscv_internal_types.h:234
Definition: riscv_internal_types.h:292
bit interrupt
Definition: riscv_internal_types.h:339
Definition: riscv_internal_types.h:231
Definition: riscv_internal_types.h:86
Definition: riscv_internal_types.h:414
Definition: riscv_internal_types.h:120
Definition: riscv_internal_types.h:243
Definition: riscv_internal_types.h:97
Definition: riscv_internal_types.h:195
Definition: riscv_internal_types.h:368
Definition: riscv_internal_types.h:365
Definition: riscv_internal_types.h:163
Definition: riscv_internal_types.h:94
Definition: riscv_internal_types.h:182
Definition: riscv_internal_types.h:122
Definition: riscv_internal_types.h:170
constant integer riscv_i32_ones
Definition: riscv_internal_types.h:30
Definition: riscv_internal_types.h:71
t_riscv_csr_access_type access
Definition: riscv_internal_types.h:316
bit retire
Definition: riscv_internal_types.h:334
Definition: riscv_internal_types.h:397
Definition: riscv_internal_types.h:245
Definition: riscv_internal_types.h:355
bit dummy
Definition: riscv_internal_types.h:567
Definition: riscv_internal_types.h:358
Definition: riscv_internal_types.h:253
Definition: riscv_internal_types.h:178
Definition: riscv_internal_types.h:229
Definition: riscv_internal_types.h:247
Definition: riscv_internal_types.h:395
Definition: riscv_internal_types.h:271
bit[12] address
Definition: riscv_internal_types.h:317
Definition: riscv_internal_types.h:291
Definition: riscv_internal_types.h:287
constant integer riscv_i32_f12
Definition: riscv_internal_types.h:37
t_riscv_f3_store
Definition: riscv_internal_types.h:161
Definition: riscv_internal_types.h:240
Definition: riscv_internal_types.h:213
Definition: riscv_internal_types.h:202
Definition: riscv_internal_types.h:241
Definition: riscv_internal_types.h:183
Definition: riscv_internal_types.h:288
Definition: riscv_internal_types.h:262
Definition: riscv_internal_types.h:84
Definition: riscv_internal_types.h:294
Definition: riscv_internal_types.h:188
Definition: riscv_internal_types.h:171
Definition: riscv_internal_types.h:428
Definition: riscv_internal_types.h:361
Definition: riscv_internal_types.h:408
Definition: riscv_internal_types.h:230
Definition: riscv_internal_types.h:376
Definition: riscv_internal_types.h:207
Definition: riscv_internal_types.h:420
bit illegal_access
Definition: riscv_internal_types.h:327
t_riscv_mode mode
Definition: riscv_internal_types.h:557
t_riscv_f3_alu
Definition: riscv_internal_types.h:114
Definition: riscv_internal_types.h:91
bit mpie
Definition: riscv_internal_types.h:478
Definition: riscv_internal_types.h:62
t_riscv_opc_rv32c
Definition: riscv_internal_types.h:82
bit sum
Definition: riscv_internal_types.h:472
Definition: riscv_internal_types.h:631
constant integer riscv_i32_rs2
Definition: riscv_internal_types.h:35
bit[2] xs
Definition: riscv_internal_types.h:474
Definition: riscv_internal_types.h:162
Definition: riscv_internal_types.h:255
Definition: riscv_internal_types.h:407
Definition: riscv_internal_types.h:409
Definition: riscv_internal_types.h:60
Definition: riscv_internal_types.h:105
Definition: riscv_internal_types.h:146
constant integer riscv_i32_rd
Definition: riscv_internal_types.h:32
Definition: riscv_internal_types.h:373
Definition: riscv_internal_types.h:270
Definition: riscv_internal_types.h:42
Definition: riscv_internal_types.h:307
Definition: riscv_internal_types.h:220
Definition: riscv_internal_types.h:203
Definition: riscv_internal_types.h:50
t_riscv_csr_access_type
Definition: riscv_internal_types.h:304
Definition: riscv_internal_types.h:72
Definition: riscv_internal_types.h:145
Definition: riscv_internal_types.h:197
Definition: riscv_internal_types.h:115
t_riscv_mcause
Definition: riscv_internal_types.h:269
Definition: riscv_internal_types.h:56
bit spp
Definition: riscv_internal_types.h:477
bit sd
Definition: riscv_internal_types.h:467
t_riscv_csr_addr
Definition: riscv_internal_types.h:354
Definition: riscv_internal_types.h:68
constant integer riscv_i32_f3
Definition: riscv_internal_types.h:33
Definition: riscv_internal_types.h:238
Definition: riscv_internal_types.h:93
Definition: riscv_internal_types.h:276
Definition: riscv_internal_types.h:422
Definition: riscv_internal_types.h:419
bit tw
Definition: riscv_internal_types.h:469
Definition: riscv_internal_types.h:290
Definition: riscv_internal_types.h:121
Definition: riscv_internal_types.h:249
Definition: riscv_internal_types.h:54
Definition: riscv_internal_types.h:566
bit rfw_data_valid
Definition: riscv_internal_types.h:636
bit timer_clear
Definition: riscv_internal_types.h:336
Definition: riscv_internal_types.h:63
Definition: riscv_internal_types.h:75
Definition: riscv_internal_types.h:396
Definition: riscv_internal_types.h:427
Definition: riscv_internal_types.h:425
Definition: riscv_internal_types.h:275
Definition: riscv_internal_types.h:382
Definition: riscv_internal_types.h:391
Definition: riscv_internal_types.h:239
bit timer_inc
Definition: riscv_internal_types.h:335
Definition: riscv_internal_types.h:107
Definition: riscv_internal_types.h:405
Definition: riscv_internal_types.h:277
Definition: riscv_internal_types.h:116
Definition: riscv_internal_types.h:404
Definition: riscv_internal_types.h:76
Definition: riscv_internal_types.h:190
Definition: riscv_internal_types.h:374
bit instr_valid
Definition: riscv_internal_types.h:632
Definition: riscv_internal_types.h:198
Definition: riscv_internal_types.h:96
bit[2] fs
Definition: riscv_internal_types.h:475
Definition: riscv_internal_types.h:90
Definition: riscv_internal_types.h:406
Definition: riscv_internal_types.h:227
Definition: riscv_internal_types.h:254
Definition: riscv_internal_types.h:293
Definition: riscv_internal_types.h:181
Definition: riscv_internal_types.h:85
t_riscv_f3_misc_mem
Definition: riscv_internal_types.h:169