RTL 模块设计模板
使用此模板创建新的 RTL 模块设计文档
1. 模块概述
1.1 功能描述
[用 2-3 句话描述模块的主要功能和在系统中的作用]
示例:
CPU 核心模块是 SoC 的处理单元,负责执行指令、处理数据和控制外设访问。它通过 AXI 总线与内存和外设通信。
1.2 模块位置
[描述模块在系统架构中的位置,可引用框图]
graph TB
subgraph SoC
CPU[CPU 核心]
AXI[AXI 互联]
MEM[内存]
PERI[外设]
end
CPU --> AXI
AXI --> MEM
AXI --> PERI
1.3 设计目标
| 目标 | 指标 | 说明 |
| 频率 | ≥500MHz | 在 28nm 工艺下 |
| 面积 | <10K gates | 综合后估算 |
| 功耗 | <10mW | 典型工作场景 |
2. 接口定义
2.1 时钟与复位
| 信号名 | 方向 | 类型 | 描述 |
clk | input | 时钟 | 主时钟,上升沿有效 |
rst_n | input | 复位 | 异步复位,低电平有效 |
2.2 AXI 主接口(示例)
| 信号名 | 方向 | 位宽 | 描述 |
AWADDR | output | 32 | 写地址 |
AWVALID | output | 1 | 写地址有效 |
AWREADY | input | 1 | 写地址就绪 |
WDATA | output | 32 | 写数据 |
WVALID | output | 1 | 写数据有效 |
WREADY | input | 1 | 写数据就绪 |
BRESP | input | 2 | 写响应 |
BVALID | input | 1 | 写响应有效 |
BREADY | output | 1 | 写响应就绪 |
ARADDR | output | 32 | 读地址 |
ARVALID | output | 1 | 读地址有效 |
ARREADY | input | 1 | 读地址就绪 |
RDATA | input | 32 | 读数据 |
RRESP | input | 2 | 读响应 |
RVALID | input | 1 | 读数据有效 |
RREADY | output | 1 | 读数据就绪 |
2.3 控制接口
| 信号名 | 方向 | 位宽 | 描述 |
enable | input | 1 | 模块使能 |
start | input | 1 | 操作启动 |
done | output | 1 | 操作完成 |
busy | output | 1 | 忙标志 |
3. 功能描述
3.1 工作流程
flowchart TD
A[空闲 IDLE] -->|start=1| B[初始化 INIT]
B --> C[执行操作 EXEC]
C -->|完成 | D[写结果 WRITE]
D --> E[完成 DONE]
E --> A
3.2 操作模式
| 模式 | 描述 | 配置位 |
| 单次模式 | 执行一次操作 | MODE=0 |
| 连续模式 | 持续执行操作 | MODE=1 |
| 测试模式 | 内部测试 | MODE=2 |
3.3 数据通路
[描述数据在模块内部的流动路径]
| 输入 FIFO → 处理单元 → 输出 FIFO → AXI 总线
|
4. 寄存器映射
| 偏移 | 名称 | 位宽 | 读写 | 复位值 | 描述 |
| 0x00 | CTRL | 32 | R/W | 0x00000000 | 控制寄存器 |
| 0x04 | STATUS | 32 | R | 0x00000000 | 状态寄存器 |
| 0x08 | DATA_IN | 32 | W | - | 输入数据 |
| 0x0C | DATA_OUT | 32 | R | - | 输出数据 |
详细寄存器定义见:寄存器映射
5. 状态机设计
5.1 状态定义
| 状态 | 编码 | 描述 |
| IDLE | 2'b00 | 空闲,等待启动 |
| INIT | 2'b01 | 初始化配置 |
| EXEC | 2'b10 | 执行操作 |
| DONE | 2'b11 | 操作完成 |
5.2 状态转移图
stateDiagram-v2
[*] --> IDLE
IDLE --> INIT: start=1
INIT --> EXEC: init_done
EXEC --> DONE: op_complete
DONE --> IDLE: ack=1
EXEC --> IDLE: reset
5.3 状态转移条件
| 当前状态 | 下一状态 | 条件 |
| IDLE | INIT | start == 1 |
| INIT | EXEC | init_done == 1 |
| EXEC | DONE | op_complete == 1 |
| DONE | IDLE | ack == 1 |
6. 时序要求
6.1 时钟约束
| create_clock -period 2.0 -name clk [get_ports clk]
create_clock -period 2.0 -name clk_axi [get_ports axi_clk]
|
6.2 输入延迟
| set_input_delay -clock clk 0.5 [get_ports {start enable*}]
|
6.3 输出延迟
| set_output_delay -clock clk 0.5 [get_ports {done busy*}]
|
6.4 关键路径
[描述模块内的关键时序路径和优化策略]
7. 实现文件
7.1 文件列表
| 文件 | 描述 | 行数 |
[module_name].v | 顶层模块 | - |
[module_name]_ctrl.v | 控制逻辑 | - |
[module_name]_datapath.v | 数据通路 | - |
[module_name]_fifo.v | FIFO 模块 | - |
7.2 模块实例化模板
| [module_name] u_[module_name] (
// 时钟与复位
.clk (clk),
.rst_n (rst_n),
// AXI 接口
.axi_awaddr (axi_awaddr),
.axi_awvalid (axi_awvalid),
.axi_awready (axi_awready),
// 控制接口
.enable (enable),
.start (start),
.done (done),
.busy (busy)
);
|
8. 验证计划
8.1 验证环境
8.2 测试用例
| ID | 测试名称 | 描述 | 优先级 | 状态 |
| TC_001 | 复位测试 | 验证复位行为 | 高 | 📝 待实现 |
| TC_002 | 基本功能 | 验证基本操作 | 高 | 📝 待实现 |
| TC_003 | 边界测试 | 验证边界条件 | 中 | 📝 待实现 |
| TC_004 | 异常处理 | 验证错误处理 | 中 | 📝 待实现 |
8.3 覆盖率目标
| 类型 | 目标 | 当前 |
| 代码覆盖率 | 95% | - |
| 功能覆盖率 | 100% | - |
9. 综合与实现
9.1 综合结果
| 指标 | 目标 | 实际 | 状态 |
| 频率 | 500MHz | - | ⏳ 待综合 |
| 面积 | 10K gates | - | ⏳ 待综合 |
| 功耗 | 10mW | - | ⏳ 待综合 |
9.2 综合约束
[综合约束文件路径和关键约束]
10. 修订历史
| 版本 | 日期 | 作者 | 变更描述 |
| 0.1 | YYYY-MM-DD | [作者] | 初始版本 |
| 1.0 | YYYY-MM-DD | [作者] | 正式发布 |
11. 参考文档
模板版本:1.0 | 最后更新:2026-05-03