博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动化仿真模型的搭建---基于lattice DO文件和modelsim脚本
阅读量:5339 次
发布时间:2019-06-15

本文共 1794 字,大约阅读时间需要 5 分钟。

首先,我并不喜欢半自动的联合仿真,宁愿花一些时间写简单的脚本。

1.先建立自己的仿真文件夹sim,用于存放tb和相应的脚本以及仿真生成的垃圾,如下图。

2.编译库是必须的,如下以latticeECP3为例,其中添加了DDRFrame_bufferpllIP

为了可移植性的方便,我将相应的库拷贝到了自己指定的文件夹sim/lib下,将ECP3的器件库放到里面,如下图。

 

3.接下来就是写脚本(因IP存放相对位置不一样,脚本则不一样),先将写好的脚本贴出来,然后一一解释,如下图ddr3_frame_buffer.doddr3_frame_buffer.bat

 

图ddr3_frame_buffer.bat

图ddr3_frame_buffer.bat中可以看到整个核心部件的当前文件夹是sim(这个做仿真文件关联的时候一定要注意),图ddr3_frame_buffer.bat的脚本很简单,不啰嗦。

图ddr3_frame_buffer.do,因为当前文件夹是simtb.v又在sim下,所以vlog     ./tb.v编译当前文件夹下的tb.v,如下图所示。

 

lattice的库在libecp3pmi下,所以vlog     ./lib/ecp3/*.v./lib/pmi/*.v也很显然了

接下来编译自己写的.Vvlog  ./../scr/*.v。

然后编译IP的实体,调用了DDRFrame_bufferpll,所以他们仿真模型的实体也得编译。

vlog  ./../pll/pll.v

vlog  ./../frame_buffer/frame_buffer_beh.v

这两句就是编译Frame_bufferpll的仿真模型的实体。

 

DDR就没有这么简单了,因为DDR实体里面还包含了很多东西

 

vlog  ./../ecp3_ddr3/ecp3_ddr3_beh.v

 

vlog     ./../ecp3_ddr3/ddr_p_eval/ecp3_ddr3/src/rtl/top/ecp3/*.v

 

vlog     ./../ecp3_ddr3/ddr_p_eval/models/ecp3/*.v

 

看到工程的顶层包含了`include "ddr3_sdram_mem_params.v",他是指工程的相对src作为当前路径,即指的是src文件夹为当前文件夹,如下图src下有"ddr3_sdram_mem_params.v"所以在工程编译的时候没有报错。

 

但是我们在编译仿真DDR仿真模型实体ecp3_ddr3_beh.v

的时候,里面没有去包含参数宏定义的文件ddr3_sdram_mem_params.v,如下图

 

这样必然会报错的解决的办法有两个第一将ddr3_sdram_mem_params.v包含在ecp3_ddr3_beh.v下面但是包含的时候关联路径一定要注意仿真指定的当前文件夹是sim,所以关联路径应该是,如下图。

`include "./../ecp3_ddr3/ddr_p_eval/ecp3_ddr3/src/params/ddr3_sdram_mem_params.v"

 

还没有完事,ecp3_ddr3_beh.v下面还包含了其他仿真实体也要编译

vlog     ./../ecp3_ddr3/ddr_p_eval/ecp3_ddr3/src/rtl/top/ecp3/*.v

要编译哪些东西,东西从哪里来???看看自己的工程就知道(首先自己要保证自己的工程在diamond下能够编译通过),看着自己工程架构写脚本是最快的,以上脚本的所有步骤都是根据工程架构写的,工程架构如下图

根据上图加上脚本

vlog     ./../ecp3_ddr3/ddr_p_eval/ecp3_ddr3/src/rtl/top/ecp3/*.v

vlog     ./../ecp3_ddr3/ddr_p_eval/models/ecp3/*.v

还有一种办法就是根据给出生成IP目录下给出的.do脚本来修改,这种办法相对繁琐,但是也值得参考,如下图是自动生成的脚本。

 

至此整个工程所需要的东西就全了可以开心的让工程仿真跑起来了。

 

如有疑问请联系QQ:825972925

 

转载于:https://www.cnblogs.com/xiaozhuge/p/6442149.html

你可能感兴趣的文章
手机SN的NV值
查看>>
CoreData(数据持久化的方式)
查看>>
UVa 437 - The Tower of Babylon
查看>>
算法设计与分析—— 动态规划法
查看>>
[软件哲理]转 从敏捷的业务目标论软件开发
查看>>
教程三:Wechat库的使用
查看>>
新安裝的Centos7不能联网且ifconfig出现command not found
查看>>
1.21 Python基础知识 - python常用模块-2
查看>>
四种ABAP数据对象(转)
查看>>
Log4net快速配置使用指南。(快速搭建log4net日志平台手册)
查看>>
C#后台获取ajax传来的xml格式数据值
查看>>
###学习《C++ Primer》- 1
查看>>
POJO和JavaBean的区别
查看>>
CSS| 框模型-padding
查看>>
[luoguP2513] [HAOI2009]逆序对数列(DP)
查看>>
[luoguP1360] [USACO07MAR]黄金阵容均衡Gold Balanced L…
查看>>
IOC容器的经典解释
查看>>
vector 与 arraylist
查看>>
简单的SQL语句
查看>>
LA 3521 Joseph's Problem
查看>>