SV语法学习Day2

数据类型

  1. 按照四值逻辑和二值逻辑类型来划分
  • 四值逻辑类型:integer、logic、reg、net-type(例如wire、tri)
  • 二值逻辑类型: byte、shortint、int、longint、bit
  1. 按照有符号和无符号的类型来划分
  • 有符号类型:byte、shortint、int、longint、integer
  • 无符号类型: bit、logic、reg、net-type(例如wire、tri)
    注意:四值逻辑在转换为二值逻辑时,其中x,z值会对应为0

function函数

SV函数定义同C语言类似:

  • 可以在参数列表中指定输入参数(input)、输出参数(output)、输入输出参数(inout)或者引用参数(ref)
  • 可以返回数值或者不返回数值
  • 默认的数据类型是为logic,例如input[7:0] addr
  • 数组可以作为形式参数传递
  • function可以返回或者不返回结果,如果返回即需要关键词return,如果不返回则应该在声明function时采用void function()
  • 只有数据变量可以在形式参数列表中被声明为ref类型,而线网类型则不能声明为ref类型
  • 在使用ref时,有时候为了保护数据对象只被读取不被写入,可以通过const的方式来限定ref声明的参数
  • 在声明参数时,可以给入默认数值,例如input[7:0] addr =0 ,同时在调用时如果缺省,那么默认值会被传递给function

task任务

任务相比于函数要更加灵活,且以下不同点:

  • task无法通过return返回结果,因此只能通过output、inout或者ref的参数来返回
  • task内可以置入耗时语句,而function则不能。常见的耗时语句包括@event、wait event 、 #delay

你可能感兴趣的:(SV语法学习Day2)