SystemVerilog Event Scheduling Algorithm
While simulating System Verilog design and its test-bench including assertions, events has to be dynamically scheduled, executed, and removed as the simulator advances time. To have this feature, simulator has to maintain a data structure and usually would be a time ordered linked list. That means, at any point of time during simulation, event has one execution time which is current time or future time.
All scheduled events at a specific time define a time slot. A time slot is divided into a set of ordered regions, as Preponed, Pre-Active, Active, Inactive, Pre-NBA, NBA, Post-NBA, Pre-Observed, Observed, Post-Observed, Reactive, Re-Inactive, Pre-Re-NBA, Re-NBA, Post-Re-NBA, Pre-Postponed & Postponed.
REGION GROUPS
There are groups of event regions that are used to help define the scheduling of System Verilog activity.
Active region: Events scheduled in the Active, Inactive, Pre-NBA, NBA, and Post-NBA regions are active region set events.
Reactive region: Events scheduled in the Reactive, Re-Inactive, Pre- Re-NBA, Re-NBA, and Post-Re-NBA regions are reactive region set events.
Iterative regions: The Active, Inactive, Pre-NBA, NBA, Post-NBA, Pre-Observed, Observed, Post- Observed, Reactive, Re-Inactive, Pre-Re-NBA, Re-NBA, Post-Re-NBA, and Pre-Postponed regions are known as the iterative regions.
Simulation region: The simulation regions of a time slot are the Preponed, Active, Inactive, NBA, Observed, Reactive, Re-Inactive, Re-NBA and Postponed regions.

Simulator executes and removes all events in the current simulation time slot before moving to next time slot. In an even based simulator, a time slot is divided into a set of ordered regions to provide predictable interactions between the design and test-bench code.
PREPONED
Sampling in the preponed region is same as the sampling in the previous postponed region. All nets and variables used in concurrent assertions are sampled here.
The #1step sampling delay provides the ability to sample data immediately before entering the current time slot. #1step sampling is identical to taking the data samples in the Preponed region of the current time slot.
ACTIVE REGION
Sampling of blocking assignments (out = in), continuous assignments (assign out=in) and RHS of non-blocking assignments (out <= in) are evaluated in this region. If intra-assignment delay exist for blocking assignment, it first computes RHS value and then suspend the executing process and schedule as future event. Delay 0 will be scheduled for inactive region.
INACTIVE REGION
The Inactive region holds the events to be evaluated after all the Active events are processed.
#0 delay statements are executed in this region.
out = #0 in
An explicit #0 delay control requires the process to be suspended and an event to be scheduled into the Inactive region of the current time slot so that the process can be resumed in the next Inactive to Active iteration.
NBA
RHS of non-blocking assignment are occurred in active region and update of LHS will happen in NBA region.
The NBA region holds the events to be evaluated after all the Inactive events are processed. If events are being executed in the active region set, a non-blocking assignment creates an event in the NBA region scheduled for the current or a later simulation time.
OBSERVED REGION
The Observed region is for evaluation of property expressions when it is triggered. During property evaluation, pass/fail code shall be scheduled in the Reactive region of the current time slot. PLI callbacks are not allowed in the Observed region.
RE-ACTIVE REGION
The pass/fail code (code in action blocks of concurrent assertions) is scheduled in this region. The code specified by blocking assignments in program blocks is also scheduled in this region.
The Reactive region is the reactive region set dual of the Active region.
RE-INACTIVE REGION
#0 delay statements related to program block are scheduled in this region.The Re-Inactive region holds the events to be evaluated after all the Reactive events are processed.
The Re-Inactive region is the reactive region set dual of the Inactive region.
RE-NBA REGION
The Re-NBA region holds the events to be evaluated after all the Re-Inactive events are processed.
Update of LHS will happen in this region for the statements its RHS of non-blocking assignment occurred in re-active region.The Re-NBA region is the reactive region set dual of the NBA region.
POSTPONED
Write values to any net or variable or scheduling an event in any previous region within the current time slot are illegal in this region. $monitor, $strobe, and other similar events are scheduled here.
SystemVerilog Event Scheduling Algorithm的更多相关文章
- Thread Pool Engine, and Work-Stealing scheduling algorithm
http://pages.videotron.com/aminer/threadpool.htm http://pages.videotron.com/aminer/zip/threadpool.zi ...
- list scheduling algorithm 指令调度 —— 笔记
作者:Yaong 出处:https://www.cnblogs.com/yaongtime/articles/14033444.html 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者同 ...
- Rate Monotonic Scheduling algorithm
这篇文章写得不错 http://barrgroup.com/embedded-systems/How-To/RMA-Rate-Monotonic-Algorithm 另外rtems的官方文档也有类似说 ...
- 【传智播客】Libevent学习笔记(四):事件event
目录 00. 目录 01. 事件概述 02. 创建事件 03. 事件的标志 04. 事件持久性 05. 超时事件 06. 信号事件 07. 设置不使用堆分配的事件 08. 事件的未决和非未决 09. ...
- Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip
Various embodiments of methods and systems for thermally aware scheduling of workloads in a portable ...
- Least slack time scheduling
This algorithm is also known as least laxity first. 词语解释:Laxity 松懈的:马虎的:不严格的,Least-Laxity-First 松弛程度 ...
- 【GCC编译器】Swing Modulo Scheduling
1. SMS 在 GCC 中的实现 1.1. 一些基本概念 (1)软流水(Software pipelining )是一种通过重叠不同迭代的指令,使其并行执行,从而改进循环中指令调度的技术.关键思想是 ...
- Overview and Evaluation of Bluetooth Low Energy: An Emerging Low-Power Wireless Technology
转自:http://www.mdpi.com/1424-8220/12/9/11734/htm Sensors 2012, 12(9), 11734-11753; doi:10.3390/s12091 ...
- 《k8s-1.13版本源码分析》-调度器初始化
源码分析系列文章已经开源到github,地址如下: github:https://github.com/farmer-hutao/k8s-source-code-analysis gitbook:ht ...
随机推荐
- 调整linux系统时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 好吧,使用tzselect又靠谱些,使用前把/etc/localtime删除了. 执行上 ...
- 000 Excel获取数据
1.目标网址 http://data.10jqka.com.cn/funds/ggzjl/field/zjjlr 二:需求一 1.需求 爬单个页面的数据 2.变化网址 http://data.10jq ...
- Django项目从零开始的大概脉络
Django项目从零开始脉络 创建虚拟环境,隔离项目python环境:mkvirtualenv -p /usr/bin/python3.6 envname 安装Django:pip install d ...
- C++ 几种经典的垃圾回收算法
之前遇到了一篇好文(https://blog.csdn.net/wallwind/article/details/6889917)准备学习一下的,课程繁忙就忘记了,今日得闲,特来补一下. 自己写一遍加 ...
- UNP学习总结(一)
本文主要为对UNP第五章部分内容的实验和总结. UNP第五章对一个echo服务器和客户端在各种连接状态下的表现做了详细的分析,包括了: 正常启动和终止: accept返回前连接中止: 服务器进程终止: ...
- iOS 9应用开发教程之iOS 9新特性
iOS 9应用开发教程之iOS 9新特性 iOS 9开发概述 iOS 9是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统.该操作系统于2015年6月8号(美国时间)被发布.本章将主要讲解iOS ...
- MongoDB基本方法
一.MongoDB Limit与Skip方法 MongoDB Limit() 方法 如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一 ...
- 内容播放colorbox
1.需要的js (1)jquery (2)colorbox (http://www.jacklmoore.com/colorbox/ 下载文件夹,其中有js.css文件) //加载的时候注意文件的路径 ...
- bzoj3456 城市规划 多项式求In
\(n\)个点的无向联通图的个数 打着好累啊 一定要封装一个板子 记\(C(x)\)为无向图个数的指数型生成函数,\(C(0) = 1\) 记\(G(x)\)为无向联通图个数的指数型生成函数,\(G( ...
- BlocksKit(1)-基本类型的分类
BlocksKit(1)-基本类型的分类 BlocksKit是一个用block的方式来解决我们日常用对集合对象遍历.对象快速生成使用.block作为委托对象的一种综合便利封装库.这个库主要分三个大块C ...