zoukankan      html  css  js  c++  java
  • VHDL生成的ngc文件被verilog的工程调用的问题

    1. 问题的提出

    工程a是一个soft core,用VHDL写的,综合的时候去掉了"Add I/O buffers" ,并将-iob(Pack I/O Registers into IOBs)置为否。综合最后生成了a.ngc文件供其他工程使用。在生成完ngc后,还可以在 "Design Utilities" -> "View HDL Instantiation Template" 中生成相应的调用文件。

    工程b调用的a.ngc,但是工程b使用verilog写的,在调用的时候出现了找不到a模块的错误。

    2. 问题的解决方法a

    使用netgen命令将该ngc转换成vhdl或者verilog文件,然后在调用转换后的文件

    linux下 

    netgen -ofmt verilog filename.ngc
    netgen -ofmt vhdlfilename.ngc

    windows 下

    netgen.exe -ofmt verilog filename.ngc
    netgen.exe -ofmt vhdlfilename.ngc

    3. 问题的解决办法b

    上述的办法只是一种取巧的办法,更好地办法是通过使用wrapper文件来实现。

    假定原来的ngc文件为abc.ngc, 则其wrapper文件名为abc.v 或者 abc.vhd. 这个wrapper文件只申明abc模块的输入输出端口,不包含其他信息。

    一种简单的生成wrapper文件的办法就是利用解决办法a中提到的netgen工具,利用netgen生成的verilog文件或者vhdl文件,将其他语句删除,仅保留其申明部分。

    然后在工程中同时添加该wrapper文件和ngc文件即可。

    4. 问题的进一步讨论

    在用VHDL写的soft core里面,接口不能包含inout形式的,否则调用不会有问题,但最终的工程的功能会出错。

    这个时候,ngc中的接口使用两个信号分别代表i和o,然后在verilog的工程中调用的时候,使用一个VHDL的wrapper文件来完成两信号转成单线三态的信号,或者直接用verilog来实现三态。

  • 相关阅读:
    L255 Learning to say no brings a thrill of freedom
    2019-02-25 EST 科技文翻译
    L253 Work and Pleasure
    2019.2.22 初级英语口语班 结课
    L252 小组作业
    2019-02-22 L231
    leetcode 67 Add Binary ----- java
    leetcode 66 Plus One ----- java
    leetcode 65 Valid Number ----- java
    leetcode 64 Minimum Path Sum ----- java
  • 原文地址:https://www.cnblogs.com/worthy/p/5389189.html
Copyright © 2011-2022 走看看