VHDL et Verilog sont les HDL du jour. Quels sont les avantages de l'un ou l'autre pour quelqu'un qui n'a aucune expérience des HDL?
VHDL et Verilog sont les HDL du jour. Quels sont les avantages de l'un ou l'autre pour quelqu'un qui n'a aucune expérience des HDL?
Réponses:
Je ne peux pas vous dire lequel apprendre, mais voici quelques points contrastés (d'un utilisateur très centré sur le VHDL, mais j'ai essayé d'être aussi juste que possible!), Ce qui peut vous aider à faire un choix en fonction de vos propres préférences. en termes de style de développement:
Et gardez à l'esprit la célèbre citation qui dit: "Je préfère celle des deux que je n'utilise pas actuellement" (désolé, je ne me souviens pas qui a écrit cela - peut-être Janick Bergeron?)
Beaucoup d'erreurs de compilation pour commencer, mais cela fonctionne généralement comme prévu. Cela peut conduire à une courbe d'apprentissage très raide (avec la syntaxe inconnue)
Les erreurs se retrouvent plus tard dans la simulation - la courbe d'apprentissage pour "avoir l'impression de faire quelque chose" est moins profonde, mais dure plus longtemps (si c'est la bonne métaphore?)
Verilog est également favorable à ce que la vérification haut de gamme se tourne de plus en plus vers SystemVerilog, qui est une extension considérable de Verilog. Mais les outils haut de gamme peuvent également combiner le code de synthèse VHDL avec le code de vérification SystemVerilog.
Pour une autre approche entièrement: MyHDL - vous obtenez toute la puissance de Python en tant que langage de vérification avec un ensemble d’extensions de synthèse à partir duquel vous pouvez générer du VHDL ou du Verilog.
Ou Cocotb - toute la puissance de Python en tant que langage de vérification, avec votre code de synthèse encore écrit dans le HDL choisi (par exemple, VHDL ou Verilog).
J'ai appris les deux la même semaine. VHDL est comme ADA / Pascal et Verilog est comme C. VHDL est plus verbeux et plus pénible pour obtenir une compilation, mais une fois que vous avez obtenu une compilation, vos chances de succès sont meilleures. Au moins c'est ce que j'ai trouvé. Verilog, comme C, est très content de vous laisser vous tirer une balle dans le pied. Certaines industries comme l'aérospatiale / le gouvernement se tournent vers le VHDL, d'autres vers Verilog. Le problème que je rencontre avec les deux réside dans les capacités du banc d’essai. Lorsque vous essayez d’apprendre et de passer de la simulation à l’écriture sur silicium / FPGA, un code synthétisable unique constitue un autre niveau de formation.
J'aime beaucoup le langage appelé CDL . Il est strictement synthétisable, vous écrivez vos bancs d’essais d’une autre manière, il génère un Verilog synthétisable que vous pouvez intégrer à d’autres outils. Malheureusement, les documents CDL font défaut, j'espère avoir quelques exemples dans le monde pour montrer à quel point il est plus facile à utiliser que Verilog ou VHDL, mais ne le faites pas. Il vient avec son propre environnement sim / test. Avec CDL et GTKWave, vous pouvez effectuer un travail considérable.
Un autre outil appelé Verilator est assez rigide pour garder votre Verilog propre. C'est un simulateur gratuit de Verilog avec un moyen très simple de se connecter à la simulation ou de créer des bancs d'essai en C / C ++. Vous pouvez aussi utiliser Verilog, ne vous y limite pas. Il existe également Icarus Verilog , qui est plus grand et plus connu, mais je recommanderais Verilator si vous voulez apprendre Verilog. Pour le format VHDL, il existe GHDL , mon expérience n’était pas aussi satisfaisante que celle de Verilator , mais au moins, il existe un outil gratuit pour essayer de vous mouiller les pieds. Si vous avez une expérience en programmation logicielle, vous pourrez probablement utiliser Verilog plus rapidement que VHDL.
Je suis vraiment d'accord avec Leon, essayez les deux. fpga4fun et d’autres pages Web ont de bonnes informations et certaines de ces pages vous donneront à la fois les équivalents Verilog et VHDL pour le sujet dont ils discutent. Je trouve les pages comme celles-ci les plus utiles pour comparer les deux langues. Si vous souhaitez utiliser un HDL au cours de votre carrière, je vous recommande d’avoir au moins quelques fonctionnalités avec les deux, peut-être vraiment très bien avec l’un mais de ne pas être complètement incapable d’utiliser l’autre.
De nombreuses guerres saintes ont été menées à ce sujet. Verilog présente un inconvénient particulier : son comportement non déterministe. http://www.sigasi.com/content/verilogs-major-flaw
Les deux ont des avantages et des inconvénients. VHDL est plus académique, prolixe et complexe. Vous devez écrire plus de code, mais la rigueur signifie qu'il est plus susceptible de fonctionner. Verilog est plus simple pour une conception numérique typique, mais facilite la création de bogues difficiles. Le VHDL est plus répandu dans les universités. Verilog est plus commun dans les grandes entreprises de semi-conducteurs.
Généralement, le choix de l’un ou de l’autre dépend des outils que vous utilisez. Certains des outils FPGA populaires fonctionnent mieux avec le VHDL. Certains outils ASIC populaires fonctionnent mieux avec Verilog. Donc, ce qui est mieux dépend de ce que vous voulez en faire.
Supposons que vous vouliez construire de petits projets en utilisant les FPGA Altera qui sont populaires dans les écoles EE. Les outils gratuits prennent en charge les deux HDL. Mais vous constaterez peut-être que la communauté d'utilisateurs utilise principalement le langage VHDL. Il y aura plus d'exemples de code, de modules réutilisables, etc. si vous optez pour cette langue.
Inversement, si vous avez l’intention de travailler dans une grande entreprise qui effectue un travail sérieux de conception de puces, presque toutes utilisent Verilog de nos jours. Les outils de synthèse, de simulation et de vérification à usage intensif sont optimisés pour Verilog. Et dernièrement, SystemVerilog - des extensions à Verilog pour prendre en charge la conception et la vérification de systèmes de haut niveau.
Plus de discussion ici et des liens utiles ici:
Le meilleur conseil pour un débutant / amateur est de décider avec quels jetons vous voulez jouer et de voir quels exemples le fournisseur fournit. Utiliser ça. Une fois que vous êtes un concepteur numérique expérimenté, apprendre l’autre langue ne prend que quelques jours.
Réponse courte : utilisez SystemVerilog, mais apprenez aussi le VHDL . Évitez Verilog-2001 si vous le pouvez.
Réponse très longue : pour le moment, je suppose que par Verilog, vous voulez dire Verilog-2001, ce qui est probablement ce que supposent également la plupart des autres réponses. La meilleure suggestion serait probablement d'apprendre les deux, mais de ne pas utiliser ni l'un ni l'autre (plus à ce sujet à la fin de la réponse). Les principales différences peuvent être résumées de la manière suivante:
wire
vs reg
)Cela dit, les concepts les plus importants sont partagés par les deux langues, mais par des noms différents (par exemple, always
vs process
) et, en tout état de cause, la difficulté d’apprendre un HDL est davantage liée aux concepts sous-jacents (tels que la simultanéité de tous les processus, la HW conventions etc.) que la langue elle-même. Compte tenu des différences, si le choix se situe entre Verilog 2001 et VHDL, je m'adresserais personnellement à tout débutant en VHDL.
Cependant, comme je l'ai dit, ma suggestion est en fait de n'utiliser ni VHDL ni Verilog-2001 si vous avez le pouvoir de choisir. Contrairement à ce que beaucoup de gens pensent, SystemVerilog n'est pas un langage de niveau supérieur utile uniquement pour la conception ou la vérification au niveau système. Il a peu de choses à partager avec les langages pouvant être intégrés à un outil de synthèse de haut niveau tel que SystemC.
SystemVerilog est plutôt une mise à jour complète du langage Verilog (basé sur Verilog-2005, voir http://en.wikipedia.org/wiki/SystemVerilog ) qui comporte un sous-ensemble entièrement synthétisable qui correspond à la concision de Verilog avec une expressivité supérieure à celle des deux. Verilog-2001 et VHDL, fournissant à mon avis le meilleur des deux mondes.
Voici des exemples de constructions / expressions très importantes disponibles dans SystemVerilog qui ne sont pas disponibles dans Verilog-2001, VHDL ou les deux:
always_ff
, always_latch
, always_comb
Blocs qui aident le concepteur distinguer immédiatement entre les blocs de mise en œuvre différents types de logique, et - pour always_comb
et always_latch
- (! Une source de bugs infinies dans VHDL et Verilog, en particulier pour les débutants) déduire automatiquement les signaux qui doivent aller sur la liste de sensibilitélogic
types qui se substituent aux types déroutants wire
et reg
types de Verilog-2001logic [N-1:0][M-1:0][P-1:0]
), alors que Verilog-2001 ne prend en charge que les bus bidimensionnels et que VHDL oblige le concepteur à définir de nouveaux types pour construire des structures similairesstruct
(similaire au VHDL record
) et même de niveau supérieur interface
qui peuvent être utilisées très efficacement pour modéliser des structures régulières (telles que les ports d'un bus)J'ai testé toutes ces différences "sur ma peau" tout en travaillant sur un système multicœur assez complexe à des fins de recherche. Il est maintenant pris en charge par de nombreux outils, et je suis certain (de les utiliser presque tous les jours) qu'il est soutenu par les outils Synopsys (pour les flux de synthèse ASIC et FPGA), Xilinx Vivado (pour la synthèse FPGA) et des outils de simulation tels que en tant que MentorGraphics Modelsim, Cadence NCsim et Synopsys VCS.
Pour être totalement complet, il existe deux autres types de langages importants dans la boîte à outils du concepteur de matériel (bien que la qualité de ces outils puisse varier beaucoup):
Ma carrière au cours des 13 dernières années était composée à 80% d’ASIC et à 20% de FPGA.
Le VHDL a été utilisé pendant les trois premières années et demi et le reste était du Verilog. Je n’ai pas trouvé difficile de passer à Verilog, et pour des raisons d’emplacement (Silicon Valley) et de rapidité, je ne code que dans Verilog aujourd’hui.
De plus, je fais beaucoup d'interfaces asynchrones, de verrous et de conceptions semi personnalisées au niveau de la porte pour des performances optimales, de sorte que le VHDL est très peu utilisé dans ma vie actuelle. Au lieu de cela, j'ai trouvé SystemVerilog et SystemC beaucoup plus utiles à prendre en charge et à utiliser pour les grands projets d'ingénierie.
À un moment donné, des outils tels que Verilator (gratuit! & Rapide) m'ont permis d'économiser beaucoup de fonds indispensables à la réalisation de simulations critiques. Vous n'avez pas (encore) cette option pour VHDL. Et vous pourriez ne jamais en avoir besoin si vous nagez toujours dans une piscine riche ou si vous ne faites pas de conceptions de porte> 1 M.
Néanmoins, le VHDL convient mieux aux débutants avant qu'ils ne développent de solides principes de conception du matériel. Mes communications avec les membres de l'EDA ici suggèrent qu'ils ont fait peu de développements en VHDL au cours des 10 dernières années, et il y a une grande campagne derrière HLS aujourd'hui. Donc, il n'y aura pas beaucoup de développeurs d'outils VHDL autour de ...
J'ai opté pour le VHDL, principalement parce que je connais très bien le langage C et que j'ai constaté qu'essayer d'écrire verilog avait tendance à me faire écrire comme si je ciblais un processeur ne décrivant pas le matériel.
Très ennuyeux d'écrire une page de code et de se rendre compte de ce que vous avez écrit était en fait un programme séquentiel et non une conception matérielle, voire un synthé, mais le résultat était moche et lent.
Le format VHDL était suffisamment différent pour que je trouve beaucoup plus facile de penser en termes de conception logique et de ne pas contrôler le flux.
À la fin de la journée, la langue est rarement le plus difficile, la compétence réside dans la conception du système et non dans la frappe.
Cordialement, Dan.
L'année dernière, l'université que j'ai étudiée a mis en place deux cours ouverts pour débutants. Tous deux couvraient le même contenu, l'un utilisant le langage VHDL et l'autre Verilog.
Bien sûr, j'ai demandé aux deux professeurs les différences entre VHDL et Verilog. Les deux ne pouvaient pas élire le meilleur.
J'ai donc dû faire les deux cours pour voir lequel pourrait être meilleur pour moi. Ma première impression était VHDL est plus Pascal comme et Verilog est plus C-like .
Après cela, j'ai décidé de ne faire que du VHDL car, à cette époque, je travaillais avec Delphi.
Mais je n'ai jamais travaillé avec le FPGA après le cours. C'est donc le mieux que je puisse vous aider.
J'utilise presque entièrement le VHDL. Mon expérience est que le VHDL est plus répandu en Europe, Verilog aux États-Unis, mais que le VHDL progresse régulièrement aux États-Unis. Le typage puissant du format VHDL ne me dérange pas car je l'utilise comme un langage de conception matérielle à l'ancienne utilisé dans une petite logique programmable, telle que PALASM ou le format AHDL d'Altera.
Le gros problème pour la plupart des gens qui utilisent le VHDL, ce sont les types forts. Ils veulent faire des assignations entre std_logic_vector (que je considère comme une collection de fils dans la cible) et "int" (que je considère comme un nombre stocké dans l'ordinateur qui compile le dessin). La conversion de type la plus gênante que je rencontre généralement se situe entre bit_vector (ce que je considère être une description d’une collection de fils dans l’ordinateur compilant le dessin) et std_logic_vector. En fait, ce qui m’entraînait à stackexchange à l’heure actuelle, c’était à la recherche d’une conversion de char (une variable de caractère stockée dans l’ordinateur compilant) en int.
À l'époque, le conflit le plus célèbre entre VHDL et Verilog était le concours de design organisé par le magazine ASIC & EDA. Google "Résultats inattendus d'un concours de conception matérielle: Verilog gagné et VHDL perdu? Vous êtes le juge!", Par exemple: http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual /Example/lrgeEx2/cooley.html
Le concours consistait à mettre en place un registre 9 bits assez complexe. Il y avait des comptages haut / bas ainsi que quelques autres choses. Les résultats ont été que 8 des 9 concepteurs Verilog avaient du code en cours d'exécution après 90 minutes. Zéro des 5 gars du VHDL ne fonctionnait pas.
Je n'utilise pas le VHDL comme n'importe qui. La façon dont je l'utilise, les types ne me gênent pas très souvent. J'aurais implémenté le projet ci-dessus de la même manière que je faisais tout le reste, entièrement dans std_logic et std_logic_vector, en utilisant (de retour dans la journée) la bibliothèque non signée IEEE. Au lieu de cela, j'imagine que les concepteurs VHDL ont fait leur travail avec int et se sont perdus dans la conversion de type.
Vous pouvez vous perdre dans la conversion de type à deux endroits: (a) votre conception et (b) votre banc d’essai. Pour moi, il est simplement plus facile d'écrire (presque) entièrement le banc de test dans std_logic, de sorte que le banc de test lui-même est (presque) synthétisable. Par "presque", je veux dire que je définirai l'horloge avec une affectation différée qui ne peut pas être synthétisée. Mais à part cela (et les commentaires), vous ne pouvez pas distinguer mes bancs d’essai de la logique synthétisée.
Quoi qu'il en soit, avant de choisir la première langue à apprendre (presque tout le monde a une préférence, mais presque tout le monde utilise les deux), je vous conseillerais de consulter ce concours et de lire le commentaire.
L’un des problèmes que j’ai observé avec le langage VHDL est qu’étant donné qu’il s’agit d’un langage très prolixe, il semble y avoir une tendance (dans l’esprit des concepteurs) à croire qu’il n’exige pas de commentaires. Pas vrai bien sûr, vous devriez écrire les commentaires avant le code.
Je vais peser sur mes deux cents: je suis un grand utilisateur de VHDL, mais Verilog peut certainement faire le travail aussi bien. Vous pouvez toujours en insérer un dans un autre (bien qu’avec un temps et un coût de frappe).
Ce que j’ai constaté, c’est que le VHDL brut manque de nombreuses fonctions pratiques. (OU ou AND: on pense à tout un std_logic_vector). Ainsi, vous construire une boîte à outils de fonctions déboguées et synthétisables augmente considérablement votre productivité lorsque vous utilisez VHDL.
Peut-être que quelqu'un pourrait faire référence à une bonne bibliothèque à code source ouvert offrant toutes ces fonctions "utiles".
Les réponses précédentes couvrent à peu près les contrastes entre les deux langues, et cet article couvre également les points: http://www.bitweenie.com/listings/verilog-vs-vhdl/
J'aimerais également faire quelques remarques supplémentaires qui n'ont pas été mentionnées.
Je recommanderais d'abord d'apprendre le VHDL pour quelques raisons. Le typage fort aide le compilateur à rattraper certaines erreurs faciles du débutant. J'ai également entendu dire que le VHDL était plus difficile à utiliser après avoir utilisé Verilog en premier.
Honnêtement, vous ne pouvez pas vous tromper avec l'une ou l'autre langue; et si vous travaillez très longtemps dans cette industrie, vous apprendrez quand même les deux langues.