Модуль не определен при моделировании с использованием Modelsim

Итак, я обновился с Vivado 2015.4 до 2016.2. Я использую Vivado для компиляции файлов моделирования для зашифрованных IP-адресов. Когда я запускаю Modelsim 10.4, появляется новая ошибка:

sources_1/ip/output_buffer/sim/output_buffer.v(289): Module 'fifo_generator_v13_1_1' is not defined.

Первое, что я заметил, это то, что в потоке моего проекта сгенерированные файлы моделирования теперь являются verilog, что может быть источником моих проблем, поскольку я обычно моделировал VHDL.

Сначала я компилирую различные библиотеки, такие как библиотека fifo_generator:

compile_simlib -simulator questa

Затем я создаю файлы моделирования:

import_files -norecurse -fileset sources_1 cgen/output_buffer/output_buffer.xci
upgrade_ip [get_ips output_buffer]
generate_target simulation [get_files output_buffer.xci]
export_simulation -simulator questa -of_objects [get_files output_buffer.xci]
exec echo exit | vsim -c -do top/top.srcs/sources_1/ip/output_buffer_sim/questa/compile.do -modelsimini modelsim.ini

Затем мой файл modelsim.ini сопоставляет эти библиотеки:

[Library]

fifo_generator_v13_1_1 = msim/fifo_generator_v13_1_1
output_buffer = top/top.srcs/sources_1/ip/output_buffer/questa

Наконец, мой сценарий .tcl соберет проект и добавит файлы моделирования:

vlog top / top.srcs / sources_1 / ip / output_buffer / sim / output_buffer.v

Но когда я запускаю свой проект, он жалуется, что не может найти fifo_generator. Есть идеи, почему это может быть?

РЕДАКТИРОВАТЬ

По запросу сгенерированный compile.do:

vlib work
vlib msim

vlib msim/xil_defaultlib
vlib msim/xpm
vlib msim/fifo_generator_v13_1_1

vmap xil_defaultlib msim/xil_defaultlib
vmap xpm msim/xpm
vmap fifo_generator_v13_1_1 msim/fifo_generator_v13_1_1

vlog -work xil_defaultlib -64 -sv \
"/software/CAD/Xilinx/2016.2/Vivado/2016.2/data/ip/xpm/xpm_memory/hdl/xpm_memory_base.sv" \
"/software/CAD/Xilinx/2016.2/Vivado/2016.2/data/ip/xpm/xpm_memory/hdl/xpm_memory_dpdistram.sv" \
"/software/CAD/Xilinx/2016.2/Vivado/2016.2/data/ip/xpm/xpm_memory/hdl/xpm_memory_dprom.sv" \
"/software/CAD/Xilinx/2016.2/Vivado/2016.2/data/ip/xpm/xpm_memory/hdl/xpm_memory_sdpram.sv" \
"/software/CAD/Xilinx/2016.2/Vivado/2016.2/data/ip/xpm/xpm_memory/hdl/xpm_memory_spram.sv" \
"/software/CAD/Xilinx/2016.2/Vivado/2016.2/data/ip/xpm/xpm_memory/hdl/xpm_memory_sprom.sv" \
"/software/CAD/Xilinx/2016.2/Vivado/2016.2/data/ip/xpm/xpm_memory/hdl/xpm_memory_tdpram.sv" \

vcom -work xpm -64 \
"/software/CAD/Xilinx/2016.2/Vivado/2016.2/data/ip/xpm/xpm_VCOMP.vhd" \

vlog -work fifo_generator_v13_1_1 -64 \
"../../output_buffer/fifo_generator_v13_1_1/simulation/fifo_generator_vlog_beh.v" \

vcom -work fifo_generator_v13_1_1 -64 \
"../../output_buffer/fifo_generator_v13_1_1/hdl/fifo_generator_v13_1_rfs.vhd" \

vlog -work fifo_generator_v13_1_1 -64 \
"../../output_buffer/fifo_generator_v13_1_1/hdl/fifo_generator_v13_1_rfs.v" \

vlog -work xil_defaultlib -64 \
"../../output_buffer/sim/output_buffer.v" \

vlog -work xil_defaultlib "glbl.v"

Он копирует файл modelsim.ini, после чего вы можете запустить одну или все три из этих команд. На самом деле все, что я хочу сделать, это скомпилировать, поэтому у меня есть объект, который может быть использован в моем моделировании позже, а именно созданный файл output_buffer.v.

# RUN_STEP: <compile>
compile()
{
  # Compile design files
  source compile.do 2>&1 | tee -a compile.log

}

# RUN_STEP: <elaborate>
elaborate()
{
  source elaborate.do 2>&1 | tee -a elaborate.log
}

# RUN_STEP: <simulate>
simulate()
{
  vsim -64 -c -do "do {simulate.do}" -l simulate.log
}

# STEP: setup
setup()
{
  case $1 in
    "-lib_map_path" )
      if [[ ($2 == "") ]]; then
        echo -e "ERROR: Simulation library directory path not specified (type \"./output_buffer.sh -help\" for more information)\n"
        exit 1
      fi
     copy_setup_file $2
    ;;
    "-reset_run" )
      reset_run
      echo -e "INFO: Simulation run files deleted.\n"
      exit 0
    ;;
    "-noclean_files" )
      # do not remove previous data
    ;;
    * )
     copy_setup_file $2
  esac

  # Add any setup/initialization commands here:-

  # <user specific commands>

}

person fiz    schedule 12.10.2016    source источник


Ответы (1)


Модуль fifo_generator_v13-L fifo_generator_v13_1_11 скомпилирован в библиотеку fifo_generator_v13-L fifo_generator_v13_1_11, и я думаю, что это может быть проблемой. Попробуйте добавить -L fifo_generator_v13_1_1 в свою команду vsim, чтобы также искать модули в этой библиотеке.

person Kamil Rymarz    schedule 12.10.2016
comment
Хорошо, так почему это работает? Это для довольно большого проекта, который необходимо автоматизировать, так как мне кодировать это как автоматизированную команду vsim (например, vmap), команду .tcl или команду modelsim? - person fiz; 12.10.2016
comment
Извините, я неправильно понял параметр -library, он используется для указания, какую библиотеку следует скомпилировать. Можете ли вы предоставить сценарий, сгенерированный командой Vivado export_simulation? - person Kamil Rymarz; 12.10.2016
comment
Сделано. Я уже пробовал добавить эту команду vmap в свой сценарий .tcl, но он просто говорит, что библиотека уже существует. - person fiz; 13.10.2016
comment
vmap в этом случае не поможет, потому что это делается в compile.do. Согласно UG900 команда export_simulation должна генерировать команды сценария .sh для компиляции, разработки и моделирования дизайна. Является ли compile.do файлом, созданным с помощью export_simulation? Он содержит только команды для компиляции дизайна. - person Kamil Rymarz; 13.10.2016
comment
Готово, но я не думаю, что это имеет большое значение. - person fiz; 14.10.2016
comment
Используете ли вы в своем дизайне подробно разработанные и симуляторы, созданные с помощью vivado? Я думаю, что у simulate.do должен быть правильный вызов команды vsim. Под собственно я подразумеваю, что он должен содержать все необходимые библиотеки, добавленные переключателем -L. Если вы не можете использовать эти сценарии напрямую, возможно, вам стоит написать какой-нибудь сценарий для его анализа и копирования всех этих библиотек в сценарий моделирования. - person Kamil Rymarz; 14.10.2016
comment
Итак, в подробном.dp есть переключатель -L после vopt. Итак, что я мог сделать в моем сценарии .tcl, это запустить vopt в верхнем файле с флагами -L. Мне все еще любопытно, почему он не попадает в раздел [Библиотека] в modelsim.ini - person fiz; 14.10.2016