编写RTL代码

设计文件如下:
add.v

module adder(
input clk,
input wire [31:0] a,
input wire [31:0] b,
output reg [31:0] c
);always@(posedge clk)c<=a+b;endmodule

sub.v

module suber(
input wire clk,
input wire [31:0]  a,
input wire [31:0]  b,
output reg [31:0] c
);
always@(posedge clk)c<=a-b;
endmodule

顶层alu.v

module alu (
input wire clk,
input wire mode,
input wire [31:0] a,
input wire [31:0] b,
output reg [31:0] out
);wire [31:0] c1;
wire [31:0] c2;assign out=(mode==1)?c1:c2;             //mode==1,add,mode==0,subadder U1(
.clk(clk),
.a(a),
.b(b),
.c(c1)
);suber U2(
.clk(clk),
.a(a),
.b(b),
.c(c2)
);endmodule

testbench

module test;reg clk;
reg [31:0] a;
reg [31:0] b;
wire [31:0] out;
reg mode;
//
initial beginclk=0;forever begin#5 clk=~clk;end
end
//
always@(posedge clk)mode<=$random%2;always@(posedge clk)
begina<=$random%128+128;b<=$random%128+128;
endinitial
begin#1000$stop;
endalu U(.clk(clk),.mode(mode),.a(a),.b(b),.out(out));initial begin$fsdbDumpfile("./alu.fsdb");$fsdbDumpvars(0);
endendmodule

其中,代码块

initial begin$fsdbDumpfile("./alu.fsdb");$fsdbDumpvars(0);
end

是必须的,建议放在一个单独的initial块

VCS编译

首先生成filelist文件,该文件包含rtl设计的所有.v文件的路径,我们通过如下命令生成:

然后使用vcs编译

vcs -full64 -f filelist.f -timescale=1ns/1ns -sverilog -debug_access -kdb -lca -R -l ./output.log

vcs的一些常用参数列举如下表

上述指令中,-l ./output.log表示生成log文件的名字是output.log并保存在当前文件夹;-sverilog选项开启SystemVerilog支持;添加-kdb选项支持输出KDB格式的数据,用于与Verdi在交互模式交换数据,而KDB格式属于"Limited Customer Availability"特性,必须通过-lca选项开启-f filelist.f是从你的filelist下开始编译;vcs -full64一定要加,-full64这是版本号,不加很可能会报错;-timescale=1ns/1ps是编译的时间精度,也需要加上,并且和Testbench应该要保持一致。
编译成功后,会得到这两个文件

Verdi查看波形

输入如下命令:

verdi -sv -f -Uart_rtl.f -ssf alu.fsdb

该指令的意思就是同时打开filelist.f这个list里面的文件和仿真生成的波形fsdb文件。
打开后界面如下所示


此时还没有波形,我们选择G1,按g,会跳出下图所示的一个框,在这个界面里,我们可以选中我们要观察的信号,然后点击apply.

apply之后,会出现如下波形,在信号右侧区域右键,选择Radix,选择十进制,如下图所示:

最终波形如下图所示

VCS和Verdi联合仿真相关推荐

  1. Linux下VCS与Verdi联合仿真简易教程及例子示范

    VCS与Verdi联合仿真简易教程及例子示范 最近在公司实习,最近也恰好在学习Linux下的IC设计环境,涉及到了VCS与Verdi联合仿真等内容,也切身感觉到,和学校学习的内容是如此的不同,此篇便来 ...

  2. VCS+Verdi联合仿真教程

    最近由于在一家FPGA公司实习,公司的FPGA仿真和看波形工具是VCS+Verdi,由于这两样工具结合在一起有着极高的效率,也因此真切地感受到,与在学校仅仅使用vivado软件跑整个流程相比,真的是小 ...

  3. VCS+Verdi联合仿真demo教程

    公司仿真和看波形工具是VCS+Verdi,由于这两样工具结合在一起有着极高的效率,与在学校仅仅使用vivado软件跑整个流程相比,真的是小巫见大巫. 因此便在自己电脑的虚拟机中试着建立VCS+Verd ...

  4. 【EDA Tools】VCS Verdi 联合仿真总结

    1. VCS 介绍 VCS是编译型 Verilog 模拟器,它完全支持 OVI 标准的 Verilog HDL 语言.PLI 和 SDF.VCS 具有行业中较高的模拟性能,其出色的内存管理能力足以支持 ...

  5. VCS+dve+verdi仿真

    version2.0 一.VCS+dve: 1. 编写.v文件.以计数器为例. counter.v文件 counter_tb.v文件 2. 终端输入 vcs -full64 counter.v cou ...

  6. Linux下VCS和Verdi的联合仿真实例教程

    首先得在Linux下配置好VCS和Verdi的环境,这个方面我就不再这里赘述了,你可以在命令行输下which vcs和which verdi看有没有信息,有信息的话就说明已经安装. 要在Linux下用 ...

  7. verdi使用linux命令,vcs和verdi的调试及联合仿真案例

    环境配置 首先搭建好vcs和Verdi都能工作的环境,主要有license问题,环境变量的设置.在220实验室的服务器上所有软件的运行环境都是csh.所以,所写的脚本也都是csh的语法. 生成波形文件 ...

  8. FPGA学习之路—Vivado与Modelsim联合仿真

    Vivado与Modelsim联合仿真 笔者在学习FPGA过程中遇到了如何使用Vivado和Modelsim进行联合仿真的问题,特此记录. 首先确定版本 笔者Vivado用的是2018.3版本,先是随 ...

  9. Modelsim与debussy联合仿真

    Modelsim与debussy联合仿真 modelsim是很好的波形查看工具,而debussy查看代码就非常方便.两种工具相结合各取其长处,对fpga代码的编写和仿真就非常方便,极大提好效率. 步骤 ...

最新文章

  1. iOS学习之CoreLocation相关知识
  2. JLOI2016 方
  3. Spring boot的简单用法
  4. C# 图片处理之:彩色图片转为黑白图 .
  5. python web开发基础_python web开发基本概念
  6. 自动登录Windows系统
  7. php图片处理-补全图片链接,在链接前添加ip或其他路径-在正则匹配到的字符串前添加指定字符串
  8. 光标移动事件。 gridview光标移动变色
  9. 提高百度竞价广告质量度的5个关键方法
  10. 人生如游戏,容错性很关键
  11. 2015年国际数学奥林匹克(IMO)试题
  12. linux安装tomcat,菜鸟教程
  13. matlab解五元方程,哪位大侠帮忙解这个五元四次方程组
  14. 一些非常有趣的python爬虫例子
  15. chatgpt为什么在中国不能被使用
  16. 序贯蒙特卡洛的粒子简并性问题
  17. 区块链的奥卡姆剃刀在哪里?(1)
  18. 什么学习软件需要身份证验证_什么是两层身份验证,为什么我需要它?
  19. 【计算机视觉】NCC匹配算法
  20. 计算机桌面任务栏过宽怎么处理,电脑任务栏变宽怎么还原

热门文章

  1. A*算法详解(讲的一级棒 )
  2. 利用python进行体重指数计算
  3. 使用nat123进行内网穿透
  4. Zabbix 监控功能实现(监控数据库,使用percona 优化数据库的监控,监控java应用,Agent端 主动传输数据,Zabbix proxy 的使用,Zabbix 监控 + 智能降噪告警)
  5. Android Studio 快捷键大全
  6. 公务员考试——申论1
  7. 图示虚拟机virtualbox在Ubuntu下的安装使用
  8. python编程一球从100米_【Python3练习题 015】 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?...
  9. STM32CubeMX 实战教程:定时器中断实验(LL 库)
  10. Job And Schedule (V8R6C4)