看一下race代码

`timescale 1ns/1ns
module race1;bit clk1, clk2;
bit rstn;
logic[7:0] d1;initial beginforever #5 clk1 <= !clk1;        //5ns一翻转,所以时钟周期是10ns
endalways @(clk1) clk2 <= clk1;    //当clk1上升沿到来时,赋值给clk2,利用组合逻辑使得clk2跟着clk1一起跳转initial begin#10 rstn <= 0;#20 rstn <= 1;
endalways @(posedge clk1, negedge rstn) beginif(!rstn) d1 <= 0;else d1 <= d1 + 1;         //注意这个d1,仅被clk1驱动,当clk1,rstn都为1时,d1加1
endalways @(posedge clk1) $display("%0t ns d1 value is 0x%0x", $time, d1);       //clk1上升沿时打印d1此时刻的值
always @(posedge clk2) $display("%0t ns d1 value is 0x%0x", $time, d1);      //clk2上升沿时,对D1进行采样,打印d1此时刻的值
endmodule


我们可以看一下,35ns处其实已经发生问题了,对35ns处分析,其实不难发现,通俗的分析,
1、d1的+1运算与clk不是同步的,d1+1显然要慢clk1一点,所以在ckl1上升沿来的时候,clk采到了0值(快速完成),之后d1+1才进行运算
2、对于clk2来说,clk2相对于clk1来说也是慢一点的,两者间有逻辑运算(<=),当clk2对d1进行采样时,d1已经完成d1+1的过程
3、对45ns分析与35ns一致

如图所示

波形图

SystemVerilog 接口之采样竞争相关推荐

  1. SystemVerilog: 仿真验证知识点点滴滴

    目录 1. 软件世界和硬件世界 2. 什么是package 3. import pkg::*是将pkg的所有都导入进来吗? 4. import vs include 5. 仿真时间和无限死循环 6. ...

  2. SV中的采样和数据驱动

    一.竞争问题 为了避免在RTL仿真行为中发生的信号竞争问题,建议通过非阻塞赋值或特定的信号延迟来解决同步的问题. 默认情况下,时钟对于组合电路的驱动会添加一个无限最小时间(delta-cycle)的延 ...

  3. IC验证培训——SystemVerilog与UVM,IC验证线上培训九月澎湃将至

    ​ 路科验证精品线下培训 为响应全国各地心心念路科验证培训的路粉们,路科将在9月1日进行线上培训,线上报名方式如下: 手机安卓端(暂不支持iOS)可在[腾讯课堂]APP搜索"路科验证&quo ...

  4. DirectX11 纹理采样

    纹理采样 1. HLSL纹理采样表示 我们知道,Texture2D对象用于在effect文件中表示纹理.不过,还有一种与纹理相关的SamplerState(采样器)对象.它用于描述如何使用过滤器访问纹 ...

  5. nb_samples(采样数)转换

    可以参考:https://blog.csdn.net/Martin_chen2/article/details/100103655中的错误案例. 我的frame采样数是2048,直接编码aac格式会失 ...

  6. 分享破解通达信接口的调用方法

    首先,破解通达信接口就是一种接口的调用,用于企业开启发展业务的一些内容.就是联系业务的第三方供应商,与相关的技术人员对接沟通,确认需要的接口,对接破解通达信接口并做测试,了解业务接口的速度.效率和渠道 ...

  7. 2021年全球音频接口收入大约145.1百万美元,预计2028年达到171.2百万美元

    本文研究全球市场.主要地区和主要国家音频接口的销量.销售收入等,同时也重点分析全球范围内主要厂商(品牌)竞争态势,音频接口销量.价格.收入和市场份额等. 针对过去五年(2017-2021)年的历史情况 ...

  8. SV绿皮书笔记(四)

    第四章. 连接设计和测试平台 4.1 测试平台和DUT之间通信 DUT和测试平台(Test)通常是分开的模块(module,描述硬件),可以在顶层(top)中将DUT和Test例化,然后根据对应信号进 ...

  9. Easier UVM Coding Guidelines / 便捷UVM 编码指南

    简介,原则和目标 easier UVM是一组编码指南,附带一个代码生成器,可以创建符合本指南的UVM代码.创建easier UVM是为了帮助个人和项目团队学习,然后尽快使用UVM提高工作效率,并减轻在 ...

最新文章

  1. Python3中global/nonlocal用法
  2. Java、Android静态代理与动态代理
  3. WinForm中DataGridView的TextBoxColumm换行
  4. 分析器错误信息: 未能加载类型命名空间.类... ---小结
  5. Java 接口做参数,接口回调
  6. rocketmq 4.X 扩容思路
  7. 1.8_heapq模块_优先队列
  8. 用R语言实现深度学习情感分析
  9. 【jQuery获取下拉框select、单选框radio、input普通框的值和checkbox选中的个数】
  10. linux设置dns简单的,Linux下的DNS简单配置
  11. 如何写好一篇综述类论文?
  12. 语义分割算法性能比较_汇总|3D点云分割算法
  13. 深信服SSL远程接入与深信服行为审计同步登陆用户信息
  14. 重装win10系统(家庭版和专业版)
  15. mysql数据库服务器重启_重启mysql数据库服务器
  16. 北大邹磊:图数据库中的子图匹配算法
  17. linux下安装mysql客户端client
  18. 怎样将直流电转变为交流电?
  19. 山西农业大学oracle创新硕士,山西农业大学双证在职研究生创新应注重自我调节...
  20. 实战小项目之借书系统

热门文章

  1. 2020年互联网大厂中秋礼盒PK!
  2. 数值孔径NA、分辨率极限与衍射极限(转)
  3. 使用高数值孔径透镜进行脉冲聚焦
  4. 实现一个时钟展示(jq插件)
  5. 数据库内连接和外连接
  6. 高德地图自适应多经纬度标记
  7. 3 配置ftp文件服务器,服务器_用Linux架设FTP服务器(3), 配置“/etc/ftpaccess”文件  - phpStudy...
  8. 微信小程序支付统一下单接口and异步回调
  9. CDR插件开发之CPG插件006 - 怎么实现一个CPG插件类(上篇)
  10. 小米B计划:提前进入硬件免费时代!