Как разработать микросхему. Собственный процессор (почти)

    Как же разработать свою микросхему. Задался я этим вопросом, когда я захотел создать собственный процессор. Пошёл я гуглить и ничего годного не нашёл. Ответы в основном два։ "Ты не сделаешь свой процессор, потому что слишком сложно" и "Забей и собери компьютер из комплектующих".

    Очевидно что это меня не устаивает, поэтому я решил изучить вопрос серьезнее. Оказалось можно сделать свой процессор описав его с помощью Verilog и FPGA. Купил плату в китае, 3 года спокойными темпами написал свой процессор, оттестировал, скомпилировал и залил на FPGA. Но мне этого недостаточно.

    Так как же разработать микросхему?

    Давайте сначала разберёмся из чего состоит микросхема. Все микросхемы состоят из кремния и корпуса.

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

    А как же кремний

    Кремний производиться на заводе. Каждый завод имеет свою технологию производства. Мы будем рассматривать только технологии 130нм ибо про нее я знаю достаточно много.

    Для того, чтобы производитель произвёл вашу микросхему вам нужно предоставить им GDS-II файл, который является грубо говоря векторной многослойной картинкой вашей микросхемы.

    Первым шагом к разработке является։ связаться с производителем. Если у вас меньше чем 10000 баксов, забудьте. Лучше рассмотреть Multi project wafer service [ https://en.wikipedia.org/wiki/Multi-project_wafer_service ].

    Не все GDS-II файлы могут отправиться на производства. Для того, чтобы понять что можно произвести, а что нет вам понадобиться несколько файлов.

    GDS-II файл и так называемый Process Development Kit

    На картинке вы можете видеть интегральную схему SHA3. Большая область справа это и есть SHA3 схема, а всё остальное так называемый Caravel Harness. Для того чтобы гугл смог произвести вашу микросхему по технологии SKY130 гугл требует чтобы ваша основанная схема справа и подключается к жёлтым точкам. Посмотреть на структуру Caravel Harness можно тут.

    Интегральная схема SHA3 на технологии SKY130, https://efabless.com/projects/4
    Интегральная схема SHA3 на технологии SKY130, https://efabless.com/projects/4

    Process Development Kit эта такая кучка файлов которая содержит։

    • Технологическая документация.

      • Этот файл содержит на удобно перевариваемом формате описание и требования к конечному файлу, кроме того эта документация содержит примеры и описания транзисторов.

    • Модели для симуляции элементов схемы в формате SPICE.

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

    • Технологические файлы, которые позволяют связать файл GDS-II и слои при производстве.

    • Библиотека примитивов - Транзисторов, резисторов, конденсаторов и так далее

      • Параметры

      • Модели для симуляции

      • Символы для рисования схемы

    • Правила Design Rule Check

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

      • Primitive Extraction rules или правила описывающие примитивы. Эти правила позволяют превратить ваш GDS-II представление в список примитивов и их связей (netlist). Сгенерированный netlist также содержит паразитные конденсаторы и резисторы, а сам netlist используется для того чтобы произвести симуляцию компонентов как можно приближённой к реальной интегральной схеме.

      • Layout versus Schematic check или правила, которые позволяют получить из вашего GDS-II так называемый netlist. После чего его можно сравнить со схемой, которую вы нарисовали и уже про симулировали.

    Например, установщик для технологии SKY130 (130нм) можно найти вот тут. Эти скрипты автоматически установят всё необходимое, но не спешите ниже мы найдём скрипт, который сделает все за нас.

    Иногда производитель кремния также предоставляет так называемые файлы Standard Cell Library. Эти файлы предоставляют описание отдельных компонентов, который разработчик может использовать для разработки цифровых интегральных съем или её частей. К этому чуть позже.

    Здесь стоит остановиться и понять, из чего конкретно состоит сам кремний.

    Как рисовать транзистор и как он работает

    Перед тем как что-то разработать нам нужно понять основу интегральных схем - транзисторы MOSFET. Существуют два типа которые мы будем использовать - NMOS и PMOS.

    Давайте разберемся как работает транзистор и как он выглядит. Знакомьтесь։ транзистор

    Транзистор N-MOS. Понять тип можно по типу двух контактов Source и Drain
    Транзистор N-MOS. Понять тип можно по типу двух контактов Source и Drain

    Как мы здесь видим։ у транзистора есть несколько компонентов. Металл и контакт, а также N+ и P Substrate. Когда напряжение Vgs < Vth тогда NMOS закрыт. Когда Vgs >= Vth, а Vds < Vgs - Vth тогда транзистор находиться в линейном режиме. Когда Vgs >= Vth и Vds > Vgs - Vth тогда транзистор находиться в открытом состоянии. Похожим образом работает PMOS, но в отличии от NMOS он закрывается, а не открывается.

    А теперь знакомьтесь։ транзистор PMOS (сверху) и NMOS (снизу)

    Схема инвертера в Magic от спидраннера инвертеров на Ютубе
    Схема инвертера в Magic от спидраннера инвертеров на Ютубе

    Разработка аналоговых компонентов

    Давайте не буду вас томить. Установите в виртуалку Ubuntu и следуйте следующим шагам։ https://github.com/efabless/openlane#quick-start. Я бы установил его в ~/openlane_exp/ ибо именно этот путь я использую в примере

    Для того чтобы установить программы которыми мы будем пользоваться следуйте следующим шагам։ https://github.com/armleo/sky130_ubuntu_setup/blob/main/install_tools.sh

    Также вам может быть интересен https://inst.eecs.berkeley.edu/~cs250/fa20/labs/lab1/

    Нам нужны следующие программы

    • OpenLANE, который установит модели для симуляции и отдельные компоненты и примитивы в соответствующей папке. Почитайте документацию очень интересно. Бесплатный установщик skywater PDK + скрипты для использования разных программ для того чтобы в автоматическом режиме скомпилировать вашу цифровую схему. Кроме того образ докера с предустановленными ПО для компиляции.

      • Yosys. Гордость проектов с открытым исходным кодом. Автор։ Claire Wolf. Позволяет скомпилировать ваш Verilog в gate-level представление, которое описывает вашу цифровую схему в виде отдельных компонентов. Замена Design Compiler от Synopsys

      • Куча других ПО, которые в автоматическом режиме превращают ваш gate-level в GDS-II. Об этом будет в соответствующей главе

    • skywater-pdk. Открытый PDK skywater 130nm. Содержит также так называемые готовые цифровые компоненты, примитивные компоненты и библиотека ячеек ввода-вывода

    • ngspice, Открытый симулятор spice. На удивление неплохой, но я конечно же рекомендую коммерческие симуляторы например HSPICE от Synopsys.

    • xschem, открытая программа для рисования схем. Бесплатная замена CustomCompiler от Synopsys

    • klayout, для рисования и открытия GDS-II. Бесплатная замена CustomCompiler от Synopsys

    • Magic, программа которая может производить DRC, и не только. Вообще очень полезная штука. Бесплатная замена IC Validator от Synopsys

    • Netgen, программа которая может делать LVS проверку. Бесплатная замена IC Validator от Synopsys

    • OpenRAM. Компилятор элементов памяти. Замена Memory Compiler от Synopsys. К сожалению мы не можем им пользоваться ибо у нас нет файлов технологической настройки, который закрыты из-за NDA. Правда готовые блоки с синхронными входами и выходами можно найти здесь.

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

    cd ~/openlane_exp/openlane
    docker run -it --rm -v /home/armleo/openlane_exp/openlane:/openLANE_flow \
    -v /home/armleo/openlane_exp/openlane/pdks:/home/armleo/openlane_exp/openlane/pdks \
    -e PDK_ROOT=/home/armleo/openlane_exp/openlane/pdks \
    -e PDKPATH=/home/armleo/openlane_exp/openlane/pdks/sky130A/libs.tech/magic \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -v /home/armleo/openlane_exp:/home/armleo/openlane_exp \
    -e DISPLAY=unix$DISPLAY \
    -u 1000:1001 efabless/openlane:v0.12
    
    klayout /home/armleo/openlane_exp/openlane/pdks/skywater-pdk/libraries/sky130_fd_sc_hd/latest/cells/inv/sky130_fd_sc_hd__inv_1.gd

    Команды сверху установят пример инвертера и запустит докер с проброской из моей домашней папки и проброской X11 для окон.

    После открытия надо подключить технологические файлы.

    • Откройте Manage Technologies

    • Правый клик по списку технологий

    • Найдите файл /home/armleo/openlane_exp/openlane/pdks/sky130A/libs.tech/klayout/sky130A.lyt

    • Откройте настройки слоев

    • Выберите sky130A

      Хотите увидеть инвертер?

    Инвертер
    Инвертер

    Да выглядит уродливо, зато бесплатно ։D.

    Давайте поймём что это за схема, как она работает и из чего состоит. Сверху синий слой это метал по которому подключается SOURCE и BULK ножки PMOS транзистора к VDD или позитивному напряжению. Снизу слой металла по которому идёт VGND или заземление, который подключается к ножке SOURCE и BULK NMOS транзистора.

    Ножки GATE подключенные к друг другу и к вводному сигналлу A с использованием слоя полисиликона LI1.

    Выход подключен к контакту Y с использованием слоя полисиликона LI1.

    Инвертер работает следующим образом։

    • NMOS открыт, когда на входе высокое напряжение, а PMOS закрыт. Таким образом на выходе получается низкое напряжение. NMOS открыт, поэтому низкое напряжение подаётся на выход, но короткого замыкания не просиходит, посколько PMOS закрыт.

    • NMOS закрыт, когда на входе низкое напряжение, а PMOS открыт и VDD подключен к сигналу Y. NMOS закрыт, поэтому низкое напряжение не подаётся на выход, и короткого замыкания не происходит. Таким образом на выходе получается высокое напряжение.

    Схема в разрезе։

    Схема соответствующая инвертеру։

    Здесь вы можете видеть, что у транзистора на самом деле 4 ноги։ DRAIN, SOURCE, GATE, BULK.

    В следующей частях разберемся։

    • как нарисовать несколько компонентов (NAND, NOR), сделать LVS, DRC, PEX и провести симуляцию.

    • Поймем, что такое последовательные компоненты (Sequential components) - Latch, Flip-flop

    • После мы разберём как скомпилировать наш Verilog в GDS.

    • Поймём как собрать нашу схему в Caravel

    Комментарии 26

      +21
      Ужасающее количество орфографических ошибок. Вас что, кнутом заставляли писать как можно быстрее? Можно же было после написания проверить текст спеллчекером, дать день-два отлежаться, после чего еще раз вычитать. А если своей грамотности не хватает (уж очень часто встречается ошибка «тся/ться), дать вычитать кому-то другому.
      Вот, кстати, чем мне не нравится список аргументов за минус к статьям: среди прочего там есть „придраться к орфографии“. Но если статья хорошая (а эта по крайней мере на первый взгляд выглядит неплохой), сливать ее по такому дурацкому поводу рука не поднимается. А если статья про очередные непризнанные теории и прочий шлак, не хватает кнопки „антинаука и мракобесие“.
      В общем, послушайтесь совета: вычитайте статью, дайте вычитать другим людям и исправьте ошибки, опечатки и прочий „силикон“.
        +1

        Исправил сколько смог. Спасибо за советы!

          +3
          Что-то больно быстро вы выполнили совет «день-два отлежаться». Вы машину времени раскопали?
          Кремний производиться на заводе

          Или другому человеку дайте вычитать. Вы же не пост на форум пишете «памагите ичего не работает», а статью на солидный ресурс.
            +8
            «Солидным» хабр был лет 12-15 назад, сейчас это просто рекламная площадка. Так что зря Вы на автора бочку катите.
              +2
              В рекламных статьях пусть хоть на олбанском разговаривают. Рак не жалко.
              Но автор-то пишет о вполне технических вещах.
              И это не «катание бочки» а именно совет как сделать лучше.
          –1
          Я твой дом труба шатал, калитка хлопал, кепка на MOSFET вертел!
          –4
          Арман джан, барев дзес!
          спасибо за статью!
          великолепная подборка материала.
          не обижайся на тех кто тычет в ошибки, обычно люди с возрастом становятся вежливее, кто-то с детства, кто-то позже, но кто-то так и остается Гагиком
            0
            Очень интересная статья. Хотелось бы в следующих статьях цикла узнать как получить физическую микросхему и сколько это может стоить (и есть ли тенденция к уменьшению цены). Ну и как пройти все грабли наиболее дешевым способом
              0

              "как получить физическую микросхему и сколько это может стоить" Ждать пока SKY130 запустит еще один Multi-project wafer и получить 50 схем за бесплатно.
              Касательно других технологий։ https://en.wikipedia.org/wiki/Multi-project_wafer_service
              https://www.cmc.ca/technologies/ Здесь есть список цен по площади микросхемы. Учтите, что здесь нет информации о минимальных требованиях.
              Также не забывайте, что вам придеться купить ПО для разработки самой схемы. Если вы учитесь в институте по профилю в какой нибудь канаде всё это будет стоить вам дешевле, ибо у вас будет все ПО и стоимость производства по подписке для институтов будет ниже


              Например։
              STM 28 nm FD SOI CMOS
              1.0 V/1.8 V
              1P8M
              $12,500/mm2
              (Minimum charge is for a 1.25 mm2 design)


              TSMC 0.13 µm CMOS RF Mixed-Signal Process
              1.2 V/3.3 V
              1P8M
              mimcap
              $2,050/mm2


              Если это чисто цифровая микросхема используйте FPGA за 6-100$.
              Если аналогавая, попытайтесь собрать её из существующих компонентов и FPGA по необходимости.

              –5
              Не делайте слишком хороших процессоров, чтобы не попасть под санкции!
                +2
                Так значит проектируем своего Т-2000 с нуля? :)
                  +14
                  Задумка со статьёй очень интересная. Реализация ужасная, т.к. имеется в изобилии каша в голове, провалы в памяти и полнейшее незнание или нежелание изучать предмет ПП технологии.
                  Минутка ярости
                  Для сравнения, в переводе на айтишный язык Вы только что написали примерно такое руководство по программированию: «компухтер состоит из проца и мозгов, ещё его можно запрограммировать включать свет в туалете, а теперь я вам покажу как разыменовывать указатель в C++, а в следующей части мы будем делать автопилот на питоне».

                  Критика. Попробуйте учесть это в следующих статьях. Про силикон Вам уже написали. Нет такого материала в микроэлектронике «полисиликон». Есть поликремний. У Вас очень плохо с терминологией и базовой подготовкой. Читайте русские книги по технологии. Их мало, но они есть.

                  Пассаж про «все микросхемы состоят из кремния и корпуса» и далее впечатляет. Начиная от нагловато-пренебрежительного отношения, типа «чо тут думать, дёргать надо», и заканчивая той же терминологией. Кремний и корпус — это как тёплое и мягкое. В русском языке принят термин «подложка» или «кристалл». Подложка может быть из монокремния, и чаще всего это так, но это вообще не догма, также, как и корпус из пластика.

                  «Кремний производиться на заводе. Каждый завод имеет свою технологию производства.» Факт, что на заводе. Технология производства электронного кремния ± одинаковая на любом заводе. А микросхемы производят на других заводах, о чём речь дальше и идёт. Это опять какая-то кривая калька с английского.

                  GDS-II всего лишь формат файла. С тем же успехом можно отправить на производство и OASIS. Лучше говорить о топологии, т.е. содержимом, а не о формате. Ещё, для лучшего понимания результата, неплохо знать, что слои, используемые при проектировании схемы, и технологические «в кремнии» — это вообще-то не одно и то же. Для начала, есть определённые правила преобразования из первых слоёв в так называемые «масочные», т.е. те слои, которые соответствуют топологии фотошаблонов. Несколько слоёв и дататайпов могут накладываться друг на друга с определённой логической функцией для формирования одного масочного слоя, например, или автоматически генерироваться новые масочные слои, отсутствующие в дизайне схемы. А в процессе производства структура вообще будет во многих нюансах выглядеть иначе, чем нарисовано. Примеры. Профили ионного легирования, будут зависеть от режимов разгонки примеси. Размеры после травления будут иметь заранее известные технологические уходы от размеров в дизайне. А контактные окна вообще будут круглыми, хотя рисуют их всегда квадратными.

                  «Мы будем рассматривать только технологии 130нм ибо про нее я знаю достаточно много.» Really!? Так-то вообще ничего похожего на описание особенностей технологии 130 нм дальше нет.

                  «Большая область справа это и есть SHA3 схема, а всё остальное так называемый Caravel Harness. Для того чтобы гугл смог произвести вашу микросхему по технологии SKY130 гугл требует чтобы ваша основанная схема справа и подключается к жёлтым точкам.» Кровь моя глаза прошиб. Ничего не написали, что есть Caravel Harness, хотя это совсем не обычный MPW запуск, а весьма кучерявая SoC, которая будет обслуживать ваше кастомное ядро. Насколько я понял, почитав это по диагонали, как минимум режимы I/O программируются исключительно этой штукой. Прямого доступа к падам у вас нет. Кстати, те жёлтые точки, и есть пады или контактные площадки, если говорить по-русски.

                  Тему, как работает транзистор, Вы, конечно, слили вчистую. Дали бы хоть на Википедию ссылку для приличия. Как его правильно нарисовать (и зачем, если у Вас есть готовый PDK) по слоям тоже толком не объяснили. При чём тут разработка аналоговых компонентов вообще не понятно, и как в этой части оказалось описание цифрового тулкита и инвертора?
                    0

                    Учту. Спасибо за советы

                      0

                      Armleo можете на рисунке с текстом "Транзистор N-MOS. Понять тип можно по типу двух контактов Source и Drain" пояснить, где паразитный диод и добавить более внятного описания что есть что пожалуйста? Вот синее — это металл? Поясните пожалуйста почему Source имеет такую причудливую форму, соединяя P+ и N+? И также что такое N+ и P+.
                      Спасибо за очень интересную статью!

                        0
                        Поясните пожалуйста почему Source имеет такую причудливую форму, соединяя P+ и N+?

                        Он и подаёт напряжение на подложку, чтобы в ней образовался проводящий канал под затвором, и подаёт «полезную нагрузку» через этот канал на сток.

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

                        И также что такое N+ и P+.

                        Зоны легирования с добавлением электронов и с добавлением дырок соответственно.
                          +2
                          И также что такое N+ и P+.

                          Зоны легирования с добавлением электронов и с добавлением дырок соответственно.

                          Если точнее, зона, сильно легированная донорной и акцепторной примесью. Важно что N+, P+ это сильно легированная в отличие от N, P, которые просто легированы. И важно что добавляются не электроны или дырки, а примесь, которая их порождает. Все-таки если в полупроводник «насыпать» электронов, он просто зарядится отрицательно, без интересных эффектов.
                          0
                          Поясните пожалуйста почему Source имеет такую причудливую форму, соединяя P+ и N+?

                          Это конфигурация проводящей области. Физически, естественно, области истока, стока и затвора никак не меняются, но если к затвору приложить напряжение, электроны из подложки либо притянутся поближе к каналу, что увеличит его проводимость, либо оттолкнутся, что ее уменьшит. Поскольку потенциал на истоке обычно выше, чем на стоке, электроны притягиваются больше к нему, поэтому и проводящая область искажается несимметрично.
                          Это так, на пальцах. На самом деле там немного сложнее.
                            0
                            Добавлю несколько фраз к ответам. Да, синее — это металл. В левой части структуры область легированная p+ сделана для формирования омического контакта металла к ПП подложке. Иначе получится диод Шоттки. Контакт к подложке сделан, чтобы привести потенциал подложки к потенциалу истока, т.к. транзистор управляется потенциалом затвор-исток. Будет гулять потенциал подложки, поедет пороговое напряжение. За одно этим же способом исключается отпирание pn-переходов КМОП структуры с одним карманом. Открытие этих переходов черевато так называемым тиристорным эффетом или «защёлкиванием», когда КМОП-структура самопроизвольно открывается накоротко и начинает потреблять ток как не в себя. Чтобы этого не произошло используют и дополнительные приёмы. А в более продвинутых технологиях (читай, в любых субмикронных) вообще используют twin-tub процесс с двумя изолированными карманами, правда причин для этого всё же больше, чем только «защелка».

                            Что касается широко известного «паразитного диода», то в данном примере он получится из pn-перехода подложка-сток. Но о нём говорят, как правило, относительно дискретных транзисторов и называется он в оригинале body diode. У таких транзисторов, как правило, другая структура, не планарная, а вертикальная, но её базовый принцип работы тот же. Отличия в конструкции. Посмотрите объяснение тут, например. И ещё хорошая дискуссия тут.
                          0

                          Автор, а ты случаем не продаёшь свой процессор?))) я бы может купил, порезал и посмотрел на него

                            0
                              0
                              Ни в одном институте (а я закончил 3 разных после колледжа) я не видел такой специальности и даже не представляю как она называется. Как называется специальность людей которые делают микросхемы и как таких людей называют? В России сейчас, после СССР, такие люди остались? Можете рассказать о последних российских (не советских) поделках? А оборудование для производства? Слышал, что все оборудование устарело, а что мешает самим сделать новое и современное, ведь не боги горшки обжигают и не боги современное оборудование делают? Почему в прессе говорят о том, что его покупать надо, почему не делают сами, ведь в СССР могли как-то?
                                –1
                                Оно называется программист. Потому как все современные цифровые интегральные схемы пишут на System verilog и потом компилируют либо до FPGA (грубо говоря эмулятор, но железный), либо до кремния. Например, как Intel.

                                А вот с Analog Devices все сложнее.
                                  +2
                                  Никто не называет разработчиков микросхем, даже полностью цифровых, программистами. Их называют «разработчиками микросхем».
                                  +1
                                  Специальностей по разработке и производству интегральных микросхем довольно много. Специалистов называют разработчиками, технологами, верификаторами, топологами, системными архитекторами и много кем еще, в зависимости от того, чем именно они занимаются.
                                  ВУЗы, в которых можно получить эту специальность — это, например, МИЭТ, МФТИ, МИФИ, МИРЭА, ИТМО, ЛЭТИ.

                                  В России такие люди еще остались, но их становится со временем меньше, потому что за границей лучше кормят. Оборудование не делают сами, потому что со времен распада СССР его сложность и стоимость выросла на несколько порядков.
                                  0

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

                                    0

                                    Арман Аветисян! Слов нет, но Вы гений! Благодарю за статью, вернее за Труд и Усердие, которое вложили в свое детище и не пожалели свой РИД нам, подписчикам Хабра!

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

                                    Самое читаемое