• what is delta simulation time


    In digital logic simulation, a delta cycles are evaluation of expressions, followed by value updates, causing more evaluations, and more value updates, and so on. Each time through the loop is one delta cycle. Different languages have specific definitions of what can happen in a delta cycle, and in most cases, simulation time does not advance in a delta cycle until there is nothing left to do at the current simulation time. Then simulation time is stepped to the next scheduled activity. So there can be one or many delta cycles in a time step. This is the case for SystemVerilog and VHDL.

    For synchronous processes, delta delays may be ignored.

    If your testbench uses wait statements, you will
    discover delta delays. Sim signals will not change
    value until a wait is encountered.

    Consider writing your testbench in a synchronous
    style, using waits only for the sim clock generator.

    This not only eliminates the non-stylish "wait for 0 ns",
    but it keeps your brain in synchronous mode at all times.

    Delta delay affects every assignment to a signal.

    A concurrent signal assignment is a process. Take,
    for example:

    architecture foo of bar is
    signal a,b,c: bit;
    begin
    a <= b and c;
    end;

    The concurrent assignment "a <= b and c;" is EXACTLY
    equivalent to the process

    process(b,c) begin
    a <= b and c;
    end process;

    which, in its turn, is exactly equivalent to

    process begin
    a <= b and c;
    wait on b,c;
    end process;

    In all three cases, the signal assignment suffers a delta delay.

    Delta delays allow a discrete-event simulator to be deterministic
    without the need for (explicit) mutual exclusion mechanisms.

    As Verilog shows, it is possible to define a simulator in which
    some signal assignments do NOT suffer delta delays, and yet
    retain deterministic behaviour if the user is careful enough. 
    The delta delay mechanism is available in Verilog, through 
    nonblocking assignment, and is effectively essential when 
    writing clock-synchronous descriptions. I say "effectively 
    essential" because there are other ways to write clock-
    synchronous models, without using nonblocking 
    assignment; but they are extremely clumsy and 
    error-prone.

  • 相关阅读:
    abstract关键字
    final关键字
    Vue使用枚举类型实现HTML下拉框
    第八节 pandas读取和保存文件
    第七节 pandas新建数据框的两种方式
    第六节 numpy的常用属性和方法
    第五节 numpy的简单使用
    第三节 matplotlib绘制直方图
    第三节 matplotlib绘制条形图
    第二节 matplotlib绘制散点图
  • 原文地址:https://www.cnblogs.com/hfyfpga/p/4287509.html
Copyright © 2020-2023  润新知