当前位置: 首页 > 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 训练模型——把各项参入填入…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...