Il fait tourner tout ou partie d’un futur SoC sur un ou plusieurs FPGA pour le tester avant sa fabrication.
Répartir un gros design sur un ou plusieurs FPGA
Faire fonctionner les horloges, resets, mémoires et interfaces
Aider les équipes logicielles à démarrer le BIOS, Linux ou les drivers
Multi-FPGA · HAPS · SDC · C/C++/Python
Architecte FPGA / SoC
C’est généralement un poste senior. Il définit l’organisation du système et la répartition entre matériel et logiciel.
Choisir les blocs, les bus, les mémoires et les interfaces
Comparer les solutions selon la vitesse, les ressources, le coût et la consommation
Faire le lien entre les équipes FPGA, carte, logiciel et système
Architecture système · AXI · mémoire · interfaces · HW/SW
Ingénieur d'application FPGA / EDA
Il accompagne des clients ou d’autres équipes dans l’utilisation d’un composant, d’un outil ou d’une plateforme FPGA.
Créer des exemples, des démonstrations et de petits prototypes
Aider à résoudre les problèmes d’intégration ou d’outils
Expliquer les solutions et faire remonter les besoins aux équipes produit
FPGA/EDA · debug · démonstration · communication · Tcl/Python
Conseils
Préparer son entretien
Tu n’as pas besoin de réciter un cours. Explique tes choix et montre comment tu avances face à un problème.
01
Sache parler de tes projets
Choisis deux projets que tu connais bien. Explique le besoin, ce que tu as fait, le problème le plus difficile et comment tu as vérifié que ça fonctionnait.
02
Explique ce que tu fais
Si tu ne connais pas tout de suite la réponse, ce n’est pas grave. Dis ce que tu comprends, pose tes hypothèses et avance étape par étape.
03
Donne des chiffres quand tu peux
Une fréquence, un nombre de cycles ou une quantité de LUT parle mieux qu’une réponse vague. Même une estimation montre que tu sais relier le code au matériel.
04
Dis comment tu testerais
Pense au cas normal, aux valeurs limites, au reset et aux erreurs possibles. Le but est de montrer que tu ne t’arrêtes pas au code.
Questions / réponses
Questions techniques
Réponds d’abord avec tes mots, puis ouvre la réponse pour vérifier que tu as couvert les points principaux.
25 / 25 questions
Flow FPGAQuelle différence entre la synthèse et l’implémentation ?
La synthèse transforme le code VHDL ou Verilog en une netlist composée de ressources logiques. L’implémentation place ensuite ces ressources dans le FPGA, les relie et vérifie le timing. C’est après ces étapes que l’outil peut générer le bitstream.
LogiqueQuelle différence entre une bascule et un latch ?
Une bascule enregistre sa donnée sur un front d’horloge. Un latch reste transparent tant que son signal d’activation est actif. Dans un design FPGA synchrone, on utilise surtout des bascules et on évite généralement les latchs involontaires.
VHDLQue fait une boucle for dans un code synthétisable ?
La synthèse déroule la boucle et répète le matériel demandé. Ce n’est pas une boucle exécutée plusieurs fois par un processeur. Une boucle de huit itérations peut donc créer huit blocs de logique en parallèle, selon ce qu’elle contient.
SynthèseQuelle différence entre inférence et instanciation ?
Avec l’inférence, tu écris du RTL et tu laisses l’outil reconnaître la ressource à utiliser, par exemple une Block RAM. Avec l’instanciation, tu appelles directement une primitive du fabricant. L’inférence est souvent plus portable ; l’instanciation donne plus de contrôle sur une ressource précise.
CDCQu’est-ce que la métastabilité et comment limiter le risque ?
Une bascule peut devenir métastable si son entrée change trop près du front d’horloge. Pour un signal de contrôle sur un bit, on utilise souvent deux bascules en série dans le domaine d’arrivée. Pour un bus ou un flux de données, il faut plutôt un handshake ou une FIFO asynchrone.
MémoireQuelle différence entre une FIFO et une Block RAM ?
Une Block RAM est une mémoire physique présente dans le FPGA. Une FIFO est une façon d’organiser les données : la première écrite est la première lue. Une grande FIFO peut justement utiliser une Block RAM pour stocker ses données.
MémoireQuelle différence entre SRAM et DRAM ?
Les deux sont volatiles. La DRAM doit être rafraîchie régulièrement, mais elle offre beaucoup de capacité pour un coût plus faible. La SRAM est plus simple et rapide à accéder, mais elle prend plus de place. On utilise souvent la DRAM externe pour de gros volumes de données.
HorlogeÀ quoi sert une PLL dans un FPGA ?
Une PLL permet de créer une ou plusieurs horloges à partir d’une horloge d’entrée. Elle peut multiplier ou diviser la fréquence et régler la phase. Il faut ensuite déclarer correctement ces horloges dans les contraintes de timing.
TimingQue sont les temps de setup et de hold ?
L’entrée d’une bascule doit être stable un peu avant le front d’horloge : c’est le setup. Elle doit aussi rester stable un peu après : c’est le hold. Si l’un de ces temps n’est pas respecté, la bascule peut capturer une mauvaise valeur ou devenir métastable.
FSMQuelle différence entre une machine de Moore et une machine de Mealy ?
Dans une machine de Moore, les sorties dépendent uniquement de l’état courant. Dans une machine de Mealy, elles dépendent de l’état courant et des entrées. Une Mealy peut réagir plus vite, mais ses sorties demandent parfois plus d’attention.
RessourcesQu’est-ce qu’une LUT et que trouve-t-on d’autre dans un FPGA ?
Une LUT est une petite table de vérité capable de réaliser une fonction logique. Un FPGA contient aussi des bascules, des mémoires internes, des blocs DSP, des PLL, des entrées-sorties et parfois des transceivers rapides ou des processeurs intégrés.
ArchitecturePourquoi choisir un FPGA plutôt qu’un processeur ou un ASIC ?
Un FPGA est intéressant pour le parallélisme, les temps de réponse réguliers, les débits élevés et la possibilité de reprogrammer. Un processeur est plus simple pour du logiciel qui change souvent. Un ASIC peut être plus rapide et moins gourmand en grande série, mais il coûte beaucoup plus cher à concevoir.
Liaisons rapidesÀ quoi sert un SERDES ?
Un SERDES convertit des données parallèles en un flux série rapide, puis fait l’opération inverse à la réception. On le retrouve dans des interfaces comme PCI Express, Ethernet ou SATA. À ces vitesses, le choix des horloges, du PCB et des contraintes devient très important.
CalculÀ quoi servent les blocs DSP du FPGA ?
Ce sont des blocs matériels prévus pour faire rapidement des multiplications, additions et accumulations. Ils sont très utilisés dans les filtres, le traitement d’image et les calculs en virgule fixe, tout en évitant de consommer trop de LUT.
VHDLDans un process VHDL, quelle différence entre un signal et une variable ?
Une variable prend sa nouvelle valeur tout de suite dans le process. Un signal est mis à jour après la suspension du process, lors d’un cycle delta. C’est important quand plusieurs affectations se suivent : une lecture de signal récupère encore son ancienne valeur. Le matériel obtenu dépend toutefois de l’ensemble du code, pas seulement de l’opérateur utilisé.
Logique combinatoirePourquoi un process combinatoire incomplet peut-il créer un latch ?
Si une sortie n’est pas affectée dans tous les cas possibles, elle doit garder sa valeur précédente. L’outil ajoute alors un élément de mémoire, donc un latch. Pour l’éviter, on donne une valeur par défaut à chaque sortie et on couvre toutes les branches des if et case. Avec VHDL 2008, process(all) évite aussi d’oublier un signal dans la liste de sensibilité.
ResetPourquoi faut-il faire attention au relâchement d’un reset asynchrone ?
Le reset peut être activé immédiatement, mais s’il est relâché près d’un front d’horloge, certaines bascules peuvent repartir avant les autres ou devenir métastables. Une méthode courante consiste à l’activer de façon asynchrone et à le relâcher de façon synchrone. Il faut un synchroniseur séparé pour chaque domaine d’horloge.
TimingQue signifie un slack négatif dans le rapport de timing ?
Cela signifie qu’un chemin ne respecte pas la marge demandée. Pour le setup, la donnée arrive trop tard ; pour le hold, elle change trop tôt. Avant de modifier le RTL, il faut vérifier que les horloges et les contraintes sont correctes, puis regarder si le problème vient de trop de logique, du routage, du fanout ou d’un mauvais passage entre horloges.
PipelineQu’est-ce qu’on gagne et qu’est-ce qu’on perd en ajoutant un étage de pipeline ?
Le registre coupe un long chemin combinatoire en chemins plus courts. Le design peut souvent monter plus haut en fréquence et accepter davantage de données à la suite. En échange, le résultat arrive un ou plusieurs cycles plus tard, des registres sont ajoutés et les signaux de contrôle doivent rester alignés avec les données.
CDCComment faire passer une impulsion courte vers un domaine d’horloge plus lent ?
Deux bascules de synchronisation ne suffisent pas toujours : le domaine lent peut ne jamais voir une impulsion trop courte. On peut l’étirer, utiliser un bit qui change d’état à chaque événement, ou mettre en place un handshake. Le domaine d’arrivée recrée ensuite une impulsion d’un cycle et, si les événements sont rapprochés, un acquittement évite d’en perdre.
CalculCombien de bits faut-il prévoir pour le résultat d’une multiplication ?
Le produit de deux nombres de N et M bits peut demander jusqu’à N + M bits. Si on garde moins de bits, il faut décider lesquels supprimer et comment gérer le dépassement. En virgule fixe, il faut aussi suivre la position de la virgule et choisir clairement entre troncature, arrondi et saturation.
FIFO asynchronePourquoi utilise-t-on souvent un code Gray pour les pointeurs d’une FIFO asynchrone ?
Deux valeurs Gray qui se suivent ne changent que d’un bit. Quand le pointeur passe dans l’autre domaine d’horloge, cela réduit le risque de recevoir un mélange incohérent de plusieurs bits en transition. Les pointeurs doivent quand même être synchronisés, correctement contraints et comparés avec soin pour produire les indicateurs full et empty.
HardwareÀ quoi sert un condensateur de découplage et pourquoi le placer près de la broche ?
Il fournit localement une partie du courant demandé pendant une commutation rapide et limite la variation du rail. Une piste ou une boucle trop longue ajoute de l’inductance, donc le placement compte autant que la valeur. Je pars des recommandations du composant, puis je vérifie le rail près de la charge.
Entrées-sortiesComment vérifier que deux circuits peuvent être reliés directement ?
Je compare d’abord les tensions des deux côtés. La sortie basse maximale doit rester sous VIL et la sortie haute minimale au-dessus de VIH, avec les courants de charge prévus. Je vérifie aussi la tension de la banque FPGA, le standard d’entrée-sortie et le besoin éventuel d’une adaptation de niveau.
Mise sous tensionQue vérifies-tu avant et pendant la première mise sous tension d’une carte FPGA ?
Avant d’alimenter, j’inspecte le montage et je mesure les résistances entre rails et masse. Je démarre avec une limite de courant prudente, puis je contrôle dans l’ordre le courant, les rails, l’horloge, le reset, la configuration et JTAG. Si un rail est faux ou qu’un composant chauffe vite, je coupe et je cherche la cause.
Entretien blanc · Club
Un entretien blanc avec Jayson Dangremont
L’entretien comprend 45 minutes de questions adaptées au poste visé, puis 15 minutes pour reprendre tes réponses ensemble.
Jayson Dangremont
Ingénieur architecte SoC FPGA
45 min de questions et un exercice technique
15 min pour revoir ensemble tes réponses
Les questions tiennent compte de ton niveau
C’est un entraînement, pas un recrutement
1100 questions préparées : VHDL, FPGA, hardware, OSVVM, vérification, CDC et plus