Ma bibliothèque open-source de composants Altium contient des centaines de symboles schématiques, fournissant plus de 100 000 composants à utiliser. Les gens sont souvent surpris lorsque je leur dis qu'il ne faut que quelques minutes pour créer un symbole schématique à l'aide d'Altium, même si la pièce a un nombre élevé de broches. Dans cet article, je veux vous montrer comment vous pouvez tirer parti de certains des outils d'Altium pour créer rapidement vos propres symboles.
Avant de commencer, vous aurez besoin de quelques éléments :
Pour trouver une pièce à utiliser pour cet article, je me suis rendu chez Digi-Key et j'ai cherché dans la catégorie “Embarqué-Microcontrôleurs” un microcontrôleur de la série ARM Cortex M en stock avec FLASH intégré et plus de 100 broches GPIO. J'ai ensuite trié par la quantité disponible, et le gagnant est un NXP MK64FN1M0VLQ12. Cela semble être un bon microcontrôleur dans un boîtier LQFP-144. Copier et coller la description de chaque broche de ce boîtier serait long, ennuyeux et source d'erreurs, alors ne le faisons pas !
En regardant la fiche technique de cette pièce, le tableau de brochage (5.1, page 68) n'est pas idéal pour ce processus, mais ce n'est pas grave : les fiches techniques sont rarement idéales pour créer des symboles.
Avant d'entrer dans les détails de la création de ce composant, je l'ai moi-même parcouru pour m'assurer que je ne manquais aucune étape lors de la rédaction de l'article. Il m'a fallu un peu plus de 7 minutes pour créer ce composant à 144 broches, ce qui est un peu lent pour moi. Si les données de la fiche technique ne nécessitaient pas autant de nettoyage, cela aurait pris environ 4-5 minutes. Cependant, j'ai déjà créé près de 500 symboles comme celui-ci. J'ai donc un peu d'expérience pour faire le travail rapidement !
La première chose que nous allons faire dans Altium est de créer une nouvelle bibliothèque de schémas en allant dans Fichier -> Nouveau -> Bibliothèque -> Bibliothèque de schémas.
Ensuite, nous plaçons un rectangle dans le nouveau composant. En plaçant d'abord le rectangle pour le corps du composant, on évite d'avoir à le déplacer derrière les broches plus tard. Il s’agit juste d'un gain de temps. La taille du rectangle n'a pas d'importance. Celui que j'ai créé sera bien trop petit pour le composant final !
Après le rectangle, nous allons créer notre première broche, qui sera le noyau de toutes les autres.
Il est préférable de définir les propriétés de la broche pour qu'elle soit facile à utiliser par la suite. J'ai donc simplement défini le numéro de la broche (indicatif) sur 1, et son nom sur "P1". La partie numérique du nom peut être auto-incrémentée. La lettre P me permet simplement de savoir, lors d'une étape ultérieure, qu'il s'agit du nom de la broche.
Vous devriez avoir quelque chose qui ressemble à ça :
Il nous manque 143 broches, alors corrigeons cela. Tout d'abord, copiez la broche.
Ensuite, nous allons utiliser la puissante fonction “Paste Array” du menu Édition.
Nous avons besoin de 143 broches supplémentaires, vous pouvez donc entrer 143 pour le nombre d'objets et vous assurez que la verticale est réglée sur -100mil. Cela générera des broches à partir de l'endroit où vous cliquez, en descendant (plutôt qu'en montant).
Comme il y a beaucoup de broches ici, je suggère de faire un zoom arrière et de cliquer quelque part autour de 7000mil de haut sur le symbole schématique !
J'ai organisé les broches en colonnes, mais nous avons maintenant 144 broches à utiliser !
Avoir toutes ces broches n'est pas très utile pour le symbole, car nous devons encore ajouter des noms aux broches. Pour ce faire, nous allons nous rendre sur la fiche technique.
Sélectionnez le tableau des broches, puis copiez et collez toutes les données dans un document notepad++. Cela va avoir l'air horrible, mais ne vous inquiétez pas !
Comme je l'ai mentionné précédemment, ce n'est pas la fiche technique la plus adaptée. Dès lors, avant de faire quoi que ce soit, je veux nettoyer un peu les données collées. De nombreuses fonctions ont été réparties sur plusieurs lignes dans lesquelles elles ont un / ou un _ dans le nom. Avoir des données de qualité pour notre point de départ va nous faciliter la vie par la suite.
Je vais utiliser la fonction Rechercher et Remplacer pour rechercher _\r\n
, et le remplacer par _
. Le mode de recherche étendu trouvera les noms où le _
divise la fonction en deux lignes, puis le remplacera par un simple _
. Cliquez sur Remplacer tout pour effectuer tous les changements en une seule fois.
Faites la même chose pour /\r\n
, en le remplacement avec uniquement /
.
La fiche technique comporte également de nombreuses colonnes contenant le mot "DISABLED". Je vais donc rechercher et remplacer "DISABLED" par un espace à la fin, puis remplacer ce mot par rien.
Passons maintenant aux expressions régulières pour trier ce fouillis de lettres et de chiffres en un tableau de numéros de broches et de descriptions. Nous avons la chance d'avoir le paquet qui nous intéresse dans la première colonne du tableau des broches, ce qui rend l'expression régulière un peu plus facile.
Je vais utiliser la page de test des expressions régulières sur RegexStorm pour traiter la liste des broches. Vous pouvez également consulter leur Regular Expression Reference si vous avez besoin de réviser votre syntaxe.
Avant de faire correspondre les données, il est préférable d'avoir tous les éléments de description des broches sur une seule ligne. Actuellement, ils sont séparés en plusieurs lignes. Nous pouvons utiliser un modèle simple de RegexStorm pour arranger le texte avec lequel nous travaillons.
Je vais utiliser le modèle \r\n(\D)
pour trouver toutes les nouvelles lignes qui ne sont pas suivies d'un chiffre (\D
est la séquence regex pour 'pas un chiffre'). Le "pas un chiffre" qui correspond doit être placé dans un groupe, ce qui est fait par le biais des parenthèses. De cette façon, nous pouvons remplacer ce qui correspond par ce seul caractère. Notre remplacement est donc simplement $1
, car $1
spécifie le premier groupe correspondant.
Après avoir cliqué sur remplacer, l'onglet contextuel contient les données d'entrée fixes. Nous pouvons les copier de l'onglet contextuel dans l'entrée pour effectuer d'autres travaux.
Mais nous n'avons pas encore fini. Il y a beaucoup (127) d'endroits où le nom de la broche, la fonction par défaut et la fonction ALT0 sont tous identiques. Nous ne voulons pas créer une broche 5 VDD VDD VDD, n'est-ce pas ? La broche 5 étant appelée VDD suffit.
Nous pouvons également utiliser une expression régulière pour nettoyer ces noms en double, en utilisant le motif :\b([A-Z\d/_]{3,})\s*\1\s*\1? *
Elle trouvera une limite de mot avec le \b, puis fera correspondre un groupe de trois lettres majuscules ou plus, des chiffres (\d
), une barre oblique ou des caractères de soulignement avec ([A-Z\d/_]
). Ensuite, elle recherche un nombre facultatif de caractères d'espacement avec \s* suivi du même groupe que le premier (\1
), un autre espace facultatif, et enfin, facultativement (le ?) le premier groupe à nouveau suivi d'un nombre quelconque d'espaces. De cette façon, il ne repère pas les broches répétées comme EE EE, mais repère 2 ou 3 broches identiques à la suite, comme VDD VDD VDD.
Nous pouvons ensuite le remplacer par ‘$1
‘, comme la dernière fois, mais avec un espace après le $1
. Enfin, nous pouvons copier ce texte dans le champ de saisie.
Modèle de recherche
Nous cherchons un modèle qui trouvera ceci :115 C7 C6 82 PTC10 ADC1_SE6b
ADC1_SE6b
PTC10 I2C1_SCL FTM3_CH6 I2S0_RX_FS
FB_AD5
Ou
89 F10 D11 — PTB8 PTB8 UART3_RTS_b
FB_AD21
La principale différence entre les deux, en ce qui nous concerne, est le caractère ‘—’ présent là où le boîtier ne possède pas la broche.
Mon expression de correspondante est :
(?:(?<Pin>\d{1,3})\s+(?:[A-Z\d—]{1,2}\s+){2}(?:[\d—]{1,3}\s+)
)
Cela correspond bien à la vue du tableau. J'ai maintenant un tableau pour les broches ainsi qu’une correspondance de la section qui reprend les numéros des broches en provenance des données de la fiche technique. Cela signifie que tout le reste sera la description.
J'utilise les expressions régulières depuis que j'ai commencé à programmer en PERL, il y a environ 20 ans lorsque j’étais adolescent. Je suis donc relativement à l’aise avec celles-ci ! Décomposons cette première correspondance et expliquons-la au cas où vous ne connaîtriez pas les expressions régulières ou que vous auriez besoin d'un rafraîchissement.
(?:\b(?<Pin>\d{1,3})\s+(?:[A-Z\d—]{1,3}\s+){2}(?:[\d—]{1,3}\s+))
(?:)
signifie qu'il s'agit d'un groupe non capturant. Cela me permet de tout regrouper, sans que cela ne se retrouve dans la vue Tableau sur RegexStorm. Regrouper les choses entre elles est assez important pour obtenir ce que nous voulons !
\b
est une limite de mot, par exemple une nouvelle ligne, un espace, une tabulation, etc. Cela empêche quelque chose comme :LPTMR0_ALT1
74 L12 J11 52
fde faire correspondre le 1 à la fin de ALT1, ce qui empêche de faire correspondre les 3 premiers désignateurs.
(?<Pin>\d{1,3})
capture un groupe nommé Pin par le biais du caractère ?<Pin> Tous les moteurs d'expression régulière ne prennent pas en charge les groupes nommés, ce qui est l'une des raisons pour lesquelles j'utilise RegexStorm. Ce groupe fera correspondre entre 1 et 3 ({1,3})
chiffres (\d). Notre numéro de broche aura toujours entre 1 et 3 chiffres (1 à 144), c'est donc tout ce que nous devons rechercher.
\s+
correspond à tout groupe d'un ou plusieurs caractères d'espacement consécutifs. Ainsi, si les données que nous avons copiées de la fiche technique comportent un espace, une tabulation ou un saut de ligne entre les broches, elles seront toutes prises en compte, même s'il y a plusieurs espaces ou tabulations.
Ensuite, nous voulons faire correspondre les deux désignateurs de broches du boîtier BGA. (?:[A-Z\d—]{1,3}\s+){2}
sert à cela. Le quantificateur à la fin ({2})
dit que nous en voulons deux du groupe non capturé. Ce groupe trouve de un à trois éléments consécutifs de n’importe quoi entre crochets. Les crochets dans les expressions régulières signifient une correspondance de "tout ce qui se trouve ici". Dans notre cas, nous avons toutes les lettres majuscules (A-Z), tous les chiffres (\d), et le tiret utilisé dans la fiche technique pour indiquer que la fonction n'est pas disponible. Enfin, nous avons un ou plusieurs espaces, comme après la correspondance de Pin.
(?:[\d—]{1,3}\s+)
correspond à notre numéro de broche final. Il s'agit essentiellement de la même chose que pour la correspondance de Pin, mais nous devons également prendre en compte le tiret, au cas où cette fonctionnalité ne serait pas disponible.
Si vous n'avez pas d'expérience avec les expressions régulières, ne vous inquiétez pas. Elles cessent de vous causer des maux de tête après quelques années d’expériences.
Trouver la description de la broche
Pour trouver la correspondance de la description, nous pouvons ajouter à la syntaxe actuelle certains caractères pour que tout soit dans un seul groupe. Mon modèle de recherche est maintenant celui-ci :
(?:\b(?<Pin>\d{1,3})\s+(?:[A-Z\d—]{1,3}\s+){2}(?:[\d—]{1,3}\s+)(?<Desc>[\w\d_/\s]+?\b(?=\d{1,3}\b)))
Les caractères ajoutés pour correspondre uniquement à la partie description sont :(?<Desc>[\w\d_/\s]+?\b(?=\d{1,3}\b))
Enfin, nous avons un tableau contenant 144 correspondances avec des données relativement claires. Maintenant, je peux copier et coller ces données dans ma feuille de calcul Google.
De retour dans Altium Designer, nous pouvons maintenant introduire des données dans le réseau de broches que nous avons créé. Sélectionnez toutes les broches (mais pas le rectangle) dans la fenêtre des symboles schématiques.
Ouvrez le menu Liste SCHLIB en cliquant sur le bouton Panels dans la fenêtre inférieure droite d'Altium.
Maintenant, vous verrez toutes les broches sélectionnées dans le symbole schématique.
Si vous cliquez avec le bouton droit de la souris n'importe où dans la grille, vous pouvez choisir de passer en mode édition.
Maintenant, vous pouvez cliquer sur la grille et appuyer sur Ctrl-A ou faire un clic droit et choisir Sélectionner tout.
Ensuite, copiez et collez le tout dans votre feuille de calcul, un peu plus bas que le tableau que vous avez collé depuis RegexStorm
Maintenant que nous avons les deux tableaux dans la feuille de calcul, vous pouvez copier la colonne avec les numéros de broches des données que vous avez copiées de RegexStorm. Collez-les sur les numéros de broches d'Altium Designer. Ensuite, faites de même pour la colonne avec les descriptions. Il se trouve que ce symbole contient toutes les broches du boîtier sur lequel nous travaillons dans l'ordre, mais ce ne sera pas souvent le cas. Il est plus facile de simplement remplacer les deux colonnes pour ne pas se retrouver avec des descriptions et des noms de broches qui ne correspondent pas.
Avant de réintégrer ces données dans Altium Designer®, je veux corriger rapidement la colonne des noms en remplaçant tous les espaces par / afin de respecter la norme de ma bibliothèque. Pour ce faire, sélectionnez la colonne entière dans le tableau d'Altium Designer, puis ouvrez l'outil de recherche et de remplacement pour rechercher un espace et le remplacer par la barre oblique. Cliquez sur "Remplacer tout" après avoir vérifié que la recherche est définie sur la plage spécifique des cellules que vous avez sélectionnées.
Maintenant, nous avons un tableau avec tous les noms de broches et les désignateurs prêts à être réintégrés dans Altium Designer. Il suffit de sélectionner l'ensemble du tableau, puis de le coller dans votre tableau SCHLIB List. Cela écrasera tout ce qui se trouve dans le tableau, ce qui vous donnera un énorme désordre dans votre éditeur de symboles schématiques !
Le plus important est que nous disposons des données dans Altium Designer. Cette façon de faire permet de limiter les risques d’erreur et le temps de travail plutôt que d'essayer de copier tous les détails de la fiche technique, broche par broche.
J'aime avoir toutes les broches regroupées autour du symbole schématique. Cela me permet de pouvoir décider si je veux garder le symbole comme une seule pièce ou si je dois créer un symbole à plusieurs pièces. Pour cette pièce à 144 broches, il faudra créer un symbole à plusieurs parties. Je vais tout de même tout regrouper pour obtenir des groupes de broches à copier et coller dans chaque nouvelle pièce.
Nous pouvons utiliser le panneau Filtre SCHLIB pour sélectionner un groupe de broches à la fois. Il n'y a pas d'outil pour organiser rapidement les broches ensemble. Cependant, avec toutes les broches sélectionnées, il est assez facile de les faire glisser vers une zone libre de la feuille schématique et de les trier manuellement.
Pour trouver toutes les broches telles que VSS ou VSSA, je peux utiliser le filtre : Name LIKE 'VS*' qui effectuera une correspondance avec un caractère générique pour sélectionner toutes ces broches.
Vous pouvez répéter cette opération avec des filtres tels que Name LIKE 'VD*' pour saisir les autres broches d'alimentation. Les broches de port de ce composant commencent par PTA/PTB/PTC etc., vous pouvez donc utiliser le même style de filtre pour trouver toutes les broches du port A et ainsi de suite.
Après un peu d’arrangement rapide, j'ai maintenant regroupé toutes mes broches.
Je veux que toutes les broches ADC, DAC, tension, masse, USB et cristal soient sur la partie principale du composant. Je les ai donc déplacées vers le rectangle que j'ai créé lors de la première étape de ce processus, puis j'ai redimensionné le rectangle pour qu'il s'adapte à toutes les broches. Je place toujours mes broches VDD en haut à gauche et mes broches VSS/GND en bas à gauche. Je regroupe aussi les broches par fonction, plutôt que par leur position sur le symbole. Je pense plus intéressant d'obtenir un symbole plus facile à utiliser dans un schéma, que d'essayer de copier la disposition physique.
Maintenant que la pièce principale est terminée, nous devons ajouter des sous-parties au symbole schématique. Vous pouvez ajouter une nouvelle pièce au symbole schématique en allant dans Outils -> Nouvelle pièce.
La nouvelle pièce apparaîtra dans le panneau Bibliothèque de SCH, sous votre composant principal.
Une fois que vous avez les sous-parties, il suffit de créer un rectangle dans chaque sous-partie. Ensuite, coupez et collez les broches de la partie principale. Le fait de diviser un énorme microcontrôleur en parties logiques permettra à l'ingénieur qui utilise le symbole de créer un schéma plus propre et plus net que s'il avait toute sa feuille dominée par un seul symbole schématique géant.
Le symbole créé ci-dessus pourrait être parfait pour votre bibliothèque, mais je préfère aller plus loin. J'ai rassemblé quelques expressions régulières supplémentaires auxquelles vous pouvez vous référer si vous souhaitez nettoyer davantage les noms, ou ajouter des barres actives basses aux fonctions qui commencent par n_ ou se terminent par _b, comme la partie sur laquelle nous avons travaillé.
En ayant ces modèles à portée de main, vous pouvez obtenir des noms de symboles de meilleure qualité en n'effectuant qu'une ou deux minutes de travail supplémentaires. En outre, vous pouvez les utiliser comme base de vos propres modèles de nettoyage.
J'ai supprimé manuellement les fonctions dupliquées sur les broches dans les captures d'écran ci-dessus, mais vous pouvez le faire automatiquement si vous trouvez que vous en avez trop pour faire le travail à la main.
Tout d'abord, supprimez les doublons de la fonction initiale, comme ‘PTA12’
. Utilisez l'expression régulière :^([A-Z\d/_]{3,})/(?<inbetween>(?:(?:[^/])+/){1,5})\1/?
Rendez-vous sur Options -> Multiligne. Cela traitera chaque ligne du champ de saisie comme une entité à part entière pour que le caractère ^ corresponde au début de la ligne.
Remplacez les correspondances par :$1/${inbetween}
Ensuite, remplacez toutes les fonctions après la première fonction par l'expression régulière :/([A-Z\d/_]{3,})/(?<inbetween>(?:(?:[^/])+/){1,5})\1/?
Vous pouvez à nouveau désactiver l'option Multiligne, mais la laisser active n'empêchera pas l'expression de fonctionner. Encore une fois, remplacez les correspondances par :/$1/${inbetween}
Continuez à remplacer les correspondances jusqu'à ce que vous n'en trouviez plus. Pour cette pièce, j'ai dû l'exécuter 3 fois pour supprimer tous les doublons.
Il existe deux expressions pour remplacer les doublons, car l'expression doit savoir où commencer à chercher une correspondance. Vous ne voulez pas remplacer /RMII0_RXER/MII0_RXER/ par /RMII0_RXER/, car la deuxième fonction est identique à la première, à l'exception du R. En ayant deux fonctions, nous pouvons utiliser le / comme caractère de départ, ou comme début de ligne.
Ajouter des barres actives basses au nom d'une fonction est plus conforme aux normes d'Altium Designer que d'avoir n_ ou _b dans la fonction. Vous pouvez le faire en ajoutant un \ après chaque caractère. Une expression régulière peut les trouver pour vous avec des groupes de recherche.
Pour les fonctions se terminant par _b, utilisez l'expression :([^/](?=[A-Z\d_]*_b[/\r]))
Ensuite, remplacez toutes les correspondances par : $1\
Puis, utilisez l'expression :\_b
Ensuite, remplacez toutes les correspondances par : \
Pour les fonctions commençant par n_, vous pouvez utiliser l'expression :((?<=/n_[A-Z\d_]*)[^/])
Remplacez ensuite toutes les correspondances par : $1\
Après cela, vous devrez faire une recherche en utilisant l'expression :n_(\w)
Remplacez les correspondances par : $1
Pour supprimer le n_ du début du nom de la fonction.
Les expressions régulières sont un outil très puissant si vous créez des symboles dans Altium Designer à partir de fiches produit. Vous pouvez assez rapidement transformer des copier-coller incompréhensibles d'un PDF en une feuille de calcul utilisable, grâce à seulement quelques expressions. Les nouveaux utilisateurs me disent que la syntaxe semble extrêmement intimidante, car à première vue, elle peut sembler n'être qu'un enchevêtrement de symboles et de chiffres. En réalité, il s'agit d'une syntaxe très bien définie qui est assez facile à apprendre. Après quelques heures de nettoyage de textes copiés à partir de fiche produit dans des tableaux de broches, vous vous sentirez à l'aise avec la syntaxe.
Cette pièce spécifique a été choisie au hasard pour créer cet article. Bien que les données ont eu besoin d'être nettoyées - ce qui peut prendre plus de temps que la saisie des données dans Altium Designer - j'espère vous avoir montré de nouvelles façons de travailler avec les symboles schématiques.
Si vous avez des suggestions pour créer des symboles schématiques plus rapidement, laissez un commentaire ci-dessous avec vos suggestions afin que d'autres puissent profiter de votre expérience.
Consultez d'autres guides Altium ou lisez les articles de Mark Harris, expert du secteur. Vous souhaitez en savoir plus sur la manière dont Altium peut vous aider dans votre prochaine conception de PCB ? Parlez-en à un expert d'Altium.