2022年4月2日
摘要: 相信下面这张图就是UVM的整个tree的框架,my_case这一层是我们可见的一层,但是在uvm_root里面实例化my_case却是我们user不能看到的一层,今天我们就来说一下uvm_root这一层my_case的实例化是怎么进行的。 在run_test()函数里面调用factory机制,根据c 阅读全文
posted @ 2022-04-02 13:49 猪肉白菜_125 阅读(158) 评论(0) 推荐(0) 编辑
摘要: factory其实是对多态的一个扩展。 例子一: class bird extends uvm_object; virtual function void hungry(); $display("I am a bird, I am hungry"); endfunction function voi 阅读全文
posted @ 2022-04-02 10:50 猪肉白菜_125 阅读(144) 评论(0) 推荐(0) 编辑
  2022年4月1日
摘要: 我们知道factory的实现,其实最终都是通过uvm_factory.svh中的四个函数来实现的。factory具有全局唯一的特性。 大体上可以按照_by_name/_by_type或者是inst/all来做划分 可以在任意的地方用factory.set_inst_override_by_type的 阅读全文
posted @ 2022-04-01 17:37 猪肉白菜_125 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 伪代码框架可以参考:https://www.processon.com/view/link/6246bd177d9c080724722a9e 其实UVM factory机制的基本原理非常简单,可以参考之前的一个高级精简的例子来做说明:https://www.cnblogs.com/xuqing125 阅读全文
posted @ 2022-04-01 17:34 猪肉白菜_125 阅读(378) 评论(0) 推荐(0) 编辑
摘要: UVM的factory机制其实很简单,本质上就是一个关联数组,将各个具有继承关系的class,联系到一起,形成一张类似的表格。在创建的时候,可以通过查表来实现最终类型的实现。 本章节通过一个小例子来展示一下UVM的factory机制是怎么实现的。 这个例子就是对UVM factory机制的高度抽象。 阅读全文
posted @ 2022-04-01 16:50 猪肉白菜_125 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 静态变量,在sv中可以在类中创建一个静态变量,该变量将被这个类的所有实例所共享,并且是用范围仅限于这个类。 静态变量相对来讲比较简单,这里不做阐述,下面重点来看static function。 UVM 的source code中就运用了static function来实现单实例。 static 修饰 阅读全文
posted @ 2022-04-01 16:49 猪肉白菜_125 阅读(222) 评论(0) 推荐(0) 编辑
  2022年3月11日
摘要: 伪代码参考链接:https://www.processon.com/view/link/622af92e1efad407e98a6fca config_db机制是UVM中在不同的component之间实现资源共享的机制,它避免了全局变量的弊端。 通篇源代码看下来,其实config_db机制也是利用了 阅读全文
posted @ 2022-03-11 16:19 猪肉白菜_125 阅读(390) 评论(0) 推荐(0) 编辑
  2022年3月3日
摘要: 参考伪代码:https://www.processon.com/view/link/62202eb76376892b5b430298 首先说一下读完TLM源码的心得:TLM其实就是一个单向/双向通信的模型,各个函数put/get/write等,可以看做是一个缓存的实现。FIFO就将这些函数封装起来, 阅读全文
posted @ 2022-03-03 14:44 猪肉白菜_125 阅读(380) 评论(0) 推荐(0) 编辑
  2022年3月2日
摘要: 提到systermverilog,最常接触的就是随机,与随机紧密相关的函数就是randomize,但是实际上我们又对randomize知道多少呢?本章节我们就梳理一下randomize()的坑。 一些之前踩过的坑:https://www.cnblogs.com/xuqing125/p/1577200 阅读全文
posted @ 2022-03-02 10:01 猪肉白菜_125 阅读(520) 评论(0) 推荐(0) 编辑
  2022年2月28日
摘要: virtual seq 和virtual sqr是比较难理解的两个东西。 什么时候需要virtual sequencer和virtual sequence? 有多的驱动端agent,而且多个激励之间存在协调关系,那么virtual sequencer就很有必要了 virtual sequencer/ 阅读全文
posted @ 2022-02-28 09:41 猪肉白菜_125 阅读(181) 评论(0) 推荐(0) 编辑