Переключатель неактивности для SystemVerilog Testbench Simulation (VCS) - PullRequest
1 голос
/ 10 марта 2012

Привет и спасибо за просмотр.

Я размышлял над идеей отключения бездействия для симуляции SystemVerilog.

Есть ли способ, которым длительная (программируемая) продолжительность бездействия при запуске «simv» может вызвать внутреннее событие для вызова «$ finish»? Или это возможно с помощью команды VCS?

Позволяет провести мозговой штурм. И дайте мне знать, если что-то неясно.

RRS

Ответы [ 2 ]

1 голос
/ 12 марта 2012

В VHDL я использую разрешенный сигнал.

Каждый процесс, который генерирует или анализирует данные, записывает 0 в этот сигнал во время работы.Как только он находится в состоянии для завершения моделирования, он пишет 1.

Только когда все процессы выполнены успешно, состояние сигнала изменяется на 1 (это либо X, либо 0 в остальное время).

Монитор процессов генерации часовэтот сигнал и когда он становится 1, они прекращают генерировать тактовые импульсы;дальнейшие переходы не запланированы, и симулятор знает, что нужно остановиться.

Предположительно, Verilog может сделать нечто подобное.

1 голос
/ 10 марта 2012

В компаниях по разработке микросхем, на которые я работал, это называется «проверкой покоя», но я не уверен, является ли это отраслевым стандартом.Вы реализуете «инструментальный код», который проверяет, что система достигла состояния покоя.V̶e̶r̶i̶s̶i̶t̶y̶'̶s̶ Инструмент Cadence Specman-e делает это довольно элегантно, возражая против завершения механизма тестирования (raise_objection(MAIN_TEST_DONE)/drop_objection(MAIN_TEST_DONE)).По сути, мониторы всей системы «поднимают» возражение в начале симуляции (т.е. увеличивают счетчик), затем, когда симуляция запускается, они определяют, что их часть проверяемого устройства находится в состоянии покоя, и они «понижают» возражение (т.е. декрементэто глобальный счетчик).Когда больше нет возражений против завершения теста (т. Е. Глобальный счетчик равен 0), тогда вызывается $finish.Мониторы могут поднимать и понижать возражения на протяжении всего теста, но если и когда счетчик когда-либо достигнет 0, тест будет $finish 'd.

Универсальная методология проверки (UVM) взяла эту методологию у Specman иописано здесь в их Справочном руководстве UVM .UVM в первую очередь реализован с Verilog, поэтому вы можете использовать их свободно доступную библиотеку для реализации «проверки покоя».Справочное руководство Cadence Specman UVM также описывает этот механизм на http://support.cadence.com.К сожалению, Cadence требует, чтобы вы были клиентом, прежде чем они покажут вам свои документы, и поэтому вы должны использовать поисковую систему, не принадлежащую Google, чтобы найти то, что вы хотите.Это немного больно.

...