Имитировать компилятор Xilinx FIR с помощью файла COE с использованием GHDL - PullRequest
0 голосов
/ 09 апреля 2019

Похоже, что ни на одном из форумов, который я мог найти, не спрашивали, и я не мог найти, как это сделать, используя документацию 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?

Я надеюсь, что кто-то знает, как это сделать.

Заранее спасибо!

1 Ответ

0 голосов
/ 10 апреля 2019

@ user1155120

Ваше предложение было абсолютно правильным. К сожалению, у меня было больше mif-файлов, чем я знал, и GHDL фактически не указывал, на что он жаловался. Я узнал об этом, установив параметр c_elaboration_dir напрямую и, в конечном итоге, скопировав сбойный VHD-файл и вставив оператор отчета.

В итоге я решил скопировать все mif-файлы в директорию исполнения ghdl, т.е. cp $(SRCBASE)/coregen/*.mif ./ в Makescript. Это решило проблему. Вы хотите опубликовать свой ответ, чтобы я мог принять это как решение, или вы довольны кудо?

Еще раз спасибо!

...