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

IP验证概述

目录

前言

一、整体框架

二.transaction(sequence item)框架

三、agent框架

四. env框架

五.集成VIP和寄存器模型:

总结



前言

个人搭建UVM环境不需要太多的关心点,因为在验证工作的时候可能会共用一套UVM验证环境和脚本(除非你是自己玩,用AI可以解决大部分环境代码框架了。),作为入门读者搭建验证环境实也属有些难度。

刚入门的读者要先把心思花在如何编写case上去,至于整个UVM验证环境读者可以慢慢熟悉后再现有环境下做改动。

验证环境很多时候也是凑合着用就行,为了力图简单,搭建验证环境通常使用脚本生成验证环境,验证时还应该将注意力放到功能点的提取和corner完备性验证。

本文只是简单的入门基础,预备知识只需要读者对UVM的环境有个大概的了解即可。

参考:网络上常见的验证资料;有关验证的公众号。


一、观察IP

对于IP验证,拿到IP后搭建环境通常会关注四点:

数据流:查看一共有几路数据流,这些数据流决定了对应了环境中的有几个agent,同时还要区分输入和输出,这决定了agent中是否是active或者passive模式,该数据流的使用的协议是什么,这决定了agent的接口时序。

控制流:查看寄存器配置,存在寄存器配置的话需要在环境中加入对应的VIP或者agent。

模型检查:

        C模型使用dpi导入环境中,python模型使用对应的方法或者使用dpi间接导入,如果没有模型也可以自己编写。

集成环境:考虑集成情况,一般分为:集成驱动sequence,集成checker ,集成整体env 三种情况。

在搭建环境的时候同功能性质的组件最好只出现一次,例如agent中通常会将driver和monitor都要用到的virtual interface放到agent_config中统一管理,上层环境env也是一样的道理,诸如此类,我们总是能在各种环境组件中看到config里有vif(virtual interface) 。

二.transaction(sequence item)框架

拿到DUT的第一步,首先需要查看各个数据流,例如上述的数据流,控制流等,这样可以划分出对应的各种接口,接着编写各式各样的transaction。

另外在查看设计文档时,重点关注寄存器的功能,从中提取出要验证的功能点。

这些transaction就是各种数据流或者控制流,搭建的时候需要大致了解它们的流向。

三、agent框架

编写agent时,需要考虑该agent具体需要哪些接口,哪些接口需要transaction发送 ,哪些接口需要采样。通常将同一种协议或者时序相同性质类似的放到同一个agent中。

考虑到是否需要driver的存在,这个配置同样可以在config里完成配置,如果考虑复用性的话通常会在顶层top里配置各个agent的模式,以求达到最大的复用性。

四. env框架

env在配置中主要使用env_config组件来传递接口,配置各个agent的模式,配置寄存器模型和参考模型等。

不过不建议将env_config例化到env中,为了保证纵向配置工作量最小,通常会和env一起要例化到basetest中去,再由顶层直接控制。

功能点的提取工作量很大,而提取完成后还要写case并给对应的case编写相应的seuqence。

在某些特定的环境下,我们使用VIP进行验证,例如使用SVT_VIP进行集成和验证,下面讲一下如何集成?

五.集成VIP和寄存器模型:


在集成VIP之前,首先要去查看对应的demo是怎么做集成的,进入到demo中的base_test里面看是如何配置sequence和config对应的组件。

再进入到vip里面env和congfig组件,查看如何配置下属环境以及查看VIP的属性。

总的集成方法归结为以下几步:

1.实例化vip里的env(agent) ,config等组件。

2.修改config里的配置。

3.实例化寄存器模型,并配置寄存器模型对应的seuqnecer,以便能够进行前门访问。

4.配置slave sequence ,主要是给slave做DUT的响应操作。

5.在顶层将interface配置到各层的接口上。

六.整合框架

在基本确定了组件框架后就可以整合起来,组成一个可用的测试环境。不过这一步按照人的惯性思维也会放在第一步,即先确定整体框架,再来整理细节。

不过由于整体框架基本类似,在大脑中很容易形成,所以我放到了文末来讲。

一个常见的整体框架如图:


这是一个十分清晰的验证框架了,读者在看图可以大致理解UVM的控制框架和数据通路。需要理解的是在图中寄存器模型可以在env中例化,也可以上层test中例化。

因此图中寄存器模型并没有连线。

总结


文章转载自:

http://Opnp7q3L.zdxss.cn
http://I8lzmjRI.zdxss.cn
http://Dt3WKMy3.zdxss.cn
http://m9gILX6o.zdxss.cn
http://q66JIMV6.zdxss.cn
http://i3Iiceap.zdxss.cn
http://5OZDBz1a.zdxss.cn
http://XOz29FTM.zdxss.cn
http://kcHVvEst.zdxss.cn
http://JvRAkOHz.zdxss.cn
http://2Q3VvtbS.zdxss.cn
http://YbucYsJW.zdxss.cn
http://f69ODhJZ.zdxss.cn
http://g8WCMujK.zdxss.cn
http://1uwPccf1.zdxss.cn
http://p5BhmM2v.zdxss.cn
http://M7loDXBD.zdxss.cn
http://jexY1O5p.zdxss.cn
http://OsMPDTcR.zdxss.cn
http://1q6C3ri7.zdxss.cn
http://KJn47rXP.zdxss.cn
http://2rvoDRrg.zdxss.cn
http://Pl6SXOOK.zdxss.cn
http://t6JxmEY2.zdxss.cn
http://s8oi04dn.zdxss.cn
http://a7XlQA3K.zdxss.cn
http://8XpP9PYy.zdxss.cn
http://xPSh2HVs.zdxss.cn
http://6RZ3pEfL.zdxss.cn
http://ctcPMIK0.zdxss.cn
http://www.dtcms.com/a/379690.html

相关文章:

  • 【RabbitMQ】高级特性:持久性·发送方确认·重试机制·TTL·死信队列·延迟队列·事务·消息分发
  • Cherry Studio递归工具调用机制深度解析
  • python+springboot大学生心理测评与分析系统 心理问卷测试 自动评分分析 可视化反馈系统
  • 多模态大模型1:Crab
  • MySQL 面试场景题之如何处理 BLOB 和CLOB 数据类型?
  • Python 数据分析:从新手到高手的“摸鱼”指南
  • 手写Spring底层机制的实现【初始化IOC容器+依赖注入+BeanPostProcesson机制+AOP】
  • 【MySQL】表的操作和数据类型
  • QT M/V架构开发实战:QFileSystemModel介绍
  • 基于POI-TL实现动态Word模板的数据填充:【散点图】特殊处理方案
  • Chrome插件开发入门技术文章大纲
  • 新手向:如何高效使用AI技术
  • iOS App 混淆与资源保护:iOS配置文件加密、ipa文件安全、代码与多媒体资源防护全流程指南
  • Docker网络实战:容器通信与隔离之道
  • AI 赋能云端运维:基于 MCP 协议深度集成 Codebuddy CLI 与腾讯云 Lighthouse 的实战全解
  • 《从 0 建立测试开发认知:先搞懂 “是什么”,再学 “怎么做”》
  • Flink1.17.0集群的搭建
  • #C语言——刷题攻略:牛客编程入门训练(十二):攻克 循环控制(四)、循环输出图形(一),轻松拿捏!
  • 面试经典150题[029]:三数之和(LeetCode 15)
  • Ubuntu 24.04 搭建k8s 1.33.4
  • 从数字后端角度谈谈occ电路(一)
  • Hadoop简介:分布式系统的基石与核心架构详解
  • [数据结构] 优先级队列(堆)
  • 计算机毕业设计 基于深度学习的酒店评论文本情感分析研究 Python毕业设计项目 Hadoop毕业设计选题 机器学习选题【附源码+文档报告+安装调试】
  • 数据结构 Java对象的比较
  • EDID 数据结构解析与编辑工具:校验和计算、厂商/设备名编解码、物理地址读写、颜色与时序信息提取
  • 龙蜥8.10中spark各种集群及单机模式的搭建spark3.5.6(基于hadoop3.3.6集群)
  • Hadoop MapOutputBuffer:Map高性能核心揭秘
  • Kubernetes 弹性伸缩:深入讲解 HPA 和 VPA
  • 代理服务器是什么?怎么选择?