vivoda仿真时钟出现异常现象

2019-07-15 23:05发布

最近在仿真一个工程,出现一个奇怪的现象,先描述一下我的问题

//我的TB 中的时钟块 : 四个时钟,有两个有门控
assign  iclk = (iclk_en) ? iclk_gen : `CLK_DISEN ;
assign  oclk = (oclk_en) ? oclk_gen : `CLK_DISEN ;
always #(`I_PERIOD/2)  iclk_gen = ~iclk_gen ;
always #(`O_PERIOD/2)  oclk_gen = ~oclk_gen ;  
always #(`DDR_CLK_PERIOD/2)  ddr_clk  = ~ddr_clk ;
always #(`DDR_REF_PERIOD/2) ddr_ref_clk = ~ddr_ref_clk ;

//下面我的initial 块
initial  begin
       task1;
       task2 ;
        task3 ;
        ............
        end

// task 区
//----------------------
task task1 ; begin
                oclk_en         = `DISABLE ;
                dvalid_in         = `DISABLE ;
                ...............
               //reset delay
              .............
                oclk_en         = `ENABLE ;
                dvalid_in         = `ENABLE ;

        end


//----------------------
task task2 ; begin
                oclk_en         = `ENABLE ;
                dvalid_in         = `ENABLE ;
                ...............
        end


//----------------------
task task3 ; begin
                oclk_en         = `ENABLE ;
                dvalid_in         = `ENABLE ;
                ...............
        end


结果在执行到task3 的时候出现了波形“打盹”的现象。红 {MOD}箭头就是task3的起始时间点
2.png

既然task3出现这种现象,我就去找task2.结果发现task2又是完好的。红 {MOD}箭头就是task2的起始时间点
1.png


本来就应该是都不会出现这种“打盹”现象吧。
那是哪里出了问题导致这个奇怪的现象呢?
提示:是gen出现了问题,门控在gen发生器后面。再说了这是个TB门控也没有关系吧







友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。