验证systemVerilog中激励的时序(clocking)

1 背景介绍

1.1 保留足够的setup time

下图中在10ns时,没有建立(setup)时间,很容引起不确定情况发生,因此需要将write信号前移,留出足够长的setup time。
在这里插入图片描述

1.2 保留足够的hold time

下图中,正确情况:

  • TB产生req信号,req信号拉高,DUT的grant信号拉高;
  • 当grant信号经过一个周期后,grant信号会被拉低,然后req信号也会拉低;
  • 若是hold time时间不够,req采到的grant为高电平(错误),那么req信号也无法拉低,出现错误。
    在这里插入图片描述

1.3 总结

驱动过晚或采样过早,都会引起竞争现象。在建立之前,稳定的驱动信号,可以避免竞争现象。

2 clocking 模块控制同步信号

clocking模块控制同步信号,要点:

  • clocking是关键字
  • systemVerilog中使用clocking模块控制同步信号
  • 在interface中定义clocking模块,将信号同步到某一个特定的时钟
  • clocking模块中所有信号都是同步驱动或采样,可以确保验证平台可以在正确的时间跟设计进行交互
  • clocking 模块主要使用在验证平台中,不能用作RTL设计
  • 一个interface中可以包含多个clocking模块

2.1 用interface和clocking进行仿真

  • 从DUV的输出到testbench的输入有1个延迟
    • 需要在testbench的输入端加一个“虚拟的同步器”
  • 从testbench的输出到DUV的输入没有延迟
    default input #1 step output #0;(默认值,不写的话就是这个值,放置在clocking block)
    在这里插入图片描述

2.2 定义input 和output skew,控制时序

  • input skew表示在时钟有效边沿采样信号的扭斜单位时间 output skew表示
  • 在时钟有效边沿驱动信号的扭斜单位时间
clocking dram @(clk)
	input #1ps address;
	input #5
	output #6 data;
endclocking

在这里插入图片描述

2.3 clocking block举例和引用clocking模块中信号

在这里插入图片描述自动将arbif.cb.request信号同步到clock上面。

2.4 将信号同步到时钟有效边沿

@arbif.cb; //等待接口arbif的时钟边沿
repeat (3) @arbif.cb; //经过3个arbif接口的时钟上升沿

2.5 同步到信号的任何一个边沿

@arbif.grant; //等待接口grant信号的任意一个边沿
@(posedge arbif.cb.grant); //等待grant信号的上升沿
@(negedge arbif.cb.grant); //等待grant信号的下降沿
wait (arbif.cb.grant==1) //等待grant信号为高电平,如果已经为高电平则没有延迟

2.5 等待n个时钟周期 ##n 阻塞语句

##2 arbif.cb.requeset <= 0;//经过2个时钟周期后赋值

等效:repeat(2) @arbif.cb;

2.6 引用clocking内的信号

驱动信号必须用非阻塞赋值,采样信号用阻塞赋值

arbif.cb.request <=1; //驱动输出信号
value = arbif.cb.grant; //采样出入信号

2.7 在下一个有效时钟边沿赋值

如果不使用时间的推进语句如#1或者##1,仿真时间不会更新,会导致仿真悬挂

forever begin
 if(request ==1)
 	grant <= 1;
 end	

上面将会是死循环,直至内存写满,应该改成如下代码解决问题

forever begin
#1 ps
 if(request ==1)
 	grant <= 1;
 end	
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狮子座硅农(Leo ICer)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值