0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Modelsim、ActiveHDL等仿真器的基本原理

SwM2_ChinaAET 来源:未知 作者:李倩 2018-06-14 08:48 次阅读

今天来聊点有意思的东西,FPGA开发者或者数字IC开发者常用的HDL仿真器的基本原理。即ModelsimActiveHDL等仿真器的基本原理。

目前,HDL仿真器主要有三种实现算法(机制):基于时间的算法(Time-Based)、基于事件的算法(Event-Based,EBS)和基于周期的算法(Cycle-Based,CBS)。

基于时间的算法适合处理连续的时间及变量,其会在每一个时间点对所有的电路元件进行计算。但是,在大部分情况下,每一个时间点只有约2%~10%的电路处于活动(运行)状态,所以该算法效率非常低。

基于事件的算法适合处理离散的时间、状态和变量。该算法只有在电路状态发生变化时才进行处理,只仿真那些可能引起电路状态改变的元件。仿真器响应输入引脚上的事件,并将值在电路中向前传播。目前来说,该算法效率最高,且应用最为广泛,大部分的商业仿真器都是基于该种算法进行开发的。用某仿真器厂家的宣传语,就是“Evaluate When Necessary”。

基于周期的仿真算法以时钟周期为处理单位(与时间无关)。其旨在时钟边沿进行计算,不管时钟周期内的时序,且只是用两值逻辑(0和1)。该算法主要针对的是大规模设计(尤其是数字IC设计),且只能应用于同步电路。

下面详细介绍一下基于事件的仿真算法:

仿真器在编译数据结构时建立一个事件队列;

只有当前时间片中所有事件都处理完成之后,时间才能向前;

仿真从时间0开始,而且时轮只能向前推进。只有时间0的时间处理完后才能进入下一时间片;

在同一个时间片内发生的事件在硬件上是并行的;

理论上时间片可以无限,但实际上受硬件(如电脑CPU等)和软件(如该仿真软件是否支持多线程技术等)的限制。

而基于周期的算法只会在时钟的边沿来计算组合逻辑的输出结果,因此基于周期的算法速度更快,内存的使用效率更高。同时,因为基于周期的算法不允许进行严格的时间约束,所以其仿真时间精度没有基于事件的算法高(since cycle-based simulators do not allow detailed timing specificity, they are not as accurate.)。基于周期的算法的原理图,如下图所示:

基于事件的算法,基于周期的算法和传统的电路仿真软件SPICE的比较图:

目前基于事件的算法的仿真器(EBS Simulator)主要有:

Modelsim、ActiveHDL、NC-Verilog、Verilog-XL、VCS(Verilog)、Scirocco(VHDL)等。

基于周期的算法的仿真器(CBS Simulator)主要有:

Modelsim、Synopsys Cobra等。

其中Modelsim同时支持EBS和CBS。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电路
    +关注

    关注

    170

    文章

    5482

    浏览量

    169551
  • 仿真器
    +关注

    关注

    14

    文章

    988

    浏览量

    82993
  • HDL
    HDL
    +关注

    关注

    8

    文章

    323

    浏览量

    47101

原文标题:【博文精选】聊一聊HDL仿真器基本原理

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用 ModelSim 进行设计仿真

    ModelSim为HDL仿真工具,我们可以利用该软件来实现对所设计的VHDL或Verilog程 序进行仿真,支持IEEE常见的各种硬件描述语言标准。可以进行两种语言的混合仿真,但 推荐
    发表于 01-14 09:47 0次下载

    xds100v3仿真器引脚定义

    中,我将详细介绍xds100v3仿真器的引脚定义。 首先,让我们来了解一下xds100v3仿真器的整体结构和基本原理。xds100v3仿真器由一个主控制器和连接电路组成,其中主控制器负
    的头像 发表于 01-05 13:40 1458次阅读

    怎样单独使用modelsim仿真xilinx呢?

    直接在modelsim软件内执行.do文件进行仿真,不通过vivado调用modelsim,vivado仅用于生成IP核。
    的头像 发表于 12-04 18:26 590次阅读
    怎样单独使用<b class='flag-5'>modelsim</b><b class='flag-5'>仿真</b>xilinx呢?

    模拟电路仿真基本原理

    电子发烧友网站提供《模拟电路仿真基本原理.pdf》资料免费下载
    发表于 11-27 09:34 0次下载
    模拟电路<b class='flag-5'>仿真</b>的<b class='flag-5'>基本原理</b>

    无功补偿的意义及基本原理

    无功补偿的意义及基本原理
    的头像 发表于 11-08 09:08 232次阅读
    无功补偿的意义及<b class='flag-5'>基本原理</b>

    3G技术基本原理

    电子发烧友网站提供《3G技术基本原理.pdf》资料免费下载
    发表于 11-01 14:27 0次下载
    3G技术<b class='flag-5'>基本原理</b>

    开关电源基本原理与设计介绍

    开关电源基本原理与设计介绍(PPT)
    发表于 09-28 06:30

    如何用Python实现Vivado和ModelSim仿真自动化?

    我们在Windows系统下使用Vivado的默认设置调用第三方仿真器比如ModelSim进行仿真时,一开始仿真软件都会默认在波形界面中加载testbench顶层的信号波形
    的头像 发表于 09-13 09:23 758次阅读
    如何用Python实现Vivado和<b class='flag-5'>ModelSim</b><b class='flag-5'>仿真</b>自动化?

    将vivado的仿真器改成modelsim仿真modelsim的transcript没法打印出e203实时运行的信息怎么解决?

    原来仿真使用的是vivado simulator,最近将vivado的仿真器改成modelsim,发现仿真的时候modelsim的trans
    发表于 08-11 09:47

    使用vivado的仿真器仿真时,modelsim的transcript界面无法输出C程序的printf语句是为什么?

    我现在将vivado和modelsim做了联合仿真,用来仿真蜂鸟e203协处理扩展实现的功能。现在的问题是:使用vivado的仿真器
    发表于 08-11 06:44

    密码学基本原理(上)

    电子发烧友网站提供《密码学基本原理(上).pdf》资料免费下载
    发表于 08-02 09:13 1次下载
    密码学<b class='flag-5'>基本原理</b>(上)

    Vivado调用Modelsim仿真

    Modelsim是十分常用的外部仿真工具,在Vivado中也可以调用Modelsim进行仿真,下面将介绍如何对vivado进行配置并调用Models
    的头像 发表于 07-24 09:04 1999次阅读
    Vivado调用<b class='flag-5'>Modelsim</b><b class='flag-5'>仿真</b>

    modelsim自动化仿真实验 利用脚本实现modelsim自动化仿真

    大家好!今天给大家带来的是modelsim自动化仿真程序。我们在代码编写完成时,通常都需要先进行仿真,然后上板实验。但是如果我们每次仿真都要去新建一个工程,添加.v文件以及testbe
    的头像 发表于 07-19 10:10 1062次阅读
    <b class='flag-5'>modelsim</b>自动化<b class='flag-5'>仿真</b>实验 利用脚本实现<b class='flag-5'>modelsim</b>自动化<b class='flag-5'>仿真</b>

    安全光栅的基本原理及优势

    安全光栅的基本原理及优势
    的头像 发表于 06-29 09:41 676次阅读
    安全光栅的<b class='flag-5'>基本原理</b>及优势

    LLC基本原理及设计方法

    LLC基本原理及设计方法
    发表于 06-25 10:05 6次下载