• 【转载】Modelsim的自动化使用(一)脚本的基本使用


    转载https://www.jianshu.com/p/e25254f4d6be

    作者:lanFeng666
    链接:https://www.jianshu.com/p/e25254f4d6be
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    一、 实验来源

    通过vivado联合Modelsim调试,自动生成脚本,通过学习人家写好的脚本,来学习如何自动化使用Modelsim。毕竟,每一次都在那几个按钮上点来点去,实在是太恶心人了,我觉得,没有人喜欢这样重复做实验,因此,写了这篇blog。本文,最后会给一个简单的Modelsim通用型工具脚本。如果对笔者的实验过程,不感兴趣,可以直接跳到最后,简单看看,直接拿来用即可。

    二、vivado调用modelsim的过程

     
    image.png

    住里面主要说明两种文件:

    • .bat文件,这个是Windows里面的脚本文件,类似于Linux里面的Shell
    • .do 文件,这个是modelsim支持的脚本文件
    • .ini 文件,这个文件设置了modelsim中的需要使用到的仿真库的位置,这个东西也是vivado自动生成的
      截图红框中的几个文件都是Vivado为了调用modelsim进行仿真而生成的。下面简单介绍一下:

    2.1 compile.bat

    set bin_path=D:modelsimwin64
    call %bin_path%/vsim  -c -do "do {tb_test_compile.do}" -l compile.log
    if "%errorlevel%"=="1" goto END
    if "%errorlevel%"=="0" goto SUCCESS
    :END
    exit 1
    :SUCCESS
    exit 0

    这个脚本,调用了位于D:modelsimwin64的vism.exe文件,让 modelsim执行了tb_test_compile.do脚本,并将日志信息,输出到了compile.log文件中

    2.1.1 tb_test_compile.do

    编译的过程是:

    vlib modelsim_lib/work
    vlib modelsim_lib/msim
    
    vlib modelsim_lib/msim/xil_defaultlib
    
    vmap xil_defaultlib modelsim_lib/msim/xil_defaultlib
    
    vlog -64 -incr -work xil_defaultlib  
    "../../../../Miz_sys.srcs/sources_1/new/block.v" 
    "../../../../Miz_sys.srcs/sources_1/new/unblock.v" 
    "../../../../Miz_sys.srcs/sim_1/new/tb_test.v" 
    
    quit -force

    前面三条语句是新建一个库,并设置库的位置,如下图


     
    image.png

    vmap 是把系统的work库文件映射到新建的work库中
    vlog 添加并编译HDL文件

    2.2 simulate.bat 仿真操作

    在编译成功之后,就使用simulate.bat去仿真目标模块

    set bin_path=D:modelsimwin64
    call %bin_path%/vsim   -do "do {tb_test_simulate.do}" -l simulate.log
    if "%errorlevel%"=="1" goto END
    if "%errorlevel%"=="0" goto SUCCESS
    :END
    exit 1
    :SUCCESS
    exit 0

    和刚才编译时,一样,只是调用vsim.exe去执行相应的脚本

    2.2.1 tb_test_simulate.do

    vsim -voptargs="+acc" -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -lib xil_defaultlib xil_defaultlib.tb_test 
    
    set NumericStdNoWarnings 1
    set StdArithNoWarnings 1
    
    do {tb_test_wave.do}
    
    view wave
    view structure
    view signals
    
    run 1000ns

    vsim命令的编译选项:

    选项说明
    voptargs +acc 优化编译
    -L unisims_ver(以这个为例) 链接unisims_ver库
    -lib xil_defaultlib 这个和-L没啥区别(笔者已经试过了)

    执行完下面的指令之后

    vsim -voptargs="+acc" -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -lib xil_defaultlib xil_defaultlib.tb_test 

    两个set无关紧要,也就关一关警告。
    之后,就执行tb_test_wave.do脚本
    这个脚本的内容很简单

     

    说白了就是添加了所有的信号线,放到了右边的框里(这个时候,已经仿真完了),完事之后,执行:

    view wave
    view structure
    view signals
    run 1000ns

    查看波形,查看结构,查看信号线,同时设置了一下具体时间。

    三、把Vivado生成的脚本转变为一个通用的脚本

    通过上面的论述,其实只需要更改Vivado生成的脚本,就可以做一个简单的通用Modelsim仿真自动化工具了

    改的东西,最基本的仅仅是:

    • 软件路径、源文件路径、映射库的路径
    • 波形的查看
    • 仿真的tb模块
      笔者简单改了改,最后的文件结构为:


       
      image.png

      我花了几个红框,这张图需要细品,细品之后,基本上就会改了。我这儿提示一下,modelsim_lib这个文件夹需要事先建好,至于里面的东西,不要担心,modelsim这个软件自己会建。

    modelsim更进一步的使用,就参照下一个文档

  • 相关阅读:
    Java finally语句到底是在return之前还是之后执行(JVM字节码分析及内部体系结构)?
    关于git的文件内容冲突解决
    linux快速搭建
    2019年开始
    如何生成git ssh key
    2018年6月,最新php工程师面试总结
    引用变量 php面试总结1
    windows通过node环境搭建安装npm,cnpm,vue-cli
    回归程序世界,努力做出成绩
    我是谁?我在哪里?
  • 原文地址:https://www.cnblogs.com/yishuad/p/12719319.html
Copyright © 2020-2023  润新知