systemverilog 测试平台中的时钟切换

clock switching in systemverilog test-bench

为了验证我的块的 DVFS 功能,DUT 的时钟应该根据一个事件切换。 例如,如果控制寄存器更新为快速模式,我的 TB 需要提高时钟频率,如果控制寄存器更新为慢速模式,我的 TB 需要降低时钟频率。

我如何使用 TB 中的 systemverilog 执行此操作? 在我的简单 TB 中,时钟始终处于固定频率。

您可以在测试台中使用可变周期控制时钟频率

bit clk;
real period = 10ps;
initial forever
   #(period/2.0) clk = !clk;

如果您的测试台正在更新控制寄存器,那么它也可以是周期。由于您用 UVM 标记了它,人们通常做的是创建一个用于驱动时钟和重置的接口,以及一个控制频率和应用重置的序列。然后把我上面写的代码放到一个接口里面,驱动可以通过虚拟接口设置周期