zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    AFNet3.0上传图片
    最新 AFNetworking 3.0 简单实用封装
    iOS开发密码输入数字和字母混合
    IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)(转)
    iOS开发探索-图片压缩处理
    常用第三方框架插件
    2.1创建直线
    1.4用向导创建Hello,world程序
    vs2008找不到ObjectARX MFC Support
    vc6.0错误:error C2653: 'CCreateEnt' : is not a class or namespace name
  • 原文地址:https://www.cnblogs.com/hfyfpga/p/4287509.html
Copyright © 2011-2022 走看看