В предыдущем обновлении мы рассмотрели определение подходящего стека слоев для модуля, а также добавление разводки фанаута ко всем компонентам, размещенным на плате. Основываясь на всех этих подготовительных работах, мы теперь почти готовы к прокладке первых трасс. Однако, прежде чем начать соединять любые компоненты на плате, нам необходимо определить профили импеданса и настроить соответствующие правила проектирования для корректной ширины трасс.
Настройка профилей импеданса в менеджере стека слоев выполняется просто. Нам нужно определить как одиночные, так и дифференциальные профили импеданса. Информацию о необходимых значениях импеданса можно взять из стандартов интерфейсов и руководств по проектированию аппаратного обеспечения для процессора NXP i.MX8. В дизайне используются следующие значения импеданса как для одиночных, так и для дифференциальных:
На ранее определенном стеке слоев у нас есть четыре сигнальных слоя, которые мы можем использовать для управления импедансом, это верхний слой, L2, L7 и нижний слой. Верхний и нижний слои имеют только один опорный слой земли, в то время как L2 и L7 встроены между двумя опорными плоскостями. После ввода значений импеданса и опорных слоев геометрия трассы рассчитывается автоматически:
Профиль импеданса менеджера стека слоев дифференциальный 100 Ом
При определении геометрии дорожек, особенно ширины дорожек и зазора для дифференциальных пар, важно учитывать необходимое пространство для трассировки. По возможности мы хотели бы сохранить общую ширину дифференциальной пары маленькой, чтобы ограничить необходимое пространство для трассировки. В зависимости от плотности платы это также следует учитывать при определении стека слоев.
Остался всего один шаг, прежде чем мы сможем проложить первые дорожки, и это указать Altium Designer, какие ширины дорожек (и зазоры для дифференциальных пар) требуются в зависимости от интерфейса и слоя трассировки. Значения импеданса назначаются соответствующим интерфейсам на схеме. Здесь мы можем работать с директивами, чтобы назначить сети классам сетей или классам дифференциальных пар.
Несколько классов сетей, назначенных на дизайнерское одеяло
В редакторе правил проектирования теперь мы можем нацелиться на эти сети или классы дифференциальных пар и назначить соответствующие геометрии дорожек. Вместо ручного ввода геометрии дорожек мы можем выбрать соответствующий профиль импеданса, который мы определили в менеджере стека слоев:
Профиль импеданса, используемый в диалоговом окне правил проектирования – правило высокого приоритета переопределяет профиль импеданса
Обратите внимание, что у нас есть еще одно правило проектирования, которое имеет наивысший приоритет в нашей настройке. Это правило проектирования применяется только к определенным зонам проектирования, которые мы создали в предыдущем обновлении. Эти зоны располагаются непосредственно под компонентами с мелким шагом и позволяют нам локально использовать ширину и расстояние между дорожками до 85 мкм в зоне разветвления. Правила проектирования для этих зон имеют наивысший приоритет, поскольку нам необходимо переопределить заданные профили импеданса. Поскольку мы можем не соблюдать требуемую геометрию дорожек в этих зонах, нам нужно держать их как можно меньше и использовать геометрию дорожек, отклоняющуюся от профилей импеданса, только там, где это абсолютно необходимо. Если мы будем держать эти секции очень маленькими, общее влияние на целостность сигнала канала будет приемлемым. Однако нам нужно будет проверить это в наших постлейаутных симуляциях.
Зоны проектирования в красном цвете, показанные под компонентами BGA с мелким шагом
Теперь, когда все правила проектирования определены, мы можем начать маршрутизацию первого интерфейса. На этой плате мы начнем с интерфейса DRAM.
Вы заметите, что мы еще не определили общую стратегию трассировки для этой платы. Мы могли бы сделать это до размещения каких-либо трасс, и в зависимости от личных предпочтений, в этом нет ничего плохого. На этой плате я решил сначала проложить интерфейс DRAM, чтобы увидеть, сколько места и сколько слоев трассировки нам нужно выделить для интерфейса DRAM. Если нам удастся проложить микросхему LPDDR4 на двух или трех сигнальных слоях, тогда мы сможем выделить один или два слоя трассировки для других интерфейсов поблизости. Поскольку интерфейс DRAM занимает довольно много места, особенно на маленькой плате, как эта, наличие еще одного свободного сигнального слоя было бы очень желательно.
Давайте быстро посмотрим на трассировку разделительных конденсаторов на микросхеме LPDDR4. Подключение разделительных конденсаторов было частью трассировки выводов в предыдущей статье. Давайте сначала рассмотрим это, чтобы увидеть, нужно ли нам добавить какие-либо дополнительные переходные отверстия или дорожки на верхнем или нижнем слое. Тот факт, что мы используем заполненные и закрытые переходные отверстия, действительно играет нам на руку, когда речь идет о трассировке разделительных конденсаторов.
Каждый питающий контакт на микросхеме DRAM имеет свой сквозной VIA, который может соединяться со всеми 10 слоями платы. Нам необходимо использовать VIA на этих контактах, поскольку мы имеем дело с возвратными токами на всех земляных плоскостях в стеке. Поскольку развязывающие конденсаторы размещены на нижней стороне платы, нам также необходимо иметь доступ к питающим контактам VDD и VDDQ на нижней стороне платы. Микросхема DRAM имеет шаг контактов 0,65 мм по оси Y. Этот шаг контактов позволяет нам размещать развязывающие конденсаторы непосредственно между контактами GND и VDD/VDDQ. Такое расположение обеспечивает минимально возможную петлевую индуктивность. Теперь мы можем равномерно распределить развязывающие конденсаторы среди питающих контактов.
Опциональные резисторы завершения тактового сигнала также размещаются непосредственно под контактами тактового сигнала, каждый из которых напрямую соединен с контактами через VIA.
Развязывающие конденсаторы, размещенные на нижней стороне микросхемы LPDDR4
Поскольку для развязывающих конденсаторов не требуются дополнительные сегменты дорожек, мы можем использовать пространство на нижнем слое для маршрутизации сигналов. Мы будем придерживаться референсного дизайна i.MX 8M plus и разместим все дифференциальные пары DQS на нижней стороне платы. Кроме того, мы также можем разместить сигналы сброса DRAM и разрешения тактового сигнала на нижней стороне:
Маршрутизация DRAM с нижней стороны
Раскраска сигналов команд/адресов/управления в отличный от групп DQ цвет помогает нам определить хорошую стратегию маршрутизации. Голубые сигналы команд/адресов/управления расположены за первыми двумя рядами контактных выводов на SoC, за исключением двух сигналов тактовой частоты. Если мы хотим маршрутизировать эти сигналы на внутренних слоях, мы должны убедиться, что никакие переходные отверстия (VIA) от двух внешних рядов контактных выводов не мешают. Мы можем соединить Byte 0 из каналов A и B, а также сигналы тактовой частоты, которые все доступны на двух внешних рядах, непосредственно на верхнем слое без необходимости изменения слоя:
Маршрутизация DRAM с верхней стороны
Байт 1 с каналов A и B оба расположены ближе к углу BGA. Это идеально, так как это позволяет нам перенести эти сигналы на L2 и соединить их с микросхемой DRAM, оставляя достаточно места между этими двумя группами трассировки для подключения сигналов команд/адресов/управления:
Трассировка DRAM L2
Строго говоря, мы не меняем опорный слой, но мы вводим второй, переключаясь на L2. Как только мы размещаем трассу с переменным во времени напряжением над слоем земли, ток будет течь независимо от того, присутствует ли второй опорный слой. Чтобы обеспечить возвратный путь для этих токов, мы используем возвратные пути через VIA рядом с переходами слоев на верхнем слое. Сигналы, которые переключают слои за двумя внешними рядами контактов под BGA, уже имеют рядом возвратные пути через VIA, которые образованы двумя рядами контактов земли и заземляющими VIA SoC:
Возвратные пути через VIA для интерфейса DRAM
Вот еще один важный момент, который следует учитывать в связи с путями возврата. Мы используем слоистую структуру с чередующимися микропереходами (micro VIA). Поэтому два последовательных микроперехода должны быть размещены на определенном минимальном расстоянии друг от друга. Для установления соединения между двумя последовательными переходами необходим короткий участок трассы. Этот участок трассы размещается на земляной плоскости под верхним и нижним слоями. Мы должны быть осторожны, чтобы не создавать никаких разрывов или пустот на земляной плоскости, которые могли бы нарушить путь возврата сигнальных линий:
Управление путем возврата - пустоты и разделения с левой стороны, улучшенная трассировка с правой стороны
Располагая микропереходы и участки трасс в соответствии с сеткой BGA устройства DRAM, мы можем гарантировать, что под сигнальными линиями всегда будет надежное заземление:
Трассы на верхнем слое и на L2 расположены на равном расстоянии друг от друга, как минимум 0.275 мм. Это расстояние необходимо для того, чтобы не создавать избыточную перекрестную помеху между этими сигналами. Мы должны будем проверить это в пост-лейаутной симуляции также.
Единственное, что осталось сделать сейчас для завершения трассировки интерфейса DRAM, это настройка задержек. Однако мы не будем это делать сейчас. Вместо этого настройка задержек будет выполнена для всех интерфейсов после завершения трассировки. Для очень плотных дизайнов или интерфейсов, требующих большой компенсации задержек, лучше выполнить настройку длины раньше, чем позже. Требования к времени на LPDDR4 не слишком строгие, поэтому я уверен, что у нас не возникнет проблем, если мы займемся этим позже.
На данный момент трассировка DRAM завершена, и мы можем перейти к планированию компоновки и трассировке всех остальных интерфейсов. Об этом и многом другом будет рассказано в следующем обновлении проекта открытого вычислительного модуля!