返回介绍

14.3.1 SystemVerilog仿真参考算法

发布于 2020-09-09 22:55:52 字数 1267 浏览 1217 评论 0 收藏 0

execute_simulation {
    T = 0;
    initialize the values of all nets and variables;
    schedule all initialization events into time 0 slot;
    while (some time slot is non-empty) {
        move to the next future non-empty time slot and set T;
        execute_time_slot (T);
    }
}

execute_time_slot {
    execute_region (preponed);
    while (some iterative region is non-empty) {
        execute_region (active);
        scan iterative regions in order {
            if (region is non-empty) {
                move events in region to the active region;
                break from scan loop;
            }
        }
    }
    execute_region (postponed);
}

execute_region {
    while (region is non-empty) {
        E = any event from region;
        remove E from the region;
        if (E is an update event) {
            update the modified object;
            evaluate processes sensitive to the object and possibly schedule
            further events for execution;
        } else { /* E is an evaluation event */
            evaluate the process associated with the event and possibly
            schedule further events for execution;
        }
    }
}

迭代区域以及它们的顺序为:Active、Inactive、Pre-NBA、NBA、Post-NBA、Observed、Postobserved和Reactive。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文