Verilog的分层事件队列
2016-06-30 15:44
302 查看
仿真器首先按照仿真时间对事件进行排序,然后再在当前仿真时间里按照事件的优先级顺序进行排序。
活跃事件是优先级最高的时间,在活跃事件之间,它们的执行顺序是随机的。
两个缩写:RHS(right-hand-side) 和LHS(left-hand-side)。
前者指等式右边的表达式或者变量(RHS expression or RHS variable),后者指等式左边的表达式或者变量(LHS expression or LHS variable)。
由上表可知,阻塞赋值属于活跃事件,会立刻执行,这就是阻塞赋值“计算完毕,立即更新”的原因。此外,由于在分层事件队列中,只有将活跃事件中排在前面的事件调出,并执行完毕后,才能够执行下面的事件,这就可以解释阻塞赋值的第二个特点。
同样由上表可知,非阻塞赋值的RHS计算属于活跃事件,而非阻塞赋值的更新事件排在非活跃事件之后,因此只有仿真队列中所有的活跃事件和非活跃事件都执行完毕后,才轮到非阻塞赋值更新事件,这就是非阻塞赋值必须分两拍完成的原因。
阻塞赋值特点:
1、RHS的表达式计算和LHS的赋值更新,这两个动作之间不能插入其他动作,即所谓计算完毕,立即更新。
2、所谓阻塞赋值就是在一个”begin…end”块中的多个阻塞赋值语句,只有上一句完全执行完毕后,才会执行下一语句。
非阻塞赋值()程序的执行:
非阻塞赋值,RHS的计算表达式和LHS的赋值更新分两个节拍执行。首先,应该是RHS表达式计算,得到新值后并不立即赋值,而是放在事件队列中等待,直到当前仿真时刻的后期才执行。
相关文章推荐
- oracle11g安装(win10)
- C# Stream 和 文件之间的转换
- LeetCode 125. Valid Palindrome
- PYTHON-正则表达式用法
- RGB颜色查询对照表
- Android studio 上传项目到 github 开源托管,项目更新 以及 github上的项目删除
- ORACLE存储过程plsql创建与执行(一)
- 暑假学习PHP——后台数据的增改删以及置顶功能
- 对话框 data-rel=dialog
- Python3异常处理
- Sublime text_python开发环境设置(windows下)
- myBatis里表与表之间的关系 多对一时候
- iOS--错误集锦--clang error linker command failed with exit code 1 use -v to see invocation
- Linux下获取当前程序的绝对路径
- Linux下查看文件和文件夹大小
- 批处理入门概要
- Delphi 的字符及字符串string、AnsiString、WideString、String[n]、ShortString
- 虚拟化基础架构Windows 2008篇之8-添加启动映像
- scala言语基础学习十一
- 修改VIM编辑器使其自动显示行号缩进