首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用GHDL用COE文件模拟Xilinx FIR编译器

用GHDL用COE文件模拟Xilinx FIR编译器
EN

Stack Overflow用户
提问于 2019-04-09 15:42:53
回答 1查看 395关注 0票数 1

在我所能找到的任何论坛上似乎都没有被问到,我也找不到如何使用GHDL文档来做到这一点。显然,我没有足够的声誉在SuperUser上问一个GHDL问题(他们没有标签),所以我必须在这里问。

我正在尝试模拟一个DSP核,它包含几个自写的vhdl核以及一些使用GHDL的Xilinx coregen核。我不得不承认,我对GHDL相当陌生,但对VHDL并不陌生。我知道所讨论的核心和测试平台的逻辑是合理的,因为它使用ISim进行了很好的模拟。然而,这个程序有其局限性,这就是我想尝试GHDL的原因。

但是,由于缺少过滤器文件,GHDL似乎在模拟Xilinx编译器时出现了问题。

我正在使用下面的Makefile片段设置我的模拟环境

代码语言:javascript
复制
#GHDL CONFIG
GHDL_CMD    = ghdl
GHDL_FLAGS  = --ieee=synopsys --warn-no-binding

# vhdl filebase
SRCBASE  = ../../../source
ISEBASE  = /opt/Xilinx/14.7/ISE_DS/ISE/vhdl/src

####################
# import all the necessary source files 

# first the external libraries
$(GHDL_CMD) -i $(GHDL_FLAGS)                   --work=unisim        $(ISEBASE)/unisims/{,primitive/}*.vhd
$(GHDL_CMD) -i $(GHDL_FLAGS)                   --work=ieee_proposed $(ISEBASE)/ieee_proposed/*.vhd
$(GHDL_CMD) -i $(GHDL_FLAGS) --warn-no-library --work=xilinxcorelib $(ISEBASE)/XilinxCoreLib/*.vhd

# then the components roughly in the right order
# (the order actually does not matter, since the analysis step generates the correct order)
mkdir work
$(GHDL_CMD) -i $(GHDL_FLAGS) --work=work $(SRCBASE)/coregen/*.vhd
$(GHDL_CMD) -i $(GHDL_FLAGS) --work=work $(SRCBASE)/pcie/pkg_types.vhd  
$(GHDL_CMD) -i $(GHDL_FLAGS) --work=work $(SRCBASE)/DSP/*.vhd
#finally the main testbench (could be merged with the above)
$(GHDL_CMD) -i $(GHDL_FLAGS) dsptop_tb.vhd

########################
# create the Make file (the binding warning is disabled due to the many generates in the xilinx core libraries)
# also analyzes the design and generates the correct hierarchy strcture
$(GHDL_CMD) -m $(GHDL_FLAGS) -fexplicit --work=work dsp_top_tb

# run the stuff
$(GHDL_CMD) -r $(GHDL_FLAGS) -fexplicit --work=work dsp_top_tb

从导入语句中可以看出,我的源文件实际上位于一个不同的目录中,但GHDL对此没有影响。

直到最后一句话,一切都很好。但是,在运行最后一个命令时,我会收到一个错误:

带有未打开文件的endfile。 出发地: xilinxcorelib.fir_compiler_v6_3(behavioral).fn_read_mif_file at fir_compiler_v6_3.vhd:1648 ghdl:错误:精化过程中的错误

我认为问题在于,我的FIR编译器是使用Xilinx编译器生成的,并且使用一个COE文件来指定过滤器系数。错误发生的行实际上打开了指定过滤器系数的文件。在coregen生成的VHDL文件中,它在这里指定。

代码语言:javascript
复制
-- Configuration specification
  FOR ALL : wrapped_decimator_7fold USE ENTITY XilinxCoreLib.fir_compiler_v6_3(behavioral)
    GENERIC MAP (
      c_coef_file => "decimator_7fold.mif", -- < Problematic file

我现在的问题是:如何让GHDL查找文件。我已经将其复制到正在运行run命令的文件夹中。据我所知,我无法导入非vhdl文件以供GHDL识别.那么,如何使用GHDL来模拟FIR编译器生成的过滤器呢?

我希望有人知道怎么做。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-10 08:42:50

@user1155120 1155120

你的建议是完全正确的。不幸的是,我有比我所知道的更多的mif文件,而且GHDL实际上没有说明它在抱怨哪个文件。我通过直接设置c_elaboration_dir参数,并最终通过复制失败的vhd文件和插入一个报表语句来发现这个问题。

最后,我得到的解决方案是将所有mif文件复制到ghdl执行方向玩具,即Makescript中的cp $(SRCBASE)/coregen/*.mif ./。这解决了问题。你想张贴你的答案,以便我可以接受是作为解决办法,还是你满意的荣誉?

再次感谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55596580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档