Dans la mise à jour précédente, nous avons examiné la définition d'un empilement de couches approprié pour le module ainsi que l'ajout du routage de fanout pour tous les composants placés sur la carte. Sur la base de toutes ces préparations, nous sommes maintenant presque prêts à router les premières pistes. Cependant, avant de commencer à connecter des composants sur la carte, nous devons définir les profils d'impédance et établir les règles de conception correspondantes pour la largeur de piste correcte.
La configuration des profils d'impédance est simple dans le gestionnaire d'empilement de couches. Nous devons définir à la fois les profils d'impédance en mode simple et différentiel. Les informations concernant les valeurs d'impédance nécessaires peuvent être obtenues à partir des normes d'interface et des guides de conception matérielle pour le processeur NXP i.MX8. Les valeurs d'impédance suivantes, à la fois en mode simple et différentiel, sont utilisées dans la conception :
Sur l'empilement de couches précédemment défini, nous disposons de quatre couches de signal que nous pouvons utiliser pour le routage contrôlé par l'impédance, qui sont la couche supérieure, L2, L7 et la couche inférieure. La couche supérieure et la couche inférieure ont chacune seulement un plan de masse de référence tandis que L2 et L7 sont insérées entre deux plans de référence. Après avoir entré les valeurs d'impédance et les couches de référence, la géométrie de la piste est calculée automatiquement :
Gestionnaire d'empilement de couches profil d'impédance différentiel 100 Ohm
Lors de la définition de la géométrie des pistes, en particulier la largeur des pistes et l'espacement pour les paires différentielles, il est important de garder à l'esprit l'espace de routage nécessaire. Si possible, nous aimerions maintenir la largeur globale de la paire différentielle petite afin de limiter l'espace de routage nécessaire. En fonction de la densité de la carte, cela devrait également être pris en compte lors de la définition du stack de couches.
Il ne reste qu'une étape avant de pouvoir router les premières pistes, et c'est de dire à Altium Designer quelles largeurs de pistes (et espacements pour les paires différentielles) sont nécessaires en fonction de l'interface et de la couche de routage. Les valeurs d'impédance sont attribuées aux interfaces appropriées dans le schéma. Ici, nous pouvons travailler avec des directives pour assigner des réseaux à des classes de réseaux ou des classes de paires différentielles.
Plusieurs classes de réseaux assignées à une couverture de conception
Dans l'éditeur de règles de conception, nous pouvons maintenant cibler ces réseaux ou classes de paires différentielles et assigner les géométries de pistes correspondantes. Au lieu de saisir manuellement la géométrie des pistes, nous pouvons choisir le profil d'impédance correspondant que nous avons défini dans le gestionnaire de stack de couches :
Profil d'impédance utilisé dans la boîte de dialogue des règles de conception – règle de priorité élevée remplace le profil d'impédance
Notez que nous avons une autre règle de conception qui prend la priorité la plus élevée dans notre configuration. Cette règle de conception s'applique uniquement à certaines salles de conception que nous avons créées dans la mise à jour précédente. Ces salles de conception sont placées uniquement directement sous les composants à pas fin et nous permettent d'utiliser localement une largeur de piste et un espacement jusqu'à 85 um dans la région de sortie. Les règles de conception pour ces salles ont la priorité la plus élevée car nous devons remplacer les profils d'impédance définis. Comme nous ne pourrons peut-être pas suivre la géométrie de piste requise à l'intérieur de ces salles, nous devons les garder aussi petites que possible et utiliser des géométries de piste qui s'écartent des profils d'impédance uniquement là où c'est absolument nécessaire. Si nous gardons ces sections très petites, l'impact global sur l'intégrité du signal du canal sera acceptable. Cependant, nous devrons vérifier cela dans nos simulations post-disposition.
Salles de conception en rouge montrées sous les BGA à pas fin
Maintenant que toutes les règles de conception ont été définies, nous pouvons commencer le routage de la première interface. Sur cette carte, nous commencerons par l'interface DRAM.
Vous remarquerez que nous n'avons pas encore défini la stratégie de routage globale pour cette carte. Nous aurions pu le faire avant de placer le moindre routage et selon les préférences personnelles, cela ne pose aucun problème. Sur cette carte, j'ai décidé de router d'abord l'interface DRAM pour voir combien d'espace et combien de couches de routage nous devons allouer à l'interface DRAM. Si nous pouvons router le circuit intégré LPDDR4 sur deux ou trois couches de signaux, alors nous pouvons allouer une ou deux couches de routage à d'autres interfaces à proximité. Étant donné que l'interface DRAM occupe pas mal d'espace, surtout sur une petite carte comme celle-ci, disposer d'une autre couche de signal vide serait très souhaitable.
Jetons un coup d'œil rapide au routage des condensateurs de découplage sur le circuit intégré LPDDR4. La connexion des condensateurs de découplage faisait partie du routage de dégagement dans l'article précédent. Revoyons cela d'abord pour voir si nous devons ajouter des VIAs ou des pistes supplémentaires sur la couche supérieure ou inférieure. Le fait que nous utilisions des VIAs remplis et scellés joue vraiment en notre faveur lorsqu'il s'agit de router les condensateurs de découplage.
Chaque broche d'alimentation sur le CI DRAM possède son propre VIA traversant qui peut se connecter aux 10 couches de la carte. Nous devons utiliser des VIAs sur ces broches car nous gérons les courants de retour sur tous les plans de masse dans l'empilement. Étant donné que les condensateurs de découplage sont placés sur le côté inférieur de la carte, nous devons également avoir les pads d'alimentation VDD et VDDQ disponibles sur le côté inférieur de la carte. Le CI DRAM a un pas de broche de 0,65 mm dans l'axe Y. Ce pas de broche nous permet de placer les condensateurs de découplage directement entre les pads GND et VDD/VDDQ. Cet arrangement permet d'obtenir l'inductance de boucle la plus faible possible. Nous pouvons maintenant répartir uniformément les condensateurs de découplage parmi les broches d'alimentation.
Les résistances de terminaison d'horloge optionnelles sont également placées directement sous les broches d'horloge, chacune connectée directement aux broches par des VIAs.
Condensateurs de découplage placés sur le côté inférieur du CI LPDDR4
Puisqu'aucun segment de trace supplémentaire n'est nécessaire pour les condensateurs de découplage, nous pouvons utiliser l'espace sur la couche inférieure pour le routage des signaux. Nous resterons proches du design de référence de l'i.MX 8M plus et placerons toutes les paires différentielles DQS sur le côté inférieur de la carte. De plus, nous pouvons également placer les signaux de réinitialisation et d'activation de l'horloge DRAM sur le côté inférieur :
Routage DRAM côté inférieur
Colorer différemment les signaux de commande/adresse/contrôle des groupes DQ nous aide à identifier une bonne stratégie de routage. Les signaux de commande/adresse/contrôle cyan sont tous situés derrière les deux premières rangées de broches de signal sur le SoC, à l'exception des deux signaux d'horloge. Si nous voulons router ces signaux sur les couches internes, nous devons nous assurer qu'aucun VIA des deux rangées externes de broches de signal ne gêne. Nous pouvons connecter le Byte 0 des canaux A et B ainsi que les signaux d'horloge qui sont tous disponibles sur les deux rangées externes directement sur la couche supérieure sans avoir besoin de changer de couche :
Routage DRAM côté supérieur
Le Byte 1 des canaux A et B se trouvent tous deux vers le coin du BGA. Cela est parfait car cela nous permet de déplacer ces signaux sur L2 et de les connecter au CI DRAM tout en laissant suffisamment d'espace entre ces deux groupes de routage pour connecter les signaux de commande/adresse/contrôle :
Routage DRAM L2
À proprement parler, nous ne changeons pas la couche de référence, mais nous en introduisons une seconde en passant à L2. Dès que nous plaçons une trace avec une tension variant dans le temps au-dessus d'un plan de masse, un courant circulera indépendamment de la présence d'un second plan de référence. Pour fournir également un chemin de retour pour ces courants, nous utilisons des VIAs de chemin de retour proches des transitions de couche sur la couche supérieure. Les signaux qui changent de couche derrière les deux rangées de broches extérieures sous le BGA ont déjà des VIAs de chemin de retour à proximité qui sont formés par les deux rangées de broches de masse et les VIAs de masse du SoC :
VIAs de chemin de retour pour l'interface DRAM
Voici un autre détail à garder à l'esprit en ce qui concerne les chemins de retour. Nous utilisons un empilement de micro-VIA décalés. Par conséquent, les deux micro-VIA séquentiels doivent être placés à une certaine distance minimale l'un de l'autre. Un court segment de piste est nécessaire pour établir une connexion entre les deux VIA séquentiels. Ce segment de piste est placé sur le plan de masse sous les couches supérieure et inférieure. Nous devons faire attention à ne pas créer de coupures ou de vides sur le plan de masse qui perturberaient le chemin de retour des lignes de signal :
Gestion du chemin de retour - vides et séparations sur le côté gauche, routage amélioré sur le côté droit
En disposant les micro-VIA et les segments de piste en alignement avec la grille BGA du dispositif DRAM, nous pouvons nous assurer qu'il y a toujours une connexion de masse solide sous les lignes de signal :
Les pistes sur la couche supérieure et sur L2 sont espacées d'une distance uniforme d'au moins 0,275 mm l'une de l'autre. Cette distance est nécessaire pour garantir que nous ne créons pas de diaphonie excessive entre ces signaux. Nous devrons également vérifier cela dans une simulation post-implantation.
La seule chose qu'il reste à faire maintenant pour terminer le routage de l'interface DRAM est le réglage du délai. Cependant, nous ne le ferons pas maintenant. Au lieu de cela, le réglage du délai sera effectué pour toutes les interfaces une fois le routage terminé. Pour les conceptions de très haute densité ou les interfaces nécessitant beaucoup de compensation de retard, il est préférable de procéder au réglage de la longueur plus tôt plutôt que plus tard. Les exigences de temporisation sur le LPDDR4 ne sont cependant pas trop strictes, donc je suis confiant que nous ne rencontrerons aucun problème si nous nous en occupons plus tard.
Pour l'instant, le routage DRAM est terminé et nous pouvons passer à la phase de planification de l'agencement et router toutes les autres interfaces. Tout cela et plus encore feront partie de la prochaine mise à jour sur le projet de module de calcul open-source !