Na atualização anterior, examinamos a definição de um empilhamento de camadas adequado para o módulo, bem como a adição do roteamento de escape para todos os componentes colocados na placa. Com base em todas essas preparações, agora estamos quase prontos para rotear as primeiras trilhas. Antes de começarmos a conectar quaisquer componentes na placa, no entanto, temos que definir os perfis de impedância e configurar as regras de design correspondentes para a largura de trilha correta.
Configurar os perfis de impedância é simples no gerenciador de empilhamento de camadas. Precisamos definir tanto os perfis de impedância de extremidade única quanto diferencial. As informações sobre quais valores de impedância são necessários podem ser obtidas dos padrões de interface e dos guias de design de hardware para o processador NXP i.MX8. Os seguintes valores de impedância, tanto de extremidade única quanto diferencial, são usados no design:
No empilhamento de camadas previamente definido, temos quatro camadas de sinal disponíveis que podemos usar para roteamento controlado por impedância, que são a camada superior, L2, L7 e a camada inferior. A camada superior e inferior têm apenas um plano de terra de referência cada, enquanto L2 e L7 estão embutidos entre dois planos de referência. Após inserirmos os valores de impedância e as camadas de referência, a geometria da trilha é calculada automaticamente:
Gerenciador de empilhamento de camadas perfil de impedância diferencial 100 Ohm
Ao definir a geometria do traço, especialmente a largura do traço e o espaço para pares diferenciais, é importante ter em mente o espaço de roteamento necessário. Se possível, gostaríamos de manter a largura total do par diferencial pequena para limitar o espaço de roteamento necessário. Dependendo da densidade da placa, isso também deve ser levado em conta ao definir o empilhamento de camadas.
Há apenas um passo restante antes de podermos rotear os primeiros traços, e isso é informar ao Altium Designer quais larguras de traço (e espaços para os pares diferenciais) são necessários, dependendo da interface e da camada de roteamento. Os valores de impedância são atribuídos às interfaces apropriadas no esquemático. Aqui, podemos trabalhar com diretivas para atribuir redes a classes de redes ou classes de pares diferenciais.
Várias classes de redes atribuídas a um cobertor de design
No editor de regras de design, agora podemos direcionar essas redes ou classes de pares diferenciais e atribuir as geometrias de traço correspondentes. Em vez de inserir manualmente a geometria do traço, podemos escolher o perfil de impedância correspondente que definimos no gerenciador de empilhamento de camadas:
Perfil de impedância usado no diálogo de regras de design – regra de alta prioridade sobrepõe o perfil de impedância
Note que temos outra regra de design que assume a maior prioridade de regra na nossa configuração. Esta regra de design aplica-se apenas a certas salas de design que criamos na atualização anterior. Estas salas de design são colocadas diretamente sob os componentes de pitch fino e permitem-nos usar localmente uma largura de traço e espaçamento de até 85 um na região de breakout. As regras de design para estas salas têm a maior prioridade, pois precisamos substituir os perfis de impedância definidos. Como talvez não possamos seguir a geometria de traço requerida dentro destas salas, precisamos mantê-las o mais pequenas possível e usar geometrias de traço que desviem dos perfis de impedância apenas onde absolutamente necessário. Se mantivermos estas seções muito pequenas, o impacto geral na integridade do sinal do canal será aceitável. No entanto, precisaremos verificar isso nas nossas simulações pós-layout.
Salas de design em vermelho mostradas sob BGAs de pitch fino
Agora que todas as regras de design foram definidas, podemos começar a rotear a primeira interface. Nesta placa, começaremos com a interface DRAM.
Você notará que ainda não definimos a estratégia geral de roteamento para esta placa. Poderíamos ter feito isso antes de colocar qualquer rota e, dependendo da preferência pessoal, não há nada de errado com isso. Nesta placa, decidi rotear a interface DRAM primeiro para ver quanto espaço e quantas camadas de roteamento precisamos alocar para a interface DRAM. Se conseguirmos rotear o IC LPDDR4 em duas ou três camadas de sinal, então podemos alocar uma ou duas camadas de roteamento para outras interfaces nas proximidades. Como a interface DRAM ocupa bastante espaço, especialmente em uma placa pequena como esta, ter outra camada de sinal vazia disponível seria muito desejável.
Vamos dar uma olhada rápida no roteamento dos capacitores de desacoplamento no IC LPDDR4. Conectar os capacitores de desacoplamento foi parte do roteamento de breakout no artigo anterior. Vamos revisar isso primeiro para ver se precisamos adicionar quaisquer VIAs ou trilhas adicionais na camada superior ou inferior. O fato de estarmos usando VIAs preenchidas e tampadas realmente joga a nosso favor quando se trata de rotear os capacitores de desacoplamento.
Cada pino de alimentação no CI DRAM possui sua própria VIA passante que pode se conectar a todas as 10 camadas da placa. Precisamos usar VIAs nesses pinos, pois estamos lidando com correntes de retorno em todas as camadas de aterramento no empilhamento. Como os capacitores de desacoplamento são colocados no lado inferior da placa, também precisamos ter os pads de alimentação VDD e VDDQ disponíveis no lado inferior da placa. O CI DRAM tem um espaçamento de pinos de 0,65mm no eixo Y. Esse espaçamento de pinos nos permite colocar os capacitores de desacoplamento diretamente entre os pads GND e VDD/VDDQ. Esse arranjo permite a menor indutância de loop possível. Agora podemos distribuir uniformemente os capacitores de desacoplamento entre os pinos de alimentação.
Os resistores de terminação de relógio opcionais também são colocados diretamente sob os pinos de relógio, cada um conectado diretamente aos pinos através de VIAs.
Capacitores de desacoplamento colocados no lado inferior do CI LPDDR4
Uma vez que não são necessários segmentos de trilha adicionais para os capacitores de desacoplamento, podemos utilizar o espaço na camada inferior para o roteamento de sinais. Vamos nos manter próximos ao design de referência do i.MX 8M plus e colocar todos os pares diferenciais DQS no lado inferior da placa. Adicionalmente, também podemos colocar os sinais de reset e habilitação de clock da DRAM no lado inferior:
Roteamento da DRAM lado inferior
Colorir os sinais de comando/endereço/controle de forma diferente dos grupos DQ nos ajuda a identificar uma boa estratégia de roteamento. Os sinais de comando/endereço/controle em ciano estão todos localizados atrás das duas primeiras fileiras de pinos de sinal no SoC, com exceção dos dois sinais de clock. Se quisermos rotear esses sinais nas camadas internas, precisamos garantir que não haja VIAs das duas fileiras externas de pinos de sinal no caminho. Podemos conectar o Byte 0 dos canais A e B, bem como os sinais de clock que estão todos disponíveis nas duas fileiras externas diretamente na camada superior sem necessidade de mudança de camada:
Roteamento da DRAM lado superior
O Byte 1 dos canais A e B estão ambos localizados em direção ao canto do BGA. Isso é perfeito, pois nos permite mover esses sinais para o L2 e conectá-los ao IC DRAM, deixando ainda espaço suficiente entre esses dois grupos de roteamento para conectar os sinais de comando/endereço/controle:
Roteamento L2 para DRAM
Estritamente falando, não estamos mudando a camada de referência, mas estamos introduzindo uma segunda ao mudar para o L2. Assim que colocamos um traço com uma tensão variável no tempo sobre um plano de terra, uma corrente fluirá independentemente da presença de um segundo plano de referência. Para fornecer um caminho de retorno para essas correntes também, estamos usando VIAs de caminho de retorno próximas às transições de camada na camada superior. Os sinais que estão mudando de camadas atrás das duas fileiras externas de pinos sob o BGA já têm VIAs de caminho de retorno por perto, que são formadas pelas duas fileiras de pinos de terra e VIAs de terra do SoC:
VIAs de caminho de retorno para a interface DRAM
Aqui está mais um detalhe a ter em mente em relação aos caminhos de retorno. Estamos usando uma pilha de camadas de micro VIAs escalonadas. Portanto, os dois micro VIAs sequenciais precisam ser colocados com uma certa distância mínima entre si. Um curto segmento de trilha é necessário para estabelecer uma conexão entre os dois VIAs sequenciais. Este segmento de trilha é colocado no plano de terra abaixo da camada superior e inferior. Temos que ter cuidado para não criar cortes ou vazios no plano de terra que interromperiam o caminho de retorno das linhas de sinal:
Gerenciamento do caminho de retorno - vazios e divisões no lado esquerdo, roteamento melhorado no lado direito
Ao organizar os micro VIAs e segmentos de trilha em linha com a grade BGA do dispositivo DRAM, podemos garantir que sempre haja uma conexão sólida com o terra abaixo das linhas de sinal:
As trilhas na camada superior e em L2 estão espaçadas a uma distância uniforme de pelo menos 0,275mm uma da outra. Esta distância é necessária para garantir que não criemos crosstalk excessivo entre esses sinais. Teremos que verificar isso também em uma simulação pós-layout.
A única coisa que resta fazer agora para terminar o roteamento da interface DRAM é o ajuste de delay. No entanto, não faremos isso agora. Em vez disso, o ajuste de delay será feito para todas as interfaces uma vez que o roteamento esteja concluído. Para designs de alta densidade ou interfaces que requerem muita compensação de delay, é melhor fazer o ajuste de comprimento mais cedo do que mais tarde. Os requisitos de tempo no LPDDR4 não são tão rigorosos, então estou confiante de que não encontraremos problemas se cuidarmos disso mais tarde.
Por agora, o roteamento DRAM está concluído e podemos passar para a fase de planejamento do layout e rotear todas as outras interfaces. Isso e mais serão parte da próxima atualização no projeto do módulo de computação de código aberto!