This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
geda:format_translation.ru [2012/02/20 15:14] 127.0.0.1 external edit |
geda:format_translation.ru [2014/04/25 06:12] (current) vzh Updated using po4a |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | //Эта страница доступна также на следующих языках:// | ||
+ | [[format_translation|English]] | ||
+ | |||
====== Преобразование разных форматов файлов друг в друга ====== | ====== Преобразование разных форматов файлов друг в друга ====== | ||
- | |||
Нам нужна универсальная система преобразования форматов для трансляции | Нам нужна универсальная система преобразования форматов для трансляции | ||
изменений между всеми современными и возможно будущими средствами gEDA, а | изменений между всеми современными и возможно будущими средствами gEDA, а | ||
- | также сторонними программами, которые, вероятно, могут использоваться вместе с | + | также сторонними программами, которые, вероятно, могут использоваться вместе |
- | программами gEDA. | + | с программами gEDA. |
===== Ограничения ===== | ===== Ограничения ===== | ||
- | Поддерживать все возможные преобразования, безусловно, смысла нет. | ||
- | Поэтому ограничимся современными и возможно будущими составляющими | ||
- | gEDA и сторонними программами, которые, вероятно, могут использоваться | ||
- | вместе с программами gEDA. Разумеется, для ряда программ преобразование | ||
- | форматов не имеет смысла и поддерживаться не должно. | ||
- | Идея состоит в использовании промежуточного формата. Сначала транслировать | + | Поддерживать все возможные преобразования, безусловно, смысла нет. Поэтому |
- | в него, затем --- из него. Промежуточный формат должен быть достаточно | + | ограничимся современными и возможно будущими составляющими gEDA и сторонними |
+ | программами, которые, вероятно, могут использоваться вместе с программами | ||
+ | gEDA. Разумеется, для ряда программ преобразование форматов не имеет смысла | ||
+ | и поддерживаться не должно. | ||
+ | |||
+ | Идея состоит в использовании промежуточного формата. Сначала транслировать в | ||
+ | него, затем --- из него. Промежуточный формат должен быть достаточно | ||
выразительным, чтобы его можно было без потерь транслировать в формат любой | выразительным, чтобы его можно было без потерь транслировать в формат любой | ||
программы gEDA и обратно. | программы gEDA и обратно. | ||
- | "Без потерь" значит, что файл, полученный в результате трансляции должен | + | «Без потерь» значит, что файл, полученный в результате трансляции должен |
работать так же, как и исходный. Не обязательно сохранять форматирование и | работать так же, как и исходный. Не обязательно сохранять форматирование и | ||
прочие незначительные вещи. | прочие незначительные вещи. | ||
Line 33: | Line 35: | ||
Ниже рассматриваются только те форматы, что соответствуют указанной модели. | Ниже рассматриваются только те форматы, что соответствуют указанной модели. | ||
- | Если возможно, хорошо бы, чтобы выбранный формат уже применялся когда-либо по | + | Если возможно, хорошо бы, чтобы выбранный формат уже применялся когда-либо |
- | крайней мере для некоторых из указанных целей, а также имел стороннюю, | + | по крайней мере для некоторых из указанных целей, а также имел стороннюю, |
опубликованную и свободно доступную спецификацию. | опубликованную и свободно доступную спецификацию. | ||
Должны быть способы включения изменений из любого источника/назначения без | Должны быть способы включения изменений из любого источника/назначения без | ||
смешения различных частей. | смешения различных частей. | ||
- | |||
==== Инструментарий, требующий поддержки ==== | ==== Инструментарий, требующий поддержки ==== | ||
Line 45: | Line 46: | ||
* топологические схемы | * топологические схемы | ||
* моделирование | * моделирование | ||
- | |||
==== Программы gEDA ==== | ==== Программы gEDA ==== | ||
- | Для форматов файлов данных программ нужно преобразование без потерь, поэтому | + | Для форматов файлов данных программ нужно преобразование без потерь, поэтому может потребоваться промежуточный формат хранения данных. |
- | может потребоваться промежуточный формат хранения данных. | + | |
* gschem | * gschem | ||
* pcb | * pcb | ||
* gnucap | * gnucap | ||
* Icarus Verilog | * Icarus Verilog | ||
- | |||
==== Другие свободные программы, которые должны полностью поддерживаться ==== | ==== Другие свободные программы, которые должны полностью поддерживаться ==== | ||
- | Эти программы тоже свободные. Нужен стандарт для их поддержки на равных правах | + | Эти программы тоже свободные. Нужен стандарт для их поддержки на равных правах с программами gEDA. |
- | с программами gEDA. | + | |
* NGspice | * NGspice | ||
* Qucs | * Qucs | ||
Line 69: | Line 66: | ||
==== Импорт и экспорт несвободных форматов ==== | ==== Импорт и экспорт несвободных форматов ==== | ||
- | Поддержка форматов данных программ позволит программам gEDA наилучшим образом | + | Поддержка форматов данных программ позволит программам gEDA наилучшим образом взаимодействовать с коммерческими средствами. Нужна базовая функциональность, но преобразование не обязательно должно быть без потерь. Преобразование без потерь должно быть возможным, но не является главным приоритетом для фактической реализации средств трансляции. |
- | взаимодействовать с коммерческими средствами. Нужна базовая функциональность, | + | |
- | но преобразование не обязательно должно быть без потерь. Преобразование без | + | |
- | потерь должно быть возможным, но не является главным приоритетом для | + | |
- | фактической реализации средств трансляции. | + | |
* Eagle | * Eagle | ||
* Orcad | * Orcad | ||
* LTspice | * LTspice | ||
* Pads | * Pads | ||
- | |||
==== Отсутствующая функциональность gEDA ==== | ==== Отсутствующая функциональность gEDA ==== | ||
- | Надеемся, при наличии системы преобразования форматов у нас появится база для | + | Надеемся, при наличии системы преобразования форматов у нас появится база для решения следующих вопросов: |
- | решения следующих вопросов: | + | * Обратное аннотирование изменений, сделанных в топологических схемах и файлах моделирования, в принципиальные схемы. |
- | * Обратная трансляция изменений топологических схем и файлов моделирования в принципиальные схемы. | + | |
* Анализ статических временных диаграмм. | * Анализ статических временных диаграмм. | ||
* Моделирование целостности сигналов после формирования топологии платы. | * Моделирование целостности сигналов после формирования топологии платы. | ||
* Сравнение топологической и принципиальной схем. | * Сравнение топологической и принципиальной схем. | ||
* Использование одной и той же схемы для всего проекта целиком. | * Использование одной и той же схемы для всего проекта целиком. | ||
- | |||
==== Явно не поддерживаются ==== | ==== Явно не поддерживаются ==== | ||
Line 95: | Line 85: | ||
* Поведенческое моделирование | * Поведенческое моделирование | ||
+ | ===== Общее представление ===== | ||
- | ===== Общее представление ===== | ||
Все форматы состоят из списков объектов с подключениями и атрибутами. | Все форматы состоят из списков объектов с подключениями и атрибутами. | ||
Традиционно для обмена данными использовались списки соединений, но | Традиционно для обмена данными использовались списки соединений, но | ||
- | традиционный подход подразумевает одностороннее преобразование, поскольку при | + | традиционный подход подразумевает одностороннее преобразование, поскольку |
- | этом теряется информация. | + | при этом теряется информация. |
- | Формат должен передавать сущность содержимого не обязательно таким же образом, | + | Формат должен передавать сущность содержимого не обязательно таким же |
- | как родной формат программы или её внутреннее представление. | + | образом, как родной формат программы или её внутреннее представление. |
Не обязательно транслировать те части, что обычно уже имеются в библиотеках | Не обязательно транслировать те части, что обычно уже имеются в библиотеках | ||
- | или специфичны для данной программы, такие как модели, символы или посадочные | + | или специфичны для данной программы, такие как модели, символы или |
- | места. | + | посадочные места. |
Каждый из претендентов на роль возможного формата должен поддерживать | Каждый из претендентов на роль возможного формата должен поддерживать | ||
преобразование в любой другой и обратно без потерь. | преобразование в любой другой и обратно без потерь. | ||
+ | ==== Возможные форматы ==== | ||
- | ==== Возможные форматы ==== | ||
=== SPICE === | === SPICE === | ||
- | Популярный формат списка соединений. Использовался для обмена данными, но пока | ||
- | не применялся для описания физического расположения. Проблемы: неправильный | ||
- | синтаксис, недостаточно выразителен. Эти проблемы годами не давали покоя | ||
- | разработчикам. Формат нравится почти всем, за исключением тех, кто хорошо его | ||
- | знает. | ||
+ | Популярный формат списка соединений. Использовался для обмена данными, но | ||
+ | пока не применялся для описания физического расположения. Проблемы: | ||
+ | неправильный синтаксис, недостаточно выразителен. Эти проблемы годами не | ||
+ | давали покоя разработчикам. Формат нравится почти всем, за исключением тех, | ||
+ | кто хорошо его знает. | ||
=== Verilog === | === Verilog === | ||
- | Структурное подмножество представляет собой хороший формат списка соединений. | ||
- | Он правилен, достаточно выразителен и для него опубликован стандарт. | ||
- | Использовался для обмена данными, но пока не применялся для описания | ||
- | физического расположения. | ||
+ | Структурное подмножество представляет собой хороший формат списка | ||
+ | соединений. Он правилен, достаточно выразителен и для него опубликован | ||
+ | стандарт. Использовался для обмена данными, но пока не применялся для | ||
+ | описания физического расположения. | ||
=== VHDL === | === VHDL === | ||
- | Структурное подмножество представляет собой хороший формат списка соединений. | ||
- | Он правилен, достаточно выразителен и для него опубликован стандарт. | ||
- | Использовался для обмена данными, но пока не применялся для описания | ||
- | физического расположения. | ||
+ | Структурное подмножество представляет собой хороший формат списка | ||
+ | соединений. Он правилен, достаточно выразителен и для него опубликован | ||
+ | стандарт. Использовался для обмена данными, но пока не применялся для | ||
+ | описания физического расположения. | ||
=== Spectre === | === Spectre === | ||
- | Структурное подмножество представляет собой хороший формат списка соединений. | ||
- | Он правилен, достаточно выразителен, но принадлежит одной компании (Cadence), | ||
- | поэтому его исключаем. Использовался только для моделирования. | ||
+ | Структурное подмножество представляет собой хороший формат списка | ||
+ | соединений. Он правилен, достаточно выразителен, но принадлежит одной | ||
+ | компании (Cadence), поэтому его исключаем. Использовался только для | ||
+ | моделирования. | ||
=== XML === | === XML === | ||
- | XML --- это на самом деле не формат, а синтаксис. На основе XML можно сделать | ||
- | хороший формат, но примеров такого в подобном контексте пока не наблюдалось. | ||
- | Синтаксис хорошо документирован, но никакой сторонней документации по | ||
- | его применению для похожих целей нет. | ||
+ | XML --- это на самом деле не формат, а синтаксис. На основе XML можно | ||
+ | сделать хороший формат, но примеров такого в подобном контексте пока не | ||
+ | наблюдалось. Синтаксис хорошо документирован, но никакой сторонней | ||
+ | документации по его применению для похожих целей нет. | ||
==== Представление физического расположения ==== | ==== Представление физического расположения ==== | ||
- | Это единственный вид применения, для которого ни Verilog, ни VHDL серьёзно не | + | |
- | использовались. | + | Это единственный вид применения, для которого ни Verilog, ни VHDL серьёзно |
+ | не использовались. | ||
Идеи: | Идеи: | ||
Line 159: | Line 151: | ||
* Положение в схеме может рассматриваться как объект с подключениями и атрибутами (''place''). | * Положение в схеме может рассматриваться как объект с подключениями и атрибутами (''place''). | ||
* Контактные площадки, соединители, термоплощадки, переходы, ... --- всё это тоже объекты с подключениями и атрибутами. | * Контактные площадки, соединители, термоплощадки, переходы, ... --- всё это тоже объекты с подключениями и атрибутами. | ||
- | * Чтобы отделить разделы, имеющие значение только в определённом контексте, можно использовать директиву ''%%'define%%'' (для формата Verilog) | + | * Чтобы отделить разделы, имеющие значение только в определённом контексте, можно использовать директиву ''%%'define%%'' (для формата Verilog). |
* Формат должен быть описанием высокого уровня. Такое представление должно быть повсюду. То есть речь не должна идти о линиях, прямоугольниках и окружностях. | * Формат должен быть описанием высокого уровня. Такое представление должно быть повсюду. То есть речь не должна идти о линиях, прямоугольниках и окружностях. | ||
* Если нужно, линии, прямоугольники и окружности тоже могут быть объектами, но не транслируемыми, так как они не имеют значения в других ситуациях. | * Если нужно, линии, прямоугольники и окружности тоже могут быть объектами, но не транслируемыми, так как они не имеют значения в других ситуациях. | ||
* Атрибуты, не имеющие значения, молча игнорируются. Имеющие значение в одном контексте, но не имеющие в другом, игнорируются там, где не имеют смысла. | * Атрибуты, не имеющие значения, молча игнорируются. Имеющие значение в одном контексте, но не имеющие в другом, игнорируются там, где не имеют смысла. | ||
- | |||
===== Приложения ===== | ===== Приложения ===== | ||
+ | |||
Как один из возможных вариантов рассмотрим формат Verilog. | Как один из возможных вариантов рассмотрим формат Verilog. | ||
Line 183: | Line 175: | ||
resistor #(.r(1k)) r234 (.p(b), .n(c)); | resistor #(.r(1k)) r234 (.p(b), .n(c)); | ||
- | "r" представляет собой имя атрибута. "1k" --- это значение (строка). | + | «r» представляет собой имя атрибута. «1k» --- это значение (строка). |
- | В первом примере соединения определяются по порядку. Во втором их соответствие | + | В первом примере соединения определяются по порядку. Во втором их |
- | выводам определяется посредством имён. Узел "b" подключен к выводу "p", а | + | соответствие выводам определяется посредством имён. Узел «b» подключен к |
- | узел "c" --- к выводу "n". | + | выводу «p», а узел «c» --- к выводу «n». |
- | Соединение ("net") тоже является объектом. | + | Соединение («net») тоже является объектом. |
В вышеприведённом примере оба резистора непосредственно подключены к узлу | В вышеприведённом примере оба резистора непосредственно подключены к узлу | ||
- | "b". Подключение в принципиальной схеме непосредственно не задаётся, | + | «b». Подключение в принципиальной схеме непосредственно не задаётся, для |
- | для этого используется соединение ("net"): | + | этого используется соединение («net»): |
resistor #(.r(1k)) r123 (.p(a1), .n(b1)); | resistor #(.r(1k)) r123 (.p(a1), .n(b1)); | ||
Line 199: | Line 191: | ||
net b (.1(b1), .2(b2)); | net b (.1(b1), .2(b2)); | ||
- | Имя соединения --- "b". Атрибутов соединение не имеет. | + | Имя соединения --- «b». Атрибутов соединение не имеет. |
Теперь для схемы нужно добавить узлы: | Теперь для схемы нужно добавить узлы: |