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. 华企盾DSC忘记了数据库解锁密码

    解决方法:登录数据库控制台,找到DSE所使用数据库默认名字"DSEDB",打开表"FileEncryptKey_TABLE",如下图所示: ​ 第一行,自动生成 ...

  2. 记一次 .NET某股票交易软件 灵异崩溃分析

    一:背景 1. 讲故事 在dump分析的旅程中也会碰到一些让我无法解释的灵异现象,追过这个系列的朋友应该知道,上一篇我聊过 宇宙射线 导致的程序崩溃,后来我又发现了一例,而这一例恰恰是高铁的 列控连锁 ...

  3. 聊聊流式数据湖Paimon(五)

    从Demo入手,了解Paimon/Flink项目搭建的全过程.记录下采坑之旅. 创建Flink项目 在IDEA中创建Flink项目,由于没有Flink的archetype,因此需要手动创建一下. 参考 ...

  4. GPT-4多模态大型语言模型发布

    GPT-4 模型是OpenAI开发的第四代大型语言模型(LLM),它将是一个多模态模型,会提供完全不同的可能性-例如文字转图像.音乐甚至视频.GPT 全称为 Generative Pre-traine ...

  5. JavaFx之全局异常捕获(二十)

    JavaFx之全局异常捕获(二十) javafx开发时,我们有时候需要捕获未处理的异常.手动抛出的异常,在main方法中添加下面代码: public static void main(String[] ...

  6. 无法找到模块“element-plus/dist/locale/zh-cn.mjs”的声明文件

    把 zhCn 的引入 改成 下面这个就可以了 import zhCn from "element-plus/es/locale/lang/zh-cn"; 贼拉拉管用,快去试试吧 ~

  7. 神经网络基础篇:详解逻辑回归 & m个样本梯度下降

    逻辑回归中的梯度下降 本篇讲解怎样通过计算偏导数来实现逻辑回归的梯度下降算法.它的关键点是几个重要公式,其作用是用来实现逻辑回归中梯度下降算法.但是在本博客中,将使用计算图对梯度下降算法进行计算.必须 ...

  8. 学了这么久的高并发编程,连Java中的并发原子类都不知道?

    摘要:保证线程安全是 Java 并发编程必须要解决的重要问题,本文和大家聊聊Java中的并发原子类,看它如何确保多线程的数据一致性. 本文分享自华为云社区<学了这么久的高并发编程,连Java中的 ...

  9. 冠军斩获10万奖金!首届“域见杯”医检AI开发者大赛精彩落幕

    摘要:首届"域见杯"医检AI开发者大赛精彩落幕. 8月24日,由广州市科学技术局指导,金域医学和华为云共同打造的中国第三方医检行业首个开发者大赛--"域见杯"医 ...

  10. 探索开源工作流引擎Azkaban在MRS中的实践

    摘要:本文主要介绍如何在华为云上从0-1搭建azkaban并指导用户如何提交作业至MRS. 本文分享自华为云社区<开源工作流引擎Azkaban在MRS中的实践>,作者:啊喔YeYe. 环境 ...