gpt4 book ai didi

system-verilog - 在systemverilog中,当RHS信号的变化快于延迟时,延迟失败

转载 作者:行者123 更新时间:2023-12-04 04:26:25 26 4
gpt4 key购买 nike

systemverilog中的以下代码失败:

module test_dly;
reg clk = 0;
wire w_clk_d;

always #1ns clk <= ~clk;
assign #1400ps w_clk_d = clk;
endmodule

我预计w_clk_d将是clk的延迟版本,但事实并非如此。
如果新事件在延迟到期之前到达,似乎#无法正常工作。
我写了代码来解决这个问题,但是有没有办法使#能够按预期工作呢?
谢谢,

最佳答案

assign #1400ps w_clk_d = clk;充当延迟和过滤器。当clk变化时,等待1400ps,然后将当前值(不是原始值)应用于w_clk_d。如果输入变化快于延迟,则威吓值将丢失。对于物理电路中的延迟单元,也可以观察到类似的行为。

可以通过链接较小的延迟来减少过滤;物理延迟单元使用相同的策略。

wire   #700ps clk_d = clk;
assign #700ps w_clk_d = clk_d;

传输延迟可以实现仅不进行滤波的延迟,该延迟在触发时对 clk的值进行采样,然后将采样值应用于 w_clk_d 1400ps
logic w_clk_d;
always @* w_clk_d <= #1400ps clk;

为了将分配保留在调度程序的 Activity 区域中,则需要额外的代码
logic w_clk_d;
always @(clk) fork
begin
automatic logic sample_clk; // visible only locally with in the fork thread
sample_clk = clk; // local copy of clk
#1400ps;
w_clk_d = sample_clk;
end
join_none // non-blocking, allows detection of next @(clk)

关于system-verilog - 在systemverilog中,当RHS信号的变化快于延迟时,延迟失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38623661/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com