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

如何通过代码设置Testbench仿真运行5000ns后自动停止?

仿真定时自动停止的代码实现方法

在Testbench中可以通过代码直接实现定时停止仿真,无需依赖Vivado界面设置,以下是两种常用硬件描述语言的实现方式:

Verilog 实现

在Testbench模块中添加一个initial块,通过延迟语句指定时长后调用$finish系统任务终止仿真:

// 假设时间单位已通过`timescale定义,例如`timescale 1ns/1ps
module tb_top;
    // 此处添加待测模块例化、激励生成等代码

    initial begin
        #5000;  // 延迟5000ns(若`timescale为1ns/1ps,无需额外标注ns)
        $display("仿真已运行5000ns,自动停止");
        $finish;  // 完全终止仿真进程
    end
endmodule

SystemVerilog 实现

SystemVerilog兼容Verilog的写法,同时支持明确指定时间单位的简洁语法:

module tb_top;
    // 待测模块例化、激励逻辑

    initial begin
        #5000ns;  // 直接指定时间单位,无需依赖`timescale
        $finish(2);  // 参数2表示输出详细的仿真结束信息
    end
endmodule

关键说明

  • $finish:直接终止整个仿真进程,是自动停止需求的首选;若仅需暂停仿真可使用$stop,但通常自动停止场景用$finish更合适。
  • 时间单位:若代码定义了timescale(如timescale 1ns/1ps),#5000即代表5000ns;未定义时可直接写#5000ns明确时长。
  • 代码位置:该initial块必须放在Testbench模块内,不要嵌入到待测设计模块中,避免影响设计的综合实现。

内容的提问来源于stack exchange,提问作者Majidf0

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:30:58