文章目录
1 SystemVerilog 从C/C++ 引入的操作符和语句?
- 可以在for循环定义循环变量。
- 自动递增符号"++“,自动递减符号”–"。
- continue 和 break,用于跳过本轮循环 和 终止循环。
2 SystemVerilog 对函数、任务形式的新增内容?
总结起来就是 SystemVerilog 分格更像C了,引入了堆栈,所以有类似C的形参。
- SystemVerilog 函数允许调用任务,但只能在 fork…join_none 语句生成的线程中调用。
- SystemVerilog 可以使用void进行结果转换,以忽略函数的返回值。 void '($fscanf(file, “%d”, i));
- SystemVerilog 子程序的 begin…end 变为可选。task/endtask function/endfunction 足以作为边界。
- SystemVerilog 增加return语句。
3 SystemVerilog 在子程序参数上的新增内容?
- 在参数声明上,Verilog 要求对一些参数进行两次声明,一次方向声明,一次类型声明
output [31:0] x; reg [31:0] x;
。SystemVerilog 引入类似C的分格,但注意必须使用通用输入类型logicoutput logic [31:0] x
。 - SystemVerilog 缺省的参数类型和方向是"logic 输入"。
- SystemVerilog 参数的传递方式可以指定为引用ref而不是复制
const ref bit [31:0] a[]
,节省堆栈空间。注意ref只能被用于带自动automatic存储的子程序中。 - SystemVerilog 可以位参数指定一个缺省值
input logic low = 0
。 - SystemVerilog 任务或函数可以采用类似port的语法指定
.a(5)
。
4 SystemVerilog 时间单位和精度新增内容?
- timeunit和timeprecision声明语句可以为每个模块指明时间值
timeunit 1ns; timeprecision 1ps;
。