Проблема вкратце такая:
выставлена опция в Квартусе (QSF):
Код
set_global_assignment -name AUTO_GLOBAL_CLOCK OFF
и она как будто не работает - фиттер продолжает запихивать ненужные мне сигналы в глобальныe сети и в конце заваливается, потому как их всего 16. А сигналов "похожих" на клок - несколько сотен.
Нужен какой-то способ абсолютно запретить Квартусу что-либо класть в глобальный раутинг.
Кто-то знает способ?
-----------------------------------------------------------------------------
Подробнее:
в QSF выставлено следующее:
Код
set_global_assignment -name AUTO_GLOBAL_CLOCK OFF
set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS OFF
set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS OFF
Плюс, пара десятков не-клоков которые я уже успел отловить:
Код
set_instance_assignment -name GLOBAL_SIGNAL OFF -to u_ ... ... _НЕ_КЛОК
set_instance_assignment -name GLOBAL_SIGNAL OFF -to u_ ... ..._НЕ_КЛОК
set_instance_assignment -name GLOBAL_SIGNAL OFF -to u_ ... ..._НЕ_КЛОК
Плюс, несколько НУЖНЫХ мне установок:
Код
set_instance_assignment -name GLOBAL_SIGNAL ON-to u_ ... ..._ДА_КЛОК
set_instance_assignment -name GLOBAL_SIGNAL ON -to u_ ... ..._ДА_КЛОК
set_instance_assignment -name GLOBAL_SIGNAL ON -to u_ ... ..._ДА_КЛОК
В самом RTL есть еще несколько глобальных буферов для клока, в сумме с установленными в QSF - всего 16.
В процессе фиттинга Квартус кидает подобную ошибку:
Код
Error: Design requires 17 clock signal(s) of type Global Clock but device can contain only 16 clock signals of type Global Clock
И далее список клоков, из которых 16 правильные и еще один ненужный.
-------------------------------------------
Проблема в том, что компиляция до момента ошибки, несколько часов и каждый раз получается поймать только один ненужный клок.
Я его выставляю в список GLOBAL_SIGNAL OFF и запускаю заново и так сто-питсот раз.
и еще этот Квартус меняет имена и не всегда кушает "*" в QSF. И один раз он засовывает, например, combout~54 в globals, а в следующей компиляции - combout~100500.
Имена меняются, непредсказуемо - особенно когда он какой-то wire для улучшения тайминга/раутинга заталкивает в глобальный нет. И имя этого wire будет что-то вроде __~47 , существует оно только в этой конкретной компиляции.
------------------------------------------
Сам проект - эмуляция большого чипа на ПЛИСе. Поэтому код огромен, написан почти сотней людей.
В виду чувствительности такого кода, оптимизации связанные с изменением многих блоков не подходят...
И жестко привязываться к железу ПЛИС-а с партишинами, лоджик-локами и прочей инкрементальщиной тоже нельзя.
------------------------------------------
Окружение:
Девайс: Stratix II, EP2S180F1508C3
Версии Квартуса, где пробовалось: 9.0, 10.1-SP1
под Юниксом, если важно - узнаю точнее какие машины.
Спасибо всем кто откликнется!
