VCS仿真分为两步式(编译/compilation+仿真/simulation)和三步式(分析/analysis+细化/elaboration+simulation/仿真);

注2:analysis/分析是三步式flow中仿真design的第一步,在此阶段将使用vhdlanvlogan分析VHDL、Verilog、SystemVerilog和OpenVera文件。下面的部分包括几个分析设计文件的示例命令行:

Analyzing your VHDL files:
vhdlan [vhdlan_options] file1.vhd file2.vhd

Analyzing your Verilog files:
vlogan [vlogan_options] file1.v file2.v

Analyzing your SystemVerilog files:
vlogan -sverilog [vlogan_options] file1.sv file2.sv file3.v

Analyzing your OpenVera files:
vlogan -ntb [vlogan_options] file1.vr file2.vr file3.v

Analyzing your SystemVerilog and OpenVera files:
vlogan -sverilog -ntb [vlogan_options] file1.sv file2.vr file3.v

注3:elaboration/细化是三步式flow中仿真design的第二步,在这个阶段,使用分析过程中生成的中间文件,VCS构建实例层次结构并生成一个二进制可执行的simv,该二进制可执行文件之后用于仿真。可选择优化模式或调试模式来细化design。

1.1.  编译

1.1.1. 关于编译

(1) 构建实例的层次结构,并且生成二进制可执行文件simv,该二进制可执行文件后续会用于仿真.

(2) 在编译阶段,可以选择optimized mode或debug_mode进行design的编译;

1.1.2. 编译命令

(1) vcs  [compile_options] verilog_files

(2) vcs -sverilog [compile_options] sverilog_files  (using sv with vcs)

(3) vcs -sverilog -ntb_opts uvm-1.2 [compile_options] user_source_files_using_UVM      (using uvm-1.2 with vcs, -ntb_opts uvm-1.2会load UVM-1.2)

(4) 显式指定UVM文件与参数: vcs -sverilog +incdir+${UVM_HOME}/src   ${UVM_HOME}/src/uvm_pkg.sv  ${UVM_HOME}/src/dpi/uvm_dpi.cc    -CFLAGS -DVCS [compile_options]user_source_files_using_UVM

(5) 使用需要通过UVM register backdoor机制访问HDL寄存器的test: vcs -sverilog -debug_pp -ntb_opts uvm [compile_options] user_source_files_using_UVM  (-debug_pp可能会影响仿真性能,需要使用+vcs+learn+pli提高HDL访问性能)

1.1.3. 常用的编译option

注1: -h or -help列出最常用的VCS编译和运行时选项的描述;

注2: -ID返回有用的信息,如VCS版本和构建日期,VCS编译器版本,以及工作站名称、平台和主机ID;

(1) -v filename:可以指定一个verilog库文件,vcs会在该文件中查找module或UDP实例的定义;

(2) -y directory:可以指定verilog库文件路径;

(3) +incdir+directory+:指定路径,vcs会在这些路径下搜索`include语句中的文件;

(4) +libext+extension+:指定vcs在指定路径下搜索哪些扩展名的文件;

(5) -full64:使能64-bit模式下的编译与仿真;

(6) -file filename:指定包含一系列文件与编译时间选项的文件;

(7) -gui:当在编译时使用gui模式,仿真时会启动DVE(Discovery Visualization Environment);

(8) -R:在编译完成后,立刻开始仿真;

(9) -l filename:指定vcs记录编译信息的文件;如果同时使用-R option,vcs会将编译信息和仿真信息均记录到该文件内;

(10) +define+macro=value+:其中=value参数是可选的,可以通过在verilog代码中使用`ifdef来测试该define;

(11) -debug, -debug_all, -debug_access(+<option>)

(12) -o:可以指定编译生成的二进制可执行文件的名字;

(13) +mindelays:门级仿真时使用,表示器件延时使用sdf 文件中的最小值(sdf 文件中的时序(min:typ:max));

(14) +maxdelays:门级仿真时使用,表示器件延时使用sdf 文件中的最大值(sdf 文件中的时序(min:typ:max));

(15) –sverilog:支持systemverilog 语法(vcs 用,verid 用-sv);

(16) +v2k:支持verilog 2001 特性;

(17) -lca:Limited Customer Availability,支持动态数据类型associative Array,dynamic Array,smart Queue,string,
event,class;

(18) –debug_all:支持所有debug 操作,DVE 选项,可以查看所有断点(line,time,value,event etc) all 就是加权限。+w 是写,+r 是读,+f 是force, +l 是支持ucli 的单步调试, +n 是对网表操作。具体可以看手册。+all 就是把所有的权限全开;

(19) –debug_acess+all:在VCS 编译的时候不用再加-p novas.tab pli.a 来定verdi 的路径。

(20) +ntb_random_seed=value:指定仿真随机种子;

(21) +ntb_random_seed_automatic:VCS 自动生成随机种子;

(22) -timescale=1ns/10ps:命令行定义仿真时间刻度,若rtl 中有timescale 的定义,则会覆盖makefile 中的定义;

(23) +neg_tchk:门级仿真时使用,表示当进行negative timing check时必须包含该option,否则vcs会把所有负值变为0,这会使得timing check很悲观.

(24)+nospecify/+notimingcheck:门级仿真时使用,表示忽略path delay和specify延时;

(25) -negdelay:门级仿真时使用,表示使能SDF文件中的所有的负值,但是要保证setup和hold(rec和rem)的和为正值,否则vcs会忽略负值同时给出warning.

1.2.  仿真 

1.2.1. 关于仿真

(1) 在编译阶段,vcs会生成二进制可执行文件.simv;可以使用simv进行仿真;

(2) 根据怎么编译design,仿真可以有两种模式: interactive模式(编译采用debug模式,也称为interactive模式)与batch模式;

(3) Interactive mode在初始阶段以交互模式(调试模式)编译design。在这个阶段,可以使用GUI或通过命令行调试design问题。通过GUI进行调试可以使用Verdi,通过命令行进行调试可以使用UCLI (Unified command line interface);

(4) batch mode: 当大多数design问题解决后,可以使用批处理模式(优化模式)编译design。在这个阶段,可以以最小的debug性能来换取更好的性能来运行回归

1.2.2. 仿真命令

(1) simv [run_options]

(2) uvm仿真命令: simv +UVM_TESTNAME=your_uvm_test  [sim_options]

1.2.3. 常用的仿真option

1.2.4. interactive模式下仿真

(1) 必须使用DVE或者UCLI;

(2) DVE的优点:

(2.1) DVE提供GUI接口,便于debug,使用时需要保证VCS与DVE版本相同;

(2.2) DVE便于观察波形,比较波形,观察原理图;

(2.3) 执行ucli/tcl命令;

(2.4) 设置断点;

(3) DVE工作在interactive模式下的仿真命令

(3.1) simv -gui

(4) DVE工作在post-processing模式下的仿真命令

(4.1) dve -vpd [VPD/EVCD_filename]

(5) UCLI简介

(5.1) ucli命令基于tcl;

(5.2) 通过使用ucli命令,可以控制仿真, dump VPD文件,保存或重现仿真状态, force/release信号;

(5.3) 使用断点;

(6) 启动ucli

(6.1) simv [simv_options] -ucli

1.2.5. batch模式下仿真

1.3.  dump波形

1.3.1 使能波形dump

无论采用系统函数或ucli dump波形,都必须采用如下option中的一个进行波形dump的使能;

(1) -debug_access

(2) -fsdb

(3) -P $VERDI_LIB/novas.tab $VERDI_LIB/pli.a

1.3.2 采用系统函数进行波形dump

(1) code内部调用系统函数,如下所示;

注1:dump波形时,避免在module内的两个线程内都调用$fsdbDumpfile函数;因为第一次调用该函数时,会产生一个后缀为.fsdb的文件,当第二次调用该函数时,会报如下warning:"FSDB WARNING: The FSDB file already exists. Overwriting the FSDB file may crash the programs that are using this file.",这种情况下,只有第一次调用生效;

(2) 编译命令如下所示;

(3) 仿真命令如下所示;

simv

1.3.3 采用ucli dump波形

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/91103.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/91103.shtml
英文地址,请注明出处:http://en.pswp.cn/web/91103.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序代码篇---python向http界面发送数据

在 Python 中向 HTTP 界面发送数据&#xff0c;本质上是模拟用户在网页上填写表单、点击提交按钮的过程。这在自动化测试、数据上报、接口调用等场景中非常常用。下面用通俗易懂的方式介绍具体方法、实例代码和解析。核心原理网页上的数据发送&#xff08;比如提交表单&#xf…

mybatis-plus由mysql改成达梦数据库

前置条件: 达梦数据库设置了大小写敏感,我比较菜,改不动!先这么凑合着用吧; 因为设置了大小写敏感,所以所有的sql语句都要加 引号; 这样是会报错的: SELECT remark,createDept,createBy,createTime,updateBy,updateTime FROM sys_oss_config这样才可以 SELECT "create_…

设计模式:外观模式 Facade

目录前言问题解决方案结构代码前言 外观是一种结构型设计模式&#xff0c;能为程序库、框架或其他复杂类提供一个简单的接口。 问题 假设你必须在代码中使用某个复杂的库或框架中的众多对象。正常情况下&#xff0c; 你需要负责所有对象的初始化工作、 管理其依赖关系并按正确…

【数据结构初阶】--二叉树(四)

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

三、平面度检测-差值法

方法一: dev_get_window (WindowHandle) *读取3通道彩色融合图 read_image (Image, ./XYZ彩色融合图.tiff) *拆分3个通道 decompose3 (Image, x, y, z) *将3个通道图像转换为3D模型 xyz_to_object_model_3d (x,y, z, ObjectModel3D) *显示动态3D模型 threshold (z, Regions,…

什么是数据编排?数据编排的流程、优势、挑战及工具有哪些?

目录 一、数据编排的定义与概念 1.数据编排的基本含义 2.数据编排与相关概念的区别 3.数据编排的重要性 二、数据编排的流程 1.需求分析&#xff1a; 2.数据源识别与连接&#xff1a; 3.数据抽取&#xff1a; 4.数据转换&#xff1a; 5.数据加载&#xff1a; 6.监控…

【C++算法】82.BFS解决FloodFill算法_被围绕的区域

文章目录题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;题目链接&#xff1a; 130. 被围绕的区域 题目描述&#xff1a; 解法 BFS一层层剥开。 C 算法代码&#xff1a; class Solution {// 定义四个方向的偏移量&#xff1a;右、左、下、上int dx[4] …

商汤发布具身智能平台,让机器人像人一样和现实世界交互

7月27日&#xff0c;在“大爱无疆模塑未来”WAIC 2025大模型论坛上&#xff0c;商汤科技重磅发布「悟能」具身智能平台。「悟能」具身智能平台以商汤具身世界模型为核心引擎&#xff0c;依托商汤大装置提供端侧和云侧算力支持&#xff0c;能够为机器人、智能设备提供强大的感知…

MCP工作原理

在谈MCP原理前&#xff0c;我们先谈谈MCP的技术前身—Function Calling。1.Function Calling技术在FunctionCalling技术出现之前&#xff0c;大语言模型虽然拥有强大的知识储备和语言理解能力&#xff0c;但是只能提供自身数据库已有的信息&#xff0c;无法和外界进行信息交互。…

VSCode手动版本更新

技术背景 使用VSCode的的过程中&#xff0c;如果打开了自动更新功能&#xff0c;每隔一段时间就会有更新提示。为了保持版本的稳定性&#xff0c;我们可以在设置中将Update: Mode设置为none&#xff0c;这样就不会触发自动更新。但有时又有版本更新的需求&#xff0c;可能是版本…

医疗超声成像专用AFE模拟前端

医疗超声成像作为一种广泛应用于临床诊断的重要技术&#xff0c;对于提供清晰、准确的医学图像起着关键作用。在超声成像系统中&#xff0c;AFE模拟前端扮演着至关重要的角色。它负责对超声换能器接收到的微弱电信号进行处理和转换&#xff0c;为后续的数字信号处理提供高质量的…

机器学习之线性回归——小白教学

一、线性回归简介1.什么是线性回归线性回归(Linear regression)是利⽤回归⽅程(函数)对⼀个或多个⾃变量(特征值)和因变量(⽬标值)之间关系进⾏建模的⼀种分析⽅式。特点&#xff1a;只有⼀个⾃变量的情况称为单变量回归&#xff0c;多于⼀个⾃变量情况的叫做多元回归线性回…

.NET 10 中的新增功能系列文章1——运行时中的新增功能

引言 随着 .NET 10 预览版6的发布&#xff0c;微软在运行时层面带来了一系列重要的性能改进和新功能。这些改进主要集中在JIT编译器优化、硬件指令集支持、内存管理等方面&#xff0c;旨在进一步提升应用程序的执行效率和资源利用率。本文将详细解析这些运行时增强功能&#x…

安宝特方案丨AI算法能力开放平台:适用于人工装配质检、点检、实操培训

当前工业AI图形识别算法的应用存在投入成本高、维护更新难、依赖固定相机、应用范围窄、与实际作业脱节等问题。 针对以上情况&#xff0c;安宝特提出了“AI算法能力开放平台”&#xff0c;目的是让AI图形识别算法可以与现场实际的人工点检作业、装配作业、质检作业、培训作业…

水下目标识别准确率↑89%!陌讯多模态融合算法在智慧水务的落地实践

一、行业痛点&#xff1a;智慧水务的检测困境据《2024城市水务智能化白皮书》统计&#xff0c;传统水务检测面临三大挑战&#xff1a;​​水体干扰​​&#xff1a;浑浊度>100NTU时&#xff0c;目标漏检率高达65%​​动态环境​​&#xff1a;水流扰动导致目标形变&#xff…

手动开发一个串口调试工具(三):基于 Qt Widgets 搭建串口调试界面

在上一篇中&#xff0c;我们通过 QCoreApplication 构建了一个基础的串口收发控制台程序&#xff0c;并实现了周期发送、十六进制转换和数据读取等核心功能。本篇将基于此逻辑&#xff0c;进一步将其封装为一个图形化界面程序&#xff0c;借助 Qt Widgets 提供的控件搭建完整的…

量子计算革命:重新定义计算的边界与未来

引言&#xff1a;我们正站在计算革命的新起点 当IBM在2019年宣布实现"量子霸权"时&#xff0c;很多人认为这只是实验室里的科学突破。然而&#xff0c;短短几年后&#xff0c;量子计算已经从理论走向实践&#xff0c;从实验室走向产业应用。我们正站在一个全新的计算…

Python 数据可视化之 Matplotlib 库

在当今数据驱动的时代&#xff0c;数据可视化&#xff08;Data Visualization&#xff09;已成为数据科学、机器学习、金融分析、工程建模等多个领域中不可或缺的一环。数据可视化不仅帮助我们更直观地理解数据的分布和趋势&#xff0c;还能辅助决策、展示研究成果以及增强数据…

Makefile 快速入门指南

Makefile 快速入门指南 什么是Makefile? Makefile 是一个自动化构建工具的配置文件&#xff0c;用于管理代码编译、测试和清理等任务。它通过定义规则&#xff08;rules&#xff09;来指定文件之间的依赖关系&#xff0c;当源文件改变时&#xff0c;只重新编译受影响的部分&…

Linux学习--C语言(指针4、结构体)

1.二维数组的传参int a[2][3] {1, 2, 3, 4, 5, 6};fun(a,2); int fun(int (*p)[3], int len);2.指针数组的传参char *pastr[5] {NULL};int fun(char **pstr,int len);例子&#xff1a;#include <stdio.h> #include <string.h>int InputArray(char (*p)[32], int …