参考:http://blog.eetop.cn/blog-1561828-2331509.html
性价比分析
`uvm_*_utils
应该使用。
这些配对的宏用来将类注册到factory中,定义create()方法。由于类型的注册必须准确,而这些宏代码简短、易于分析,也难以出错,所以这些宏是很方便的方法,应该使用。
`uvm_info | warning | error | fatal
应该使用。
与uvm_report_*函数相比,这些宏最大的一个便利就是在选择处理字符串之前,先判断其verbosity是否可以过滤,如果可以过滤则不会调用umv_report_*函数,这就节省了一笔字符串处理的资源。因此推荐使用该宏。
`uvm_*_imp_decl
可以使用。
这些宏定义了一些特殊的imp类型端口,使得组件可以定义多个TLM接口和内置多个TLM处理方法。比起自己定义参数化的类和方法,还是使用该宏的方法简易。
`uvm_do_*
可以避免。
`uvm_do_*由多个内置的宏进一步构成,这些宏的存在是为了通用语sequence或者sequence item。如果用户自己选择不使用`uvm_do_*的话,那么就需要考虑针对于sequence或者sequence item而采取不同的方法,但是使用底层方法可以减少底层的开支。下面的两种方法分别通过宏和底层函数来发送sequence和sequence item。