2011-03-08 16 views
3

Est-ce que les boucles pour Verilog s'exécutent en parallèle? Je dois appeler un module plusieurs fois, mais ils doivent s'exécuter en même temps. Au lieu de les écrire un par un, je pensais utiliser une boucle for. Cela fonctionnera-t-il de la même façon?Comment faire pour les boucles dans Verilog exécuter?

Répondre

4

Verilog décrit le matériel, il n'est donc pas logique de penser en termes d'exécution de boucles ou de modules d'appel dans ce contexte. Si je comprends bien l'intention de votre question, vous voudriez avoir plusieurs instanciations du même module avec des entrées et sorties distinctes.

Pour ce faire, vous pouvez utiliser le generate statements de Verilog pour générer les instanciations automatiquement.

Vous pouvez également utiliser le auto_template functionality dans l'excellent verilog-mode d'Emacs. Je préfère cette approche car chaque instanciation apparaît explicitement dans mon code source et je trouve plus facile de détecter les erreurs.

+0

Donc, vous venez de mettre générer avant la boucle for? Que se passe-t-il si vous ne le faites pas? –

+0

La page que j'ai liée a un exemple de l'utilisation. Si vous n'emballez pas la boucle et l'instanciation dans un bloc generate/endgenerate, votre outil se plaindra - essayez-le et voyez-le. – jlf

0

En réponse à jlf, vous recherchez une instruction generate. Vous utiliseriez une boucle for pour modéliser la logique combinatoire, comme parcourir tous les bits d'un registre et calculer une sortie. Ce serait dans un bloc toujours ou même un bloc initial dans votre testbench.