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

#vhdl #verilog #simulation #modelsim #vivado

#vhdl #verilog #Симуляция #modelsim #vivado

Вопрос:

Итак, я обновился с 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 создаст проект и добавит файлы моделирования:

видеоблог 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>amp;1 | tee -a compile.log

}

# RUN_STEP: <elaborate>
elaborate()
{
  source elaborate.do 2>amp;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>

}
  

Ответ №1:

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

Комментарии:

1. Хорошо, так почему это работает? Это для довольно большого проекта, который необходимо автоматизировать, так как мне его закодировать в виде автоматической команды vsim (например, vmap), команды .tcl или команды modelsim?

2. Извините, я неправильно понял -параметр библиотеки, он используется для указания, какая библиотека должна быть скомпилирована. Можете ли вы предоставить сценарий, сгенерированный командой Vivado export_simulation ?

3. Сделано. Я уже пытался добавить эту команду vmap в мой скрипт .tcl, но он просто говорит «Библиотека уже существует».

4. vmap не поможет в этом случае, потому что это делается в compile.do . Согласно UG900 команда export_simulation должна генерировать команды .sh script witch для компиляции, разработки и моделирования дизайна. Является компиляцией. есть ли файл, который был сгенерирован с помощью export_simulation ? Он содержит только команды для компиляции дизайна.

5. Сделано, но я не думаю, что это имеет большое значение.