Похоже, что ни на одном из форумов, который я мог найти, не спрашивали, и я не мог найти, как это сделать, используя документацию GHDL.Очевидно, у меня недостаточно репутации, чтобы задать вопрос GHDL в SuperUser (у них нет тегов), поэтому я должен спросить здесь.
Я пытаюсь смоделировать ядро DSP, которое содержит несколькосамописные ядра VHDL, а также несколько ядер Xilinx Coregen с использованием GHDL.Я должен признать, что я довольно новичок в GHDL, но не новичок в VHDL.Я знаю, что логика ядра и тестового стенда - это звук, так как он хорошо имитирует использование ISim.Однако программа имеет свои ограничения, поэтому я хочу попробовать GHDL.
Тем не менее, GHDL, похоже, не справляется с симуляцией компилятора XIRINX FIR из-за отсутствия файла Filter.
Я настраиваю свою среду моделирования, используя фрагменты Makefile ниже
#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 (поведенческий) .fn_read_mif_file at fir_compiler_v6_3.vhd: 1648
ghdl: ошибка: ошибка во время разработки
Я полагаю, что проблема заключается в том, что мой FIR-компилятор генерируется с использованием компилятора FIR Xilinx и использует файл COE для определения коэффициентов фильтра.Строка, в которой происходит ошибка, фактически открывает файл с указанием коэффициентов фильтра.В сгенерированном coregen VHDL-файле он указан здесь
-- 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 искать файл.Я уже скопировал его в папку, где выполняется команда запуска.Насколько я могу судить, я не могу импортировать файлы не-vhdl для распознавания GHDL.Так как же я могу смоделировать фильтр, сгенерированный компилятором FIR, используя GHDL?
Я надеюсь, что кто-то знает, как это сделать.
Заранее спасибо!