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

今天来聊点有意思的东西,fpga开发者或者数字ic开发者常用的hdl仿真器的基本原理。即modelsim、activehdl等仿真器的基本原理。
目前,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。

BA1404调频发射芯片内部原理方框图和应用电路图,BA1404
SpringBoot的嵌入式Web容器是什么时候加载的?
全球PCB下游应用领域结构
基于步进电机的单片机控制及驱动方式
测量电压驻波比(VSWR)量化传输线的阻抗失配
Modelsim、ActiveHDL等仿真器的基本原理
创米科技推出小白智慧门H1,采用瑞典FPC指纹传感器提高指纹识别率
工商业储能系统常见问题解答
伺服驱动器显示F8060数字是什么原因
荣耀x10好用吗?荣耀X10不愿取消的升降摄像头如何在5G手机中找平衡
三大运营商公布了5G套餐每月均不低于128元
检测并强化对非侵入式篡改的攻击
为什么我国半导体行业不必悲观?
TCL在智慧交通上的态度是怎样的
家居设备与仪器产生的电磁场有多强?
可擦除可编程存储IC P24CM01B介绍
高通首次推出AI引擎 打包所有软硬件算力
AI芯片神坛开始下滑
河北移动提升5G建设及优化的进度,建优同步提升质量
英创信息技术ESM335x SPI驱动DMA数据收发介绍