验证环境采样rtl时序数据遇到的问题

记录验证环境采样rtl时序数据遇到的问题

需要解决的问题:

  • 需要在每个时钟周期查看read_en信号是否生效,如果生效在下个周期拿出data

  • wave示例:

  • 注释:read_en为3bit低有效数据,即当read_en != 'h7时读有效

遇到的问题:

  • 错误示例:

    {sv} 复制代码
        forever begin
            @(posedge clk)
            if(read_en != 'h7) begin
                @(posegde clk)
                get_data();
            end
        end
  • 错误分析:

    • 在第一个read_en生效后,即read_en为0时,需要等待一个周期去拿去数据A,但这时候拿数的逻辑超过了1个周期,导致下次read_en没有被采样到,会跳过B直接去拿C
  • 正确的做法:

    {sv} 复制代码
        event start_read;
        fork
            forever begin
                @(posedge clk)
                if(read_en != 'h7)
                    -> stat_read
            end
            forever begin
                @(start_read);
                @(posedge clk)
                    get_data();
            end
        join
    • 分析:
      • 将数据采样和采样的条件放在两个线程里,互不影响
相关推荐
現実君1 小时前
关于MCU下位替换FPGA的经验与方案
单片机·嵌入式硬件·fpga开发
Terasic友晶科技4 小时前
【教程】Agilex 5 SoC 的两种启动模式的开发演示(一)(FPGA Configuration First)
fpga开发·agilex 5 soc
ALINX技术博客4 小时前
【黑金云课堂】FPGA技术教程Vitis开发:SD卡WAV文件读取音频播放实验
fpga开发·音视频
仲南音2 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner3 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20203 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy3 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia3 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20203 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子4 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析