Concurrent Assertion

Concurrent assertion中要求必须有clock,从而保证在每个clock edge都进行触发判断。

assertion与design进行同步执行,concurrent assert只能定义在module中。

每次concurrent assertion条件满足时,都会新开一个thread,所以最终的assert的执行时 multi-thread的。

关键字是 assert property()

一般在property中定义clock,以及sequence的触发条件,而在sequence中指定义signal的判断。

assert与verilog的执行区间:

assert在当前time slot的rtl执行前,sample 上一个time slot的rtl的值,在observe region进行assert的计算判断。

在sample和compute之间会不会间隔一个时钟,主要靠操作符"|->"和“|=>”来决定。

一般情况下,clock的定义直接放在property中,而保证sequence独立于时钟比较好,

对于比较复杂的assert,可以单独定义一个clocking block,来作为property的clock基准。

对于一个大的design中,可能会有很多的assert在不同的module中,可以在某一个

assert中声明某个clocking block

在assertion中可以传递参数,来保证复用性:

也可以进行default的设置:

在不需要property继续检查的场景,可以通过加disable iff + COND来看,

disable iff只能应用在property中,不能用在sequence,一般放在@posedge clock前边。

sequence和property虽然都可以放clock event,但是推荐在property中实现。

sequence中不能有|->这样的操作符

时间: 2024-10-13 17:35:30

Concurrent Assertion的相关文章

Power management in semiconductor memory system

A method for operating a memory module device. The method can include transferring a chip select, command, and address information from a host memory controller. The host memory controller can be coupled to a memory interface device, which can be cou

Concurrent.Thread.js

(function(){ if ( !this.Data || (typeof this.Data != 'object' && typeof this.Data != 'function') ) this.Data = new Object(); if ( this.Data.Stack === undefined ) this.Data.Stack = undefined; with ( function(){ with ( Data ) { return function () {

Java并发编程:Concurrent锁机制解析

.title { text-align: center } .todo { font-family: monospace; color: red } .done { color: green } .tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal } .timestamp { color: #bebebe } .timestamp-kwd

Concurrent control in SQLite

This document describes the technologies to concurrent access to a SQLite database. There are also some code analysis to reveal the low level implementations. Multi-process See the official FAQ Can multiple applications or multiple instances of the s

了解CMS(Concurrent Mark-Sweep)垃圾回收器

http://www.iteye.com/topic/1119491 1.总体介绍: CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器.对于要求服务器响应速度的应用上,这种垃圾回收器非常适合.在启动JVM参数加上-XX:+UseConcMarkSweepGC ,这个参数表示对于老年代的回收采用CMS.CMS采用的基础算法是:标记-清除. 2.CMS过程: 初始标记(STW initial mark) 并发标记(Concurrent mar

Java集合及concurrent并发包总结

1.集合包 集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放Key-Value形式的键值对. Collection中最常用的又分为两种类型的接口:List和Set,两者最明显的差别为List支持放入重复的元素,而Set不支持. List最常用的实现类有:ArrayList.LinkedList.Vector及Stack:Set接口常用的实现类有:HashSet.TreeSet. 1.1 ArrayList ArrayList基于

java.util.concurrent.ThreadPoolExecutor

An ExecutorService that executes each submitted task using one of possibly several pooled threads, normally configured using Executors factory methods. Thread pools address two different problems: they usually provide improved performance when execut

12、java5锁java.util.concurrent.locks.Lock之ReentrantLock

JDK文档描述: public interface LockLock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作.此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition 对象. 锁是控制多个线程对共享资源进行访问的工具.通常,锁提供了对共享资源的独占访问.一次只能有一个线程获得锁,对共享资源的所有访问都需要首先获得锁.不过,某些锁可能允许对共享资源并发访问,如 ReadWriteLock 的读取锁. synchronized 方

synchronized/java.util.concurrent.locks.Loc/如何格式化日期/将字符“12345”转换成long型

1.简述synchronized和java.util.concurrent.locks.Lock的异同?解答:主要相同点:Lock能完成synchronized所实现的所有功能 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能.synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放. 2.如何格式化日期解答:Date now=new Date();SimpleDateFormat sdf=new SimpleDate