You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SystemVerilog测试台中于时钟沿前后调度驱动信号

SystemVerilog测试台中DUT输入信号的时序驱动规范问题

我一直想了解如何在SystemVerilog测试台中正确地对被测器件(DUT)的输入信号进行时序驱动,例如以下是一个带有clk和rst信号的简单时序DUT的测试台片段:

always #1 clk = ~clk;
initial begin 
    clk = 0;
    rst = 1;
    @(posedge clk);
    @(posedge clk);
    rst = 0;
    #50 $finish;
end

我必须使用两次@(posedge clk)才能确保rst信号被DUT读取,否则仅用一次@(posedge clk)会导致器件复位失败,输出在整个仿真过程中保持为X;另一种临时解决方案是使用@(negedge clk)来时序化rst的拉低操作。

尽管这些临时方案可行,但感觉不够规范。我已研读IEEE std 1800-2017第4章中关于仿真时隙不同区域的事件调度内容,并尝试了阻塞赋值(blocking assignments)和非阻塞赋值(non blocking assignments)的多种变体,但均未解决问题。

因此我想请教:是否可以以及如何调度信号,使其恰好在时钟沿之后或之前被驱动。


内容的提问来源于stack exchange,提问作者Benjamín Panatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 00:02:38