Magic — это инструмент для автоматизации электронного проектирования (EDA) для сверхбольшой интеграции (VLSI) интегральных схем (ИС), изначально написанный Джоном Оустерхаутом и его аспирантами в Калифорнийском университете в Беркли . Работа над проектом началась в феврале 1983 года. Примитивная версия была готова к апрелю 1983 года [2] , когда Джоан Пендлтон, Шинг Конг и другие аспиранты-разработчики микросхем прошли через множество быстрых доработок, разработанных для удовлетворения их потребностей в проектировании микросхемы ЦП SOAR, продолжения Berkeley RISC .
Опасаясь, что Оустерхаут предложит другое название, начинающееся с «C», чтобы соответствовать его предыдущим проектам Cm* , Caesar и Crystal , Гордон Хамачи предложил название Magic , потому что ему понравилась идея сказать, что люди использовали магию для проектирования чипов. Остальная часть команды разработчиков с энтузиазмом согласилась с этим предложением после того, как он придумал бэкроним Manhattan Artwork Generator for Integrated C ircuits . Разработчики программного обеспечения Magic называли себя магами, в то время как проектировщики чипов были пользователями Magic .
Будучи бесплатным программным обеспечением с открытым исходным кодом , соответствующим требованиям лицензии BSD , Magic продолжает оставаться популярным, поскольку его легко использовать и расширять для специализированных задач.
Главное отличие Magic от других инструментов проектирования СБИС заключается в использовании геометрии «сшитых углов», в которой вся компоновка представлена в виде стопки плоскостей, а каждая плоскость полностью состоит из «плиток» (прямоугольников). Плитки должны покрывать всю плоскость. Каждая плитка состоит из координаты (X, Y) ее нижнего левого угла и связана с четырьмя плитками: самым правым соседом сверху, самым верхним соседом справа, самым нижним соседом слева и самым левым соседом снизу. С добавлением типа материала, представленного плиткой, геометрия компоновки в плоскости точно определена. Представление геометрии сшитых углов приводит к концепции компоновки как «краски», которая наносится на холст или стирается с него. Это значительно отличается от других инструментов, которые используют концепцию компоновки как «объектов», которые размещаются и управляются отдельно друг от друга. Каждая концепция имеет свои собственные сильные и слабые стороны с точки зрения как практического использования, так и скорости вычислений. Представление с угловым сшиванием особенно хорошо подходит для поиска в пределах одной плоскости, для чего оно превосходит по скорости. Оно не особенно хорошо подходит для очень больших баз данных: необходимость поддерживать четыре указателя для каждой плитки, а также необходимость хранить плитки, представляющие пространство между областями материала на макете, делает его более требовательным к памяти, чем объектно-ориентированные представления.
Расширение представления геометрии с угловым сшиванием, называемое методом «разделенной плитки», добавленное в версии 7.1, позволяет истинно представлять не- Манхэттенскую геометрию. Этот метод позволяет каждой плитке в базе данных указывать два типа материалов, в этом случае плитка считается разделенной пополам диагональной линией от угла до угла, с одним типом материала с одной стороны диагонали и другим типом материала с другой стороны диагонали. Дополнительный флаг указывает, проходит ли диагональ из верхнего левого угла в нижний правый или из верхнего правого угла в нижний левый. Метод разделенной плитки имеет то преимущество, что почти все правила, применяемые к геометрии с угловым сшиванием, применяются без изменений к разделенным плиткам. Еще одним преимуществом является то, что вся не-Манхэттенская геометрия должна иметь углы, лежащие на внутренней сетке базы данных. Это делает невозможным создание геометрии, которая находится вне сетки в пределах одной плоскости, ошибка правила для большинства процессов изготовления, которая является распространенной проблемой с объектно-ориентированными представлениями.
Magic имеет функцию проверки правил проектирования в реальном времени , чего нет в некоторых дорогостоящих коммерческих пакетах программного обеспечения для проектирования VLSI. Magic реализует это, подсчитывая расстояние с использованием манхэттенского расстояния, а не евклидова расстояния , что намного быстрее для вычисления. Версии Magic с 7.3 правильно вычисляют евклидово расстояние при получении drc euclidean on
команды. Проверки евклидового расстояния являются тривиальным расширением проверок манхэттенского расстояния и требуют очень небольших накладных расходов. На прямолинейном ребре манхэттенское и евклидово расстояния одинаковы. Только на углах эти два расстояния расходятся. При проверке углов необходимо только отслеживать направление поиска от угловой точки. Любая геометрия, найденная внутри квадрата, представляющего манхэттенское расстояние от угла, проходит дополнительную проверку, чтобы увидеть, лежит ли та же геометрия за пределами радиуса четверти окружности, представляющего евклидово расстояние. Поскольку эта дополнительная проверка применяется только к геометрии, нарушающей правило Манхэттенского расстояния, она применяется нечасто, поэтому вычислительные затраты очень малы.
В настоящее время Magic работает под управлением Linux , хотя существуют версии для DOS , OS/2 и других операционных систем . Magic часто используется совместно с IRSIM [3] и другими программами моделирования .
Под капотом он использует Tcl/Tk . [4]