admin 管理员组文章数量: 887021
SV
1.类的封装
1)如果没有指明访问类型,那么成员的默认类型是public,子类和外部据可以访问成员。
2)如果指明是protected,那么只有该类或者子类可以访问成员,而外部无法访问。
3)如果指明是local,那么只有该类可以访问成,子类和外部均无法访问。
例题
代码中ck.get_clock和ck.nclock数值分别是多少?
class clock;local bit is_summer = 0;local int nclock = 6;function int get_clock();if(is_summer == 0)return this.nclock;elsereturn this.nclock + 1;endfunctionfunction bit set_summer (bit s);this.is_summer = s;endfunction
endclassclock ck;
initial beginck = new();$display("now time is %0d",ck.get_clock());ck.set_summer(1);$display("now time is %0d",ck.nclock);
end
解析:
计算ck.get_clock时,is_summer的值为0,所以第一个function中执行return this.nclock,即ck.get_clock = nclock = 6.
计算ck.nclock时,is_summer被赋值为1,所以执行return this.nclock + 1,结果为7,但因为nclock定义时是local类型,子类无权访问nclock的数值,所以会报错。
结论:ck.get_clock = 6,ck.nclock无法计算。
2.类和结构体(struct)的异同
3.类和模块(module)的异同
1)从数据和方法定义而言,二者均可作为封闭的容器来定义和存储。
2)从例化来看,module(默认是静态)在仿真还没运行就被确定了,而class(默认是动态)是在仿真开始之后的任意时间被创建的。
3)从封装性来看:class具有封装性可以保护变量,而module没有封装性,无法保护变量。
4)从继承性来看:class具有集成性,class之间可以发生集成关系,而module没有继承性。
4.其他
本文标签: SV
版权声明:本文标题:SV 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687384562h96522.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论