SystemVerilog зарегистрировать дизайн избегания гонки

Занимаясь цифровым дизайном в systemverilog, я столкнулся с проблемой гоночных условий.

Испытательный стенд (который я не могу изменить), который управляет моей конструкцией, управляет входами таким образом, что некоторые регистры в схеме не функционируют должным образом из-за состояния гонки.

Вот пример игровой площадки, который иллюстрирует, что происходит (входные данные изменяются "до того, как это происходит" в момент времени 15 нс):

http://www.edaplayground.com/x/rWJ

Есть ли способ сделать дизайн (в данном случае простым регистром) устойчивым к этой конкретной проблеме? Что мне нужно, это утверждение типа "out_data <= preponed(in_data);" или что-то подобное, что сделает порядок изменения входного сигнала несущественным.

Я читал о шаге № 1 в SystemVerilog LRM, но я не уверен, как его использовать, и может ли он вообще помочь мне с этой конкретной проблемой.

1 ответ

Решение

Ваш тестовый стенд по сути создает стимул, который нарушает настройки вашего регистра. У вас есть два варианта:

  1. Убедите автора тестового стенда в его ошибочных способах и заставьте их исправить это.
  2. Вставьте слой иерархии вокруг дизайна, который задерживает часы, чтобы устранить гонку.
Другие вопросы по тегам