skv 0 30 марта, 2005 Опубликовано 30 марта, 2005 · Жалоба Для верификации проекта в ModelSim используется VPI. Столкнулся с проблемой. Нужно по сигналу записи в буфер записывать в него данные извне (из другого симулятора). Как используя Verilog VPI отследить наличие сигнала записи и вызвать какую-то функцию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 30 марта, 2005 Опубликовано 30 марта, 2005 · Жалоба Устанавливаете свой обработчик на изменение сигнала записи. И далее обрабатываете. init(.....) { ..... proc = mti_CreateProcess("p1", my_proc, ports); mti_Sensitize(proc, ports->wr, MTI_EVENT); .... } static void my_proc (void *param) { тут делаем все, что нам нужно } В папке examples modelsim примеров очень много. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skv 0 30 марта, 2005 Опубликовано 30 марта, 2005 · Жалоба А при чем здесь Verilog VPI? В приведенном Вами примере используется VHDL FLI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 30 марта, 2005 Опубликовано 30 марта, 2005 · Жалоба Fli, pli какая разница моделсиму все равно. Идите в папку MODELSIM/examples/vpi И смотрите в файле vpi_test.c как инициализировын вызов $traverse, который обрабатывает функция vpit_TraverseDesign(PLI_BYTE8 *user_data). В том же файле смотрим на static void vpit_DumpModuleInfo( vpiHandle parent ) . А в файле ./include/vpi_user.h видим ф-ии XXTERN void vpi_get_value PROTO_PARAMS((vpiHandle expr, p_vpi_value value_p)); XXTERN vpiHandle vpi_put_value PROTO_PARAMS((vpiHandle object, p_vpi_value value_p, p_vpi_time time_p, PLI_INT32 flags)); Вызов вашей ф-ии из verilog производить по фронту сигнала записи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться