stariain的个人空间 https://blog.eetop.cn/1260220 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

《System Verilog验证测试平台编写指南》读书笔记:第三章 过程语句和子程序

已有 1511 次阅读| 2017-8-18 19:26 |个人分类:专业学习|系统分类:硬件设计

3.1过程语句

为过程语句添加标示符。sv循环中添加了continuebreak语句。例3.2有必要记一下。

3.2任务、函数以及void函数

Verilog中,任务可以消耗时间;函数不能消耗时间,不能带有如#100的时延语句,如@posedge clk)、waitready)的阻塞语句;函数不能调用任务。

sv允许函数调用任务,只能在fork…join_none语句生成的线程中调用。

不消耗时间的任务最好定义为函数。

3.3任务和函数概述

不带参数的子程序在定义或调用时并不需要带空括号。

在子程序中去掉begin…end

3.4子程序参数

对所有子程序参数的声明都带上类型和方向。

sv中采用ref参数类型将参数传递方式由复制改为引用。const修饰符使子程序无法修改输入数组的值。ref另一个好处:在任务中可以修改变量而且修改结果对调用它的函数随时可见。

带缺省值参数的函数。采用名字进行参数传递,使用形式:function.参数(参数值))。

3.5子程序的返回

verilog函数执行完后会返回一个值,该值被赋给与函数同名的变量。

return语句用于函数和任务中。verilog只能返回比特、整数或者向量,sv还可以返回数组。实现方式有:1.定义一个数组类型,然后在函数声明中使用该类型;2.通过引用来进行数组参数的传递;3.将数组包装在一个类中,然后返回对象的句柄。

3.6局部数据存储

sv中模块和program中的子程序缺省情况下仍然使用静态存储,若要使用自动存储,则必须在程序语句中加入automatic关键词。(静态存储的话不同线程之间会窜用这些局部变量)

3.7时间值

`timescaletimeunittimeprecision$timeformat4个参数。$time$realtime的区别。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 2

    评论
  • 1063

    访问数
关闭

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

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

GMT+8, 2024-4-20 12:17 , Processed in 0.026177 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部