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

2023-11-03 05:52

本文主要是介绍【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即可观察波形。
在这里插入图片描述
在这里插入图片描述

这篇关于【Synopsys工具使用】VCS使用与Makefile脚本调用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336044

相关文章

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

Springboot如何正确使用AOP问题

《Springboot如何正确使用AOP问题》:本文主要介绍Springboot如何正确使用AOP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录​一、AOP概念二、切点表达式​execution表达式案例三、AOP通知四、springboot中使用AOP导出

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到