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验证-测试平台编写指南》学习 - 第2章 数据类型