Aller au contenu

Méthode de projet

1. Écrire la spécification

Pour chaque bloc :

  • objectif ;
  • ports, largeurs, polarités et unités ;
  • domaine d'horloge ;
  • reset ;
  • latence et débit ;
  • séquences légales ;
  • erreurs et limites ;
  • critères de réussite.

Exemple :

Si enable vaut un au front montant, le compteur 8 bits augmente modulo 256. Le reset synchrone actif à un est prioritaire et remet à zéro. Si enable vaut zéro, le compteur conserve sa valeur.

Ce paragraphe contient presque déjà le RTL et le banc de test.

2. Préparer la hiérarchie

Séparez :

  • enveloppe de carte ;
  • frontière horloge/reset/CDC ;
  • FSM de contrôle ;
  • chemin de données ;
  • interfaces ;
  • paquetages partagés.

3. Réaliser une tranche verticale

Construisez le plus petit chemin utile depuis l'entrée jusqu'à la sortie. Compilez immédiatement. N'attendez pas d'avoir écrit tout le système.

4. Vérifier du bas vers le haut

  1. Fonctions pures.
  2. Blocs combinatoires.
  3. Compteurs et minuteries.
  4. Interfaces.
  5. FSM.
  6. Cœur intégré.
  7. Test simple de l'enveloppe de carte.

Les tests unitaires localisent les défauts ; l'intégration vérifie les contrats entre blocs.

5. Automatiser tout de suite

Dès qu'un test fonctionne :

  • l'ajouter à la régression ;
  • ajouter un timeout ;
  • rendre le verdict lisible par une machine ;
  • conserver graines et vecteurs fautifs ;
  • tout relancer après chaque modification importante.

6. Ajouter les contraintes

Traitez le XDC comme du code source relu :

  • broches issues du manuel ;
  • périodes d'horloge ;
  • délais d'interfaces externes ;
  • exceptions étroites et justifiées.

7. Examiner la synthèse

  • RAM, DSP et chaînes de retenue attendus sont-ils inférés ?
  • Existe-t-il des latches ?
  • Une logique importante a-t-elle disparu ?
  • Largeurs et ressources sont-elles plausibles ?
  • Horloges et validations sont-elles reconnues ?

8. Examiner l'implémentation

Exigez DRC accepté, bonnes horloges, absence de chemins importants non contraints, timing setup/hold réussi et CDC examinées.

9. Valider sur la carte

Préparez l'observabilité :

  • LED pour états et erreurs ;
  • afficheur pour le statut ;
  • UART de diagnostic ;
  • ILA pour les signaux internes si nécessaire.

L'ILA consomme des ressources et observe le vrai matériel, mais ne remplace pas le banc de test.

10. Préserver la reproductibilité

Versionnez :

  • sources .vhd ;
  • contraintes .xdc ;
  • vecteurs et générateurs ;
  • scripts de simulation et de build ;
  • documentation ;
  • petits rapports importants.

Ignorez les caches générés.

Revue finale

Exigences

  • Comportement non ambigu.
  • Horloge, reset et latence documentés.
  • Cas limites définis.

RTL

  • Types numériques corrects.
  • Changements de largeur explicites.
  • Affectations combinatoires complètes.
  • Propriété claire des registres.
  • CDC explicites.

Vérification

  • Cas normaux et limites automatiques.
  • Modèle indépendant.
  • Timeout.
  • Code de retour non nul sur échec.

Implémentation

  • Broches et standards corrects.
  • Toutes les horloges contraintes.
  • Rapports timing et CDC propres ou justifiés.
  • Ressources plausibles.

Transmission

  • Une autre personne peut construire et tester depuis le README.
  • Versions des outils et de la carte notées.
  • Aucune source essentielle uniquement dans un dossier généré.