zoukankan      html  css  js  c++  java
  • 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之间会不会间隔一个时钟,主要靠操作符"|->"和“|=>”来决定。

    下图中有错误,observe之后不会再有reactive,reactive区域在inactive执行结束之后,就被激活,之后进入observe阶段

    一般情况下,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中不能有|->这样的操作符

  • 相关阅读:
    反向代理实例
    nginx常用命令和配置
    nginx的安装
    Can Live View boot up images acquired from 64bit OS evidence?
    What is the behavior of lnk files?
    EnCase v7 search hits in compound files?
    How to search compound files
    iOS 8.3 JB ready
    Sunglasses
    现代福尔摩斯
  • 原文地址:https://www.cnblogs.com/-9-8/p/5873228.html
Copyright © 2011-2022 走看看