sEMU
载入中...
搜索中...
未找到
core.hpp
浏览该文件的文档.
1#pragma once
2
3#include <memory>
4#include <cstdint>
5#include <string>
6
16
17class guest_mem;
18class VCoreTop;
19class VerilatedContext;
20
28class Core {
29public:
37 Core(guest_mem* mem_instance = nullptr);
38
42 ~Core();
43
45
49 void step();
50
56 void reset(int cycles = 1);
57
62 bool is_commit_valid() const;
63
68 uint32_t get_commit_pc() const;
69
74 uint32_t get_commit_wdata() const;
75
80 uint8_t get_commit_rd() const;
81
86 bool is_commit_wen() const;
87
91 uint32_t get_commit_inst() const;
92
96 bool is_commit_store() const;
97
101 bool is_commit_halt() const;
102
106 uint32_t get_commit_csr_waddr() const;
107
111 uint32_t get_commit_csr_wdata() const;
112
116 bool is_commit_csr_wen() const;
117
121 void print_registers() const;
122
128 uint32_t get_reg_by_name(const std::string& name) const;
129
135 uint32_t get_reg(int idx) const;
136
137private:
138 std::unique_ptr<VerilatedContext> contextp;
139 std::unique_ptr<VCoreTop> top;
140
144 void eval();
145};
uint32_t get_commit_inst() const
获取当前正提交的机器级精确指令码码字 (Instruction Code)
定义 core.cpp:149
std::unique_ptr< VerilatedContext > contextp
定义 core.hpp:138
bool is_commit_csr_wen() const
指示当前提交指令是否发生了一次有效的 CSR 写操作
定义 core.cpp:169
uint8_t get_commit_rd() const
获取被修改目标架构寄存器的索引映射
定义 core.cpp:141
void eval()
处理 DPI 逻辑绑定并应用所有组合逻辑的顺序计算和传播
定义 core.cpp:109
uint32_t get_commit_pc() const
获取成功提交指令的 PC (程序计数器) 值
定义 core.cpp:133
uint32_t get_commit_csr_wdata() const
获取提交阶段写入到对应 CSR 寄存器中的数据
定义 core.cpp:165
void step()
推进一个完整的硬件时钟周期 (Tick/Step)
定义 core.cpp:114
CoreState state
保存仿真器目前的运行状态
定义 core.hpp:44
uint32_t get_commit_csr_waddr() const
获取提交阶段所指向的 CSR 寄存器目标地址
定义 core.cpp:161
Core(guest_mem *mem_instance=nullptr)
构造函数:初始化核心实例
定义 core.cpp:92
bool is_commit_store() const
指示提交的指令是否执行了内存存储 (Store) 操作
定义 core.cpp:153
~Core()
析构函数:销毁 Verilator 实例以及相关的运行追踪 (Trace)
定义 core.cpp:105
bool is_commit_wen() const
判定寄存器写回逻辑是否有效 (Write Enable)
定义 core.cpp:145
void reset(int cycles=1)
异步触发系统复位信号
定义 core.cpp:121
uint32_t get_reg(int idx) const
通过底层寄存器索引读取目标寄存器存储的值
定义 core.cpp:205
std::unique_ptr< VCoreTop > top
定义 core.hpp:139
bool is_commit_valid() const
检查当前周期是否有一条指令成功越过了写回 (Write-back) 阶段并真正提交 (Commit)
定义 core.cpp:129
bool is_commit_halt() const
指示提交的指令是否触发了核心挂起或陷阱 (如 EBREAK 指令)
定义 core.cpp:157
void print_registers() const
打印当前 CPU 矩阵各寄存器的文本格式概览,直观呈现核心状态信息
定义 core.cpp:180
uint32_t get_commit_wdata() const
获取写入内部 GPR (通用寄存器) 的原始数据
定义 core.cpp:137
uint32_t get_reg_by_name(const std::string &name) const
利用字符串字面量键值查找并解析硬件内部的直接变量状态
定义 core.cpp:192
内存子系统抽象层 (Guest Memory Subsystem)
定义 mem.hpp:29
CoreState
仿真核心 (Core) 的当前运行状态枚举
定义 core.hpp:10
@ STOPPED
核心已停止或处于暂停状态
定义 core.hpp:11
@ RUNNING
核心正在正常运行并执行指令
定义 core.hpp:12
@ ABORT
核心遇到了致命的异常或错误 (如段错误或未实现指令)
定义 core.hpp:14
@ END
核心遇到正常结束标志 (如 EBREAK 指令) 并成功停止
定义 core.hpp:13