当前位置: 首页 > ai >正文

system verilog 语句 耗时规则

SystemVerilog 中,确实有一类语句是**不消耗仿真时间(zero simulation time)**的,我们一般叫它们:

零延迟语句(Zero-Time Statements)


🔹1. 什么是“不费时间”的语句?

这些语句在仿真时是立即完成、在当前仿真时间点内执行完的,仿真时间不会前进一丝一毫。即使你写了100行,它们也可能在同一个时间点内完成执行

立即完成, 即开始时间等于结束时间, 即 你 将 打印时间放在 零延迟语句前后 你打印 时刻是相同的.

但是这里和 执行顺序 没关系.


我们专注在你要的点上:SystemVerilog 中哪些语句 “耗仿真时间”,哪些“不耗仿真时间”


✅ 一、耗仿真时间的语句(仿真时间会前进)

这些语句的执行会导致仿真时间跳变或暂停,通常意味着 仿真时间不再停留在当前时间点

语句类型举例
延迟语句#10;, #(delay_var);
事件等待@(posedge clk);, @signal;, @(a or b or c);
条件等待wait(a == 1);, wait_ready();
时间控制循环(包含耗时语句)forever @(posedge clk);, repeat(10) #1;
fork 中的耗时线程fork #5; join, fork wait(cond); join_any
@* 等隐式事件控制用于 always_comb, always_ff

❌ 二、不耗仿真时间的语句(不会引起时间变化)

这些语句在仿真的当前时间点完成,不会导致仿真时间推进

语句类型举例
阻塞赋值a = b;
非阻塞赋值a <= b; (赋值延后,但不耗时)
begin…end 顺序块begin a = 1; b = 2; end
if-else / case 等条件判断if(a) b = 1; else b = 0;
函数调用(无等待语句)a = my_func();
disable / break / continue控制流语句本身不耗时
assert (表达式类型)assert(a == b);
initial / always 声明本身只是启动行为,不耗时
类方法调用(不含耗时)obj.do_stuff();
staticautomatic 变量声明static int x;
new() 构造函数调用obj = new();

🚩 三、模糊点说明(小心区分)

示例是否耗时说明
a <= b;非阻塞赋值本身不耗时,值更新在 NBA 阶段
@(posedge clk)会等待下一个事件触发,耗时间
wait(a == 1)如果条件不满足,会停在这等
my_task();取决于task体如果 task 内有 #, @ 等,就是耗时
fork a=1; b=2; join子线程执行无耗时,整个结构也不耗时
fork #1; #2; join子线程耗时,整个结构耗时

http://www.xdnf.cn/news/1374.html

相关文章:

  • 拥抱基因体检,迎接精准健康管理新时代
  • 3.3 技术框架:LangChain、ReAct、Memory与Tool Integration
  • ROS 快速入门教程02
  • (19)VTK C++开发示例 --- 分隔文本读取器
  • Kafka 详解
  • 服务器上安装jdk
  • Android Cordova 开发 - Cordova 快速入门(Cordova 环境配置、Cordova 第一个应用程序)
  • SQL Server 2022 常见问题解答:从安装到优化的全场景指南
  • Linux部署Web程序
  • openharmony5.0.0中C++公共基础类测试-线程相关(一)
  • 【项目篇】仿照RabbitMQ模拟实现消息队列
  • .NET、java、python语言连接SAP系统的方法
  • 音视频小白系统入门课-4
  • 个人mysql学习笔记
  • python中 zip的用法
  • 汽车免拆诊断案例 | 2016款奔驰C200L车组合仪表上多个故障灯偶尔点亮
  • 管理100个小程序-很难吗
  • JavaScript性能优化实战(3):内存管理与泄漏防范
  • Rust 学习笔记:Rust 简介
  • 四川气象数据智能体示范应用入围中国信通院“开源大模型+”案例
  • 数据结构手撕--【栈和队列】
  • fpga系列 HDL:跨时钟域同步 脉冲展宽同步 Pulse Synchronization
  • Redis Pipeline 详解
  • Elasticsearch内核探秘:从Shard分配到网络通信的深度实践指南
  • Kafka简介
  • linux内核进程管理(1)——创建,退出
  • Go全栈_Golang、Gin实战、Gorm实战、Go_Socket、Redis、Elasticsearch、微服务、K8s、RabbitMQ全家桶
  • 硬件基本概念
  • 汽车免拆诊断案例 | 2013款大众辉腾车发动机抖动
  • 从物理到预测:数据驱动的深度学习的结构化探索及AI推理