Autogénération matérielle de solutions de correction d'erreurs
Contexte
Les codes correcteurs d’erreurs sont essentiels aux systèmes modernes de communication et de stockage, et son implémentation matérielle, en particulier le décodeur, constitue souvent le composant le plus gourmand en ressources des récepteurs. Bien que les outils de synthèse de haut niveau (HLS) puissent générer automatiquement du matériel à partir de descriptions de haut niveau, ils produisent souvent des conceptions moins optimisées que celles réalisées à la main.
L’autogénération matérielle spécifique au domaine s’est avérée une approche plus efficace pour produire des circuits performants et hautement optimisés.
Les travaux existants sur la génération de circuits pour la correction d’erreurs restent limités en portée : chacun ne prend en charge qu’une seule famille de codes (p. ex. les codes polaires ou les codes LDPC) et aucun n’intègre d’optimiseur d’exploration de l’espace de conception (DSE). Le développement d’un cadriciel ouvert de génération matérielle spécifique au domaine, couvrant plusieurs familles de codes correcteurs d’erreurs et s’intégrant à un DSE, constitue un défi de recherche ouvert et à fort impact.
Ce projet s’inscrit dans un programme de recherche Découverte du CRSNG dont l’objectif à long terme est de créer un écosystème ouvert pour l’exploration de l’espace de conception de solutions de correction d’erreurs, permettant le choix éclairé d’un code ainsi que de l’algorithme de décodage et de l’architecture matérielle, jusqu’à l’autogénération des circuits associés. De plus, ce programme implique des collaborations avec le prof. François Leduc-Primeau (Polytechnique Montréal), le prof. Camille Leroux (Bordeaux INP, France) et le prof. Stefan Weithoffer (IMT Atlantique, France). Selon l’orientation de la recherche et les intérêts de l’étudiante ou l'étudiant, des possibilités de codirection, de collaboration étroite ou de séjours de recherche à l’international peuvent être offertes.
Objectifs du projet
L’objectif principal de ce projet est d’étudier, de concevoir, et de développer des capacités d’autogénération matérielle spécifiques au domaine pour les décodeurs de codes correcteurs d’erreurs, intégrées au sein d’un cadriciel de DSE. Plus spécifiquement, le projet vise à :
- enrichir les représentation intermédiaires (IRs) spécifiques au domaine afin de capturer les détails propres au matériel, incluant l’assignation des tâches, les dépendances, le flux de données et les descriptions d’architecture, permettant une synthèse matérielle précise.
- explorer des méthodes pour intégrer des annotations dans les IRs afin de spécifier les contraintes matérielles et les paramètres d’ordonnancement guidant la génération matérielle.
- développer des algorithmes pour traduire les IRs en architectures matérielles complètes spécifiques au domaine, englobant les unités de traitement, les interconnexions et la logique de contrôle.
- étudier des méthodes pour assigner les tâches à des composants matériels et générer les interconnexions à partir des dépendances de données, y compris les techniques pour chemins de données parallèles et exécution concurrente.
- rechercher la génération automatique d’unités de contrôle, les stratégies de partage de ressources, et les techniques d’optimisation telles que déroulement de boucles et pipelining afin d’améliorer l’efficacité des circuits.
- développer la génération automatisée de bancs d’essai pour valider le matériel par simulation.
Connaissances requises
Profil recherché
- Étudiante et étudiant en génie électrique, génie informatique, ou dans un domaine étroitement lié.
- Solide formation en conception de circuits numériques, de préférence pour les FPGA ou les ASIC.
- Excellentes compétences en langages de description matérielle (VHDL et/ou Verilog).
- Excellentes compétences en programmation.
- Intérêt pour le codage correcteur d’erreurs et les algorithmes de décodage.
Les compétences suivantes sont considérées comme des atouts :
- Expérience en autogénération matérielle ou en génération de code pour circuits numériques.
- Familiarité avec les codes correcteurs d’erreurs, p. ex. LDPC, polaires, ou Turbo.
- Expérience en conception de compilateurs ou en représentations intermédiaires.
- Connaissance des techniques d’optimisation matérielle, p. ex. pipelining et partage de ressources.