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

news2024/11/30 14:29:43

文章目录

  • 一、文件导入
  • 二、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 reference
        reg                 uart_tx_nrst;//system reset signal
        reg  [31:0]    uart_baunds_div;//baunds rate division
        reg  [7:0]        uart_tx_data;//uart tx 8bits data input   
        reg          uart_tx_data_qvld;//send data valid signal
        wire            uart_tx_finish;//uart send data finish flag
        wire              uart_tx_busy;//uart tx module busy flag
        wire              uart_tx_dout;//serial data output

        initial begin
            uart_ref_clk = 0;
            forever begin
                #1 uart_ref_clk = ~uart_ref_clk;
            end
        end

        initial begin
               uart_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;
        end

        initial begin
            #1000;
            $finish;
        end

         initial  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.coloradmin.cn/o/1165737.html

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

相关文章

【考研数学】概率论与数理统计 —— 第八章 | 假设检验

文章目录 一、基本概念与原理1. 假设检验2. 两类错误3. 小概率原理与显著性水平 二、假设检验的基本步骤三、一个正态总体均值和方差的假设检验四、两个正态总体的假设检验写在最后 一、基本概念与原理 1. 假设检验 设总体分布已知,但含有未知参数,对总…

学PYTHON必须学算法吗?老程序员告诉你真相!

Python是一种非常流行的编程语言,广泛应用于数据科学、人工智能、Web开发、自动化、脚本编程等各种领域。对于很多Python开发工作,尤其是与应用开发、数据分析和Web开发相关的职位,算法并不是绝对必须的技能。 然而,在某些领域和职…

通过 Hilbert 变换实现单边带调制

目录 简介 双边带调制 单边带调制 理想的 Hilbert 变换 频谱移位器 SSB 调制的高效实现 总结 该例子说明如何使用离散 Hilbert 变换来实现单边带调制。Hilbert 变换可应用于调制器和解调器、语音处理、医学成像、波达方向 (DOA) 测量,以及任何简化设计的复信…

“Redis在分布式系统中的应用与优化“

文章目录 引言一、Redis的简介1. Redis的基本概念2. Redis在分布式系统中的优势 二、Windows、CentOS安装RedisCentOS安装RedisWindows安装Redis 三、Redis的常用命令总结 引言 在当今互联网时代,随着数据量的不断增长和用户访问量的激增,分布式系统的应…

将一个Series序列转化为数据框Dataframe格式Series.to_frame()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将一个Series序列 转化为Dataframe格式 Series.to_frame() [太阳]选择题 关于以下代码的说法中正确的是? import pandas as pd s pd.Series([1,2],name"myValue") print("【显…

【QT】如何理解Widget::Widget(QWidget *parent) :QWidget(parent)

‪qwidget.cpp所在路径&#xff1a;D:\Qt\Qt5.9.9\5.9.9\Src\qtbase\src\widgets\kernel\qwidget.cpp 本文重点&#xff1a;如何理解下面这段代码? 一、类的继承和派生 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>class Widget : public QWidget {…

【PID专题】控制算法PID之微分控制(D)的原理和示例代码

微分&#xff08;D&#xff09;项是PID控制器的一个组成部分&#xff0c;它对系统的控制输出做出反应&#xff0c;以减小系统的过度调节和减小响应的快速变化。微分项的作用是在控制系统中引入一个滞后效应&#xff0c;以帮助系统平稳响应。 以下是微分&#xff08;D&#xff0…

PP-OCRv4-server-det模型训练

PP-OCRv4-server-det项目地址https://aistudio.baidu.com/projectdetail/paddlex/6792800 1、数据校验 2、 模型训练 3、评估测试 4、模型部署

OpenCV实战——OpenCV.js介绍

OpenCV实战——OpenCV.js介绍 0. 前言1. OpenCV.js 简介2. 网页编写3. 调用 OpenCV.js 库4. 完整代码相关链接 0. 前言 本节介绍如何使用 JavaScript 通过 OpenCV 开发计算机视觉算法。在 OpenCV.js 之前&#xff0c;如果想要在 Web 上执行一些计算机视觉任务&#xff0c;必须…

Linux之sched_setscheduler调度策略总结(六十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

CMake:探究编译和编译命令

CMake:探究编译和编译命令 导言项目结构相关源码结果 导言 本篇通过展示如何使用来自对应的Check<LANG>SourceCompiles.cmake标准模块的check_<lang>_source_compiles函数&#xff0c;以评估给定编译器是否可以将预定义的代码编译成可执行文件。该命令可帮助确定:…

Idea 对容器中的 Java 程序断点远程调试

第一种&#xff1a;简单粗暴型 直接在java程序中添加log.info()&#xff0c;根据需要打印信息然后打包覆盖&#xff0c;根据日志查看相关信息 第二种&#xff1a;远程调试 在IDEA右上角点击编辑配置设置相关参数在Dockerfile中加入 "-jar", "-agentlib:jdwp…

数据库连接池大小的调整原则

配置连接池是开发人员经常犯的错误。配置池时需要理解几个原则&#xff08;对于某些人来说可能违反直觉&#xff09;。 想象一下&#xff0c;您有一个网站&#xff0c;虽然可能不是 Facebook 规模的&#xff0c;但仍然经常有 10,000 个用户同时发出数据库请求&#xff0c;每秒…

4.RDD编程指南

概述 spark 提供的重要的抽象是一个 弹性分布式数据集(RDD) &#xff0c;能被并行操作的&#xff0c;在集群上分区的集合元素。RDDs 可以通过 hadoop 文件(或共它的 hadoop 支持的文件系统)&#xff0c;或者编程中的 scala 集合&#xff0c;转换它创建 RDD。用户还可以要求 sp…

【Linux】:基础IO

基础IO 一.C语音文件操作1.fopen2.fwrite3.fopen以a方式打开 二.Linux下一切皆文件三.系统调用接口四.文件描述符-fd 共识原理&#xff1a; 1.文件属性内容。 2.文件分为打开文件和未打开文件。 3.打开的文件&#xff1a;进程打开。 4.未打开的文件&#xff1a;在磁盘里存放着。…

在Node.js中,什么是中间件(middleware)?它们的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

企业中台如何进行测试(下篇)

《企业中台如何进行测试》包含了主数据治理测试、统一认证测试、业务集成测试、门户建设测试、数据分析测试等内容。由于篇幅较长&#xff0c;将分为上、下两个篇章与大家分享&#xff0c;在上篇主要从主数据治理和统一认证两个方面对企业中台的测试内容进行介绍&#xff0c;下…

Visual Studio Code 常用快捷键大全

Visual Studio Code 常用快捷键大全 快捷键是编码过程中经常使用&#xff0c;且能够极大提升效率的部分&#xff0c;这里给大家介绍一些VS Code中非常有用的快捷键。 打开和关闭侧边栏 Mac — Command B Windows — Ctrl B Ubuntu — Ctrl B 选择单词 Mac — Command D …

洗衣洗鞋柜洗衣洗鞋小程序

支持&#xff1a;一键投递、上门取衣、自主送店、多种支付方式 TEL: 17638103951(同V) -----------------用户下单-------------- -------------------------多种支付和投递方式------------------------- -----------------商家取鞋--------------

基于冠状病毒群体免疫算法的无人机航迹规划-附代码

基于冠状病毒群体免疫算法的无人机航迹规划 文章目录 基于冠状病毒群体免疫算法的无人机航迹规划1.冠状病毒群体免疫搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用冠状病毒群体…