#0延时与for循环+fork join_none

参考资料

(1) https://blog.csdn.net/moon9999/article/details/104207565

1.for循环+fork...join_none

注1: for循环+fork...join_none基本知识点详见sv绿皮书,该文简单介绍不同仿真工具对于该知识点的解读以及怎么处理满足使用需求;

(1) vcs对于for循环+fork...join_none的解读;

task automatic show(int i);
    #10;
    $display("i=%0d",i);
endtask

initial begin
    for(int i=0; i<3; i++) begin
        automatic int j=i;
        fork
            show(.i(j));
        join_none
    end
    #30;
    $finish;
end

vcs的打印结果为:

i=0
i=1
i=2

(2) cadence对于for循环+fork...join_none的解读;

cadence的打印结果为:

i=2
i=1
i=0

2.怎么处理for循环+fork...join_none进程,使得仿真结果满足需求,比如要求打印结果都是i=0,i=1,i=2的顺序?

(1) 采用#0延时微调程序;

task automatic show(int i);
    #10;
    $display("i=%0d",i);
endtask

initial begin
    for(int i=0; i<3; i++) begin
        automatic int j=i;
        fork
            show(.i(j));
        join_none
        #0;
    end
    #30;
    $finish;
end

 

posted on 2023-01-05 16:19  知北游。。  阅读(315)  评论(0编辑  收藏  举报

导航