Юрий Панчул
905 subscribers
62 photos
6 videos
1 file
124 links
uArch от сохи и жизнь русского украинца в Калифорнии
Download Telegram
Я сегодня проснулся утром рано (в 5 утра) с желанием написать пост про Летнюю Школу Юных Программистов https://vk.com/lshup , на которой был слушателем в 1986 году и инструктором в 2017 году. Но пока пил чай, начал устанавливать OpenLane (секретное оружие импортозамещения) и три часа спустя обнаружил (по упоминанию на Хабре) что в 4.30 утра пост про ЛШЮП написали за меня (см. ссылку ниже):

Добавлю пару слов что это: чрезвычайно полезное, для некоторых (например меня) меняющее жизнь мероприятие (я там написал на Си и ассемблере в 1986 переключалку контекста задач в обработчике прерывания, что по извилистой дорожке привело меня в встроенное программирование, компьютерную архитектуру, компиляторы, средства проектирования микросхем и проектирование микросхем как таковое.

В школе еще изучают алгоритмы распознавания, Лисп и другие штучки, которые стимулируют мозг в возрасте, в котором еще не поздно, для развития в нетривиальном направлении.

Наверное туда еще можно записаться в этом году, так что рекомендую.

https://habr.com/ru/post/672516/
👍17
Я сегодня проснулся утром рано (в 5 утра) с желанием написать пост про Летнюю Школу Юных Программистов, на которой был слушателем в 1986 году и инструктором в 2017 году. Но пока пил чай, начал устанавливать OpenLane (секретное оружие импортозамещения) и три часа спустя обнаружил (по упоминанию на Хабре) что в 4.30 утра пост про ЛШЮП написали за меня (см. ссылку ниже):

Добавлю пару слов что это: чрезвычайно полезное, для некоторых (например меня) меняющее жизнь мероприятие (я там написал на Си и ассемблере в 1986 переключалку контекста задач в обработчике прерывания, что по извилистой дорожке привело меня в встроенное программирование, компьютерную архитектуру, компиляторы, средства проектирования микросхем и проектирование микросхем как таковое.

В школе еще изучают алгоритмы распознавания, Лисп и другие штучки, которые стимулируют мозг в возрасте, в котором еще не поздно, для развития в нетривиальном направлении.

Наверное туда еще можно записаться в этом году, так что рекомендую.

https://habr.com/ru/post/672516/
👍24
PXL_20220619_021157100.jpg
1.5 MB
Три поколения семьи Панчулов впервые за много лет за одним столом.
👍326
Бодания с OpenLane. Часть 1.
Господа! Бывают случаи, когда бедные люди (например школьники, у которых нету папы с лишним полумиллионом долларов на лицензию ASIC design tools от Synopsys или Cadence), или даже целые страны (понятно какие) вынуждаются роком к использованию открытых средств проектирования микросхем.
Сначала они упираются, как Светлана Волокушина из фильма "Место встречи изменить нельзя", упиралась на предложения Петра Ручникова. Но потом уговаривают себя, что это поможет научиться алгоритмам синтеза из верилога, трассировки и размещения стандартных ячеек, так как код - открыт. Да и студенты Беркли и Университета Калифорнии Сан-Диего тоже проходят через такие упражения, поэтому почему бы и не попробовать.
Я решил испытать на себе страдания таких индивидуалов, и вот мой первый шаг - инсталляция Open Lane на чистом Lubuntu 22.04 LTS.
Сначала я пробовал установить Open PDK и Skywater PDK отдельно:
git clone https://github.com/RTimothyEdwards/open_pdks
./configure --enable-sky130-pdk
git clone https://github.com/google/skywater-pdk
Потом я обнаружил что Skywater PDK есть внутри Open Lane, снес установленное и начала ставить Open Lane.
По инструкции из https://github.com/The.../OpenLane/blob/master/README.md
sudo apt install -y build-essential python3 python3-venv python3-pip
Выяснилось, что Open Lane работает под так называемым Докером.
Я установил Докер по инструкции из https://docs.docker.com/engine/install/ubuntu/
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 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | 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
Я понятия не имею что все танцы с бубном вокруг докера означают, но они прошли. Далее я клонировал Open Lane:
mkdir -p ~/github
cd ~/github
git clone https://github.com/The-OpenROAD-Project/OpenLane.git
make
Оно выругалось. После ковыряния в интернете нашел, что нужно сделать:
sudo chmod 666 /var/run/docker.sock
(совет из https://stackoverflow.com/.../how-to-fix-docker-got... )
make
Прошел. Теперь тест что установленное работает и производит некий GDSII файл:
make test
Это тоже прошло. Появился файл ~/github/OpenLane/designs/spm/runs/openlane_test/results/magic/spm.gds
Как же посмотреть GDSII файл? Для этого есть редактор magic.
Инструкцию по его установке нашел здесь - http://opencircuitdesign.com/magic/
Клонируем:
cd ~/github
git clone https://github.com/RTimothyEdwards/magic
Устанавливаем пререквизиты:
sudo apt install m4
sudo apt-get install mesa-common-dev libglu1-mesa-dev
sudo apt-get install libx11-dev tcsh
sudo apt-get install tcl-dev tk-dev
sudo apt-get install libcairo2-dev
sudo apt-get install mesa-common-dev libglu1-mesa-dev
sudo apt-get install libncurses-dev
Собираем и инсталлируем
cd magic
make clean
make
./configure
sudo make install
Запускаем
magic &
Пробуем открыть файл
~/github/OpenLane/designs/spm/runs/openlane_test/results/final/maglef/spm.mag
Ругается. Нахожу решение
в https://lootr5858.wordpress.com/.../magic-vlsi-skywater.../
cd /usr/local/lib/magic/sys
ls -s ~/github/OpenLane/pdks/sky130A/libs.tech/magic/sky130A.tech .
Открываю снова. Что-то показывает. На сегодня все. Это был первый подход к спортивному снаряду.
👍11
Бодания с OpenLane. Часть 2.

Как бы вы не относились к путинской войне на Украине, признайте, что перед нашими глазами разворачивается грандиозный эксперимент - перевод 140-миллионной страны с Microsoft Windows на российские дистрибутивы Линукса - Astra Linux (произошел от Debian) и ALT Linux (произошел от Mandrake / Red Hat).
Если вдруг Россия начнет проигрывать СВО, и украинские войска, во главе демократизирующей армии всего свободного мира, понесутся по просторам белгородской и воронежской областей, их политруки из киевско-могилянской академии наверняка будут заходить в каждый сельсовет, стирать тоталитарные кгбистские ОСы и устанавливать утвержденную в Сиэттле и Вашингтоне специальную версию Windows, которая будет автоматически исправлять "на Украине" во всех текстовых файлах и не давать работать российcкой 1С, заменяя ее на SAP.
Да, но все это будет в будущем, а пока российская пропаганда утверждает, что через 2 года в России о Windows все забудут. Меня же (я пытаюсь смотреть на два шага вперед российской пропаганды) интересует вот какой вопрос: а не попробуют ли россияне таким же макаром импортозаместить программы для проектирования чипов? То есть вместо ломания лицензий на Synopsys и Cadence перейти на OpenLane и создать аналог комбинации Google / eFabless / SkyWater для поощрения юных российких чипостроителей проектировать хотя-бы low-end 130 nm микросхемы в вузах и стартапах?
Я уже задавал этот вопрос в более раннем посте
https://www.facebook.com/yuri.panchul/posts/pfbid02TXXAGfGQxPcVktsyQcycedRbdNkdG7G1rCvgUNc94tX7wahczB969C36RHnMzYSFl
и теперь продолжу.
В предыдущем посте я сначала установил OpenPDK и SkyWater PDK, потом выяснил что это не нужно, так как они входят в OpenLane. Потом установил docker, под которым работает OpenLane, запустил тест, и чтобы посмотреть результат теста, установил редактор Magic, который после танцев с бубном что-то показал.
Сегодня я выяснил, что сделал две ошибки:
1. Я совершенно зря устанавливал редактор Magic отдельно - он есть и внутри пакета OpenLane, работает из dockers.
2. Мой способ боротся с ошибкой "dial unix /var/run/docker.sock: connect: permission denied" с помощью "sudo chmod 666 /var/run/docker.sock" был порочным.
Правильно бороться так: "sudo usermod -aG docker $USER", после чего сделать reboot.
Это инфо из https://stackoverflow.com/.../how-to-fix-docker-got...
Далее я попробовал запустить свой пример. Для этого я сначала запустил docker через makefile в OpenLane:
cd /home/panchul/github/OpenLane
make mount
Получил промпт:
OpenLane Container (9accacf):/openlane$
Затем я запустил маршрут для их тестового примера:
./flow.tcl -design spm
и оно заработало! Потом я запустил два редактора - magic и klayout, и оба показали синтезированный дизайн (см. картинки).
В magic открыл файл
/openlane/designs/spm/runs/RUN_2022.06.26_05.53.34/results/final/mag/spm.mag
В klayout открыл файл
/openlane/designs/spm/runs/RUN_2022.06.26_05.53.34/results/final/gds/spm.gds
Затем я попробовал создать свой пример используя инструкцию из:
https://github.com/.../Open.../blob/master/designs/README.md
Для начала я запустил
cd /openlane
./flow.tcl -design yuri -init_design_config
Оно создало директорию внутри докера
/openlane/designs/yuri
которая (слава богу) также видна и доступна вне докера как
/home/panchul/github/OpenLane/designs/yuri
Слава богу - потому что до этого я думал, что все файлы между докером и обычной файловой системой нужно копировать с помощью docker cp.
В этой директории оно создало файл на тикле config.tcl
# User config
set ::env(DESIGN_NAME) yuri
# Change if needed
set ::env(VERILOG_FILES) [glob $::env(DESIGN_DIR)/src/*.v]
# Fill this
set ::env(CLOCK_PERIOD) "10.0"
set ::env(CLOCK_PORT) "clk"
set filename $::env(DESIGN_DIR)/$::env(PDK)_$::env(STD_CELL_LIBRARY)_config.tcl
if { [file exists $filename] == 1} {
source $filename
}
Отсюда я подумал, что достаточно положить в src какие-то верилог файлы и оно заработает. Это был чрезмерный оптимизм - при попытке запустить
./flow.tcl -design yuri
оно стало грязно и непонятно ругаться.
Я понял, что нужно внимательно прочитать доку
👍11😁3
👍12
Тезисы, сформулированнные во время распития чая, о процессе интервью, с позиции интервьирующего

В моей жизни было четыре периода, когда я активно принимал участие в интервьировании людей на работу. В 1998 для своего стартапа в области программ для проектирования микросхем, в 2010-11 для MIPS Technologies (компания среднего размера но престижная в свое время в узком кругу процессоростроителей), в 2019 для Wave Computing (хайповый стартап в хардверном AI) и сейчас для Samsung (на позиции дизайнеров графических процессоров телефонов). Я не собирался писать длинный текст, но пока я пью чай, набросаю несколько тезисов, первое, что приходит в голову:

1. Большинство текстов в интернете про поиски работы концентрируются на советах по оформлению резюме и по прохождению бихевиорального интервью. Мой персональный взгляд: настоящая борьба происходит не там. Научить правильно писать резюме можно за полчаса. А с компаниями, которые делают упор на бихевиоральное интервью, лучше вообще не связываться. Главным фокусом является два умения: умение внятно рассказать, что вы делали на предыдущих работах, и умение решать задачки.

2. По поводу резюме: оно должно быть кратким и строго по делу. Длинные резюме на восемь страниц пишут сумасшедшие. Если вам меньше 30 лет, одна страница оптимальна, потом можно две. Под каждым местом работы должно стоять достижение. Не "программировал на Си", а "разработал и реализовал алгоритм выделения регистров в компиляторе с такого то языка, учитывающий эффекты конвейера такого-то процессора". Не нужно упоминать все компании и все умения - комбинация "RTL лид блока wireless чипа в [топ-10 электронной компании]" и "умею работать с Microsoft Word" - это маразм.

Вносить в резюме нужно только то, за что вы готовы ответить на вопросы. Один соискатель написал что он программировал на языке Jovial, думая что ему просто поверят (на этом языке американские военные писали программы в старину). Соискателю не повезло: я однажды пролистал книжку по Jovial в библиотеке Стенфорда. Выражение лица соискателя, когда я задал ему вопрос про Jovial, было бесценно.

3. Рассказ о том, что вы делали на предыдущей работе, должен быть хорошо структурирован. Сначала нужно описать чип или ядро, внутри которого вы разрабатывали или верифицировали блок. Потом вам нужно нарисовать на доске (реальной или виртуальной в зуме) ключевые элементы вашего блока (интерфейсы, памяти, очереди FIFO), описать ход транзакций между ними и микроархитектурные проблемы, которые при этом возникали. Упомянуть решение проблем с таймингом и энергопотреблением, а также чем это лучше других решений. Интервьюер должен почувствовать, что вы это делали, делали с пониманием, и можете передать ваше понимание окружающим.

Здесь имеется тонкий момент: вам нельзя выдавать секреты текущего или предыдущего работодателя. К счастью, блоки процессоров или сетевых чипов в разных компаниях (например TLB MMU в процессорах или там Egress Processing в роутерах) имеют похожую структуру. Также компании часто используют открытые изобретения из академической среды (пример: предсказатель переходов TAGE). Поэтому вам достаточно плясать вокруг некоего общего знания, разлитого по всей индустрии среди понимающих людей, с небольшими вариациями. А также не упоминать никакие бенчмарки, пропускные способности, особые патентуемые находки, планы и другую конкретно секретную информацию.

4. Уровень вопросов и задачек связан с вашим опытом в резюме. Если вы свежий интерн, у которого в резюме только курсовой проект, в котором вы писали execution unit в учебном RISC-V процессоре, готовьтесь ответить про задержки и байпасы в конвейере. Если вы упоминаете в резюме FIFO или SPI протокол, готовьтесь написать перед глазами интевьюера код для простого FIFO или SPI приемника на верилоге.
👍15
Бывают соискатели из недавних студентов, которые могут рассказать словами и картинками, но не набили руку на механике писания кода на верилоге. Это плохая комбинация. Да, я знаю, что есть мнение "он понимает сложные проблемы и выучит простое кодерство за пару месяцев". Такое мнение встречается у менеджмента, особенно если студент - отличник и позитивен. Но это плохо работает во время интервью с инженерами команды (см. примечание 1).

5. Вообще, для тех кто не знает: типичное интервью в крупной электронной компании состоит из нескольких этапов: 1) рекрутер; 2) технический скрининг нанимающим менеджером или одним из опытных инженеров; 3) большое интервью в котором вы за 4-6 часов говорите с 5-8 инженерами; 4) разговор с начальником на два уровня выше и 5) обсуждение предложения. Критической является часть (3).

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

6. Для старших инженеров критично знать некое общее ноу-хау индустрии, которое все применяют, но которое слабо представлено в учебниках. Например комбинация из конвейера, очереди FIFO и кредитного счетчика широко применяется в сетевых чипах для обработки потока фрагментов пакетов, и в графических чипах для обработки потоков треугольников. Но в учебниках это описано очень слабо: я видел это в контексте сетевого софтвера, а также в фрагменте лекции в Принстоне. Если инженер работал в команде, которая это однозначно применяет, например в группе проектирования системы на кристалле в Apple, то его можно 1) сначала спросить "что такое credit based flow control"? 2) если он ответит "нет" то найти другую похожую область; 3) а если он ответит "да" то задать одну из многих задачек на эту тему.

7. С задачками на интервью есть такая проблема, что любой ваш вопрос может быть передан на вебсайт типа glassdoor, где люди делятся, чему из спрашивали на интервью. Против этого есть противоядие - делать вариации задачек. Например есть широкоизвестный интервьюшный вопрос "напишите код на верилоге, который принимает числа по битам (один бит каждый такт) и определяет, делится ли это число на три (длина числа не ограничивается - оно может быть хоть миллиард бит). Так как этот вопрос стоит на таких сайтах стоит сто лет, то в чистом виде его спрашивать нельзя: нужно делать вариацию, например 1) биты могут приходить как от старшего к младшему, так и от младшего к старшему или 2) определяте не остаток от деления на 3, а остаток от деления на 7. Итд.

В заключение добавлю, что вы можете познать все что я выше описал, на практике: если вы проектировщик микросхем на уровне регистровых передач, хотите работать в интересном проекте в GPU и (увы, это ограничение) имеете право на работу в США, то присылайте мне ваше резюме.

Примечание 1. Существует разрыв между уровнем базовых курсов в университетах и уровнем навыков, требуемых для успешной работы в компаниях. Если студент не набивал руку на учебных проектах сам, а только сдавал зачеты по картинкам из учебника и простейшим упражнениям, у него будет проблема. Столкнувшись с задачей чуть дальше учебника, студент может обнаружить, что то, что ему казалось простым (пример: gearbox, конвертор ширины шины c valid/ready интерфейсами на входе и выходе), вдруг стало сложным. Если он при этом нетвердо владеет механикой верилога типа блокирующих и неблокирующих присваиваний, параметризацией итд, то у него будут глюки и он будет биться как рыба об лед, наслаивать говнокод и заплаты, отлаживать это бесконечно, надеяться, что кто-то исправит за него итд. Этот этап нужно пройти в учебных проектах, не на производстве. Да и всякие алгоритмы замещения кэша и прочее из картинок в учебнике тогда будут выглядеть по другому.


https://habr.com/ru/post/673916/
🔥10👍1😁1
Господа! Я решил провести отпуск на озере Иссык-Куль. Это мой незакрытый гештальт с тех пор, как я прочел "Легенду озера Иссык-Куль" Ильфа и Петрова. При этом, чтобы совместить приятное с полезным, я договорился с Американским Университетом в Центральной Азии и Siemens Electronic Design Automation GmbH провести трехдневный семинар в Бишкеке 1-3 августа. Если еще не решили, куда ехать в отпуск - присоединяйтесь.
О чем пойдет речь:

Как показывает пример Южной Кореи и Тайваня, для небольшой страны очень выгодно интегрироваться в международную экосистему проектирования и производства микроэлектронных чипов. Каким же образом может интегрироваться страна, у которой есть опыт разработки программного обеспечения, но нет сообщества разработчиков микросхем? Она может создать группу по аутсорсу так называемой функциональной верификации. Эта группа технологий очень востребована и имеет реалистичный порог входа. Японская компания Seiko Epson создала такую группу на Филиппинах, корейская компания SK Hynix создала такую компанию в Беларуси.

Микросхемы внутри смарфонов, компьютеров и сетевого оборудования построены из блоков, спроектированных с помощью языка описания аппаратуры Verilog. Для этих блоков пишутся тесты на SystemVerilog, которые во многом похожи на программы на таких языках как Java. Кроме этого, для создания среды верификации блоков используют скриптовый язык Python. Для задач верификации аппаратных блоков можно переучить программистов с Java и Python на SystemVerilog, если добавить к их умениям понимание, как работает цифровая логика.

Это всё не абстрактные рассуждения. Американский Университет в Центральной Азии и Siemens Electronic Design Automation GmbH решили провести 1-3 августа пилотный семинар в Бишкеке, чтобы: 1) выяснить интерес у бизнесменов Кыргызстана к такого рода проектам и 2) показать студентам бишкекских вузов и коледжей, как работать с верилогом на ПЛИС, чтобы понять, пойдет ли им эта тематика. Участники из других стран тоже могут приехать.

Детали и как зарегистрироваться - https://habr.com/ru/post/675564/
🔥18👏3😁1
Выложил часть материалов недавнего семинара «Модели бизнеса и основы технологий микроэлектроники для Центральной Азии» на сайт https://ddvca.com - Digital Design & Verification in Central Asia. Семинар проходил в Американском Университете Центральной Азии - учреждении, новый кампус которого в свое время прилетал открывать лично государственный секретарь США Джон Керри. Вместе с АУЦА семинар проводил Siemens EDA - отделение компании Siemens по автоматизации проектирования микросхем, которое ранее было топ-3 EDA компанией Mentor Graphics.

Среди выложенных материалов:

1. Информацию где скачать новую версию пакета v1.1.

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

3. Короткие видео с семинара.

4. Фотографии с семинара.

Я собираюсь также выложить:

5. Список рекомендуемой литературы.

6. Объявление о поиске ведущего преподавателя по проектированию и верификации цифровых схем в Американском Университете в Центральной Азии (АУЦА).

7. Сообщение от Siemens EDA как они могут помочь в формировании группы компетенции в АУЦА и других университетах и компаниях региона.

8. Информацию о пректах участников семинара (в Кыргызстане уже есть инженеры, которые занимались FPGA и ASIC design).

9. Полную запись лекций семинара.

О слайдах:

https://ddvca.com/2022/08/15/slides/

Разыскиваются коллеги для совместной разработки слайдов для следующих семинаров
August 15, 2022 By Yuri Panchul

Вы можете найти слайды, которые я (Юрий Панчул) использовал для лекций в Бишкеке в августе 2022 года здесь:

HDL, RTL and FPGA: Part 1. The Synthesis of Combinational logic
HDL, RTL and FPGA: Part 2. Sequential logic, FSM and Pipelining

Я начал разрабатывать эти слайды еще в 2014 году и использовал их версии для разнообразных семинаров в Калифорнии, России, Украине, Казахстане и теперь в Кыргызстане.

К сожалению, эти слайды не идеальны. В частности, в них есть ссылки на примеры, которые готовились для предыдущих семинаров, совместно с ВШЭ МИЭМ, казанским Иннополисом и другими вузами. В старых примерах используется синтаксис Verilog-2001, при том, что в новых примерах я перешел на SystemVerilog 1800-2017. В слайды стоило бы ввести больше информации о новых примерах (например с обработкой звука), а также объяснить детали симуляции (гонки / race conditions) и использования новых типов (не все тонкие различия между wire, reg и logic описываются даже в продвинутых материалах на эту тему).

Но в каждой проблеме скрывается возможность. Я готов помогать преподавателям, которые готовы помочь мне в переработке слайдов и создании новых учебных материалов, превосходящих по качеству слайды от MIT 6.111 и слайды от Харрис & Харрис. В новые слайды можно внести не только механизм симуляции (например используя книгу Дональда Томаса как источник), но и например использование открытого пакета Open Lane для проектирования ASIC-ов, более детальное обсуждение конвейера, а также материалы по двойным буферам (например из Digital Design: A Systems Approach 1st Edition by William James Dally, R. Curtis Harting), FIFO, арбитрам (см. сайт RTLery.com и статью Arbiters: Design Ideas and Coding Styles by Matt Weber), а также кредитным счетчикам (см. дискуссию в комментах). Кроме этого, есть идеи и для слайдов по процессорам, дополняющих слайды из Харрис & Харрис.

Сотрудничество может выглядеть в виде еженедельных созвонов по Zoom по воскресеньям в 9 утра по Калифорнии и соотвественно 22.00 по Бишкеку, во время которых мы можем обсуждать слайды и примеры. Если вас это интересует, пришлите мне емейл на yuri@panchul.com с копией на yuri.panchul@gmail.com. Слайды такого рода можно использовать как для будущих семинаров (не только в Кыргызстане, но и в Казахстане, Узбекистане или других местах), так и для ваших университетских курсов, а также (если вы не преподаватель), для повышения вашей квалификации как инженера (да и я могу от вас чему-нибудь научиться).
👍133