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
标记了它,人们通常做的是创建一个用于驱动时钟和重置的接口,以及一个控制频率和应用重置的序列。然后把我上面写的代码放到一个接口里面,驱动可以通过虚拟接口设置周期
为了验证我的块的 DVFS 功能,DUT 的时钟应该根据一个事件切换。 例如,如果控制寄存器更新为快速模式,我的 TB 需要提高时钟频率,如果控制寄存器更新为慢速模式,我的 TB 需要降低时钟频率。
我如何使用 TB 中的 systemverilog 执行此操作? 在我的简单 TB 中,时钟始终处于固定频率。
您可以在测试台中使用可变周期控制时钟频率
bit clk;
real period = 10ps;
initial forever
#(period/2.0) clk = !clk;
如果您的测试台正在更新控制寄存器,那么它也可以是周期。由于您用 UVM
标记了它,人们通常做的是创建一个用于驱动时钟和重置的接口,以及一个控制频率和应用重置的序列。然后把我上面写的代码放到一个接口里面,驱动可以通过虚拟接口设置周期