Top menu

Компиляция проекта в Altium

После того как схема создана полностью, как было показано в предыдущей статье, и сохранена. Следующим, концептуально новым для разработчиков схем на базе P-CAD, этапом является компиляция проекта. При реализации проекта печатной платы компиляция обычно выполняется перед передачей информации от принципиальной электрической схемы в файл платы.

Если в программе P-CAD после разработки схемы необходимо было выполнить проверку электрических правил (ERC) и затем сформировать список соединений (NetList), то в программе Altium Designer выполняется компиляция всего проекта, а затем информация проекта передаётся в файл платы выполнением одной команды. В связи с этим большую роль играет процесс компиляции, который выполняется для проектов всех типов, но в нашем случае будет рассмотрен только для наиболее часто применяемого проекта печатной платы.

Параметры проекта задаются на странице, которая вызывается командой Project > Project Options (при этом должен быть выбран необходимый проект или открыт один из его документов). Данная страница содержит несколько вкладок, на каждой из которых задаются определённые настройки (для проекта печатных плат таких вкладок 12, см. рис. 1). Для компиляции проекта, содержащего только схему, достаточно установить настройки двух вкладок Error Reporting и Connection Matrix; рассмотрим назначение каждой из этих вкладок.

3,3-1

Рис. 1. Предупреждения, связанные с шинами

Errorreporting– отчёт об ошибках. На данной вкладке представлен весь перечень нарушений, которые могут быть зафиксированы в проекте данного типа. Напротив каждого пункта указывается степень важности данного нарушения для разработчика, и могут быть выбраны следующие варианты:

  • No Report – не включать в отчёт;
  • Warning – предупреждение – нарушение фиксируется, но оно незначительно;
  • Error – ошибка, существенное нарушение;
  • Fatal Error – критическая ошибка.

Все типы нарушений на вкладке Error Reporting разбиты на группы, относящиеся к определённому типу объектов. Рассмотрим виды нарушений, варианты их отображения и рекомендуемые настройки.

Прежде чем рассмотреть нарушения разного типа, следует отметить, что на начальном этапе можно включить все виды нарушений, а затем, анализируя полученные ошибки, исключать те нарушения, которые не актуальны для текущего проекта. Чтобы установить уровень всех нарушений, Error следует нажать правой кнопкой мыши в любом месте окна и выбрать AllError(см. рис. 1).

1. ViolationsAssociatedwithBuses– предупреждения, связанные с шинами. Здесь и далее на рисунке показаны рекомендуемые настройки, а далее по тексту описаны особенности нарушения и синтаксис сообщения, которое будет отображаться при нарушении. Синтаксис нарушения показан в фигурных скобках. В первой группе нарушений описываются ошибки, связанные с реализацией шин (см. рис. 1):

  • Busindicesoutofrange– номер цепи выходит за пределы описанного диапазона цепей шины. {BusindexoutofrangeonAIndex = 4} В шине с меткой A имеется цепь (A4), превышающая размерность шины;
  • Bus range syntaxes errors – нарушен синтаксис описания диапазона шины. {BusrangesyntaxerrorNetNameatLocation}, где NetName – некорректное название шины, Location – расположение некорректной метки шины. В общем случае шины должны иметь метку A[0…7] или A[7..0], в которых буква задаёт имя шины, а цифрами задаётся диапазон меток цепей, которые в нее входят;
  • Illegal bus definition – некорректное использование шины; появляется при подключении к шине объекта, не относящегося к одному из разрешённых (netlabel, port, sheetentry, pin, crosssheetconnector или powerobject);
  • Illegalbusrangevalue– некорректное описание диапазона цепей шины.{IllegalbusrangevalueBusLabelatLocation}, где BusLabel – некорректная метка шины;
  • Mismatchedbuslabelordering– показывает идентификаторы одной шины, ошибочно указывающие порядок возрастания номеров, например A[0..2] и A[2..0]. {Mismatched bus ordering on NetName Low value first and High value first};
  • Mismatchedbuswidths– несовпадение ширины шины и названия порта. {MismatchedbuswidthsonbussectionNetName (BusSize1 andBusSize2)}, где NetName – несовпадающая метка шины, в скобках – размеры шины и порта;
  • Mismatchedbus/wireobjectonwire/bus– несовпадение типа идентификатора и названия цепи (шины). Ошибка появляется в том случае, если шина заведена в порт (или другой идентификатор), описывающий одиночную цепь. {WirePortAat 100mm, 100mmplacedonabus} – ошибка свидетельствует, что порт А (описывающий одиночную цепь) подключен к шине. В общем случае ошибка выглядит так: {ObjectIdentifieratLocationplacedonanObjectType}, где ObjectIdentifier – некорректная метка идентификатора (вывод, порт, порт питания, вывод листа, метка цепи), которая сопровождается меткой, указывающей на принадлежность к цепи (Wire) или шине (Bus); Location – координаты некорректного идентификатора, ObjectType – объект, подключенный к некорректному идентификатору (цепь или шина);
  • Mixedgenericandnumericbuslabeling– смешанная буквенно-цифровая маркировка шины. Шины, подключенные к одноименным портам, имеют различное описание разрядности, например, A[0..2] и A[0..b]. {Mismatched generic and numeric bus labeling on NetName Level value first and Generic}, где NetName – некорректноописаннаяметкашины.

2. ViolationsAssociatedwithComponents– предупреждения, связанные с компонентами (см. рис. 2):

  • ComponentImplementationswithinvalidpinsmappings– ошибка появляется при компиляции интегрированных библиотек и свидетельствует о несовпадении количества выводов у символа и модели компонента. {SN7432: Couldnotfindport 13 onmodelDIP14 forpin 13} – у компонента SN7432 для вывода 13 не найден соответствующий контакт на корпусе DIP14;
  • Componentscontainingduplicatesubparts– ошибка свидетельствует о наличии нескольких одинаковых ячеек одной и той же микросхемы. Например, первая ячейка микросхемы SN7432 установлена в двух местах с позиционным обозначением DD1.1. {Component ComponentName has duplicate sub_parts at Location1 and Location2};
  • Componentswithduplicatepins– сообщение свидетельствует о наличии двух или более одноимённых обозначений вывода компонента. {DuplicatepinsincomponentPinIdentifier1 andPinIdentifier2};
  • Duplicate part designators – продублированы позиционные обозначения компонентов на схеме (плате). {DuplicateComponentDesignatorsPartDesignatoratLocation1 andLocation2};
  • Errorsincomponentmodelparameters – ошибка появляется при компиляции интегрированных библиотек и свидетельствует об отсутствии описания модели одного или нескольких выводов в IBIS-модели для анализа целостности сигналов. {ComponentName: Pinmodelscouldnotbefound};
  • Extrapinfoundincomponentdisplaymode– найден дополнительный вывод в текущем режиме отображения компонента;
  • Mismatchedhiddenpinconnections– сообщение свидетельствует о наличии скрытых выводов у компонентов и показывает цепи, к которым по умолчанию подключены данные выводы;
  • Mismatched pin visibility – несовпадение названия цепи, подключенной к выводу компонента, с названием цепи, к которой по умолчанию должен быть подключен данный вывод в случае отсутствия его отображения на схеме (такая ошибка встречается при использовании скрытых выводов земли и питания);
  • Missing components models – ошибка появляется при компиляции интегрированных библиотек и свидетельствует о наличии моделей со ссылками на несуществующие файлы библиотек либо на несуществующие модели в библиотеке;
  • Missingcomponentsmodelsinmodelfiles– ошибка появляется при компиляции интегрированных библиотек и свидетельствует о наличии отдельных файлов моделей (таких как Spise и IBIS);
  • Missingpinfoundincomponentdisplay mode – найден не обозначенный вывод в текущем режиме отображения компонента;
  • Sheetsymbolwithduplicateentries– сообщение, свидетельствующее о наличии двух одноимённых выводов листа на одном символе листа;
  • Un_designatedpartsrequiringannotation – сообщение, свидетельствующее о наличии необозначенных позиционных обозначений компонентов (R?, D? и т.д.);
  • Unusedsub_partincomponent– сообщение, показывающее не задействованные ячейки многосекционных компонентов.

3,3-2

Рис. 2. Предупреждения, связанные с компонентами

3. ViolationsAssociatedwithConfigurationConstrains– предупреждения, связанные с ограничениями конфигурации (см. рис. 3). Не описываются, т.к. относятся в большей степени к реализации проектов ПЛИС или совместных проектов плат и ПЛИС.

3,3-3

Рис. 3. Предупреждения, связанные с ограничениями конфигурации

4. Violations Associated with Documents – предупреждения, связанные с документами (см. рис. 4):

  • Duplicatesheetsymbolnames– данное сообщение появляется, когда на одном листе схемы повторяются как минимум два обозначения символов листов;
  • MissingchildHDLentityforsheetsymbol– сообщение, показывающее несопоставимые имена выводов на символах листов и описание этих выводов в подчинённом листе, описанном на языке HDL;
  • Missingchildsheetforsheetsymbol– сообщение, показывающее несопоставимые имена выводов на символах листов и порты, соответствующие этим выводам на подчинённом листе схемы;
  • Multipletop_leveldocuments– сообщение, появляющееся при компиляции иерархического проекта; свидетельствует о наличии двух или более листов верхнего уровня;
  • Portnotlinkedtoparentsheetsymbol– сообщение компилятора о наличии порта на подчинённом листе схемы, не имеющего ответной части на символе листа этой схемы на верхнем уровне иерархии. Все выводы на символах листов главной схемы должны быть синхронизированы с соответствующими портами на подчинённых листах;
  • Sheetentrynotlinkedtochildsheet– сообщение компилятора о наличии вывода листа на главном листе схемы, не имеющего ответной части на одной из подчинённых схем;
  • Unique identifiers errors – сообщение, показывающее по меньшей мере два компонента, листа схем или комбинацию этих объектов, имеющих одинаковые уникальные номера (ID).

3,3-4

Рис. 4. Предупреждения, связанные с документами

5. ViolationsAssociatedwithHarnesses– предупреждения, связанные со жгутами (см. рис. 5). Не рассматриваются в данной статье. Если на схеме не используются жгуты, то все нарушения данной группы можно выключить из проверки.

3,3-5

Рис. 5. Предупреждения, связанные со жгутами

6. ViolationsAssociatedwithNets– предупреждения, связанные с цепями (см. рис. 6):

  • Addinghiddennettosheet– добавление скрытых выводов на листе схемы;
  • Addingitemsfromhiddennettonet– сообщение, показывающее цепи, подключенные к выводам компонента, которые изначально были подключены через скрытые выводы. Таким способом производится поиск несанкционированного подключения цепей питания к компоненту;
  • Differentialpairnetconnectionpolarityinversed– соединение цепей дифференциальной пары с различной полярностью;
  • Differentialpairnetunconnectedtodifferentialpairpin– отсутствие подключение между цепями и выводами дифференциальной пары;
  • Differentialpairnetunproperlyconnectedtodevice– некорректное подключение дифференциальной пары к устройству;
  • Missingnegativenetindifferentialpair– отсутствует минусовая цепь в дифференциальной паре;
  • Missingpositivenetindifferentialpair– отсутствует плюсовая цепь в дифференциальной паре;
  • Samenetusedinmultipledifferentialpairs– одна и та же цепь используется в нескольких дифференциальных парах;
  • Duplicate nets – продублированы названия цепей;
  • Floatingnetlabels– не подключенные метки цепей;
  • Floating power objects – не подключенные объекты питания;
  • Net parameters with no name – безымянныепараметрыцепи;
  • Net parameters with no value – параметрыцепи, неимеющиезначения;
  • Nets containing floating input pins – цепи, содержащиенеподключенныйвходнойвывод;
  • Nets containing multiple similar objects– цепи, содержащиенесколькопродублированныхобъектов;
  • Netswithmultiplenames– цепь, содержащая несколько меток (названий);
  • Netswithnodrivingsource– цепь, не имеющая источника возбуждения;
  • Nets with only one pin – цепь, имеющая только один вывод;
  • Sheetscontainingduplicateports– листы схемы содержат повторяющиеся порты;
  • Signals with multiple driver – сигнал имеет несколько источников возбуждения;
  • Signalswithnodriver– сигнал без источника возбуждения;
  • Signals with no load – сигнал без нагрузки;
  • Unconnectedobjectinnet– не подключенные объекты в цепи;
  • Unconnected wires – не подключенные окончания цепей.

3,3-6

Рис. 6. Предупреждения, связанные с цепями

7. ViolationsAssociatedwithOthers, ViolationsAssociatedwithParameters– предупреждения, связанные с параметрами, и другие (см. рис. 7):

  • Objectnotcompletelywithinsheetboundaries– объекты, не полностью попадающие в границы листа;
  • Off_grid object – объекты, расположенные не в узлах сетки;
  • Sameparametercontainingdifferenttypes– одинаковые параметры, имеющие различный тип;
  • Sameparametercontainingdifferentvalues– одинаковые параметры, имеющие различные значения.

3,3-7

Рис. 7. Дополнительные правила

Многие из рассмотренных настроек могут изменяться для различных проектов, и большую роль здесь играет использование шин, жгутов, портов и других вспомогательных элементов.

Connection Matrix – матрица соединений (см. рис. 8). На второй вкладке параметров проекта показана матрица соединений, в которой по горизонтали и вертикали перечислены все возможные типы выводов, портов и выводов листа. Данная матрица задаёт уровень значимости подключений каждого типа. Например, по умолчанию на пересечении строки и столбца Input Port установлено значение Error, – это свидетельствует о том, что одна цепь не может содержать два и более входных порта, но для многих схем это является нормальным! Следовательно, в данной матрице необходимо описать пересечения всех типов.

3,3-8

Рис. 8. Матрица соединений

Настоящая статья написана по материалам справочного руководства Altium Designer, которое находится в папке Help директории установки программы. Для подробного знакомства с настройками компиляции проекта рекомендуется прочитать статью TR0142 Project Compiler Error Reference.pdf, находящуюся в папке документации Altium Designer\Help.

После настройки параметров компиляции согласно установкам на рисунках 8 – 14 можно выполнять компиляцию проекта и его отладку (при наличии ошибок). Запустим компиляцию командой Project > Compile PCB Project. Результатом станет появление окна Messages с ошибками проекта. Если проект был выполнен в соответствии как говорилось в предыдущей статье, то в списке сообщений будет две ошибки и несколько десятков предупреждений (см. рис. 9).

3,3-9

Рис. 9. Список нарушений

После компиляции начинается один из наиболее сложных этапов работы с программой – отладка схемы. Необходимо добиться, чтобы в списке нарушений (Messages) не содержалось ни одной ошибки (Error и Fatal Error); наличие предупреждений некритично. Отладку рекомендуется выполнять поэтапно: сначала избавиться от одной ошибки, затем снова провести компиляцию и только после этого переходить к следующей ошибке.

Вернёмся к рассматриваемой схеме. Выполним двойной щелчок ЛКМ на первой ошибке. В результате на экране появится окно Compile Errors, в котором приведён текст данной ошибки (в нашем случае указана цепь А6, которая имеет только один вывод). Поскольку решение проблемы не очевидно, перейдём ко второй ошибке. При выделении второй ошибки сообщается, что существует некоторая цепь, содержащая только один вывод, откуда становится понятно, что на этой цепи не хватает метки (цепь входит в шину и при этом не имеет метку цепи). Выполним команду Place > Net Label и установим метку А6 на эту цепь. После проведения компиляции окно нарушений не будет содержать ошибок.

Теперь мы имеем проект, содержащий одну схему и готовый к передаче информации на печатную плату, о разработке которой будет рассказано в следующих статьях.