zoukankan      html  css  js  c++  java
  • Verilog学习笔记设计和验证篇(五)...............层次化事件队列

    详细的了解层次化事件队列有助于理解Verilog的阻塞赋值和非阻塞赋值功能。所谓层次化事件队列指的是用于调度仿真时间的不同Verilog事件队列。在IEEE的5.3节中定义了层次化事件队列在逻辑上分为用于当前仿真事件的4个不同队列,和用于下一段仿真事件的若干个附加队列:

    1)动态事件队列(下列事件队列的执行顺序可以随意安排)

    a)阻塞赋值 b)计算非阻塞赋值的RHS  c)连续赋值  d)执行$display命令  e)计算原语的输入输出变化

    2)停止运行的事件队列: #0延时阻塞赋值

    3)非阻塞赋值事件队列: 更新非阻塞赋值的LHS

    4)监控事件队列

    a)执行$monitor命令 b)执行$strobe命令

    5)其他指定的PLI命令队列:其他PLI命令。

    大多数Verilog事件是由动态事件队列调度的。这些事件包括阻塞赋值、连续赋值、$display命令,实例和原语的输入输出变化以及他们的输出更新,非阻塞赋值语句RHS的计算。而非阻塞赋值语句LHS的更新却不是由动态事件调度。除了这些以外,排列在其他的队列中的事件要等到被“激活”后,即被排入动态事件队列中后,才能真正的开始等待执行。

     综合前面阻塞赋值和非阻塞赋值,在Verilog程序中要遵循以下原则:

    1)时序电路建模,采用非阻塞赋值;

    2)锁存器建模,采用非阻塞赋值;

    3)用always块来描述组合逻辑,采用阻塞赋值;

    4)用always块来描述组合和时序混合逻辑,采用非阻塞赋值;

    5)在同一个always块中,不能同时使用非阻塞赋值和阻塞赋值;

    6)在不同always中,不要为同一个变量赋值。

    7)用$strobe系统任务来显示非阻塞赋值的变量值;

    8)在赋值时,不要使用#0延迟。

  • 相关阅读:
    HTML DOM 节点
    HTML DOM 简介
    XML DOM
    JavaScript Window Screen
    JavaScript Window
    JavaScript Date(日期) 对象
    11.2 正睿停课训练 Day15
    10.31 正睿停课训练 Day13
    10.29 正睿停课训练 Day11
    BZOJ.4361.isn(DP 树状数组 容斥)
  • 原文地址:https://www.cnblogs.com/SYoong/p/5951670.html
Copyright © 2011-2022 走看看