ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

initial 和 always什么时间开始执行?

2022-08-25 04:34:01  阅读:153  来源: 互联网

标签:触发 clk always initial 并且 执行


“initial”程序块在时间 0 开始执行,并在其所有可执行语句完成时结束。它只执行一次。而“always”块在模拟过程中不断执行,并且仅在仿真完成时结束。initial块没有触发点。它们只是在时间 0 开始执行。“always”块有一个触发点触发块的执行,它一直在等待触发点触发并执行。请注意,可以有一个没有触发点的“always”块。但这只会导致块的零时间执行,并且最终会陷入零延迟死循环,并且仿真会卡住。例如:

always clk = !clk; //infinite zero delay loop. Simulation will get stuck at time 0
always #10 clk = !clk; //correct time control

SystemVerilog 是一种并发型语言。从这个角度来看,所有“initial”和“always”块在时间 0 并行触发。它们的执行没有先后顺序。

请注意,可以拥有任意数量的“initial”块,也可以拥有任意数量的“always”块。但是,当在这些块中分配各种变量时,需要小心。如果从不同的块中给相同的变量赋值(并且没有使用使用阻塞分配),最终可能会创建竞争条件,因为这些块都并行执行,并且一个块可能会破坏对另一个块中相同变量的赋值。

标签:触发,clk,always,initial,并且,执行
来源: https://www.cnblogs.com/fuqiangblog/p/16622920.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有