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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2985|回复: 5

[求助] 关于参数化的参数,请教一个sv的语法问题

[复制链接]
发表于 2016-1-10 12:41:00 | 显示全部楼层 |阅读模式

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

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

x
写一个task,要传递一个参数进去,我现在有一个需求,因为有些传入参数的类型是不定的,就是想要传递的这个参数是可参数化的,就是比如它可以是int a,或者是bit[17:0] signed等,有什么好办法实现吗?

谢谢!
发表于 2016-1-10 16:33:45 | 显示全部楼层
class #(type T=int) myclass;

static function T myfun();
endfunction

endclass

myclass #(bit[7:0]) ::myfun()
 楼主| 发表于 2016-1-11 16:52:59 | 显示全部楼层
回复 2# A1985


    这是一个不错的办法,非常感谢,对了这个function为啥要定义成static的呢,有什么特殊的意义吗?
 楼主| 发表于 2016-1-11 18:36:14 | 显示全部楼层
和UVM没关系,只是SV支持的一种属性,当然也是从别的OOP语言里借鉴过来的,建议你补一补OOP相关的知识。
模板类或者叫参数化类一般用于代码的重用,比如说要实现两个数相加的类,如果是两个int的数,要写一个类,如果是两个real的数相加,又要写一个类,而实际上他们的代码几乎是相同的,除了类型不同。这时完全可以只写一个类,把类型当做“参数”传进去。
class calc #(type T)

  function T add (T a, T b);
     add = a + b;
  endfunction

endclass

这样要实现的时候生成calc #(int)的对象就可以算int型,real型同理
发表于 2016-1-12 12:22:11 | 显示全部楼层
回复 4# logue

我说这回复咋那么眼熟。。。
发表于 2019-2-1 23:42:55 | 显示全部楼层
回复 4# logue


   get it
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-30 04:01 , Processed in 0.019221 second(s), 9 queries , Gzip On, Redis On.

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