博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
加快modelsim仿真速度的方法(原创)
阅读量:4337 次
发布时间:2019-06-07

本文共 2431 字,大约阅读时间需要 8 分钟。

①仿真精度越高,仿真效率月底。

仿真时采用`timescale 1ns/1ns比采用1ns/100ps的仿真效率高

simulation was two billion ns.

②clock generation coding tips

 

 

 

 

 

(from<A BFM Simulation Strategy for Verilog>)

②减少层次结构

在设计中层次结构越少,仿真速度越快,这是因为参数在module中通过端口传递会消耗仿真器的时间

③进程越少,仿真效率越高

代码中出现的进程越少,仿真越快。因为仿真器在多个进程之间切换也需要时间。

④减少门级原语的使用,尽量采用行为描述

建模的抽象层次越高,仿真效率越高。描述同样的功能尽量采用行为描述,少使用门级原语

⑤尽量使用case语句,而不是if ...else语句

如果使用case语句和if..else语句能够实现相同的电路,则尽量使用case语句,以提高仿真效率。

⑥减少begin...end语句块的使用

在语义不发生歧义的情况下,尽量减少使用begin...end语句块,以提高仿真效率

⑦减少仿真器的输出显示

过多使用仿真器的输出显示任务,如$display,$fdisplay等,会降低仿真器执行的速度。

 

注意:以上几点只是用来提高仿真效率的建议,并不是说设计代码一定要这样做,而是建议在保证代码功能,可读性,可维护性和安全性的前提下,

尽量采用提高仿真效率的方法,节约仿真和调试的时间。毕竟代码功能,可读性,可维护性和安全性才是最重要的。

 

①使用增量编译,当整个仿真系统有大量文件组成时,每修改某个module中的部分信号后,想查看时序波形的时候,如果所有文件都编译一遍,会浪费大量时间。这时,增量编译可以有效的节约仿真时间

vlog -incr 

vcom -incr

②不启用GUI界面,不启用modelsim的GUI界面一样可以完成仿真的所有工作,而且速度会比较快;记录下仿真波形(仿真完后再看波形:do wave.do;或将观察的信号打印到文件,直接比对)

vsim -c -do run_sim.do -l vsim.log -wlf vsim.wlf

xxx ③启用nodebug模式(默认是debug模式),速度会有所提高,但某些调试功能将被禁止,比如trace x功能就不能用了

  vlog -nodebug

 

④避免显示不必要的信号

使用 log -r /* (记录所有的信号,运行这个命令后即使在仿真前没有把信号加入wave窗口,仿真完成后直接加入wave窗口就可以查看波形,比较方便,但是缺点是当工程较大和仿真时间很长时仿真速度较慢,占用内存也较大。)

好处是:可以记录所有信号的波形,方便后续查看到所有想查看的波形

缺点是:会降低仿真速度

⑤如果调用了IPCORE,研究官方的UG,加速仿真速度(ex:SRIO加速开关)

 

⑥修改设计,在不影响仿真结果的情况下,修改设计文件,加速仿真速度(ex:将counter从1024改为128)

⑧Use the vopt command to increase simulation speed.(modelsim.ini文件中:“VoptFlow = 1”默认打开优化)

vsim -vopt 

-vopt                              Run vopt optimization before elaborating the simulator

-voptargs="<arglist>"      Pass the specified arguments to vopt

-novopt

(optional) Forces vlog to produce code if the VoptFlow variable is set to 1 (optimizations
turned on) in the modelsim.ini. (VoptFlow = 1 is the default behavior.) Use this argument
together with the vsim -novopt command to run the simulator without any optimizations.
For example, you may want to use this argument when you are coding an RTL block with a
small testcase.

 

 

 

-voptargs="+acc"   :

The +acc switch is more

related to those, and is used to preserve visibility to certain categories of objects that might
otherwise be optimized away. Objects that get optimized away can make your debug and
analysis efforts more difficult

⑨为了提高仿真性能,应该使采样最小化。

减少仿真输出的总数,可以加快仿真仿真过程。使用计算机的输出设备会减慢程序的运行,因此,记录仿真输出的过程会使仿真变慢。

$monitor $write $display $strobe等系统函数的运用有助于debug,但会减慢仿真速度,根据实际做好平衡。

一个有效的减少数据采样的办法是:当进入testcase中感兴趣的地方时,令激励器打开采样过程。可以通过下面两个系统任务启动和关闭监控:

$monitoron(启动最近关闭的监控任务) ,$monitoroff(关闭激活的监控任务)

转载于:https://www.cnblogs.com/hfyfpga/p/4281579.html

你可能感兴趣的文章
python的字符串内建函数
查看>>
Spring - DI
查看>>
微软自己的官网介绍 SSL 参数相关
查看>>
Composite UI Application Block (CAB) 概念和术语
查看>>
ajax跨域,携带cookie
查看>>
阶段3 2.Spring_01.Spring框架简介_03.spring概述
查看>>
阶段3 2.Spring_02.程序间耦合_1 编写jdbc的工程代码用于分析程序的耦合
查看>>
阶段3 2.Spring_01.Spring框架简介_04.spring发展历程
查看>>
阶段3 2.Spring_02.程序间耦合_3 程序的耦合和解耦的思路分析1
查看>>
阶段3 2.Spring_02.程序间耦合_5 编写工厂类和配置文件
查看>>
阶段3 2.Spring_01.Spring框架简介_05.spring的优势
查看>>
阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
查看>>
阶段3 2.Spring_02.程序间耦合_4 曾经代码中的问题分析
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_2 spring中的Ioc前期准备
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
查看>>
阶段3 2.Spring_02.程序间耦合_8 工厂模式解耦的升级版
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
查看>>
阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_02.ssm整合之搭建环境
查看>>