# cpu_flow **Repository Path**: Rinux-0/cpu_flow ## Basic Information - **Project Name**: cpu_flow - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-10 - **Last Updated**: 2026-05-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # exp789 — 五级流水线 CPU (iverilog 适配版) ## 1. 项目说明 此项目原为 **Vivado 工程**(针对 FPGA 板级开发),经 `rinux[0]` 适配性改造后,现仅依赖开源工具链 **iverilog + vvp + gtkwave**,可在纯命令行环境下完成编译、仿真和波形查看。 ``` ├─README.md └─exp/ # exp7 / exp89 ├─ m.sh / m.ps1 # make: 编译 + 仿真(Linux-bash / Windows-pwsh) ├─ w.sh / w.ps1 # watch: 打开波形(Linux-bash / Windows-pwsh) ├─ script/ # 编译/仿真脚本 └─ mycpu_env/ ├─ myCPU/ # CPU 核心 Verilog 源文件 ├─ soc_verify/ # SoC 顶层 + Block RAM 仿真模型 ├─ func/ # 功能测试汇编程序 ├─ gettrace/ # 指令跟踪模块 └─ module_verify/ # 模块级验证 ``` ## 2. 环境安装 ### Linux ```bash # Debian / Ubuntu sudo apt install iverilog gtkwave # Arch / Cachyos sudo pacman -Syu iverilog gtkwave ``` > vvp 内含于 iverilog 包 ### Windows ```powershell # 安装 scoop Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression # 配置 scoop scoop bucket add main scoop bucket add extras scoop bucket add scoop-apps https://github.com/kkzzhizhou/scoop-apps scoop update -g * # 安装 iverilog 套件 scoop install -g iverilog ``` > 推荐借助包管 scoop > vvp 和 gtkwave 内含于 iverilog 包 安装后验证: ```bash iverilog -V # 建议: 版本号 == 13.0 vvp -V gtkwave -V ``` ## 3. 使用方式 ### 3.1 编译 + 仿真 **Linux / WSL / macOS:** ```bash cd exp7 # exp89 ./m.sh ``` **Windows (PowerShell):** ```powershell cd exp7 # exp89 ./m.ps1 ``` `m.sh` / `m.ps1` 依次执行: 1. `script/iverilog-compile.*` — 用 iverilog 编译 `myCPU/` + `soc_verify/` 下所有 `.v` 文件,生成 `target/wave.out` 2. `script/vvp-simulate.*` — 用 vvp 执行仿真,产生 `target/wave.lxt2` 波形文件 ### 3.2 查看波形 **Linux:** ```bash ./w.sh ``` **Windows:** ```powershell ./w.ps1 ``` > 本质就是 `gtkwave ./target/wave.lxt2` ## 4. rinux 注释说明 代码中标记 `rinux[...]` 字样,对应不同实验阶段的改动: | 标记 | 含义 | | --- | --- | | `rinux[0]` | **适配性工作**:Vivado → iverilog 移植 | | `rinux[1]` | **exp7**:20 条指令五级流水 CPU,不考虑 hazard,func 测试需插入 NOP 间隔 | | `rinux[2]` | **exp8**:新增阻塞逻辑(load-use 冲突检测、流水线暂停) | | `rinux[3]` | **exp9**:新增前递逻辑(EX/MEM/WB 到 ID 的数据前递多路选择) | > exp789: 无需 Xilinx IP 核依赖 ## 5. 其他 - iverilog [github 开源地址](https://github.com/steveicarus/iverilog) - iverilog 支持主流厂商 **FPGA IP 核仿真**(如Xilinx / Lattice),详见 [指南](https://iverilog.fandom.com)