Jump to content
    

QuestaIntel starter - несколько вопросов

Вызываю questa из меню Quartus Tools -> Run Simulation Tools -> RTL Simulation

Подскажите - как перезапустить симуляцию после редактирования тестбенча или исходников verilog не перезапуская каждый раз Questa?

И еще вопрос - как померить расстояние между фронтами сигналов на осциллограмме в questa?

Спасибо.

Буду признателен, если порекомендуете какой-то толковый курс по Questa, а то методом тыка много не освоишь в такой проге. Спасибо!

Share this post


Link to post
Share on other sites

В коносли квесты restart (-force по желанию) и потом run -all. Можно это же самое сделать через панель инструментов. Или через меню. Но самый удобный способ:

proc r {
  restart -force
  run -all
}

И в консоли просто r <Enter>.

Share this post


Link to post
Share on other sites

42 минуты назад, Mty сказал:

И еще вопрос - как померить расстояние между фронтами сигналов на осциллограмме в questa?

Вам курсорами измерять или автоматически?

Share this post


Link to post
Share on other sites

Спасибо,
мне курсорами было бы здорово.

Share this post


Link to post
Share on other sites

53 minutes ago, dxp said:

В коносли квесты restart (-force по желанию) и потом run -all. Можно это же самое сделать через панель инструментов. Или через меню. Но самый удобный способ:

proc r {
  restart -force
  run -all
}

И в консоли просто r <Enter>.

Благодарю, возможно делаю что то не так, в консоли выдается ошибка.

И еще - как в процедуру добавить перекомпиляцию рабочих verilog файлов?
Спасибо.

 

2025-03-09 17_32_05-q_qk_guide.pdf - Foxit PDF Reader.png

Share this post


Link to post
Share on other sites

14 минут назад, Mty сказал:

в консоли выдается ошибка.

Не, в консоли эти команды работают сами по себе (попробуйте). Если всё работает, то этот код вынесете во внешний файл -- например, restart.do, после запуска один раз делаете загрузку файла do restart.do (файл положите в директорию, откуда квеста стартует (ну, или придётся после do писать путь до этого скриптика), и после этого в консоли будет доступна команда r, которая будет выполнять действия пакетно.

Это метод для автоматизации действий. Очень мощная штука: у квесты богатый API (см. референс по командам), там можно делать всё, что угодно. А загрузку своих скриптов можно делать сразу при запуске квесты, чтобы они были всегда доступны.

Share this post


Link to post
Share on other sites

В 09.03.2025 в 16:24, Mty сказал:

Буду признателен, если порекомендуете какой-то толковый курс по Questa, а то методом тыка много не освоишь в такой проге. Спасибо!

https://www.youtube.com/playlist?list=PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj

Начиная с §10

 

 

 

Share this post


Link to post
Share on other sites

On 3/9/2025 at 5:41 PM, dxp said:

Не, в консоли эти команды работают сами по себе (попробуйте). Если всё работает, то этот код вынесете во внешний файл -- например, restart.do, после запуска один раз делаете загрузку файла do restart.do (файл положите в директорию, откуда квеста стартует (ну, или придётся после do писать путь до этого скриптика), и после этого в консоли будет доступна команда r, которая будет выполнять действия пакетно.

Это метод для автоматизации действий. Очень мощная штука: у квесты богатый API (см. референс по командам), там можно делать всё, что угодно. А загрузку своих скриптов можно делать сразу при запуске квесты, чтобы они были всегда доступны.

Спасибо большое, понял. А как перекомпилить измененные файлы, я имею в в иду какую команду добавить в скрипт?

6 hours ago, Jackov said:

Благодарю, ценно!

Share this post


Link to post
Share on other sites

4 часа назад, Mty сказал:

А как перекомпилить измененные файлы, я имею в в иду какую команду добавить в скрипт?

Перекомпилить можно снаружи. Но можно и внутри квесты, так же командами в консоли -- vlog/vcom (Verilot/VHDL) и vopt. Но тут придётся сообщить этим командам ключи и и список файлов. Чтобы этим можно было удобно пользоваться, нужно написать скрипт чуть сложнее, чем просто команды. Я для этого использую отдельный файл (handoff.do), в котором всё это определяется. Сам файл, конечно, руками не пишу, он генерируется из параметров проекта. И передаётся квесте так же при запуске. Выглядит он примерно так:

set CFG_DIR {/opt/slon/build-system-examples/src/cfg/7a35t}
set TB_NAME {top_tb}
set WLIB_NAME {wlib}
set SRC [list {/opt/slon/build-system-examples/src/syn/top.sv} {/opt/slon/build-system-examples/src/sim/top_tb.sv} {/opt/cad/xilinx/Vivado/2023.1/data/verilog/src/glbl.v}]
set INC_PATH {/opt/slon/build-system-examples/build/7a35t/src /opt/slon/build-system-examples/lib /opt/slon/build-system-examples/src/syn}
set VLOG_FLAGS { -incr -sv -mfcu -O5 -timescale=1ns/1ps -ccflags -I/opt/cad/xilinx/Vitis_HLS/2023.1/include -ccflags "-std=c++14" -ccflags "-Wall" -ccflags "-Wpedantic" +incdir}
set VOPT_FLAGS { glbl -O5 +acc=npr -L wlib -L unifast_ver -L unisims_ver -L unimacro_ver -L secureip -L xpm -L xil_defaultlib -L xpm}
set VSIM_FLAGS { }

Далее, командный скрипт (тоже загружается при старте квесты):

Спойлер
#-----------------------------------------------------------
#
#     VLOG
#
set vlog_flags {}
if {[info exists WorkLib]} {
        quietly append vlog_flags " -work $WorkLib";
}
quietly append vlog_flags " +incdir+" "$IncDirs";
quietly append vlog_flags " " ${VLOG_FLAGS}

#-----------------------------------------------------------
#
#     VOPT
#
quietly set OptimizedDesignName "opt_$DesignName"
quietly set vopt_flags {}
if {[info exists WorkLib]} {
    quietly append vopt_flags " -work $WorkLib";
}
quietly append vopt_flags " " ${VOPT_FLAGS}
quietly append vopt_flags " " $DesignName
quietly append vopt_flags " -o " $OptimizedDesignName;

...

#-------------------------------------------------------------------------------
#
#     Commands
#
proc launch_cmd { Cmd Args } {
    set io [open "| $Cmd $Args" r]
    puts [read $io];
    if {[catch {close $io} err]} {
        puts "[file tail $Cmd] report error: $err"
        return 0;
    }
    return 1;
}
#-------------------------------------------------------------------------------
proc compile {} {

    global vlog_cmd vlog_flags;
    global vcom_cmd vcom_flags;
    global vopt_cmd vopt_flags;

    global SRC

    if {[launch_cmd ${vlog_cmd} [concat ${vlog_flags} ${SRC}]] == 0} {
        exit -code -1;
    }

    if {[launch_cmd ${vopt_cmd} ${vopt_flags}] == 0} {
        exit -code -1;
    }
}
#-------------------------------------------------------------------------------
proc c { } {
    compile;
}
#-------------------------------------------------------------------------------
proc s { { res empty} { wave_ena 1 } } {

    global CFG_DIR

    set res_name ${CFG_DIR}/sim/${res}

    sim_begin;

    if {[file exists ${res_name}]} {
        do ${res_name}
    }

    run -all

    if { $wave_ena != 0 } {
        view wave
    }
    view transcript
}
#-------------------------------------------------------------------------------
proc r { { wave_ena 1 } } {
    restart -force
    run -all

    if { $wave_ena != 0 } {
        view wave
    }
    view transcript
}
#-------------------------------------------------------------------------------

 

Тут он не весь, просто для иллюстрации, полную версию можно посмотреть тут: https://github.com/fpga-lib/site_scons/blob/710cf49cf17587785ee576fe623211acbffd7220/site_tools/questa.tcl

После этого для перекомпиляции проекта достаточно набрать в консоли: c <Enter>, для запуска симуляции: s <Enter>, для перезапуска: r <Enter>. Перечень доступных команд там приведён в заголовке:

echo "Available commands:\n"
echo "    * 'c'       : compile work library."
echo "    * 's'       : launch simulation run."
echo "    * 'r'       : restart simulation run."
echo "    * 'rr'      : restart simulation run with reset transcript file."
echo "    * 'sr  '    : show results of existing simulation run (see below)."
echo "    * 'swc'     : save waveform configuration to file (see below)."

 

Share this post


Link to post
Share on other sites

Спасибо, постараюсь разобраться.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...