UVM高级应用

说明:这部分内容比较零散,且很多不好理解,所以这里只能选择性介绍一些内容。
使用interface代替driver部分功能方法:
在interface中可以定义任务与函数,也可以使用always语句和initial语句,也可以实例化其他interface。可用其做一些低层次的转换, 如8b10b转换、 曼彻斯特编码等。这些转换动作是与transaction完全无关的。好处:
让driver从底层繁杂的数据处理中解脱出来, 更加专注于处理高层数据有更多的数据出现在interface中, 这会对调试起到很大的帮助(因为interface中的信号在波形文件中有记录的)可变时钟的三种需求及对应实现方法在不同测试用例之间时钟频率不同, 但是在同一测试用例中保持不变例如:hdmi协议中会依据图像分辨率采用不同的时钟方法一:将时钟独立成一个文件,通过include不同的时钟实现方法二:在测试用例中使用config_db的set方法设置一个变量,然后在时钟实现的地方使用get方法获取该变量,将其作为时钟周期。在同一个测试用例中存在时钟频率变换的情况例如:pll过渡期前和过渡期后的时钟是不一样的方法一:在测试用例中使用config_db的set方法随着时间不同为时钟周期变量设置不同值。既关心过渡期前后的时钟, 也关心pll在过渡期的行为,即要求时钟变量不止是简单的可变,而且是正弦变化的。例如:关心pll过渡期内时钟行为,实际工作中时钟频率也是存在一定抖动的方法一:建立一个clk的interface,然后通过config_db将对clk的驱动放在一个时钟component中,这样的话,要实现任意对clk的驱动只需要重载这个时钟component即可。layer sequence的引入以太网包、ip包、 udp包、 tcp包,数据是层层封装的,为了提高测试用例的可重用性,方法有:
方法一: sequence中调用子sequence ——将与ip相关的代码写成一个函数, 而与mac相关的代码写成另外一个函数, 将这些基本的函数放在base_sequence中。在新建测试用例时, 从base_sequence派生新的sequence, 并调用之前写好的函数。---- 感觉更适合并列关系的测试用例方法二: 使用layer sequence ——一个sequence负责产生ip_transaction, 另外sequence负责产生my_transaction, 前者将产生的ip_transaction交给后者。--- 感觉更适合包含关系的测试用例layer sequence的示例
聚合参数的优势与问题优势:
可以将interface也放入此聚合参数类中使用聚合类减少了config_db::set的使用, 也会大大降低出错的概率问题:
本质上是将一些属于某个uvm_component的变量变成对所有的uvm_component可见在一定程度上降低了验证平台的可重用性总结:
在参数聚合程度/粒度上需要权衡:更好方便的使用vs代码可重用性

pikascript GPIO接口如何基于rtt pin设备实现呢?
特斯拉CEO马斯克_特斯拉未来将在全球建造10-12家工厂
MiZ702学习笔记一:奔跑吧Linux
智慧温室大棚方案实际应用
九天睿芯荣获2023 GAIE年度“最佳人工智能企业”等奖项
UVM高级应用
GE Digital宣布升级iFIX® HMI/SCADA Imagination推CPU产品系列
人工智能技术正在快速发展,将会给我们什么样的变化?人们应该如何与人工智能相处?
关于智能化扬尘在线监测系统的基本介绍
通信网有什么作用
惠普星14全能轻薄本绝了,牛配显卡+轻薄
我国OTT终端规模快速增长,2020年OTT总激活规模有望突破3亿台
浅谈Mini LED现有的技术难点
三星Galxy Fold国行版正式开售该机搭载骁龙855平台配备6颗摄像头
dropout带来的模型的变化
KUKA工业机器人搬运工具操作教程一
PA6000中标华南理工大学省汽车工程重点实验室
零售的下一波机会在哪里?
魅族研发15W无线快充技术 充电速度可媲美有线快充
电热毯节电电路图