Jump to content

    

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

Добрый день!

 

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

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

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

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

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

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

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

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

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

Edited by MickeyMouse

Share this post


Link to post
Share on other sites

Ну а лучше всего чтобы синхронизатор был библиотечным элементом

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 14.02.2019 в 21:40, Aleх сказал:

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this