2022年1月4日
摘要: 先来给结论,如果build_phase继承自uvm_component的话,那么build_phase里面会调用build函数。 下面我们通过源码和例子来进行分析。 build被调用了。 尝试注释掉super.build_phase,你会发现build就没有被调用。 super.build_phas 阅读全文
posted @ 2022-01-04 10:56 猪肉白菜_125 阅读(840) 评论(0) 推荐(0) 编辑
  2021年12月21日
摘要: uvm_root.print_topolgy() 最简单的使用方法是将enable_print_topology修改成1. 并不是从uvm_top开始打印的,而是从它的下一级,uvm_top只能有一个。 **当然你的实际的环境不能修改源代码。**可以在外部设置uvm_root.enable_prin 阅读全文
posted @ 2021-12-21 16:32 猪肉白菜_125 阅读(761) 评论(0) 推荐(0) 编辑
  2021年12月12日
摘要: 从下面一段代码,我们猜一下最终的输出是什么? 那我先把运行结果丢给大家,然后从源码一一来分析为什么是这样。 get_name() 在uvm_object.svh中定义了这个virtual函数,经过追踪发现这个函数并没有被重写过。 经过上述代码,我们能清楚的看到get_name()其实就是我们new( 阅读全文
posted @ 2021-12-12 10:27 猪肉白菜_125 阅读(962) 评论(0) 推荐(1) 编辑
  2021年12月8日
摘要: 讲到SystemVerilog中进程的控制,当然fork...join/fork...join_none/fork...join_any三兄弟以及wait/disable就会满足大家绝大多数的需求,那么更加精细的进程控制SystemVerilog还提供了process的内建函数。 在UVM的源码的p 阅读全文
posted @ 2021-12-08 16:40 猪肉白菜_125 阅读(339) 评论(0) 推荐(0) 编辑
摘要: main memory 😄RAM dynamic Random Access Memory cache : SRAM static Random Access Memory Magnetic disk why hierarchy works? two reasons: temporal local 阅读全文
posted @ 2021-12-08 16:35 猪肉白菜_125 阅读(79) 评论(0) 推荐(0) 编辑
  2021年5月15日
摘要: 我们知道virtual来修饰子函数,可以让基类的指针指向扩展类,从而利用基类中的virtual函数可以复用扩展类中的同名函数。但是constrain呢?本小结就来详细说明一下constrain。 我们通过一个例子来简单声明一下: ####情况一: class bird; rand bit [1:0] 阅读全文
posted @ 2021-05-15 17:50 猪肉白菜_125 阅读(1025) 评论(0) 推荐(0) 编辑
摘要: https://zhuanlan.zhihu.com/p/106486751 http://blog.eetop.cn/blog-1561828-2316833.html SV中的module,interface,program,checker,都提供declaration空间,内部定义都local 阅读全文
posted @ 2021-05-15 17:41 猪肉白菜_125 阅读(1656) 评论(0) 推荐(0) 编辑
  2021年5月12日
摘要: ####问题一:动态类型转换和静态类型转换的区别? $cast:基本语法$case(A,B)实际上是A=B;A表示目的端,B表示源端。(downcasting)类型向下转换 $cast 动态类型转换,转换失败会报错。 `静态类型转换,转换时报不报错 ####问题二:$cast是function还是t 阅读全文
posted @ 2021-05-12 11:37 猪肉白菜_125 阅读(4314) 评论(1) 推荐(3) 编辑
  2018年9月14日
摘要: 算作的空格个数. 所以, 当 vim 打开文件读取到一个 字符时, 就会使用这么多个空格来显示 . set softtabstop=4 " number of spaces in tab when editing 编辑时一个 算作的空格数. 所以这既是你插入 时插入的空格数, 也是你用 backsp 阅读全文
posted @ 2018-09-14 19:44 猪肉白菜_125 阅读(1006) 评论(0) 推荐(0) 编辑
  2018年8月29日
摘要: 所有的数据交换和控制同步被称为 线程间的通信(IPC)。 在SystemVerilog中可以使用 事件、旗语和信箱 来完成。 7.3 事件 在Verilog中,@操作符是边沿敏感的,它总是阻塞着,等待着事件的变化。 其他的线程可以通过 操作符来触发事件。 SystemVerilog引入了 trigg 阅读全文
posted @ 2018-08-29 19:37 猪肉白菜_125 阅读(601) 评论(0) 推荐(0) 编辑