module fixedsize_array(
);
bit b[1:0];
bit b_cs[3];//定宽数组
int array[];//动态数组
int array[$];//队列
int array[*];//关联数组
initial begin
b[0]='b0;
b[1]='b1;
b='{'b1,'b0};
array = new[2]
array[0] = 12;
array = new[5](array);
array.delete();
array.push_back (12) ;
array.push_back (34) ;
array.push_back (56) ;
array.push_front(78) ;//截止目前位置应该是{78123456}。
array.pop_back () ;//{781234}
array.pop_front () ;//{1234}
array.insert(1,90) ;//在指定的索引下插入{129034}
array.delete(1) ;//删除指定索引1
array[10] = 12;
array[100] = 34;
array[1000] = 56;//指定任意索引创建
//还有很多共用函数如:array.size(),array.sum,array.min,array.max,array.unique
end
endmodule
数组语法如上
module fun_task(
);
int a,b,result;
initial begin
a=1;b=2;result=a+b;
a=3;b=4;result=a+b;
a=5;b=6;result=a+b;
end
endmodule
module fun_task(
);
int a,b,result;
function void calculate();//calculate(int a,b)
result=a+b;
endfunction
initial begin
a=1;b=2;calculate;//calulate(1,2);可以这样替换
a=3;b=4;calculate;//calulate(3,4);
a=5;b=6;calculate;//calulate(5,6);
end
endmodule
module fun_task(
);
function void calculate();//
int a
a=a+1;
endfunction
initial begin
calculate();// a=1,若在void前面加上automatic,效果会如同软件语言一样,每次结束都重新定义,下面三行a均为1
calculate();// a=2
calculate();// a=3
end
endmodule
函数与任务代码及注释如上图
module fork(
);
initial begin
fork
#10ns $display("Doing A");
begin
#30ns $display("Doing B0");//B0在30ns启动
#10ns $display("Doing B1");//B1在40ns启动
end
join
$display("Doing C");
end
//C在40ns启动
endmodule
module fork_any(
);
initial begin
fork
#10ns $display("Doing A");
begin
#30ns $display("Doing B0");//B0在30ns启动
#10ns $display("Doing B1");//B1在40ns启动
end
join_any
$display("Doing C");
end
//C在10ns启动
endmodule
module fork_none(
);
initial begin
fork
#10ns $display("Doing A");
begin
#30ns $display("Doing B0");//B0在30ns启动
#10ns $display("Doing B1");//B1在40ns启动
end
join_none
$display("Doing C");
end
//C在0ns启动
endmodule
多线程代码实现如上图