system verilog语法

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 

多线程代码实现如上图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值