当前位置: 首页 > article >正文

【PCIe 验证每日学习・Day13】DLLP 与 ACK/NAK 重传机制基础验证

大家好继续我们「PCIe 验证每日学习・30 分钟打卡」系列。今天进入数据链路层核心DLLP 帧结构、ACK/NAK 应答机制与重传验证。内容严格遵循 PCIe 规范、100% 无错误讲解通俗、结构清晰、代码可直接复用风格与前几日完全统一适配 CSDN 富文本排版可直接复制发布。前 12 天核心回顾1 分钟快速衔接Day1–2PCIe 三层架构事务层 / 数据链路层 / 物理层Day3–11配置空间、BAR、Cfg/Mem 交易、Capability、中断Day12LTSSM、L0/L0s/L1、链路控制与状态寄存器今日重点数据链路层如何保证 TLP 可靠传输—— 这是 PCIe 不丢包的关键今日 30 分钟学习分配0–8 分钟DLLP 作用、类型与帧格式基础必懂9–18 分钟ACK / NAK 应答与重传机制详细图解逻辑19–26 分钟DLLP 监测、UVM Monitor 与断言实现27–30 分钟必测项 小练习一、DLLP 基础概念与类型0–8 分钟通俗无错1. 什么是 DLLPDLLP Data Link Layer Packet数据链路层包只在数据链路层使用对事务层不可见。作用只有一个保证 TLP 传输可靠、有序、无错、不丢失。TLP业务数据包MemRd/Wr、CfgRd/Wr 等DLLP控制应答包ACK、NAK、流控、电源管理2. 4 类最核心的 DLLP入门必须掌握ACK DLLP应答TLP 正确接收NAK DLLP应答TLP 出错要求重传Flow Control DLLPFC DLLP流控告诉对端 “我还有多少缓冲区你能发多少”PM DLLP低功耗L0s / L1 进入与退出握手3. 规范要点绝对无错DLLP 有固定格式长度固定每个发送出去的 TLP 都有一个Sequence Number序列号接收方用 ACK/NAK 携带序列号告知发送方哪些包收到、哪些出错重传由数据链路层自动完成软件 / 事务层完全无感知二、ACK / NAK 与重传机制1. 正常传输流程ACKRC 发送 TLP携带序列号SEQXEP 正确接收校验无误EP 回包ACK(X)RC 收到 ACK删除重传缓冲中的该 TLP2. 异常传输流程NAK 重传RC 发送 TLPSEQXEP 接收时校验错误CRC 错 / 信号 integrity 错EP 回包NAK(X)RC 收到 NAK自动重传 TLP (X)EP 正确接收后回 ACK (X)重传结束3. 关键规则序列号循环递增收发双方严格同步未收到 ACK 的 TLP 会保存在 ** 重传缓冲Replay Buffer** 中NAK 触发重传但重传次数由硬件控制持续多次重传失败会触发Recovery重新训练链路Day12 内容4. 一句话总结ACK 确认收到NAK 传错重传重传由链路层自动搞定。三、DLLP 监测与 UVM 验证实现1. 验证思路DLLP 是硬件自动行为我们不生成 DLLP只做三件事Monitor 抓取 TLP 与 DLLP检查序列号是否连续检查 ACK/NAK 是否匹配发送的 TLP用断言保证出错必回 NAK正确必回 ACK2. 基础 Monitor 监测代码class pcie_dllp_monitor extends uvm_monitor; uvm_component_utils(pcie_dllp_monitor) uvm_analysis_port #(logic [7:0]) ack_port; virtual pcie_intf vif; function new(string name, uvm_component parent); super.new(name, parent); ack_port new(ack_port, this); endfunction virtual task run_phase(uvm_phase phase); forever begin (posedge vif.clk); // 监测 ACK 有效 if(vif.ack_valid) begin uvm_info(DLLP_MON, $sformatf(收到 ACK, Seq%0d, vif.ack_seq), UVM_LOW) ack_port.write(vif.ack_seq); end // 监测 NAK 有效 if(vif.nak_valid) begin uvm_error(DLLP_MON, $sformatf(收到 NAK, Seq%0d, vif.nak_seq)) end end endtask endclass3. 高频实用断言module pcie_dllp_assert; include uvm_macros.svh input clk; input rst_n; input tlp_tx_vld; // 发送 TLP input [7:0] tx_seq; // 发送序列号 input ack_vld; // 收到 ACK input [7:0] ack_seq; // ACK 序列号 input nak_vld; // 断言发送 TLP 后最终必须收到对应 ACK property p_tlp_ack_match; (posedge clk) disable iff(!rst_n) tlp_tx_vld |- ##[1:200] (ack_vld ack_seq tx_seq); endproperty a_tlp_ack_match: assert property(p_tlp_ack_match) else uvm_error(DLLP_ERR, TLP 发送后未收到对应 ACK) // 断言不能连续收到大量 NAK property p_no_continuous_nak; (posedge clk) disable iff(!rst_n) nak_vld |- ##[1:10] !nak_vld; endproperty a_no_continuous_nak: assert property(p_no_continuous_nak) else uvm_error(DLLP_ERR, 连续 NAK 重传风暴链路异常) endmodule四、今日必测项 小练习27–30 分钟必测项可直接加入用例列表正常 TLP 传输收到对应 ACK序列号匹配注入单比特错误触发 NAK 自动重传重传后成功重传缓冲机制正常未 ACK 的包不删除无连续 NAK 风暴无链路挂死所有 DLLP 断言无报错小练习说出 TLP 与 DLLP 的区别与层次关系简述 ACK、NAK 的作用写一条断言禁止在链路非 L0 时发送 DLLP思考如果永远收不到 ACK硬件会怎么处理明日 Day14 预告【PCIe 验证每日学习・Day14】Flow Control 流控基础与 FC DLLP 验证内容包括FC 模式与信用值Credit机制FC DLLP 结构与更新规则发送端 / 接收端流控模型流控饥饿、反压、超时验证UVM 流控监测与断言

相关文章:

【PCIe 验证每日学习・Day13】DLLP 与 ACK/NAK 重传机制基础验证

大家好,继续我们「PCIe 验证每日学习・30 分钟打卡」系列。今天进入数据链路层核心:DLLP 帧结构、ACK/NAK 应答机制与重传验证。内容严格遵循 PCIe 规范、100% 无错误,讲解通俗、结构清晰、代码可直接复用,风格与前几日完全统一&a…...

Linux 的 cat 命令

Linux 的 cat 命令详解 命令概述 cat(concatenate 的缩写)是 Linux 系统中最基础且常用的命令之一,主要用于查看文件内容、合并文件以及创建简单文件。该命令属于 GNU coreutils 包的一部分,几乎在所有 Linux 发行版中都默认安装…...

burpsuite详细安装教程及功能讲解

好久不见,各位道友 目录 好久不见,各位道友 Brp Suite 介绍 正常情况下(不使用Burp Suite),客户端与服务器的交互过程如下: 当加入Burp Suite时,客户端与服务器的交互过程如下:…...

春日桌搭新首选!ROG魔霸9 Mini:3L 迷你机身,塞下锐龙 9+RTX5070

三月春意渐浓,很多人都开始给自己的桌面焕新升级,而一款体积小巧、性能够强的主机,绝对是桌搭升级的核心。最近 ROG 推出的魔霸 9 Mini 电竞迷你主机,就精准命中了玩家与办公人群的核心需求 —— 仅 3L 的超小体积,却塞…...

Qt导航栏组件A03:VS Code 风格的图标侧栏

目录 一、引言 二、最终效果预览 三、核心实现原理 3.1 布局结构设计 3.2 核心技术点 四、代码实现详解 4.1 项目结构 4.2 导航组件的核心代码 4.3 样式表设计 五、总结 5.1 核心要点回顾 5.2 学习建议 源码下载 系列编号:A-03 导航风格:只有图标的侧栏 适用场景:IDE、编辑器…...

计算机毕业设计源码:Python贝壳租房数据可视化与智能推荐系统 Scrapy爬虫 可视化 推荐系统 大数据 数据分析 大模型 房源 房子(建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

深度探索Fluent中的电弧、激光与熔滴一体化模拟

Fluent电弧,激光,熔滴一体模拟。 UDF包括高斯旋转体热源、双椭球热源(未使用)、VOF梯度计算、反冲压力、磁场力、表面张力,以及熔滴过渡所需的熔滴速度场、熔滴温度场和熔滴VOF。初识激光熔化沉积:一场材料…...

电-气-热综合能源系统节点能价计算方法研究

基本文献复现-计及碳排放成本的电_气_热综合能源系统节点能价计算方法研究 真正做到了电热气潮流耦合,很适合综合能源系统建模的初学者,配合复现论文。 运行程序HeatGasPowerCombination即可。 每个系统模型都有专门的文档讲解,程序注释齐全。…...

香草纪元开服教程:使用云鸢联机平台快速搭建“食旅纪行”服务器(高配推荐版)

你是否喜欢原版风格,热爱收集,渴望在minecraft中休闲养老?你是否喜欢眼前一亮的各种新奇模组,热爱探索,打造神器征战各种boss?你是否在找一个农夫乐事大型养老包,想在mc里做个美食家&#xff1f…...

增程式电动汽车自适应ECMS能量管理策略:基于工况的Matlab实现方案

增程式电动汽车基于工况的自适应ECMS能量管理策略(matlab的m程序) 最近试驾某品牌增程式电动车时,发现一个有趣现象:堵车时增程器几乎不启动,而上了高速却像开了狂暴模式。这背后的能量管理策略有点东西,今…...

Comsol锂枝晶模型:锂枝晶生长与锂离子浓度、电势分布的模拟

comsol锂枝晶模型 Comsol 锂枝晶生长模型,锂枝晶生长,锂离子浓度分布,电势分布 此链接是随机形核生长锂电池实验室里最让人头疼的玩意就是锂枝晶。这货像金属胡须一样野蛮生长,动不动就刺穿隔膜搞短路。去年用COMSOL建锂枝晶模型时…...

基于改进蛇优化算法(GOSO/ISO)优化极限梯度提升树的时间序列预测

基于改进蛇优化算法(GOSO/ISO)优化极限梯度提升树的时间序列预测(GOSO/ISO-XGBoost) 蛇优化算法SO是2022年提出的新算法,性能优异,目前应用较少,改进蛇优化算法GOSO/ISO应用更少,适合PAPER 改进点1为在初始化种群引入混沌映射&…...

大厂ZigBee射频芯片CC2430反向电路探索

大厂ZigBee射频芯片CC2430反向电路 学习方法是:可以直接查看里面的电路结构,还有管子的宽长比参数等。 拿到原理图之后需要自己换成自己所持有的PDK就可以跑仿真了,国内大部分公司都是这样设计芯片产品的,参考价值非常大&#xff…...

Matlab实现频率切片小波变换(FSWT)绘制时频图

Matlab进行频率切片小波变换(FSWT)源代码,将一维信号生成时频图。 输入信号可以是任何一维信号,心电信号、脑电信号、地震波形、电流电压数据等。 相比连续小波变换(CWT),频率切片小波变换(Frequency Slice Wavelet Transform,FSWT)是一种更具…...

Prompt工程深度揭秘

🎯 Prompt工程深度揭秘:AI的"说明书"是如何进化的 从简单指令到复杂工程:理解Prompt如何让AI变得"听话" 你是不是好奇,这些这么多的新东西,他们在使用的时候不都是一堆提示词嘛,那分裂…...

飞轮储能系统建模详解与MATLAB仿真实践(含永磁同步电机驱动模型)含多种模型与建模仿真指南

飞轮储能系统的建模与MATLAB仿真 飞轮储能系统的建模与MATLAB仿真(永磁同步电机作为飞轮驱动电机)含详细建模文件 内含两个飞轮储能模型:模型一的机侧网侧分开运行,附54页建模仿真说明;模型二的机侧网侧同步运行——内…...

基于全阶磁链观测器的异步电机矢量控制

基于全阶磁链观测器的异步电机矢量控制全阶磁链观测器的主要思想是将异步电机模型作为参考,把状态估计的方程作为可调节部分。 这两部分具有相同物理意义的输出量,利用两个部分的输出量误差再经过反馈校正通道对状态观测值进行修正,使观测值快…...

高级特性之dubbo超时机制及集群容错机制

当服务消费者要进行消费的时候,这个时候它可能就开启一个线程去调用服务提供者的具体实现,等他返回相应的结果,这个时候由于网络的问题或者服务端并不可靠,它会在这阻塞很长的一段时间。如果这个服务一直有人在调用那么就会开一堆…...

西门子S7-1200 PLC工业污水处理系统:基于博途V13sp1的WinCC画面组态与仿真报告

西门子工业污水处理系统,plc污水处理系统,基于plc的污水处理系统,系统采用s7-1200PLC设计,博途wincc画面组态。 包括plc触摸屏组态画面及仿真,报告等 博途V13sp1编程,V13sp1以上版本可以打开工业污水处理系…...

事件触发控制代码及其对应参考文献

事件触发控制代码对应参考文献 1.2023IEEE TRANS 顶刊基于事件触发的深度强化学习自动驾驶决策(CCF-A) 2.多智能体分布式系统的事件触发控制 3.基于观测器的非理想线性多智能体事件触发的跟踪一致性 4.非线性不确定扰动多智能体系统固定时间事件触发一致…...

实测对比后!千笔AI,开源免费降重首选

在AI技术迅速发展的今天,越来越多的学生和研究人员开始依赖AI工具辅助论文写作。然而,随着知网、维普、万方等查重系统不断升级算法,以及Turnitin对AIGC(人工智能生成内容)的识别愈发严格,AI率超标问题已成…...

直驱风机Simulink仿真模型与永磁直驱式风力发电系统整体仿真:380V与690V双电压仿真...

直驱风机simulink仿真模型,永磁直驱式风力发电系统 matlab/simulink整体仿真,有380V和690V两个仿真,波形如图,现货有2018 和 2021 两个版本,可导出2015b-2022版本,有模型说明和文献直驱风机在风电场的应用这…...

Canoe-Autosar网络管理自动化测试脚本及Capl源码:全套、可直接使用修改项目配置

Canoe-Autosar网络管理自动化测试脚本 Capl源码,全套,修改项目配置可以直接使用。 1.启动程序 2.加载配置文件 3.选择帧类型(标准帧或扩展帧) 4.修改配置文件,自动弹出配置文件窗口 5.选择测试用例 6.点击运行 7.测试完成打印报告并记录对应…...

基于LADRC自抗扰控制的VSG三相逆变器预同步并网策略

基于LADRC自抗扰控制的VSG三相逆变器预同步并网控制策略 基于LADRC自抗扰控制的VSG三相逆变器预同步并网控制策略是一种用于实现逆变器在微电网中的协调运行的先进控制策略。 逆变器控制方式采用虚拟同步发电机控制(VSG),通过引入虚拟同步发电…...

桥梁裂缝图像识别 智慧桥梁钢筋裸漏图像识别 基建领域混凝土结构病害检测 桥梁病害图像 YOLO格式数据集 第10515期

混凝土病害检测数据集 README类别 锈蚀钢筋 蟹爪状破损 碳化 受侵蚀混凝土 开裂混凝土 劣质混凝土 剥落 泛碱 微裂缝 裂缝往期热门主题 主页搜两字"关键词"直达 代码数据获取: 获取方式:***文章底部卡片扫码获取***覆盖了YOLO相关项目、OpenCV…...

基于FPGA的视频缩放算法:支持4K2K输入与输出,缩放参数可控

基于fpga的视频缩放算法,支持4k2k输入,4k2k输出,缩放参数可控。最近在折腾一个FPGA视频处理项目,发现市面上的缩放方案要么延迟太高,要么资源占用爆炸。自己动手撸了个支持4K60帧的缩放架构,参数还能实时调…...

【Day25】LeetCode:134. 加油站,135. 分发糖果,860. 柠檬水找零,406. 根据身高重建队列

文章目录LeetCode:134. 加油站思路解答LeetCode:135. 分发糖果思路解答LeetCode:860. 柠檬水找零思路解答LeetCode:406. 根据身高重建队列思路解答LeetCode:134. 加油站 https://leetcode.cn/problems/gas-station/ …...

Linux HTTP服务器

1.完成对于服务器的基础编写socket.hpp套接字模块#pragma once #include<iostream> #include <sys/types.h> #include <sys/socket.h> #include<string> #include<netinet/in.h> #include <arpa/inet.h>//sockaddr_in 头文件 #include&quo…...

进程优先级/进程切换

1.优先级的基本概念进程优先级决定CPU执行顺序&#xff0c;优先级高的进程优先获得CPU&#xff0c;合理配置优先级可提升系统性能可将进程绑定到特定CPU核心运行&#xff0c;把不重要进程隔离到某CPU&#xff0c;避免干扰核心任务&#xff0c;显著改善整体系统性能和资源利用效…...

3.2.课设实验-Java核心技术-日期

一.题目&#xff1a;比较日期编写一个Java应用程序&#xff0c;用户输入两个日期&#xff0c;程序将判断两个日期的大小关系&#xff0c;以及两个日期之间的间隔天数。二.参考代码&#xff1a;package Practice2;import java.util.Calendar; import java.util.Date; import jav…...