数据类型
- 按照四值逻辑和二值逻辑类型来划分
- 四值逻辑类型:integer、logic、reg、net-type(例如wire、tri)
- 二值逻辑类型: byte、shortint、int、longint、bit
- 按照有符号和无符号的类型来划分
- 有符号类型: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等