System Verilog学习笔记(八)——采样和数据驱动

System Verilog学习笔记(八)——采样和数据驱动

为了避免在RTL仿真行为中发生的信号竞争问题,可以通过非阻塞赋值或者特定信号延迟来解决同步的问题。
默认情况下,时钟对于组合电路的驱动会添加一个无限小时间(delta-cycle)的延迟,而该延迟无法用绝对时间单位衡量,他比最小时间单位精度还小
在仿真器敲入命令“run 0”,是指让仿真器运行一个delta-cycle的时间。

竞争问题

当clk与被采样数据之间如果只存在若干个delta-cycle的延迟,那么被采样可能会存在问题,在同样的时刻可能会得到不同的采样结果。
如何避免:

  • 在驱动时,添加相应的人为延迟,模拟真实的延迟行为,同时加大clk和变量之间的延迟,以此提高DUT使用信号时的准确度和TB采样信号时的可靠性。

  • 对于一些采样时依然存在delta-cycle延迟的信号,我们可以依靠在采样事件前的某时刻进行采样,来模拟建立时间的采样要求,确保采样的可靠性。

接口中的clocking

1. 利用clocking进行采样

在接口中声明**时钟块clocking**和采样的时钟信号,用来做信号的同步和采样。
clocking块基于时钟周期对信号进行驱动或者采样的方式,消除信号竞争的问题。

clocking bus @(posedge clock1)  //定义了一个clocking块bus,由clock1的上升沿来驱动和采样default input #10ns output #2ns; //指出在clocking块中所有的信号,默认情况下会在clocking(clock1上升沿)前10ns对其进行输入采样,在后2ns进行输出驱动input data, ready, enable; //声明三个输入信号output negedge ack; //声明了要驱动的信号,而驱动该信号的是时钟clock1的下降沿,会覆盖原有的默认输出情况input #1step addr; //自定义了采样事件,即在clock1上升沿前的1step。
endclocking

1step:会使采样发生在clock1上升沿的上一个时间片采样区域,这样能保证采样到的数据是上个时钟周期的数据。

  • clocking块不仅能定义在interface中,还可以定义在module和program中
  • clocking中列举的信号不是自己定义的,而是应该由interface或者其他声明clocking的模块定义的,同一个变量在不同的clocking中可以声明不同的方向
  • clocking在声明完名称之后,会定义默认的采样事件。若没有定义,默认在采样事件前1step对输入进行采样,在采样事件之后#0对输出进行驱动
  • 也能在定义信号方向时,用新的采样事件对默认事件做覆盖。
    2. 利用clocking的驱动
    利用clocking块通过一种类似于“物理保持时间”的驱动方式,可以实现时钟叠加偏移量的延迟驱动效果。

小结:

1.为了避免可能的采样竞争问题,应该在验证环境的驱动环境就添加固定延迟,使得在仿真波形中更容易体现出时钟与被驱动信号之间的时序前后关系,同样这样也能便于DUT准确处理和TB的准确采样
2.要 考虑在时钟采样沿的更早时间段去模拟建立时间要求采样,可以避免由于delta-cycle问题带来的采样竞争问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/708503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RLWE同态加密编码打包——系数打包

RLWE同态加密的明文域 RLWE的加密方案,如BGV、BFV,加密的对象,实际上是分圆多项式环上的一个整系数多项式。而我们在平时接触到的需要加密的数据,如图像或者工资,通常是一个数。所以,在使用RLWE同态加密时…

JVM对象创建与内存分配机制

JVM对象创建与内存分配机制 JVM对象创建与内存分配机制 JVM对象创建与内存分配机制对象的创建过程内存分配对象栈上分配对象逃逸分析标量替换 对象在Eden区分配大对象直接进入老年代长期存活的对象将进入老年代对象年龄动态判断老年代空间分配担保机制 对象头与指针压缩对象头利…

课时49:表达式_表达式进阶_集合基础

3.3.2 集合基础 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 所谓的集合,主要是针对多个条件表达式组合后的结果,尤其是针对于逻辑场景的组合。初中数学的相关逻辑示意图:表现样式 两个…

将四个主页面配置为 tab-bar 的子路由

使用vant组件库 路由 {path: /, name: layout,component: () > import(/views/layout),children: [{path: , // 默认子路由name: home,component: () > import(/views/home)},{path: qa,name: qa,component: () > import(/views/qa)},{path: video,name: video,compo…

对比CentOS与Ubuntu:选择最适合你的Linux发行版

目录 对比CentOS与Ubuntu:选择最适合你的Linux发行版CentOS vs Ubuntu:概述CentOS vs Ubuntu:安装和配置CentOS vs Ubuntu:性能和稳定性示例代码和解决方案CentOS示例:Ubuntu示例: CentOS vs Ubuntu&#x…

Tips杂记

🥲 🥸 🤌 🫀 🫁 🥷 🐻‍❄️🦤 🪶 🦭 🪲 🪳 🪰 🪱 🪴 🫐 🫒 &#x1fad1…

UE5 C++ TPS开发 学习记录(七)

这节课是P16,主要是创建了生命周期的五个回调和委托还有句柄 MultiPlayerSessionSubsystem.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Subsystems/GameInstanceSu…

阿里云2核4G服务器租用价格85元一年,30元3个月

阿里云2核4G服务器多少钱一年?2核4G服务器1个月费用多少?2核4G服务器30元3个月、85元一年,轻量应用服务器2核4G4M带宽165元一年,本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1云服务器,阿里云服务…

三分钟数据持久化:Spring Boot, JPA 与 SQLite 的完美融合

三分钟,迎接一个更加高效和简便的开发体验。 在快节奏的软件开发领域,每一个简化工作流程的机会都不容错过。想要一个无需繁琐配置、能够迅速启动的数据持久化方案吗?这篇文章将是你的首选攻略。在这里,我们将向你展示如何将 Spri…

自然语言处理 | 语言模型(LM) 浅析

自然语言处理(NLP)中的语言模型(Language Model, LM)是一种统计模型,它的目标是计算一个给定文本序列的概率分布,即对于任意给定的一段文本序列(单词序列),语言模型能够估…

关于vue-seamless-scroll插件中使用echarts图表后有些模块中图表不渲染的问题的解决方案

参考网址&#xff1a;https://chenxuan0000.github.io/vue-seamless-scroll/guide/09-echart.html 拿vue2为例来说明 1、引入 执行npm install vue-seamless-scroll // main.js import scroll from vue-seamless-scroll Vue.use(scroll)2、使用 <template><vue-se…

图搜索基础-深度优先搜索

图搜索基础-深度优先搜索 参考原理引入流程解析手推例子 代码实现运行结果结果分析 参考 理论参考&#xff1a;深蓝学院 实现参考&#xff1a;github项目 原理 引入 对于这样一个图&#xff0c;我们试图找到S到G的通路&#xff1a; 计算机程序不会像人眼一样&#xff0c;一…

kafka学习问题

查看topic列表报超时 报错如下&#xff1a; Error while executing topic command : Timed out waiting for a node assignment. Call: listTopics [2024-02-28 14:36:57,024] ERROR org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignm…

如何做代币分析:以 USDT 币为例

作者&#xff1a;lesleyfootprint.network 编译&#xff1a;cicifootprint.network 数据源&#xff1a;USDT Token Dashboard &#xff08;仅包括以太坊数据&#xff09; 在加密货币和数字资产领域&#xff0c;代币分析起着至关重要的作用。代币分析指的是深入研究与代币相关…

DolphinScheduler——工作流实例的生命周期

目录 一、DolphinScheduler架构原理 1.1 系统架构图 1.2 DolphinScheduler核心概念 1.2 创建工作流 1.2.1 如何触发一个工作流实例 1.2.2 任务调度链路监控 1.2.3 Workflow-DAG解析 DAG解析 Dispatch分发流程 Master和Worker的交互过程 1.3 任务运行状态 该篇文章主…

Python·算法·每日一题(2月29日)正则表达式匹配

题目 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不是部分字符串。 示例 示例一 输入…

总是 -bash: gomobile: 命令未找到

总是 -bash: gomobile: 命令未找到 问题描述 我的项目是/Users/$user/go/src/abc.com/project 当我尝试在 /Users/GaryChan/go/src/abc.com/project/sdk 并运行: export ANDROID_HOME/Users/$user/Library/Android/sdk/ndk-bundle/gomobile bind -targetandroid abc.com/p…

【Web】Java反序列化之CC6--HashMap版

前文&#xff1a; 【Web】Java反序列化之再看CC1--LazyMap 上面这篇文章提到&#xff0c;只要调用的LazyMap的get方法&#xff0c;就可以最终完成transform的调用。 在高版本下&#xff0c;CC1不再能打通&#xff0c;CC6依然通用&#xff0c;其反序列化入口不再是Annotation…

Leetcode : 215. 数组中的第 K 个最大元素

给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 思路&#xff1a;最开始排序算法&…

MySQL 存储过程批量插入总结

功能需求背景&#xff1a;今天接到产品经理核心业务表的数据压测功能&#xff0c;让我向核心业务表插入百万级的业务量数据&#xff0c;我首先想到的办法就是存储过程实现数据的批量 。 由于无法提供核心业务表&#xff0c;本文仅仅提供我刚刚自己创建的表bds_base_user 表做相…