当前位置: 首页 > news >正文

systemverilog中clocking的用法

文章目录

    • 1.clocking简介
    • 2.clocking实例分析
    • 3.重点分析
      • (1)bus定义是不是随便取名的
      • (2)输入输出的定义原则是什么
      • (3)到底如何消除了竞争和冒险
      • (4)没用到的信号如何处理
      • (5)clocking和modport有什么关系
      • (6)真实的clocking同步体会

1.clocking简介

概念:接口中声明clocking(时序块)和采样的时钟信号,用来做信号的同步和采样。clcoking块基于时钟周期对信号进行驱动或采样的方式,使得待测平台不再苦恼于如何准确及时地对信号驱动或采样,消除了信号的竞争问题。
作用:

  • 事件的同步
  • 输入的采样
  • 输出的驱动

2.clocking实例分析

clocking bus @(posedge clock1);//定义了clocking为bus,由clock1的上升沿来驱动采样。default input 10ns output 2ns;//clocking所有信号默认为前10ns对其进行输入采样,在事件的后2ns对其进行输出驱动input data,reday,enable = top.mem1.enable//定义了输入信号output negedge ack;//定义了驱动信号,驱动信号的事件是时钟clock1的下降沿input #1step addr;//addr采用自身定义的采样时间,即clock1上升沿的1setp
endclocking

注意点:

  • clocking块不但可以定义在interface中,也可以定义在module和program中
  • clocking中列举的信号不是自己定义的,而是interface或其他声明clocking的模块定义的
  • clocking在声明完名字之后,应该伴随定义默认时间。如果没定义,默认在clocking采样事件前的1setp对输入进行采样,在采样事件后的#0对输出进行驱动。
  • 除了定义默认的采样和驱动事件,也可以在定义信号方向时,用新的采样事件对默认采样事件进行覆盖。

3.重点分析

(1)bus定义是不是随便取名的

bus不是随意进行的取名,而是对于driver和monitor中信号赋值的时候需要用上的,比如:

my_if vif;
my_transaction tr;
...vif.bus.ack<= tr.ack;
...

(2)输入输出的定义原则是什么

在这里插入图片描述

当信号从testbench到DUT是为输入,这里的data是输入
当信号从DUT到testbench是为输出,这里的ack为输出

(3)到底如何消除了竞争和冒险

在RTL仿真时,由于无法确定具体电路的延迟时间,默认情况下时钟驱动电路时会添加一个无限最小的时间(delta cycle)的延迟,这个延迟要比最小时间单位精度还要小(可以理解成远小于1ps)。由于各种可能性,clk与被采样数据之间如果只存在若干个delta-cycle的延迟,那么采样就会出问题,在同样的时刻可能会得到不同的采样结果。
为了避免在RTL仿真中发生信号竞争的问题,使用时钟块来决定信号的驱动和采样的方式。
从这张图可以得知,input skew为 10step,输入信号的采样,会在时钟时间(clock1上升沿)前的10ns采样,output skew 为2,输出会在clocking事件后2ns时刻输出驱动。这样使得对clocking块中声明的信号进行采样和驱动时,不会造成竞争情况。
在这里插入图片描述

(4)没用到的信号如何处理

clocking是可以不使用全interface里面的信号的,如:

interface my_if(input clock1,input rst_n);logic [7:0]data;
logic ready;
logic enable;
logic addr;
logic ack;
logic psel;clocking bus @(posedge clock1);default input 10ns output 2ns;input data,reday,enable = top.mem1.enableoutput negedge ack;input #1step addr;
endclockingendinterface

很明显psel在clocking中未使用。

(5)clocking和modport有什么关系

interface A_Bus( input bit clk );wire req, gnt;wire [7:0] addr, data;clocking sb @(posedge clk);input gnt;output req, addr;inout data;endclockingmodport STB ( clocking sb ); // synchronous testbench modport
endinterface

modport介于interface和clocking之间,主要用于对信号进行分组,指定信号的输入输出方向,而clocking则是作用于信号的更底层,主要用于信号时序相关的控制,例如采样、同步等,当然clocking也可以指定信号的输入输出方向。(这么来看,modport好像没啥作用,modport能做的,clocking都能做。)

(6)真实的clocking同步体会

[DV]在长burst中漏采样的问题_什么叫漏采样-CSDN博客

相关文章:

systemverilog中clocking的用法

文章目录 1.clocking简介2.clocking实例分析3.重点分析&#xff08;1&#xff09;bus定义是不是随便取名的&#xff08;2&#xff09;输入输出的定义原则是什么&#xff08;3&#xff09;到底如何消除了竞争和冒险&#xff08;4&#xff09;没用到的信号如何处理&#xff08;5&…...

【Python开发】大模型应用开发项目整理

不知不觉已经入职3个月了&#xff0c;同事很好&#xff0c;工作充实&#xff0c;学到了很多东西&#xff0c;大大小小的需求也实现了接近20个。负责2个主要component&#xff0c;数据抓取和利用GenAI做数据提取。 1 背景 提取新闻中事件关键信息&#xff0c;比如人名&#xff…...

Redis 的使⽤和原理

第一章:初识 Redis 1.1盛赞 Redis Redis 是⼀种基于键值对&#xff08;key-value&#xff09;的 NoSQL 数据库&#xff0c;与很多键值对数据库不同的是&#xff0c;Redis 中的值可以是由 string&#xff08;字符串&#xff09;、hash&#xff08;哈希&#xff09;、list&…...

前端学Java

一&#xff1a;语法 1、注解 注解&#xff08;Annotation&#xff09;是Java中的一种特殊类型的语法&#xff0c;它可以被用来为代码提供元数据。元数据是关于数据的数据&#xff0c;注解可以用于类、方法、变量等的描述与标记。 理解注解可以从以下几个方面入手&#xff1a…...

VR游戏:多人社交将是VR的下一个风口

第一部分&#xff1a;创业笔记 1. 市场趋势 从单机游戏转向多人互动体验&#xff1a;随着技术的进步&#xff0c;VR游戏正从单机模式向多人互动体验转变。代表作品如Rec Room、Phasmophobia、Among Us和Breachers等&#xff0c;这些游戏的成功证明了多人互动模式的巨大潜力。…...

Docker与虚拟机(VM)的不同

Docker与虚拟机&#xff08;VM&#xff09;在实现的原理上存在显著的不同&#xff0c;主要体现在以下几个方面&#xff1a; 一、基础原理 Docker 利用Linux内核的特性&#xff0c;如容器&#xff08;containers&#xff09;、命名空间&#xff08;namespaces&#xff09;和控制…...

Pr 视频效果:透视

效果面板/视频效果/透视 Video Effects/Perspective Adobe Premiere Pro 的视频效果中&#xff0c;透视 Perspective效果组主要用于在二维平面的视频剪辑中模拟三维空间的透视效果。 通过调整这些效果&#xff0c;可以改变图像的视角、添加阴影、创造立体感&#xff0c;增强画面…...

C 语言标准库 - <limit.h>

简介 <limits.h> 是 C 标准库中的一个头文件&#xff0c;定义了各种数据类型的限制。这些宏提供了有关整数类型&#xff08;char、short、int、long 和 long long 等&#xff09;和其他数据类型的最大值和最小值的信息。 这些限制指定了变量不能存储任何超出这些限制的…...

Python | Leetcode Python题解之第519题随机翻转矩阵

题目&#xff1a; 题解&#xff1a; class Solution:def __init__(self, m: int, n: int):self.m mself.n nself.total m * nself.map {}def flip(self) -> List[int]:x random.randint(0, self.total - 1)self.total - 1# 查找位置 x 对应的映射idx self.map.get(x,…...

大数据新视界 -- 大数据大厂之提升 Impala 查询效率:索引优化的秘籍大揭秘(上)(3/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

【AI工作流】FastGPT - 深入解析FastGPT工作流编排:从基础到高级应用的全面指南

文章目录 一、工作流编排概述二、FastGPT的节点类型1. 基础功能插件(1) 文本输出(2) 功能调用(3) 工具(4) 外部调用(5) 其他 2. 系统插件3. 团队插件 三、工作流中的流向结语 在当今快速发展的人工智能领域&#xff0c;工作流编排的能力已成为提升用户体验和应用效率的关键因素…...

VS+Qt解决提升控件后,包含头文件格式不对问题处理

一、前言 VSQt 提升控件后&#xff0c;在uic目录下会生成ui相关的初始化文件&#xff0c;对于提升的控件头文件包含的格式为#include<> 而非 #include “ ” 导致无法找到头文件。如果手动修改为 #include “ ”相当麻烦&#xff0c;甚至每次编译都要修改一遍&#xff0c…...

opencv - py_imgproc - py_filtering filtering 过滤-卷积平滑

文章目录 平滑图像目标2D 卷积&#xff08;图像过滤&#xff09;图像模糊&#xff08;图像平滑&#xff09;1. 平均2. 高斯模糊3. 中值模糊4. 双边滤波 其他资源 平滑图像 目标 学习&#xff1a; 使用各种低通滤波器模糊图像将定制滤波器应用于图像&#xff08;2D 卷积&…...

精华帖分享|缠论系列 -笔

本文来源于量化小论坛策略分享会板块精华帖&#xff0c;作者为吴奕萱&#xff0c;发布于2023年6月4日。 以下为精华帖正文&#xff1a; 01 笔 昨天讲了3根K线组合关系的完全分类&#xff0c;按照逻辑&#xff0c;其实我们会考虑是不是应该讲4根、5根K线的组合关系了。 精华帖…...

Java项目实战II基于Spring Boot的文理医院预约挂号系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在医疗资源日益紧张的背景下&#xff0…...

NumPy Ndarray学习

1.NumPy Ndarray 对象简介 NumPy 最重要的特点是其 N 维数组对象 ndarray&#xff0c;它是一系列同类型数据的集合&#xff0c;以 0 下标为开始进行集合中元素的索引。ndarray 对象是用于存放同类型元素的多维数组。ndarray 中的每个元素在内存中都有相同存储大小的区域。 2.N…...

Browserslist 配置

Browserslist 是一个工具和规范&#xff0c;用于定义和共享支持的浏览器列表&#xff0c;以便在前端开发中管理不同工具的兼容性。这些工具可以包括 Babel、Autoprefixer、ESLint 等&#xff0c;它们都可以使用 Browserslist 提供的配置来确定应支持哪些浏览器及其版本。 主要…...

vue2中的v-bind相当于原生js的什么

在 Vue 2 中&#xff0c;v-bind 是一个指令&#xff0c;用于动态地将一个或多个属性绑定到 DOM 元素上。它相当于在原生 JavaScript 中直接操作 DOM 元素属性的方法。 v-bind 的基本用法 在 Vue 中&#xff0c;v-bind 可以这样使用&#xff1a; <!-- 绑定一个属性 -->…...

c语言-scanf函数的用法

文章目录 一、scanf是什么&#xff1f;二、通过scanf进行赋值scanf 输入一段带空格的句子&#xff0c; %[^\n] 格式字符串。 三、赋值忽略符 一、scanf是什么&#xff1f; 函数原型&#xff1a;int scanf ( const char * format, … ); scanf是一个格式输出库函数&#xff0c;…...

AI带货主播插件开发之商品推荐模块!

AI带货主播&#xff0c;作为新兴的人工智能技术应用领域&#xff0c;正逐渐改变着电商直播的格局&#xff0c;在这一领域&#xff0c;商品推荐模块是提升用户体验、增加销售额的关键一环。 本文将探讨AI带货主播插件的商品推荐模块开发&#xff0c;并分享五段关键的源代码&…...

使用Nginx作为反向代理和负载均衡器

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Nginx作为反向代理和负载均衡器 引言 Nginx 简介 安装 Nginx Ubuntu CentOS 配置 Nginx 作为反向代理 配置 Nginx 作为负载…...

【数据结构二叉树】C非递归算法实现二叉树的先序、中序、后序遍历

引言: 遍历二叉树&#xff1a;指按某条搜索路径巡访二叉树中每个结点&#xff0c;使得每个结点均被访问一次&#xff0c;而且仅被访问一次。 除了层次遍历外&#xff0c;二叉树有三个重要的遍历方法&#xff1a;先序遍历、中序遍历、后序遍历。 1、递归算法实现先序、中序、后…...

解决网盘资源搜索难题的利器——全面解析哎哟喂啊盘搜及其优秀推荐平台

海量的资源让我们的选择更加丰富,但同时也带来了资源搜索的诸多痛点。无论是寻找最新的影视资源、软件工具,还是各类学习资料,用户常常面临以下几个问题: 资源更新不及时:很多平台资源更新缓慢,用户难以第一时间获取最新内容。 搜索效率低下:关键词搜索不精准,导致需要翻阅大量…...

草料二维码:低成本高效率的访客管理解决方案

在当前的商业和政治环境中&#xff0c;企业和政府机构越来越重视安全保密措施&#xff0c;尤其是对外来人员的行踪记录和管理。访客管理已成为企业运营中不可或缺的一环&#xff0c;它不仅提升了安全性&#xff0c;还增强了效率和便捷性。然而&#xff0c;许多机构仍在使用传统…...

qt管理系统框架(好看界面、漂亮界面、好看的界面、漂亮的界面)

概述 最近一个项目用QT开发&#xff0c;然后找了美工帮设计了下界面。总算完工&#xff0c;后想一下干脆抽出一个基础框架&#xff0c;方便以后用。 功能 支持mysql、echarts。 支持加载动态权限菜单&#xff0c;轻松权限控制。 支持遮罩对话框、抽屉 支持开机启动动画界面 内…...

在VSCode中读取Markdown文件

在VSCode安装Markdown All in One或Markdown Preview Enhanced即可 插件Markdown All in One GitHub&#xff1a;https://github.com/yzhang-gh/vscode-markdown v3.6.2下载链接&#xff1a;https://marketplace.visualstudio.com/_apis/public/gallery/publishers/yzhang/vs…...

Linux rabbitmq客户端 SimpleAmqpClient 源码编译

SimpleAmqpClient的编译成库&#xff0c;加入到工程中 1、下载SimpleAmqpClient 源码&#xff1a; git克隆的路径为&#xff1a;https://github.com/alanxz/SimpleAmqpClient.git 下载压缩包路径&#xff1a;https://codeload.github.com/alanxz/SimpleAmqpClient/zip/maste…...

一台手机可以登录运营多少个TikTok账号?

很多TikTok内容创作者和商家通过运营多个账号来实现品牌曝光和产品销售&#xff0c;这种矩阵运营方式需要一定的技巧和设备成本&#xff0c;那么对于很多新手来说&#xff0c;一台手机可以登录和运营多少个TikTok账号呢&#xff1f; 一、运营TikTok账号的数量限制 TikTok的官…...

Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 房屋信息详情 个人中心 管理员登录界面 管理员功能界面 用户管理界面 房屋信…...

k8s Service四层负载:服务端口暴露

在 Kubernetes 中&#xff0c;通过 Service 可以实现四层&#xff08;L4&#xff09;负载均衡&#xff0c;将流量分发至后端的 Pod。四层负载主要用于传输层&#xff08;TCP/UDP&#xff09;&#xff0c;而不像七层负载均衡&#xff08;HTTP/HTTPS&#xff09;那样进行应用层的…...