В каких программах проектируют процессоры

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

Понятное дело, Россия не является лидером в этой области. Но нельзя сказать, что мы находимся совсем уж в аутсайдерах (иначе наших выпускников не брали бы на работу такие фирмы как Intel и AMD). Итак, посмотрим, что же мы сейчас в России выпускаем.

МЦСТ Эльбрус

МЦСТ Эльбрус разрабатывает две ветки процессоров: собственно Эльбрус и SPARC.

Микросхема центрального процессора 1891ВМ12Я.

Последняя разработка содержит 8 ядер архитектуры «Эльбрус» 5-го поколения с тактовой частотой до 1.5 ГГц. Позволяет строить многопроцессорные серверы и рабочие станции, а также бортовые компьютеры.

Процессоры AMD — откуда такие числа?

ФГУ ФНЦ НИИСИ РАН

Серия процессоров КОМДИВ. Микросхемы производятся иностранными компаниями: тайваньскими TSMC и UMC, американской GlobalFoundries и немецкой X-Fab. Название говорящее, не правда ли? Информации почти нет, разработка почти полностью наша, известно что процессоры стойки к радиации. Скорее всего используются в космосе.

Байкал Электроникс

«Байкал Электроникс» лицензировал процессорные ядра у Imagination Technologies (бывший MIPS). Производство на Тайване. В основе процессора ядро MIPS P5600.

Процессор можно использовать в станках, офисной технике, сетевом оборудовании и много еще где.

Можно еще назвать таких производителей как Элвис, Миландр, Модуль, КМ211, Мультиклет, КБ «ГеоСтар навигация», IVA Technologies.

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

Производства микропроцессоров в России

Не все микропроцессоры производятся за границей. В России и Белоруссии есть пять производств микропроцессорной техники: Микрон и Ангстрем (Зеленоград), фабрика в Курчатове/НИИСИ, фабрика в Воронеже и фабрика Интеграл (Белорусь).

Согласитесь, что мы не такая уж банановая республика. Хотя, могли бы и лучше.

Источник: dzen.ru

Как разрабатываются и создаются процессоры? Часть 2: Процесс проектирования процессора

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

КАК Я СОБИРАЛ КОМПЬЮТЕР для 3D МОДЕЛИРОВАНИЯ и РЕНДЕРА | ПРОЦЕССОР(CPU) AMD или INTEL ?

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

В современных процессорах используются два основных типа транзисторов: pMOS и nMOS. Транзистор nMOS позволяет току течь, когда подается ненулевое напряжение на затвор, а транзистор pMOS – наоборот, проводит ток, когда напряжение на затворе стремится к нулю. Комбинируя эти типы транзисторов, мы можем создать логические вентили CMOS. В третьей части серии мы ещё остановимся подробней на физике работы процессоров.

Логический вентиль (логический элемент, гейт) – это простейшее устройство, которое принимает входной сигнал, выполняет некоторые операции и выводит результат в виде выходного сигнала. Например, вентиль AND (И) включит свой выход тогда и только тогда, когда все входы в вентиль включены. Инвертор или вентиль отрицания NOT (НЕ) включит свой выход, если вход отключен. Объединив эти два гейта, мы получим логический элемент NAND (И-НЕ), который включает свой выход, если и только если ни один из входов не включен. К другим логическим гейтам, с иной логической функциональностью, относятся OR (ИЛИ), NOR (ИЛИ-НЕ), XOR (Исключающее ИЛИ) и XNOR (Исключающее ИЛИ с инверсией).

Ниже показаны схемы двух основных логических элементов, реализованных с помощью транзисторов: вентиль отрицания (инвертор) и вентиль NAND (И-НЕ). В инверторе сверху находится транзистор pMOS, подключенный к питанию, а снизу транзистор nMOS, подключенный к земле. Транзисторы pMOS обозначаются с небольшим кружочком на затворе.

Читайте также:
Самая лучшая программа родительского контроля для Андроид

Поскольку устройства pMOS срабатывают при отключенном входе, а устройства nMOS наоборот – при включенном, то несложно понять, что сигнал на выходе всегда будет противоположным сигналу на входе. Глядя на вентиль NAND, мы видим, что для него требуются четыре транзистора и что выход будет включен, пока хотя бы один из входов отключен. По такому же принципу, как формируются приведенные примеры элементарных транзисторных схем, проектируются и более сложные логические гейты и прочие схемы внутри процессоров.

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

В качестве примера, взглянем на простой полный одноразрядный сумматор. Он имеет три входа – А, B и Вход переноса (Cin), и два выхода – Сумма (Sum) и Выход переноса (Carry out). Базовая схема такого сумматора строится на пяти логических гейтах, которые можно сгруппировать для получения сумматора требуемого размера. Современные схемы вносят некоторые улучшения, оптимизируя работу логики и работу с переносами, но суть остаётся прежней.

Вывод Суммы (Sum) включается, если A или B включены (но не оба сразу), либо если есть сигнал переноса (Cin), при этом A и B одновременно включены или выключены. Вывод переноса (Carry out) функционирует несколько сложнее – он срабатывает либо при одновременном включении A и B, либо если есть сигнал переноса и один из A или B (но не оба сразу).

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

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

Секвенциальная логика строится путем подключения инверторов и других гейтов таким образом, что их выходы возвращают сигналы на вход гейтов. Эти контуры обратной связи используются для хранения одного бита данных и известны как статическое ОЗУ или SRAM (Static RAM). Статическим оно называется в противоположность динамическому (DRAM), поскольку сохраняемые в нём данные всегда напрямую связаны с положительным напряжением или землей.

Ниже показан стандартный способ имплементации одного бита SRAM на шести транзисторах. Верхний сигнал WL (Word Line, словная линия) является адресным, и когда он включен, данные, хранящиеся в этой 1-битной ячейке, подаются на битовую линию BL (Bit Line). Вывод BLB (Bit Line Bar, шина битовой линии) это просто инвертированное значение битовой линии, но физически это одна и та же линия. Помимо двух типов транзисторов, мы видим и знакомые нам схемы инверторов, выполненные на транзисторах M3/M1 и M2/M4.

SRAM используется для создания сверхбыстрых кэшей и регистров внутри процессоров. Такая память очень стабильна, но требует от шести до восьми транзисторов для хранения каждого бита данных. Это делает его чрезвычайно дорогим по стоимости, сложности и площади чипа по сравнению с Dynamic RAM. DRAM, в свою очередь, хранит данные в крошечном конденсаторе, а не с помощью логических вентилей. Динамическим оно называется потому, что напряжение на конденсаторе может динамически изменяться, поскольку оно не подключено напрямую к питанию или земле.

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

Принципиальная схема DRAM. Address Line – адресная шина (словная линия); Bit Line – битовая шина (битовая линия); Transistor – транзистор; Storage capacitor – конденсатор; Ground – земля.

Такие производители, как Intel, AMD и Nvidia, не публикуют схем работы своих процессоров, поэтому и мы не можем предоставить точные схемы узлов современных процессоров. Однако этот простой сумматор позволяет получить достаточное представление о том, как даже самые сложные части процессора можно разбить на составляющие логические элементы, элементы памяти, и в конечном итоге – на транзисторы.

Читайте также:
Открыть папку программы на мак

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

Многие, наверное, слышали о так называемом «разгоне» – увеличении тактовой частоты процессора с целью повысить его производительность. Этот выигрыш в производительности достигается за счет более быстрого переключения транзисторов и внутрипроцессорной логики, чем предусмотрено производителем.

Поскольку число тактов в секунду становится больше, то и операций может быть произведено больше, отчего и повышается производительность процессора. Но это справедливо лишь до определенного предела. Большинство современных процессоров работают с частотой от 3,0 до 4,5 ГГц, и за последнее десятилетие ситуация не сильно изменилась.

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

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

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

Очевидно что это меня не устаивает, поэтому я решил изучить вопрос серьезнее. Оказалось можно сделать свой процессор описав его с помощью 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

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

  • Технологическая документация.
  • Этот файл содержит на удобно перевариваемом формате описание и требования к конечному файлу, кроме того эта документация содержит примеры и описания транзисторов.
  • Эти модели используются для симуляции компонентов интегральной схемы. Перед тем как нарисовать структуру кремния, вам нужно сначала определиться со схемой, которую вы будете рисовать.
  • Параметры
  • Модели для симуляции
  • Символы для рисования схемы
  • Эти файлы привязаны к конкретному программному обеспеченью и содержат список правил, на которые в автоматическом режиме будут проверяться ваши интегральные схемы или её отдельные компоненты.
  • Primitive Extraction rules или правила описывающие примитивы. Эти правила позволяют превратить ваш GDS-II представление в список примитивов и их связей (netlist). Сгенерированный netlist также содержит паразитные конденсаторы и резисторы, а сам netlist используется для того чтобы произвести симуляцию компонентов как можно приближённой к реальной интегральной схеме.
  • Layout versus Schematic check или правила, которые позволяют получить из вашего GDS-II так называемый netlist. После чего его можно сравнить со схемой, которую вы нарисовали и уже про симулировали.
Читайте также:
Как удалить удаленные программы из itunes

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

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

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

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

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

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

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

Похожим образом работает PMOS, но в отличии от NMOS он закрывается, а не открывается.

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

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

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

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

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

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

  • OpenLANE, который установит модели для симуляции и отдельные компоненты и примитивы в соответствующей папке. Почитайте документацию очень интересно. Бесплатный установщик skywater PDK + скрипты для использования разных программ для того чтобы в автоматическом режиме скомпилировать вашу цифровую схему. Кроме того образ докера с предустановленными ПО для компиляции.
  • Yosys. Гордость проектов с открытым исходным кодом. Автор։ Claire Wolf. Позволяет скомпилировать ваш Verilog в gate-level представление, которое описывает вашу цифровую схему в виде отдельных компонентов. Замена Design Compiler от Synopsys
  • Куча других ПО, которые в автоматическом режиме превращают ваш gate-level в GDS-II. Об этом будет в соответствующей главе

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

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

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru