1. 设计范围与假设
本方案把 AXI4、AHB、APB、ACE 四类 AMBA 外部协议统一收敛到一套内部协议 CIP(Common Internal Protocol)。外部协议只在 IB/TB 边界出现;RT、CA、WA、PD 的数据面均只识别 CIP。这样可以把协议转换复杂度、互连复杂度和物理域适配复杂度分别收敛。
协议边界
IB 负责 Ext → CIP,TB 负责 CIP → Ext。除 ACE snoop 外,内部主流通道沿用 AXI 风格五通道。
Crossbar 核心
RT 负责地址解码、仲裁、ID/route scoreboard、返回路由、错误闭环和可选一致性钩子。
插件化适配
CA、WA、PD 均以 CIP 通道为插入边界,可按端口、目标组、power domain 进行局部例化。
ACE 边界假设:ACE 不能只理解成“AXI 加 sideband”。若要完整支持 full ACE,必须定义 coherent home 在 RT 内还是外部 fabric。本报告给出 ACE_TUNNEL 和 ACE_HOME 两种实现模式。
2. 总体架构
图 0 Image 2.0 绘制的视觉总览图(用于沟通展示;工程定义以本文 SVG 图和接口表为准)
图 1 顶层工程架构图
2.1 数据方向
| 事务类型 | 方向 | 内部路径 | 说明 |
| 写地址/写数据 | IB → RT → TB | CIP_AW + CIP_W | AXI W 无 ID,IB 需要基于 AW 队列补内部 txn_id。 |
| 写响应 | TB → RT → IB | CIP_B | 通过 txn_id 查返回源端口和外部 ID。 |
| 读地址 | IB → RT → TB | CIP_AR | RT 按地址表解码目标 TB,并检查权限/电源状态。 |
| 读数据/读响应 | TB → RT → IB | CIP_R | 支持 burst、last、resp 聚合和乱序返回。 |
| ACE snoop | RT.COH ↔ ACE Agent | CIP_AC/CIP_CR/CIP_CD | 仅在 ACE 配置启用;需要独立 buffer 防死锁。 |
2.2 六大类模块职责
| 模块 | 核心职责 | 是否处理外部协议 | 可内嵌 CA/WA |
| IB | 外部入口协议解析、事务归一化、ID/order 分配、错误早返回、ACE snoop agent 入口 | 是,入口侧 | 是 |
| TB | 目标调度、CIP 到外部协议恢复、ID remap、响应映射、AHB/APB 串行化 | 是,出口侧 | 是 |
| RT | Crossbar 矩阵、地址解码、仲裁、scoreboard、返回路由、QoS、错误目标 | 否 | 是 |
| CA | 基于 CIP 通道的异步时钟域桥,每通道独立 FIFO | 否 | 不适用 |
| WA | CIP beat/width 转换、burst 重写、response 聚合、byte strobe 处理 | 否 | 不适用 |
| PD | power/reset/clock domain 边界,quiesce、drain、isolation、wakeup | 否 | 是 |
3. CIP 内部协议规划
CIP 应被定义为 AXI4/ACE 能力的内部超集。AXI4/AHB/APB 都可以映射到 CIP 的普通读写 profile;ACE 额外启用 snoop、barrier、DVM、shareability 与 cache maintenance 属性。
图 2 CIP 通道规划
3.1 通道列表
| 通道 | 方向 | payload | 用途 | 是否可被 CA/WA 处理 |
CIP_AW | IB → TB | cip_addr_t | 写地址、写属性、事务 ID、目标路由 | CA 可穿越;WA 可改写 len/size |
CIP_W | IB → TB | cip_wdata_t | 写数据、byte strobe、last、内部 txn_id | CA 可穿越;WA 可拆/合 beat |
CIP_B | TB → IB | cip_resp_t | 写响应和错误码 | CA 可穿越;WA 可聚合子响应 |
CIP_AR | IB → TB | cip_addr_t | 读地址、读属性、事务 ID、目标路由 | CA 可穿越;WA 可改写 len/size |
CIP_R | TB → IB | cip_rdata_t | 读数据、resp、last | CA 可穿越;WA 可拆/合 beat |
CIP_AC | RT.COH → ACE Agent | cip_snoop_req_t | snoop 请求 | CA 可穿越;WA 通常不改地址语义 |
CIP_CR | ACE Agent → RT.COH | cip_snoop_resp_t | snoop 响应 | CA 可穿越;WA 不改语义 |
CIP_CD | ACE Agent → RT.COH | cip_snoop_data_t | snoop 数据 | CA 可穿越;WA 需按 cache-line 粒度处理 |
3.2 握手规则
统一规则:所有 CIP 通道均采用 valid/ready/payload。valid 一旦拉高,在握手完成前 payload 必须保持稳定;模块不能让 valid 组合依赖下游 ready,以避免组合环和死锁。
3.3 地址类 payload 建议
typedef struct packed {
logic [SRC_W-1:0] src_id; // IB 入口编号
logic [DST_W-1:0] dst_id; // RT 解码后的 TB 编号
logic [CIP_ID_W-1:0] txn_id; // 内部全局唯一事务 ID
logic [EXT_ID_W-1:0] ext_id; // 原外部协议 ID;APB/AHB 可由 IB 生成伪 ID
logic [ADDR_W-1:0] addr;
logic [7:0] len; // beats - 1,兼容 AXI4 256 beat
logic [2:0] size; // bytes_per_beat = 2^size
logic [1:0] burst; // FIXED / INCR / WRAP
logic is_write;
logic [3:0] qos;
logic [3:0] region;
logic [2:0] prot;
logic [3:0] cache;
logic [1:0] domain; // non-shareable / inner / outer / system
logic [1:0] order_domain; // relaxed / device / barrier / coherent
logic exclusive;
logic locked;
logic [ATOP_W-1:0] atomic_op; // 可选扩展
logic [COH_W-1:0] coh_op; // ACE/DVM/cache maintenance 操作
logic [USER_W-1:0] user;
} cip_addr_t;
3.4 数据与响应 payload 建议
typedef enum logic [2:0] {
CIP_RESP_OKAY = 3'd0,
CIP_RESP_EXOKAY = 3'd1,
CIP_RESP_SLVERR = 3'd2,
CIP_RESP_DECERR = 3'd3,
CIP_RESP_PWRERR = 3'd4,
CIP_RESP_TIMEOUT= 3'd5
} cip_resp_e;
typedef struct packed {
logic [CIP_ID_W-1:0] txn_id;
logic [CIP_DATA_W-1:0] data;
logic [CIP_DATA_W/8-1:0] strb;
logic last;
cip_resp_e resp;
logic [USER_W-1:0] user;
} cip_data_t;
3.5 外部协议到 CIP profile
| 外部协议 | CIP profile | 默认 outstanding | ordering | coherency | 备注 |
| AXI4 | Full non-coherent | 多 outstanding | 按 ID 和外部协议规则 | 无 AC/CR/CD | 保留 QoS、Region、Cache、Prot。 |
| AHB | Pipelined simple | 推荐 1 或小深度 in-order | 强 in-order | 默认 non-coherent | HBURST 可映射到 CIP burst;复杂组合由 IB/TB 限制。 |
| APB | Register/device | 1 | 严格顺序 | non-coherent/device | 单 beat;通常不做跨事务合并。 |
| ACE | Full coherent / tunnel | 多 outstanding | barrier/DVM/coh domain | 启用 AC/CR/CD | 必须明确 coherent home 位置。 |
4. IB 内部架构
图 3 IB 微架构图
4.1 IB 子模块划分
| 子模块 | 输入/输出 | 职责 | 关键状态 |
| Protocol Frontend | 外部 AMBA 信号 ↔ 内部解析事件 | 握手采样、backpressure、协议字段捕获、pipeline 时序隔离。 | 采样寄存器、ready 生成、front skid。 |
| Legality Checker | 解析事件 → 合法事务/本地错误 | 检查 burst、size、alignment、exclusive、ACE 属性、协议配置能力。 | 错误码、非法组合事件、first-fail 记录。 |
| Transaction Normalizer | 外部字段 → cip_addr_t | 把 AXI/AHB/APB/ACE 字段归一到 CIP header。 | 协议 profile、默认属性、device/cacheable mapping。 |
| ID Allocator | ext_id/src_id/seq → txn_id | 生成全局唯一内部事务 ID,维护 ext_id 恢复信息。 | per-ID sequence、free-list、outstanding table。 |
| Order Tracker | CIP header → order gate | 维护同 ID/同 domain 顺序、barrier、device 强序。 | ID busy、barrier pending、fence count。 |
| AW/W Pairing FIFO | AW 与 W beat | 给 AXI W beat 补 txn_id,绑定写数据到目标 route。 | AW route FIFO、W beat counter、last check。 |
| Ingress Queue | CIP_AW/W/AR | 吸收 RT backpressure,提供 credit/阈值。 | fifo level、almost full、credit return。 |
| Response Formatter | CIP_B/R → 外部 B/R/HRESP/PSLVERR | 恢复外部 ID,处理 error、last、APB PREADY/HREADY。 | return table、resp reorder queue。 |
| Snoop Frontend | CIP_AC/CR/CD ↔ ACE AC/CR/CD | 处理 ACE snoop 通道;对 non-ACE 入口裁剪。 | snoop credit、CR/CD pair 状态。 |
4.2 各协议入口处理
| 入口 | 处理策略 | 容易出错点 |
| AXI4 IB | AW/AR 直接生成 cip_addr_t;W 基于 AW FIFO 补 txn_id;B/R 根据 txn_id 恢复 BID/RID。 | W 无 ID、AW/W interleave 限制、ID-based ordering、burst 4KB 边界。 |
| AHB IB | 把 HTRANS/HADDR/HWRITE/HSIZE/HBURST 组装成 CIP;推荐单 outstanding。 | HREADY 反压、地址/数据 phase pipeline、ERROR 响应的周期数。 |
| APB IB | PSEL/PENABLE 形成单 beat CIP;PREADY 等待 CIP response;PSLVERR 映射错误。 | APB 无 burst/ID,强 device 顺序,不能跨事务合并。 |
| ACE IB | AXI 通道 + ACE sideband + AC/CR/CD snoop 端口;barrier/DVM/coh_op 进入 CIP。 | 必须预留 snoop buffer;coherent home 未定义时只能 tunnel。 |
5. TB 内部架构
图 4 TB 微架构图
5.1 TB 子模块划分
| 子模块 | 职责 | 实现建议 |
| Input Demux | 按 CIP_AW/W/AR/AC 分发到 write/read/snoop 路径。 | 每通道独立队列,W 路径根据 txn_id 或 AW route FIFO 跟随。 |
| Target Scheduler | 控制目标 acceptance、读写优先级、QoS 与 starvation guard。 | AXI 目标可多 outstanding;AHB/APB 目标必须串行化。 |
| ID Remap Table | 当外部 ID 位宽小于 CIP ID 时分配 ext_id,并维护返回查表。 | free-list + CAM/RAM table;错误/timeout 也必须释放。 |
| Protocol Backend | 把 CIP 恢复成 AXI4/AHB/APB/ACE manager-facing 信号。 | 独立 backend wrapper,统一上游接口。 |
| Response Mapper | 外部响应映射到 CIP_B/R,包括 SLVERR/DECERR/PWRERR/TIMEOUT。 | 读 burst 需要 last;写响应需要原 txn_id。 |
| Default/Error Target | 为 decode miss、权限失败、掉电目标、非法请求生成确定响应。 | 可在 RT 或 TB 实现;建议 RT 有全局默认错误目标。 |
5.2 TB 协议输出策略
| 目标协议 | 策略 | 限制/注意 |
| AXI4 TB | 保留多 outstanding、QoS、Region、Cache、Prot;必要时 remap ID。 | 外部 target 的 ID/acceptance/ordering 能力决定限流。 |
| AHB TB | 把 CIP 转为 HTRANS/HADDR/HWRITE/HSIZE/HBURST,单 pipeline 执行。 | 遇到不支持 burst/atomic/coherent 时应拆分或报错。 |
| APB TB | setup/access 两阶段 FSM;PREADY wait;PSLVERR 映射 CIP error。 | 单 beat;多个 APB peripheral 可在 TB 内做 PSEL decode。 |
| ACE TB | ACE tunnel 时转发 ACE 语义;ACE home 时与 RT.COH 交互。 | 需要 AC/CR/CD 独立通路和 buffer credit。 |
6. RT / Crossbar 架构
图 5 RT 微架构图
6.1 RT 数据面
| 路径 | 主要模块 | 功能 |
| Request forward | Ingress Slice → Decode → Scoreboard → AW/W/AR Matrix → Egress Arbiter | 按地址和目标状态路由请求,执行仲裁、限流和顺序约束。 |
| Response return | B/R Return Matrix → Route Lookup → Ingress Response Queue | 按 txn_id 把响应送回源 IB,并恢复外部 ordering。 |
| Error path | Decode/Permission/PD 检查 → Error Responder | 不把非法事务发到目标;本地生成确定性响应。 |
| Coherency path | RT.COH hooks → AC/CR/CD Router | 处理 ACE snoop、barrier、DVM 或把其 tunnel 到外部 coherent fabric。 |
6.2 地址表与权限结构
typedef struct packed {
logic [ADDR_W-1:0] base;
logic [ADDR_W-1:0] mask;
logic [DST_W-1:0] dst_id;
logic valid;
logic secure_only;
logic privileged_only;
logic executable;
logic cacheable_allowed;
logic coherent_allowed;
logic [PWR_W-1:0] pwr_domain;
logic wake_on_access;
logic [3:0] default_qos;
} cip_addr_region_t;
6.3 仲裁建议
| 策略 | 适用场景 | 实现备注 |
| Round-Robin | 默认公平仲裁 | 每个 TB 出口一个 RR 指针。 |
| Weighted RR | 多入口带宽配比 | 配合 QoS 和 credit;避免低权重端口饿死。 |
| Priority + Aging | 实时/显示/音频链路 | 优先级高者先发,但 aging 提升等待太久的请求。 |
| QoS-aware | AXI QoS/内部性能隔离 | 把 AXI AxQOS 映射为内部服务等级。 |
6.4 顺序约束
最小保证:同一 IB、同一外部 ID、同一 order domain 内,不允许违反外部协议顺序。APB/AHB 入口始终强 in-order;AXI4/ACE 可利用多 ID 乱序,但 barrier、DVM、device 和 coherent 操作不得被普通事务穿越。
7. ACE 一致性子层
图 6 RT.COH 微架构图
7.1 两种 ACE 模式
| 模式 | 桥内职责 | 优点 | 代价/限制 |
ACE_TUNNEL | 透明承载 ACE sideband 与 AC/CR/CD;coherent home 在外部 fabric。 | RTL 和验证成本低,适合第一版。 | 本桥不能独立宣称 full coherent home。 |
ACE_HOME | RT.COH 实现 snoop filter/directory、snoop fanout、CR/CD aggregation、barrier/DVM 完成条件。 | 本桥可作为 coherent interconnect。 | 验证复杂度高;必须专门做死锁、缓存状态和异常路径证明。 |
7.2 必备缓冲与死锁隔离
CIP_AC、CIP_CR、CIP_CD 不能与普通 AW/W/AR/R/B 共用会产生 head-of-line blocking 的单一队列。
- CR/CD aggregation 需要能处理“有数据响应”和“无数据响应”的不同完成条件。
- DVM 和 barrier 需要全局完成计数,不允许被普通事务绕过。
- ACE agent 掉电前必须通过 PD 与 RT.COH 协商,保证没有未完成 snoop。
8. CA 异步桥
图 7 CA 微架构图
8.1 设计要点
| 项目 | 建议 | 原因 |
| FIFO 粒度 | 每个 CIP 通道一个异步 FIFO。 | 避免 AW/W/R/响应互相阻塞,降低死锁风险。 |
| 指针同步 | Gray pointer + 双触发同步。 | CDC 标准实现方式,便于形式检查。 |
| reset | src/dst reset 独立同步,提供 flush/quiesce 状态。 | 支持不同 reset domain 和 PD 关电流程。 |
| 语义 | 不改 ID、不拆 burst、不合并数据。 | CA 只负责 clock crossing,避免职责混乱。 |
| 监控 | 暴露 fifo_level、empty、full、cdc_error、flush_done。 | 支持 PD 和 debug。 |
9. WA 位宽转换
图 8 WA 微架构图
9.1 转换策略
| 场景 | 动作 | 响应处理 |
| Downsize:宽 → 窄 | 一个宽 beat 拆多个窄 beat;重写 len/size/addr;拆分 strb。 | 多个子响应聚合为原事务响应;任一 error 升级为 error。 |
| Upsize:窄 → 宽 | 多个窄 beat 合并为宽 beat;按 byte lane 放置 data/strb。 | 读数据需要 merge 后再返回;写响应按原事务聚合。 |
| Device/APB | 通常只做 lane placement,不跨事务合并。 | 保持强顺序和单事务可观测性。 |
| ACE CD | 按 cache line 或项目定义粒度转换。 | 必须与 CR 状态、data owner 和 snoop 完成条件一致。 |
9.2 禁止跨越规则
WA 不允许跨越:4KB 边界、burst 边界、barrier、DVM、exclusive、atomic、coherent operation、device 强序事务。遇到目标不支持的组合,应由 IB/TB/RT 返回错误或由 WA 拆分为合法子事务。
10. PD 电源/复位域管理
图 9 PD 微架构图
10.1 状态机
| 状态 | 行为 | 退出条件 |
| ACTIVE | 正常接收和转发 CIP。 | 收到 quiesce 或 powerdown 请求。 |
| QUIESCE | 停止接收新事务;允许已接收事务继续。 | accept gate 生效。 |
| DRAIN | 等待 outstanding、FIFO、CA/WA pipeline 全部清空。 | 所有 idle/empty 置位。 |
| ISOLATE | 输出 clamp,输入按策略 ignore 或 error。 | isolation ack。 |
| OFF/RET | 目标域关电或保持 retention。 | wakeup 请求或外部 power request。 |
| WAKE | 上电、时钟稳定、reset 同步释放、de-isolate。 | domain ready。 |
10.2 访问掉电目标的策略
| 配置 | 行为 | 适用对象 |
WAKE_ON_ACCESS=1 | PD hold 事务并触发 wake;目标 ready 后继续。 | 低速 APB/AHB 外设、可唤醒 SRAM。 |
ERROR_ON_POWERDOWN=1 | 立即返回 CIP_RESP_PWRERR 或映射为 SLVERR/DECERR。 | 不可唤醒目标或安全隔离区域。 |
POSTED_WRITE_ALLOW=1 | 允许特定 posted 写先被接收,但必须保证不会丢失。 | 很少使用;需强约束和审计。 |
DRAIN_TIMEOUT_EN=1 | drain 超时触发中断/错误/系统恢复。 | 所有 production 配置建议启用。 |
11. 跨模块机制
11.1 ID / Route / Scoreboard
推荐内部 ID 采用 {src_id, ext_id, local_seq} 形式。src_id 负责返回路径,ext_id 负责恢复外部协议 ID,local_seq 避免同一外部 ID 多 outstanding 时内部冲突。RT 和 TB 均需要对异常路径释放 scoreboard,包括 decode error、timeout、power error、exclusive fail。
11.2 错误响应映射
| CIP 响应 | AXI/ACE | AHB | APB | 典型来源 |
| OKAY | OKAY | OKAY | PSLVERR=0 | 正常完成 |
| EXOKAY | EXOKAY | 通常不支持,映射 ERROR 或禁用 | 通常不支持 | exclusive 成功 |
| SLVERR | SLVERR | ERROR | PSLVERR=1 | 目标内部错误 |
| DECERR | DECERR | ERROR | PSLVERR=1 | 地址未命中/权限失败 |
| PWRERR | SLVERR 或 DECERR | ERROR | PSLVERR=1 | 目标掉电且不可唤醒 |
| TIMEOUT | SLVERR | ERROR | PSLVERR=1 | 外设无响应或 drain 超时 |
11.3 死锁规避规则
- request path 与 response path 独立缓冲,response 不应被 request 永久阻塞。
- ACE AC/CR/CD 必须有独立 credit,不与普通读写共用单点阻塞队列。
- WA 拆分事务前必须确保子事务响应空间,不允许发出无法回收的子事务。
- PD quiesce 后不再接收新事务,并确保所有 CA/WA/RT slice 都能上报 idle。
- RT arbitration 必须具备 anti-starvation,不能让低优先级端口永远得不到服务。
- 所有 ID remap/free-list 在错误、reset、timeout 路径必须可恢复。
12. 参数化与接口
12.1 顶层参数建议
| 参数 | 说明 | 建议取值/备注 |
NUM_IB, NUM_TB | 入口/出口数量 | 按 SoC 拓扑配置。 |
ADDR_W | 地址宽度 | 32/40/48/64。 |
CIP_DATA_W | 内部数据宽度 | 64/128/256/512;建议按主存路径选择。 |
CIP_ID_W | 内部事务 ID 宽度 | SRC_W + EXT_ID_W + SEQ_W。 |
ENABLE_CA, ENABLE_WA, ENABLE_PD | 端口级适配开关 | IB/TB/RT/PD 内部均可局部启用。 |
ENABLE_ACE | 是否启用 ACE 通道 | 启用后加入 AC/CR/CD、domain、barrier、DVM。 |
ENABLE_COH_HOME | 是否在 RT 内实现 coherent home | 第一版建议默认 0。 |
MAX_OUTSTANDING | 端口 outstanding 上限 | 按协议和目标 acceptance 设置。 |
ENABLE_QOS | QoS 仲裁 | 显示/ISP/NPU/DDR 等场景建议启用。 |
12.2 CIP 通道接口模板
interface cip_chan_if #(parameter type PAYLOAD_T = logic[31:0]) (
input logic clk,
input logic rst_n
);
logic valid;
logic ready;
PAYLOAD_T payload;
modport source (input ready, output valid, output payload);
modport sink (output ready, input valid, input payload);
endinterface
13. 验证与落地路线
13.1 分阶段实现
| 阶段 | 目标 | 交付物 |
| Phase 1 | 非一致性 Crossbar:AXI4/AHB/APB + CIP AW/W/B/AR/R + CA/WA/PD 基础能力。 | RTL skeleton、UVM basic traffic、协议转换 directed tests、CDC/Reset 基础检查。 |
| Phase 2 | ACE tunnel / ACE-Lite:增加 AC/CR/CD,barrier/DVM 顺序约束,coherent fabric 外置。 | ACE channel tests、barrier tests、snoop buffer deadlock tests。 |
| Phase 3 | Full ACE home:RT.COH directory、snoop fanout、CR/CD aggregation。 | coherency state model、formal properties、压力与异常恢复测试。 |
13.2 验证清单
协议转换
- AXI burst/ID/乱序/错误
- AHB pipeline/HREADY/HRESP
- APB wait/PSLVERR
- ACE AC/CR/CD/barrier
互连与性能
- 多入口到同一 TB 仲裁
- 不同 ID 乱序返回
- QoS/priority/aging
- default error target
物理域适配
- CA 异步 FIFO CDC
- WA up/down size 和 resp 聚合
- PD quiesce/drain/isolation
- reset 中断恢复
健壮性
- timeout/error recovery
- scoreboard free-list 回收
- deadlock/livelock 压测
- trace/perf counter 覆盖
13.3 建议优先级
建议第一版落地:先把 AXI4/AHB/APB + CIP + RT + CA/WA/PD 做稳定,再引入 ACE_TUNNEL。除非项目明确需要本桥作为 coherent home,否则不要在首版同时承诺 full ACE home。