《SystemVerilog验证测试平台编写指南》学习笔记-接口

第四章 连接设计和测试平台

4.1 将测试平台和设计分开

基本的概念

  • 采样和驱动

    • 注意方向性。
    • 采样指的是测试平台TB采样设计DUT的数据,也就是DUT数据传给TB
    • 驱动指的是TB驱动DUT,数据从TB传输到DUT

4.2 接口

勘误:
在这里插入图片描述相信不少小伙伴看到这里肯定会有所疑问。明明新的值就是在下个周期传给测试平台,为什么说“并不是”。
其实啊,这里是翻译错误。我们来看一下英文原版是怎么写的。
在这里插入图片描述
原文说的是,当接口输入信号正好在时钟沿变化时,信号的新值直到下一个时钟周期才会传递给测试平台。

这个故事告诉我们,在看经典的翻译书时,如果觉得有些地方没弄懂,就得把原版的书拿出来对照一下。
你没理解可能不是你的问题,而可能是人家翻译错误。

顺带讲一下同步时钟接口的采样和驱动为什么有以下的差别。为什么当接口的输入信号恰好在时钟沿(25ns)变化时,新的值会等到下一个周期才被测试平台采样(图4.6),而同样的情况发生在驱动的时候,第三周期(25ns)产生的值22却永远不会被DUT捕获(图4.7)。
在这里插入图片描述
在这里插入图片描述
我们知道,接口里的时钟块是为了模拟时序逻辑的建立保持时间的,也就是当clk上升沿来临前,数据就必须准备好,并且需要在上升沿之后再保持一段时间。比如下面default后面表达的就是采样在clock1上升沿前的10ns,而驱动则发生在上升沿的2ns后。

若没在定义default偏移量,则默认在clocking采样事件前#1step采样输入,在采样事件后的 #0驱动输出。(我感觉#1step和#0应该指的都是最小时间片,只不过采样的时候说#1step,驱动的时候说#0)
为了方便下面的讲解,可以先把这个最小时间片单纯理解为一点点延迟。
在这里插入图片描述
讲解开始。我们可以用8条辅助线来解决这个问题。
对于采样,TEST arbif.cb.grant(翻译又漏掉了波形图中TEST里的“T”…)呈现出的结果是这么来的。clk上升沿来的时候,测试平台会去采样DUT arb.grant在上升沿之前的数据,如下图箭头所示。因此就算当接口的输入信号恰好在时钟沿(25ns)变化(2→3)时,新的值和旧的值都可以被采样到,并在EST arbif.cb.grant信号的25ns以及35ns时出现,不会出现被漏掉的情况。
在这里插入图片描述
而驱动就不一样了。DUT arb.grant的数据来源于TEST arbif.cb.grant。接口是在clk上升沿后一段时间把TEST arbif.cb.grant的值给到DUT arb.grant。所以我们可以很清楚地看出2的值并没有被DUT捕获。(从这也可以看出如果数据延续的时间不到一个时钟周期,就会容易被漏掉)
在这里插入图片描述
这样再来看81页的这段话也就没那么难懂了,只要注意时钟块会把clk上升沿后的数据驱动给DUT就行了。

如果测试平台在时钟的有效沿驱动同步接口信号,那么其值将会立即传递到设计中。这是因为时钟块的默认输出延时是#0。
如果测试平台在时钟有效沿之后驱动输出,那么该值直到时钟的下一个有效沿才会被设计所捕获。
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hardworking_IC_boy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值