【Synopsys工具使用】VCS使用与Makefile脚本调用

文章目录

  • 一、文件导入
  • 二、VCS仿真(使用可视化界面)
  • 三、VCS仿真(使用Maefile文件)
    • 3.1 Makefile文件编写
    • 3.2 仿真文件编写规范
    • 3.3 Makefile文件使用


一、文件导入

  新建一个文件夹新建一个文件夹(图中IC_work)
在这里插入图片描述  创建一个目录,用来存放文件(图中test)
在这里插入图片描述  将要操作的文件复制到文件夹下:在这里插入图片描述  此时打开终端,输入命令ls可以查看文件是否存在。在这里插入图片描述

二、VCS仿真(使用可视化界面)

  输入下面指令,对设计文件进行编译:

vcs -full64 -sverilog -debug_all -timescale=1ns/ns uart_dtx.v uart_tb.v -l com.log

  输入后终端显示如下:
在这里插入图片描述  目标文件夹下会多出一些文件
在这里插入图片描述  输入以下指令,打开VCS可视化界面:

dve &

在这里插入图片描述  点击simulate -> set up
在这里插入图片描述
  选择simv文件,点击ok
在这里插入图片描述  右击文件,选择Add to Waves->creat new group
在这里插入图片描述  在dve终端输入run 1s表示总共跑1s
在这里插入图片描述  即可看到仿真波形;
在这里插入图片描述

三、VCS仿真(使用Maefile文件)

3.1 Makefile文件编写

c编写Makefile文件可以让上述过程变得更简单。
  输入gvim Makefile编辑Makefile文件,在其中写入以下内容。
  Makefile文件内容:

all:find com sim run_dve  find:find -name "*.v" > file.list
com:                                                                        vcs -full64 +vcs+vcdpluson -sverilog -debug_all -f file.list -l vcs.log
sim:./simv -l vcs.log  run_dve:                            dve -full64 -vpd vcdplus.vpd &  clean:                              rm -rf *.vpd csrc *.log *.key *.vpd simv* DVE*

find:
  执行 find -name “*.v” > file.list 指令,将目录下的所有.v文件名写入file.list文件中。
com:
  执行 vcs -full64 +vcs+vcdpluson -sverilog -debug_all -f file.list -l vcs.log 指令,对file.list列出的设计文件进行编译。其中+vcs+vcdpluson必须,可生成接下来的vcdplus.vpd文件。
sim:
  执行./simv -l vcs.log 命令,对设计文件进行仿真。
run_dve:
  执行dve -full64 -vpd vcdplus.vpd & 命令,启动可视化界面,并读入波形文件。


3.2 仿真文件编写规范

  使用Makefile进行仿真时,测试文件的编写需要满足一定的规范。
  示例的测试文件如下:

`timescale 1ns/10ps
module uart_tb (
);reg                 uart_ref_clk;//system clock referencereg                 uart_tx_nrst;//system reset signalreg  [31:0]    uart_baunds_div;//baunds rate divisionreg  [7:0]        uart_tx_data;//uart tx 8bits data input   reg          uart_tx_data_qvld;//send data valid signalwire            uart_tx_finish;//uart send data finish flagwire              uart_tx_busy;//uart tx module busy flagwire              uart_tx_dout;//serial data outputinitial beginuart_ref_clk = 0;forever begin#1 uart_ref_clk = ~uart_ref_clk;endendinitial beginuart_tx_nrst = 0;uart_baunds_div = 4;#2 uart_tx_nrst = 1;uart_tx_data = 8'h33;uart_tx_data_qvld = 1'b1;#2 uart_tx_data_qvld = 1'b0;endinitial begin#1000;$finish;endinitial  begin$vcdpluson;end uart_dtx uart_dtx_inist0(.       uart_ref_clk(       uart_ref_clk),//system clock reference.       uart_tx_nrst(       uart_tx_nrst),//system reset signal.   uart_baunds_div(  uart_baunds_div),//baunds rate division.      uart_tx_data(     uart_tx_data),//uart tx 8bits data input   . uart_tx_data_qvld(uart_tx_data_qvld),//send data valid signal.    uart_tx_finish(   uart_tx_finish),//uart send data finish flag.      uart_tx_busy(     uart_tx_busy),//uart tx module busy flag.      uart_tx_dout(     uart_tx_dout) //serial data output
);
endmodule 

  其中需注意,在第1行要添加`timescale 1ns/10ps仿真时间;
  第31-34行添加整个仿真结束命令&finish,当仿真文件执行到此处,则退出仿真。若缺少该语句,则Makefile会卡死在sim过程(vcs仿真过程)。也可以不使用KaTeX parse error: Expected 'EOF', got '&' at position 25: …须在命令中指出仿真结束时间。 &̲emsp; 第36-…vcdpluson来产生vpd文件。

3.3 Makefile文件使用

  使用Makefile文件来进行仿真,只需要打开终端,写入make all指令即可,输入命令后,终端显示如下说明仿真成功:
在这里插入图片描述  等待片刻后,会打开VCS可视化界面。
在这里插入图片描述  选中需要查看的信号,右击选择Add To Waves -> New Wave View即可观察波形。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

3.18每日一题(奇偶性、奇偶性的平移、几何意义、配方、换元)

解法一:先配方,再用三角函数换元(看见根号一般用三角函数),看见对称区间联想奇偶性,最后再用公式 解法二: 利用奇偶性的平移,令(x-1) t ,对应的区…

项目实战:给首页上库存名称添加超链接然后带fid跳转到edit页面

1、提取公共方法common.js function $(key){if(key){if(key.startsWith("#")){key key.substring(1)return document.getElementById(key)}else{let nodeList document.getElementsByName(key)return Array.from(nodeList)}} } 2、 给库存名称添加超链接 2.1、inde…

力扣刷题 day63:11-02

1.字符串中的第一个唯一字符 给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。 方法一:两次遍历哈希表 #方法一:两次遍历哈希表 def firstUniqChar(s):d{}for i in s:if …

数据库 | 看这一篇就够了!最全MySQL数据库知识框架!

大家好! 作为一名程序员,每天和各种各样的“数据库”打交道,已经成为我们的日常。当然,立志成为一名超级架构师的我,肯定要精通这项技能。咳咳!不过饭还是要一口一口吃的,“数据库”这个内容实在…

Linux Makefile变量详解

前言 我们是地球人。曾经为复杂的 Makefile 变量而苦恼过吗?这就是我们的用武之地。我们简化您的构建流程,以获得更快、更高效的结果。看看我们。 自 1976 年出现以来,Make 一直在帮助开发人员自动执行编译代码、构建可执行文件和生成文档的…

【Proteus仿真】【51单片机】贪吃蛇游戏

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用8*8LED点阵、按键模块等。 主要功能: 系统运行后,可操作4个按键控制小蛇方向。 二、软件设计 /* 作者:嗨小易…

Keil uv5 MDK使用教程

目录 前言一、开发环境搭建1.1 Keil的安装1.2 其他工具安装1.3 注意事项 二、Keil基本使用2.1 新建工程模板2.1.1 基于固件库(先复制文件夹,后添加文件)2.1.2 基于寄存器2.1.3 基于HAL库 2.2 下载与调试2.3 工程目录下简介2.4 MDK使用技巧 前…

JavaScript

文章目录 1、JavaScript 的历史1.1 JavaScript 的历史1.2 JavaScript与ECMAScript的关系1.3 JavaScript与Java的关系1.4 JavaScript的版本 2、JS的引入方式3、ECMAScript基本语法3.1 变量3.2 注释3.2 语句分隔符 4、ECMAScript 基本数据类型4.1 数字类型4.2 字符串4.2.1 创建4.…

【计算机网络】运输层

概述运输层服务 运输层协议为运行在不同主机上的应用程序提供了逻辑通信功能。 运输层协议是在端系统中而不是在路由器中实现的。 运输层和网络层的关系: 网络层提供主机之间的逻辑通信,而运输层为**运行在不同主机上的应用程序(进程&#…

python爬虫利用代理IP分析大数据

目录 前言 一、什么是代理IP? 二、为什么需要使用代理IP? 1.突破访问限制 2.提高访问速度 3.保护隐私 三、代理IP的分类 1.高匿代理IP 2.普通代理IP 3.透明代理IP 四、如何获取代理IP? 1.免费代理IP网站 2.付费代理IP服务商 五…

前端基础之CSS

目录 一、CSS介绍 CSS语法 CSS注释 CSS的几种引入方式 二、CSS选择器 基本选择器 组合选择器 属性选择器 分组和嵌套选择器 伪类选择器 伪元素选择器 选择器的优先级 三、CSS属性相关 宽和高 字体属性 文字属性 背景属性 边框 border-radius display属性 …

常见接口测试面试题

1、按你的理解,软件接口是什么? 答: 就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。 2、HTTP和HTTPS协议区别? 答: https协议需要到CA(Certificate Authority,证书…

物联网整体框架有哪些层面?

物联网是当前非常火热的话题,各个行业对物联网的关注和投入力度也很大,一些互联网巨头都在紧锣密鼓的布局物联网产业,抢占市场先机。 物联网的整体构架大致可以分为以下四个层面: 1.感知识别层 感知层是物联网整体架构的基础&…

HTML标题、段落、文本格式化

HTML标题&#xff1a; 在HTML文档中&#xff0c;标题是很重要的。标题是通过<h1> - <h6标签进行定义的&#xff0c;<h1> 定义最大的标题&#xff1b;<h6>定义最小的标题。 <hr> 标签在HTML页面中用于创建水平线&#xff0c;hr元素可用于分隔内容。…

【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包

一、Nginx导言 1、引言 Nginx 是一款高性能的 Web 服务器和反向代理服务器&#xff0c;也可以充当负载均衡器、HTTP 缓存和安全防护设备。它的特点是内存占用小、稳定性高、并发性强、易于扩展&#xff0c;因此在互联网领域得到了广泛的使用。 总结出以下三点: 负载均衡&#x…

CN考研真题知识点二轮归纳(4)

持续更新&#xff0c;上期目录&#xff1a; CN考研真题知识点二轮归纳&#xff08;4&#xff09;https://blog.csdn.net/jsl123x/article/details/134135134?spm1001.2014.3001.5501 1.既可以扩展网段又是二层的设备 网段一般指一个计算机网络中使用同一物理层设备&#xff…

小程序如何设置自动使用物流账号发货

小程序支持自动使用物流账号发货并生成运单号。商家需要与物流公司合作&#xff0c;获取物流账号&#xff0c;支持快递物流和同城外卖配送平台。具体方法请参考公众号之前发布的文章&#xff0c;例如可以搜索“快递账号”。 导入物流账号后&#xff0c;在小程序管理员后台->…

出海营销必看:如何避免邮件被识别为垃圾邮件

对于现在的商业环境来说&#xff0c;邮件通信已经成为企业与客户、合作伙伴以及员工之间沟通和交流的重要方式。然而&#xff0c;尽管企业发送的邮件通常都是正常的、合规的&#xff0c;有时候却会被系统错误地标记为营销邮件。这个情况给企业带来了很多困扰。 如果企业的邮件…

如何使用内网穿透远程访问Linux SVN服务?

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

使用vue3+vite+elctron构建小项目介绍Electron进程间通信

进程间通信 (IPC) 是在 Electron 中构建功能丰富的桌面应用程序的关键部分之一。 由于主进程和渲染器进程在 Electron 的进程模型具有不同的职责&#xff0c;因此 IPC 是执行许多常见任务的唯一方法&#xff0c;例如从 UI 调用原生 API 或从原生菜单触发 Web 内容的更改。 在 …