Почему? Может ли кто-нибудь ответить «почему»? Возможно, инженер по продуктам или разработчик на Mentor, который побудил к созданию такого поведения, могут ответить на это. Но, не имея этого, мы можем только догадываться. И вот что я здесь делаю.
Я могу придумать несколько возможных вариантов использования, но это не то, что невозможно сделать другим способом. Например, можно было бы иметь общий «контрольный контроллер», который в зависимости от generics/parameters мог бы вызвать определенное поведение симулятора. (Edit:. После повторного чтения одной из ваших ссылок, я вижу, что это точный случай использования)
К примеру, у меня есть этот «общий» TestBench код как:
module testbench;
parameter LOG_SIGNALS = 1'b0;
initial
begin
if LOG_SIGNALS
begin
// Log all signals in the design
mti_fli::mti_Cmd("add wave -r /*")
end
endmodule
Тогда можно было бы ссылаться на это как:
vsim -c -gLOG_SIGNALS=1 work.testbench
Самый большой случай использования для этого может быть, если vsim
вызывается из некоторой среды. Если бы вы делали файл do
, я не уверен, что можно передать параметры сценарию. Скажем, один имел следующий do
файл:
if {$log_signals} {
add wave -r /*
}
Как один набор $log_signals
из командной строки? Я полагаю, можно сделать это через переменные окружения, такие как:
if { [info exists ::env(LOG_SIGNALS)] } {
add wave -r /*
}
Другие используют случаи могут быть, чтобы включить/выключить захват данных об охвате, список файлов, может быть, даже изворотливый случай окончания моделирования.
Но, конечно, все они могут обрабатываться другими способами. И по манерам, я думаю, гораздо яснее и намного легче поддерживать.
Что касается VerTCL, я нахожу его увлекательным. Но неполное. Или, по крайней мере, баребоны. Я нахожу скриптовые тестовые игры чрезвычайно полезными (мы используем их там, где я работаю). И VerTCL - отличный способ сделать это (если вам нравится TCL). Но для этого требуется какая-то фреймворк для считывания сигналов, сигналов возбуждения и, в противном случае, управления имитацией.
Существует острая схожесть с функциональностью VPI или VHPI, для которой VHPI Standard Specification Draft 4.7 1.1.1 Требования и руководящие принципы процедурного интерфейса VHDL дают возможность разработки таких приложений, как: обходные пути проекта, netlisters, экстракторы подключения, совместное моделирование, интерфейсы объединительной платы, модели поведения, среды отладки, тестовый стенд и проверка симуляции, профили кода VHDL и инструменты покрытия, декомпиляторы VHDL и калькуляторы задержки. Передача программного управления с симулятора на внешний код позволяет вам делать что угодно. – user1155120
nvc Nick Gasson имеет оболочку Tcl, которая может быть вызвана опцией командной строки и имеет накладную нагрузку на время запуска моделирования около 70 КБ. Кевин Тибедо ничего не обновил, кроме документации для VerTCL (и vhdl-extras, а также ~ 20 000 строк VHDL) с момента перехода на github (ожидая потери кода Google). Есть кокотб, который позволяет получить более высокий уровень абстракции, чем вы могли бы использовать VHPI (или VPI или FLI), напрямую преодолевая недостатки функций языка описания системы VHDL. – user1155120