安路TD和modelsim仿真

安路的TD不能进行功能仿真(vivado和ISE都有ISim仿真器可以做仿真用),但是可以时序仿真。因此功能仿真要借助modelsim。

使用GUI进行仿真

在已有工程下(分别是ip,source,sim,simulation),sim是modelsim仿真目录,simulation是anlogic的TD仿真时自动生成的目录。
在这里插入图片描述

打开sim,并且在modelsim中change directory为sim。
也可以在modelsim命令窗里输入 cd “sim的目录”(注意modelsim中使用的是 / ,而文件管理器复制的时候是 \)
切换之后可以输入 ls 查看当前目录下的文件。(从而说明切换成功)

file->new->project,然后输入工程名。
添加已经有的rtl文件、ip文件(对于anlogic的ip只需要添加sim.v即可,如pll.v),tb文件
右键compile-compile all。

simulate->start simulation。选择工程目录下的tb文件(如果在design unit里手动输入,应该输入 ”工程名.tb”)去掉enable optimization(会优化rtl),在libraries下添加之前编译过的anlogic器件的库。如果是时序仿真要添加sdf文件。点击ok开始仿真。

在objects 里右键add wave,然后点击run,即可看到波形。
在这里插入图片描述
点图中最左边的图标重新仿真

使用do脚本进行仿真

首先和之前一样,(如果用了绝对目录来编译、添加仿真文件,那么可以不用切换目录)
打开sim,并且在modelsim中change directory为sim。
也可以在modelsim命令窗里输入 cd “sim的目录”(注意modelsim中使用的是 / ,而文件管理器复制的时候是 \)

在modelsim命令窗里执行tb.do即可:do tb.do。执行do的时候要先退出sim:quit -sim

tb.do如下: (do中注释只能换行再写)

quit -sim
.main clear

#创建工程目录
vlib work

#编译rtl、ip、tb文件(以下仅为示例,并非可用代码)对于anlogic的ip只需要添加sim.v即可
vlog  D:/modelsim/AnLogic/work/t1.v
vlog ../ip_sim.v
vlog ../tb.v

#添加仿真库,其地址为:D:/modeltech64_10.4/anlogic/TD5,以及对应的tb:work.tb
vsim  -novop -voptargs="+acc" -L D:/modeltech64_10.4/anlogic/TD5 -gui work.tb 

add wave tb/*
run 1000ns

modelsim do避免信号被优化!

因为modelsim自动优化的缘故,使得一些不重要signal被modelsim自动忽略,需添加选项 -novopt,即,vsim -novopt module_name) 来避免信号被优化!

do脚本赋值set

一些比较有意思的写法:(这样必须要统一工程的文件夹目录名字)但是每次只需要更改work_address即可

quit -sim
.main clear

set work_address  D:/fifo_test/fifo/FIFO_2kx10
cd $work_address/sim

vlib work
vlog  $work_address/sim/tb.v
vlog  $work_address/sources/rtl/*
vlog  $work_address/al_ip/*_sim.v

vsim  -L D:/modeltech64_10.4/anlogic/TD5 -gui work.tb 
add wave tb/*
run 1000ns

保存do文件时遇到的问题

保存wave.do需要确定保存的位置。如果复制了工程副本,重新打开了另一个工程,但是modelsim没有关闭过,那么保存wave.do文件的目录会是之前的那个工程下面。

如果删除了work下的opt(编译库)

我迭代工程的时候,是直接复制之前的工程,所以这个work下编译的库越来越多,大小从几M到300M了,所以就直接给删掉了。毕竟想一想,重新编译不就好了(包括器件库、rtl编译)

还是大意了呀。

有个glbl.v在最初的时候使用vlog加载到了编译库里,后来把do文件里vlog glvl.v这句注释掉好像也能跑通没有error,就没有管了,直到删除了编译库!原来这些文件vlog到库里之后,重新执行do文件的时候并没有再加载这些文件,而是直接去之前编译好的库里调用glbl.v了!所以注释了vlog glvl.v并不会有问题!删了编译库就报error了!

另外,直接在文件夹里删除的编译库,在modelsim里并不知道编译库被删除了,导致error,手动把这些编译库delete就好了。

由于是新的一个工程(虽然在文件夹里我们可以认为这是一个新的副本,但是modelsim在创建工程的时候就给了一个定位,因此这个副本被modelsim当成了原来的工程啊),通过cd或者change directory来更换定位(偶尔还是会出问题,这个暂时没搞明白)

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值