SystemVerilog培训课程
『壹』 systemverilog 中的virtual都是什么意思
有时候会定义virtual interface, virtual task, virtual function, virtual class...都是什么意思?
smy05 (2011-9-27 13:04:04)
由virtual所声明的内容可理解为一个模板,后续的例化和引用可在这个模板上进行增加或修改,这样就呈现出特定的内容或特性。不同的引用或修改实现不同的对象、接口和方法。
这样就很方便的实现了面向对象的特性,即多态实现随继承对象的不同而不同。
TommyGG (2011-9-28 09:20:10)
说明:
1、virtual interface:定义一个interface,且实例化多个后,如果没有定义virtual,则在任何一个实例中修改了某个信号值,在其他实例中都会受到影响。如果定义了virtual,则每个实例独立。
2、virtual function/task:用于OOP思想的继承使用。当定义了virtual时,在子类中调用某function/task,会先查找在子类中是否定义该function/task,如果没有定义该function/task,则在父类中查找。未定义virtual时,只在子类中查找,没有定义就是编译错误。
3、virtual class:从未用过,等待牛人解答
用法:
1、virtual interface:如果该interface只有一个实例,可用可不用virtual,有多个实例,需要virtual。更好的办法是,都加上virtual。
2、virtual function/task:如果该class不会被继承,则所有的function/task都不需要加virtual。如果该class会被继承,则用户定义的function/task(除了new()/randomized()/per_randomize()/pose_randomize()以外),都应该加上virtual。更简单的做法是,在用户定义的function/task都加上virtual是不会错的。
3、virtual class:期待牛人解答
rice973 (2011-9-28 17:51:22)
多谢解答!
taoleite (2011-9-29 15:32:14)
解答的很清楚。。。多谢
ljxpjpjljx (2011-9-30 09:34:57)
virtual 还是很有用的,是面向对象思想的一个重要特性!
loglong (2011-10-12 13:46:17)
QUOTE:
说明:
1、virtual interface:定义一个interface,且实例化多个后,如果没有定义virtual,则在任何一个实 ...
TommyGG 发表于 2011-9-28 09:20
1、virtual interface:
interface 和 mole是一样的, 都是静态的变量, 也就是在程序开始时, 内存中就有了其实例. 但virtual interface只是申明一个handle, 就好像一个指针一样, 可以再程序进行中进行construct, 所以class里必须是virtual interface.
2、virtual function/task:
你的意思是不是用classname::taskname()调用时, 有virtual, 但是子类中没重载的话, 不会报错?
一般申明了virtual, 就可以重载, 这也是new为什么不能virtual的原因, 否则被子类重载了, 那用父类的handle new的时候, new出来是啥啊???
3、virtual class:
虚类只用来定义类的格式, 和成员的名字, 参数, 不能被实例话, 只能被重载, 用于在项目中定义一些标准的类, 例如driver类, 这样大家extend出来的driver的基本的格式都是一样的, 易读易理解. 在virtual class里的方法最好使用 pure virtual 修饰, 叫做纯虚方法, 也是用来定义方法的名字和参数列表的, 方便大家统一名字.
xiao19821022 (2011-10-13 16:12:23)
解释得很清楚
wangxuede220 (2012-4-07 12:19:35)
非常的谢谢!
飞扬紫百合 (2012-4-13 07:05:49)
3楼说的还算明白,多实践就知道了
gfshen (2012-4-21 00:33:37)
回复 1# rice973
明白了啊。。。
deepblue0036 (2012-6-29 15:02:51)
明白了。。
tjuyfb (2012-7-21 23:25:37)
学习一下
jumphigh1987 (2012-8-12 10:40:58)
解释的非常清楚,受教了
uvmer (2013-6-18 15:56:05)
[i=s] 本帖最后由 uvmer 于 2013-6-18 16:15 编辑
请采纳
如果你认可我的回答,敬请及时采纳,
~如果你认可我的回答,请及时点击【采纳为满意回答】按钮
~~手机提问的朋友在客户端右上角评价点【满意】即可。
~你的采纳是我前进的动力
~~O(∩_∩)O,记得好评和采纳,互相帮助
『贰』 systemverilog 怎么获得bits类型的长度
DPI对参数传递控制非常严格,C中的long long对应SV中的longint。必须如此。否则出错后果自负。其他对应关系如下,仅供你参考,没事多看点资料吧。
SV<------->C
byte<------->char
shortint<------->short int
int<------->int(32 bit)
longint<------->long long
real<------->double
shortreal<------->float
chandle<------->void*
『叁』 systemverilog assertion怎么学
做好的方法是看看验证同事写过的,再对照着断言红宝书书看看,自己多写小demo,这样学起来会很快
『肆』 systemverilog 和verilog有什么区别
systemverilog 其实就是 verilog 一个更新的版本, 发布于21世纪初。 其中增加了一些新的语内句,特点。
systemverilog 可以直接写容RTL代码, 如果代码里都是组合逻辑的话(always_comb), 就是可综合的
『伍』 有入门System Verilog书推荐
特权同学(吴厚航)写的东西值得一读,很少废话,适合入门。它的配版套光盘里有每个实验的权代码,楼主可以好好看看亲手调调。但是fpga入门除了了解fpga的架构外,更重要的是掌握HDL语言,目前比较流行的是VHDL和verilog,当然国外已经开始流行systemverilog了,从就业等多方面因素考虑,建议楼主学习verilog,北航夏宇闻的那本《verilog》尚且可以一看。最后,弄块板子练练手才是入门的关键呵。
『陆』 systemverilog验证方法学 怎么样
1、就来这本书来说,内容是很自详细,但文本逻辑结构不太好,用这本书入门会遇到些困难
2、就基于system verilog的验证方法来说,这是一种流行的验证方法,比传统的方法可复用的部分更多,验证也更严谨,覆盖率更大。目前来说,基于SV的验证方法通常都会与UVM一起用
『柒』 systemverilog哪本书比较好
我也是最近才看的,我感觉钟文枫的SystemVerilog与功能验证适合刚入门的朋友看,同时也可以结合小绿书,我主要是看这两本书。
『捌』 systemverilog设计哪方面的,学习要具备哪方面的基础知识啊
你要学SV的话,要确保你首先VerilogHDL语言要有一定功底,如果你VerilogHDL很熟,那其实SV并不难,如果说VerilogHDL等同于C语言的话,那么SV就等同于C++。
再者就是要看你学习SV时选择的方向,是测试方向还是综合方向,我用SV是写可综合程序的,在可综合的方面,SV与VerilogHDL的不同之处在于:1.对部分原有的语法进行了扩充;2.增加了新的语法结构。
SV中常用的有包(package),变量细分为对象类型和数据类型,automatic关键字,enum,结构体,三种alwyas结构,unique和priority关键字,还有interface接口等,其实还有类(class)的应用,但这是不能综合的。
如果你对VerilogHDL很熟的话,我推荐给你两本书:
可综合方向的:
《SystemVerilog硬件设计及建模》
作者:[英]Stuart Sutherland, [英]Simon Davidmann, [英]Peter Flake 著;
于敦山, 韩临, 何进, 李莹, 路卫军 译
仿真测试方向的:
《SystemVerilog验证——测试平台编写指南》
作者:(美)克里斯·斯皮尔,
张春 译
这两本书翻译的都是不错的,但我建议看英文原版,这样更好的理解原作者在字里行间所表述的意思。看书是一方面,但只看不做练习,白扯,《SystemVerilog硬件设计及建模》书中列出的网站可下载SV的源码,下载下来,看懂练会,然后用SV重写很容易找到的VerilogHDL的实例,做仿真,时间长了你就会了。
『玖』 如何快速学习SystemVerilog语言
如果搞FPGA开发verilog必然要精通。
如果没有数字电路基础的话建议首先学一些基本的数字回电路知识。
然后看书,《答Verilog HDL数字设计与综合》,一定注意只要看能够综合的代码,那些不能综合的东西可以一带而过。
实践!实践!实践!光看书绝对学不会。如果你有开发板当然好,如果没有至少也要写程序仿真。当时我学的时候买了个几千块的开发板。这个东西不练绝对学不会。
总之,先看书,把基本的数电搞懂。然后最好学一点练一点。一个很有用的方法,就是对着书或者自己想一些代码,然后看看编出的电路是什么样子的。
FPGA和C语言等软件语言相比,非常难以调试。一定要保证学的扎实些。
verilog是硬件描述语言,归根结底你设计的是电路,而不是软件,不能那C语言等软件语言硬套。
『拾』 如何快速学习SystemVerilog语言
如果搞FPGA开发verilog必然要精通。
如果没有数字电路基础的话建议首先学一些版基本的数字电路权知识。
然后看书,《Verilog HDL数字设计与综合》,一定注意只要看能够综合的代码,那些不能综合的东西可以一带而过。
实践!实践!实践!光看书绝对学不会。如果你有开发板当然好,如果没有至少也要写程序仿真。当时我学的时候买了个几千块的开发板。这个东西不练绝对学不会。
总之,先看书,把基本的数电搞懂。然后最好学一点练一点。一个很有用的方法,就是对着书或者自己想一些代码,然后看看编出的电路是什么样子的。
FPGA和C语言等软件语言相比,非常难以调试。一定要保证学的扎实些。
verilog是硬件描述语言,归根结底你设计的是电路,而不是软件,不能那C语言等软件语言硬套。