Introduction à SystemC

Mixer les langages «La co-simulation»

Tarik Graba

P4 2018-2019

Utiliser SyetemC pour la simulation et la vérification de modèle RTL écrits dans d’autres langages.

Mixer les langages

La co-simulation

La co-simulation consiste en la mise en œuvre d’une simulation dans laquelle les éléments ont été écrits dans des langages différents.

Pour pouvoir le faire:

  • les concepts manipulés doivent pouvoir s’exprimer dans les deux langages,
  • l’outil (simulateur) doit les supporter et permettre de passer de l’un à l’autre.

Testbench en SystemC

Co-simulation
Co-simulation

Mise en pratique

Deux approches

Nous allons voir deux exemples de simulation d’un module RTL (Verilog/SystemVerilog) dans un testbench écrit en SyetemC.

Deux approches:

  • Utiliser un simulateur qui accepte les deux langages (Modelsim).
  • Utiliser un convertisseur (Verilator) qui transforme le RTL dans un langage que l’on peut compiler.

Modelsim

Module “étranger”

Foreign Module
Foreign Module

Exemple (HDL):

Exemple (Wrapper):

Exemple (Instanciation):

Workflow Modelsim

Foreign Module
Foreign Module

Verilator

Convertir le Verilog en C++/SystemC

Utiliser un “convertisseur” qui converti le Verilog en C++/SystemC:

Conversion automatique du RTL grâce à Verilator

Convertir le Verilog en SystemC
Convertir le Verilog en SystemC

Workflow Verilator

Workflow
Workflow

Exemple (Conversion):

Pour le module Verilog précédent (counter) on obtient le module SystemC Vcounter:

Travail à faire:

Reprendre l’exemple du PGCD.