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

上一篇 / 下一篇  2017-08-18 19:26:24 / 个人分类:专业学习

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的区别。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2017-09-19  
     12
3456789
10111213141516
17181920212223
24252627282930

数据统计

  • 访问量: 930
  • 日志数: 8
  • 建立时间: 2017-07-04
  • 更新时间: 2017-08-18

RSS订阅

Open Toolbar