如何延迟时钟的开始?

时间:2017-11-08 00:31:00

标签: system-verilog clock

使用系统verilog及其新功能和verilog, 我想在一个测试平台中将时钟的开始延迟46.666ns。 为此我宣布了另一个信号,在46.666之后将其切换为1并用它控制我的时钟。但它不起作用,我不明白为什么。任何帮助将非常感激。 我正在使用的代码:

// generate CLKXI and inject to vt
logic clk = 1;
logic clkstart = 0;

initial begin
    #46.666ns clkstart = 1;
end

always 
begin
    if (clkstart && ~clk) #21.25ns clk = ~clk;
    else if (clkstart && clk)  #20.416ns clk = ~clk;
end

assign test_wrapper.dut_top.CLKXI = clk;

1 个答案:

答案 0 :(得分:1)

问题是当clkstart为0时,您的always块进入零延迟无限循环,时间无法前进。我想你想要的是

initial begin
    #46.666ns 
    forever begin
         #21.25ns clk = 0;
         #20.416ns clk = 1;
    end