微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 关于参数化的参数,请教一个sv的语法问题

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

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

class #(type T=int) myclass;
static function T myfun();
endfunction
endclass
myclass #(bit[7:0]) ::myfun()

这是一个不错的办法,非常感谢,对了这个function为啥要定义成static的呢,有什么特殊的意义吗?

和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型同理

我说这回复咋那么眼熟。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top