精华内容
下载资源
问答
  • https://blog.csdn.net/howard789/article/details/116928636 博客
  • makefile调用VCSverdi

    千次阅读 2020-02-12 22:18:51
    学习更多相关知识,... 继上次使用VCS基础操作和makefile的书写,如果我们最后不使用vcs而是使用verdi该如何调用呢?和上次一样,我们同样要把我们的.v文件和tb文件的路径放到file_list.f中(上次是file.list)之...

    学习更多相关知识,关注博主知乎账号,用户名Trustintruth   https://www.zhihu.com/people/suo-yi-xin-90/activities

    继上次使用VCS基础操作和makefile的书写,如果我们最后不使用vcs而是使用verdi该如何调用呢?和上次一样,我们同样要把我们的.v文件和tb文件的路径放到file_list.f中(上次是file.list)之后写makefile,制作好以后就可以使用make语句完成。

    makefile如下

    .PHONY: com sim cov clean debug
    
    OUTPUT = simv
    ALL_DEFINE = +define+DUMP_VPD
    
    # Code coverage command
    CM = -cm line+cond+fsm+branch+tgl
    CM_NAME = -cm_name $(OUTPUT)
    CN_DIR = -cm_dir ./$(OUTPUT).vdb
    
    # vpd file name
    VPD_NAME = +vpdfile+$(OUTPUT).vpd
    
    #Compile command
    #VCS = vcs +v2k -timescale=1ns/1ns
    VCS = vcs +v2k -override_timescale=1ns/100ps					\
    		-full64													\
    		-fsdb													\
    		-debug_all												\
    		-sverilog												\
    		+nospecify												\
    		+vcs+flush+all											\
    		$(CM)													\
    		$(CM_NAME)												\
    		$(CM_DIR)												\
    		$(ALL_DEFINE)											\
    		$(VPD_NAME)												\
    		-o $(OUTPUT)											\
    		-l compile.log
    
    #simulation command
    SIM = ./$(OUTPUT)												\
    	  +ntb_ramdom_seend_automatic								\
    	  $(CM) $(CM_NAME) $(CM_DIR)								\
    	  $(VPD_NAME)												\
    	  $(ALL_DEFINE)												\
    	  -l $(OUTPUT).log
    
    # start compile 
    com:
    	$(VCS) -f file_list.f
    
    #Start simulation
    sim:
    	$(SIM) 
    
    #show the coverage
    cov:
    	dve -covdir *vdb &
    
    debug:
    	dve -vpd  $(OUTPUT).vpd &
    
    #start clean
    clean:
    	rm -rf ./csrc *.daidir ./csrc  						\
    		*.log  *.vpd  *.vdb  simv* *.key				\
    		+race.out* novas* verdi* *fsdb apb2apb_async
    
    
    

     

    保存好之后,首先make com

    之后 make sim

     

     

    之后ls一下,发现路径下出现一个.fsdb文件(我在makefile中是glitch_free_tb.fsdb,如果需要可以在makefile中更改文件名即可)输入指令

    verdi -f file_list.f -ss glitch_free_tb.fsdb

    在操作时我更改了file.list,按照文中的makefile制作的在此处按照上面的指令,不要按图里的

    之后进入界面

    点击最小化进入界面进行操作

    如果需要删除中间文件 输入make clean

    展开全文
  • way1: all:clean elab ... vcs -kdb -lca -full64 -debug_access+all -top top_tb elab.log run: ./simv -gui -run_log verdi: verdi -ssf top_tb.fsdb -elab simv.daidir/kdb.elab++ & clean: rm

    verilog编译方法
    way1:

    all:clean elab
    comp:
    	vlogan -kdb -sverilog -full64 -l comp.log -f filelist.f
    elab:
    	vcs -kdb -lca -full64 -debug_access+all -top top_tb elab.log
    run:
    	./simv 
    展开全文
  • vcsverdi联合仿真(初学者可以用来熟悉脚本写法),有一些脚本教程
  • uvm+vcs+verdi基本平台搭建,也许平台不是很难,但是网上没有 UVM 在 VCS 中的详细教程,但是对于初学者就是一道屏障,我探索了几天,下文将一步一步的举例子说明 UVM+VCS+Verdi 的 liunx 平台搭建过程
  • 注:主要侧重于VCS仿真时的Makefile入门介绍。 一、快速入门 Makefile带来的好处就是自动化编译和仿真,只需要一个 make 命令。make是Linux下的二进制程序,在shell命令行键入make命令时,将自动寻找名称为...


    注:主要侧重于Makefile调用VCS和Verdi联合仿真。


    一、快速入门

      Makefile带来的好处就是自动化编译和仿真,只需要一个 make 命令。make是Linux下的二进制程序,在shell命令行键入make命令时,将自动寻找名称为“Makefile”的文件作为编译文件。

    • 格式:make [option] [target] …

    二、Makefile的语法

    1.语法格式

    形式一:
    target : prerequisites
    		command
    形式二:
    target : prerequisites;command
    		command
    

    其中:

    • prerequisites是目标所依赖的文件
    • command是命令行。命令行如果与prerequisites不在一行,那么命令行必须以Tab键开头。如果命令过长,可以使用反斜杠“\”作为换行符。

    例如:

    clean: 
    		rm -f  tb.sv
    

    2.命令执行

    (1)make会按顺序一条一条的执行命令。每条命令必须以Tab键开头。

    (2)而当一个target下有多条命令时,就会有两种可能:

    • 当希望后一条命令是接在上一条命令执行之后,再执行。此时需要用分号 ; 连接两个命令,这与管道 | 类似。
    • 当希望两条指令并行执行,直接换行即可。

    例如,下面两次pwd时显示的文件路径是否相同?

    exe1:
    	cd /home/verifier/
    	pwd
    
    exe2:
    	cd /home/verifer/; pwd
    
    // exe1中pwd显示的为 根目录 ~
    // exe1中pwd显示的为 /home/verifer/
    

    (3)如果命令执行到当期行,发现命令出错了(如cd命令时不存在目标目录)。假如我们不希望整个make动作因为命令错误而停止,可以再命令行TAB键之后加一个减号“-”,表示不管命令是否出错,都认为是成功的。例如下面:

    exe2:
    	- cd /home/verifer/; pwd
    

    3.变量

    Makefile中变量的使用:

    • 变量的命名是可以包含字符、数字、下划线,在变量声明时需要赋初值;
    • 在使用变量时,可以使用 $ ( 变量 )$ {变量} 的方式。如果真的需要使用 "$"符号时,可以使用 $ $的方式。
    • 操作符“:=”表示,只能使用前面定义好的变量,不能使用后面的变量。
    • 操作符“?=”表示如果变量没有被定义过,那么变量的值是操作符右边的。如SEED ?= 300。

    例如:

    PATH = ~/project/vip/
    sim :
    	cd ${PATH}
    

    三、VCS仿真

      VCS仿真分为两个步骤:编译 + 仿真。VCS在编译 Verilog 文件后,默认会产生一个名为 simv 的二进制可执行文件,然后执行这个simv文件就可以进行仿真。如下例子:

    [verifier]$ vcs +v2k top_tb.v -debug_all
    ...
    [verifier]$ ./simv -gui &  
    

    解释上面两行指令:

    1. 用VCS编译 top_tb.v 的 Verilog 文件,+v2k 是支持 Verilog 2001 语法,-debug_all 选项是为了 debug 程序。
    2. 编译后会产生一个可执行simv文件,/simv是执行当前目录的simv文件。-gui是打开图形界面。&是表示在后台运行。

    1.VCS常用命令

    编译时常用的option,如下:

    命令描述备注
    vcs -help打开vcs帮助文档可以重定向生成一个文件,例如采用 vcs -help > vcs_help.txt
    -sverilog支持systeverilog语法
    +v2k支持 Verilog 2001 语法
    -l 文件名设置生成的log文件的文件名l是小写的L
    -R编译完自动地去仿真,不需要手动执行simv文件
    -Ppli.tab定义PLI的列表(表)文件配置Verdi时需要
    -gui <=dve 或 verdi>打开仿真图形化界面
    –fsdb调用Verdi PLI 库,支持fsdb 波形
    -ucli在运行时指定UCLI模式,即命令行模式
    -Mupdate如果修改了文件,VCS可以只编译修改了的文件,节省编译时间
    -v 文件名告诉VCS是哪个定义好的Verilog工艺库
    -y 路径告诉VCS这个Verilog工艺库上哪去找
    +libext+< extension >与-y配合,用来指定查找的文件的后缀例如查找.v文件,可以用+libext+.v
    +incdir+< dir >告诉VCS去哪找 `include的文件
    -f 文件列表指定一个包含所有文件路径的filelist文件(.flist)
    -o 文件名默认编译后产生一个simv文件,-o可以指明这个文件的文件名
    +define+名字 = 值定义宏
    -timescale = 时间单位/精度设置仿真的时间单位、精度;
    -debug对应TB中的$vcdpluson加载波形函数,使能DVE、Verdi 波形调试和UCLI命令行调试等
    -debug_all使能所有的debug调试功能
    -debug_pp使能debug调试功能,可以dump fsdb和vpd,使能DVE、VERDI波形调试和UCLI命令行调试
    -cm [option]覆盖率收集选项,option包括: line(行)、cond(条件)、fsm(状态机)、tgl(翻转)、branch(分支)、assert(断言)常用命令如: -cm line+cond+fsm+tgl
    -cm_dir < dir >指定覆盖率文件放置的路径

    仿真时常用的option,如下:

    命令描述备注
    -l 文件名输出log文件l是小写的L
    +notimingcheck关闭时序检查
    -vpd_file 文件名生成vpd文件vpd是VCS的产生的波形文件

    注,对几种波形文件介绍:

    • vpd是VCS的DVE支持的波形文件,可以在Verilog中用$vcdpluson产生。
    • VCD (Value Change Dump)是一个通用的波形格式。它主要包含了头信息,变量的预定义和变量值的变化信息,就相当于记录了整个仿真的信息。通过Verilog的系统函数$dumpfile 来生成波形,通过$dumpvars的参数来规定抽取仿真中某些特定模块和信号的数据。
    • fsdb(Fast Signal DataBase)是 Verdi 所支持的波形文件。相对于VCD波形文件,fsdb只对仿真过程中有用的信号进行存储,所占存储空间较小。fsdb是通过verilog的PLI接口来实现的,在Verilog中加入 $fsdbDumpfile 和 $fsdbDumpvars等函数。fsbd 的使用可以看:fsdbfsdb dump参数传递
    • shm 是Cadence公司 NC verilog 和Simvision支持的波形文件;WLF(Wave Log File) 是Mentor Graphics 公司Modelsim支持的波形文件。

    2.Makefile实现自动化仿真

      上面我们知道VCS仿真可以分为两步:编译+仿真。下面我们就实现一个最简单的Makefile脚本启动VCS仿真。

    comp:
    	vcs +v2k top_tb.v -debug_all -l comp.log
    sim:
    	./simv -l run.log -gui &  
    clean:
    	rm -r *.log *.vpd  *.vcd *.fsdb 
    

    根据上面的脚本,可以在Terminal中输入make comp 和 make sim 命令就可以直接启动仿真。

    四、VCS+Verdi的使用

      为了实现VCS仿真和Verdi查看波形的效果,需要在VCS仿真时产生Verdi所需的fsdb波形文件,dump fsdb文件,再使用Verdi打开fsdb文件。下面解析步骤:

    1.编译

      这里可以有两种方式来生成fsdb文件:可以参考fsdb dump。下面介绍其中一种,如下:首先在TB中添加Verilog的函数首先在VCS编译脚本上,需要用-P选项配置verdi,找到目录中对相应的 Synopsys/Verdi/ 的文件夹,指定需要加载的动态库(.so)、表格文件(.tab)和静态库(.a)。如下:

    NOVAS_HOME = /share/eda/Synopsys/Verdi/L-2016.06/     # 这是我电脑上Verdi的目录
    NOVAS_ARGS = ${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab \    # 这部分基本是固定的
    ${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a  \
    	
    vcomp:
    	vcs -full64-debug_pp -LDCLASS -rdynamic -P ${NOVAS_ARGS} \
    	-f complie.f \
    	-l compile.log
    

    解释一下上面的命令:

    • debug/debug_pp/debug_all ,使能ucli命令。
    • -LDFLAGS ,传递参数给VCS的linker,与后面的-rdynamic和-P配合使用
    • -rdynamic,指定需要加载的动态库
    • -P ${NOVAS_ARGS},指定需要加载的表格文件(.tab)和静态库(.a)

    2.仿真

    相应地仿真时的脚本文件,如下:

    sim:
    	./simv  \
    	-ucli -i dump_fsdb.tcl	\
    	+fsdb+autofulsh 	\
    	-l sim.log
    

    解释上面的命令:

    • simv 是 VCS编译Verilog后生成的二进制可执行文件,./simv执行这个文件,进行仿真;
    • -ucli 是启动UCLI命令行模式,-i 吃进去 tcl 脚本文件;
    • +fsdb+autofulsh,一边仿真,一边dump 波形;

    dump_fsdb.tcl的脚本如下:

    global env
    fsdbDumpfile "$env(file_name).fsdb"
    fsdbDumpvars 0  "top_tb"
    run
    

    解释上面的tcl脚本:

    • TCL脚本引用环境变量;
    • 设置波形文件名称,名称受 $env(file_name)控制;注:这个file_name 是从仿真的 Makefile文件中,通过 export file_name = top_tb
    • fsdbDumpvars(0) 表示会 dump 所有层次的信息;注:0代表dump所有层次,非0代表dump的最高层次;
    • 设置完dump 信息,启动仿真。此时仿真器受UCLI命令行控制;
    • 其他的有关fsdb生成时的函数调用可以看:fsdb

    3.Verdi 查看fsdb文件的命令

    verdi -f file.f -ssf *.fsdb & 
    

    解释上面的命令行中:

    • -f 代码的文件列表
    • -ssf 指定fsdb文件
    • & 表示后台运行

    4.Makefile启动VCS+Verdi的实例

    下面是一个简单的makefike脚本,如下:

    export  file_name = top_tb
    
    FILE_LIST = compile.f
    TB_DIR = 
    SIMV_FILE = simv
    LOG_DIR = ./log
    
    #----Coverage----
    CM_TYPE = line+cond+fsm+branch+tgl
    CM_DIR = ./coverage
    
    #----Verdi-----
    NOVAS_HOME = /share/eda/Synopsys/Verdi/L-2016.06/    
    NOVAS_ARGS = ${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab \  
    	${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a 			 \
    DUMP_COND = DUMP_FSDB 
    
    VCOMP = vcs -full64 -sverilog +v2k -debug_pp    \
    	-o ${FILE_LIST} 				\
    	-l ${LOG_DIR}/compile.log		\
    	-f ${FILE_LIST}					\
    	+incdir+${TB_DIR}				\
    
    CM = -cm ${CM_TYPE}					\
     	-cm_dir ${CM_DIR}				\
    
    VERDI =   -LDFLAGS -rdynamic -P ${NOVAS_ARGS} 
    
    
    #----------COMMAND-----------
    comp:
    	${VCOMP} ${CM}  ${VERDI}
    
    sim:
    
    
    verdi:	
    	verdi -nologo -sv -f ${FILE_LIST} -ssf *.fsdb +${DUMP_COND}
    	
    clean:
    	rm -rf *.csrc ./*.daidir ${SIMV_FILE } *simv* ucli* *.vpd *.fsdb *novas* *.log 
    

    tcl脚本,如下:

    展开全文
  • pli.a 其余语句与comp与verdi无关(-P这句可能报错No TopModule/Entity supplied,可以不要) run中: L19:ucli的输入文件(-i)为dump_fsdb_vcs.tcl L20:命令行参数autoflush,一边仿真一边dump波形 若有UVM相关...

    Makefile.命令行之前是以Tab开头的不然会报错
    gvim里面强制输入tab,使用Ctr+v+i
    直接使用tab键可能输入不成功。注释用#
    下面是makefile内容
    在这里插入图片描述L8:可选debug/debug_pp/debug_pp,使能ucli命令
    L9:传递参数给VCS的Linker,与L10-12配合使用
    L10:指示需要加载动态库,如libsscore_vcs201209.so
    L31:加载表格文件,novas.tab
    L31:加载静态库,pli.a
    其余语句与comp与verdi无关(-P这句可能报错No TopModule/Entity supplied,可以不要)
    run中:
    L19:ucli的输入文件(-i)为dump_fsdb_vcs.tcl
    L20:命令行参数autoflush,一边仿真一边dump波形
    若有UVM相关可以照下面写:
    在这里插入图片描述其中-P(这句不加也可以,加上可能报错No TopModule/Entity supplied)和dbg语句可以在上面这张图片上自己加上。

    其中dump_fsdb_vcs.tcl内容是:
    在这里插入图片描述L1:TCL脚本引用环境变量(Makefile中通过export定义)
    L2:设置 波形文件名,名称受环境变量env(demo_name)控制
    L3:设置波形顶层和层次,表示将test作为顶层,Dump所有层次
    L4: 设置完Dump信息,启动仿真(此时仿真器被ucli控制)
    0表示dump所有层次,非0表示Dump最大层次
    tb_top.f是源代码路径:
    在这里插入图片描述

    展开全文
  • 本篇文章介绍了IC设计/验证常用的VCSVerdi软件的Makefile脚本,并附上了源码,希望对大家有所帮助。如果大家没有相关的运行环境,后台回复隐藏福利试试吧!本篇文章来自于知乎用户Trustintruth,文章链接为...
  • VCS中module_tb.v除了声明timescale,初始化信号输入和例化module外,还需要加上波形输出函数$vcdpluson()和仿真时间控制函数$finish()
  • 一个简单的makefile编写VCS仿真 1 VCS简介 VCS是编译型Verilog模拟器,它完全支持OVI标准的Verilog HDL语言、PLI和SDF。 VCS具有行业中较高的模拟性能,其出色的内存管理能力足以支持千万门级的ASIC设计,而其模拟...
  • VCS+Verdi联合仿真教程

    2021-11-14 16:19:07
    最近由于在一家FPGA公司实习,公司的FPGA仿真和看波形工具是VCS+Verdi,由于这两样工具结合在一起有着极高的效率,也因此真切地感受到,与在学校仅仅使用vivado软件跑整个流程相比,真的是小巫见大巫。 因此便在...
  • vcs+verdi+uvm+makefile环境 最近几天在学习uvm,开始看张强大佬的书,准备写个小环境测试一下。可是之前都是用testbench,没用过uvm,连基本的仿真环境也没,在网络上搜寻一番后(没有沉迷其中),终于把基础环境搞好...
  • Makefile VCS

    2018-06-20 17:50:00
    LD_LIBRARY_PATH = ${NOVAS_HOME}/share/PLI/VCS/LINUX test = basic_test program_path = ./envPROGRAM_TOP = $(program_path)/test.svpackage_path = ./packagesPACKAGES = $(package_path)/all_user_pkg.sv...
  • VCSVerdi学习

    2021-03-25 21:12:13
    VCSVerdi学习1.使用Makefile2.不使用Makefile直接执行 1.使用Makefile 首先设置环境变量$Verdi_HOME 建立Makefile 文件 design_name = asyn_fifo fsdb_name = $(design_name).fsdb #use command "make vs...
  • 本文首发于公众号【木叶芯】,版权所有,禁止转载。...在进行fifo测试时,makefileVCSverdi部分代码: VCS = vcs +v2k +vcs+lic+wait \ -full64 \ -sverilog \ -debug_pp
  • 1.简述 这个是根据 FPGA开源工作室 分享的工程修改而来的,原版是modelsim的,有兴趣...最近刚入职,作为ICer必须得用vcs+verdi,所以在七夕那天加完班回家继续加班做小心心。最后成功完成移植,今天就分享一下。 ...
  • VCS-Verdi仿真

    2021-05-19 10:45:38
    VCSVerdi仿真: 提示:这里简述项目相关背景: 例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大) makefile用法: make_vcsverdi、clean(编译、仿真、查看...
  • VCS+Verdi 联合仿真-----FPGA开发

    千次阅读 2018-12-30 13:49:44
    VCS+Verdi 联合仿真-----FPGA开发 简述 上篇文章记了VCSVerdi的安装和破解,这篇文章 主要记的是VCSVerdi的联合仿真。重点当然是配置vcsverdi 的一大堆参数。因为我也是初学者,所以用的到参数并不多,之后...
  • vcsverdi的简单使用

    千次阅读 2019-12-13 12:04:41
    根据verdivcs安装的位置配置环境变量 在这里插入代码片 实际的路径需要根据软件安装的实际位置做调整。(如果有其他人配置好的bashrc,可以直接赋值过来使用) 修改成功后,执行如下命令,让bashrc生效 source ./...
  • 原文:... ... ... 基于VCS+Verdi的仿真验证及调试环境设置 VCS+Verdi是常用的一种芯片仿真验证及调试环境。本文简单介绍环境设置过程。 ​(1)VCS编译参数配置 ​为了使用fsdbDumpfi
  • 从零开始VCS+Verdi 安装过程

    千次阅读 2019-11-28 15:36:25
    转载:转载自:从零开始VCS+Verdi 安装过程 主要参考:VCS+Verdi 安装及破解过程(CentOS7)-----FPGA开发 想要一个纯净的系统,所以在虚拟机上直接重新安装了空白的Ubuntu 16.04。然后(⊙﹏⊙)别人写的好简略啊,我...
  • 小白也能开始VCS+Verdi的旅程

    千次阅读 多人点赞 2019-03-29 09:42:04
    前言 随着工艺发展,芯片集成...lsb 开放端口 请参考 FEFJay 分享的Centos6.5 防火墙开放端口 使用Makefile,让VCSVerdi 做个简单的 Test Bench 关于Makefile,我前面的博客有提道,有兴趣的同学可以去翻来看看: ...
  • VCS+Verdi编译Vivado仿真库

    千次阅读 2020-05-17 07:42:25
    开发平台:VCS2017, Verdi2017,Vivado 2017.2 Vivado_HOME为实际安装Vivado的根目录,这个目录下有settings64.sh文件 传统上VCS编译Vivado编译仿真库后,只能VCS使用,在VCS2016版本及更高版本是无法利用kdb参数...
  • 最近新购置了一台轻薄本,准备用于移动办公,自己之前的老笔记本上安装有win+linux双系统,并在Linux上安装了IES,VCS+VERDI等全套的芯片设计验证工具链。这使得我非常希望新的轻薄本上也能兼顾这种需求。但是...
  • makefile vcs

    2019-10-22 12:54:22
    LD_LIBRARY_PATH = ${NOVAS_HOME}/share/PLI/VCS/LINUX test = basic_test program_path = ./env PROGRAM_TOP = $(program_path)/test.sv package_path = ./packages PACKAGES = $(package_path)/all_user_pkg.sv ...
  • 文章目录一个实现vcs自动化仿真的makefile模板makefile简单介绍makefile & vcs文件结构makefile文件内容 一个实现vcs自动化仿真的makefile模板 vcs的安装可以参考我另外一篇文章【点这儿】 makefile简单介绍 ...
  • vcs+verdi Debug记录

    2021-10-22 17:26:05
    场景描述:在linux环境用vcs+verdi跑uvm的一个测试用例 问题描述: 报错代码如下: filelist:11: warning: overriding recipe for target `uvm_dpi.o' filelist:7: warning: ignoring old recipe for target `uvm_...
  • VCS+VERDI独立仿真xilinx工程说明 使用环境:ubutun系统+centos7虚拟机 第一步:添加centos7虚拟机和ubutun系统共同的开发空间。将ubutun系统下的工程目录添加到centos7虚拟机中,如下图所示: 虚拟机:VM–>...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 194
精华内容 77
关键字:

makefilevcsverdi