Jump to content

    
Sign in to follow this  
MickeyMouse

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

Recommended Posts

Добрый день!

 

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

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

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

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

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

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

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

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

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

Edited by MickeyMouse

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this