SystemVerilog зарегистрировать дизайн избегания гонки
Занимаясь цифровым дизайном в systemverilog, я столкнулся с проблемой гоночных условий.
Испытательный стенд (который я не могу изменить), который управляет моей конструкцией, управляет входами таким образом, что некоторые регистры в схеме не функционируют должным образом из-за состояния гонки.
Вот пример игровой площадки, который иллюстрирует, что происходит (входные данные изменяются "до того, как это происходит" в момент времени 15 нс):
http://www.edaplayground.com/x/rWJ
Есть ли способ сделать дизайн (в данном случае простым регистром) устойчивым к этой конкретной проблеме? Что мне нужно, это утверждение типа "out_data <= preponed(in_data);" или что-то подобное, что сделает порядок изменения входного сигнала несущественным.
Я читал о шаге № 1 в SystemVerilog LRM, но я не уверен, как его использовать, и может ли он вообще помочь мне с этой конкретной проблемой.
1 ответ
Ваш тестовый стенд по сути создает стимул, который нарушает настройки вашего регистра. У вас есть два варианта:
- Убедите автора тестового стенда в его ошибочных способах и заставьте их исправить это.
- Вставьте слой иерархии вокруг дизайна, который задерживает часы, чтобы устранить гонку.