在 SystemVerilog 中,clocking块的input和output方向是相对验证环境(如测试平台 Testbench) 而言的,用于定义测试平台与 DUT(RTL)之间的信号交互方向及时序。
具体来说:
input:表示该信号是测试平台从 DUT(RTL)接收的信号(DUT 输出到测试平台的信号,如 DUT 的状态信号、数据输出等)。output:表示该信号是测试平台驱动到 DUT(RTL)的信号(测试平台输出到 DUT 的信号,如激励信号、控制信号等)。
举例说明
假设 DUT 有一个数据输入data_in(由测试平台驱动)和一个数据输出data_out(输出到测试平台),对应的clocking块定义如下:
systemverilog
interface my_intf(input clk, input rst_n);
logic [7:0] data_in; // 测试平台 → DUT(output)
logic [7:0] data_out; // DUT → 测试平台(input)
// 相对测试平台的方向定义
clocking cb @(posedge clk);
default input #1step output #0; // 输入采样时序、输出驱动时序
output data_in; // 测试平台驱动到DUT(output相对TB)
input data_out; // 测试平台从DUT接收(input相对TB)
endclocking
endinterface
- 对测试平台而言,
data_in是output(需要驱动给 DUT),data_out是input(需要从 DUT 采样)。 - 对 DUT(RTL)而言,方向恰好相反:
data_in是 DUT 的input,data_out是 DUT 的output。
核心作用
clocking块的方向定义本质是规范测试平台与 DUT 的接口时序:
input信号:测试平台在时钟沿采样DUT 输出的信号(通常带#1step等时序偏移,避免竞争冒险)。output信号:测试平台在时钟沿驱动到 DUT 的信号(通常带#0或延迟,确保 DUT 在时钟沿看到稳定值)。
因此,方向始终以测试平台为参考,与 DUT 的端口方向形成互补,是验证环境中时序同步的关键机制。
784

被折叠的 条评论
为什么被折叠?



