当前位置: 首页 > news >正文

Modelsim 操作结构和流程

用到的命令一般都写到.do文件中,使用脚本语言进行批量处理。

  • Step 1: Map libraries

  • Step 2: Compile the design

  • Step 3: Optimize the design (OPTIONAL)

  • Step 4: Load the design into the simulator

  • Step 5: Run the simulation

  • Step 6: Debug the design Note: Design optimization in step 3 limits debugging visibility

1.1 step1: 库与文件的映射

1.1.1 GUI方式

  1. File > New > Project

  1. 输入库名字

  1. 添加设计文件到工程中

1.1.2 命令行方式

vlib <library_name>
vmap work <library_name>
  • vlib 命令

  • 简介

这个命令创建一个设计库(design library)。必须使用vlib命令而不是操作系统命令来创建库目录或索引文件。

  • 语法

vlib -help
vlib [-short |-dos |-long |-unix] [-format { 1|3|4 }]
[-type {directory | archive | flat}]
[{-lock |-unlock} <design_unit>] [-locklib |-unlocklib] [-unnamed_designs <value>]
[-compress |-nocompress]
<library_name>
  • 描述

如果指定的库已经作为有效的ModelSim库存在,则vlib命令将退出,并发出警告消息,而不会影响该库。该命令通过-help选项提供附加信息。

  • vmap命令

  • 简介

vmap命令通过修改modelsim.ini文件来定义逻辑库名和目录之间的映射。

  • 语法

vmap [-c |-del <logical_name> ... |<logical_name> [<path>] ][-modelsimini <path/modelsim.ini>]
  • 描述

如果没有参数,vmap将读取适当的 modelsim.ini 文件,并将当前逻辑库打印到物理目录映射到transcript。

1.2 step2:编译设计

1.2.1 GUI方式

点击 Compile > Compile 或者 Compile > Compile All。

1.2.2 命令行方式

vlog file1.v file2.v ...
(Verilog)
vcom file1.vhd file2.vhd ...
(VHDL)
sccom <top> (SystemC)
sccom -link <top>
  • vlog 命令

  • 简介

vlog命令将Verilog源代码和SystemVerilog扩展编译到指定的工作库(或默认情况下编译到工作库)。可接受压缩的SystemVerilog源文件(用zlib压缩的源文件)。

  • 语法

vlog [options] <filename> [<filename> ...]

介绍几个常用的option:

  • -L

(可选)在指定的资源库中搜索预编译模块。在运行vsim命令时,还必须指定此处指定的库搜索选项。

  • +incdir+

(可选)指定目录以搜索`include 编译器指令中包含的文件。默认情况下,首先搜索当前目录,然后按+incdir选项在命令行中的显示顺序搜索指定的目录。您可以指定多个+incdir选项,也可以在单个+incdir选项中指定多个以“+”分隔的目录。当编译一个导入ModelSim附带的OVM包的文件时,不需要在OVM目录中指定+incdir+。例如,如果你的.sv文件包含:

import ovm_pkg::*;
`include "ovm_macros.svh"

vlog命令会自动为你添加+incdir开关,发出如下提示:

** Note: (vlog-2286) Using implicit
+incdir+<install_dir>/<ovm_dir>/src
from import ovm_pkg

但是,如果使用的是开放版本的OVM,则需要使用+incdir开关显式指定该目录。请注意,内置UVM库的包导入现在添加了一个隐式的+incdir条目,它派生自包导入位置。

  • 描述

  • vlog命令可以从ModelSim或操作系统命令提示符中调用。它也可以在仿真过程中被调用。

  • 编译库依赖于主版本。当在主要版本之间移动时,必须使用-refresh参数刷新vlog编译库。对于小版本则不是这样。

  • vlog命令的所有参数都区分大小写:-WORK和-work不相等。

  • SystemVerilog要求vlog命令的默认行为是将命令行上列出的每个Verilog设计文件视为单独的编译单元。要将单个命令行中列出的多个文件视为单个编译单元,可以使用vlog -mfcu参数或 modelsim.ini文件的MultiFileCompilationUnit变量。

1.3 step3:优化设计(可选)

1.3.1 GUI方式

禁用优化:

  • Simulate > Start Simulation

  • 取消勾选 Enable Optimization 按钮

设置优化选项:

  • Simulate > Design Optimization

  • 设置选项

1.3.2 命令行方式

当在modelsim.ini文件中voptflow = 1开启优化。

1.4 step4:往仿真器加载设计

1.4.1 GUI方式

  1. 点击 Simulate > Start Simulation

  1. 点击顶层设计模块

  1. 点击 OK

1.4.2 命令行方式

vsim <top>
vsim <opt_name>
  • vsim 命令

  • 简介

vsim命令调用vsim仿真器,您可以使用它来查看以前仿真运行的结果(当使用-view参数调用时).

  • 语法

vsim  [options] 

介绍几个常用的option:

  • -vopt

(可选)如果vopt没有被手动调用,通知vsim自动执行vopt命令。除非在modelsim.ini中将VoptFlow变量设置为0,否则不需要。

  • -novopt

(可选)防止ModelSim自动运行vopt命令。如果在modelsim中将VoptFlow变量设置为1(优化已打开)。如果没有手动调用,vsim会自动运行vopt。如果指定此参数,应确保使用编译命令(vcom或vlog)指定。除非与QuestaADMS一起使用电源感知仿真,否则不建议使用此参数。如果使用此参数,将显示以下警告:

** Warning: (vsim-8891) All optimizations are turned off because the -novopt argument is in effect. This will cause your simulation to run very slowly. If you are using this argument to preserve visibility for Debug or PLI features, please see the User’s Manual section on Preserving Object Visibility with vopt.
  • 描述

  • 要手动中断设计加载,使用Break键或在shell中按

  • sim命令的所有参数都是区分大小写的;例如-g和-G是不相等的。

1.5 step5:运行仿真


(这一步一般使用GUI模式)

1.5.1 GUI方式

上述图片从左到右依次是:

  1. Run

  1. continueRun

  1. Run -All

1.5.2 命令行方式

  • run 命令

  • 简介

此命令将仿真向前推进指定的时间步数。

  • 语法

run {[<timesteps>[<time_units>]] |-all |-continue|-final |-finish |-init |-next } | {-step [-current] [<n>] [-out] [-over [<n>]] [-this]}
  • 描述

在运行操作完成后,您可以使用以下首选变量控制任何返回值:

  • noRunTimeMsg:设置为0表示显示仿真时间和增量信息,设置为1表示不显示。

  • noRunStatusMsg:设置为0表示显示运行状态信息,设置为1表示不显示。

1.6 step6:调试设计

相关文章:

Modelsim 操作结构和流程

用到的命令一般都写到.do文件中&#xff0c;使用脚本语言进行批量处理。Step 1: Map librariesStep 2: Compile the designStep 3: Optimize the design (OPTIONAL)Step 4: Load the design into the simulatorStep 5: Run the simulationStep 6: Debug the design Note: Desig…...

vue和react有什么不同

vue上手难度低&#xff0c;不过react社区活跃度更多一些&#xff0c;一般数据比较多的大型项目会倾向于使用react。在react官网中&#xff0c;官方也建议我们使用React来构建快速响应的大型 Web 应用程序。vue2.0是面向对象编程&#xff08;{data: {}, methods: {}, created() …...

js求解《初级算法》28. 找出字符串中第一个匹配项的下标

一、题目描述 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 输入&#xff1a;haystack "sadb…...

VAE--part1

Variational Auto-Encoder, VAE__part1分布变换VAE慢谈VAE 初现分布标准化重参数技巧VAE的本质是什么&#xff1f;VAE的本质结构正态分布&#xff1f;变分在哪里参考博客仅做学习记录&#xff0c;侵删分布变换 VAE和GAN都是生成式模型&#xff0c;它们俩的目标基本一致&#x…...

备战四级!!!

目录 一、替换词 二、作文常见句型 &#xff08;1&#xff09;常见开头 &#xff08;2&#xff09;阐述观点 &#xff08;3&#xff09;结束语 &#xff08;4&#xff09;提出建议 &#xff08;5&#xff09;表示论证 &#xff08;6&#xff09;给出原因 &#xff08;…...

sizeof与strlen练习

前言 本篇仅仅是为了更加了解sizeof操作符和strlen函数练习. 对于多条sizeof操作符和strlen函数出现,可能很容易造成头脑不清晰,做题时容易混乱. 目录前言一维数组字符数组情况1:情况2情况3二维数组练习之前请牢记下面这段话.这将是头脑清晰地关键. 提示: sizeof(数组名)&#…...

知识图谱的介绍

知识图谱的由来 谷歌在2012年提出了知识图谱的概念&#xff0c;当时目的在于优化搜索引擎的返回结构&#xff0c;为用户提供更精确的结果。 知识图谱的定义 为了理解知识图谱&#xff0c;我们首先要明白信息与知识的概念。首先&#xff0c;信息表示的是外部的客观事实&#…...

【Redis】Redis高级客户端Lettuce详解

文章目录前提Lettuce简介连接Redis定制的连接URI语法基本使用API同步API异步API反应式API发布和订阅事务和批量命令执行Lua脚本执行高可用和分片普通主从模式哨兵模式集群模式动态命令和自定义命令高阶特性配置客户端资源使用连接池几个常见的渐进式删除例子在SpringBoot中使用…...

Qt——自定义界面之QStyle

1. Qt控件结构简介 首先我们要来讲讲GUI控件结构&#xff0c;这里以QComboBox为例&#xff1a; 一个完整的控件由一种或多种GUI元素构成&#xff1a; Complex Control Element。Primitive Element。Control Element。 1.1 Complex Control Element Complex control elements …...

指针和数组面试题(逐题分析,完善你可能遗漏的知识)

人生不是一种享乐&#xff0c;而是一桩十分沉重的工作。 —— 列夫托尔斯泰 前言&#xff1a;之前我们就学习了数组和指针的知识。 数组&#xff1a;数组就是能够存放一组相同类型的元素&#xff0c;数组的大小取决于数组的元素个数和元素类型。 指针&#xff1a;…...

centos7搭建nfs挂载日志目录完整步骤

NFS服务器配置 1.安装NFS服务 首先使用yum安装nfs服务&#xff1a; yum -y install rpcbind nfs-utils 2.创建共享目录 在服务器上创建共享目录&#xff0c;并设置权限。 mkdir /data/share/ chmod 755 -R /data/share/ 3.配置NFS nfs的配置文件是 /etc/exports &…...

三、JavaScript

目录 一、JavaScript和html代码的结合方式 二、javascript和java的区别 1、变量 2、运算 3、数组&#xff08;重点&#xff09; 4、函数 5、重载 6、隐形参数arguments 7、js中的自定义对象 三、js中的事件 四、DOM模型 五、正则表达式 一、JavaScript和html代码的结合方…...

深圳大学计软《面向对象的程序设计》实验11 多继承

A. 在职研究生&#xff08;多重继承&#xff09; 题目描述 1、建立如下的类继承结构&#xff1a; 1)定义一个人员类CPeople&#xff0c;其属性&#xff08;保护类型&#xff09;有&#xff1a;姓名、性别、年龄&#xff1b; 2)从CPeople类派生出学生类CStudent&#xff0c;…...

并发变成实战-原子变量与非阻塞同步机制

文章目录1.锁的劣势2.硬件对并发的支持2.1 比较并交换2.2 非阻塞的计数器3.原子变量类3.1 原子变量是一种“更好的volatile”3.2 性能比较&#xff1a;锁与原子变量4.非阻塞算法4.1 非阻塞的栈4.2 非阻塞的链表4.3 ABA问题非阻塞算法设计和实现上要复杂的多&#xff0c;但在可伸…...

sql数据库常用操作指令

一、操作库-- 创建库create database db1;-- 创建库是否存在&#xff0c;不存在则创建create database if not exists db1;-- 查看所有数据库show databases;-- 查看某个数据库的定义信息 show create database db1; -- 修改数据库字符信息alter database db1 character set ut…...

4-1 定时任务的示例10个

文章目录前言基本命令与格式示例前言 Linux crontab 是用来定期执行程序的命令。当安装完成操作系统之后&#xff0c;默认都已经安装&#xff0c;并启动此任务调度命令。 crond 命令每分钟会定期检查是否有要执行的工作&#xff0c;如果有要执行的工作便会自动执行该工作。 基…...

外贸建站多少钱才能达到预期效果?

外贸建站多少钱才能达到预期效果&#xff1f;这是每个外贸企业都会问的问题。作为一个做外贸建站多年的人&#xff0c;我有一些个人的操盘感想。 首先&#xff0c;我认为外贸建站的投资是非常必要的。 因为在现代社会&#xff0c;网站已经成为外贸企业开展业务的必要工具之一…...

【Java学习笔记】5.Java 基本数据类型

Java 基本数据类型 变量就是申请内存来存储值。也就是说&#xff0c;当创建变量的时候&#xff0c;需要在内存中申请空间。 内存管理系统根据变量的类型为变量分配存储空间&#xff0c;分配的空间只能用来储存该类型数据。 因此&#xff0c;通过定义不同类型的变量&#xf…...

InnoDB 死锁和问题排查

文章目录死锁&#xff08;dead lock&#xff09;示例 1问题排查查看连接的线程查看相关的表查看最近一次的死锁信息查看服务器的锁信息查看正在使用的表如何尽可能地避免死锁死锁&#xff08;dead lock&#xff09; 两个及以上的事务各自持有对方需要的锁&#xff0c;导致双方…...

tensorflow07——使用tf.keras搭建神经网络(Sequential顺序神经网络)——六步法——鸢尾花数据集分类

使用tf.keras搭建顺序神经网络 六步法——鸢尾花数据集分类 01 导入相关包 02 导入数据集&#xff0c;打乱顺序 03 建立Sequential模型 04 编译——确定优化器&#xff0c;损失函数&#xff0c;评测指标&#xff08;用哪一种准确率&#xff09; 05 训练模型——把各项参入填入…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...