0

testbench中,forever产生时钟出错

在写testbench中,我用forever产生50M时钟,第一次是没问题的,modelsim什么的都可以仿真,后边再试就编译出错,用always 来产生就没有问题。代码如下:

module testbench;

    //inputs
    reg clk_50m;
    wire clk_42m;

    pll_42m U1
    (
        .clk_50m(clk_50m),
        .clk_42m(clk_42m)
    );

    initial begin
        forever #10 clk_50m=~clk_50m;
    end
     //always #10 clk_50m=~clk_50m;
endmodule

用initial begin + forever 来产生时钟Synthesize 时就会报错,如下:
ERROR:HDLCompiler:1440 - “C:\Xilinx\project\tiger_fpga\tiger_fpga\tiger_fpga\testbench.v” Line 37: Non-constant loop condition not supported for forever

用下边一行always语句实现就没有问题。

刚接触FPGA,到处查了资料都说 这两个用于产生时钟信号是一样的,请大神帮忙解释一下,谢谢了。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除
想向站长提问,微信扫码立刻加入! shawn的FPGA圈.png
0

问题解决了,核心问题是: forever 语句是不可综合的,我第一次没遇到问题是因为我没有综合,直接点的modelsim进去的,后边改动了,就去点综合,所以一直过不了,但是实际上也不会影响仿真,新手基础还比较差,再接再厉!

编辑 标为违禁 删除 链接 更多选项...

回答 2020-01-09 18:25:00 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它

登录/注册后进行回答