рейтинг блогов

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

топ 100 блогов panchul27.07.2022
Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

В модном и молодежном учебнике электроники от Харрисов есть пример простого конечного автомата - "улыбащейся улитки". Я решил наглядно показать, как можно в домашних условиях реализовать улитку на трех технологиях:


  1. Микросхемы малой степени интеграции CMOS 4000. Первая массовая КМОП-серия, выпущенная в 1968 году. 20 микрон то бишь 20 тысяч нанометров. На таких микросхемах учились электронике бумеры, то бишь люди, родившиеся во время бэби-бума 1950-х годов и вошедшие в технологию в начале 1970-х. В том числе Стив Джобс и Стив Возняк.


  2. Микросхемы программируемой логики Altera Cyclone IV, ныне Intel FPGA Cyclone IV. 2009 год, 60 нанометров. Интеловская микросхема, в которой вообще нет никакого процессора, только набор логических ячеек, между которыми можно программировать соединения. Удобна как тренажер для будущих проектировщиков микропроцессоров, так как для построения схемы внутри FPGA не нужно делать заказ на фабрике.


  3. ASIC-технологии фабрики Skywater - лидера американского импортозамещения. 2019 год, 130 нанометров. На своем вебсайте компания пишет что они единственная в США контрактная фабрика микросхем, у которой нет инвесторов-иностранцев: "SkyWater is the only US-investor owned pure-play semiconductor and technology foundry". Поэтому в них инвестировал 10 миллиардов рублей Пентагон.


На работе у меня есть доступ и к технологии 3 нанометра, но показать ее вам на Хабре не могу, поэтому прошу вас поверить мне на слово, что и на 3 нанометра "улыбающаяся улитка" работает. Кстати, все это будет на семинаре в Бишкеке на следущей неделе. Итак:


Сначала условие задачи в Харрис & Харрис:

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

Диаграммы переходов между состояниями двух вариантов конечного автомата:

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

Если порисовать ручкой на бумаге карты Карно, из диаграмм выше можно построить схемы с логическими элементами И и НЕ и сохранением состояния в D-триггерах. Для схемы слева нужно два D-триггера (два бита состояния для трех состояний - 00, 01, 02), для схемы справа достаточно одного бита состояния:

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

Теперь берем микросхемы CMOS 4081 (4 элемента И), 4069 (6 элементов НЕ) и 4013 (два D-триггера), втыкаем их в макетную плату снизу, соединяем ножки проводами - и конечный автомат готов. Для наглядности добавляем лампочек и кнопочек, к которым приклепляем дюжину резисторов чтобы ничего не перегорело и не подвисало (это не сложнее чем вязать шарфики крючком).

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

Вот как микросхемы 4081, 4069 и 4013 выглядят внутри:

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

Макетная плата сверху - это не часть конечного автомата. Слева на ней находится генератор тактовой частоты, справа - сдвиговый регистр, чисто для наглядности, чтобы видеть, какие мы скармливаем конечному автомату последовательности нулей и единиц. Все это работает вот как:


Теперь переносимся в 21 век и скачиваем с вебсайта Интела программное обеспечение Quartus Prime Lite Edition 21-1-1 (причем важно скачать именно Lite, а не Pro, если вы не собираетесь подарить Интелу 5 тысяч долларов). Для Windows или для Linux. Когда вы запускаете Quartus в первый раз, также важно сказать "Run" здесь, то бишь запустить бесплатную версию. Иначе может быть возня с переключением ее с лицензируемой на бесплатную:

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

Теперь вы можете скачать с гитхаба пакет с упражениями для семинара в Бишкеке, раззиповать его в любой директории, найти файл проекта day_3/lab_8_snail_fsm/top.qpf, и открыть его в квартусе с помощью меню "File | Open Project", который все время путают с "File | Open". Дальше нужно дважды кликнуть на Compile Design и через пару минут вы увидите следующее:

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

Если кликнуть в разные меню, вы увидите, как код на языке описания аппаратуры Verilog превратился в схему и как Quartus распознал состояния конечного автомата (он правда добавил в диаграмму сброс, но это нюансы):

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона


В другом меню вы можете увидеть как схема отобразилась на ячейки ПЛИС-а / FPGA. Она все еще представлена в виде графа:.

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона


А вот граф размещен внутри микросхемы. Логические функции ячеек изменяются с помощью мультиплексоров, подсоединенных к битам программируемой пользователем памяти, отсюда сокращение ПЛИС - "Программируемые Логические Интегральные схемы", или ППВМ - "Программируемые Пользователем Вентильные Матрицы":

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона


Заливаем это в микросхему на плате и вот как она работает вживую:



Теперь перейдем к фиксированным микросхемам, которые выпускаются на фабрике. Вот так выглядит фабрика Skywater:

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона


Фабрика дает проектировщикам так называемую ASIC standard cell library - библиотеку ячеек, которые фабрика может произвести, построить рядами на силиконе и соединить дорожками из меди. Примитивы функционально похожи на то, что мы видели в CMOS 4000: логические элементы И, ИЛИ, НЕ, их простые комбинации, мультиплексоры, простейшие сумматоры сумматоры и разнообразные D-триггеры - с синхронным или асинхронным сбросом, разрешением итд.

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

.

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона


Физически ячейка выглядит как несколько слоев кремния с примесями бора и фосфора. Про каждую ячейку известны ее физические параметры - задержки в пикосекундах при разных условиях, размер, параметры энергопотребления - все это учитывает софт, который превращает код на верилоге в GDSII файл, который отправляется на фабрику, чтобы по нему сделать набор фотошаблонов для печати микросхемю

Skywater скооперировалась не только с Пентагоном для его радиационно-устойчивых нужд, но и с компанией Гугл, которая спонсирует молодых гениев, решивших спроектировать свои микросхемы с помощью вышедшего года три назад набора открытых средств проектирования под названием OpenLane. Превращение кода на верилоге в фотошаблон с помощью OpenLane выглядит так:

Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

Я установил OpenLane на компьютере с Lubuntu 22.04 LTS по инструкции с гитхаба.

Сначала устанавливаются пререквизиты:


sudo apt install -y build-essential python3 python3-venv python3-pip


Потом устанавливается Докер:


sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg
 | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo $(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
 \
   | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
apt-cache madison docker-ce
sudo apt-get install docker-ce=5:20.10.17~3-0~ubuntu-jammy docker-ce-cli=5:20.10.17~3-0~ubuntu-jammy containerd.io docker-compose-plugin
sudo docker run hello-world


Потом надо добавить себя в группу, которая может запускать докер:


sudo usermod -aG docker $USER


, после чего перелогиниться. Теперь можно клонировать репозиторию OpenLane:


cd ~/github
git исходник улыбающейся улитки на верилоге в директорию $HOME/github/OpenLane/designs/snail_moore_fsm/src , потом добавляем в $HOME/github/OpenLane/designs/snail_moore_fsm два скрипта на TCL (один - общий для контроля OpenLane, второй - для контроля библиотек от SkyWater) - и можно запустить синтез.


Но сначала нужно запустить докер. Это делается так:



cd 



./flow.tcl -design snail_moore_fsm



Скрипт выполнит все 39 шагов синтеза и произведет вот такой главный лог. Интересно, что из исходного верилога синтезируется тоже верилог, но только низкоуровневый, и на каждой стадии в него добавляются всякие физические детали. В самом начале процесса компонент OpenLane под названием Yosys превращает верилог на уровне регистровых передач в верилог, который представляет сосбой просто создание экземпляров ячеек библиотеки Skywater и соединение их проводами. Вот посмотрите на это синтезированный код. Он ничего вам не напоминает? Конечно что, это те самые И, НЕ и D-триггеры, которые мы видели на макетной плате с технологией 50-летней давности. Только это технология 2018-го года, а не 1968-го:

/* Generated by Yosys 0.12git sha1 UNKNOWN, gcc 1 -fPIC -Os) */

module snail_moore_fsm(;
 wire _00_;
 input clk;
 input reset2] ;

 sky130_fd_sc_hd__nor2_2 _05_ ( .A(en), .Y(;
 sky130_fd_sc_hd__or3b_2 _06_ ( .A(a), .C_N(_04_) )2] ), .A2(_04_), .X(;
 sky130_fd_sc_hd__and4b_2 _08_ ( .A_N(en), .C(\state[a), .X(;
 sky130_fd_sc_hd__a21o_2 _09_ ( .A1(_03_), .B1(_00_) )clk), .D(2] ) )Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона 


Magic запускается из докера просто как magic &. Затем вам нужно открыть файлы с расширением .mag, который вы можете найти в signoff внутри директории RUNS внутри вашего проекта. Также можно запустить редактор поновее, klayout, но он использует другой формат данных, файл с расширением .gds..
Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона


Также OpenLane производит стандартные для тулов такого рода отчеты о максимальной тактовой частоте, размерах, энергопортреблению итд - я собрал самые важные отчеты в репозитории файлов для семинара в Бишкеке.
Но перед тем, как улыбающуюся улитку синтезировать, ее нужно симулировать и отлаживать на временных диаграммах (это то, чем проектировщик микросхем на уровне регистровых передач занимается полдня, помимо митингов, писания кода и рисования микроархитектурных диаграмм). Вот так выглядят временные диаграммы "улыбающейся улитки" в бесплатной программе GTKWave после симуляции в бесплатном симуляторе Icarus Verilog:
Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона


Однако Icarus медленный и не поддерживает всего языка SystemVerilog. А GTKWave очень тормозит когда у вас чуть больше сигналов, чем в игрушечном примере. К счастью, в Бишкеке будет компания Siemens EDA (в прошлом - Mentor Graphics), у которой есть симулятор Questa. У него лучше и поддержка языка, и скорость, и возможности отладки
.
Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона


Вот так выглядит "улыбающаяся улитка" в Квесте:
Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона


Про семинар в Бишкеке я уже писал, но ниже его детальное расписание. Еще не поздно сесть на самолет и туда прилететь. Заодно можете там со мной к исследованию среднеазиатской кухни:
Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

.
Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона
Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона
Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

Сайт для регистрации
Улыбающаяся улитка — на технологиях от бумеров, Интела и Пентагона

До встречи!

Оставить комментарий

Архив записей в блогах:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ...
      Почему опять? Потому, что шесть лет тому назад меня занесло сюда попутным ветром. Я вышла тогда на  станции Вязынка, перешла железнодорожные пути и вскоре оказалась в историко-литературном заповеднике, посвященном белорусскому поэту Янке Купале. ...
Пока вы тут за резину с парковками трете и про тыквы шутите, суровый отечественный дачнег молча делает свое чорное дело. А у тебя олегарх есть чо на даче или ты там тока печень выращиваешь? Данный псто является исключительно унылым набросом на такую же действительность. Пы.Сы. Я знаю, ...
*** Сквозь замезшее стекло, Сквозь январское окно Сквозь рождественскую стужу Синих сумерек простужных Я не вижу ничего. Я не вижу ничего Я не слышу никого Только тихий скрип саней, Едущих за мной послушно, В мерном шорохе ремней. Только неба полынья, Да студеная вода. Лишь вечерняя ...
Мурра плакала не долго. Взяла себя в руки, вытерла слезы и, крепко ухватив шпагу и медальон, побежала к матушке. Прохожие испуганно косились на фигуристую стройную заплаканную полу-эльфку, бежавшую с обнаженной шпагой в руке и светящимся ...