Перед нами девушка Лиля, с FPGA платой и учебником Харрис & Харрис в руках, на фоне самого высокого на Земле дерева Sequoia sempervirens, недалеко от Стенфорда в Silicon Valley.

Представьте, что вы приехали сюда в командировку в типичную электронную компанию. Усаживаетесь в офисе, входите со своего ноубука (в Америке их чаще называют лаптопами) в корпоративную сеть и пытаетесь что-то напечатать. А принтер не подсоединяется. Вы обращаетесь к ко-воркеру "Что делать?", а он вам говорит: "Обратитесь в IT". Вы в замешательстве "В Ай-Ти? А я что - не айтишник?"

Спокойствие. Если вы программист, вы не IT, вы software engineer и работаете в отделе Software Engineering Department. Если вы электронщик, вы тоже не IT, вы работаете в Hardware Engineering Department. IT Department - это другое, это отдельный от разработки отдел, это группа сисадминов, которые поддерживает внутри-корпоративную сетку и ведут учет выданых сотрудникам лаптопов.

Но это слишком тривиально, обсудим более интересный вопрос: вот все эти люди, которые пишут код на языке описания аппаратуры Verilog, который потом превращается в дорожки и транзисторы из silicon на фабрике - они программисты? Аппарентли, нет.

Код на Verilog выглядит как программа? Но код на HTML тоже незнакомому с ним человеку может показаться похожим на программу.

В язык Верилог входят все черты языков программирования, в SystemVerilog есть даже классы и ООП, но это связано с тем, что верилог используется не только для написания кода, который превращается ("синтезируется") в железо, но и для написания моделей, тестового окружения и тестов.

Код на синтезируемом подмножество верилога использует уровень абстракции, который называется "уровень регистровых передач" - Register Transfer Level, RTL (не путать с другими расшифровками аббревиатуры, например Run Time Library или Resistor–Transistor Logic).

Тут человек, который не знаком с верилогом, но программировал на ассемблере, услышав слово "регистровая передача" может кивнуть "а понятно, это как в MOV R5, R0". Нет, непонятно. Проблема в том, что слово "регистр" в данном случае является омонимом. У слова "регистр" если два (точнее три, но сконцентрируемся на двух) разных значения:

1. Регистр в контексте программирования на ассемблере. Электронщики называют такие регистры software-visible registers, "регистры, видимые софтверу" или architecture registers, "архитектурные регистры", чтобы не путать с микроархитектурой (архитектура и микроархитектура - это столь же разные вещи как культура и физкультура).

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

[3. Есть еще memory-mapped registers, хорошо знакомые например программистам микроконтроллеров, но опустим их из этого поста для сохранения фокуса]

Так вот.

Когда вы пишете на верилоге:

always @ (posedge clock)
r <= функция_нового_состояния_от (r, вводы, другие_регистры);

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

Register transfer в контексте проектирования - это задание правила трансфера (функции) превращения состояния регистров из предыдущего такта, перед положительным фронтом тактового сигнала clock, в состояние регистров в новом такте.

А вот когда вы пишете:

MOV R5, R0

- вы создаете программу, последовательность из нуликов и единичек, которая хранится в памяти, откуда ее вытаскивает процессор (схема), декодирует и на ее основе меняет свое внутреннее состояние, которое включает PC - program counter, software visible регистры и другие регистры (в значении 2).

Схема которая строится с помощью так называемого маршрута RTL2GDSII из кода на верилоге, является не абстрактной диаграммой, а случае ASIC design совершенно конкретной электрической схемой, изготавливаемой на фабрике. C металлическими дорожками меди, которые соединяют блоки ASIC library, которые реализуют функции and2, and3, andor, mux, dff (d-flip-flop) итд.

"Ну а как с FPGA design? Ведь там мы не переделываем микросхему на фабрике, а меняем ее, загружая биты в память конфигурации. Разве bitstream - это не программа?"

В случае FPGA design схема является более виртуальной - она задаётся набором битов подключенным к контрольным сигналам мультиплексоров, идущим к lut (lookup table) и другим элементам clb (ячеек) уже сделанной на фабрике микросхемы FPGA. Но эта схема все равно не является программой. Потому что словом "программа", по сложившейся с 1940-х годов традиции, называют цепочку инструкций фон-Нейманновской машины (сейчас кто-то решит показать эрудицию и заговорит о гарвардской архитектуре, но мы возразим эрудиту вот такой картинкой:

В американских, [западно]европейских и [южно и восточно]азиатских электронных компаниях никто синтезируемый код на верилоге программой не называет. Говорят просто "RTL': "напишите RTL", "готов RTL?" , а не "напишите программу?" , "готова ли программа?" итд.

Введение в упражнения с Verilog на FPGA плате в первый день Школы Синтеза Цифровых Схем на ChipEXPO в Сколково в сентябре
Введение в упражнения с Verilog на FPGA плате в первый день Школы Синтеза Цифровых Схем на ChipEXPO в Сколково в сентябре

Как же научиться RTL?

Группа энтузиастов по подьему образования в России и Украине на уровень 21 века провела в сентябре в Сколково Школу Синтеза Цифровых Схем с упражнениями на FPGA платах. Школа оказалась популярна (на 25 мест было 86 заявок) и мы решили ее расширить до полноценного семестрового курса по субботам, с объемом материала на уровне университетских лабораторных по FPGA (типа MIT 6.111), к которым добавили элементы компьютерной архитектуры, базовый туториал для ASIC и некоторые умения из промышленности.

Новый цикл занятий начнется с 30 октября 2021, закончится 12 февраля 2022, и будет проходить по субботам в Сколково в Москве, с трансляцией в казанский Иннополис и другие места. Регистрация уже открыта .

Среди преподавателей на школе - инженеры российской компании Syntacore / Ядро, SberDevices, IRQ, ИнСис и Inline Group (использование FPGA для высокоскоростного трейдинга на бирже), преподаватели МИЭТ, МИРЭА, МГУ, ВШЭ МИЭМ, Черниговского ЧНТУ, российского представительства Mentor Graphics / Siemens EDA. Школа поддержана компанией Cadence Design Systems.

Место еще не выбрано окончательно, но занятия будут проходить или в Технопарке Сколково, или вот в таком занятном здании, которое называется Гиперкуб и в котором можно поместить больше участников. Вы можете высказать в опросе, что лучше - технопарк или гиперкуб:

Школа предназначена для трех категорий слушателей:

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

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

  3. Преподаватели вузов, физматшкол или кружков технологии смогут найти материал для постановки или улучшения своих курсов.

Школа может также понравиться кросс-дисциплинариям. Вот например участники школы на ChipEXPO распознают с помощью FPGA платы мелодии, которые играет для них преподавательница флейты Мария Беличенко:

План семинаров школы:

30 октября 2021: 1. Введение в маршрут проектирования и упражнения с комбинационной логикой.

13 ноября 2021: 2. Последовательностая логика и конечные автоматы.

20 ноября 2021: 3. Разбор учебного проекта: модульная графичеcкая игра со спрайтами.

27 ноября 2021: 4. Разбор учебного проекта: распознавание и генерация звуков и мелодий.

4 декабря 2021: 5. Конвейеры и систолические массивы, с приложением для искуственного интеллекта.

11 декабря 2021: 6. Архитектура: вид процессора с точки зрения программиста.

18 декабря 2021: 7. Микроархитектура: вид процессора с точки зрения схемотехника.

25 декабря 2021: 8. Пробуем маршрут RTL2GDSII: как разрабатываются массовые микросхемы.

15 января 2022: 9. Элементы микроархитектуры 1: очереди FIFO и кредитные счетчики.

22 января 2022: 10. Элементы микроархитектуры 2: арбитры, банки и разделение памяти.

29 января 2022: 11. Элементы микроархитектуры 3: строим процессорный кэш.

5 февраля 2022: 12. Имитация собеседования на позицию проектировщика цифровых микросхем.

12 февраля 2022: 13. Разбор имитации интервью с вручением поощрительных призов.

Популярная группа GSPD (что расшифровывается как "Государственная Служба Пропаганды Дискотек" - про это у них есть песня) сочинила также песню "У России три пути - Рейвы, Водка и Айти".

Но они неправы! У России несомненно есть и четвертый путь - проектирование сверхбольших интегральных микросхем с продвинутой микроархитектурой. Для гаджетов, сетевой инфраструктуры, ускорителей машинного обучения, космических аппаратов и самоуправляемых автомобилей. И для этого нам всем нужно подготовить будущих супердизайнеров проектирования на уровне регистровых передач. Из современных школьников и студентов.

Кое-что из этого будущего уже появляется - например российский процессор Скиф для планшетов, спроектированный в зеленоградском НПО Элвис. Но одного Элвиса не хватит, чтобы изделия на российских микросхемах значимо проникли например на Consumer Electronics Show в Лас-Вегасе - для этого нужна на порядок бОльшая инженерная экосистема.

Картинка из статьи о Consumer Electronics Show 2022 в Лас-Вегасе на hypebeast.com
Картинка из статьи о Consumer Electronics Show 2022 в Лас-Вегасе на hypebeast.com

Комментарии (57)


  1. Ranckont
    11.10.2021 08:35
    +4

    и пытаетесь что-то напечатать. А принтер не подсоединяется.

    Типикал юзер


    1. YuriPanchul Автор
      11.10.2021 09:09

      :-)


    1. AVDerov
      11.10.2021 09:16
      +2

      .... Да, да - эти выскочки, лабающие архитектуру процессоров, они даже принтер подключить не в состоянии!


      1. YuriPanchul Автор
        11.10.2021 09:26
        +3

        Меня по жизни принтеры не любят. У меня зажевывали бумагу и конфликтовали с драйверами вообще все принтеры, которыми я когда-либо пользовался: барабанные и матричные, струйные и лазерные, фотопринтеры и плотеры. Даже перфосчитыватель рвал мои перфоленты, когда я приходил к маме на работу.


        1. iliasam
          11.10.2021 09:35
          +10

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


          1. ignat99
            11.10.2021 10:14
            +7

            Шутка:

            Видимо надо было достать MIPS проект с USB контроллером на PyHDL/MyHDL, запустить на FPGA. Собрать кросскомпилятор на своём ноутбуке. Скомпилировать ядро Linux под MIPS (предватительно собрав тулчейн). Подправить модули ядра для USB и сетевого устройства. Пересобрать Linux. Затем взять исходники CUPS собрать их. Запустить Linux c драйверами и CUPS на прошитой MIPS - FPGA.

            Второй вариант - воспользоваться встроенным в FPGA APM ядром. Взять готовое ядро Linux и готовый тулчейн и запустить все на нём.

            Третий вариант - просто взять ARM/AMD/Intel компьютер с установленным Linux (возможно в одном из 6 типов виртуализации - OpenVZ, Virtuozo, KVM, XEN, Hyper-V, VMWare) и поставить на нём CUPS.

            Четвертый вариант - взять RISK-V ядро, аппаратную реализацию TCP/IP стека на FPGA с Linux, готовый компьютер с Linux и CUPS подключить к принтеру. CUPS клиент поставить на Linux запущенный на FPGA. Настроить конфигурацию и принтер по умолчанию в командной строке (Если есть готовый ppd файл принтера).

            Пятый вариант - реализовать аппаратно PLC1/2, ZPL, PS и другие варианты языков работы с принтером и управлять им через COM порт или посредством USB адаптера COM портов на PL2303XA. Хорошо если есть OSH решения для контроллеров принтеров, которые можно за основу взять спецификации.

            При оптимистичной оценке - месяца два должно хватить на подключение принтера. Слава RMS, Emacs есть готовый. IMHO :-)


            1. SOM4
              11.10.2021 10:49
              +3

              Вот ответ настоящего "Линуксойда"!


          1. YuriPanchul Автор
            12.10.2021 00:14

            На 21 секунде из щелей выползают монстры жующие бумагу


        1. Albert2009ru
          11.10.2021 12:04

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


          1. YuriPanchul Автор
            11.10.2021 17:26

            :-))


          1. kisskin
            13.10.2021 11:44

            ... и уронить на пол контейнер с отработкой ...


  1. anonymous
    00.00.0000 00:00


  1. borisxm
    11.10.2021 09:27

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


    1. YuriPanchul Автор
      11.10.2021 09:50
      +3

      Под потоком вы имеете в виде thread (программый реализованный с помощью прерываний или аппаратный, реализованный на multi-threading процессоре)? Или вы говорите об алгоритме дискретного моделирования с очередью событий?

      Так или иначе: эти два D-триггера - это просто две конструкции из кремния, с примесями бора и фосфора, а также медными (в давние времена - алюминиевыми дорожками).

      По-моему это был Федерико Фаджин, проектровщик первого микропроцессора Intel 4004, который говорил, что они проектировали такие схемы с помощью цветного картона, как дети делают аппликации. Такая аппликация - это программа? Ее составитель - программист?


      1. borisxm
        11.10.2021 10:06
        +2

        Под потоком вы имеете в виде thread
        Да, именно его.
        Так или иначе: эти два D-триггера — это просто две конструкции из кремния
        Тем не менее, описание на верилоге может быть как «скомпилировано» в кремний, так и исполнено на интерпретаторе (симуляторе), или преобразовано в подпрограмму обработки прерываний, скажем, мелкого МК.
        Такая аппликация — это программа? Ее составитель — программист?
        Почему нет? Если абстрагироваться от конкретного применения, то аппликация есть один из способов описания программы для специфичной реализации в кремнии на очень низком уровне. Для примера можно привести всякие блок-схемы, UML и прочее графическое представление из области «большого» программирования.


        1. YuriPanchul Автор
          11.10.2021 10:19

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


          1. SOM4
            11.10.2021 12:07
            +2

            Позвольте, уважаемый Юрий, дополнить одну деталь - всё это функционирует в Виртуальной Машине "Ум/Интеллект" с супервизором "Сознание" ("Душа"). При этом, в компоненте "Ум" уже находятся описания классов или создаются динамически, а в вычислителе "Интеллект" загружены различные системы оценок, дополняемые динамически. А супервизор "Душа" наблюдая за взаимодействием объектов в компоненте "Ум" и выносимых решений вычислителем "Интеллект" модифицирует свою структуру "Качества/Наклонности" ("Суперклассы") такие как "Любовь", "Сопереживание", "Счастье" и т.д., то что за пределами этой системы называется "Человеческими /Нравственными/ Ценностями".


            1. YuriPanchul Автор
              11.10.2021 17:35

              Короче - все сплошное программирование. И Маск верит, что весь наш мир - программная симуляция.


          1. qw1
            11.10.2021 17:06
            +1

            Отличие программирования от писательства в том, что программисты имеют дело с формальными системами. Одна запятая не в том месте — и программа мертва. Одна перемычка между CLK и GND — и железка мертва. Пелевин же может делать любые ошибки и опечатки, и это почти никак не скажется на результатах его работы.


            1. YuriPanchul Автор
              11.10.2021 17:28

              Отнюдь. Напишите на верилоге два модуля, работающие на разной частоте от разных clock-ов, соедините их проводами, и если не будете делать специальных трюков, получите метастабильность. Это уже явление физического мира.


              1. qw1
                11.10.2021 17:38

                Это как раз то, что НЕ делают ИТ-шники/программисты/RTL-писатели.


                1. YuriPanchul Автор
                  11.10.2021 21:08

                  RTL-писатель несомненно рассматривает метастабильность. Это популярный вопрос на любых интервью и есть статьи разбирающие как писать RTL чтобы избежать метастабильность, например http://www.sunburst-design.com/papers/CummingsSNUG2008Boston_CDC.pdf

                  Так же само RTL несомненно рассматривает как RTL код изменяет динамическое энергопотребление за счет минимизации переключения как D-триггеров, так и комбинационной логики. Для этого вводится пара "широкий регистр для данных + бит для enable" и эффект такого кода проверяется с помощью Synopsys PTPX и Cadence Joules, которые выдают отчет в милливаттах, используя waveform c экстрагированными со время синтеза паразитными емкостями и сопротивлениями. А это физика!


                  1. qw1
                    12.10.2021 00:13

                    О чём я и говорю. Метастабильность недопустимый эффект в проектировании. От неё избавляются всеми способами и приходят к формальной математической системе, без физики.


                    1. YuriPanchul Автор
                      12.10.2021 00:32

                      Я хочу сказать, что в области где работает RTL-инженер не все является однозначной формальной системой. В частности, от метастабильности идет избавление не на уровне ASIC library или synthesis tools, а на уровне писания кода на verilog, который является против этого устойчивым ( с помощью снижения вероятности метастабильности синхронизацией через 2-3 триггера + специальных приемов типа передачи информации через gray codes, чтобы избежать попадания логически одновременных сигналов в разные такты)


                      1. qw1
                        12.10.2021 09:35

                        В идеале, об этом должен думать не RTL-писатель, а должно быть переложено на инструменты. Но видимо пока не получается.


                      1. YuriPanchul Автор
                        13.10.2021 10:35

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


          1. werevolff
            12.10.2021 15:03

            А почему бы и нет, собственно? Процесс работы писателя очень похож на программирование: сперва, придумывается сюжет в общих чертах. Потом, создаются сущности, которые выполняют заданный сюжет. Это герои, их характеры, их поступки, побочные сюжетные линии. Чем не TDD? А потом мозг читателя, который, несомненно, является компьютером, воспроизводит этот сюжет, превращая его в нервные импульсы.

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

            Что же касается ваших заявлений, о том, что программист - не айтишник только потому, что у вас IT департаментом называется служба администрирования, то как же нам быть, если в другой компании IT департаментом назовут отдел разработки? И как быть с официальной классификацией трудовой деятельности в РФ, где разработка ПО является частью деятельности в сфере информационных технологий?


        1. YuriPanchul Автор
          11.10.2021 17:34

          *** приведенный вами модуль на двух триггерах, это, в терминах программирования, поток, который пробуждается по фронту сигнала CLK, копирует две переменные, и засыпает до следующего события. ***

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

          *** Просто программа выполняется не миллионами транзисторов, а несколькими десятками. ***

          То есть вы идеологически против аппаратно-программного дуализма?

          Аппаратно-программный дуализм
          Аппаратно-программный дуализм


          1. borisxm
            11.10.2021 19:01

            То есть вы идеологически против аппаратно-программного дуализма?
            Ну да, он несколько надуман: раньше вещи выполненные в «железной» логике (на восьми 155ТМ2, в данном случае), не считали процессором, а по сути, это он и есть, просто очень маленький и с «масочно» зашитой жесткой логикой. А то, что он прекрасно описывается на Верилоге, лишь довершает стройную картину.

            Для разнообразия, возьмите более сложную систему типа навороченного фазового детектора: там будет и память, и машина состояний, и обработка ошибок.


            1. YuriPanchul Автор
              11.10.2021 20:33

              Ну хорошо, а HTML код - программа?


              1. borisxm
                11.10.2021 21:04

                HTML — это язык разметки, изначально неполный по Тьюрингу. Его можно считать своего рода программой для обработчика этого HTML. С другой стороны, язык TeX полон по Тьюрингу и его можно назвать как языком программирования, так и языком разметки.


                1. YuriPanchul Автор
                  11.10.2021 21:18

                  Это все конечно интересные рассуждения, но в реальной жизни в американских, [западно]европейских и [южно и восточно]азиатских электронных компаниях никто синтезируемый код на верилоге программой не называет. Говорят просто "RTL': "напишите RTL", "готов RTL?" , а не "напишите программу?" , "готова ли программа?" итд. Вы считаете все компании должны поменять традицию?


                  1. borisxm
                    12.10.2021 07:18
                    +2

                    Вы считаете все компании должны поменять традицию?
                    Нет, не считаю, т.к. в данном случае речь идет о частном случае. Мы же тоже говорим «написать прошивку» для МК, а не программу. А под программированием понимаем перенос прошивки в ПЗУ.

                    Вот что устаканится лет через сто, то и примем за правильный вариант.


  1. siryoshka
    11.10.2021 09:57
    +4

    Дёрнул пин на андуринке уже программист, повесил на пин внешний светодиод уже айтишник


    1. iliasam
      11.10.2021 10:18

      "повесил на пин внешний светодиод уже айтишник"
      Почему айтишник, схемотехник/электронищик же?


    1. avitek
      11.10.2021 13:24

      повесил на пин внешний светодиод уже айтишник

      Hardware Engineer же!


  1. anonymous
    00.00.0000 00:00


  1. anonymous
    00.00.0000 00:00


  1. i360u
    11.10.2021 10:18
    +2

    Скажите, вот это "айти" "не айти" - согласно каких определений? Насколько я, и многие другие, привыкли думать, IT - это информационные технологии. Википедия с этим, вроде бы, тоже согласна. А тут выясняется.


    1. yoz
      11.10.2021 15:31

      Внутренние особенности, ярко выраженные в СНГ(ты же программист, почини принтер). Не знаю, есть ли подобное на западе.
      Астрофизка или микробиолога не назвать сотрудником ИТ отрасли, хоть он и может быть неплохим специфичным программистом.


    1. YuriPanchul Автор
      11.10.2021 17:43

      Я все ждал, что кто-нибудь начнет ссылаться на википедию. Но это тот случай, когда википедия сама по себе, а реальная жизнь сама по себе. Я работал в MIPS (процессоры), Imagination Technologies (они делали GPU в ранних айфонах), Juniper Networks (чип для роутера), Samsung в партнерстве с AMD (GPU), и во всех этих компаниях есть IT Department вот с теми функциями, которые я описал. И во всех из них на проблемы на рабочем месте с принтерами говорят "обратитесь в Ай-Ти". Как и в остальных таких компаниях вокруг.


      1. victor_1212
        11.10.2021 22:07
        +1

        не про википедию, а про то что на редкость читабильная статья, что такое IT типа и ежу известно :)

        >работал ... Juniper Networks (чип для роутера) ....

        много знакомых было оттуда, в этом маленьком мире, например когда-то участвовал в этом проекте (4200 RS 17 slot + aggregation up to 32 shelves)

        https://www.ven-tel.com/docs/CN-4200_Product-Brochure.pdf


      1. mokridze
        13.10.2021 06:57

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


        1. YuriPanchul Автор
          13.10.2021 06:58

          Наверное речь идет о российской или украинской компании? Я в курсе что в странах бывшего СССР значение слово "айтишный" шире, чем в хайтеке Америки.


      1. i360u
        13.10.2021 09:12

        Я, к примеру, в своей компании могу назвать IT-отделом хоть уборщиц. Разве это поменяет смысл термина "информационные технологии"? Разве IT-компании - это те, которые чинят принтеры? Говорить, что программист - не айтишник - это все равно, что утверждать, что бегун, это не спортсмен, а легкоатлет. Ну потому, что в департаменте спорта сидит пузатый дядька, который никуда не бегает а перекладывает бумажки. И вот он - настоящий спортсмен, угу.


        1. YuriPanchul Автор
          13.10.2021 10:31

          Вы пытаетесь меня логически убедить в чем-то, что может быть для вас логично, но противоречит местной (в Silicon Valley) традиции. Когда здесь кто-то говорит "IT Specialist", то он имеет в виду вот что:

          Ни один из программистов-разработчиков продуктов компании, ни в одной из компаний за 30 лет как я работаю в Калифорнии, не разу не назвал себя "IT specialist". "IT" - так называют людей, поддерживающих внутрикорпоративных сеть и внутренние базы данных. Да, внутри IT тоже могут писать программы, я согласен, но это программы для внутреннего пользования внутри компании, не для продажи наружу как компанейский продукт. В этом отличие в использовании слова IT между технологическими компаниями в штатах и в странах бывшего СССР, где слово IT используется в гораздо более широком смысле.

          Или вот еще что Гугл показывает по слову "IT company". Это компания которая устанавливает софтвер и хардвер и делает поддержку, чтобы все это работало в некоторой организации. Иными словами, это сервис компания, не продуктовая компания:

          Далее, вот статья, которая так и называется: "в чем разница между IT Company и Software Company"?

          https://blog.unosquare.com/whats-the-difference-between-it-and-software-companies

          Читаем:

          "What is an IT company?

          An IT (information technology) company oversees the use of devices storing, retrieving, and sending information.

          What is a software company? 

          A software company creates products that take the form of various types of software. They work on technology, distribution, and product development."

          Иными словами, как я написал: IT Company - это компания, которая устанавливает продукты в некотором бизнесе, чтобы он работал. Это отличается от software company, которая такие продукты разрабатывает.


          1. i360u
            13.10.2021 10:50

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


            1. YuriPanchul Автор
              13.10.2021 11:27

              Я вам говорю, как говорят. Помимо работы в Synopsys (#1 софтверная компания в средствах автоматизации проектирования), Samsung, Juniper Networks, MIPS я делал проекты с Intel, Apple, AMD, знаю людей в Nvidia и кучи других компаний. Никто из разработчиков продуктов этих компаний не говорит "I work in information technology". Говорят "I work in tech", "in electronic design", "in software/hardware engineering", "in computer science", "in electrical engineering".

              Берем википедию, статью "Information technology". Читаем два первых предложения:

              https://en.wikipedia.org/wiki/Information_technology

              "Information technology (IT) is the use of computers [ использование компьютеров] to create, process, store, retrieve and exchange all kinds of electronic data[1] and information. IT is typically used within the context of business operations [ в контексте работы бизнеса ] as opposed to personal or entertainment technologies.[2]"

              Обратите внимание, что речь идет об использовании компьютеров, а не о разработке компьютеров, микросхем для них, операционных систем итд.

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


              1. i360u
                13.10.2021 11:37

                То есть программисты не используют компьютеры в контексте работы бизнеса? Интересно. Я тоже, вроде бы, не вчера родился и успел кое-где поработать. Моя карьерная география тоже не ограничена постсоветским пространством. У вас говорят так, а у нас - не так. Ок.


                1. YuriPanchul Автор
                  13.10.2021 11:51

                  Я допускаю (хотя не знаю), что в Восточной Европе, а также в компаниях, которые используют программистов, но не делают программные продукты (например в банках, хотя я там никогда не работал), могут использовать термин Information Technology в широком смысле, как в странах пост-советского пространства. Если вы мне приведете примеры компаний, в которых это толкуется в широком смысле, мне это будет интересно.


  1. Petrvictorovich
    12.10.2021 01:59
    +1

    Это какой-то... хардкор!

    Пожалуй останусь на пару уровней абстракции повыше.


  1. alexbeykib
    15.10.2021 19:43

    Хотел бы выразить благодарность за Школу цифрового дизайна. Участвовал в осенней школе. Очень понравилось. Особенно часть про RISC-V.

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

    Ведь можно привлечь молодых специалистов из смежных областей для развития направления.

    Может будет доступна такая возможность?


    1. YuriPanchul Автор
      15.10.2021 19:48

      Спасибо! Мы рассматриваем разные варианты расширения - договариваемся со спонсорами и университетами. Мест меньше чем желающих, поэтому наверное будем расширять площадку - не только в Сколково, но и в МИЭТ, ВШЭ МИЭМ, МИРЭА и других вузах.


  1. Korogodin
    21.10.2021 20:42

    Как вам вариант, когда битстрим-файл называют прошивкой ПЛИС?

    И если вспомнит про российские ГОСТы и не относить проект для ПЛИС к программам, то как их оформлять? Как часть конструкторской документации?

    И RTL для FPGA, и классическая последовательная программа для CPU обладают фундаментальными общими свойствами. И то, и то не изделия, а особая runtime технология, применяемая к изделию уже у пользователя и наделяющая заготовку необходимым функционалом.


    1. YuriPanchul Автор
      21.10.2021 22:14

      Это прекрасно, но ровно тот же RTL код на верилоге можно синтезировать и для ASIC (с минимальными изменениями которые можно изолировать - скажем блоки PLL) где он превращается в фиксированные ячейки ASIC library и медные дорожки, что точно не программа. И использование в ASIC бьет использование в FPGA по тиражности изделий на порядки.


      1. Korogodin
        22.10.2021 00:49

        Тут я с вами и не спорю, скорее хочу дополнить. Проектирование RTL, написание программ для ПК и смартфона, создание моделей для 3D-принтера - все это разработка. То есть создание новой технологии, которая позволяет из заготовки создать нечто с нужными свойствами, решающее проблемы людей. Эти технологии объединяет то, что они применяются не на заводе, а уже у конечного пользователя. Первыми ласточками были программы, вот люди и переносят термин по-аналогии.

        Если же вы ограничили термин "программа" только последовательно выполняемыми алгоритмами, то, конечно, RTL - не программа, это описание параллельного алгоритма (закона смены состояний от шага к шагу). Который может быть отражен, в том числе, и в медные дорожки.


        1. YuriPanchul Автор
          22.10.2021 05:25

          *** Эти технологии объединяет то, что они применяются не на заводе, а уже у конечного пользователя ***

          Нет, я же написал, что RTL синтезируемый для ASIC - это схема железа, идущего на завод. Она фиксируется на заводе в виде, в котором ее нельзя поменять. Даже если вскрыть микросхему и попробовать поменять дорожки из меди и что-то перепаять, не получится - сформированы разные структуры транзисторов в процессе производства.

          Я в посте нарисовал слайд на котором код превращается в GDSII файл. GDSII файл - это не прошивка, это именно геометрические изображения слоев кремния с примесями бора и фосфора, а также металлические дорожки из меди:

          На основе GDSII файла делаются маски, которые используеются для печати микросхем. Это не просто изменение порядка соединений уже существующих ячеек. В технологии стандартных ячеек (ASIC standard cells) рядами выставляются разные, специально для этой схемы, ячейки. Они имеют одинаковую высоту для упрощения роутинга, но вы можете наглядно увидеть что ячейки разные, то есть это не прошивка, а разное железо, на заводе:

          вот как выглядят индивидуальные ячейки в ASIC library. Они не унифицированны, как CLB в FPGA. Они фиксированны и имеют разную ширину и структуру:

          Я понимаю ваш тезис про FPGA. Вы хотите расширить слово "программа" до конечного автомата, после чего вписать их по ГОСТу как программу. Но для ASIC синтезируемый RTL код становится эквивалентом геометрической схемы и тем самым, да, является, если вы хотите толковать по ГОСТу (я не читал соотвествующие ГОСТы, я просто верю вам на слово что там вот такое написано) конструкторской документацией.

          Так или иначе, RTL никто ни в MIPS, ни в Juniper, ни в Samsung в хардверной группе (semiconductor IP и ASIC) ни программой, ни прошивкой (firmware?) не называет.