Разработка модуля взаимодействия потоков
Модуль взаимодействия потоков реализует функции синхронизации потока симулятора Verilog и потока тестовой системы CTesK. Эти функции используются медиатором и VPI-модулем, поэтому модуль взаимодействия потоков рекомендуется разрабатывать перед разработкой медиатора или VPI-модуля.
Модуль взаимодействия потоков должен реализовывать следующие функции:
- wait_for_check - функция ожидания реакции на тестовое воздействие. Вызывается в медиаторе;
- wait_for_apply - функция ожидания тестового воздействия. Вызывается в VPI-медиаторе, возвращает идентификатор тестового воздействия;
- apply_check - функция передачи реакции на тестовое воздействие. Вызывается в VPI-медиаторе;
- apply_finish - функция посылки сообщения о завершения теста. Вызывается тестовой системой CTesK;
- apply_<воздействие> - функции посылки тестовых воздействий. Вызываются в медиаторе.
Также в модуле взаимодействия потоков можно определить функции:
- start_scenario - функция запуска тестовой системы CTesK. Вызывается в VPI-медиаторе, создает необходимые для взаимодействия потоков ресурсы, устанавливает имя UniTesK-трассы, запускает в отдельном потоке тестовую систему CTesK;
- end_scenario - функция завершения работы тестовой системы CTesK. Вызывается в VPI- медиаторе при получении сообщения о завершении теста, освобождает созданные ресурсы.
Так как модуль использует средства создания и взаимодействия потоков, он является платформенно-зависимым. Мы вели разработку на платформе Windows 2000 и использовали механизм событий Win32. Очевидно, что разработку модуля взаимодействия потоков для каждой конкретной платформы можно автоматизировать.