关于时钟模块完备性验证方法第五章

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

系列文章目录


第五章 时钟strobe检查


文章目录

目录

系列文章目录

文章目录

前言

一、什么时钟strobe?

二、使用步骤

1.自动化checker代码如下

总结



前言

只所以要进行时钟strobe检查,是因为很多时候设计中有下图时序的要求,这种场景一般在两个频率不同的时钟域内进行数据交互的时候会用到,比如AHB到APB域的数据交互,都需要利用clk_strobe来指示数据的有效性。

关于时钟模块完备性验证方法第五章,# 时钟验证,数字、FPGA验证,fpga开发,单片机,嵌入式硬件,开发语言,前端,青少年编程,硬件工程

                                                                  图1:两个时钟之间的关系 

 为了说明问题,我们举个简单的例子,实际上时钟设计可能会更复杂,利用进行扩展:

假设clk_2是clk_1分频得到的时钟,可以是同频,可以是二分频,设计要求当clk_2与clk_1同频时,clk_strobe需要一直为高电平,当clk_2为clk_1的二分频时,在任意两个沿对齐的时候需要采样到clk_strobe为高电平,且clk_strobe只能保持一个clk_1的时钟周期长度。


一、什么时钟strobe?

我们可以简单的理解为:当两个同源时钟时钟沿对齐的时候,不管时钟频率是否相同,为了保证数据交互正常,需要一个数据交互的握手信号来指示当前数据是否有效,而这个握手信号要求任意两个时钟沿对齐的时候都可以采样到其为有效。而且要求这个有效时间只能是两个时钟信号最高频的1个时钟周期。

二、使用步骤

1.自动化checker代码如下

property strobe_0;
  @(posedge clk_2)  disable iff(not_check) clk_strobe;
endproperty
a_check_strobe_0: assert property(strobe_0);
                  else begin
                     err_num ++;
                  end
c_check_strobe_0: cover property(strobe_0);

上图代码分析:由于clk_1是源时钟,clk_2为其子时钟,两个时钟沿会周期性的对齐,因此我们需要检查每个clk_2的上升沿都应该采样到clk_strobe,否则说明分频过程中,RTL设计漏掉了某个clk_strobe,这种漏掉的strobe是不符合设计要求的。当然,我们也可以在验证环境中通过控制not_check来关闭checker。

property strobe_1;
  @(posedge clk_1) disable iff(not_check) clk_strobe |=> if(clk_div_num==0) clk_strobe
                                                         else  !clk_strobe;
endproperty
a_check_strobe_1: assert property(strobe_1)
                  else begin
                     err_num++;
                  end
c_check_strobe_1: cover property(strobe_1);

 上图代码分析:因为clk_1与clk_2存在分频关系,因此,我们加入该条checker,当clk_1采样到clk_strobe时,如果clk_2与clk_1同频(clk_div_num=0表示不分频),那么下一个clk_2也必须采样到clk_strobe为高,否则下一个clk_2必须采样到低电平(因为设计要求clk_strobe在分频情况下只能保持一个clk_2的周期长度)。

sequence strobe_2;
  @(posedge clk_1) clk_strobe;
endsequence

sequence strobe_3;
  @(posedge clk_2) clk_strobe;
endsequence

property strobe_4;
   disable iff(not_check) strobe_2 |-> strobe_3;
endproperty
a_check_strobe_4: assert property(strobe_4)
                  else begin
                     err_num ++;
                  end
c_check_strobe_4: cover proerty(strobe_4);

上图代码分析: 分别定义两个序列,序列stobe_2为每个clk_1采样clk_strobe,序列strobe_3为每个clk_2采样clk_strobe。clk_strobe4定义了当strobe_2成立时激活属性检查,同时当前时刻判断序列strobe_3也必须成立,否则断言失败。利用该checker来进一步说明当clk_1与clk_2沿对齐时,必须都能采样到clk_strobe,即应该满足图1所示要求。


总结

通过systemverilog assertion来实现两个甚至多个时钟之间strobe的检查,后期可以进行覆盖率统计,通过分析覆盖率保证可以很清楚的查看这些checker有没有被执行过,且执行的结果可以反馈到上层的testbench中,方便验证人员快速定位到问题点。

利用三个checker来完成一组strobe的检查,可以实现全方位无死角的check任意时刻两个时钟时间是否完全满足图1中的时序要求。这种方式看似代码量有点大,但是通过实战我们发现,这种方式还是具有一定的高效性的,而且易于维护和继承。文章来源地址https://www.toymoban.com/news/detail-763072.html

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

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

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

相关文章

  • (数字图像处理MATLAB+Python)第五章图像增强-第二节:基于直方图修正的图像增强

    基于直方图修正的图像增强 :是一种常见的图像处理方法。该方法通过对图像的像素值分布进行调整,以改善图像的对比度和亮度等视觉效果。具体地,直方图校正方法将图像的像素值转换为一个新的值域范围,使得像素值的分布更加均匀,从而增强图像的细节和对比度。这

    2023年04月19日
    浏览(34)
  • (数字图像处理MATLAB+Python)第五章图像增强-第四、五节:基于模糊技术和基于伪彩色处理的图像增强

    图像的模糊特征平面 :假设原始图像为 I ( x , y ) I(x,y) I ( x , y ) ,其中 x x x 和 y y y 分别表示图像的水平和垂直方向的坐标。模糊特征平面可以表示为 B ( x , y , θ ) B(x,y,theta) B ( x , y , θ ) ,其中 θ theta θ 是一个旋转角度参数,表示模糊核函数的旋转角度。 B ( x , y , θ ) B(x,

    2023年04月20日
    浏览(77)
  • 第五章:AI大模型的性能评估5.2 评估方法

    随着AI技术的发展,大型AI模型已经成为了研究和实际应用中的重要组成部分。为了确保这些模型的性能和可靠性,性能评估是一个至关重要的环节。在本章中,我们将讨论AI大模型性能评估的核心概念、算法原理、最佳实践以及实际应用场景。 在AI领域,性能评估是指评估模

    2024年02月22日
    浏览(28)
  • 《计算机网络:自顶向下方法》第五章--网络层:控制平面

    控制平面作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制网络层组件和服务如何配置和管理 传统上,控制平面功能与数据平面的转发功能在一起实现,在路由器中作为统一的整体 在网络层:数据平面中有转发

    2024年02月12日
    浏览(37)
  • (统计学习方法|李航)第五章决策树——四五节:决策树的剪枝,CART算法

    目录 一,决策数的剪枝 二,CART算法 1.CART生成 (1)回归树的生成 (2)分类树的生成          2.CART剪枝 (1)剪枝,形成一个子树序列 (2)在剪枝得到的子树序列T0,T1-----,Tn中通过交叉验证选取最优子树Ta   好的决策树不高不宽     柳建男的”后剪枝“挥手创作   如果

    2024年02月14日
    浏览(28)
  • 【数字IC验证进阶】SoC系统验证和IP模块验证的区别及侧重点分析

    芯片验证其实有很多种,现在分工也很细了,包括ip验证和Soc验证等等,像现在还不是很热门的dft,formal,都是。偏的不讲,就说ip和soc。 很多小公司做的都是soc,因为简单,有钱买IP就行。去了就是soc验证 ,个别小公司,会自己开发一些自己的ip, 挂到soc中去 ,也会涉及到

    2024年02月07日
    浏览(26)
  • 第五章——动态规划2

    像二维数组一样,设置行和列,只不过这里的列是斜着的,如圈出来的7,坐标可以表示为(4,2) 集合划分,所有路径可以分成俩类,某点左上方一类,右下方一类。 我们先把7去掉,左边计算的就是从起点到8路径的最大值,8的坐标是i-1,j-1,即左边状态可以表示为f[i-1,j-1]含义是

    2024年02月16日
    浏览(23)
  • linux第五章(系统维护)

    一。进程管理命令 1.ps命令:显示进程信息 2.pstree命令:以树状形式进行展示 3.top命令:查看进程信息 4.kill命令:结束某个进程 二。磁盘管理 1.lsblk:对磁盘的使用情况进行查看 2.df:查看占系统的多少数据 3.du:查看文件或者目录在磁盘的占用量,不是真实大小 4.fdisk:查看磁

    2024年01月19日
    浏览(28)
  • Python第五章作业

    目录 第1关 回文素 第2关 反素数 第3关 哥德巴赫猜想 第4关 货币转换 第5关 个人信息提取 第6关 身份证号基本信息 第7关 各位数字之和为5的数 第8关 字符串长度 第9关 字符串加密 第10关 输出单词 第11关 字符大小写转换 第12关 查找指定字符 第13关 随机密码生成器

    2024年02月04日
    浏览(46)
  • 第五章 图像复原与重建

    退化图像: g ( x , y ) = h ( x , y ) ★ f ( x , y ) + η ( x , y ) g(x,y)=h(x,y)bigstar f(x,y)+eta(x,y) g ( x , y ) = h ( x , y ) ★ f ( x , y ) + η ( x , y ) 写成等价的频率域表示: G ( u , v ) = H ( u , v ) F ( u , v ) + N ( u , v ) G(u,v)=H(u,v)F(u,v)+N(u,v) G ( u , v ) = H ( u , v ) F ( u , v ) + N ( u , v ) 5.2.1噪声的空间和频率

    2024年02月09日
    浏览(23)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包