我们开发FPGA程序,首先从思路上要跳出嵌入式的思维,它是一个RTL的多并发的硬件,所以不能用简单的LED或是串口来调试。必须要认认真真一丝不苟的做好仿真的学习和使用。仿真有两种:1.VIVADO自带的仿真。 2.MODELSIM联合VIVADO仿真。接下来,由我给大家作一下XILINX VIVADO与Modelsim的仿真练习:
**
1.环境的搭建:
首先,在modelsim安装路径中新建一个名为vivado2018_lib的文
件夹(路径和文件名可改),如图下图所示。
接着选择vivado菜单“Tools”——>“Compile Simulation Libraries…”命
令,如下图所示。
**
在弹出的对话框中设置器件库编译参数,仿真工具“Simulator”选为ModelSim, 语言“Language”、库“Library”、器件家族“Family”都为默认设置All(当然也可以根据自己的需求进行设置),然后在“Compiled librarylocation” 栏设置编译器件库的路径,这里选前面新建的vivado2018_lib文件夹,此外在 “Simulatorexecutablepath”栏设置modelsim执行文件的路径,注意箭头部
分不要勾选,如下图所示。
**
2. 生成仿真库仿真了:
**
生成后
修改top_simulate.do如下,注意粗体部分:
######################################################################
#Filename:top_simulate.do
#Createdon:WedApr1410:21:36+08002021
#AutogeneratedbyVivadofor’behavioral’simulation
######################################################################
dotop_compile.do
vsim-voptargs=“+acc”-t1ps-novopt-Lunisims_ver-Lunimacro_ver-Lsecureip-Lxil_defaultlib
-L blk_mem_gen_v8_3_1 -L xbip_utils_v3_0_5 -L axi_utils_v2_0_1 -L xbip_pipe_v3_0_1 -L
xbip_dsp48_wrapper_v3_0_4 -L xbip_dsp48_addsub_v3_0_1 -L xbip_bram18k_v3_0_1 -L
----------------------- Page 5-----------------------
mult_gen_v12_0_10 -L floating_point_v7_0_11 -L xbip_dsp48_mult_v3_0_1 -L
xbip_dsp48_multadd_v3_0_1-Ldiv_gen_v5_1_9-Llib_cdc_v1_0_2-Lproc_sys_reset_v5_0_8-L
generic_baseblocks_v2_1_0 -L axi_infrastructure_v1_1_0 -L axi_register_slice_v2_1_7 -L
fifo_generator_v13_0_1 -L axi_data_fifo_v2_1_6 -L axi_crossbar_v2_1_8 -L
axi_clock_converter_v2_1_6-Laxi_protocol_converter_v2_1_7-Laxi_dwidth_converter_v2_1_7
-libxil_defaultlibxil_defaultlib.top_tbxil_defaultlib.glbl
do{top_wave.do}
viewwave
viewstructure
viewsignals
log-r/*
poweradd-in-inout-out-internal/top/uut/*
do{top.udo}
run10ms
powerreport-all-bsaiftest_saif.saif
要有如下文件
#quit-force
接着运行100us的仿真,因为保密关系,用一个通用的下面的图片展示一下效果。我们主要是要了解方法就行哈。
能正常运行,联合仿真成功
**
3.另外的一些备注
**
假如自己不想编译库,想直接拿别人编好的,则拷贝好库后,还需要对库的初始化文件做对应的修改,找到库路径下的modelsim.ini(注:不要弄错成ModelSim安装路径下的那个ini了),然后用编辑器打开
可以看到这些库都有以绝对路径的形式链接,所以如果是从别的地方拷过来的,或者你打算换个路径放仿真库,那么就需要将旧的路径改为新的路径,然后其他的使用操作就和上面的一模一样了。