在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5207|回复: 16

[求助] 关于宏定义

[复制链接]
发表于 2019-10-5 16:10:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
有没有放假依然坚持在一线的大佬,能不能解释下,下面这段宏定义什么意思,把这个宏定义去掉应该怎么写呢
`DV_CHECK_RANDOMIZE_WITH_FATAL(instr_list[i],   
        // The last instruction cannot be branch instruction as there's no forward branch target.
       if((i == instr_list.size() - 1) || no_branch) {
          category != BRANCH ;
        }
       if(no_load_store) {
        !(category inside {LOAD, STORE});
       })


// Shorthand for common foo.randomize() with { } + fatal check
`ifndef DV_CHECK_RANDOMIZE_WITH_FATAL
  `define DV_CHECK_RANDOMIZE_WITH_FATAL(VAR_, WITH_C_, MSG_="Randomization failed!", ID_=`gfn) \
    `DV_CHECK_FATAL(VAR_.randomize(), MSG_, ID_, with { WITH_C_ })
`endif


`ifndef DV_CHECK_FATAL
  `define DV_CHECK_FATAL(T_, MSG_="", ID_=`gfn, WITH_C_=) \
    `DV_CHECK(T_, MSG_,fatal, ID_, WITH_C_)
`endif

`ifndef DV_CHECK
`define DV_CHECK(T_, MSG_="", SEV_=error, ID_=`gfn, WITH_C_=) \
    if (!(T_ WITH_C_)) begin \
      `uvm_``SEV_(ID_, $sformatf("Check failed (%s) %s ", `"T_`", MSG_)); \
    end
`endif
看了好久都没能搞出来,哪位大佬能解释解释,感谢。






 楼主| 发表于 2019-10-5 16:43:10 | 显示全部楼层
不能沉
发表于 2019-10-6 18:43:05 | 显示全部楼层
看起来就是检查随机是否失败,如果失败就打印uvm_error带上一些关键信息。你这些都是定义,有没有使用实例?
 楼主| 发表于 2019-10-8 09:06:48 | 显示全部楼层


gaurson 发表于 2019-10-6 18:43
看起来就是检查随机是否失败,如果失败就打印uvm_error带上一些关键信息。你这些都是定义,有没有使用实例 ...


我的意思是现如何将第一个宏定义给去掉,不用他的那种方法来描述,就用简单的sv来描述过程,应该如何修改呢?
 楼主| 发表于 2019-10-8 09:11:09 | 显示全部楼层
其实是我自己没有完全弄懂别人的代码是什么意思,我现在就想把这个宏给去掉,用自己的语言来描述。
发表于 2019-10-8 17:38:14 | 显示全部楼层
确实是你没有弄懂,这就是4个宏的嵌套,你一级一级的去解析出来,就是一段SV程序了。第一个宏有两个入参,一个是变量,一个是约束。
发表于 2019-10-8 18:16:19 | 显示全部楼层
宏的可读性确实不高。
 楼主| 发表于 2019-10-8 19:02:16 | 显示全部楼层


年轻的韭菜 发表于 2019-10-8 18:16
宏的可读性确实不高。



 楼主| 发表于 2019-10-8 19:05:06 | 显示全部楼层


Timberlake666 发表于 2019-10-8 09:11
其实是我自己没有完全弄懂别人的代码是什么意思,我现在就想把这个宏给去掉,用自己的语言来描述。 ...


一半一半,我也看出来是三个宏嵌套,就是一层一层解析出来有问题,不知道最终的宏在干嘛,这种写法也是第一次遇到,百度也查不到
 楼主| 发表于 2019-10-8 19:06:28 | 显示全部楼层


gaurson 发表于 2019-10-8 17:38
确实是你没有弄懂,这就是4个宏的嵌套,你一级一级的去解析出来,就是一段SV程序了。第一个宏有两个入参, ...


一半一半,我也看出来是三个宏嵌套,就是一层一层解析出来有问题,不知道最终的宏在干嘛,这种写法也是第一次遇到,百度也查不到
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-14 18:20 , Processed in 0.022613 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表