good usage on systemverilog

再次细看uvm source code, 借此把里面用的很好的技巧和语法记录一下, 希望后面有精力陆续更新

Macro

参数传递

1.使用参数
1).   `(一个shell 执行符, Esc 下面 ),猜是转义字符的功能,使其“” 与S分离开,使编译器认为S是传入值而非字符串
2).  ``(两个shell 执行符, Esc 下面),这种偏多了,保留参数S的值
`define m_uvm_object_registry_internal(S) \
string str = `"S`"; 
`define m_uvm_object_registry_internal_xxx(S) \
string str2 = "xxx_``S``_xxx"; 
    initial begin
        `m_uvm_object_registry_internal(uvm_test)
        `m_uvm_object_registry_internal_xxx(uvm_env)
        $display("%0s, %0s", str, str2);
    end
仿真结果:
uvm_test, xxx_uvm_env_xxx

Formatting data to string

systemverilog syntax from IEEE:

string_output_tasks ::=
string_output_task_name ( output_var [,list_of_arguments ]) ;
string_output_task_name ::=
$swrite|$swriteb|$swriteh|$swriteo
variable_format_string_output_task ::=
$sformat (output_var,format_string [,list_of_arguments ]) ;
variable_format_string_output_function ::=
$sformatf (format_string [,list_of_arguments ])


$sformatalways interprets its second argument,and supports all the format specifiers supported by$display,
eg:  string s;
    $sformat(s, "pair : %s, %s",
             first.convert2string(), second.convert2string()
);
将第二个参数$display 成string,并赋值s;
$sformatf 跟$sformat 一样,除了会将结果返回,也没有第一个参数。当一个string值需要有效地返回值该function很有用, uvm 中常用的就是该function 做字符串打印.
eg: return $sformatf("built-in pair : %p, %p", first, second);


count 1 number








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值