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

AHB Matrix 四星级 验证笔记(2.4) Tt3.3AHB总线协议测试时的 并行数据

文章目录

  • 前言
  • 一、代码
  • 二、错误
    • 1.地址范围
    • 2. 并行执行线程中变量覆盖的情况
    • 3.有关incr的beat


前言

  1. 来源路科验证
  2. 本节搞定 T3.3 AHB总线协议的覆盖:AHB_PROTOCOL_COVER 即测试ahb slave接口和master接口支持(尽可能)全部的ahb协议传输场景,主要是支持burst传输 (并行发送)
  3. 重点在于如何给地址
  4. 注意该test不是测试映射的完整性的;所以不需要关心整个地址是不是更加完备:即不是把所有的地址都测试完
  5. 关心的是协议的完整性;只需要保证从三个master到三个slave的访问地址之间没有重合;如果重合会给接下来的数据检查的带来问题;如果同一个地址被两个master的写所覆盖的话;时序上面的延迟会对预测带来障碍
  6. 可以加一些约束,让波形是自己所期望的;加的约束越少越好,这样的话协议上各种时序出现的可能性更大;前提是设计没问题,要是设计有问题的话,约束一开始不可以放的太开,那么就要从singl-----burst------wrap一步一步来

一、代码

  1. 思路:先搞定其中的一次并行发送:多个master到多个slave,稳点后,外部套一个repeat,让其多次发送
  2. 具体代码
--------------------------AHB_PROTOCOL_COVER_seq------------------
virtual task body();super.body();`uvm_info("body", "Entered...", UVM_LOW)cfg.enable_scb = 0;cfg.enable_cov = 0;repeat(loop_count) beginfor(int i=0; i< cfg.mst_num; i++) beginautomatic slv_addr_range_t rng = cfg.addrmap.get_addr_range($random_range(0, cfg.slv_num-1));automatic int mid = i;forkmem_check(mid, rng.addr_start + 'h1000*(mid+cfg.mst_num*$random_range(1, 4)));join_noneendwait fork;    //等第一次传输完以后,在repeat第二次end`uvm_info("body", "Exiting...", UVM_LOW)
endtask
  1. automatic int mid = i; mid 是在循环体内部使用 automatic 关键字声明的变量。这种方式会为每次循环迭代创建一个独立的 mid 变量副本。所以每次循环迭代中 mid 的值都是动态的,不会相互干扰。
  2. loop_count别忘记在挂载sequence之前随机
    seq中的代码
    在这里插入图片描述

loop_count设置多少以功能覆盖率能不能达到为准在这里插入图片描述

  1. 如何保证三个master给同一个slave写的话,地址不重合?
    这里给的地址是rng.addr_start + 'h1000*(mid+cfg.mst_num*$random_range(1, 4),可以看作是基地址+偏移地址,目前的burst_size=32bit,地址需要以4字节为单位进行递增;只要给master一个不一样的地址,后面加4都会不一样,这样就保证了地址的不一样,所以重点在于如何设置偏移地址

  2. 将一块地址按照h'100032‘h0200_0000---32‘h0200_FFFF)分的话,共15个区间;32‘h0200_0000---32‘h0200_10004KBburst传输要求的地址边界不超过1KB,所以他会完美的去匹配,无论落到哪一个区间,master哪怕是incr他也不会越界,这样就保证了地址的不重合

  3. mid+cfg.mst_num*$random_range(1, 4)这块的取值要保证最大值不可以超过14(E)(2+3*4)=14

  4. 上面的4的值与mst_num变大和mid都有关

二、错误

1.地址范围

  1. 出现不应该有的地址范围
    在这里插入图片描述
  2. 原因:在随机产生数值时,发生了错误,如果随机到5,最大是2+3*5=17>>14,将一块地址按照h'100032‘h0200_0000---32‘h0200_FFFF分的话,最后一个值是E=15`,共15个区间;所以将随机值区间最大改为4
mem_check(mid, rng.addr_start + 'h1000*(mid+cfg.mst_num*$random_range(1, 5)));

2. 并行执行线程中变量覆盖的情况

  1. 这个错误意味着在并行执行多个序列时,存在某些序列提前完成的情况,导致其他序列的项目无法正常处理。

在这里插入图片描述

  1. 原因:当缺少automatic int mid = i;时,i 产生的新的数会将原先的覆盖,导致i只能是3,原先的依次被覆盖掉了;
--------------------------AHB_PROTOCOL_COVER_seq------------------
virtual task body();
super.body();
`uvm_info("body", "Entered...", UVM_LOW)
cfg.enable_scb = 0;
cfg.enable_cov = 0;for(int i=0; i< cfg.mst_num; i++) beginslv_addr_range_t rng = cfg.addrmap.get_addr_range($random_range(0, cfg.slv_num-1));//automatic int mid = i;forkmem_check(mid, rng.addr_start + 'h1000*(mid+cfg.mst_num*$random_range(1, 4)));join_none
end
`uvm_info("body", "Exiting...", UVM_LOW)
endtask
  1. 解决之道:添加automatic int mid = i;,最好将rng也添加automatic

3.有关incr的beat

在这里插入图片描述

  1. 这里的错误提示数据对比出了问题,到底哪儿出了问题,看的不是很清楚,所以在做有关动态数组对比时,先比较动态数组的size,然后在比较里面的内容,比较每一个数据,
  2. 详细显示的话,会发现是两边的size不一样
    在这里插入图片描述
    在这里插入图片描述
    定位会发现错误的前面是incr传输,他的地址只要不跨越1KB边界即可,到底传了多少拍,不大清楚;不像incr4之类的,他的拍数是固定的在每一次传输的过程中
    在这里插入图片描述
    可以通过该参数记录,在写数据时记录下来,传递给读数据时的约束
    在这里插入图片描述
    如果给的类型是incr。没有给data.size的话会出问题;incr不限定;;;也就是说如果给的burst_typeincr的话,要限定burst_type的长度

相关文章:

AHB Matrix 四星级 验证笔记(2.4) Tt3.3AHB总线协议测试时的 并行数据

文章目录 前言一、代码二、错误1.地址范围2. 并行执行线程中变量覆盖的情况3.有关incr的beat 前言 来源路科验证本节搞定 T3.3 AHB总线协议的覆盖&#xff1a;AHB_PROTOCOL_COVER 即测试ahb slave接口和master接口支持&#xff08;尽可能&#xff09;全部的ahb协议传输场景&am…...

前端零基础学习Day-Eight

CSS字体和文本样式 CSS文字样式 字体&#xff1a;font-family 语法&#xff1a;font-family:[字体1][,字体2][,...] p{font-family:"微软雅黑","宋体","黑体";} 含空格字体名和中文&#xff0c;用英文引号括起 属性值&#xff1a;具体字体名&…...

贪心算法day3(最长递增序列问题)

目录 1.最长递增三元子序列 2.最长连续递增序列 1.最长递增三元子序列 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;我们只需要设置两个数进行比较就好。设a为nums[0]&#xff0c;b 为一个无穷大的数&#xff0c;只要有比a小的数字就赋值…...

【论文复现】MSA+抑郁症模型总结(三)

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀MSA抑郁症模型 热门研究领域&#xff1a;情感计算的横向发展1. 概述2. 论文地址3. 研究背景4. 主要贡献5. 模型结构和代码6. 数据集介绍7. 性…...

【软件测试】敏捷模型(Scrum模型)和V模型、W模型

敏捷模型 前面的那些模型以前非常流行&#xff0c;但现在开发人员在使用的时候会遇到各种问题。主要困难包括在项目开发期间处理来自客户的变更请求&#xff0c;以及合并这些变更所需要的高成本和时间。 在实际工作中&#xff0c;一款产品的功能是不断在变化的 所以为了克服这…...

【go从零单排】接口(interface)和多态(Polymorphism)

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在Go语言中&#xff0c;interface 是一种重要的类型&#xff0c;用于定义一组方法…...

SI5319C-C-GM,SiliconLabs芯科 SI5319C-C-GMR,时钟合成器/抖动清除器 封装 QFN-36 在售 20000PCS 23+

SI5319C-C-GM是SiliconLabs公司生产的时钟合成器和抖动清除器。它是一款高性能的时钟解决方案&#xff0c;可用于各种应用领域&#xff0c;包括通信、数据中心、消费电子等。 该器件采用了SiliconLabs独有的DSPLL技术&#xff0c;能够提供低抖动和高精度的时钟信号。它具有多个…...

使用批处理脚本批量删除Maven无效依赖

背景 在开发过程中&#xff0c;我们经常会遇到以下情况&#xff1a; 在pom.xml文件中错误地指定了依赖的名称。因为网络问题&#xff0c;某些依赖下载不完全。依赖版本号错误&#xff0c;导致下载的文件无法使用。 这些情况会导致Maven在本地仓库中留下一些无效的文件&#…...

腾讯cos对象存储,下行流量费贵,是否可以加入服务器减少费用,架构如何设计

腾讯云COS&#xff08;Cloud Object Storage&#xff09;对象存储服务提供了一种高效、安全、低成本的方式存储大量数据。然而&#xff0c;当涉及到外网下行流量时&#xff0c;确实会产生一定的费用&#xff0c;这可能会增加整体的成本。为了减少这些费用&#xff0c;可以通过以…...

【SAP】关于权限的继承

关于权限的父role和子role的权限继承&#xff0c;既可以 从子role主动去父role那里“取”。从父role“推”到子role 我自己之前一直用的是方法1&#xff0c;但由于子role很多&#xff0c;一个一个手工维护花了不少时间。 后来得知有方法2&#xff0c;特此测试。 我准备了父R…...

SpringBoot技术下的共享汽车运营平台

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理共享汽车管理系统的相关信息成为必然。开发…...

SwiftUI开发教程系列 - 第7章:数据流和状态管理

SwiftUI 的核心优势之一在于其声明式的数据绑定和状态管理系统&#xff0c;使得在多视图间传递和更新数据变得更加直观和高效。在本章中&#xff0c;我们将讨论如何使用 ObservedObject、EnvironmentObject、StateObject 等属性包装器进行复杂的数据管理&#xff0c;确保应用的…...

Ubuntu系统安装NVIDIA驱动、CUDA、PyTorch等GPU深度学习环境

学习目标&#xff1a; 在Ubuntu系统上安装CUDA、PyTorch等GPU深度学习环境&#xff0c;主要目标是为深入研究深度学习和深度强化学习提供高效的计算支持。通过构建GPU环境&#xff0c;计划掌握深度学习的基本概念和算法应用&#xff0c;提高模型训练效率&#xff0c;特别是在复…...

电子学会2024年3月青少年软件编程(图形化)等级考试试卷(三级)真题,含答案解析

我们今天分享的资料是:电子学会2024年3月青少年软件编程(图形化)等级考试试卷(三级)真题,含答案解析 电子学会 2024 年 3 月青少年软件编程(图形化)等级三级考试的主要考点包括但不限于以下内容: 理解变量的概念:能够新建变量,知道如何在舞台区显示或隐藏变量,理解…...

初学者指南:用例图——开启您的软件工程之旅

目录 背景&#xff1a; 基本组成&#xff1a; 关联&#xff08;Assciation&#xff09;&#xff1a; 包含&#xff08;Include&#xff09;&#xff1a; 扩展&#xff08;Extend&#xff09;&#xff1a; 泛化&#xff08;Inheritance&#xff09;&#xff1a; 完整银行…...

二叉树遍历/算法数据结构

六、树 6.1遍历算法 6.1.1前中后序 在做递归时&#xff0c;最重要是三步骤 确定递归函数的返回值和参数 确定终止条件 确定单层递归的逻辑 伪代码 void travel(cur, vec) {if (cur null) {return ;}vec.push(cur->middle, vec); // 递归中节点vec.push(cur->left, …...

C#字符串的不可变性:内存管理与线程安全的优势分析

在C#编程中&#xff0c;字符串&#xff08;String&#xff09;被设计为不可变对象&#xff0c;这意味着一旦创建字符串对象后&#xff0c;其内容是不可更改的。这种设计通过在每次修改字符串时创建一个新实例&#xff0c;而不是直接更改原有字符串实例&#xff0c;来实现不可变…...

【杂记】之语法学习第四课手写函数与结构体

函数 如同我们数学中学的 f(x) ax b &#xff0c;函数就是把一个东西丢进去&#xff0c;然后进行类似的操作变化&#xff0c;最终得到的可以是一个数&#xff0c;也可能什么都得不到而只是进行一项操作。 如sqrt() &#xff0c; max() 和 swap() 这样的其实都是函数&#x…...

细说STM32单片机USART中断收发RTC实时时间并改善其鲁棒性的另一种方法

目录 一、工程目的 1、目标 2、通讯协议及应对错误指令的处理目标 二、工程设置 三、程序改进 四、下载与调试 1、合规的指令 2、不以#开头&#xff0c;但以&#xff1b;结束&#xff0c;长度不限 3、以#开头&#xff0c;不以;结束&#xff0c;也不包含;&#xff0c;长…...

python使用turtle画图快速入门,轻松完成作业练习

turtle介绍 turtle是一个绘图库&#xff0c;可以通过编程进行绘图。其模拟了一个乌龟在屏幕上的运动过程。该库通常用于给青少年学习编程&#xff0c;当然&#xff0c;也可以使用其进行作图。 在一些学校中&#xff0c;可能在python学习的课程中&#xff0c;要求完成turtle绘…...

基于Slack与AI的IDE智能助手:架构设计与实战部署

1. 项目概述&#xff1a;当你的IDE拥有了“光标智能体” 如果你是一名开发者&#xff0c;每天在IDE&#xff08;集成开发环境&#xff09;里敲代码的时间超过8小时&#xff0c;那你一定对这样的场景不陌生&#xff1a;光标在代码行间跳跃&#xff0c;你正试图理解一个复杂的函…...

macOS LaunchAgent 开机自启服务配置实战:以 OpenClaw 为例

title: “macOS LaunchAgent 开机自启服务配置实战&#xff1a;以 OpenClaw 为例” tags: macOSLaunchAgent开机自启launchdOpenClaw categories:macOS description: “从原理到实战&#xff0c;详解 macOS LaunchAgent 的配置方法&#xff0c;以 OpenClaw Gateway 和 CLIProx…...

法律科技实践:基于Python与NLP的法律文书自动化处理工具集

1. 项目概述&#xff1a;一个法律从业者的效率工具箱如果你是一名律师、法务或者法律专业的学生&#xff0c;每天面对海量的法律文书、案例检索和合同审查&#xff0c;你一定会对“效率”这个词有切肤之痛。我从事法律相关工作超过十年&#xff0c;从最初的实习律师到后来独立处…...

我们团队的技术债已经堆成山,我用这四步说服老板给时间重构

在软件测试的日常工作中&#xff0c;我们或许是技术债最敏锐的感知者。每一次回归测试的漫长等待&#xff0c;每一个在“祖传代码”上小心翼翼打补丁的深夜&#xff0c;每一份因环境不稳定而飘红的测试报告&#xff0c;都在无声地控诉着那座压得团队喘不过气的“屎山”。然而&a…...

从零搭建静态博客:Hugo + GitHub Pages 全流程实战指南

1. 项目概述&#xff1a;一个静态博客的诞生与进化 如果你在GitHub上搜索过个人博客的源码&#xff0c;大概率会见过类似 username/username.github.io 这样的仓库名。 Yucco-K/yucco-k.github.io 就是这样一个典型的、以GitHub Pages为宿主的个人静态博客项目。乍一看&am…...

开源、有文档、能上线的 .NET + Vue 通用权限系统

前言在日常项目开发中&#xff0c;权限管理几乎是每个系统都绕不开的基础模块。从用户登录、菜单控制到数据隔离&#xff0c;一套稳定、灵活、可扩展的权限体系&#xff0c;往往决定了整个项目的成败。然而&#xff0c;从零开始搭建这样的平台&#xff0c;不仅耗时耗力&#xf…...

为什么顶尖社会学期刊编辑开始拒收未使用AI辅助验证的民族志推论?(NotebookLM可复现性协议首曝)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM社会学研究辅助 面向质性研究的语义增强工作流 NotebookLM 是 Google 推出的基于用户上传文档进行“可信引用”的 AI 助手&#xff0c;特别适用于社会学研究中对访谈转录稿、田野笔记、政策…...

NotebookLM+人类学工作流重构:3类濒危语言档案处理实录(附可复用知识图谱架构)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM人类学研究辅助 NotebookLM 是 Google 推出的基于 LLM 的研究型笔记工具&#xff0c;其核心能力在于对用户上传的私有文档&#xff08;如田野笔记、访谈转录稿、民族志手稿、考古报告 PDF 等…...

别再问STM32哪个型号有DAC了!一张图看懂F1/F4/L1系列DAC配置差异与选型避坑

STM32全系列DAC选型指南&#xff1a;从F1到L1的深度对比与实战避坑 当你的项目需要精确模拟输出时&#xff0c;STM32的DAC功能往往成为关键选择因素。但面对ST公司庞大的产品线&#xff0c;即使是经验丰富的工程师也常陷入选型困惑——为什么同系列不同封装的芯片DAC配置不同&a…...

京东自动抢购工具完整指南:5分钟学会Python自动化购物

京东自动抢购工具完整指南&#xff1a;5分钟学会Python自动化购物 【免费下载链接】autobuy-jd 使用python语言的京东平台抢购脚本 项目地址: https://gitcode.com/gh_mirrors/au/autobuy-jd 还在为京东秒杀抢不到心仪商品而烦恼吗&#xff1f;想要在促销活动中轻松抢购…...