Jump to content

    

про мелкую блочную память из latch'ей

Пишу тут обертки для блочной памяти, для выбора наиболее оптимального варианта (регистры, 128x8, 2048x8) по площади. И вот возникает вопрос -- а почему, собственно, память на регистрах делают из D flip-flop'ов? Почему-то ни разу не встречал варианта, сделанного из latch'ей, хотя они по быстродействию и площади вроде бы гораздо предпочтительнее обычных триггеров. Да, как минимум на входы надо будет поставить DFF, но это ж мелочи (по сравнению с массивом).

Так почему ее не делают из защелок? Сложности в статическом анализе таймингов?

Share this post


Link to post
Share on other sites

ну вообщето делают специальными тулами (мемори генератор, регистр-файл генератор) на основе латчей (точнее 6-Т cell, что собственно латч и есть - закольцованые два инвертора) из-за того, что ячейки упакованы в структуру у них отсутствуют промежутки для трассировки и т.п. получается гораздо меньше чем набирать из стандарт целов

а в логику, то есть заменить регистры в RTL латчами нельзя из-за таймингов (с некоторыми условиями можно, и даже лучше может получиться см. time borrowing, но очень много трудностей). не только анализа, но и вообще работы. ходят слухи, что какие-то особенно критические пути (конвеер) в интелях и АМД сделан на латчах, но как оно на самом деле - хз

 

Share this post


Link to post
Share on other sites

На латчах вполне себе делают блоки и памяти и фифо, да и автоматы, и просто в дизайне используют. Латчи занимают в два раза меньше места, поэтому  для заказных ИС использовать латчи выгодно. Скорость у них та же самая, но площадь и ликедж лучше. Из минусов - больше дерево клоков, и еще с латчами сложнее в STA работать. Другой важный момент, следует помнить что в большинстве ПЛИС (которые часто используют для макетирования на пол пути к эсику) защелок какбы и нет физически, а вот массив флопов часто можно смэпить во внутренний массив памяти, что удобно. Поэтому ленивые все делают на фопах - так проще.

Share this post


Link to post
Share on other sites

С латчами одна проблема - они не скан пригодны.

Т.е. DFT их автоматом не протестит. Но кто мешает функционально как и память?

STA  хавает без проблем по дефолту. Можно тайминги расслабить (time borrowing). Никаких проблем с клок три итп. 

-----

В тест енкаунтере вроде есть поддержка теста латчей... но это не совсем автоматом - надо специальный импульс наружу выводить.

У меня чёт не вышло латчи в енкаунтере покрыть ATPGми. Если у кого вышло - научите.

Share this post


Link to post
Share on other sites

Как раз для больших компаний увеличение площади не критично, гораздо более важен стабильный результат. А 128 и 2048 х8 оптимальны для SRAM, и не нужно городить ничего лишнего.

Share this post


Link to post
Share on other sites

на всякий случай, проблема с латчами - это петли обратной связи (feedback loop). что, например, будет если между входом и выходом латча будет инвертор? ну или xor или любая другая логика, куда заведены выходы...

поэтому их и не любят :)

Share this post


Link to post
Share on other sites
13 hours ago, topor_topor said:

С латчами одна проблема - они не скан пригодны.

а зачем блочную память (даже набранную из триггеров) включать в скан-цепочку? Почему ее обычными BIST не тестировать?

21 minutes ago, yes said:

на всякий случай, проблема с латчами - это петли обратной связи (feedback loop)

я ж предлагаю по границе памяти поставить обычные триггеры. Понятно, что латчи требуют повышенной аккуратности.

Share this post


Link to post
Share on other sites

Абсолютно нормальный вариант. Особенно когда компилятора памяти нет, либо он стоит слишком дорого. Создать массив латчей, дешифратор адреса, и т.д. - можно аккуратно все расплейсить и развести даже в P&R туле. Встречал полукастомные блоки памяти и вовсе на флопах - когда процесс нестабилен, параметры транзисторов плывут от партии к партии, и надо сделать максимально кандово. Потому что иначе просто работать не будет. За давностью лет могу даже назвать эту фабрику - Зеленоградский Микрон :-) Не знаю как у них сейчас, а раньше совсем беда была, годами не могли процесс настроить, вывести на серию

Share this post


Link to post
Share on other sites
10 hours ago, yes said:

на всякий случай, проблема с латчами - это петли обратной связи (feedback loop). что, например, будет если между входом и выходом латча будет инвертор? ну или xor или любая другая логика, куда заведены выходы...

поэтому их и не любят :)

Ту не вопросс любви а просто SDC: set_disable_timing

Если латч имеется ввиду два гейта а не нормальній латч....

10 hours ago, demidrol said:

а зачем блочную память (даже набранную из триггеров) включать в скан-цепочку? Почему ее обычными BIST не тестировать?

я ж предлагаю по границе памяти поставить обычные триггеры. Понятно, что латчи требуют повышенной аккуратности.

1) Мы же вроде хотим маленькую память с набора тригеров так? А размер BIST контроллерра он какой по сравнению с маленькой памятью? Всё тут относительно конечно.

2) Не поможет. STA на feedback loop будет шипко ругаться на латч в виде двух гейтов.

Share this post


Link to post
Share on other sites

Лупам неоткуда взяться, если не делать асинхронный автомат записи/чтения. Просто, блок латчей, дешифратор адреса, регистры(латчи) по входу адреса и данных, можно еще по выходу поставить регистры (латчи). Все синхронно, и нет здесь никаких лупов.

Другое дело, если вы хотите асинхронную память сделать (где из фронта сигнала записи делается импульс, к примеру). Но ведь и здесь никто не мешает автомат на флопах спроектировать, а сам массив памяти - на латчах.

Что касается BIST, то для такой памяти он не обязателен. Это ведь не та память, что делается на пределе DRC норм (или даже по особым правилам, недоступным разработчикам), это ведь обычные штатные латчи, обычныая логика. Если чип не содержит DFT, то и BIST для такой памяти делать нет резона.

Share this post


Link to post
Share on other sites
22 hours ago, topor_topor said:

Ту не вопросс любви а просто SDC: set_disable_timing

мне казалось, что clock констрейн (период) работает с латчами.

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

 

Share this post


Link to post
Share on other sites
2 hours ago, yes said:

мне казалось, что clock констрейн (период) работает с латчами.

Надо определится что мы называем латчем.

Если это асинхронный RS-тригер на 2-х перекрученных NAND (для памяти чёбы не использовать?), то будут лупы.

Если это латч в смысле тригер управляемый уровнем а не еджем - то STA по дефолту хавает. Ну можно тайм боровинг задать ещё.

Share this post


Link to post
Share on other sites

Латч, по опредлению, это бистабильный триггер, управляемый уровнем. Класическая схема  - два инвертора во встречном включении, плюс управление (вспоминаем 6Т память), но может быть вырожден в RS триггер на двух NAND/NOR или во что то другое, в примеру - в синхронный латч, о которых здесь идет речь. Синхронный латч как правило имеет один вход управления, а его тайминг-модель содержит синхронные арки. Поэтому он подходит для STA. А вот, к примеру, модель RS-латча не имеет синхронных арок, и для классического STA не подходит.

Далее. Если замкнуть два синхронных латча с разнополярным управлением в кольцо, то действительно получается луп. Просто потому, что фазы клока немного расходятся, и образуется окно времени, где оба латча открыты. Это классическое нарушение Hold. Однако на практике, задержки цепей и логических элементов (представим, что между латчами есть логика) это нарушение исправляют - переходной процесс посто не успевает добежать с выхода одного латча до входа другого. Из чего следует, что луп из двух латчей с разнополярным управлением - уже вовсе не луп, и разрывать его с помощью disable_timing не нужно. Если STA показывает нарушение холд в такой схеме, просто добавьте буферов :-)

Share this post


Link to post
Share on other sites
14 hours ago, topor_topor said:

Надо определится что мы называем латчем.

d-latch, половинка триггера. схема на 6-ти транзисторах (условно) - то есть входы GATE и DATA, ну и выход, соответственно.

always @(gate or data) if (gate) q<=data;

 

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