Dans un contexte de développement d'un pare-feu matériel, prise en charge de toutes les étapes de
développement du cycle en V d'un filtre de trames Ethernet en fonction du contenu des headers
suivant la norme DO254 :
• Enregistrement des rules en flash interne du FPGA (NVM) via un bus I2C par le CPU
• Chargement des rules de la flash interne vers la RAM interne du FPGA pour le filtrage
• Extraction des ID des headers de trames entrantes
• Comparaison avec le contenu de la RAM interne pour décider de la transmission ou de la
réjection de cette trame
• Sauvegarde des headers des trames rejetées pour leur relecture via un autre bus I2C
• Mise en place d'une interface MDIO pour la lecture de registres internes du FPGA
Dans un contexte de développement de capteurs inertiels :
A partir de spécifications, développement VHDL de blocs permettant d’extraire des données
de capteurs inertiels via des liaisons séries UART ET SPI
Traitement de signal : développement de filtres passe-bas
Validation des blocs développées sur carte par acquisition des données et leur traitement par
script python
Dans un contexte de de prototypage ASIC, vérification d’IP dans le domaine de la vidéo :
Développement logiciel de pilotage des IP VHDL sur une plateforme hardware
Participation à la définition du plan de vérification des fonctionnalités des différents soussystèmes (tests fonctionnels, tests aux limites, corner cases, benchmarks)
Implémentation plan de vérification sur l’environnement de prototypage
Ecriture software de vérification
Mise en place script automatisation des tests
Participation au dimensionnement des différents paramètres (taille des mémoires, etc..) des
IP RISC-V en faisant le prototypage et le benchmark de sous-systèmes de traitement de
données
Debug du software et des IP VHDL en collaboration avec les équipes SW et VHDL
Dans un contexte de développement d'un système de déflexion de faisceau électronique (canon à électron) architecturé autour d’un FPGA ARTIX-7 avec un microblaze embarqué pour la réalisation d’une imprimante 3D métallique:
développement d’une API C/C++ pour le pilotage du système de commande du canon.
développement du firmware C/C++ exécuté par le microblaze (lecture, écriture, régulation de tensions et courants, etc.)
développement d’une IHM en C++ (Gtkmm) pour le pilotage du canon, puis migration vers Qt.
conception d’un pseudo - Gcode pour dessiner des motifs par déflexion du faisceau
étude du code Scala et de la library spinalhdl pour la correction des bugs, rédaction de la documentation.
développement VHDL de modules de pilotage de périphériques pour diverses applications : pilotage moteur pas à pas et alimentations par SPI, I2C, etc...
exploitation des électrons retro-diffusés et des rayon X pour de l’imagerie, utilisée pour faire de la détection de plan de joint des pièces a souder et de l’autocalibration
Débogue, puis redesign de deux versions d’un système de duplication/filtrage de trames Ethernet (64 – 1518 octets).
C’est un système à 4 ports Ethernet, dont 3 ports opérationnels (NET1, NET2, HOST) et 1 port de supervision (SUP).
Filtrage :
Les trames entrantes sur NET1 et NET2 sont filtrées quand elles sont redondantes. Une trame sur NET1 et une autre sur NET2 sont considérées redondantes si elles sont identiques et décalées de moins de 10 ms. La première trame est acheminée vers le port HOST et la deuxième est supprimée.
Duplication
Les trames entrantes sur HOST sont dupliquées et acheminées vers NET1 et NET2.
Le port SUP sert de port de débogage et de supervision pour visualiser les registres internes du FPGA via une connexion SSH avec le firmware interne du FPGA.
Débogue de la Version 1 du système a 100 Mo/s de débit maximum sur Virtex4 avec PowerPC embarqué dans un contexte a fortes contraintes (impossibilité d’inclure des outils de debug tel que Chipscope a cause du taux de remplissage élevé du FPGA, relecture difficile du code VHDL, difficultés à router le FPGA au moindre changement du code).
Etude de la documentation technique du système de duplication/filtrage
Mise en place de test bench
Reproduction des bugs avec Spirent (trames corrompues ou perdues en filtrage suivant les tests)
Utilisation d’un port de supervision pour la lecture des registres et compteurs du FPGA par connexion SSH avec le PowerPC
Redesign des modules filtrage et Qos de la Version 2 du système a 1 Go/s maximum sur Zynq avec ARM embarqué.
Spécification du module de filtrage
Support d’activités de design/debug/implémentation d’un multiplexeur vidéo au cœur d’un FPGA ultrascale Xilinx
Rédaction de la spécification détaillée du FPGA et des contraintes d’implémentation
Garant de la traçabilité complète des exigences : en amont vers la spécification de la carte, en aval de la spécification du fpga jusqu’au code
Conception du FPGA : codage VHDL/VERILOG, intégration d’IPs, gestion du top-level.
Support à la définition et à la mise en place de la stratégie de debug des différentes fonctions (simulation et/ou portage sur carte d’évaluation)
Implémentation du FPGA (définition des contraintes et du script TCL de commande du flot) et de l’analyse des résultats (STA)
Reporting hebdomadaire
Projet design système SOC de sauvegarde/dépouillement de données d'acquisition dans un cadre de contrôle non destructif dans des cartes SDXC et codage du software en C pour le pilotage de l'ensemble par une plate-forme ARM:
Design firmware en VHDL et Verilog pour la sauvegarde de données provenant de sondes dans un contexte de contrôle non destructif. Le système est architecturée en étoile autour d'une carte CPU reliée au PC par USB, de 5 cartes SYNCHRO reliées a cette dernière par un lien LVDS, 10 cartes ER (émission/réception) )reliées a chaque carte SYNCHRO par un lien LVDS et 2 cartes SDXC reliées a chaque carte ER.
Notons aussi un bus lent qui relie la carte CPU a toutes les autres cartes SYNCHRO et ER pour la programmation et 2 sondes reliées a chaque carte ER.
Les cartes SYNCHRO sont architecturées autour d'un ZYNQ (plate-forme ARM) et comprennent en outre une DDR de 1Go qui sert de buffer de données en sauvegarde et en dépouillement.
Les cartes ER sont architecturées autour d'un FPGA Kintex7.
Integration contrôleur SDXC dans un Kintex7 (VHDL et Verilog)
Design d'un firmware encapsulant le contrôleur (VHDL)
Codage test bench pour des opérations de lecture/écriture dans un modèle de carte SD (VHDL)
Etude protocole SD
Codage DLL de test en C pour le pilotage du système par le CPU a partir du PC
Design (VHDL et Verilog) sous Vivado d'un système dans la plate-forme ARM comprenant :
Une DMA qui transfert les données entre la DDR de la plate-forme ARM des cartes SYNCHRO vers les cartes mémoires SDXC
Interface AXI/LVDS pour l'envoie des commandes vers les cartes mémoires SDXC (étude protocole AMBA)
Test de lecture/écriture des mémoires SDXC par le processeur
Mesure des vitesses de lecture/écriture des mémoires SDXC
Mise en place interruptions pour l'optimisation de la vitesse d'écriture dans les mémoires
Etudes de la FAT et formatage des mémoires SDXC
Customisation d'un IP SPI interface PowerPC440 – lignes à retard dans un FPGA Virtex 5 servant au pilotage des horloges distribuées au système uTCA.
Customisation de l'IP avec 12 périphériques esclaves
Codage d'un programme en C pour le pilotage de l'IP via le microprocesseur PowerPC440
Implémentation du design sur une carte de développement AVNET et validation du design
Projet design module Multi-Gigabit Transceiver (MGT) sans flow control contenu dans le FPGA Virtex 5:
Etude et design d’un firmware autour du MGT pour une communication GTX 1 lane ,1.25 Gbits/s et 2.5 Gbits/s avec horloge de référence 125 Mhz, interface streaming et data flow mode duplex.
Etude du port GTX et du protocole Aurora 8b/10
Spécification du module MGT (1 fifo RX, 1 fifo TX et module GTX)
Conception du module MGT et rédaction de la documentation
Codage VHDL du module MGT sur ISE 12.4 et synplify
Validation temporelle par un test bench du module MGT avec Modelsim
Conception d’un environnement de validation sur le kit ML507 (interfaçage contrôleur mémoire EMC-MCH, bus PLB_V46, GPIO et PowerPC440)
Validation en mode loopback, transmission cuivre et fibre optique
Projet design module Multi-Gigabit Transceiver (MGT) avec flow control contenu dans le FPGA Virtex 5:
Etude et design d’un firmware autour du MGT pour une communication GTX 1 lane, 1.25 Gbits/s et 2.5 Gbits/s avec horloge de référence 125 Mhz, interface framing, data flow mode duplex et user flow control (UFC).
Etude du port GTX et du protocole Aurora 8b/10
Spécification du module MGT (2 fifos RX, 2 fifos TX et module GTX)
Conception du module MGT et rédaction de la documentation
Codage VHDL du module MGT sur ISE et synplify
Validation temporelle par un test bench du module MGT avec Modelsim
Conception d’un environnement de validation sur le kit ML507 (interfaçage contrôleur mémoire EMC-MCH, bus PLB_V46, GPIO et PowerPC440)
Validation en mode loopback, transmission cuivre et fibre optique
Validation en mode normal entre 2 kits de développement ML507 par interruption du processeur en mode flow contrôle et liaison fibre optique 60 m.
Projet design interfaces:
Design d’interfaces pour l’accès du contrôleur mémoire EMC-MCH à différents périphériques :
Interface EMC-MCH / fifo en mode burst double accès.
Interface EMC-MCH / DP BRAM par le port B.
Projet Vérification FPGA DO254:
Test d'intégration et qualification de FPGAs Actel dans le domaine de l'aéronautique suivant la norme DO254 niveau de criticité B.
Description du plan de test du module (VTP).
Réalisation scripts de compilation MS-DOS, C-Shell.
Conception du test bench en VHDL.
Simulation du module sous Modelsim.
Analyse des défaillances.
Analyse de couverture de code.
Comparaison du code VHDL des modules avec la documentation de conception détaillée (DDD).
Analyse de traçabilité des exigences.
Rédaction documentation des résultats des tests (VTR).
Iroc technologie est spécialisée dans les soft errors de composants. L'objectif principal de la mission consiste à mettre œuvre le dispositif de test de mémoires RAM en lecture/écriture sous radiations alpha, gamma ou X.
L'intervention se situe principalement a concevoir l’interfaçage CPU/mémoires sur FPGA Xilinx Virtex 5 ainsi que d'adapter l'interface de communication PC/CPU en fonction des caractéristiques des mémoires sous test.
De plus, j'ai eu à prendre l'ensemble du cycle de développement en V d'un bloc IP d'un outil DFT pour les tests sous radiation de mémoires de type CAM ternaire. Il s'agissait de concevoir un bloc générique sur FPGA Xilinx Virtex 5 qui permette les tests de CAM binaire ou ternaire par un simple paramétrage de l'outil.
• Vérification mémoires RAM
Étude architecture mémoire et modes d’accès.
Spécification PCB de composants RAM a tester.
Développement interfaces CPU/mémoires en VHDL sur cible FPGA Xilinx, le tout forùmant une plateforme (interface logique, spécification générateur vecteur de test, FIFO et SRAM).
Debugging du design sur la plate-forme CPU/FPGA (analyseur logique Tektronix), utilisation communication GPIB.
Debugging de toutes les cartes a mémoire (vérification des pistes du PCB et de la fonctionnalité générale de chaque carte).
Utilisation protocole réseau TCP/IP avec développement d'applications spécifiques interface serveur/client (microprocesseur Z80/PC) en C/C++dans une application graphique de communication.
Développement environnement de validation automatique et d'analyse des résultats (scripts shell bash).
• Design FPGA : les phases d'étude, de développement et l'intégration de bloc d'IP au niveau RTL
Étude de l’interfaçage CPU/CAM
Analyse des solutions devant être mises en œuvre pour minimiser les modifications de l'architecture du circuit sur FPGA Virtex 5.
Conception d'un bloc qui permet l’interfaçage de CAM ternaire par une solution de bits de masque des entrées.
Codage niveau RTL du bloc.
Mise en place d'un plan de test.
Simulation sous Modelsim.
Intégration avec l'ensemble préexistant par modification de code.
Test de l'ensemble de l'outil avec une CAM non réalisée.