• ПЛИС — мои первые шаги
    +2
    Проблема-то не только в задержках. Проблема еще в том, что асинхронная схема подразумевает использование комбинационных сигналов для упраления другими частями схемы. Это подразумевает, что разработчик обязан обеспечить отсутствие паразитных импульсов на выходе таких комбинационных схем (простейший пример: нарисуйте схему двухвходового мультиплексора на элементах И-ИЛИ-НЕ с ненулевыми задержками элементов, и вы увидите, что когда оба его входа данных равны единице, то при переключении с одного на второй на выходе на некоторое время установится ноль). Но только в ПЛИСах комбинационная логика реализуется на LUT-ах, а в даташитах написано, что отсутствие паразитных импульсов на выходе LUT-ов не гарантируется.
  • ПЛИС — мои первые шаги
    0
    Асинхронность оправдана только там, где физически без нее не обойтись — перевод сигнала между двумя асинхронными тактовыми сигналами. Во всех остальных случаях это равносильно ужину при свечах на бочке с порохом. У нас индусы умудрились зарелизить асинхронный контроллер. В результате одна микросхема заработала, а вторая нет. После чего я их заставил передать все на кондовую синхронную логику. Ну желающие рискнуть оптимисты всегда найдутся, но я бы не рекомендовал. Если не хватает скорости тактового сигнала — значит синхронизацию нужно делать более быстрым тактовым сигналом.
  • ПЛИС — мои первые шаги
    +3
    А чего тут сравнивать? Примерно 95% коммерческих разработчиков IP (начиная с ARM) используют Verilog. А они, смею вас уверить, не враги сами себе.
  • Бесплатный учебник электроники, архитектуры компьютера и низкоуровневого программирования на русском языке
    +1
    Картинки мы не трогали. А обозначения полезно знать разные, лично я предпочитаю IEC 60617-12 (элемент ИЛИ изображается гораздо логичнее, чем по ГОСТу): ru.wikipedia.org/wiki/Логический_вентиль
  • Бесплатный учебник электроники, архитектуры компьютера и низкоуровневого программирования на русском языке
    0
    Считается, что основной контингент будет читать с планшетов. Я тоже был поначалу не в восторге, но потом привык. На большом мониторе лучше отображать сразу две страницы бок о бок.
  • Бесплатный учебник электроники, архитектуры компьютера и низкоуровневого программирования на русском языке
    +3
    А вы откройте и сразу увидите! А если вы уже открыли, то подсказка — верстка у английской и русской версии совершенно разные.
  • Бесплатный учебник электроники, архитектуры компьютера и низкоуровневого программирования на русском языке
    +1
    Кстати, в оригинале электронная книга стоит $50, так что можно серьезно сэкономить.
  • Бесплатный учебник электроники, архитектуры компьютера и низкоуровневого программирования на русском языке
    +1
    Книга действительно хорошая. Надеюсь, теперь у меня будет меньше проблем с наймом сотрудников!
  • Мексика и Россия: схожие проблемы в обучении разработке электроники
    +5
    Я собеседовал несколько (>10) кандидатов на junior-позиции (hardware) в наших офисах в Калифорнии и Китае — все они были вчерашними студентами американских и китайских университетов. Не могу сказать, что уровень их знаний хоть сколько-нибудь заметно отличался от уровня хорошего пятикурсника кафедры вычислительной техники хорошего российского института.

    В одном только Питере таких студентов должны выпускаться сотни в год. Только хороших среди них — раз два и обчелся. Все, кто поумнее, перепрофилируются на программистов, потому что знают, что нормальной работы по специальности не найти. А потом, когда приходит иностранная компания и хочет нанять людей — не из кого выбирать. После этого такая компания, привыкшая, что это она выбирает кандидатов, а не бегает за ними, уговаривая пособеседоваться, больше в России никого на hardware не нанимает, а вместо этого открывает с нуля новый дизайн-центр в Китае и нанимает 30 местных выпускников. Ибо там есть выбор, а у нас нет (disclaimer: все совпадения с реальными компаниями случайны).
  • Мультиклет R1 — первые тесты
    +1
    Ну просто я знаю, что наша контора продает свои собственные библиотеки для TSMC. То есть если я пойду прямо к TMSC и скажу, что хочу в их шаттл — они дадут либы бесплатно? Или нужно сначала кровью подписаться, что куплю контейнер пластин?

    Интересно, как фаблесс модель работает в реальной жизни.
  • Мультиклет R1 — первые тесты
    +2
    Интересно: на сайте ЦР написано, что вы им дали нетлист, а топологию они сделали сами под один из техпроцессов, который они поддерживают. Т.е. у них, видимо, куплены библиотеки стандартных ячеек под несколько техпроцессов (TSMC, Silterra, TowerJazz, Микрон). Библиотека (да и memory compiler) ведь нужна для синтеза — они вам ее дали, перепродали, или вы сами с фабрикой договаривались? На каком этапе разработки был выбран техпроцесс? Заранее, под какие-то рамки производительности, или сначала написали RTL, а потом выбирали, где произвести? (т.е. выбирали техпроцесс под частоту, или частоту под техпроцесс?)
  • Метастабильность триггера и межтактовая синхронизация
    0
    Правда, такой «универсальный» вариант, скорее всего, не будет работать для DFT-шного scan-теста (но это актуально только для ASIC-ов).

    Поэтому самый универсальный вариант такой:

    input clk;
    input bad_reset;
    input dft_mode;
    output good_reset;
    
    reg [1:0] rst_sync_r;
    
    always @(posedge clk, posedge bad_reset)
        if (bad_reset) rst_sync_r <= 2'b11;
        else rst_sync_r <= {rst_sync_r[0], 1'b0};
    
    assign good_reset = (dft_mode) ? bad_reset : rst_sync_r[1];
    
  • Метастабильность триггера и межтактовая синхронизация
    0
    Для метастабильного состояния нужен тактовый сигнал, а там его нету
  • Метастабильность триггера и межтактовая синхронизация
    +1
    Что-то никакого промышленного применения не наблюдается. ARM-ядро (AMULET) было сделано, если мне не изменяет память, где-то в 1995 году, т.е. 20 лет назад.

    Есть хорошая книга про асинхронные схемы, правда стоит $245 на Амазоне: www.amazon.com/Principles-Asynchronous-Circuit-Design-Perspective/dp/0792376137/ref=sr_1_1?ie=UTF8&s=books&qid=1247408117&sr=8-1

    А вот ее совершенно бесплатная (легальная!) версия, чуть-чуть урезанная: eecourses.technion.ac.il/048878/book.pdf — не благодарите :)

    Самое интересное, что это одна из немногих областей, где был заметный в мировом масштабе вклад отечественных ученых (Варшавский и компания из ЛЭТИ).
  • Метастабильность триггера и межтактовая синхронизация
    0
    В статье неявно сказана одна очень важная вещь, которую надо бы особо выделить: критически важно триггеры синхронизатора располагать как можно ближе друг к другу, это прямым образом влияет на время наработки на отказ, причем разница может быть на десятки порядков: www.aspenlogic.com/images/alj001.pdf
  • Метастабильность триггера и межтактовая синхронизация
    +1
    Синхронный сброс требует тактового сигнала, но иногда бывает нужно сбросить все триггеры до того, как тактовый сигнал появится (например, в контроллере JTAG, если он тактируется сигналом TCK, а не внешним тактовым сигналом).

    Именно поэтому самый универсальный вариант — асинхронная установка сигнала сброса и синхронное снятие, то есть сбрасываем сразу, как только пришел сигнал сброса, а выводим из ресета только после синхронизации, чтобы быть уверенными, что все триггеры выйдут из ресета одновременно (на одном такте).
  • Исходники промышленных процессоров станут доступными для университетов
    +3
    Это да, только он будет в три раза больше по размеру, жрать электроэнергию как крокодил, его CoreMark будет раза в три-четыре меньше, чем у конкурентов, а раз в сто тысяч выполненных команд в нем будут возникать непонятные баги, которые никто никогда не отладит.
  • Организация виртуальной памяти
    0
    Спасибо — то, что надо
  • Приемы при проектировании архитектуры игр
    +7
    «машины состояний» (state machines) — это то, что в общепринятой русскоязычной терминологии называется конечными автоматами
  • Как начать разрабатывать железо, используя ПЛИС — пошаговая инструкция
    0
    Самое интересное, что мне по работе приходится общаться с большим числом ASIC-дизайнеров (зарубежных, разумеется) и большинство из них испытывают непонятный ужас перед FPGA и если надо что-то сделать, то просят кого-нибудь другого (иногда меня).
  • Не очередная evalboard для STM32 – делаем правильно в XFR-L3 «KYRNN»
    +4
    Мужик, немного самоиронии и тебе бы не помешало. А то так ты к успеху на Хабре не придешь. Здесь не ЖЖ, чтобы можно было всех в комментах обзывать хомячками, и тебе за это ничего не было бы.
  • Не очередная evalboard для STM32 – делаем правильно в XFR-L3 «KYRNN»
    0
    попытался скачать файлы, а мне говорят: «The site is temporarily unavailable for we are making some important upgrades to its parts. We apologize for the inconvenience. We'll have it back online for you as soon as possible. Please try again in 598 seconds.»

    Так что еще одна ссылка не помешала бы.
  • Не очередная evalboard для STM32 – делаем правильно в XFR-L3 «KYRNN»
    0
    Умные люди говорят, что заморочки с разводкой зависят не от частоты. Тем более то, что упомянул автор — это не заморочки, это то, что профессиональный разработчик делает на автомате — всегда!
  • FLProg.ru – лицо программы FLProg в интернете
    +1
    Вот интересно, железячники начинали с принципиальных схем и потом перешли на языковые описания. А тут все наоборот.
  • Пару слов о конвейерах в FPGA
    0
    В реальной жизни это зависит от сигналов. Если сигнал идет от АЦП с синхронным интерфейсом, который вы сами тактируете, то они будут синхронными. Если сигнал идет с кнопок, или с UART-а, или с другого устройства, которое работает на своей собственной частоте, независимой от частоты ПЛИС, то они не будут синхронными. В этом случае возможен вариант, когда входные сигналы изменятся слишком близко ко фронту клока в ПЛИС, что приведет к нарушению времени предустановки триггеров (setup violation). С этим можно бороться путем добавления синхронизаторов
  • Разбираем протокол 2-wire JTAG
    0
    С точки зрения протокола 2-wire JTAG и SWD не совместимы. Но я слышал, что есть возможность использовать одни и те же провода для подключения и SWD-, и 2-wire JTAG-устройств. Для этого там хитрый протокол перевода устройств в online- и offline-режимы, но поскольку руками я это не трогал, то не могу сказать, действительно ли это работает и есть ли подводные камни.
  • Пару слов о конвейерах в FPGA
    0
    Разумеется это полный аналог assign, так как код делает то же самое. Я тоже предпочитаю assign, чтобы меньше букв писать, но когда логика на два экрана то assign уже не очень подходит.
  • Пару слов о конвейерах в FPGA
    0
    SystemVerilog вас до добра не доведет :D

    На самом деле, я видел код «с первой строчкой» и в чистом Верилоге — стандарту он не противоречит, а все остальное — дело привычки. LEDA на такое не ругается :)
  • Пару слов о конвейерах в FPGA
    0
    А как-нибудь так?

    if ( startofpacket_d1 )
        new_data_c = { data_d1[1:0], data_i[7:4], data_d1[7:6] };
    else if ( startofpacket_o )
        new_data_c = {data_d2[5:2], data_d1[3:0]};
    else
        new_data_c = data_d1;     
    
  • Пару слов о конвейерах в FPGA
    0
    Здесь есть один нюанс. В спецификации AXI сказано: «There are no ordering restrictions between read and write transactions with the same AWID and ARID. If a master requires an ordering restriction then it must ensure that the first transaction is fully completed before the second transaction is issued». (пункт 8.1 для AXI3 и 8.2 для AXI4),

    Таким образом, действительно мастер может потребовать, чтобы все запросы на запись выполнялись по порядку, и все запросы на чтение тоже, но потребовать, чтобы запросы на запись и чтение не переупорядочивались между собой, он не может, даже если ARID и AWID будут одинаковы.
  • Пару слов о конвейерах в FPGA
    0
    Я сейчас сам не пишу код. Но поскольку наша контора продает RTL тем, кто делает ASIC-и, то к предупреждениям отношение очень серьезное. Наши индусы используют статический анализатор LEDA с нашим собственным набором правил (вроде бы, переделанным из IBM-овского), и релиз не пропустят, если есть хоть одно предупреждение. Если есть какие-то false-positive предупреждения, то они индивидуально маскируются.
  • Пару слов о конвейерах в FPGA
    0
    Synplify Premier 2014.09:

    @W:CL169: loop_l2.sv(30) | Pruning register data_d2[0][7:0]

    @W:CL169: loop_l2.sv(30) | Pruning register data_d2[1][7:0]

    @W:CL169: loop_l2.sv(30) | Pruning register data_d2[6][7:0]

    @W:CL169: loop_l2.sv(30) | Pruning register data_d2[7][7:0]
  • Пару слов о конвейерах в FPGA
    0
    Мы теперь на вы? :D
  • Пару слов о конвейерах в FPGA
    0
    Все это мелочи по сравнению с тем, что AXI может вернуть данные не в том порядке, в котором их попросил мастер.
  • Пару слов о конвейерах в FPGA
    +2
    Кстати always в Верилоге довольно часто применяют для описания сложной комбинаторной логики, типа функций переходов автоматов и т.д. Гораздо нагляднее, чем городить?: (?: (?: (?: (? :)))).

    Но вот код автора действительно приведет к куче ворнингов при синтезе, например про неиспользуемые биты в data_d2.

    Лично мне религия не позволяет написать так, как автор — описание очень похоже на inferred latch, если не заметить строку «new_data_c = data_d1;», но думаю, что это уж точно дело вкуса.
  • Пару слов о конвейерах в FPGA
    0
    Четырехфазное рукопожатие, ты хотел сказать
  • Сумбурные размышления о будущем технологии FPGA
    +2
    Подавляющее большинство фирм делают микросхемы на стандартных ячейках (уровень типа И, НЕ, ИЛИ, И-НЕ, И-ИЛИ-НЕ, отдельных триггеров и т.д. — на самом деле, обычно в библиотеке несколько сотен ячеек). Библиотеки разные для каждой фабрики и каждого техпроцесса, то есть разных библиотек тоже сотни (TSMC, UMC, Global Foundries, SMIC — можно купить все, что душе угодно, начиная от 180нм вплоть до 22нм). Можно купить любую, подключить ее к синтезатору типа Design Compiler, и синтезировать один и тот же Вериложный код под любой техпроцесс. Никто сам транзисторы не рисует, кроме разработчиков этих самый библиотек.
    Ну а блоки памяти генерятся memory compiler'ами. Для однопортовой памяти — один компилятор, для двухпортовой — другой, для регистровых файлов — третий.

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

    1. Нужно купить софт. Как минимум, RTL-симулятор, синтезатор (RTL->Netlist) и средство для формальной верификации RTL vs Netlist. Три конторы, куда придется за этим пойти — Synopsys, Cadence и Mentor Graphics. Они делят, наверное, 99% рынка. Софт дорогой, порядок цен на все про все — несколько сотен тысяч долларов за рабочее место (разумеется, можно и впятером работать на одном симуляторе, или в три смены — у всего этого софта обычно floating license).
    2. Купить библиотеку стандартных ячеек. Выбрать количество нанометров, Low Power или High Performance. Не могу сказать, сколько она стоит, но не думаю, что очень дорого. Возможно, что некоторые фабрики дают ее бесплатно при заказе кучи микросхем.
    3. Купить IP-блоки. Обычно покупают процессоры, Bus Fabric-и (AXI, AHB/AHB-Lite, APB), контроллеры внешней памяти типа LPDDR3, PHY для PCIe/USB3/Ethernet и т.д. Цены могут быть совершенно разные. Кстати, PHY всегда продают под конкретные техпроцессы, потому что там внутри аналоговщина. Также покупают IP для верификации — модели шин и т.д. Все это, кроме PHY, можно сделать самому, но дешевле купить.
    4. Разработать и верифицировать RTL. Цена зависит от размера проекта. Обычно от начала проекта до RTL-freeze, после которого начинают синтез и layout, проходит где-то от полугода до года. Для америкосов и европейцев стоимость — несколько сотен тысяч долларов, учитывая, что инженер стоит $100k в год. Для индусов и китайцев цифры, разумеется, гораздо меньше. Нужно учитывать, что RTL-дизайн и верификацию почти всегда делают разные люди. Для верификации ключевые слова — SystemVerilog и UVM. И если для RTL-дизайна можно сэкономить на симуляторе и взять бесплатный или условно-бесплатный, то для верификации такой фокус не пройдет, потому что нужен симулятор с полной поддержкой SystemVerilog.
    5. Когда RTL готов, его синтезируют в нетлист, потом в нетлист добавляют всякие DFT-штуки типа scan test, BIST, контроллер JTAG-а. Проверяют при помощи формальной верификации, что в нетлисте ничего не сломалось (gate-level simulation почти не используют, потому что она чудовищно медленная — обычно запускают какой-нибудь примитивный тест и все).
    6. Потом аутсорсят back-end — размещение, трассировку. Это совсем другой мир, лучше самому туда не лезть. Софт там еще дороже, возможностей накосячить еще больше. Забирают уже готовый GDSII. Наверное, если слать китайцам, то будет не очень дорого, но могут украсть нетлист :) А так цен я не знаю.
    7. Шлют GDSII на фабрику. Цена подготовки к производству чудовищно большая, поэтому сначала делают test-chip на каком-нибудь шаттле ( www.tsmc.com/english/dedicatedFoundry/services/cyberShuttle.htm ). Это будет несколько десятков тысяч долларов за пару десятков микросхем.
    8. Если тест-чип работает, запускают в серию. Подготовка к производству по техпроцессу 55нм, скажем, в Китае стоит ~$500k. Сами пластины с микросхемами стоят дешево. Поэтому чем больше серия, тем дешевле микросхема. Кстати, до сих пор огромное количество контор делает микросхемы по 130нм и 90нм, как бы это не казалось странным — правда, USB3 PHY для таких техпроцессов не купить.

    Сложно сказать, какой техпроцесс нужен, когда не понятно, что именно нужно сделать и сколько МГц выжать. Но примерное представление можно получить, посмотрев на цифры для микроконтроллеров, например, вот из этого моего коммента: habrahabr.ru/company/intel/blog/194836/#comment_6770002
  • Сумбурные размышления о будущем технологии FPGA
    0
    Обновить софт к FPGA-флэшке за 10к, или купить новую у китайцев за 1k… Боюсь, что выбор очевиден
  • Сумбурные размышления о будущем технологии FPGA
    0
    Вообще, понятна любовь соотечественников к FPGA в условиях почти полного отсутствия собственных ASIC-дизайн-центров (я думаю, на всю страну их раз в сто меньше, чем в одном только Израиле).

    Идеи типа USB-флэшек для перекодирования видео на самом деле здравые и могли бы взлететь, но FPGA годятся только на роль прототипов, чтоб найти инвесторов и начать делать микросхемы. К сожалению, у нас с этим проблемы, хотя это отнюдь не rocket science.
  • Сумбурные размышления о будущем технологии FPGA
    0
    Нужно понимать, что видео и т.д. — это рынок на сотни миллионов микросхем в год. FPGA никогда не сможет на нем конкурировать — для любого нового кодека через полгода китайцы выпустят микросхему, которая будет делать то же самое, но в десять раз быстрее и сто раз дешевле. И окажется, что запилить в такую микросхему реализацию всех известных кодеков все равно дешевле, чем реконфигурировать железо на лету.