EDIF ( Electronic Design Interchange Format ) — это нейтральный к производителю формат на основе S-выражений , в котором хранятся электронные списки соединений и схемы. Это была одна из первых попыток создать нейтральный формат обмена данными для отрасли автоматизации электронного проектирования (EDA). Целью было создание общего формата, из которого можно было бы вывести фирменные форматы систем EDA. Когда клиентам требовалось перенести данные из одной системы в другую, приходилось писать трансляторы из одного формата в другой. По мере увеличения количества форматов ( N ) проблема транслятора становилась проблемой N -квадрат. Ожидалось, что с EDIF количество трансляторов можно будет сократить до количества задействованных систем.
Представители компаний EDA Daisy Systems , Mentor Graphics , Motorola , National Semiconductor , Tektronix , Texas Instruments и Калифорнийского университета в Беркли создали Руководящий комитет EDIF в ноябре 1983 года. Позже к команде присоединилась Хилари Кан , профессор компьютерных наук в Манчестерском университете , которая руководила разработкой с версии EDIF 2000 до финальной версии 4000.
Общий формат EDIF подразумевает использование скобок для разграничения определений данных, и в этом смысле он внешне напоминает Lisp . Основными токенами EDIF 2.0.0 были ключевые слова (например, library , cell , instance и т. д.), строки (разделенные двойными кавычками), целые числа, символические константы (например, GENERIC , TIE , RIPPER для типов ячеек) и «Идентификаторы», которые являются ссылочными метками, сформированными из очень ограниченного набора символов. EDIF 3.0.0 и 4.0.0 полностью отказались от символических констант, используя вместо них ключевые слова. Таким образом, синтаксис EDIF имеет довольно простую основу. Типичный файл EDIF выглядит следующим образом:
( edif fibex ( edifVersion 2 0 0 ) ( edifLevel 0 ) ( keywordMap ( keywordLevel 0 )) ( status ( writing ( timeStamp 1995 1 1 1 1 1 ) ( program "xxx" ( version "v1" )))) ( library xxx ( edifLevel 0 ) ( technology ( numberDefinition ( scale 1 ( e 1 -6 ) ( unit distance )))) ( cell dff_4 ( cellType generic ) ( view view1 ( viewType netlist ) ( interface ( port aset ( direction INPUT )) ( port clok ( direction INPUT )) ... ( cell yyy ( cellType generic ) ( view scheme_ ( viewType netlist ) ( interface ( port CLEAR ( direction INPUT )) ( port CLOCK ( direction INPUT )) ... ) ( content ( instance I_36_1 ( viewRef view1 ( cellRef dff_4 ))) ( экземпляр ( переименовать I_36_3 "I$3" ) ( viewRef view1 ( cellRef addsub_4 ))) ... ( net CLEAR ( join ( portRef CLEAR ) ( portRef набор атрибутов ( instanceRef I_36_1 )) ( portRef набор атрибутов ( instanceRef I_36_3 )))) ...
EDIF Версия 1 0 0 в 1985 г.
EDIF Версия 1 1 0 в 1986 г.
Первым "реальным" публичным релизом EDIF была версия 2 0 0, которая была утверждена в марте 1988 года как стандарт ANSI/EIA-548-1988. Она опубликована в одном томе. Эта версия не имеет формального заявления о сфере действия , но то, что она пытается охватить, покрывается определенными viewType s:
Индустрия тестировала эту версию в течение нескольких лет, но в конечном итоге широкое распространение получило только представление NETLIST, и некоторые инструменты EDA по-прежнему поддерживают его для EDIF 2000.
Для преодоления проблем с основным стандартом 2010 года было выпущено несколько дополнительных документов:
Освобожден 15 сентября 1992 года.
Из-за некоторых фундаментальных недостатков в выпуске 2 0 0 в сентябре 1993 года был выпущен новый несовместимый выпуск 3 0 0, получивший обозначение стандарта EIA EIA-618. Позднее он получил обозначения ANSI и ISO . Он опубликован в 4 томах. Основное внимание в этой версии уделялось viewTypes NETLIST и SCHEMATIC из 2 0 0. MASKLAYOUT, PCBLAYOUT и некоторые другие представления были исключены из этого выпуска и перенесены в более поздние выпуски, поскольку работа над этими представлениями не была полностью завершена.
EDIF 3 0 0 доступен в Международной электротехнической комиссии как IEC 61690-1.
EDIF 4 0 0 был выпущен в конце августа 1996 года, в основном для добавления расширений «Печатная плата» (исходный вид PCBLAYOUT) к EDIF 3 0 0. Это более чем вдвое увеличило размер EDIF 3 0 0 и опубликовано в формате HTML на CD.
EDIF 4 0 0 доступен в Международной электротехнической комиссии как IEC 61690-2.
Чтобы понять проблемы, с которыми пользователи и поставщики столкнулись при использовании EDIF 2 0 0, сначала нужно представить себе все элементы и динамику электронной промышленности. Люди, которым был нужен этот стандарт, были в основном инженерами-конструкторами, которые работали в компаниях, размер которых варьировался от гаража дома до многомиллиардных предприятий с тысячами инженеров. Эти инженеры работали в основном со схемами и списками соединений в конце 1980-х годов, и большим толчком стало автоматическое создание списков соединений из схем. Первыми поставщиками были поставщики Electronic Design Automation (например, Daisy, Mentor и Valid сформировали самый ранний преобладающий набор). Эти компании яростно конкурировали за свои доли этого рынка.
Одной из тактик, используемых этими компаниями для «захвата» своих клиентов, были их собственные базы данных. У каждой были особые функции, которых не было у других. Как только было принято решение использовать программное обеспечение определенного поставщика для ввода проекта, клиент был вынужден использовать только другое программное обеспечение. Переход от систем поставщика A к системам поставщика B обычно означал очень дорогой повторный ввод почти всех данных проекта вручную в новую систему. Эти расходы на «миграцию» были основным фактором, который заставлял инженеров-проектировщиков использовать одного поставщика.
Но у «клиентов» было другое желание. Они сразу увидели, что в то время как у поставщика A могла быть действительно хорошая аналоговая среда моделирования, у поставщика B был гораздо лучший автоматический маршрутизатор для печатных плат или кремниевых схем. И они хотели иметь возможность выбирать среди разных поставщиков.
EDIF в основном поддерживался конечными пользователями дизайна электроники и их компаниями. Поставщики EDA также были вовлечены, но их мотивация была больше связана с желанием не отталкивать своих клиентов. Большинство поставщиков EDA выпускали трансляторы EDIF 2 0 0, но они были определенно больше заинтересованы в создании высококачественных считывателей EDIF, и у них не было абсолютно никакой мотивации писать какое-либо программное обеспечение, генерирующее EDIF (EDIF Writer), помимо угроз со стороны клиентов о массовой миграции на программное обеспечение другого поставщика.
Результат оказался довольно интересным. Едва ли какой-либо поставщик программного обеспечения написал вывод EDIF 2 0 0 без серьезных нарушений синтаксиса или семантики. Семантика была достаточно свободной, чтобы можно было несколькими способами описать одни и те же данные. Это стало известно как «разновидности» EDIF. Компании-поставщики не всегда считали важным выделять много ресурсов на продукты EDIF, даже если они продавали их в большом количестве. Было несколько историй об активных продуктах, которые практически никто не поддерживал в течение многих лет. Жалобы пользователей просто собирались и расставлялись по приоритетам. Чем сложнее становилось экспортировать данные клиентов в EDIF, тем больше это нравилось поставщикам. Те, кто писал трансляторы EDIF, обнаружили, что они тратили огромное количество времени и усилий на создание достаточно мощных, прощающих, искусственно интеллектуальных считывателей, которые могли бы обрабатывать и собирать воедино некачественный код, созданный существующими писателями EDIF 2 0 0 того времени.
При проектировании EDIF 3 0 0 комитеты прекрасно знали о недостатках языка, клевете, которую возводили на EDIF 2 0 0 поставщики, и разочаровании конечных пользователей. Поэтому, чтобы ужесточить семантику языка и предоставить более формальное описание стандарта, был принят революционный подход, чтобы предоставить информационную модель для EDIF на языке информационного моделирования EXPRESS . Это помогло лучше документировать стандарт, но было сделано скорее как запоздалая мысль, поскольку разработка синтаксиса выполнялась независимо от модели, а не генерировалась из модели. Кроме того, хотя стандарт гласит, что если синтаксис и модель не совпадают, то модель является стандартом, на практике это не так. Описание синтаксиса в формате BNF является основой языка, поскольку программное обеспечение, которое выполняет повседневную работу по созданию описаний дизайна, основано на фиксированном синтаксисе. Информационная модель также страдала от того, что она не была (и не является) идеально подходящей для описания EDIF. Он вообще не описывает такие концепции, как пространства имен, и различия между определением и ссылкой также не поддаются четкому описанию. Кроме того, конструкции в EXPRESS для описания ограничений могут быть формальными, но описание ограничений порой является довольно сложным делом. Таким образом, большинство ограничений в конечном итоге были описаны просто как комментарии. Большинство других стали сложными формальными описаниями, которые большинство читателей никогда не смогут расшифровать, и поэтому могут не выдержать автоматизированной отладки/компиляции, так же как программа может выглядеть хорошо при просмотре, но компилятор может обнаружить некоторые интересные ошибки, а фактический запуск написанной программы может обнаружить еще более интересные ошибки. (Кроме того, аналогичные компиляторы/исполнители EXPRESS не существовали, когда был написан стандарт, и, возможно, не существуют и сегодня!)
Решением проблемы «аромата» EDIF 2 0 0 стала разработка более конкретного семантического описания в EDIF 3 0 0 (1993). Действительно, сообщаемые результаты людей, создававших трансляторы EDIF 3 0 0, показали, что теперь писатели стали гораздо сложнее в плане правильности из-за большого количества семантических ограничений, а ридеры стали сравнительно тривиальны в разработке.
Решением «конфликта интересов» поставщиков стали нейтральные сторонние компании, которые могли предоставлять продукты EDIF на основе интерфейсов поставщиков. Такое отделение продуктов EDIF от прямого контроля поставщиков имело решающее значение для предоставления сообществу конечных пользователей инструментов, которые работали хорошо. Оно сформировалось естественным образом и без комментариев. Engineering DataXpress была, пожалуй, первой такой компанией в этой области, а Electronic Tools Company, по-видимому, захватила рынок в середине-конце 1990-х годов. Еще одной движущей силой в этой отрасли является сам EDIF. Поскольку они выросли до довольно больших размеров, создание считывателей и писателей стало очень дорогим делом. Обычно сторонние компании собирали необходимых специалистов и могли использовать этот опыт для более эффективного создания программного обеспечения. Они также могли использовать совместное использование кода и другие методы, которые не мог использовать отдельный поставщик. К 2000 году почти ни один крупный поставщик не производил собственные инструменты EDIF, предпочитая вместо этого OEM -производство сторонних инструментов.
С момента выпуска EDIF 4 0 0 вся организация по стандартам EDIF по сути распалась. Не было опубликовано ни одного заседания какого-либо технического подкомитета, группы экспертов EDIF и т. д. Большинство вовлеченных лиц перешли в другие компании или проекты. Информационный бюллетень был закрыт, а группа пользователей больше не проводит ежегодных заседаний. EDIF 3 0 0 и 4 0 0 теперь являются стандартами ANSI , IEC и European (EN). EDIF версии 3 0 0 — это IEC/EN 61690-1, а EDIF версии 4 0 0 — это IEC/EN 61690-2.