SV中的clocking时钟块

这篇具有很好参考价值的文章主要介绍了SV中的clocking时钟块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

采样时发生竞争(delta cycle的存在),会导致采样数据错误。为了避免在RTL仿真中发生信号竞争的问题,建议通过非阻塞赋值或者特定的信号延迟来解决同步问题。这里我们介绍使用clocking时钟块来决定信号的驱动和采样的方式。

delta cycle的存在问题

在RTL仿真时,由于无法确定具体电路的延迟时间,默认情况下时钟驱动电路时会添加一个**无限最小的时间(delta cycle)**的延迟,这个延迟要比最小时间单位精度还要小(可以理解成远小于1ps)。
由于各种可能性,clk与被采样数据之间如果只存在若干个delta-cycle的延迟,那么采样就会出问题。

采用clocking时钟块

clocking块基于时钟周期对信号进行驱动或者采样的方式,可以使testbench准确及时地对信号驱动或采样,消除信号竞争的问题。

clocking bus@(posedge clk);
    default input #2ns output #2ns //在clk上升沿的前2ns对其进行输入采样,在事件的后2ns进行输出驱动
endclocking

一般在接口中定义clocking块,如下:文章来源地址https://www.toymoban.com/news/detail-609149.html

interface chnl_intf(input clk, input rstn);
  logic [31:0] ch_data; 
  logic        ch_valid;
  logic        ch_ready;
  logic [ 5:0] ch_margin;
  // 定义时钟块
  clocking drv_ck @(posedge clk);
  	//采样时间
    default input #1ns output #1ns;
    //声明变量方向
    output ch_data, ch_valid;
    input ch_ready, ch_margin;
  endclocking
endinterface


到了这里,关于SV中的clocking时钟块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux设备驱动开发 - 虚拟时钟Clock驱动示例

    By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 很多设备里面系统时钟架构极其复杂,让学习Clock驱动的盆友头大。这里我参考S3C2440的clock驱动写了一个virtual clock,即虚拟时钟驱动,分别包含clock的provider和

    2023年04月21日
    浏览(30)
  • (十二)SV的断言

    断言又被称为监视器或者检验器,在设计验证流程中被广泛使用, 用于描述设计的属(property),可以完美地描述时序相关的状况,用于描述设计期望的行为,从而检验设计实际行为是否与设计意图相符 ,如果允许的设计属性不符合我们的期望,则断言失败;如果被禁止的设计

    2024年02月09日
    浏览(30)
  • SV学习——数据类型(1)

    SV中引入新的数据类型logic,SV作为侧重于验证的语言,并不十分关切logic对应的逻辑应该被综合位寄存器还是线网,因为logic被使用的场景如果是验证环境,那么它只会作为单纯的变量进行赋值操作。 引入的一个新的四态数据类型logic,可以代替reg;但是不能用在双总线和多驱

    2024年01月21日
    浏览(30)
  • sv,verilog

    在 Verilog 中,敏感列表(Sensitive List)指的是在 always 语句块中使用时钟信号的列表。敏感列表用于指定 always 块所监控的输入信号,在这些信号状态发生变化时, always 块会被触发执行。 在 Verilog 中, always 块有两种敏感列表: 电平敏感列表(Level-Sensitive List):较早的 Ver

    2024年02月04日
    浏览(30)
  • SV重要知识点

    1、#、wait、@三者的区别: 1)关于‘#’ a. 后面可以添加单位时间的耗时语句 b. 后面添加()可以传递参数 2)wait跟@的区别是: @是边沿敏感触发,而wait是电平敏感触发 wait只等待一次,@每时每刻都在等待(不在always限制下) 如何打印各种类型的变量? 结构体指针:%p 八、

    2023年04月12日
    浏览(33)
  • SV芯片验证之验证环境

    声明:本内容来自于学习路科验证发布在B站上的免费视频课程后的笔记 它是整个验证系统的总称,包括: 1、验证结构中的各个组件、组件之间的连接关系、测试平台的配置和控制; 2、编译仿真的流程、结果分析报告和覆盖率检查; 我们主要关注验证平台的结构和组件部分

    2024年02月16日
    浏览(34)
  • SV-298XT IP网络广播板 SV-298XT-共公广播音频模块IP网络广播板

    SV-298XT IP网络广播板 SV-298XT-共公广播音频模块IP网络广播板 SV-298XT网络广播模块是一款全数字网络型广播模组,核心部分采用了成熟的私有协议解决方案,性能稳定可靠。支持TCP、UDP、组播协议能针对当前服务器中不同的广播任务设置不同的广播传输方式。以太网传输可实现

    2024年01月15日
    浏览(33)
  • SV芯片验证之数据类型(一)

    四值(四态)逻辑: 可以表示0(低电平)、1(高电平)、X(未知值、不定态)和Z(高阻值)四种值。有 logic、reg、integer、time、net-type(wire、tri) 。 注: 真实电路中并无X,它只是用来表示不确定的状态,即不确定它到底是0还是1,但它要么是0要么就是1,不存在所谓的“中间态”。 高阻态

    2024年02月09日
    浏览(28)
  • SV学习——数据类型(第二章)

    verilog有1995和2001版本,而SV是verilog的延伸,SV发布的时候直接就是3.0,之后可能不再存在verilog,而是统一用SV。SV是完全兼容verilog的。verilog文件以.v结尾,SV文件以.sv结尾。语法是全部兼容的,SV是verilog的扩展和延伸。 verilog中有reg和wire两种数据类型,都是四值逻辑 0,1,x,

    2024年02月10日
    浏览(67)
  • Soem配置汇川SV660N

    本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star​​​​​​​ 目录 1. ETherCAT 状态机 2. SOEM配置过程 2.1 IP初始态转预运行 2.2 预运行转安全运行 2.3 安全运行转运行 2.4 运行状态 EtherCAT 设备必须支持4 种状态,负责协调主

    2024年02月04日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包