Systemverilog语言(5)-------Procedural statements and Routiness

1.outline

Systemverilog语言(5)-------Procedural statements and Routiness
SV里面对task和function进行加强。

2. task and function

Systemverilog语言(5)-------Procedural statements and Routiness
支持自增自减,但是很可能会产生race;
Systemverilog语言(5)-------Procedural statements and Routiness
Systemverilog语言(5)-------Procedural statements and Routiness
支持逻辑判断符,当比较元素含x或z时,最终返回的结果是x或z;
x或z只能在表达式的右侧,在左侧时则无法判断;

3.inside

Systemverilog语言(5)-------Procedural statements and Routiness
用于定义某个值得范围;

4.强制转换(tpye,size,sign)

Systemverilog语言(5)-------Procedural statements and Routiness
size `(exp)
Systemverilog语言(5)-------Procedural statements and Routiness

5. loop

Systemverilog语言(5)-------Procedural statements and Routiness
verilog里面for语句只支持在loop外面声明;
SV里面在for内部声明变量,循环变量是自动生成的;
在for循环外看不见循环变量;
Systemverilog语言(5)-------Procedural statements and Routiness
verilog只支持while循环;
SV也支持do…while ,至少可以完成一次;
Systemverilog语言(5)-------Procedural statements and Routiness
SV里面通过unique,priority可以增加case的优先级;
Systemverilog语言(5)-------Procedural statements and Routiness
function: 不消耗时间,因此不能有时序控制语句,如#100,@,wait;
task一般而言会消耗时间,因此function不能调用task,但task可以调function。
SV支持无返回值function;
Systemverilog语言(5)-------Procedural statements and Routiness
Systemverilog语言(5)-------Procedural statements and Routiness
SV里面:task,function可以不用begin…end包含表达块;
增加了return语句;void;function支持output,inout等形式参数。
Systemverilog语言(5)-------Procedural statements and Routiness
return:满足条件退出task或function。
Systemverilog语言(5)-------Procedural statements and Routiness
typedef:自定义类型
Systemverilog语言(5)-------Procedural statements and Routiness
类似于C,可以按位置调用;也可以按引用符使用 ‘.name(name2)’
Systemverilog语言(5)-------Procedural statements and Routiness
Systemverilog语言(5)-------Procedural statements and Routiness
默认是logic,input(见最后一个PPT);
Systemverilog语言(5)-------Procedural statements and Routiness
reference :复制传递值时可使用,只用于automatic的task或function,ref传递的是内存地址,谨慎用。
Systemverilog语言(5)-------Procedural statements and Routiness
const ref :
Systemverilog语言(5)-------Procedural statements and Routiness
input :开始的时候取一次值;
output :
Inout:
ref: