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";
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";
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",
377 CSR_ADDR_UIP = 12h044
"User interrupt pending register, only if user mode interrupts provided",
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",
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",
393 CSR_ADDR_SIE = 12h104
"Supervisor interrupt enable register, optional",
400 CSR_ADDR_SIP = 12h144
"Supervisor interrupt pending register, optional",
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",
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",
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)",
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";
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";
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";
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";
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";
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)";
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)";
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)";
610 bit dec_idecode_valid
"Mid-cycle: validates dec_idecode";
612 bit dec_to_alu_blocked
"Late in the cycle: if set, ALU will not take decode; note that ALU flush overpowers this";
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";
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)";
633 bit[32] instr_pc
"Program counter of the instruction";
635 bit rfw_retire
"Asserted if an instruction is being retired";
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";
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