Pull to refresh
22
0
Alex Surkov @Khort

Пользователь

Send message
Кажется, я должен извиниться: модули — Вы ведь имели ввиду процессорные модули, не RTL-IP ядра? А ADM — внешний интерфейс, а не для SoC? В таком случае, сравнивать надо не с AXI (это просто не корректно), а с VME — стандартом де-факто для промышленных систем конца прошлого века.
Спасибо, было любопытно услышать про новый интерфейс.
Интерфейс ADM — кем то используется, кроме авторов? Что означает аббревиатура ADM?
И если это популярный интерфейс, то в чем его преимущества перед, скажем, amba axi?
https://www.tcl.tk/man/tcl8.4/TclCmd/Tcl.htm 7й пункт Variable substitution

Я тремя постами выше обьяснял, почему желательно фигурные скобки ставить. Транслятор в качестве названия переменной берет из текста все символы за долларом до пробела, либо то, что заключено в фигурных скобках.
Лучше работать со списками файлов-исходников, и списком дефайнов. Почему? Потому что и исходники, и дефайны могут быть разные — набор для поведенческого временного моделирования, набор для имплементации ПЛИС, и несколько наборов для ASIC. Автоматизация поиска и составления списков в данном случае — враг, поскольку увеличивает вероятность сделать ошибку там, где ее можно исключить вовсе.

Но я имел ввиду несколько другое — при миграции от одного проекта к другому у Вас остается тот же flow-скрипт, а меняются лишь подгружаемые tcl модули с дефайнами, списками и констрентами. Когда используете отлаженное flow, меньше делаете ошибок.
Отличные лекции!

К слову, у этих же авторов и вторая книга вышла,
Digital Design and Computer Architecture ARM Edition
image

Но в отличие от издания MIPS, версия для ARM не бесплатна и есть только на английском
Собственно, под дефайнами я и имел ввиду задание констант для проекта -переменных, хешей и т.д.

Удобна конвейерная работа, когда используется единый скрипт с flow, в котором лишь в начале подсовываются файл с дефайнами-переменными, списком RTL-исходников и файл с констрейнтами — применительно к конкретному проекту. По сути, ведь проекты отличаются только RTL, названием топ-модуля и констрентами. А flow один раз отладили, и можно использовать постоянно.
К тому же, работа в консоли позволяет проводить распределенные вычисления, если у вас имеется большой кластер из серверов (для очень тяжелых проектов)

По поводу переменных, предыдущий автор все верно написал. К примеру, вы хотите получить переменную
set new-variable ${old-variable}311
Если убрать скобки, транслятор ругнется, что нет такой переменной old-variable311. А префиксы и постфиксы на практике используются очень часто. Поэтому, проще сразу привыкнуть ставить скобки, и забыть о проблеме вообще.

В дополнение к tcl очень полезно изучить еще какой нибудь make, perl и т.д. -они полезны для составления batch файлов для потокового запуска нескольких программ, чистке логов, архивации результа и т.д.
К примеру, батч файл может содержать: очистку лога, запуск квартуса (исполняемый tcl скрипт), архивация результатов, затем запуск симулятора, а потом парсер ошибок по всем логам для выжимки сухого остатка. Запустили на ночь, и пошли спать.

На самом деле, все описанное умещается в одно емкое словосочетание Design automation.
Несколько рекомендаций:
— Название переменных корректнее в фигурные скобки заключать. Пример: puts ${NewValue}
— Комментировать большой кусок кода удобно конструкцией if 0 {… }
— Тиклевский скрипт эстетичней бить на иерархию: отдельно дефайны с конфигурацией, отдельно процедуры, и т.д. Для вызова вложений используется команда source inc_file.tcl
Юрий, нашел те же самые ошибки что и в первом релизе:
Страница 404:
1. С-элемент Мюллера. В оригинале Muller, по фамилии создателя David Muller (USA), а в русскоязычной литературе — Маллер. Мюллер — это кто то другой.
2. Рис 3.6.7 абсолютно неверен. Пруф — википедия правый рисунок. Т.е. на рисунке в книге надо выкинуть инвертор справа, а выход элемента брать со второго плеча ячейки памяти (в виде инверторов во встречном включении).
Виноват, действительно запутался в терминах.
Именно. Получается, что на одну самосинхронную защелку нужно 2 LAB (c использованием local interconnect), а для полноценного самосинхронного Flip-Flop триггера — уже 4 LAB. С-элемент тоже потребует 3-4 LAB с дополнительным local interconnect. Об этом я и писал выше.
В конечном счете, и триггеры и С-элементы — только маленькие винтики в схеме, и если так расточительно тратить local interconnect, то скольконибудь серьезная схема может не влезть в ПЛИС. В идеале хочется обойтись вообще без local interconnect, и это было бы возможно с D-триггером с асинхронным сбросом и установкой (который можно превратить в RS-защелку, подав на клоковый вход константу). Проблема в том, что асинхронные сброс/установка в ПЛИС как правило глобальные, а для асинхронных схем сигналы Set/Reset каждого триггера должна формировать локальная логика. Выходит, снова упираемся в ресурсы ПЛИС — глобальных линий сброса/установки очень мало. Но, надо поэкспериментировать.
В LAB делают обратную связь, но только с выхода D-триггера. А для создания RS триггера на двух LUT требуются обратные связи с выходов именно LUT, а не D-триггера.
А как удалось организовать RS-триггеры на ПЛИС?
Я в свое время искал, и не нашел таких ПЛИС, у которых триггеры имеют асинхронный сброс и установку. Задействовать два LUT внутри одного LAB тоже не получается — внутри LAB нет роутинга в обратную сторону. В результате я пришел к тому, что RS триггер (или сразу С-элемент) можно построить только на двух LAB, что очень расточительно.

По поводу NCL, я лично отношусь к этой технике скептически, поскольку там каждый элемент логического базиса содержит в себе защелку. Т.е. размер схемы получается чудовщиный, а эффект тот же, что и у самосинхронных. Но это — на вкус и цвет
Трудно не согласиться. Но у Варшавского не простых книг, где бы начиналось с «азов». Без серьезной математической подготовки Варшавский вообще не читабелен, на мой взгляд. А вот учебник, что я присоветовал в конце — весьма и весьма читабелен.
Вы понимаете, что если в МК кроме ядра есть еще хотя бы один UART, то это уже SoC?
Вопрос наверное следовало бы поставить по другому — где сейчас используются FPGA со встроенным процессором? И на это ответить действительно сложно — пожалуй что и нигде. Но такие FPGA только-только появились (с АРМами и МИПСами), поэтому делать подобные оценки сейчас — преждевременно.
Согласитесь, что меряете узко — по себе. Примеры приводите свои частные, порядком морально устаревшие. Интерфейсы плавно перетекают из параллельных в последовательные, с мегагерц в гигагерцы, и Ваши решения «на коленке» да «на россыпи» не сегодня так завтра устареют — это неизбежно. К примеру, гигабитный эсернет наверное можно на 4-х слойке развести, но с плейнами земли/питания все же понадежней будет. А если BGA корпуса надо ставить? Платы с 4-6 слоями тоже потихоньку уходят в прошлое.
Нужен ли FPGA/CPLD? Однозначно нужен, хотя бы для защиты разработки от копирования. Нужен ли SoC в FPGA? Все зависит от стоимости ядер — в РФ большинство разработчков пользуется ворованным софтом, и ядра им ничего не стоят. А вот если платить — тогда разработка на дискретных элементах пожалуй дешевле выйдет, чем все в FPGA интегрировать. Многое, конечно, зависит от размера платы — SoC в FPGA будет сильно компактнее. Но, соглашусь с Вами -писать прошивку для FPGA и МК это не то же самое что писать прошивку только для МК. Учитывая статический временной анализ и прочую атрибутику разработки для современных FPGA, нижняя планка квалификации персонала только повышается. И наконец, нужен ли МИПС в SoC? Учитывая долю рынка, занимаемую этой архитектурой — пожалуй что не нужен, рядовым разработчикам уж точно. Нужно ли учить студентов этому? Думаю что нужно, поскольку уровень преподавания электроники в стране, которая отстала по этой самой электронике лет на 10-15 (по разным оценкам), вероятно что тоже отстает лет на 10-15 от мирового уровня. Т.е. как бы выбирать не из чего — если знания предлагают, надо брать, а не вилять хвостом.
P.S. Sorry, торможу. Это для силовой электроники транзисторы, не для логики
Новое поколение транзисторов — это кольцевые затворы, или что то большее?
А тех. процесс какой? А какой реально шаг/расстояние между затворами получается?
Много на себя берете. Как можно отвечать за то, в чем не разбираетесь? В статье сразу бросаются в глаза два ляпа — утверждение про отсутствие закладок, и скриншот со "слоем соединений" где выключены все металлы. Напрашивается логичный вывод, что к проектированию микросхем Вы отношения не имеете.
Обмануть журналиста — как у ребенка конфету отобрать. Но скорее всего, эту фразу автор откуда то скопипастил не подумав.
Пускание пыли в глаза. Это скриншот Synopsys IC — программа разработки топологии кристалла. С таким же успехом могли дать скриншоты VisualStudio или Paint. Но Paint все видели, а IC только специалисты. Вот и скармливают публике :-)

Information

Rating
Does not participate
Location
Россия
Registered
Activity