Linux下VCS与Verdi联合仿真(Verilog与VHDL混仿)

1.介绍

本篇简单介绍一下如何通过VCS与Verdi实现混合仿真,在学习过程中也遇到了很多头疼的问题,因此通过一些例子简要总结一下,当然,也希望对各位小伙伴有所帮助。

很多公司ASIC设计所使用的还是更加专业的EDA软件,即Synopsys下的VCS、Verdi这种(Vivado大多针对于自家FPGA),VCS编译速度极快,仿真效率高,Verdi支持信号追溯、无缝增加信号波形等功能。

2.使用

环境:Linux。        学习之前要学习一些Linux的基本指令,比如:ls、pwd、cd、mkdir、cp、mv、touch...

写verilog/VHDL代码:VIM编辑器

编译:VCS

查看波形:Verdi       运行VCS编译生成的fsdb文件

开始之前可以把环境配置好,利用vcs -help查看是否配置成功

3.过程

我简单写了一个加法器,利用verilog和vhdl分别编写了它的模块设计,暂且命名为add.v和add.vhd,用verilog给他们写了testbench,可以分别实例化调用add.v或者add.vhd,记为add_tb.v。代码非常简单,就不放在下面了,我把它们一起放在了桌面下的一个目录文件里(顶层和设计文件必须放在一个目录)

1 先实现add.v和add_tb.v的verilog仿真(直接命令法):

首先,确保Verilog 测试平台文件 add_tb.v和加法器设计文件add.v在同一目录下。然后使用 VCS 编译这些文件:

vcs -full64 -sverilog add.v add_tb.v -o simv

这里 `-full64` 表示使用 64 位模式编译,`-sverilog` 表示启用 SystemVerilog 支持。`-o simv` 指定输出的仿真可执行文件名为 `simv`。

编译完成后,运行仿真

./simv

为了生成波形文件,需要在TB中添加代码来完成波形转储

initial begin
    $fsdbDumpfile("waveform.fsdb"); // 指定生成的波形文件名
    $fsdbDumpvars(0, add_tb);       // 转储当前模块及其子模块的所有信号
end

重新编译并运行仿真,以生成波形文件 `waveform.fsdb`。

使用 Verdi 查看波形:
VCS 通常与 Verdi 波形查看器配合使用。要使用 Verdi 查看波形,首先确保 Verdi 已经安装在Linux系统上。然后使用以下命令启动 Verdi 并加载波形文件:

verdi -ssf waveform.fsdb

这将打开 Verdi 并加载 `waveform.fsdb` 文件,就可以在 Verdi 的 GUI 中查看和分析波形了。

2.add.vhd和add_tb.v的混合仿真(三步命令法):

编写一个synopsys_sim.setup文件,代码如下:

--VCS MX setup file for ASIC
--Mapping default work directory
WORK > DEFAULT           
DEFAULT : ./work
--Library Mapping
STATS_PKG : ./stat_work
MEM_PKG : ./mem_work
--Simulation variables
TIMEBASE = ps
LBUFG:./lbufg

需要先将add.vhd文件编译成库,使用如下两条代码:

vhdlan -work lbufg add.vhd
vhdlcom -nc add.vhd

再编译add_tb.v

vlogan -work lbufg add_tb.v
vericom -nc add_tb.v

然后指定top_module,必须指定,不然识别不到top_module,就不能实例化add.vhd

vcs -top add_tb

就可以编译成功了,再利用./simv指令生成fsdb文件,最后通过verdi -ssf  waveform.fsdb就可以查看混仿的波形了。

4.可以通过编写makefile省略上述步骤:

详细可参考该网友的:https://blog.youkuaiyun.com/Bradji/article/details/117731430?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522C88AE6FA-72D9-49D9-AEA9-9730E87DCB98%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=C88AE6FA-72D9-49D9-AEA9-9730E87DCB98&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-117731430-null-null.142^v100^pc_search_result_base4&utm_term=vcs混仿vhdl%2Bverilg小白初学&spm=1018.2226.3001.4187

5.补:shell脚本,可直接编译

#!/bin/bash

# 设置VHDL和Verilog文件列表
vhdl_files="file1.vhd file2.vhd"
verilog_files="file1.v file2.v"


vcs_path = "/home/EDA/Synopsys/vcs-mx/amd64/bin/vcs"

# 创建work库(如果不存在)
vlib work

# 编译VHDL文件
echo "Compiling VHDL files..."
vhdlan -work work $vhdl_files
vhdlcom -work work $vhdl_files

# 编译Verilog文件
echo "Compiling Verilog files..."
vlogan -work work $verilog_files

# 链接仿真
echo "Linking simulation..."
vcs -full64 -sverilog -top TopLevel -o simv

# 运行仿真
echo "Running simulation..."
./simv

# 生成波形文件
echo "Generating waveform file..."
./simv +vcs+dumpvars+0+waveform.fsdb

# 使用 Verdi 查看波形
echo "Viewing waveforms with Verdi..."
verdi -ssf waveform.fsdb



放在linux的项目目录下,需要在tb里加生成波形的代码,直接运行shell即可生成.fsdb文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值