|
sEMU
|
处理器核心仿真封装类 更多...
#include <core.hpp>

Public 成员函数 | |
| Core (guest_mem *mem_instance=nullptr) | |
| 构造函数:初始化核心实例 | |
| ~Core () | |
| 析构函数:销毁 Verilator 实例以及相关的运行追踪 (Trace) | |
| void | step () |
| 推进一个完整的硬件时钟周期 (Tick/Step) | |
| void | reset (int cycles=1) |
| 异步触发系统复位信号 | |
| bool | is_commit_valid () const |
| 检查当前周期是否有一条指令成功越过了写回 (Write-back) 阶段并真正提交 (Commit) | |
| uint32_t | get_commit_pc () const |
| 获取成功提交指令的 PC (程序计数器) 值 | |
| uint32_t | get_commit_wdata () const |
| 获取写入内部 GPR (通用寄存器) 的原始数据 | |
| uint8_t | get_commit_rd () const |
| 获取被修改目标架构寄存器的索引映射 | |
| bool | is_commit_wen () const |
| 判定寄存器写回逻辑是否有效 (Write Enable) | |
| uint32_t | get_commit_inst () const |
| 获取当前正提交的机器级精确指令码码字 (Instruction Code) | |
| bool | is_commit_store () const |
| 指示提交的指令是否执行了内存存储 (Store) 操作 | |
| bool | is_commit_halt () const |
| 指示提交的指令是否触发了核心挂起或陷阱 (如 EBREAK 指令) | |
| uint32_t | get_commit_csr_waddr () const |
| 获取提交阶段所指向的 CSR 寄存器目标地址 | |
| uint32_t | get_commit_csr_wdata () const |
| 获取提交阶段写入到对应 CSR 寄存器中的数据 | |
| bool | is_commit_csr_wen () const |
| 指示当前提交指令是否发生了一次有效的 CSR 写操作 | |
| void | print_registers () const |
| 打印当前 CPU 矩阵各寄存器的文本格式概览,直观呈现核心状态信息 | |
| uint32_t | get_reg_by_name (const std::string &name) const |
| 利用字符串字面量键值查找并解析硬件内部的直接变量状态 | |
| uint32_t | get_reg (int idx) const |
| 通过底层寄存器索引读取目标寄存器存储的值 | |
Public 属性 | |
| CoreState | state |
| 保存仿真器目前的运行状态 | |
Private 成员函数 | |
| void | eval () |
| 处理 DPI 逻辑绑定并应用所有组合逻辑的顺序计算和传播 | |
Private 属性 | |
| std::unique_ptr< VerilatedContext > | contextp |
| std::unique_ptr< VCoreTop > | top |
处理器核心仿真封装类
作为 Verilator 编译出的 CPU 模型的高级管理与调度层。 负责与模拟 RISC-V 时钟周期的 Verilog 底层模型交互,处理 DPI-C 回调, 设置引脚信号,同时为调试器提取和抽象寄存器/运行状态的访问接口。
| Core::Core | ( | guest_mem * | mem_instance = nullptr | ) |
构造函数:初始化核心实例
初始化 Verilator 仿真上下文 (Context) 并与客户机内存在软件层面进行绑定。
| mem_instance | 指向 guest_mem 的指针,用于模拟处理器与外部内存总线的交互 |

| Core::~Core | ( | ) |
析构函数:销毁 Verilator 实例以及相关的运行追踪 (Trace)
|
private |
处理 DPI 逻辑绑定并应用所有组合逻辑的顺序计算和传播

| uint32_t Core::get_commit_csr_waddr | ( | ) | const |
获取提交阶段所指向的 CSR 寄存器目标地址
| uint32_t Core::get_commit_csr_wdata | ( | ) | const |
获取提交阶段写入到对应 CSR 寄存器中的数据
| uint32_t Core::get_commit_inst | ( | ) | const |
获取当前正提交的机器级精确指令码码字 (Instruction Code)
| uint32_t Core::get_commit_pc | ( | ) | const |
获取成功提交指令的 PC (程序计数器) 值
| uint8_t Core::get_commit_rd | ( | ) | const |
获取被修改目标架构寄存器的索引映射

| uint32_t Core::get_commit_wdata | ( | ) | const |
获取写入内部 GPR (通用寄存器) 的原始数据

| uint32_t Core::get_reg | ( | int | idx | ) | const |
通过底层寄存器索引读取目标寄存器存储的值
| idx | 要检索的寄存器索引 (0 到 31) |

| uint32_t Core::get_reg_by_name | ( | const std::string & | name | ) | const |
利用字符串字面量键值查找并解析硬件内部的直接变量状态
| name | 要查询的寄存器名格式化字符串 (例如 "a0", "pc") |

| bool Core::is_commit_csr_wen | ( | ) | const |
指示当前提交指令是否发生了一次有效的 CSR 写操作
| bool Core::is_commit_halt | ( | ) | const |
指示提交的指令是否触发了核心挂起或陷阱 (如 EBREAK 指令)
| bool Core::is_commit_store | ( | ) | const |
指示提交的指令是否执行了内存存储 (Store) 操作
| bool Core::is_commit_valid | ( | ) | const |
检查当前周期是否有一条指令成功越过了写回 (Write-back) 阶段并真正提交 (Commit)
| bool Core::is_commit_wen | ( | ) | const |
判定寄存器写回逻辑是否有效 (Write Enable)

| void Core::print_registers | ( | ) | const |
打印当前 CPU 矩阵各寄存器的文本格式概览,直观呈现核心状态信息

| void Core::reset | ( | int | cycles = 1 | ) |
异步触发系统复位信号
| cycles | 拉高复位引脚并持续的周期数,随后将自动拉低清除复位状态 |


| void Core::step | ( | ) |
推进一个完整的硬件时钟周期 (Tick/Step)


|
private |
| CoreState Core::state |
保存仿真器目前的运行状态
|
private |