В машинном зале стоял плотный, вибрирующий гул. Десятки мощных вентиляторов, охлаждающих стойки вычислительных комплексов, сливались в единый акустический фон, перекрывающий все остальные звуки. Воздух здесь был тяжелым, пересушенным и пах специфической смесью нагретого металла, трансформаторного масла и бумажной пыли от перфокарт. Помещение напоминало не стерильную «чистую комнату» кристального производства с бахилами и масками, а суровую индустриальную зону — преддверие вычислительного контура Научного центра.
Алексей Морозов стоял у массивного металлического шкафа питания, скрестив руки на груди, и ждал. В кармане его пиджака лежал подписанный майором Сергеевым регламент, разрешающий этот опыт, но бумага с гербовыми печатями не могла заставить магнитные головки читать данные быстрее или точнее. Всё решала не дипломатия, а физика процесса и технологическая дисциплина.
Присутствие здесь, у гудящих стоек, почти всех ключевых специалистов Зеленограда не было случайностью или проявлением праздного любопытства. Изъятие данных о бракованном кристалле для передачи сторонней владимирской группе требовало соблюдения жесткой межведомственной процедуры. Система не позволяла просто скопировать информацию. Ее нужно было официально верифицировать.
Тимур Рашидович Ахметов стоял у стола подготовки данных. Перед начальником испытаний лежала тонкая серая папка из Изолятора брака.
— Фиксируем объект передачи, — ровным, лишенным интонаций голосом произнес Ахметов, открывая папку. — Дефектный случай номер сорок семь-бис. Фрагмент периферийной обвязки макроячейки динамического ОЗУ. Контрольный стенд выявил глухое замыкание на первом слое металлизации. Кристалл забракован и списан по акту.
Ирина Павловна Ланская, стоявшая по другую сторону стола, развернула плотный рулон кальки. Синие линии топологического чертежа легли на столешницу. Рядом с ней возвышался Павел Николаевич Руденко, хмуро сверяя изломы линий на чертеже с собственными записями.
— Координаты участка подтверждаю, — сухо сказала Ланская, придавив край кальки тяжелым металлическим дыроколом. — Машинный массив, который сейчас находится на магнитной ленте вычислительного центра, полностью соответствует этой геометрии. Версия маски — четвертая.
Младший инженер Лидия Веденеева, стоявшая у стойки с бобинами магнитных лент, привычно скользнула пальцами по краям широкой перфоленты контрольного журнала, проверяя маркеры начала и конца блока.
— Пятый физический том, четвертая версия, — негромко произнесла Веденеева, не отрывая взгляда от бумаги. — Лента совпадает с контрольным листом Ирины Павловны. Журнал готов к отметке о выгрузке.
Она проговорила это скорее для собственного протокола. Веденеева слишком хорошо знала, что половина «аппаратных сбоев» в вычислительном центре начинается с перепутанной коробки перфолент. Выгрузи они сейчас владимирцам третью версию вместо четвертой — и те убьют недели, выискивая ошибки в уже исправленном слое.
В нескольких шагах от них Сергей Липатов методично расчерчивал страницу рабочего блокнота. Его не интересовали мигающие индикаторы пультов. Его интересовало лишь одно: запротоколировать ход передачи так, чтобы опыт был юридически и технически кристально чистым.
Евгений Громов стоял у консоли оператора, где Роман Кац вводил команды загрузки. Именно отсюда, с АЦПУ, должна была появиться физическая копия массива для написания «СЛОЯ-81».
Широкая каретка АЦПУ дернулась, издала пронзительный металлический скрежет и начала с пулеметной скоростью выплевывать из себя бумагу. Процесс пошел.
Звук печати перекрыл гул вентиляторов. Широкий рулон пополз вверх, складываясь тяжелой гармошкой на специальном металлическом поддоне. Строка за строкой, страница за страницей. Сплошной монолитный поток информации.
Громов подошел вплотную, завороженно глядя на растущую гору бумаги. На ней сплошным потоком шли колонки цифр — координаты левых и правых углов прямоугольников, маркеры слоев, служебные соединения. И это был лишь один крошечный контактный узел опытной памяти, выделенный для их пробного прогона.
— И сколько здесь будет? — спросил Евгений, стараясь, чтобы голос не дрогнул.
Роман Кац, стоявший у пульта, скрестил руки на груди. Системщик откровенно наслаждался моментом, глядя на ошеломленного владимирца.
— Примерно три картонные коробки бумаги, если выводить этот слой целиком, — ответил Кац, невозмутимо поправляя очки. — Если посадите весь ваш отдел во Владимире вводить это в две смены, как раз к майским праздникам управитесь. Главное, нули с буквами «О» не перепутайте.
Громов сглотнул. Он живо представил, как сидит в лаборатории и неделями, вслепую, вбивает эти бесконечные шеренги цифр. Ошибка в одном символе при ручном вводе — и весь математический слой ломается, генерируя сотни ложных замыканий. Это была не программистская задача. Это была бессмысленная каторга, убивающая саму идею автоматизации предварительного контроля на корню.
Морозов молча стоял у шкафа питания, с интересом наблюдая за происходящим, но не вмешивался.
Кац выдержал театральную паузу, позволив Евгению в полной мере осознать масштаб надвигающейся катастрофы. Затем зеленоградский программист коротко вздохнул, выключил тумблер АЦПУ — грохот печати мгновенно оборвался — и кивнул в сторону соседней стойки, где в отдельном корпусе стоял восьмидюймовый накопитель.
— Не делай такое лицо, Громов, смотреть больно, — Кац потянулся к переключателям на пульте. — Давай свою восьмидюймовую дискету. Сольем копию напрямую. Только тихо, пока начальство не видит, что мы гоняем технологические массивы через нестандартные интерфейсы.
Евгений мгновенно расстегнул замки своего потертого портфеля. Он бережно, двумя руками извлек картонный конверт, внутри которого покоился чистый восьмидюймовый гибкий диск. Это был спасательный круг, брошенный одним системщиком другому поверх официальных барьеров.
Кац взял диск, вставил его в накопитель и с силой опустил рычаг. Внутри устройства тяжело зажужжал шпиндель. На панели заморгал красный индикатор записи. Массив топологических данных, только что грозивший завалить их бумажной лавиной, невидимо перетекал на тонкий пластиковый диск, покрытый оксидом железа. Дисковод издавал характерные глухие удары позиционирования головок.
Щелчок. Кац открыл задвижку и вытащил теплую дискету.
— Забирай. Структура файла последовательная. Распечатку АЦПУ возьми как контрольный образец, чтобы понимать, где кончается заголовок и начинаются данные.
Громов принял диск, аккуратно убрал его обратно в портфель, а увесистую бумажную «гармошку» положил на свободный край стола.
Магнитный носитель спасал от каторжного ручного труда, но для того, чтобы написать алгоритм «СЛОЯ-81», нужно было сверить реальные данные с тем, что должно было быть в теории. Громов вооружился остро отточенным карандашом, пододвинул к себе кусок контрольной распечатки и открыл рабочую тетрадь.
Он начал аккуратно вычерчивать структуру будущего массива. Вот идентификатор слоя. Вот координаты левого нижнего угла прямоугольника по осям X и Y. Вот ширина, вот высота. На первый взгляд, всё казалось предельно ясным. Обычная декартова геометрия. Будущая программа должна была просто считывать эти прямоугольники, проверять их наложения друг на друга и выдавать список тех мест, где зазор меньше допустимого.
Громов провел карандашом линию от одной колонки к другой, мысленно отрисовывая первый полигон металла. Затем взял координаты следующего элемента, который, судя по описанию топологии, должен был располагаться рядом, встык с первым.
Грифель остановился. Евгений нахмурился и поднес бумагу ближе к глазам, вчитываясь в тусклый шрифт.
Судя по координатам, левый край второго полигона грубо заходил на территорию первого. Окно контакта, которое должно было располагаться строго по центру контактной площадки, судя по цифрам, съезжало вбок, накладываясь на соседнюю линию изоляции.
Громов начал быстро чиркать карандашом в тетради. Ошибка выгрузки? Смещение формата? Может быть, машина Каца при конвертации пропустила служебный байт, и теперь весь массив съехал?
— Кац, у вас данные кривые, — бросил Громов, не отрываясь от бумаги и постукивая карандашом по столу. — У меня в третьем блоке координаты бьются друг о друга. Матрица не сходится геометрически.
Роман даже не повернул головы от пульта, где завершал сеанс работы.
— Данные прямые, как рельсы, Громов. Что на магнитной ленте, то и на диске. Читай, что написано.
— Я и читаю! — Евгений с раздражением развернул длинный лист распечатки. — Вот полигон металла. Вот окно к кремнию. По вашим же цифрам окно режет край полигона. Это глухое замыкание! Если я сейчас, вернувшись домой, напишу проверку, моя программа завалит вас ошибками на первом же прогоне. Мне что, писать математический фильтр выравнивания? Искусственно округлять этот мусор до ближайшей сетки координат?
— Ничего ты выравнивать не будешь, — раздался за спиной спокойный, холодный женский голос.
Ланская достала из кармана белоснежного халата ручку и уверенно уперла её прямо в спорную строчку на распечатке, из-за которой кипятился программист.
— Не забывайте, что для вас, Евгений Александрович, любая линия на чертеже — это математическая абстракция нулевой толщины, — произнесла тополог. — А для нас это реальный, физический материал. То, что вы называете «наложением» и считаете ошибкой выгрузки, — это намеренный технологический запас.
— Запас на замыкание? — огрызнулся Громов, скрестив руки на груди.
— Запас на усадку и боковое подтравливание, — веско поправил Руденко. Технолог оперся тяжелыми, узловатыми ладонями о край стола, нависая над распечаткой. — Когда мы берем фоторезист, светим его ультрафиолетом, а потом пластина идет в кислотную ванну, ваш идеальный край растворяется. Кислота жрет металл не только вглубь, но и в стороны. То, что у вас на бумаге нарисовано с идеальной шириной, на живом кристалле после всей химии заметно стравливается. Мы специально рисуем окно контакта с запасом и легким смещением, чтобы после того, как кислота сделает свое дело, отверстие попало точно в центр площадки.
Громов уставился на колонки цифр. Идеальный мир чистой математики, в котором он привык выстраивать свои безупречные ассемблерные циклы, с треском рушился, разбиваясь о грязную, непредсказуемую заводскую химию.
— То есть, вы хотите сказать, что для разных слоев этот ваш… запас разный? — Евгений потер лоб, чувствуя, как начинает болеть голова.
— Естественно, — хмыкнул Руденко. — Металл первого уровня травится так. Поликремний — совершенно иначе. А зоны диффузии вообще расползаются в стороны при термическом нагреве в печи. И если ваша умная программа начнет искусственно округлять наши допуски по какой-то единой, выдуманной вами математической сетке, вы убьете нам всю годную топологию. Вы забракуете абсолютно здоровую микросхему.
Морозов подошел ближе. Он внимательно слушал спор и прекрасно понимал правоту зеленоградцев. Ошибка Громова была естественной: любой программист всегда стремится упорядочить хаос, загнать его в жесткие рамки предсказуемого алгоритма. Но программа, которая не учитывает агрессивную физику травления, останется просто красивой лабораторной игрушкой.
— Идеальная геометрия здесь не сработает, — резюмировал Алексей и повернулся к Липатову. — Сергей. Открывай новый лист.
Липатов мгновенно перелистнул страницу рабочего блокнота.
— Евгений, ты не будешь писать никакие фильтры округления, — отрезал Морозов, пресекая готовое сорваться с губ Громова возмущение. — Мы заложим их физику прямо в наш алгоритм. Инструмент должен понимать материал. Ирина Павловна, чтобы мы могли это сделать, мне нужна та самая карта допусков, о которой мы договаривались на вашем участке. Все запасы на стравливание, все минимальные зазоры для каждого конкретного слоя.
Ланская кивнула. Ей явно нравилось, что Морозов твердо держится их недавнего уговора и не пытается подменить реальные физические допуски строгой машинной логикой.
— Это толстая папка, Алексей Николаевич, — предупредила тополог. — В ней сотни параметров. И половина этих норм существует только в виде внутренних, цеховых инструкций для конкретной производственной линии.
— Значит, мы увезем копию этой папки во Владимир, — непререкаемым тоном ответил Морозов. — Без этих допусков писать код «СЛОЯ-81» бессмысленно. Мы переведем вашу производственную химию на язык математики.
Ахметов, до этого молча наблюдавший за разбором распечатки, подошел к столу и положил поверх зеленых листов АЦПУ отпечатанный в типографии желтоватый бланк.
— С физикой разобрались, теперь к отчетности, — ровным голосом произнес Тимур Рашидович. — Вы увезете допуски и напишете код во Владимире. Но я напоминаю: мне не нужны абстрактные машинные жалобы на сбой. Мне нужна точная, протоколируемая причина для журнала.
Липатов пододвинулся ближе, поправляя очки. Протоколы были его епархией.
— Таблица вывода уже согласована, — сказал Липатов, глядя в блокнот. — Мы выдадим координату, категорию отклонения и логический узел.
— К этой категории отклонения вы теперь обязаны добавить прямую ссылку на конкретное правило из той самой технологической папки, которую вам передаст Ирина Павловна, — уточнил Ахметов.
Веденеева, внимательно слушавшая разговор, добавила свою часть требований:
— И обязательно заставьте вашу программу выводить в шапку отчета номер версии чертежа. У нас технологи за одну смену могут три раза перекроить проблемный слой. Пришлете сбой без отметки листа — мы будем полдня искать ошибку там, где её уже исправили.
Липатов молча и методично дополнял согласованную таблицу. Координата. Категория. Номер правила. Версия листа. Резолюция технолога. Он превращал чужую производственную боль в жесткие, программируемые рамки будущего отчета.
Громов мрачно следил за тем, как быстро растет количество обязательных колонок в блокноте Липатова. Каждая новая графа означала десятки дополнительных команд на ассемблере, часы отладки и дополнительную нагрузку на и без того скромную оперативную память «Сферы-82».
— Принято, Тимур Рашидович, — сказал Морозов, заглянув в записи Липатова. — Программа будет не просто искать сбои, она будет сразу формировать выписку, полностью адаптированную под ваш производственный журнал. Ни один прогон во Владимире не будет считаться завершенным без заполнения этого формуляра.
К столу неспешно подошел Роман Кац. В руках он держал тонкую картонную папку с завязками.
— Раз уж мы тут делимся секретами выживания, — усмехнулся Кац, кладя папку рядом с распечатками Громова. — Держи, Евгений.
Громов с сомнением открыл картонную обложку. Внутри лежали несколько отпечатанных на машинке листов с плотными таблицами и структурами блоков данных.
— Это чтобы вы там во Владимире не написали алгоритм чтения, который насмерть подавится нашим первым же файлом, — пояснил Роман уже без иронии. — Здесь полная спецификация нашего формата выгрузки. Как пакуются координаты, где лежат метки слоев, как обозначается конец записи. И главное — точный формат выходного текстового файла, который мы ждем от вашей машины обратно.
Громов пробежал глазами по строкам. Кац передавал ему строгую структуру данных.
— Заголовки блоков читать строго по байтам, — жестко добавил Кац. — Попытаетесь пропустить служебные маркеры или проигнорировать контрольную сумму массива — получите кашу. Ваш итоговый файл с ошибками должен читаться нашей дисковой системой без дополнительных преобразований, иначе мы ваши результаты просто не сможем распечатать для журнала Ахметова.
Громов молча закрыл папку. Раздражение на «кривые данные» окончательно испарилось. На его плечи ложилась колоссальная задача: увязать капризную физику травления кремния, бюрократическую дотошность Ахметова и суровые форматы данных Каца в единый, безотказный программный модуль для «Сферы-82».
Машинный зал начал пустеть. Гул оборудования казался еще более монотонным и тяжелым в наступившей рабочей тишине. Зеленоградские специалисты, передав данные и зафиксировав требования, расходились по своим лабораториям.
Липатов аккуратно закрыл блокнот, дождался легкого щелчка колпачка ручки и убрал её в нагрудный карман идеально отглаженной рубашки. Шапка будущего производственного отчета была окончательно сформирована.
Громов методично укладывал в портфель свое новое богатство. К уже лежащим там двум конвертам с дискетами добавилась толстая стопка машинописных листов от Ирины с физикой допусков. Затем спецификация форматов от Каца. И контрольный рулон распечатки АЦПУ. Кожаный портфель заметно потяжелел, раздувшись так, что замки защелкнулись с трудом.
Морозов стоял у дверей, наблюдая за сборами своей команды. Он смотрел на эти набитые под завязку портфели и папки. Эйфория от удачных переговоров осталась в кабинетах начальства. Здесь, внизу, начиналась настоящая, черновая инженерия.
Алексей молча поправил ремень сумки на плече.
— Всё собрали? — тихо спросил он.
Громов выпрямился. Под глазами залегли темные тени, свитер помялся, но во взгляде читалась упрямая решимость человека, которому бросили вызов. Он похлопал по туго набитому кожаному боку портфеля.
— Собрали, Алексей Николаевич. Писать — не переписать. До весны из-за клавиатуры не вылезем.