日常记录(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()))。
posted @ 2022-01-15 16:47  大浪淘沙、  阅读(390)  评论(0)    收藏  举报