У меня есть большой имитационный испытательный стенд, который выполняет интерфейс между двумя ультрамаскими FPGA Kintex.У меня возникла странная проблема: я не могу заставить запускатьising_edge (CLK).
В проекте есть несколько примеров этого: я прослежу логический путь и получуобнаруживая восходящий_круг (что угодно), который не стреляет.
Вот кикер: заменаising_edge с CLK'EVENT и CLK = '1' приводит к корректному срабатыванию логики, но я не могу просмотреть тысячу исходных файлов, чтобы заменить их все, а затем нажать нагрупповое репо - это было бы абсурдно (плюс код действителен и использовался несколько раз, поэтому внесение такого изменения было бы огромной тратой времени).
Восходящий_круг также эквивалентенCLK'LAST = '0' и CLK'EVENT и CLK = '1' - это утверждение также не запускается.Так что, должно быть, CLK'LAST = '0' не удовлетворен, верно?(Если CLK'EVENT и CLK = '1' срабатывает, а добавление CLK'LAST = '0' не срабатывает, то это должен быть последний элемент, вызывающий проблему).
Однако я смотрюпри дельта-просмотре я не вижу промежуточных значений между 0 и 1 - нет промежуточных состояний с высоким Z, нет неопределенного сигнала, ничего.Выглядит отлично.
Я проверил это с несколькими различными версиями Modelsim с одинаковым результатом (просто чтобы убедиться, что это не регрессия инструмента).
Что в мире может быть причиной этого?
Единственное, что я могу думать о том, что это нестандартно, это то, что я использую внешние имена для передачи часов / данных на несколько уровней вверх по иерархии, но они обновляют ожидаемое значение в окне формы сигнала..
Может ли использование внешних имен для принудительной установки значений каким-то образом вызвать пропадание края, даже если сигналы выглядят правильно (даже до дельт?), Или это может вызвать некоторую несоответствие окна формы сигнала?Что заставляет CLK'LAST эффективно теряться?
Спасибо всем!