Мне вопросы понравились, спасибо.
Я тут почитал тему до конца, и как то чувствую, еще есть в голове не отвеченные вопросы:
Попробую быть кратким, без растекания по древу:
1. Так пластины TMSC начало производить, или нет. Если нет то когда запланирован батч. Сколько пластин заказали. Количество чипов на пластине уже писалось, но в общем ответе пусть будет для новичков сразу инфа будет.
Фаб UMC. Инженерный запуск 18 пластин начат был в конце марта с FEOL-части масксета (дату точно не помню, около 22-25 марта, FEOL - это транзисторные структуры с учетом поликремния до контактов). BEOL был отослан примерно через месяц (в конце апреля). Обработанные пластины ожидаем на 16 мая. По производственным мы забили минималку по 25 пластин ежемесячно, НО, число может уточняться добавлениями срочных запусков. Т.е. минимум прирост будет 0.5 Ph/s ежемесячно плановый, максимум ограничен количеством желающих майнить.
2. Какая площадь чипа получилась, и сколько слоев соединений. Сколько всего logic gates, транзисторов получилось на чипе. Вручную разводка, снимаю шляпу, а всего чипа или только ядра вычисления.
Размер кристалла 3.8x3.8 мм 5 слоев меди и один толстый слой алюминия - 6 слоев металла итого. сколько logic gates сказать трудно, 42 млн транзисторов в чипе. К примеру логика управления выполнена на элементах И-НЕ - просто массив И-НЕ - это было сделано для того, чтобы не затягивать срок производства инженерного запуска. Я хотел синтезировать логику, но в итоге прикинув что 56'000 NAND2 ячеек не так уж и много пошел вручную - т.к. грубая оценка затрат времени на приточку того-же тулчейна синопсиса под такую задачу (это мой первый чип напомню и соответственно времени затраты идут на обучение тоже!) - показала что будет быстрее и надежнее руками (надежнее в смысле отсутствия ошибок). Но - кстати - готов купить консультацию - как с помощью тулзов существующих сделать укладку на собственный gate array (т.е. как готовить свой структурированный асик, из того что увидел понял что это не так тривиально и потребуется свои скрипты писать как минимум). Ядра тоже вручную - в отличии от схемы управления поскольку ядро сильно оптимизировалось - то эээ - его долго потребовалось выпиливать по сравнению с цепями управляние. Ядро заняло примерно с начала декабря по середину февраля. А дальше все остальное - контрол и PAD'ы (шины питания + ESD + I/O ячейки) примерно пополам. Контрол делался в последнюю очередь.
3. А маски кто производил. Или Вы весь сервис через стороннюю сервис компанию делали.
Маски заказывали через посредника, производитель масок - dai nippon corporation - японцы.
4. Какой корпус.
QFN48 7x7 mm пластик.
5. Регулятор напряжения свой, или надо внешние питание ядра.
Неизвестно заработает-ли свой или нет. В общем идея своего регулятора следующая - в чипе стоит два транзистора токового зеркала, усилитель и шунт VDD+GND. Опишу нетлист:
Nmos1(gate=CMMINUS, drain=CMMINUS, source+bulk=GND)
Nmos2(gate=CMMINUS, drain=CMPLUS, source+bulk=GND)
Nmos_amp(gate=CMPLUS, drain=CMQ, source+bulk=GND) - эти все matched-транзисторы - собраны в непосредственной близости друг от друга.
Nmos_shunt(gate=CMQ, drain=VDD, source+bulk=GND) - распределенный, хитрый транзистор.
далее - как это подключается - цепь по сути сравнивает токи I(CMMINUS) и I(CMPLUS). Если I(CMMINUS)=I(CMPLUS), то поддерживается некоторое установленное значение напряжения на выходе V(CMQ), и соответственно некоторый установленный ток через шунт I(SHUNT). Далее если скажем I(CMMINUS) > I(CMPLUS), то увеличивается напряжение V(CMMINUS), транзистор Nmos2 открывается, I(CMPLUS) увеличивается, а V(CMPLUS) уменьшается, соответственно V(CMQ) увеличивается, и I(SHUNT) увеличивается. И наоборот.
Теперь - представьте себе что мы подключаем пин CMMINUS через резистор 100 Ом к VDD, а пин CMPLUS через резистор 200 Ом к VDD чипа который непосредственно в цепочке над нашим чипом. (номиналы другие - ввиду того что на самом деле в точке V(CMMINUS) не ноль - но для иллюстрации это не важно). Что будет происходить ? Система будет выравнивать ток через шунт таким образом чтобы VDD на нижнем чипе сравнялось с VDD на верхнем чипе.
Далее все упирается в динамику, шумы, и вариации тех процесса. Разберу подробнее - скорость реагирования 0 --> max для IShunt от входов порядка 30 Мгц ступенька. Если-же на небольшую амплитуду - то там очень хитрая цепь (хитрая в смысле что с наскоку не будет понятно где и как задумана была интеракция паразитов) из паразитных компонент которая срежет все что > 500 мГц, включая внутренние. Вот насколько срежет - это надо увидеть, увы ввиду вычислительной сложности задачи - расчеты слабые. Далее - шумы переключений в диапазоне 3-6 Ггц - таки будут складываться в цепочке - это не хорошо, но что еще хуже не совсем понятно будет-ли происходить их усиление на шунтах и че с этим можно сделать. И далее - что с вариациями процесса в пределах пластины - если чипы практически идентичные, то кпд работы шунта будет хорошим - по сути он будет изредка пропускать небольшую долю тока компенсируя "провалы" между заданиями, сбросы и так далее, а в установившемся режиме счета ток протекающий через шунт будет стремиться к нулю (это задумка). Но в реальности если воткнуть сверху более быстрый чип а снизу более медленный - будет лажа по понятным надеюсь причинам. Т.е. возможно даже если эта схема и рабочая то без сортирующей линии мы ее не сможем производить.
6. Какая шина общения с чипами. И какие уровни для этой шины.
3 входа SPI: MOSI, MISO, SCK и 3 выхода: MOSI, MISO, SCK.
Чип умеет работать как повторитель и level-shifter. Reset-последовательность - задрали SCK в 1 и дергаем MOSI - экономили пины на chip select.
Уровень - от 0.8 до 1.8 V.
Еще есть вход IREF на который нужно подать значение "середины". Уровень сэмплится IREF +- 50 mV с гистерезисом.
Еще есть клок - ICLK, OCLK - тоже с левел-шифтером. IREF как раз задумывался чтобы в сложных условиях цепочек чипов можно было правильно выбрать уровень и избежать искажение скважности. Скорость работы SPI не менее 50 Мгц. ICLK на всякий случае если внутренний генератор будет работать плохо.
7. Если не секрет, где корпусировать будете, и когда.
ASE сразу после выхода пластин. Но сейчас есть очень злой момент - чип вообще хочется увидеть буквально сразу. Но ASE это еще 2-3 недели. Как закорпусировать одну пластину но быстро ищем... Т.к. угробить пластину не хочется, и корпусировать по 20 евро чип тоже не хочется. Но хочется чтобы кто-то за день ее экспрессом закорпусировал, или закорпусировал 50 чипов, а остальное уже в обычном порядке... Пробуем ASE на это укатать - но пока-что тяжело - они бронявые.
8. Какой способ тестирования чипов выбрали: тестовые вектора для упакованного чипа, probe card и т.п.
Мы чипы забираем БЕЗ тестирования. Тестирование - дорогое удовольствие. Чип выполнен так что мы ожидаем высокий выход годных (если годным считать чип в котором есть битые ядра к примеру). Не годный чип для нас - это чип с коротким по питанию или чип в котором не работает I/O или логика управления. В логике управления как раз много ухищрений чтобы она хорошо получалась (увеличина геометрия, 4-кратное дублирование via и так далее - выполнена по нормам design for manufacturing).
Тестирование-же проекта выполнялось по тестовым векторам, причем в том числе полного чипа с 5 ядрами. Аналогично пойдет и тестирование чипов когда получим - шаг за шагом проверка узлов + измерения. Далее - будет понятно как их использовать. В моем видении если не годных мало - то надо давать им в том числе чипам с кз спокойно сгорать на платах, и просто дерейтить платы, а в случае продаж - то просто заменять эти платы. Плюс в случае хешера все равно тестирование прогнав чип на нагрузке и нагреве не может быть заменено на тестирование на фабе головой, или в корпусах.
9. По теме понял что будет спецификация на чип для сторонних разработчик, как в этом направления, когда запланирована хоть первая ревизия дата шита.
Дайте чип получить :-) Пока даташита нет - так из тех кто свои устройства проектируют от меня получают IBIS-модель, PINOUT, и полную verilog-модель (по ней кстати можно чип синтезировать на std.cell). Авалон к примеру получил - ща курят ее. Так что работать над созданием устройства и моделировать скажем коммуникацию и счет чипа можно сразу, НО - там как работает токовое зеркало или сколько мы будем кушать - реально информации больше чем написано нет. Ее измерять по-хорошемо надо.
10. По ядру расчетов вопрос: это конвейер вычислительный, или единый многотактный исполнитель (отдал данные, такты ..., получил результат)
А трудно так разделить. Ядра фидятся - clk, wln, eln, wlns, elns, wrstn, rrstn, wnon сигналами управления, которые на каждый такт меняют значения, эти сигналы программируемые кстати, и можно немного разные хеши считать. Плюс еще идут win[0:31], al[0:31], el[0:31], ms[0:31], k[0:31], k1[0:31] шины, по которым соответственно в разные значения времени могут загружаться данные - это сделано для экономии кремния - провода дешевле кремния. После 16 такта грубо (оно там еще скошено в пайплайне) ядро работает как многотактный исполнитель (вся загрузка завершена). И потом на выходе ядра единственный асинхронный сигнал match - мол "я нашло"
11. Внутренний PLL, какой частотой надо питать. В каком диапазоне он настраивается.
PLL'а внутреннего нет - есть два осциллятора на инверторах программируемых - один работать должен в диапазоне 0.35-1 Ггц, другой наоборот
0.05-0.4 Ггц. Там между ними различие что первый просто цепь инверторов и при значительной ее длине могут быть искажения, а второй более сложный - RS-защелка и цифровая программируемая цепь задержки (широкий AND собранный из NAND2). Как будет работать - посмотрим. Для коррекции duty cycle - есть делитель пополам частоты (опциональный). Клок можно выбросить наружу и посмотреть на его характеристики.
12. Сколько таких ядер размещается на одном чипе, и каковы расчетные частоты работы этих ядер.
756 ядер (сдвоенный sha256). Думаю оптимально - около 430-500 мГц (5-5.8 Gh/s), а напряжение подгонять под частоту.
13. Управление каждым ядро свое (вкл/выкл частота и т.п.) или все общее, и внутри схема распределения диапазонов nonce или все настраиваться из вне.
В итоге - все общее. Частота включена всегда. Диапазоны нонс забиты жестко - старшие 10 бит нонса. по сигналу wnon - каждое ядро "впрессовывает" в биты потока свой код.
14. Забирать результат надо опрашивая в цикле, или есть некая внешняя линия для прерывания цпу, что забирайте nonce найдено.
Не-а - надо поллить. Так надежнее (ХОСТ управляет распределением бандвича!). POLL продуман так что хост формирует некоторый буффер с заданиями на программирование скажем 16 kb, отсылает его через SPI-контроллер, принимает ответ - по ответу хост может распознать что чипы сейчас делают и какие ответы нашли. Более того протокол SPI такой, что в этом задании можно всю цепочку чипов опросить. Собственно это то что делает хост - хост создает следующий буффер, парсит предыдущий, общается с пулом к примеру или биткоинд.
15. Для nonce есть буфер результатов, или ядро нашло и останавливается, ждет когда заберут решение.
Ядро не останавливается - оно молотит непрерывно - счетчик нонса [0:22], [0:21] идет в нонс а бит 22 - это номер задания 1 или 0 задание.
Тупо считает. Если решения забрать не успели - то просто перезаписываться поверх пойдут.
16. Dificulty настраивается или ищет фиксированную сложность.
Решает задачу E (32 бита) = 0 (т.е. difficulty = 1).
17. А пробовали с кем-то на MPW запустится, хотя ответ я скорее всего догадываюсь, но это зависит от даты когда у вас дизайн был готов.
Отбросили эту затею когда узнали про сроки :-) Хотели конечно. Дизайн был предварительно готов в феврале на 65nm и в январе было ядро на 150nm. Мы же не сразу 65nm думали - просто курс пошел в рост, посмотрели друг на друга, что мол не так уж много денег и надо
18. Есть l