日常记录(39)sformatf、问答
\$sformatf
$sformat(str,format,args); $sformat是$sscanf的反函数。将字符串按照给定的格式填入相应的参数args中 $sformatf(format,args); $sformatf任务和$sformat相似,除了其返回字符串结果。字符串作为$sformatf的返回值,而不是像$sformt一样放在第一个参数上。
https://blog.csdn.net/weixin_39060517/article/details/121408817
SystemVerilog里好像没有sprintf,取而代之的是sformat和sformatf函数。前者参数为三个,后者返回了字符串。
可用于uvm_info等的显示。
uvm的new与type_id::create
https://zhuanlan.zhihu.com/p/381389469
问答
47、使用new()和create()方法创建对象有什么区别?
UVM推荐使用内置方法**::type id::create()**,而不是直接调用构造函数new()创建组件或事务对象。
create方法在内部调用factory机制以查找所请求创建的类型,然后调用构造函数new()以实际创建一个对象而无需更改任何代码。
https://www.jianshu.com/p/8ad30803364f
使用了uvm_component_utils注册了之后就可以使用类似于A=example::type_id::create(“a”,this)的形式,
create是factory重载了new函数,是factory方式实例化;
如果没有使用uvm_component_utils注册,则只能使用systemverilog的new函数去实例化
使用create产生的实例可以使用uvm的很多功能,比如overide功能(set_type_override_by_type(a1::get_type(),a2::get_type()))。
Le vent se lève! . . . il faut tenter de vivre!
Le vent se lève! . . . il faut tenter de vivre!