Внутри чипа дизайнерских компаний, которые я работал, это называется «проверка в состоянии покоя», но я не уверен, что это стандарт название отрасли. Вы внедряете «код инструментария», который проверяет, что система поступила в покое. V̶e̶r̶i̶s̶i̶t̶y̶'̶s̶ Specman-e tool Cadence делает это довольно элегантно с возражением против конца тестового механизма (raise_objection(MAIN_TEST_DONE)/drop_objection(MAIN_TEST_DONE)
). По сути, мониторы повсюду в системе «поднимают» возражение в начале моделирования (т. Е. Увеличивают счетчик), затем, когда имитация запускается, они определяют, что их часть тестируемого устройства находится в состоянии покоя и они «уменьшают» возражение (т.е. уменьшают этот глобальный счетчик). Когда больше нет возражений против окончания теста (т. Е. Глобальный счетчик равен 0), то вызывается $finish
. Мониторы могут поднимать и уменьшать возражения на протяжении всего теста, но если и когда счетчик когда-либо достигает 0, тест равен $finish
'd.
Универсальная методика проверки (UVM) взяла эту методологию от Specman, и она описана здесь в их UVM Reference Manual. В первую очередь, UVM реализуется с Verilog, поэтому вы можете определенно использовать их свободно доступную библиотеку для реализации «проверки покоя». Справочное руководство Cadence's Specman UVM также описывает этот механизм на http://support.cadence.com. К сожалению, Cadence требует, чтобы вы были клиентом, прежде чем они покажут вам свои документы, и поэтому вы должны использовать поисковую систему, отличную от Google, чтобы найти то, что вы хотите. Это немного боль.
Это звучит неплохо.В этот момент я использую killswitch, который отсчитывает до 0 и запускает финиш $. Я думал, есть ли способ получить доступ к списку событий в симуляторе, а затем вызвать, когда больше не осталось событий для имитации. Я предполагаю, что большая проблема заключается в том, что переход часов считается событием. Поправьте меня, если я ошибаюсь. – boffin
Симулятор делает именно это (он смотрит список событий и заканчивается, когда нет запланированных), и я убеждаюсь, что отключу все источники событий (которые на моих тестовых стендах - это всего лишь часы, хотя тестовые узлы очень поведенческий). –