Clocking:激励的时序

  • memory检测start信号,当start上升沿的时候,如果write信号拉高之后,将data存储到mem中
  • start\write\addr\data - 四个信号是同时在start上升沿进行,在采样的时候,testcase和Dut都是module,write采样的时候,有时候会采样到上升沿之前的值或者上升沿之后的值,需要规避这种情况
  • 信号在时钟的驱动下发生跳变,会有delta-delay产生,并且delta-delay是不确定的,所以会造成采样的不确定性,使用clocking模块进行控制
  • 需要给write信号稳定之后进行采样
  • 所以设置clocking模块进行控制

  • 在clocking block定义在interface中,是不可综合的



  • 对于testbench,input(DUT输入)要延迟进行采样,就是在时钟上升沿之前1个时间单位采样
  • output(输入给DUT) - 没有延时时间
  • input向时钟上升沿之前多少时间单位进行采样,output向时钟上升沿之后多少个时间输出





// 同步到时钟上升沿
clocking cb @(posedge)
default input #1step output #0;
output request;
input grant;
endclocking

//将信号同步到时钟有效沿
@arbif.cb; // 等待接口arbif的时钟边沿
@(posedge arbif.clk) //等待接口arbif的时钟边沿
repeat(3) @arbif.cb; // 经过3个arbif接口的时钟上升沿
// 等待n个时钟周期 ##n - 阻塞语句
##2 arbif.cb.request <= 0; // 经过两个时钟周期之后进行赋值

  • 同步信号,驱动输出信号使用非阻塞赋值,采样输入信号使用输入信号
  • 非同步信号,阻塞赋值
forever begin
if(request == 1)
grant <= 1; // forever中没有时间推进语句,会造成死循环
end

总结

  • Clocking模块中信号的方向与testbench相关

仿真时间域

  • 不同代码的执行是有先后顺序的
  • active region - 执行设计代码
  • observed region - 执行断言
  • Reactive region - testbench/oop,验证平台和dut都是module,仿真工具如何区分,testbench会用program进行定义,program可以认为是testbench
  • Postpone region - sample

  • program - 会在reactive region进行执行
  • module - 会在active region进行执行

  • 采样的时候采样到的是时钟之前的信号

Program block

  • program语句只能用于testbench,不能用于design







验证平台顶层文件-top文件

  • tb_top必须是module

代码示例











SV Interface and Program 2的更多相关文章

  1. SV中的Interface和Program

    Interface:SV中新定义的接口方式,用来简化接口连接,使用时注意在module或program之外定义interface,然后通过'include来添加进工程. interface  arb_ ...

  2. program与module

    program,各方面与module都类似,其中声明的变量在program中都可见, 生命周期也是static类型的, program的结束,也是需要等待其中的所有initial块都执行结束. 与mo ...

  3. sv命令空间 packge

    SV中的module,interface,program,checker,都提供declaration空间,内部定义都local当前的那个scope,相互之间的building block不影响,不识 ...

  4. Tun/Tap interface tutorial

    Foreword: please note that the code available here is only for demonstration purposes. If you want t ...

  5. C# explicit interface implementation(显式接口实现)

    C# explicit interface implementation 某个类要实现两个包含相同方法名的接口, 应该如何实现这两个方法? namespace ExplicitInterfaceImp ...

  6. 如何搭建SoC项目的基本Testbench【zz】

    原文地址:http://bbs.eetop.cn/thread-442797-1-8.html 写这个文档的目的是让大家对搭建SoC项目的Testbench有一个比较清晰的认识,可以根据这个文档来一步 ...

  7. Systemverilog for design 笔记(六)

    转载请标明出处 第一章 有限状态机建模(FSM,finite state machine) 1.1.    使用枚举类型建立状态机模型 l  三过程块建模风格:三个过程块分别实现: a.状态转换(al ...

  8. Systemverilog for design 笔记(一)

    转载请标明出处 一.     System Verilog 声明的位置 1.       包(packages) Verilog要求局部声明: variables, nets, tasks and f ...

  9. A web crawler design for data mining

    Abstract The content of the web has increasingly become a focus for academic research. Computer prog ...

  10. C语言代写

    MTRX1702 - C ProgrammingAssignment 2This assignment requires you to design and build a program that ...

随机推荐

  1. Selenium-无头模式headless

    无头模式适合的场景: 部署到没有gui界面的服务器,比如linux 开发环境测试完全没问题后可以使用无头模式,提高selenium速度. # 使用headless无界面浏览器模式 chrome_opt ...

  2. 使用 GPT4V+AI Agent 做自动 UI 测试的探索

    一.背景 从 Web 诞生之日起,UI 自动化就成了测试的难点,到现在近 30 年,一直没有有效的手段解决Web UI测试的问题,尽管发展了很多的 webdriver 驱动,图片 diff 驱动的工具 ...

  3. 复习:Java基础-泛型方法

    泛型 大家都很熟悉了 泛型方法呢 可能很多小伙伴都有混淆,今天来稍微复习一下 泛型方法(普通方法) public class Test<T> { public T f(T c) { //注 ...

  4. 集群化部署ZabbixServer

    修改Zabbix-agent配置 1.修改配置文件 三台zabbix-Server上操作 vim /etc/zabbix/zabbix_agent2.conf Server=127.0.0.1 改成 ...

  5. zabbix+oracle环境部署

    oracle11安装完成后, 实例名: zbx01 oracle创建zbx01用户:col file_name for a60;set linesize 160;select file_name,ta ...

  6. libGDX游戏开发之AssetManager资源管理(十)

    libGDX游戏开发之AssetManager资源管理(十) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情 ...

  7. 0X01 位运算笔记

    位运算,经常可以用来处理一些数学或动归方面的问题,通常会在数据范围较小的情况下使用. 为方便起见,一个 \(\mathrm{n}\) 位二进制数从右到左分别为第 \(\mathrm{0 \sim n ...

  8. vue点击图片获取图片原像素坐标

    <template> <div> <img ref="image" width="1500px" :src="image ...

  9. JavaScript异步编程4——Promise错误处理

    目录 1. 概述 2. 详论 3. 参考 1. 概述 在上一篇文章<JavaScript异步编程3--Promise的链式使用>中,通过Promise的链式使用,避免程序中多次嵌套回调(回 ...

  10. C++篇:第七章_结构体、共用体和枚举_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 七.结构体.共用体和枚举 (一)结构体 C++的结构体中可以有构造函数,例: s ...