выполнить perl из specman

Мне нужно вызвать сценарий Perl из теста E, который я написал. Мне нужно создать скрипт C для вызова ini-файла, который создаст файл конфигурации, который мне нужен для теста, который я пишу. Я хочу, чтобы тест вызывал Perl, который будет обрабатывать процесс ini->C->config, а затем продолжил тест. Любые идеи?


person Chaggster    schedule 14.11.2010    source источник
comment
Что такое E? Вам действительно нужен E для вызова Perl и Perl для вызова C (что такое сценарий C?) для создания файла конфигурации? Упрощение — мое предложение.   -  person pmg    schedule 14.11.2010
comment
e — язык проверки оборудования. Его наиболее распространенной реализацией (единственной, вероятно..) является Specman от Cadence. См. en.wikipedia.org/wiki/Specman.   -  person Ross Rogers    schedule 15.11.2010
comment
К вашему сведению, Perl API для Specman отсутствует. Только C и C++ API для компиляции вашего кода с помощью Specman.   -  person Ross Rogers    schedule 15.11.2010


Ответы (1)


Вы можете выполнять системные вызовы или команды оболочки с помощью функций system или output_from. Это можно использовать для выполнения произвольных команд, включая вызовы Perl. Функция system возвращает возвращаемое значение вызова оболочки, тогда как output_from возвращает стандартный вывод (и, возможно, стандартную ошибку... проверьте свои документы...).

Примеры:

var ret := system("echo hello world");

печатает на экран/файл журнала Specman

hello world

Принимая во внимание, что output_from используется как:

var std_out := output_from("echo hello world");
print std_out;

и печатает:

std_out = "hello world"

Функции принимают строку, поэтому вы можете создать аргументы, используя функции append() и appendf().

Небольшое замечание: вы можете напрямую обращаться к интерфейсу командной строки симулятора, используя simulator_command(cmd_str). Я использовал это раньше для разговора с VCS Synopsys.

simulator_command("quit");
person Ross Rogers    schedule 14.11.2010
comment
есть ли способ получить как вывод, так и возвращаемое значение одновременно? - person Nathan Fellman; 16.11.2010
comment
output_from_check() — работает так же, как output_from(), за исключением того, что если команда возвращает не ноль, она выдает ошибку. Если вам нужно иметь возможность обрабатывать состояние ошибки, вам нужно обернуть его обработчиком исключений try { } else { }. Это не позволит вам получить точное возвращаемое значение, но позволит вам обнаруживать и обрабатывать неудачные системные вызовы. - person Ross Rogers; 17.11.2010