首页 > 其他分享 >SystemVerilog -- 6.4 Interface ~ Clocking Blocks

SystemVerilog -- 6.4 Interface ~ Clocking Blocks

时间:2024-04-27 09:45:12浏览次数:26  
标签:Blocks posedge Clocking clk -- 信号 output input 时钟

SystemVerilog Clocking Blocks

默认情况下,模块端口和接口不指定信号之间的任何时序要求或同步方案。在clockingendclocking之间定义的时钟块正是这样做的。它是与特定时钟同步的信号集合,有助于指定时钟和信号之间的定时要求。

这将允许测试编写者更多地关注事务,而不是担心信号何时与时钟交互。testbench可以有多个时钟块,但每个时钟只有一个块。

Syntax

[default] clocking [identifier_name] @ [event_or_identifier]
  default input #[delay_or_edge] output #[delay_or_edge]
  [list of signals]
endclocking

delay_value表示要采样或驱动信号的时钟时间的时间单位的偏差。如果未指定偏斜,则将在指定事件后对所有输入信号进行采样并驱动输出符号。default #1step 0ns

clocking ckb @ (posedge clk);
  default input #1step output negedge;
  input  ...;
  output ...;
endclocking

clocking ck1 @ (posedge clk);
  default input #5ns output #2ns;
  input data, valid, ready - top.ele.ready;
  output negedge grant;
  input #1step addr;
endclocking 

请注意以下事项:

  • 创建一个名为ck1的时钟块,该时钟块将在clk的posedge处于活动状态。
  • 默认情况下,时钟模块内的所有输入信号将在时钟clk的posedge之前采样5ns,时钟模块内的所有输出信号将在时钟clk的posedge后驱动2ns。
  • 数据、有效和就绪被声明为模块的输入,因此将在clk的位置之前5ns采样。
  • 授予是模块的输出信号,具有自己的时间要求。在这里,grant将在clk的negedge而不是默认的位置驱动。

Use within an interface

简单来说,时钟块封装了一堆共享一个公共时钟的信号。因此,在接口内声明时钟块有助于节省连接到testbench所需的代码量,并有助于节省开发时间。

时钟块内的信号方向是相对于testbench的而不是DUT的。

标签:Blocks,posedge,Clocking,clk,--,信号,output,input,时钟
From: https://www.cnblogs.com/sys-123456/p/18160621

相关文章

  • 攻防世界---unseping
    一.题干二.pop链的构造反序列化执行__wakeup魔术方法->waf函数对传入的参数进行过滤->执行__destruct魔术方法->利用call_user_func_array执行回调函数ping三.绕过过滤1.首先,waf函数过滤了ls命令,可以使用空变量${Z}或者''或者""绕过:<?phphighlight_file(__FILE__);class......
  • 电阻串并联计算器2025下载CResistors 2025 download
    可以算多个串联或者并联电阻的阻值、电压、电流、功率、电导之间的相互计算。本软件为支持64位x64奔腾指令的共享软件,价格很便宜,50元1套,就是2包烟钱。很划算。Itcancalculatethemutualcalculationofresistance,voltage,current,powerandconductanceofmultipleser......
  • WDS+MDT网络启动自动部署windows(十)硬盘分区格式化全自动
    简介:虽然WDS+MDT在单硬盘很方便,但是各种大硬盘,小固态加大硬盘的地方,还是有若干不便之处。如:第二块硬盘未分区格式化,需要手动选择安装磁盘,如果固态超过250G,是否需要分为两个区?自动选择较小的硬盘目前我这里的终端都是小固态,大机械,那么我们要尝试一下自动选择较小的硬盘作为系统......
  • Rabbitmq系列02---Exchange
    个人理解:交换机的类型划分个人理解是能过routingkey来划分的,一是否按routingkey找队列;fanout就是不按routingkey找队列,Direct和Topicr按routingkey找队列,只是一个模糊找,一个精准找,而headers不按routingkey是按消头中的内容找队列。一、Fanout(订阅模式|广播模式)  Fanout......
  • Java面向对象03——三大特性之继承
    一、继承(extends)1.1、继承是什么继承就是Java允许我们用extends关键字,让一个类与另一个类建立起一种父子关系;被继承的类称为父类(基类、超类),继承父类的类都称为子类(派生类) ,当子类继承父类后,就可以直接使用父类公共的属性和方法了当子类继承父类后,就可以直接使用父类公共的......
  • 使用 Docker 部署 Nuxt.js 应用程序
     来源:https://medium.com/@jkpeyi/deploying-a-nuxt-js-application-with-docker-69bf822c066d  WhendevelopingaNuxt.jsapplication,it’sessentialtobeabletodeployiteasilyandreproducibly.Inthisarticle,wewillexplorehowtouseDockertod......
  • 17-项目风险管理(8/10 十大管理)
    15.1管理基础15.1.1项目风险概述项目风险是一种不确定的事件或条件,一旦发生,会对项目目标产生某种正面或负面的影响。项目风险既包括对项目目标的威胁,也包括促进项目目标的机会。风险源于所有项目之中的不确定因素。项目在不同阶段会有不同的风险。风险会随着项目的进展而变......
  • 18-项目采购管理(9/10 十大管理)
    16.1管理基础16.1.1协议/采购合同项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程。例如合同、订购单、协议备忘录(MOA)和服务水平协议(SLA)。被授权采购项目所需货物、服务的人员可以是项目团队、管理层或组织采购部的成员。因应用领域不同,协议可以是......
  • 为什么动态代理只能覆盖 public 方法
    动态代理只能覆盖public方法的原因主要是因为Java的访问权限控制。在Java中,动态代理是通过生成一个继承自Proxy类并实现了指定接口的代理类来实现的。这个代理类必须能够访问被代理对象的方法,但是如果被代理对象的方法不是public,则代理类无法访问这些方法,因此也就无法覆......
  • 19-项目干系人管理(10/10 十大管理)
    17.1管理基础17.1.1管理的重要性每个项目干系人,他们会受到项目积极或消极的影响,或者能对项目施加积极或消极的影响。项目经理和团队管理干系人的能力决定着项目的成败。为提高项目成功的概率,尽早开始识别干系人并引导干系人参与。干系人满意度应作为项目目标加以识别和管理......