zoukankan      html  css  js  c++  java
  • 自动化仿真模型的搭建---基于lattice DO文件和modelsim脚本

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

    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

  • 相关阅读:
    详谈JavaScript原型链
    清除浮动(常用的四种方式)
    Uncaught TypeError: Cannot set property ‘display‘ of undefined解决
    Linux虚拟机、服务器上安装MySQL
    使用pipeline构建mysql容器并发布到K8S
    Kubernetes数据持久化方案
    centos7配置nfs
    pipleline实现docker、k8s代理节点
    RabbitMQ-7 管理+构建集群
    RabbitMQ-6 在Spring和Springboot中实现
  • 原文地址:https://www.cnblogs.com/xiaozhuge/p/6442149.html
Copyright © 2011-2022 走看看