这是用于龙芯杯 NSCSCC 个人赛的 LoongArch LA32R 单核 SoC 工程。该分支以稳定的 120 MHz CPU 配置为基线,仅保留 RTL、Xilinx IP、XDC 约束、Vivado 脚本与必要的汇编构建文件;Vivado 自动生成目录、实现结果和 bitstream 不纳入版本库。
- FPGA:
xc7a200tfbg676-2 - 顶层模块:
thinpad_top - 输入时钟:50 MHz
- CPU 时钟:120 MHz
- SRAM 控制时钟:60 MHz
- UART 时钟:25 MHz
- CPU 指令集:LoongArch LA32R 子集
时钟配置由 src/soc/xilinx_ip/clk_pll/clk_pll.xci 管理。实际可达频率与 WNS 必须以后续 Vivado post-route 时序报告为准,不应仅以 PLL 配置值判断。本仓库当前源码锚点在 Vivado 2019.2 / xc7a200tfbg676-2 上已取得 post-route setup WNS +0.006 ns、hold WHS +0.079 ns;适用范围、关键路径和资源利用率见 docs/RELEASE_120MHZ.md。
- 分级取指、译码、寄存器读取、执行、访存、写回数据通路;关键模块位于
src/soc/ip/myCPU/。 - 有序完成与退休、数据相关跟踪、结果旁路和流水乘法支持。
- I-Cache、write-through D-Cache、store queue、写合并缓冲和原生内存仲裁。
- BaseRAM、ExtRAM、UART、confreg 通过片上原生内存通路连接。
- 顶层时钟、复位与板级接口在
src/soc/thinpad_top.v中集成。
| 路径 | 内容 |
|---|---|
src/soc/ |
可综合 RTL;顶层必须为 thinpad_top。 |
src/soc/ip/myCPU/ |
CPU 核心流水线、Cache、旁路、分支与内存控制逻辑。 |
src/soc/xilinx_ip/ |
已提交的 Xilinx IP 配置文件(.xci / .xcix)。 |
run_vivado/constraints/ |
板级引脚、时钟与时序约束(XDC)。 |
run_vivado/flow/ |
默认 Vivado 工程创建、实现与 bitstream 脚本。 |
run_vivado/simulation/ |
仿真相关模型与测试平台文件。 |
asm/ |
用户汇编程序及其构建规则;不属于 CPU RTL 实现本体。 |
src/vivado_cannot/ |
不直接参与 Vivado 综合的仿真或说明文件。 |
design.pdf |
设计说明文档。 |
使用 Vivado 2019.2,在仓库根目录执行:
cd run_vivado
vivado -mode batch -source flow/create_vivado_project.tcl
vivado -mode batch -source flow/implement_design.tcl
vivado -mode batch -source flow/generate_bitstream.tcl实现完成后,重点检查:
run_vivado/project/thinpad_top.runs/impl_1/timing_summary.rpt
run_vivado/project/thinpad_top.runs/impl_1/utilization.rpt
只有 post-route WNS 为正、功能回归通过时,才应将该实现视为可交付版本。
asm/ 用于生成监督程序可装载的 user-sample.bin:
make -C asm clean all该命令会检查入口地址和 CPU 支持的指令集合。汇编程序与 CPU RTL 分开维护;修改汇编不等同于修改 CPU 架构。
- 提交 RTL、XDC、
.xci、Tcl、源代码、文档和必要的汇编源文件。 - 不提交
run_vivado/project/、.Xil/、*.runs/、*.cache/、bitstream、网表、检查点及日志。 - 每次修改 RTL 或 XDC 后,重新执行综合、布局布线、时序检查和功能验证。
- 不用时序例外掩盖真实关键路径;以 post-route 报告作为时序结论。
该 GitHub main 分支用于保存 120 MHz CPU 的干净、可复现源码基线。后续实验性优化应从新的分支开展,避免污染该基线。
交付边界、复现命令和待记录的实现证据见
docs/RELEASE_120MHZ.md;提交 RTL、XDC 或
Vivado 脚本前的验证要求见 CONTRIBUTING.md。GitHub
Actions 只检查源码卫生,不在云端宣称完成 Vivado 实现或功能验证。