vivoda仿真出现的奇怪现象
时间:10-02
整理:3721RD
点击:
今天用vivoda仿真出现了一个奇怪的现象,史无前例吗? 不知道大家有没有遇到过 我先描述一下我的问题。
我的仿真代码:
// 时钟部分
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 ;
task4 ;
......................
end
//task部分
// task 1 ---------------------------
task task1 ;begin
iclk_en = `DISABLE ;
oclk_en = `DISABLE ;
.................
//time delay
iclk_en = `ENABLE;
oclk_en = `ENABLE ;
.........................
end
endtask
//-------------------------------------
task task2 ;begin
iclk_en = `ENABLE;
oclk_en = `ENABLE ;
.........................
end
endtask
//--------------------------------------
task task3 ; begin
iclk_en = `ENABLE;
oclk_en = `ENABLE ;
.........................
end
endtask
这是一个TB , 上面有四个时钟,3个task。
第一个task对门控的时钟进行了设定。后面的task虽然也赋值,但是一直是开启。
执行到第二个task 四个时钟一点问题都没有
执行到第三个task的时候,问题出现了
[attach]644275[/attach]
红色箭头部分就是task3的起点。
既然task3有这个问题,我当然会去查task2的情况。结果task2居然没问题

提示,是gen有问题,不是iclk有问题
我的仿真代码:
// 时钟部分
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 ;
task4 ;
......................
end
//task部分
// task 1 ---------------------------
task task1 ;begin
iclk_en = `DISABLE ;
oclk_en = `DISABLE ;
.................
//time delay
iclk_en = `ENABLE;
oclk_en = `ENABLE ;
.........................
end
endtask
//-------------------------------------
task task2 ;begin
iclk_en = `ENABLE;
oclk_en = `ENABLE ;
.........................
end
endtask
//--------------------------------------
task task3 ; begin
iclk_en = `ENABLE;
oclk_en = `ENABLE ;
.........................
end
endtask
这是一个TB , 上面有四个时钟,3个task。
第一个task对门控的时钟进行了设定。后面的task虽然也赋值,但是一直是开启。
执行到第二个task 四个时钟一点问题都没有
执行到第三个task的时候,问题出现了
[attach]644275[/attach]
红色箭头部分就是task3的起点。
既然task3有这个问题,我当然会去查task2的情况。结果task2居然没问题

提示,是gen有问题,不是iclk有问题
不是很懂,等别人回复你,我来看
有两个疑问
1、task直接在init里面调用,这个东西应该是占用时间的吧,这样直接调用可以么?
2、没发现哪里有问题!
已经解决,是其他的问题。不是这个里的问题。谢谢大家
