🛠 Mise en route du SoC Sapphire RV64 sur FPGA Efinix

Efinix Sapphire RV64 : SoC RISC-V 64 bits configurable pour FPGA · avance · Guide avancé pour configurer et déployer le cœur VexiiRiscv Sapphire RV64 sur une carte Efinix.

Objectifs

Ce tutoriel vise à initialiser le SoC Sapphire RV64 basé sur VexiiRiscv sur un FPGA Efinix (gamme Titanium/Topaz/Trion). L'objectif est de valider la chaîne de compilation, la synthèse sous Efinity et le chargement du bitstream pour obtenir un cœur RISC-V 64 bits fonctionnel. Nous nous concentrerons sur la configuration minimale pour un démarrage stable, en exploitant les capacités avancées comme la gestion mémoire et les interfaces de débogage.

Matériel nécessaire

Étapes

Ouvrez Efinity et créez un nouveau projet en sélectionnant le FPGA cible approprié. Importez les fichiers sources du SoC Sapphire RV64. Assurez-vous que les contraintes physique (.pin) correspondent à votre carte.

  1. Configuration du projet Efinity

Dans le fichier de configuration du SoC, activez le cœur VexiiRiscv. Configurez le pipeline à 7 étages et activez les extensions RV64IMACFD_Zba_Zbc_Zbs. Si vous prévoyez d'utiliser Linux ultérieurement, activez la MMU SV39. Définissez la fréquence cible à 400 MHz (max) pour commencer, ou réduisez-la à 100 MHz pour valider le routage.

  1. Paramétrage du cœur VexiiRiscv

Activez la RAM sur puce (start avec 64 Ko pour le bootloader). Configurez le contrôleur mémoire externe. Pour un premier test, utilisez l'HyperRAM (500 Mbps) si disponible sur la carte, sinon configurez le DDR3. Vérifiez les timings de mémoire dans les contraintes.

  1. Configuration mémoire

Lancez la synthèse logique. Surveillez les rapports de timing pour assurer que le chemin critique respecte la fréquence cible. En cas de violation, réduisez la fréquence ou optimisez le routage. Une fois la synthèse réussie, lancez l'implémentation physique.

  1. Synthèse et Implémentation

Générez le fichier .bit ou .hex final. Cette étape convertit la conception logique en configuration spécifique au FPGA Efinix.

  1. Génération du Bitstream

Connectez la carte au PC via JTAG. Utilisez l'outil de programmation Efinity pour charger le bitstream sur le FPGA. Une fois programmé, le cœur Sapphire RV64 démarre automatiquement si le bootloader est pré-chargé dans la ROM ou la RAM.

  1. Programmation et Lancement

Vérification

Ouvrez un terminal série connecté à l'UART configuré. Vous devriez voir des messages de démarrage ou un prompt de shell. Utiliser le débogueur RISC-V standard pour vérifier que le compteur programme (PC) avance. Placez un point d'arrêt matériel (jusqu'à 4 disponibles) pour inspecter l'état des registres. Une fréquence stable de 400 MHz (ou valeur configurée) doit être confirmée via un compteur de cycles.

Pour aller plus loin

Une fois le cœur fonctionnel, explorez la configuration multi-cœur (jusqu'à 4 cœurs). Configurez le cache L2 partagé (64-512 Ko) pour améliorer les performances mémoire. Intégrez le support DDR3/LPDDR4x pour des applications lourdes. Enfin, compilez un noyau Linux compatible RV64 avec la MMU SV39 activée pour des systèmes d'exploitation complets.

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels