2009-03-17 9 views
1

Je suis chargé de vérifier un code RTL basé sur Verilog. Maintenant, coder le testbench RTL en utilisant verilog semble être très difficile (pour moi). Donc, je voudrais essayer l'un des suivants. - Essayez fournir une interface PLI à RTL et invoquer ainsi « fonctions C pour les tests - système en utilisant » C pour interfacer les « fonctions Cverilog ou systemc pour testbench

PS: Je possède déjà un vaste » code C qui a été utilisé pour tester la modèle comportemental. Je suis nouveau dans le monde de la programmation matérielle. Tout pointeur serait grandement apprécié.

Répondre

5

Si vous avez déjà un vaste code C qui a été utilisé pour tester le modèle comportemental, la seule chose à faire est d'ajouter simplement une interface PLI (ou DPI) qui vous permettra d'appeler ce code c depuis verilog. SystemC est fondamentalement C++ avec beaucoup de classes qui vous permettent de modéliser HW. Je ne vois pas comment vous auriez avantage à apprendre SystemC pour la tâche que vous tentez car vous avez déjà un modèle C disponible sur lequel vous pouvez tester le HW. Learning SystemC est probablement exagéré pour ce que vous essayez de faire.

FYI. Si vous voulez apprendre quelque chose qui est fortement utilisé dans l'industrie aujourd'hui, alors je suggère que vous appreniez SystemVerilog. Ces jours-ci SystemVerilog, en gros verilog avec un tas de fonctionnalités de langage logiciel de haut niveau intégré; avec "VMM", une "méthodologie de vérification" (c'est-à-dire un groupe de bibliothèques), semble être à la mode dans le domaine de la vérification du matériel.

+0

Merci beaucoup pour votre bonne explication. J'ai également découvert que le système-c est une surconsommation, et implémenté la couche DPI pour interfacer le code verilog à 'C. La meilleure chose est, "ça marche". Merci une fois de plus. – Alphaneo

4

La question n'est pas si facile à répondre sans connaître votre DUV (appareil en cours de vérification) ou le code C que vous avez. Vous avez besoin de moyens pour stimuler et vérifier votre conception, ici vous avez probablement besoin de traduire de/vers le niveau de transaction (structures de données C) vers/depuis le niveau de broche. Les interfaces SystemVerilog ou SystemC peuvent être une approche. Je n'ai pas encore utilisé les interfaces DPI/PLI.

Pour avoir un banc d'essai «à la fine pointe de la technologie», vous devriez envisager d'utiliser l'une des méthodologies de banc d'essai, soit VMM ou OVM. Ils vous fourniront également une documentation pour commencer.

0

Vous devriez avoir un outil comme les simulateurs de Mentor ou de Cadence qui combinent le code RTL et SystemC sous un seul système. Pas gratuit, certes, mais ils sont la solution pour cela dans la pratique.

La solution structurellement correcte dont vous avez besoin est que le C ou SystemC appelle le RTL, et non l'inverse. Cela implique d'intégrer un simulateur RTL avec votre programme C ou votre programme SystemC. C'est certainement faisable, mais une entreprise assez importante.

En outre, je pense que l'utilisation de SystemVerilog est très logique.

0

J'ai utilisé à la fois SystemC et System Verilog/VMM pour la vérification, et la réponse est, cela dépend. Quand j'étais avec une start-up qui était sur un budget restreint essayant d'obtenir leur premier ASIC à la porte, SystemC était un choix naturel parce qu'il fonctionnait sur notre simulateur à petit budget et SystemVerilog n'a pas fait. Avec SystemC, vous n'avez pas besoin d'utiliser le PLI ou le DPI. Vous instanciez réellement votre modèle SystemC en tant que composant dans votre testbench, ce qui est intéressant.

Toutefois, SystemC est une bibliothèque C++ qui n'a pas une syntaxe très intuitive. Vous devriez avoir un arrière-plan C++ décent avant d'essayer d'apprendre la bibliothèque SystemC. Les livres pour ce qui sont disponibles la plupart du temps sucent, à l'exception de "SystemC from the Ground Up" par David Black.Cela commence, d'après ce que j'ai vu, SystemC est naturellement un langage de modélisation de haut niveau, pas un langage de vérification, et personne avec un budget pour acheter de vrais simulateurs n'utilise SystemC pour la vérification. D'un point de vue général du développement de carrière, j'utiliserais System Verilog s'il est à votre disposition. De plus, vous pouvez toujours utiliser le DPI pour l'interface avec votre modèle C pour la vérification de sortie, qui utilise toujours des générateurs, des moniteurs et des tableaux de bord écrits en SV/VMM.

Questions connexes