SV常见问题总结-part1(基础)

一.fork...join、fork...join_none和fork...join_any的区别

fork...join:块中的代码并发执行,块中所有语句执行完毕后才能执行后续代码 。

fork...join_none:点火就可以进行后续的代码了,并且fork...join_none中的代码会继续执行。

fork...join_any:档期中的任意一个语句完成后才可以执行后续代码,同样,fork...join_any中的代码仍会继续执行。

二.内建数据类型之逻辑类型

四值逻辑:integer、logic、reg、net-type(如 wire 和 tri )

二值逻辑:bit、byte、shortint、int、longint

有符号类型:byte8bit、shortint16bit、 int32bit、 longint64bit、 integer32bit

无符号类型: bit、logic、reg、net-type(如 wire 和 tri )

三.动态数组、关联数组、队列

1.定宽数组:数组宽度在编译时就被确定,静态数组

2.动态数组:在仿真时分配空间/调整宽度,可以在仿真中使用最小的存储量。动态数组的宽度不在编译时给出,而是在程序运行时再指定,因此必须使用new[ ]操作符来分配空间(笔试考过),同时在方括号中传递数组宽度。

3.关联数组:当数组元素索引不连续时,如果用定宽数组存储会消耗过大的内存空间,内存利用率低。SV中引入了关联数组,保存稀疏矩阵的元素。(需要超大容量数组时使用)

4.队列:结合了链表和数组的优点。队列和链表相似,可以在队列中的任何地方增加或删除元素,这类操作在性能上的损失比动态数组小得多,因为动态数组需要分配新的数组并复制所有元素的值。队列与数组相似,可以通过索引实现对任一元素的访问,而不需要像链表那样去遍历目标元素之前的所有元素。

四、function和task的区别

function:可以调用function,不能调用task、内部无耗时、可返回可不返回

task:既可以调用function又可以调用task、内部可以置入耗时语句、无法通过return返回,只能通过output、inout或者ref的参数来返回。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值