• Aucun résultat trouvé

Chapitre 3 Développement et mise en œuvre

3.2 Modélisation

3.2.2 Hiérarchie (découpage et connexions)

3.2.2.2 Solution en VHDL-AMS

Le langage VHDL-AMS nous propose une méthode d'assemblage de composants par instanciation qui devrait répondre à nos attentes. Cette méthode est la réalisation d'une schématique par programmation, en équivalence à ce que l'on ferait avec une netlist.

Comment fonctionne cette méthode ? Par exemple, nous souhaitons créer un modèle constitué de deux résistances en parallèle. Nous commencerons par définir le modèle de la résistance qui peut être représentée par la figure suivante :

Figure 3-7: représentation de la résistance à modéliser

Nous trouverons donc :

deux bornes : plus et moins

la valeur de sa résistance : « resistance » par defaut 1000 Ω

une équation de résolution : U=resistance*I

En VHDL-AMS, le modèle est divisé en deux grandes parties. La première est l'entité (ENTITY) qui décrit ce dont l'utilisateur aura besoin ; elle pourra être définie comme la vue externe du modèle. Nous y trouverons les ports (PORT) d'entrées/sorties et des paramètres (GENERIC).

La deuxième partie est l'architecture (ARCHITECTURE), elle constitue la vue interne du modèle. Nous trouverons le calcul de constantes (CONSTANT), la déclaration des variables à calculer (les inconnues) (QUANTITY) ainsi que les équations du modèle. Dans le cas du modèle résistance, le modèle aura cette structure :

ENTITY:

GENERIC : resistance = 1000.0

ARCHITECTURE :

CONSTANTE : aucune

QUANTITY : U traverser par I entre plus et moins

equation : U == resistance * I

Nous avons donc maintenant le modèle d'une résistance élémentaire. Nous souhaitons créer un modèle constitué de deux résistances en parallèle. Deux choix s'offrent à nous, soit nous écrivons un nouveau modèle, soit nous utilisons le modèle précédant en créant deux instances. C'est cette seconde solution que nous allons privilégier. Notre modèle ainsi créé peut être vu comme un seul modèle (voir la figure ci-dessous ) :

Figure 3-8: assemblage de modèles

Le modèle comportera :

deux valeurs de résistances : Resitance1 et Resistance2

deux instances de résistance : res_1 et res_2

Aucune équation ne sera à écrire car elles se trouvent implicitement déjà dans le modèle de la résistance.

Afin d'instancier des modèles, nous devons dans un premier temps les déclarer. Ceci est réalisé dans l'architecture par la définition du prototype de l'entité de l'instance. L'instanciation, quant à elle, sera réalisée dans la boucle de résolution par l'instruction GENERATE. Lors de l'instantiation, nous devons associer des paramètres et définir les connexions. Cela correspond à donner les valeurs que prendront chaque paramètre et la manière dont sont connectées les bornes du modèle. Notre modèle possédera la structure suivante :

ENTITY :

PORT : b1 et b2

GENERIC : resistance1 et resistance2

ARCHITECTURE :

Définition prototype :

ENTITY:

PORT : plus, moins

GENERIC : resistance

Association des paramètres et des connexions :

res_1 :

PORT :

plus => b1

moins => b2

GENERIC : resistance => resistance1

res_2 :

PORT :

plus => b1

moins => b2

GENERIC : resistance => resistance2

res_1 aura sa borne « plus » connectée à b1 et sa borne « moins » à b2, le paramètre résistance sera associé au paramètre resistance1. Nous répéterons l'opération avec la deuxième résistance, res_2.

Nous remarquons que cette méthode répond à notre première attente. L'utilisateur interagira uniquement avec l'entity du modèle créée par l'assemblage. De plus, la liaison douce avec la filière technologique peut être réalisée par cette méthode. En effet, le passage des données de la technologie d'un niveau à l'autre peut être réalisé grâce aux diverses associations de paramètres. Par contre, la liaison forte ne sera pas faite par cette méthode mais par une technique de bus de données ; ceci sera expliqué plus en détail dans la partie traitant du calcul global.

Nous pouvons donc dire maintenant que les BTFE devront comporter dans leur entité seulement : les bornes (PORT) et les paramètres (GENERIC) géographiques et géologiques. Leurs architectures comporteront la déclaration des constantes utiles, des variables de résolution (QUANTITY) et du jeu d'équations.

3.2.2.2.1 BTFA

Un BTFA peut être soit un modèle, soit un assemblage de BTFE, ou un mélange des deux. Dans le premier cas, le BTFA aura les mêmes propriétés qu'un BTFE, c'est-à-dire que l'entité regroupera les bornes et les paramètres et l'architecture contiendra les constantes, les variables à calculer et leurs équations. Dans le deuxième cas, l'entité devra comprendre les paramètres et les bornes utiles directement ou permettant le calcul de ceux des BTFE « instanciés ». Ces derniers constituent l'architecture du bloc fonctionnel. Dans le dernier cas, l'entité contiendra toutes les informations utiles au modèle et aux BTFE utilisés.

3.2.2.2.2 Composant

Ce niveau est un assemblage de BTFE et de BFTA. Nous trouverons donc dans l'entité les paramètres utiles aux différents blocs ainsi que leurs bornes de connexion utiles du point de vue externe du modèle. En effet, l'architecture pourra comporter en plus des déclarations des composants et de leurs instances, des connexions internes entre les blocs instanciés mais non accessibles depuis l'extérieur du modèle. Nous ne devrions pas trouver d'équation à résoudre à ce niveau. Si tel est le cas, il faudra se demander si il est possible de créer un bloc élémentaire ou fonctionnel.

3.2.2.2.3 Interface du composant

Un niveau composant bis sera ajouté afin de réaliser les associations entre le composant et la filière technologique et ainsi passer d'une liaison douce à une liaison forte avec la filière technologique. En effet, afin de simplifier la mise en œuvre des composants, nous avons cherché un moyen de stocker les paramètres technologiques de tous les blocs de même technologie à un seul endroit. Afin de répondre à ceci, le VHDL-AMS nous fournit une structuration des données : le package. Celui-ci regroupe la déclaration de constantes et de fonctions qui, après un appel, peuvent être utilisées dans un modèle. Nous allons donc créer un package qui définira les paramètres de la filière technologique. L'utilisateur pourra changer les valeurs de ces paramètres (dans le cas d'une technologie variable) en éditant le package. La figure suivante présente le lien existant entre les niveaux et le nouveau niveau composant bis et le package.

Figure 3-9: hiérarchie de modélisation

Dans un tel cas, les paramètres technologiques sont centralisés en un même point, une modification du package influencera tous les modèles de la simulation l'utilisant.

L'avantage de l'ajout de ce niveau et de ce package se trouve lors des changements de filière ou lors des modifications d'une filière existante. En effet, seul le package et le niveau composant bis doivent être modifiés ou créés.

Lors de la présentation du modèle du VD-MOSFET, nous avons pu constater que des constantes liées à la physique du semi-conducteur se retrouve régulièrement dans les équations. Afin d'aider le développement de modèles à base de semi-conducteurs, nous avons créé un package nommé physic_sc contenant les constantes les plus utilisées liées à ce domaine. De plus, nous avons ajouté à physic_sc des fonctions telles que la répartition gaussienne des dopants dans le silicium en fonction de la profondeur de la prochaine jonction et des niveaux de dopant en surface du premier et le dopage à l'intersection (fichier source VHDL-AMS annexe A).