Synopsys软件基本使用方法

devtools/2025/1/6 11:11:25/

Synopsys软件基本使用方法

  • 1 文件说明
  • 2 编译流程
  • 3 查看波形
  • 4 联合仿真

本文主要介绍Synopsys软件vcs、verdi的基本使用方法,相关文件可从 GitHub下载。

1 文件说明

  • 创建verilog源文件add.v、mult.v、top.v
    module add (input  signed [31:0]	dina,input  signed [31:0]	dinb,output signed [31:0]	dout
    );assign dout = dina + dinb;endmodule
    
    module mult (input  signed [31:0]	dina,input  signed [31:0]	dinb,output signed [31:0]	dout
    );assign dout = dina * dinb;endmodule
    
    module top (input                clk,input                rstn,input  signed [31:0] dina,input  signed [31:0] dinb,output signed [31:0] dout
    );wire signed [31:0] add_dout;
    wire signed [31:0] mult_dout;add add_i(.dina(dina),.dinb(dinb),.dout(add_dout)
    );mult mult_i(.dina(dina),.dinb(dinb),.dout(mult_dout)
    );reg signed [31:0] add_inv;
    reg signed [31:0] mult_inv;
    always @(posedge clk) beginif (!rstn) beginadd_inv <= 0;mult_inv <= 0;endelse beginadd_inv <= -add_dout;mult_inv <= -mult_dout;end
    endassign dout = add_inv + mult_inv;endmodule
    
  • 创建仿真文件tb.v
    `timescale 1ns/1nsmodule tb;
    reg                clk;
    reg                rstn;
    reg  signed [31:0] dina;
    reg  signed [31:0] dinb;
    wire signed [31:0] dout;initial begin#0 begin clk = 1; rstn = 0; end#4 begin rstn = 1; end
    end
    always #2 clk = !clk;initial begin#0 begin dina <= 3; dinb <= 4; end#4 begin dina <= -5; dinb <= 16; end#8;$finish;
    endtop top_i(.clk (clk),.rstn(rstn),.dina(dina),.dinb(dinb),.dout(dout)
    );initial begin// 指定文件名称和限制文件大小(单位MB)$fsdbDumpfile("./rtl.fsdb", 32);// 导出的信号// $fsdbDumpvars; //所有信号$fsdbDumpvars(0, top_i); //top_i下的所有信号,包括子模块的信号// $fsdbDumpvars(1, top_i); //top_i下的所有信号,不包括子模块的信号// $fsdbDumpvars(2, top_i); //top_i和下一层子模块add_i和mult_i下的所有信号
    endendmodule
    
  • 创建文件流表file.list
    tb.v
    top.v
    add.v
    mult.v
    
  • 创建编译脚本Makefile
    .PHONY:vcs sim verdi cleanvcs:vcs -full64 -sverilog -debug_access+all -f file.list -timescale=1ns/1ns \-kdb -lca -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed
    # -full64:64位的系统需要添加
    # -sverilog:识别systemverilog的语法
    # -debug_access+all:生成debug所需文件
    # -f file.list:将file.list中所有.v文件进行编译
    # -timescale=1ns/1ns:设置仿真精度
    # -kdb:生成KDB文件,仿真时生成verdi的库文件simv.daidir
    # -lca:支持动态数据类型
    # -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed:指定编译选项
    sim:./simv -verdi
    # -l run.log:记录终端打印信息
    # -verdi:打开verdi进行动态调试
    # +fsdb+functions:抓取function和task内部信号
    verdi:verdi -ssf rtl.fsdb
    # -ssf rtl.fsdb:打开波形文件
    clean:rm -rf csrc simv* *.lib *.lib++ nLint* verdi_config_filerm -rf *.log *.vpd *.fsdb* *.key *log rtl.fsdb*
    

2 编译流程

  • 执行make vcs对verilog源文件进行编译,编译成功会生成simv文件
  • 执行make sim进行仿真,仿真成功会生成rtl.fsdb文件
  • 执行make verdi打开波形文件

3 查看波形

打开后的verdi界面如下图所示
在这里插入图片描述
将Instance栏中的top_i拖动到下面的波形界面添加波形信号,通过工具栏上的工具可进行缩放、移动操作,右键选择操作信号,在Set Radix可更改信号的数据显示格式,通过Set Notation可改变是否为符号数,通过Highlight可改变波形颜色。波形界面可拉出verdi界面单独显示,以此显示更多信号。
在这里插入图片描述
直接通过添加信号无法显示模块中的中间变量,如add_inv和mult_inv,点击菜单栏的Signal→Get Signals,选中这两个信号,点击Apply可添加到窗口中。
在这里插入图片描述
在这里插入图片描述
点击菜单栏的File→Save Signal可保存波形配置为.rc文件,关闭波形窗口后可通过工具栏重新打开一个新的窗口,点击File→Restore Signal重新加载.rc文件打开保存的配置。

4 联合仿真

如果在执行sim的参数中添加了-verdi,可进行vcs和verdi的联合调试,在完成仿真后会打开verdi窗口,可进行上述操作打开窗口并添加信号,点击工具栏的绿色箭头可开始动态仿真,再次点击绿色箭头会重置。此外,工具栏多了很多工具,可进行逐步调试。
在这里插入图片描述


http://www.ppmy.cn/devtools/147916.html

相关文章

期权懂|期权交易中如何避免情绪化交易?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 期权交易中如何避免情绪化交易&#xff1f; 一、制定明确的交易计划 在进入市场之前&#xff0c;投资者应制定详细的交易计划&#xff0c;包括交易目标、预期收益、可接受的风…

从零开始自搭SpringBoot项目 -- Qingluopay项目工程介绍

从零开始自搭项目 – QingLuoPay 一&#xff0c;为什么要从零开始自搭项目 首先在介绍这个项目之前先介绍一下我为什么要选择从零自搭项目&#xff0c;而不是跟着网上哪些视频等做项目。 之前的很长一段时间我也都是在网上找一些做项目的视频就包含黑马的&#xff08;神领物…

如何实现el-select多选下拉框中嵌套复选框并加校验不为空功能呢?

如何实现el-select多选下拉框中嵌套复选框并加校验不为空功能呢&#xff1f; 要实现的效果图选择部分品牌但不选选项效果问题概述实现方案el-select组件与el-checkbox组件无缝衔接给form表单加自定义校验规则 要实现的效果图 选择部分品牌但不选选项效果 问题概述 相信大家看到…

xilinx的高速接口构成原理和连接结构及ibert工具的使用-以k7 GTX为例

一、相关简介 Xilinx的高速接口称之为transceivers(高速收发器&#xff09;&#xff0c;这部分的电路是专用电路&#xff0c;供电等都是独立的&#xff0c;根据速率可以分为GTP/GTX/GTH/GTY/GTM等。 Xilinx的高速接口是QUAD为单位的&#xff0c;没一个QUAD由一个时钟COMMON资…

可由 (5V) 单片机直接驱动的模块

可由 &#xff08;5V&#xff09; 单片机 直接驱动的模块 1. 传感器类 元器件描述温度传感器DS18B20&#xff08;数字温度传感器&#xff09;光强传感器光敏电阻&#xff08;通过 ADC 读取&#xff09;红外传感器红外接收模块&#xff08;如 VS1838&#xff09;超声波传感器HC…

家政预约小程序05活动管理

目录 1 搭建活动管理页面2 搭建活动规则页面3 搭建规则新增页面3 配置规则跳转4 搭建活动参与记录总结 上一篇我们介绍了活动管理的表结构设计&#xff0c;本篇我们介绍一下后台功能。 1 搭建活动管理页面 我们一共搭建了三个表&#xff0c;先搭建主表的后台功能。打开我们的后…

uni-data-select文字过长显示省略号问题修复

操作步骤&#xff1a; 下拉框选项文字超过25字符但是未满一行时会出现省略号 预期结果&#xff1a; 满一行再出现省略号而非25字符 实际结果&#xff1a; 满25字符就出现省略号 bug描述&#xff1a; 组件uni-data-select.vue显示修复过此bug <view v-if"current&…

前端笔记:vscode Vue nodejs npm

1 VS Code 终端中默认cmd 默认使用 cmd (Command Prompt), 不使用 PowerShell 解决方式&#xff1a; 【vscode配置】&#xff1a;vscode配置终端为cmd ​ 1 命令面板&#xff08;Ctrlshiftp&#xff09; ​ 2 输入 Terminal:Select Default Profile 之后回车 ​ 3 选择 c…