Занимаясь цифровым дизайном в systemverilog, я столкнулся с проблемой, связанной с гоночными условиями.
Испытательный стенд (который я не могу изменить), который управляет моим дизайном, управляет входами таким образом, что некоторые регистры в проекте не работают должным образом из-за состояния гонки.
Вот пример eda-игровая площадка, который иллюстрирует, что происходит (входные данные меняются «раньше», чем это сделают часы, в момент времени 15 нс):
http://www.edaplayground.com/x/rWJ
Есть ли способ сделать дизайн (в данном случае простой регистр) устойчивым к этой конкретной проблеме? Мне нужно такое выражение, как «out_data‹ = preponed (in_data); » или что-то подобное, что сделает порядок изменения входного сигнала несущественным.
Я читал о шаге №1 в SystemVerilog LRM, но я не уверен, как его использовать и может ли он вообще помочь мне с этой конкретной проблемой.
clock = ~clock
с назначением блокировка. Кроме того, если ваши входы и часы изменяются одновременно, какого поведения вы ожидаете? - person Serge   schedule 29.08.2017