在当代SoC设计中,功耗管理已成为与性能同等重要的关键指标。AXI5协议引入的接口时钟与电源门控技术,为总线级低功耗设计提供了标准化解决方案。这项技术的本质是通过信用控制机制动态管理接口电路的工作状态,在检测到总线空闲时自动进入低功耗模式。
信用控制(Credit_Control)是这项技术的核心机制。当设置为Implicit_Return_Uni模式时,接口会包含三组关键信号:
这些信号共同构成了一个四状态机:
关键提示:AXI5规定RUN和STOP是稳定状态,接口可长期停留;而ACTIVATE和DEACTIVATE是瞬态,应在较短时间内完成转换。
与传统门控技术相比,AXI5的方案具有三大优势:
Credit_Control属性决定接口是否支持信用控制功能,其配置规则如下:
| 属性值 | 描述 | 兼容性要求 |
|---|---|---|
| False | 无信用控制信号,接口始终运行 | 必须与AXI_Transport=Ready互斥 |
| Implicit_Return_Uni | 含信用控制信号,采用单向隐式信用返还 | 互联的接口必须配置相同值 |
实际工程中,我们需要在RTL设计时通过参数化配置实现这一属性。以SystemVerilog为例:
systemverilog复制module axi5_interface #(
parameter bit CREDIT_CONTROL = 1'b0,
parameter bit IMPLICIT_RETURN = 1'b0
)(
// 标准AXI信号
...
// 信用控制信号
output logic activatereq,
input logic activateack,
input logic askstop
);
generate
if (CREDIT_CONTROL && IMPLICIT_RETURN) begin
// 实现完整的状态机逻辑
end else begin
// 常规AXI接口逻辑
end
endgenerate
endmodule
实测经验:从设备应在ASKSTOP后持续监控未完成事务,我们通常使用如下判断逻辑:
systemverilog复制assign all_transactions_done = (ar_pending == 0) && (aw_pending == 0) && (w_pending == 0);
AXI5允许对VALID、CRDT或CRDTSH路径独立添加流水级,但需遵守以下规则:
STOP状态保护:
信号对齐:
典型的两级流水线设计示例:
systemverilog复制always_ff @(posedge aclk or negedge aresetn) begin
if (!aresetn) begin
activatereq_ff <= 1'b0;
activateack_ff <= 1'b0;
end else begin
activatereq_ff <= activatereq_next;
activateack_ff <= activateack;
end
end
// 信用信号采用相同延迟
generate
for (genvar i=0; i<CHANNELS; i++) begin
always_ff @(posedge aclk) begin
crdt_ff[i] <= crdt_in[i];
end
end
endgenerate
当接口进入STOP状态时,可采用两种门控策略:
时钟门控:
电源门控:
实测数据对比(TSMC 7nm工艺):
| 方案 | 静态功耗 | 唤醒延迟 | 面积开销 |
|---|---|---|---|
| 时钟门控 | 降低80% | 2周期 | 0.5% |
| 电源门控 | 降低99% | 50μs | 2.1% |
完整的验证方案应包含以下测试场景:
基础状态转换:
异常场景:
性能验证:
问题1:信用计数不同步
现象:从设备进入STOP状态后,主设备信用计数不为零。
解决方案:
systemverilog复制assert property (@(posedge aclk)
(state == STOP) |-> (credit_counter == 0));
问题2:ASKSTOP响应延迟
现象:从设备发出ASKSTOP后,主设备未及时响应。
解决方案:
systemverilog复制assert property (@(posedge aclk)
(askstop && activateack) |-> ##[1:10] !activatereq);
问题3:跨时钟域亚稳态
现象:电源门控使能信号出现亚稳态。
解决方案:
systemverilog复制always_ff @(posedge aclk) begin
if ($isunknown(sync_pulse)) begin
$warning("Metastability detected!");
end
end
在某28nm移动处理器设计中,我们为AI加速器与DDR控制器间的AXI总线实现信用控制门控,实测结果:
关键实现技巧:
对于同时支持AXI5和ACE5的接口,我们开发了可配置状态机:
systemverilog复制enum logic [1:0] {
STOP,
ACTIVATE,
RUN,
DEACTIVATE
} state;
always_ff @(posedge aclk) begin
case(state)
STOP: if (activatereq) state <= ACTIVATE;
ACTIVATE: if (activateack) state <= RUN;
RUN: begin
if (askstop && no_pending) state <= DEACTIVATE;
else if (!activatereq && no_pending) state <= DEACTIVATE;
end
DEACTIVATE: if (!activateack) state <= STOP;
endcase
end
这种设计在保证协议兼容性的同时,实现了:
通过实测验证,该方案相比独立实现节省了约35%的逻辑面积。