Перейти к содержанию
    

Работа с синхронизаторами в Innovus

Добрый день!

 

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

Какими способами их можно оптимально размещать/разводить? Т.е. максимально близко друг к другу.

Скажем в том же Vivado при работе с ПЛИС можно указать атрибут типа async_reg для таких случаев. Есть ли что-то подобное(простое и лаконичное) в Innovus.

Сразу скажу, что такие варианты знаю:

- просто констрейнить путь

- далать отдельный макро(слишком гиморойно)

- использовать specifyNetWeight(плохо работает)

- делать Fence для синхронизатора

- их не обязательно максимально близко размещать(не вдаваясь в подробности, в моем случае желательно)

Изменено пользователем MickeyMouse

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чем меньше паразитная емкость между стадиями сдвигового регистра-пересинхронизатора, тем ниже вероятность получить метастабильное состояние. Поэтому желание поставить такие флопы рядом понятно, и тем более понятно, почему делают специальные селлы для пересинхронизации. Если же спец. селлов нет, и малтибит селлов нет, то проще всего сдвигать эти флопы в кучу сразу после плейса, и назначать им статус fixed. Или же сдвигать их после каждой оптимизации. Двигать можно руками, но проще заскриптовать через ECO команды. Еще, можно сделать свой селл-синхронизатор в том же инновусе, выписать либу или ILM-модель, а потом использовать в дизайне как иерархический блок. Либо, попробовать объединять флопы в SDP структуры. Но я так никогда не заморачивался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 14.02.2019 в 21:40, Aleх сказал:

Чем меньше паразитная емкость между стадиями сдвигового регистра-пересинхронизатора, тем ниже вероятность получить метастабильное состояние. Поэтому желание поставить такие флопы рядом понятно, и тем более понятно, почему делают специальные селлы для пересинхронизации. Если же спец. селлов нет, и малтибит селлов нет, то проще всего сдвигать эти флопы в кучу сразу после плейса, и назначать им статус fixed. Или же сдвигать их после каждой оптимизации. Двигать можно руками, но проще заскриптовать через ECO команды. Еще, можно сделать свой селл-синхронизатор в том же инновусе, выписать либу или ILM-модель, а потом использовать в дизайне как иерархический блок. Либо, попробовать объединять флопы в SDP структуры. Но я так никогда не заморачивался.

Спасибо за подробный ответ!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...