芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 6216|回复: 2

Altera的Quartus II中DDR2 IP仿真问题与解决方案

[复制链接]
  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 422

    主题

    780

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    15846
    QQ
    发表于 2021-2-14 19:15:38 | 显示全部楼层 |阅读模式
    问题1、使用高于Quartus II 13.1版本的软件仿真会失败
    仿真使用13.0进行,使用13.1没有做过测试,暂时不知道,在高版本软件(笔者使用15.1和17.1做过测试)中,仿真根本运行不起来,会报如下所示的报错信息。
    高版本仿真报错截图.jpg
    根据信息提示,查看对应的文件内容,DDR2_SIM_nativelink_simulation.rpt,发现如下信息:
    高版本仿真报错报告.jpg

    也就是说,仿真需要调用一个叫cycloneiii_ver的库,结果找不到这个库。为啥找不到呢?猜测(没有去详细考证)可能这个IP核的工程模型是基于cycloneiii器件设计的,仿真的时候默认还是调用cyclone iii的器件模型,但是从Quartus II 13.1以后,Quartus II软件已经不再支持cyclone iii。软件里面也不再提供cyclone iii的器件模型,因此仿真时候无法找到这个模型。当然无法开始仿真了。具体可以参照Altera官方网站的解释。以下为在altera技术支持官网上找到的说明。https://www.altera.com/support/s ... tions/fb210109.html
    以下为官网上的解释原文(防止链接后面又打不开了,这里给大家搬运下):

    Last Modified: June 11, 2015
    Version Found: v14.0
    Simulation of ALTMEMPHY IP with Cyclone IV Devices Fails

    Description
    This problem affects all ALTMEMPHY-based external memory interfaces targeting Cyclone IV devices.

    Simulation of an ALTMEMPHY-based external memory interface fails with the following error message:

    can't read "lib_list(cycloneiii_ver)": no such element in array

    Cyclone IV simulations require Cyclone III libraries, because many atoms and modules from the earlier family are reused. The problem is that Cyclone III has reached end-of-life, and its libraries have been removed from the Quartus II software version 14.0. Consequently, simulations of ALTMEMPHY-based IP on Cyclone IV devices in the Quatus II software version 14.0 or later, will fail.

    Workaround/Fix
    The workaround for this issue is to use a version of the Quartus II software earlier than 14.0.

    This issue will not be fixed

    问题2、使用Modelsim-Altera (Starter) Editon版本的软件仿真会报错,提示找不到xxxx_phy_alt_mem_phy_seq单元
    使用Quartus II13.0创建DDR2 IP,使用modelsim altera edition版本仿真,结果在modelsim中进行代码编译时出错,报错内容大致如下:
    # ALTERA version supports only a single HDL
    # ** Fatal: (vsim-3039) C:/Users/xiaomeige/Desktop/DDR2_32bit_Sim/DDR2/ddr2_32b/ddr2_32b_phy_alt_mem_phy_seq_wrapper.v(365): Instantiation of 'ddr2_32b_phy_alt_mem_phy_seq' failed.
    #    Time: 0 ps  Iteration: 0  Instance: /ddr2_32b_example_top_tb/dut/ddr2_32b_inst/ddr2_32b_controller_phy_inst/ddr2_32b_phy_inst/ddr2_32b_phy_alt_mem_phy_inst/seq_wrapper File: C:/Users/xiaomeige/Desktop/DDR2_32bit_Sim/DDR2/ddr2_32b/ddr2_32b_phy_alt_mem_phy_seq_wrapper.v
    # FATAL ERROR while loading design

    报错信息的意思是_phy_alt_mem_phy_seq_wrapper.v文件在例化_phy_alt_mem_phy_seq模块时失败了。
    这个模块一看名字就知道是DDR2 IP内部的一个模块,理论来讲,作为一个厂家提供的原版IP,是不应该会存在某个文件模块找不到的。而DDR2作为一个超级常用的IP,这个问题,肯定会有解决方案的。
    仔细再看了一眼这个报错,发现在前面提示了一句“ALTERA version supports only a single HDL”,告诉我Modelsim Altera版本只支持一种语言(仿真时只支持Verilog或VHDL两种中的一种语言的设计,不支持两种语言混用的设计)。这就奇怪了,Modelsim Altera是Altera定制的专门针对自家的软件版本,设计时没理由这个问题都考虑不到。
    既然提示我往语言格式方向去找,我就打开工程目录看了看,发现xxxx_phy_alt_mem_phy_seq是一个VHDL格式的文件,其他所有IP源文件都是Verilog格式,只有这个文件是VHDL格式,且我尝试了各种方法也无法生成这个文件的Verilog版本。所以,要想成功的执行仿真,难道只能用支持混合语言仿真的SE版本了吗?于是我使用Modelsim SE 10.4版本仿真了一下,果然能够仿真了。

    但是,还是不甘心啊,为啥Altera会犯这么低级的错误呢?会不会有什么解决方案呢?于是我决定上Altera(现在已经是Intel)的官网上去搜一搜,在官网上搜索,关键词一定要选得好,这个问题,既然是xxxxx_phy_alt_mem_phy_seq模块无法例化,我就以“_phy_alt_mem_phy_seq”作为关键词搜索,果然找到了几个相关的帖子,看了一下,大部分的帖子都是提问了没人回复,仅只有下面这个帖子有人回复,
    https://community.intel.com/t5/FPGA-Intellectual-Property/DDR2-HP-simulation-fail-in-StratixIV/m-p/64555#M4776


    终于,在回复者的内容中,找到了解决方案。
    I think I found a possible solution for your error:


    Go to settings menu -> Simulation -> TestBenches ->  

    Then in for your testbench add the .vho files together with the testbench file and the memory model file.  
    Then there must be no error.


    意思就是,对于这种不得不混合使用的IP,一般会在IP库里提供一个相关的vo格式的文件,用来辅助仿真,于是我打开工程下生成的DDR2 IP源码中,发现确实有一个名为“xxxx_phy_alt_mem_phy_seq_wrapper.vo”的文件,为啥是_phy_alt_mem_phy_seq_wrapper.vo而不是那个找不到的_phy_alt_mem_phy_seq模块的vo文件呢?从之前的报错中可以找到端倪,因为_phy_alt_mem_phy_seq_wrapper模块正是调用_phy_alt_mem_phy_seq模块的上层模块,所以只要提供了_phy_alt_mem_phy_seq_wrapper.vo文件,就不需要_phy_alt_mem_phy_seq这个模块了。因此,只需要在testbench设置中把_phy_alt_mem_phy_seq_wrapper.vo这个文件加入到使用的testbench中就可以了。
    按照如此方法设置之后,果然成功使用Modelsim Altera跑起了仿真。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 422

    主题

    780

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    15846
    QQ
     楼主| 发表于 2021-2-14 20:51:44 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-5-5 09:16
  • 10

    主题

    26

    帖子

    390

    积分

    中级会员

    Rank: 4

    积分
    390
    发表于 2021-2-15 12:14:47 | 显示全部楼层
    给小梅哥点赞!过年还在坚持更新!!!!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2024-4-19 07:09 , Processed in 0.115634 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表