logo资料库

vcs和verdi联合仿真(初学者可以用来熟悉脚本写法).pdf

第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
资料共21页,剩余部分请下载后查看
(笔记)vcs 和 verdi 的联合仿真 环境配置 首先搭建好 vcs 和 Verdi 都能工作的环境,主要有 license 问题,环境变量的设置。 在 220 实验室的服务器上所有软件的运行环境都是 csh。所以,所写的脚本也都是 c sh 的语法。 生成波形文件 Testbench 的编写 若想用 Verdi 观察波形,需要在仿真时生成 fsdb 文件,而 fsdb 在 vcs 或者 models im 中的生成是通过两个系统调用$fsdbDumpfile $fsdbDumpvars 来实现的。而这两 个系统调用并不是 Verilog 中规定的,是 Verdi 以 pli(Programming Language Int erface)的方式实现的。这就需要让 vcs 编译时能找到相应的库。 首先在 testbench 中需加入以下语句 `ifdef DUMP_FSDB initialbegin $fsdbDumpfile("test.fsdb"); $fsdbDumpvars; end `endif 这个编译开关在用 vcs 编译时加入+define+DUMP_FSDB 选项就可以打开,也可以在 d efine.v 文件中定义 DUMP_FSDB 这个宏。 我们现在所接触的仿真波形文件主要有  Wlf 文件: WLF 波形日志文件,是 modelsim 的专用文件。这个 wlf 文件只 能是由 modelsim 来生成,也只能通过 modelsim 来显示。在用 modelsim 做仿真时,仿真结束都会生成一个*.wlf 的文件(默认是 vsim.wlf)。下次就可
以通过通过 modelsim 直接打开这个保存下来的波形。vsim -view vsim.wl f -do run.do 其中 run.do 中的内容为要查看的波形信号。要强调的是不是一 个通用的文件文件格式。  VCD 文件:VCD 是一个通用的格式。 VCD 文件是 IEEE1364 标准(Verilog HDL 语言标准)中定义的一种 ASCII 文件。可以通过 Verilog HDL 的系统函数 $dumpfile,$dumpvars 等来生成。我们可以通过$dumpvars 的参数来规定 我们抽取仿真中某个特定模块和信号的 VCD 数据。它主要包含了头信息,变 量的预定义和变量值的变化信息。正是因为它包含了信号的变化信息,就相当 于记录了整个仿真的信息。可以用这个文件来再现仿真,也就能够显示波形。 另外我们还可以通过这个文件来估计设计的功耗。因为 VCD 是 Verilog HDL 语言标准的一部分,因此所有的 verilog 的仿真器都要能实现这个功能。因此 我们可以在 verilog 代码中通过系统函数来 dump VCD 文件。另外,我们可 以通过 modelsim 命令来 dump VCD 文件,这样可以扩展到 VHDL 中。具 体的命令: vcd file myfile.vcd vcd add /test/dut/* 这个就生成一个含 d ut 下所有信号的 VCD 数据信息。我们在使用来进行仿真 vsim -vcdstim my file.com test;add wave /*;run -all;  FSDB 文件:fsdb 文件是 verdi 使用一种专用的数据格式,类似于 VCD,但是 它是只提出了仿真过程中信号的有用信息,除去了 VCD 中信息冗余,就像对 VCD 数据进行了一次 huffman 编码。因此 fsdb 数据量小,而且会提高仿真速 度。我们知道 VCD 文件使用 verilog 内置的系统函数来实现 的,fsdb 是通过 verilog 的 PLI 接口来实现的。$fsdbDumpfile,$fsdbDumpvars 等 另外, 在 VCS 仿真器中还有一种 VCD+的数据格式 VPD,详细情况参照 VCS 的使 用。 注意:WIF:波形中间格式;WLF:波形日志文件。由于在 ModelSim 下只能打开 WLF 文件 使用 ModelSim 行命令 vcd2wlf 将 VCD 文件转化为 WLF 文件。 而在 dump fsdb 文件需要几个文件,Verdi.tab, pli.a 以及与仿真器相应版本 的.so 库文件(需要修改 LD_LIBRARY_PATH 变量)。而这些目录在以往的版本中是 比较凌乱的。 在 Verdi200907 版本之后它的 dumper 就做了统一化的处理: How to Link the New Unified Dumper? Prerequisites:  ${NOVAS_INST_DIR} : Verdi/Siloti install directory.  ${PLATFORM} : LINUX: Linux OS (32-bit)
LINUX64: Linux OS (64-bit) SOL2: SunOS 5.x (32-bit) SOL7: SunOS 5.x (64-bit) IBM5: IBM 5.1  Tab file: novas.tab  LD_LIBRARY_PATH ${NOVAS_INST_DIR}/share/PLI/lib/${PLATFORM} needs t o be added as one of the LD_LIBRARY_PATH searching paths all the time.  Novas banner: *Novas*  novas.vhd file: For VHDL and mixed language users who transfer from the old FSDB dum per, the first time use of new unified FSDB dumper needs the “novas. vhd” to be re-compiled (or re-analyzed) if the FSDB dumping commands have been specified in the VHDL design. The related unified dumper directories are:  ${NOVAS_INST_DIR}/share/PLI/VCS  ${NOVAS_INST_DIR}/share/PLI/MODELSIM  ${NOVAS_INST_DIR}/share/PLI/IUS  ${NOVAS_INST_DIR}/share/PLI/lib 在我设的 vcs 环境中(csh)中设计的脚本如下 #!/bin/tcsh if(-esimv)then \rm-rsimv endif
if(-esimv.daidir)then \rm-rfsimv.daidir endif if(-ecsrc*)then \rm-rfcsrc endif vcs0809 #verdi env setting setPLATFORM=LINUX setNOVAS_INST_DIR=/opt/spring/verdi201004 setenvLD_LIBRARY_PATH${NOVAS_INST_DIR}/share/PLI/lib/${PL ATFORM}:${LD_LIBRARY_PATH} vcs -l vcs.log \ -notice \ -line -debug_all \ -P $NOVAS_INST_DIR/share/PLI/VCS/$PLATFORM/novas.tab \ $NOVAS_INST_DIR/share/PLI/VCS/$PLATFORM/pli.a \
-f vcs.args ./simv 需要注意:  Csh 中设置环境变量,需把环境变量用{}括起来,这一点我试了很多次,它确 实不如 bash 的解析器更加智能。  在 220 的服务器上,vcs 的版本是 201006 的,而 Verdi 的版本时间比较低, 编译时会提示,相应的 libsscore_vcs201006.so 文件找不到。现在我用的 V erdi 的版本是 201004,而 vcs 的版本是 200809 其中的 vcs.args 的参考脚本如下(以 intra mode decision 为例) +libext+.v +v2k +acc +define+DUMP_FSDB -y http://www.cnblogs.com/rtl -work work // // Testbench files // +incdir+http://www.cnblogs.com/bench
http://www.cnblogs.com/bench/tb_ip_mode_decision.v // RTL files // +incdir+http://www.cnblogs.com/rtl http://www.cnblogs.com/rtl/ip_mode_decision.v http://www.cnblogs.com/rtl/defines.v http://www.cnblogs.com/rtl/timescale.v 在 csh 中运行 ./run_vcs 即可生成 Verdi 所需要的 fsdb 文件 之后运行以下命令启动 Verdi verdi -2001 -f vcs.args -ssf test.fsdb Verdi 调试 Verdi 调试主要分为以下几步  Load design and testbench into Debussy;  打开 nWave,载入对应的 FSDB;  在 nTrace 中将要观察的信号通过鼠标中键 Drag&Drop 拖放到 nWave 中;  通常都是在波形上发现问题,找到错误地方并双击鼠标,会自动跳到 Real driver statement,也即会跳到源代码所在。  nTrace 中,Active Annotation(快捷键 X)标出仿真结果在 source co de 下;  在先前 driver statement 中找个 driver 来使用 active trace 来追踪有效 驱动。 Verdi 就是之前的 Debussy,在调试时有着诸多的优点,现在我感觉最基础的几点就 是它
 只需执行一遍仿真就可以查看所有的波形,而在 modelsim 中则需要反复 运行 add wave 命令,每一次都要重新仿真。  可以查看设计的原理图 schematic,这非常方便查看每一个 module 和 wi re 的所对应的硬件结构,modelsim 现在还没有这个功能。  在仿真时可以很轻易地追踪每个信号所对应的源码。 Modelsim 脚本自动仿真 1、创建文件 run.do,“#”为注释符号 quit -sim #退出上次仿真 .main clear #清除上次仿真所有文件以 及打印信息 vlib work.veloce #创建veloce 的工作环境 #---------------------------------------------------------------------------------- --------------------- vlog ./tb_XXXXXXX.v #testbench 文件 vlog ./../src/*.v #代码源文件 vlog ./../ip_core/*.v #IP 核 #---------------------------------------------------------------------------------- --------------------- #Alrera vlog /opt/Quartus/13.1/quartus/eda/sim_lib/altera_mf.v #IP 核仿真模型 vlog /opt/Quartus/13.1/quartus/eda/sim_lib/220model.v #IP 核仿真模型 #---------------------------------------------------------------------------------- --------------------- #Xilinx vlog /opt/Xilinx/Vivado/2015.4/data/verilog/src/unimacro/*.v #IP 核仿真模型 vlog /opt/Xilinx/Vivado/2015.4/data/verilog/src/unisims/*.v #IP 核仿真模型 vlog /opt/Xilinx/Vivado/2015.4/data/verilog/src/unisims_dr/*.v #IP 核仿真模型
vlog /opt/Xilinx/Vivado/2015.4/data/verilog/src/xeclib/*.v #IP 核仿真模型 vlog /opt/Xilinx/Vivado/2015.4/data/verilog/src/glbl.v #IP 核仿真模型 #---------------------------------------------------------------------------------- --------------------- #LATTICE vlog ./lattice/verilog/ecp3 #IP 核仿真模型 vlog ./lattice/verilog/pmi #IP 核仿真模型 #---------------------------------------------------------------------------------- --------------------- vsim -voptargs=+acc work.tb_XXXXXXXX #---------------------------------------------------------------------------------- --------------------- add wave /tb_XXXX/i2s_XXX_inst/* #添加例化模块所有信号 波形 do wave.do #若保存有新模型,用此语句 可以复现已保存的波形 run 500000 ns #仿真运行时间 2、写完以上 run.do 文件后,在「 terminal 」中执行以下语句,则可以 自动跑完仿真 [redhat@fpga marin]$ vsim -do run.do Vcs+Verdi 脚本自动仿真 0、定义环境变量,在.bashrc 或者.cshrc 文件中加入 ##VCS setenv VCS_HOME /work/tools/synopsys2015/vcs
分享到:
收藏