107 #if CFG_EXU_M_EXTENSION == 1
131 #if CFG_EXU_M_EXTENSION == 1
140 class MExu :
public ::sc_core::sc_module {
242 #if CFG_EXU_PERFCOUNT_ENABLE == 1
274 sc_in<sc_uint<CFG_NUT_CPU_CORES> >
294 sc_in<sc_uint<CFG_NUT_CPU_CORES_LD> >
hartID;
306 SC_HAS_PROCESS (
MExu);
311 ,
mext (
"MExtension")
330 #if CFG_EXU_M_EXTENSION == 1
367 #if CFG_EXU_PERFCOUNT_ENABLE == 1
373 void Trace (sc_trace_file *
tf,
int levels = 1);
375 #ifndef __SYNTHESIS__
416 sc_signal<sc_uint<32> >
ir,
pc;
444 #if CFG_EXU_M_EXTENSION == 1
456 #if CFG_EXU_PERFCOUNT_ENABLE == 1
463 sc_signal<sc_uint<32> >
488 sc_signal<sc_uint<4> >
Helpers, Makros and performance measuring Classes used in most ParaNut files.
CPU performance monitor class.
Definition: base.h:567
void Display(const char *name=NULL)
Display the collected performance information.
Definition: base.cpp:299
sc_signal< bool > xret_dreg
Definition: exu.h:471
sc_signal< sc_uint< 5 > > ex_id
Definition: exu.h:396
sc_out< sc_uint< CFG_NUT_CPU_CORES > > m3_pnxsel
Definition: exu.h:200
CPerfMonCPU perf_mon_
Definition: exu.h:494
sc_signal< bool > lsu_rd_dreg
Definition: exu.h:483
sc_signal< sc_uint< 32 > > alu_result
Definition: exu.h:434
sc_in< bool > csr_mstatus_SUM
Definition: exu.h:258
sc_signal< bool > stall_decode
Definition: exu.h:410
sc_out< bool > haltreq
Definition: exu.h:195
sc_signal< sc_uint< 2 > > alu_md_function_dreg
Definition: exu.h:453
sc_signal< sc_uint< 32 > > ir
Definition: exu.h:416
sc_signal< bool > ignore_ir
Definition: exu.h:400
sc_in< bool > csr_exception
Definition: exu.h:249
sc_in< bool > sync_i
Definition: exu.h:183
sc_in< sc_uint< 32 > > csr_mcause
Definition: exu.h:268
void InstructionTrace()
Definition: exu.cpp:262
sc_out< bool > sync_o
Definition: exu.h:184
sc_out< sc_uint< 32 > > lsu_adr
Definition: exu.h:160
bool IsHalted()
Definition: exu.h:377
sc_signal< sc_uint< CFG_EXU_PERFCOUNTERS_LD > > perf_addr
Definition: exu.h:459
sc_out< bool > m3_ir_ack
Definition: exu.h:208
sc_out< bool > csr_sret_dreg
Definition: exu.h:222
sc_signal< sc_uint< 32 > > branch_b_dreg
Definition: exu.h:467
sc_out< sc_uint< CFG_NUT_CPU_CORES > > csr_m3_pnhaltreq
Definition: exu.h:239
sc_in< bool > enable
Definition: exu.h:194
sc_signal< bool > csr_instr
Definition: exu.h:428
sc_signal< sc_uint< 2 > > lsu_width_dreg
Definition: exu.h:486
sc_signal< bool > alu_branch_reg
Definition: exu.h:437
sc_signal< bool > alu_branch
Definition: exu.h:433
sc_out< bool > ifu_next
Definition: exu.h:147
sc_out< sc_uint< 3 > > lsu_cache_op
Definition: exu.h:155
sc_in< bool > lsu_ac_u
Definition: exu.h:166
sc_signal< bool > internal_next
Definition: exu.h:411
sc_in< sc_uint< CFG_NUT_CPU_CORES > > csr_m3_pnlm
Definition: exu.h:276
sc_out< bool > csr_cpu_enabled
Definition: exu.h:220
sc_signal< sc_uint< 32 > > op_b_dreg
Definition: exu.h:465
void DisplayStatistics()
Definition: exu.h:376
sc_in< bool > csr_mstatus_TVM
Definition: exu.h:261
sc_in< bool > csr_ifu_paging_mode
Definition: exu.h:281
sc_in< bool > csr_delegate_dreg
Definition: exu.h:251
sc_signal< bool > alu_d_valid
Definition: exu.h:450
sc_in< bool > mode2Cap
Definition: exu.h:301
void AluCombMethod()
Definition: exu.cpp:349
sc_signal< bool > ignore_ir_reg
Definition: exu.h:400
sc_signal< bool > perf_inc
Definition: exu.h:458
sc_out< sc_uint< 5 > > csr_csr_rs1_reg
Definition: exu.h:226
sc_out< bool > lsu_paging_mode
Definition: exu.h:287
void DecodeMethod()
Definition: exu.cpp:477
sc_in< sc_uint< 32 > > m2_pc
Definition: exu.h:190
sc_in< bool > csr_cache_flush
Definition: exu.h:253
sc_in< bool > ifu_npc_valid
Definition: exu.h:149
sc_out< sc_uint< 3 > > csr_csr_function_reg
Definition: exu.h:228
void Trace(sc_trace_file *tf, int levels=1)
Definition: exu.cpp:66
sc_signal< bool > alu_s_enable
Definition: exu.h:441
sc_signal< bool > exception
Definition: exu.h:398
sc_signal< bool > ebreak_dreg
Definition: exu.h:481
sc_signal< sc_uint< 4 > > exu_op_dreg
Definition: exu.h:489
sc_in< bool > m2_ac_x
Definition: exu.h:191
sc_in< bool > csr_mstatus_SIE
Definition: exu.h:257
sc_out< sc_uint< 32 > > csr_pc
Definition: exu.h:232
sc_out< bool > csr_pop_priv_ir_stack_dreg
Definition: exu.h:225
sc_out< bool > lsu_wr
Definition: exu.h:154
sc_in< bool > csr_dcsr_ebreakm
Definition: exu.h:262
sc_in< sc_uint< 32 > > ifu_npc
Definition: exu.h:150
sc_signal< sc_uint< 3 > > cache_op_dreg
Definition: exu.h:487
sc_in< bool > lsu_align_err
Definition: exu.h:157
sc_in< sc_uint< CFG_NUT_CPU_CORES_LD > > hartID
Definition: exu.h:294
sc_in< sc_uint< CFG_NUT_CPU_CORES > > csr_m3_pnxsel
Definition: exu.h:277
sc_in< bool > inCePU
Definition: exu.h:301
sc_out< sc_uint< CFG_EXU_PERFCOUNTERS_LD > > csr_perf_addr
Definition: exu.h:245
sc_in< sc_uint< 32 > > csr_dpc
Definition: exu.h:270
sc_signal< sc_uint< 5 > > ex_id_reg
Definition: exu.h:396
sc_signal< sc_uint< EX_ID_LENGTH > > state_reg
Definition: exu.h:409
sc_in< sc_uint< 32 > > csr_stvec
Definition: exu.h:267
sc_in< bool > lsu_ac_r
Definition: exu.h:166
sc_out< bool > lsu_exts
Definition: exu.h:159
sc_in< sc_uint< 32 > > lsu_rdata
Definition: exu.h:161
sc_in< bool > m2_ac_u
Definition: exu.h:191
sc_in< bool > m2_ir_valid
Definition: exu.h:189
sc_out< bool > lsu_trap_no_u
Definition: exu.h:165
sc_in< sc_uint< 32 > > csr_mideleg
Definition: exu.h:265
sc_in< bool > ex_i
Definition: exu.h:177
sc_out< bool > lsu_lres_scond
Definition: exu.h:163
sc_out< bool > m3_dcache_enable
Definition: exu.h:212
sc_out< bool > csr_dbg
Definition: exu.h:219
void MainCombMethod()
Definition: exu.cpp:842
sc_signal< sc_uint< 32 > > csr_op_a
Definition: exu.h:429
sc_out< sc_uint< 20 > > root_ppn
Definition: exu.h:288
sc_signal< bool > insn_page_fault_dreg
Definition: exu.h:476
sc_signal< bool > ex_handle_reg
Definition: exu.h:397
void DumpRegisterChange()
Definition: exu.cpp:254
sc_in< sc_uint< 32 > > csr_mepc
Definition: exu.h:271
sc_signal< bool > ac_x
Definition: exu.h:417
sc_out< sc_uint< CFG_NUT_CPU_CORES > > m3_pnce
Definition: exu.h:198
sc_out< bool > tlb_flush
Definition: exu.h:285
sc_signal< bool > lres_scond_dreg
Definition: exu.h:484
sc_out< sc_uint< 5 > > cause_o
Definition: exu.h:180
sc_signal< bool > alu_af_dreg
Definition: exu.h:473
sc_in< sc_uint< 32 > > ifu_pc
Definition: exu.h:150
sc_signal< bool > alu_finished
Definition: exu.h:433
sc_in< bool > clk
Definition: exu.h:144
sc_signal< bool > pop_priv_ir_stack_dreg
Definition: exu.h:472
sc_in< bool > ifu_ac_x
Definition: exu.h:151
sc_signal< sc_uint< EX_ID_LENGTH > > state
Definition: exu.h:409
sc_signal< sc_uint< 32 > > op_a_dreg
Definition: exu.h:464
void CSRMethod()
Definition: exu.cpp:1431
sc_out< bool > csr_linked
Definition: exu.h:236
sc_in< bool > ifu_ac_u
Definition: exu.h:151
sc_out< sc_uint< CFG_NUT_CPU_CORES_LD > > csr_hartID
Definition: exu.h:234
sc_out< bool > csr_dbg_reg
Definition: exu.h:219
sc_signal< bool > m3_ir_request_reg
Definition: exu.h:401
sc_out< bool > ifu_reset
Definition: exu.h:147
sc_signal< bool > ex_handle
Definition: exu.h:397
sc_out< sc_uint< 32 > > lsu_wdata
Definition: exu.h:162
sc_out< sc_uint< 12 > > csr_csr_adr_reg
Definition: exu.h:229
sc_signal< sc_uint< 32 > > alu_m_result
Definition: exu.h:449
sc_in< bool > lsu_scond_ok
Definition: exu.h:164
sc_out< sc_uint< CFG_NUT_CPU_CORES > > csr_m3_pnx
Definition: exu.h:239
sc_out< bool > ifu_paging_mode
Definition: exu.h:287
sc_in< bool > sync_next
Definition: exu.h:185
sc_out< sc_uint< 5 > > csr_cause
Definition: exu.h:238
sc_in< bool > csr_m3_dcache_enable
Definition: exu.h:279
sc_out< bool > csr_dbg_enter_dreg
Definition: exu.h:219
sc_out< sc_uint< 32 > > csr_ir
Definition: exu.h:232
sc_signal< bool > sync
Definition: exu.h:414
sc_in< bool > m3_ir_request
Definition: exu.h:206
sc_signal< bool > irq_dreg
Definition: exu.h:478
sc_signal< bool > alu_s_ready
Definition: exu.h:441
sc_out< bool > lsu_trap_u
Definition: exu.h:165
sc_signal< sc_uint< 2 > > alu_s_function
Definition: exu.h:439
MExu(sc_module_name name)
Definition: exu.h:307
sc_signal< sc_uint< 12 > > csr_adr_reg
Definition: exu.h:426
sc_in< bool > lsu_ac_w
Definition: exu.h:166
sc_signal< bool > alu_m_valid
Definition: exu.h:448
sc_out< bool > csr_ack
Definition: exu.h:254
sc_in< bool > linked
Definition: exu.h:194
sc_out< bool > ifu_flush
Definition: exu.h:147
sc_in< bool > csr_isHalted
Definition: exu.h:252
sc_in< sc_uint< CFG_NUT_CPU_CORES > > m3_pnhaltreq
Definition: exu.h:201
sc_out< bool > csr_exu_exception
Definition: exu.h:223
sc_in< bool > xsel
Definition: exu.h:176
sc_in< sc_uint< 32 > > csr_mtvec
Definition: exu.h:269
sc_signal< sc_uint< 5 > > csr_rs1_reg
Definition: exu.h:427
sc_in< bool > csr_m3_icache_enable
Definition: exu.h:279
sc_signal< bool > alu_md_dreg
Definition: exu.h:452
sc_in< bool > csr_dcsr_step
Definition: exu.h:263
sc_signal< bool > flush_dreg
Definition: exu.h:482
sc_out< sc_uint< 2 > > m3_priv_mode_o
Definition: exu.h:203
sc_out< sc_uint< CFG_NUT_CPU_CORES > > m3_pnlm
Definition: exu.h:199
sc_signal< bool > illegal_insn_dreg
Definition: exu.h:475
sc_out< sc_uint< 32 > > ifu_jump_adr
Definition: exu.h:148
sc_in< bool > csr_lsu_paging_mode
Definition: exu.h:281
sc_in< bool > reset
Definition: exu.h:144
void DumpRegisterInfo()
Definition: exu.cpp:232
sc_in< sc_uint< 32 > > csr_rdata
Definition: exu.h:250
sc_in< sc_uint< 32 > > csr_mip
Definition: exu.h:272
sc_signal< bool > sync_reg
Definition: exu.h:414
sc_signal< bool > alu_d_enable
Definition: exu.h:450
sc_out< bool > csr_enable
Definition: exu.h:237
sc_in< bool > csr_mstatus_MIE
Definition: exu.h:259
sc_in< sc_uint< 32 > > ifu_ir
Definition: exu.h:150
sc_signal< sc_uint< 5 > > gpr_sel_dreg
Definition: exu.h:468
sc_signal< bool > dbg_enter_dreg
Definition: exu.h:485
sc_signal< sc_uint< 32 > > csr_tval
Definition: exu.h:430
sc_out< bool > csr_perf_inc
Definition: exu.h:244
sc_signal< bool > ir_valid
Definition: exu.h:415
sc_signal< sc_uint< 32 > > branch_a_dreg
Definition: exu.h:466
sc_in< sc_uint< 32 > > m2_ir
Definition: exu.h:190
sc_out< sc_uint< 5 > > csr_ex_id_reg
Definition: exu.h:221
sc_signal< sc_uint< 3 > > csr_function_reg
Definition: exu.h:425
sc_signal< sc_uint< 32 > > gp_regs[REGISTERS]
Definition: exu.h:404
sc_in< sc_uint< 5 > > cause_i
Definition: exu.h:179
sc_signal< bool > dbg_reg
Definition: exu.h:393
sc_signal< sc_uint< 32 > > gpr_in
Definition: exu.h:405
sc_out< bool > lsu_rd
Definition: exu.h:154
sc_signal< bool > alu_branch_dreg
Definition: exu.h:474
sc_in< sc_uint< 32 > > csr_sepc
Definition: exu.h:266
void Mode2Method()
Definition: exu.cpp:1413
sc_out< bool > m3_ir_enable
Definition: exu.h:209
sc_out< sc_uint< 32 > > csr_csr_tval
Definition: exu.h:230
sc_out< sc_uint< 2 > > lsu_width
Definition: exu.h:158
sc_signal< bool > dbg
Definition: exu.h:393
sc_signal< sc_uint< 32 > > alu_s_result
Definition: exu.h:442
sc_out< bool > ifu_jump
Definition: exu.h:147
sc_in< sc_uint< CFG_NUT_CPU_CORES > > csr_m3_pnce
Definition: exu.h:275
sc_in< bool > ifu_ir_valid
Definition: exu.h:149
sc_out< bool > csr_inCePU
Definition: exu.h:235
sc_in< bool > csr_mstatus_TSR
Definition: exu.h:260
sc_signal< sc_uint< 32 > > alu_result_reg
Definition: exu.h:436
sc_in< sc_uint< 2 > > m3_priv_mode_i
Definition: exu.h:202
sc_signal< sc_uint< 5 > > alu_s_amount
Definition: exu.h:440
sc_out< bool > csr_irq_dreg
Definition: exu.h:224
sc_out< sc_uint< 2 > > csr_m3_priv_mode
Definition: exu.h:240
sc_signal< bool > gpr_write
Definition: exu.h:406
sc_in< sc_uint< 2 > > csr_priv_mode
Definition: exu.h:255
sc_signal< bool > alu_m_enable
Definition: exu.h:448
sc_out< bool > lsu_flush
Definition: exu.h:154
sc_in< sc_uint< CFG_NUT_CPU_CORES > > m3_pnx
Definition: exu.h:201
sc_signal< bool > sret_dreg
Definition: exu.h:470
sc_signal< sc_uint< 32 > > pc
Definition: exu.h:416
sc_signal< sc_uint< 4 > > alu_function_dreg
Definition: exu.h:490
MMExtension mext
Definition: exu.h:446
void AluShiftMethod()
Definition: exu.cpp:277
sc_in< sc_uint< 5 > > m3_ir_id
Definition: exu.h:207
sc_signal< sc_uint< 32 > > alu_d_result
Definition: exu.h:451
void MainMethod()
Definition: exu.cpp:429
sc_signal< bool > ex_CoPU_dreg
Definition: exu.h:477
sc_out< bool > m3_icache_enable
Definition: exu.h:212
sc_signal< bool > ac_u
Definition: exu.h:417
sc_signal< bool > step_dreg
Definition: exu.h:479
sc_in< sc_uint< 2 > > csr_load_store_priv_mode
Definition: exu.h:255
sc_out< sc_uint< 32 > > csr_csr_op_a
Definition: exu.h:227
sc_in< bool > dbg_req
Definition: exu.h:216
sc_in< bool > lsu_ack
Definition: exu.h:156
sc_out< bool > ex_o
Definition: exu.h:178
sc_in< sc_uint< 20 > > csr_satp_root_ppn
Definition: exu.h:282
sc_signal< bool > ecall_dreg
Definition: exu.h:480
Definition: mextension.h:61
sc_in< sc_uint< 2 > > md_func
Definition: mextension.h:67
sc_out< sc_uint< 32 > > d_result
Definition: mextension.h:71
sc_out< bool > d_valid
Definition: mextension.h:70
sc_out< bool > m_valid
Definition: mextension.h:70
sc_out< sc_uint< 32 > > m_result
Definition: mextension.h:71
sc_in< bool > reset
Definition: mextension.h:64
sc_in< sc_uint< 32 > > op_a
Definition: mextension.h:68
sc_in< bool > m_enable
Definition: mextension.h:66
sc_in< bool > d_enable
Definition: mextension.h:66
sc_in< sc_uint< 32 > > op_b
Definition: mextension.h:68
sc_in< bool > clk
Definition: mextension.h:64
EAluFuncRISCV
Definition: exu.h:69
@ afSrl
Definition: exu.h:77
@ afSltu
Definition: exu.h:75
@ afAdd
Definition: exu.h:71
@ afOr
Definition: exu.h:79
@ afSra
Definition: exu.h:78
@ afXor
Definition: exu.h:76
@ afEq
Definition: exu.h:81
@ afBltu
Definition: exu.h:82
@ afBlt
Definition: exu.h:83
@ afSll
Definition: exu.h:73
@ afAnd
Definition: exu.h:80
@ afSub
Definition: exu.h:72
@ afSlt
Definition: exu.h:74
EExuState
Definition: exu.h:87
@ ExuXRETFinish
Definition: exu.h:96
@ ExuBranch
Definition: exu.h:92
@ ExuDiv
Definition: exu.h:108
@ ExuHalt
Definition: exu.h:98
@ ExuExJumpTvec
Definition: exu.h:105
@ ExuExWaitForCoPUs
Definition: exu.h:104
@ ExuXRET
Definition: exu.h:94
@ ExuMemWB
Definition: exu.h:90
@ ExuXRETCsrWait
Definition: exu.h:95
@ ExuMulDivWB
Definition: exu.h:109
@ ExuCACHECONT2
Definition: exu.h:101
@ ExuExecuteInsn
Definition: exu.h:88
@ ExuDBGEnter
Definition: exu.h:112
@ ExuCACHECONT
Definition: exu.h:100
@ ExuExOrIrq
Definition: exu.h:103
@ ExuJump
Definition: exu.h:91
@ ExuDBG
Definition: exu.h:113
@ ExuLSUFlush
Definition: exu.h:99
@ ExuCSR
Definition: exu.h:93
@ ExuMem
Definition: exu.h:89
EAluRISCVType
Definition: exu.h:51
@ IType
Definition: exu.h:51
@ RType
Definition: exu.h:51
@ UType
Definition: exu.h:51
@ SType
Definition: exu.h:51
@ JType
Definition: exu.h:51
@ BType
Definition: exu.h:51
#define REGISTERS
Definition: exu.h:48
EExuOp
Definition: exu.h:116
@ OpBranch
Definition: exu.h:120
@ OpMem
Definition: exu.h:121
@ OpException
Definition: exu.h:126
@ OpXRet
Definition: exu.h:123
@ OpCSR
Definition: exu.h:122
@ OpMulDiv
Definition: exu.h:132
@ OpParaNut
Definition: exu.h:125
@ OpHalt
Definition: exu.h:124
@ OpJump
Definition: exu.h:119
@ OpAlu
Definition: exu.h:118
@ OpDebug
Definition: exu.h:127
@ OpSFenceVMA
Definition: exu.h:128
@ OpNOP
Definition: exu.h:117
EOpRISCV
Definition: exu.h:53
@ OP_IMM
Definition: exu.h:57
@ JAL
Definition: exu.h:64
@ SYSTEM
Definition: exu.h:65
@ LUI
Definition: exu.h:61
@ AMO
Definition: exu.h:66
@ LOAD
Definition: exu.h:54
@ JALR
Definition: exu.h:63
@ PARA
Definition: exu.h:55
@ MISC_MEM
Definition: exu.h:56
@ BRANCH
Definition: exu.h:62
@ AUIPC
Definition: exu.h:58
@ STORE
Definition: exu.h:59
#define CFG_EXU_M_EXTENSION
RISC-V M-Extension.
Definition: paranut-config.h:141
#define PN_CLOCK_TRIGGERED(method_name)
Definition: base.h:595
Configuration Makros used in most ParaNut files.
sc_trace_file * tf
Definition: tlb_tb.cpp:94