systemverilog 测试台中的时钟切换

Posted

技术标签:

【中文标题】systemverilog 测试台中的时钟切换【英文标题】:clock switching in systemverilog test-bench 【发布时间】:2021-12-14 08:39:41 【问题描述】:

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

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

【问题讨论】:

例如,您可以在测试台中生成多个时钟并使用多路复用器来选择一个。 不错,不错的选择。 【参考方案1】:

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

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

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

【讨论】:

是的,我的环境是基于 UVM,我会尝试这个解决方案,谢谢。

以上是关于systemverilog 测试台中的时钟切换的主要内容,如果未能解决你的问题,请参考以下文章

[SystemVerilog] 基于 FPGA 的数字钟设计

[SystemVerilog] 基于 FPGA 的数字钟设计

systemverilog中的随机化方法

《SystemVerilog验证-测试平台编写指南》学习 - 第2章 数据类型

SystemVerilog搭建测试平台---第一章:验证导论

问题记录——SystemVerilog