Brevet FR2814825A1 — publié le 20020405

La présente invention concerne d'une manière générale l'utilisation de langages de description matériels pour spécifier un agencement de circuit logique dans un format qui soit acceptable pour des outils de synthèse logique, et plus particulièrement un procédé pour convertir un langage HDL non Verilog, contenant des expressions conditionnelles, en un format et une syntaxe de langage HDL Verilog. Il faut tester la bonne condition d'un agencement logique d'un matériel tel que des unités complexes formant processeurs centraux (CPU) avant de fabriquer réellement le matériel. L'agencement logique peut être spécifié sous la forme d'équations booléennes d'un langage de description matériel HDL ou d'une description par un langage de description matériel (HDL) tel que par exemple un langage HDL Verilog, un langage de description matériel selon la norme IEEE (norme IEEE 1364-1395). Un sous-programme peut être écrit dans un langage HDL tel que le langage HDL Verilog, puis être converti en un circuit à portes logiques en utilisant un outil de synthèse logique tel que l'outil désigné par Synopsys Design CompilerTM, qui fonctionne dans un ordinateur à usage général. De cette manière, on peut réaliser l'agencement logique. Le langage HDL Verilog, en tant que norme acceptée est un langage accepté en tant que format d'entrée par des nombreux outils de conception disponibles actuellement sur le marché. C'est pourquoi il se pose un problème dans le cas de l'utilisation d'un langage de description matériel autre que le langage HDL Verilog, désigné d'une manière générique comme étant le langage HDL non Verilog, étant donné que des outils de conception d'un tiers, qui acceptent le langage HDL Verilog, ne peuvent pas accepter aisément un autre langage HDL. Etant donné qu'il est souhaitable d'augmenter la productivité de conception et de réduire ainsi le cycle de conception d'unités centrales CPU et d'autres matériels concernés, il est important de développer les outils existants et perfectionnés même s'ils n'acceptent pas le langage HDL non Verilog. Ceci requiert que le langage HDL non Verilog soit converti en le langage HDL Verilog, de manière qu'il puisse être aisément utilisé avec des outils disponibles. Un aspect important de la conversion en le langage HDL Verilog est que la conversion est correcte logiquement ; en outre il faut préserver certaines sémantiques propres du code. Des outils de synthèse logique tels que le Synopsys Design CompilerTM doivent pouvoir produire des résultats optimum à partir du code converti. On rencontre un problème essentiel dans le cas du procédé de conversion lorsque certaines caractéristiques de syntaxe du langage HDL non Verilog ne font pas partie du langage cible HDL Verilog. Des expressions conditionnelles IF à bits multiples par exemple n'existent pas dans le langage HDL Verilog et par conséquent leur conversion du langage HDL non Verilog au langage HDL Verilog pose un problème. Cela signifie qu'une expression IF à bits multiples dans un langage HDL non Verilog ne peut pas être convertie directement en une syntaxe dans le langage HDL Verilog sans production d'une logique incorrecte. Une expression IF fournit un choix entre plusieurs expressions. Le format d'une expression IF est : IF ifcond THEN expl ELSE exp2 ifcond peut être une expression qui renvoie une valeur booléenne à 1 bit, qui est supportée par le langage HDL Verilog, ou peut être une expression de NOEUD à bits multiples qui n'a aucun équivalent en langage HDL Verilog. Pour une expression IF sous la forme à bits multiples, ifcond représente une expression à bits multiples, qui décrit des valeurs respectives de bits individuels pour un vecteur de signaux. Dans l'exemple indiqué précédemment, les expressions expl et exp2 doivent avoir la même largeur que ifcond, la largeur, en bits, définissant le nombre de signaux qui sont représentés par l'expression if. Pour chaque bit indiqué dans ifcond, un bit de contrôle est formé. Si le bit qui est contrôlé, désigné ici comme étant le bit i, est égal à un"1"en logique booléenne, alors le bit i dans expl est choisi pour l'affectation. Sinon le bit i provenant de exp2 est choisi pour l'affectation. La syntaxe du langage HDL Verilog ne supporte pas les expressions IF. La seule caractéristique de langage HDL Verilog similaire à une expression IF est l'instruction IF et, dans la plupart des cas, l'expression IF peut être convertie en une expression IF en langage HDL Verilog sans perte de précision. Par exemple le code non Verilog suivant : a : = IF b THEN c ELSE d ; peut être converti en : always&commat; (b or c or d) if (b) a=c ; else a=d ; Le langage HDL Verilog ne possède aucune définition de ifcond qui soit compatible avec la manière dont ifcond peut être défini dans un langage HDL non Verilog. Dans le langage HDL Verilog, ifcond revient toujours à une valeur booléenne, même s'il s'agit d'une expression à bits multiples. Cela signifie qu'une expression IF à bits multiples en langage HDL non Verilog peut être convertie directement en une simple instruction IF Verilog ; pour ceci, il faudrait rendre une conversion incorrecte, qui entraînerait la production d'une logique incorrecte. On considère le code suivant qui contient une expression IF, IF (a) THEN sigc ELSE siga ; : FUB test ; BEGIN"test" INTERFACE (INPUT NODE siga [8] ; INPUT NODE sigc [8] ; INPUT NODE A [8] ; OUTPUT NODE out[8] ; STRUCTURAL MAIN ; BEGIN Out : = IF (a) THEN sigc ELSE siga ; END ; END ; La conversion directe de l'expression IF contenue dans ce code en une instruction HDL Verilog conditionnelle (instruction IF-ELSE) fournit le code suivant : module testl (siga, sigc, out, a) ; input [7 : 0] siga ; input [7 : 0] sigc ; input [7 : 0] a ; output [7 : 0] out ; /*"tcl9main"*/ reg [7 : 0] out ; always&commat; (sigc or siga or a) begin if (a) out=sigc ; else out=siga ; end endmodule Dans la conversion, l'expression IF à huit bits dans le langage HDL non Verilog original n'est pas reproduite dans l'instruction IF simple, qui est produite par la conversion directe. La figure 1 représente les résultats de l'exécution de la synthèse en utilisant cette conversion incorrecte et il est évident que la fonctionnalité prévue de l'expression IF à bits multiples a été perdue dans le procédé de conversion faisant passer du langage HDL non Verilog original au langage Verilog. Ce qui est plus important, c'est que cette conversion simple et directe, mais incorrecte, ne fournit aucune erreur, ni avertissement ni autre indication que la conversion est incorrecte. Le résultat de la synthèse peut être produit par le code au moyen d'un outil de synthèse logique tel que le Synopsys Design CompilerTM. Une solution possible de ce problème est de convertir chaque expression IF à bits multiples en N instructions if-else dans le langage Verilog, N représentant le nombre de bits dans le ifcond. En utilisant cette solution par exemple on peut convertir le code ci-dessus comme suit : module tcl (siga, sigc, out, a) ; input [7 : 0] siga ; input [7 : 0] sigc ; input [7 : 0] a ; output [7 : 0] out ; reg [7 : 0] out ; always &commat; (sigc or siga or a) begin if (a [0]) out [0] =sigc [0] ; else out [0] =siga [0] ; if (a ( [11) out [l] =sigc [l] ; else out [l] =siga [l] ; if (a [2]) out [2] =sigc [2] ; else out [2] =siga [2] ; if (a [3]) out [3] =sigc [3] ; else out [3] =siga [3] ; if (a [4]) out [4] =sigc [4] ; else out [4] =siga [4] ; if (a [5]) out [5] =sigc [5] ; else out [5] =siga [5] ; if (a [6]) out [6] =sigc [6] ; else out [6] =siga [6] ; if (a [7]) out [7] =sigc [7] ; else out [7] =siga [7] ; end endmodule Les figures 2 et 3 (optimisées), annexées à la présente demande, représentent le résultat de synthèse qui est produit à partir du code ci-dessus par un outil de synthèse logique. Comme cela est représenté sur ces figures, la solution directe convertit l'instruction d'affectation unique, qui contient l'expression IF à bits multiples en huit instructions Verilog IF différentes, toutes pour la même opération. L'application de cette solution est un accroissement important de la complexité associée à la conversion. On considère par exemple une situation dans laquelle expl ou exp2 dans l'expression IF est également une expression IF à bits multiples, ce qui conduit à des expressions IF à bits multiples, imbriquées. De façon analogue, expl ou exp2 peut être également une expression de zone secondaire à bits multiples (ou des expressions dans une zone d'une expression IF), qui com- plique de façon supplémentaire la conversion nécessaire, en rendant impossible sa résolution réelle. Au minimum, le code converti est difficile à comprendre et à déboger, et l'unité de traduction est très difficile à maintenir. En réalité, la solution directe ne pourrait alors pas traiter de nombreuses situations apparaissant habituellement, dans lesquelles les expressions IF à bits multiples imbriquées sont utilisées. On peut voir que la conversion directe d'une expression conditionnelle IF à bits multiples dans une instruction conditionnelle de langage HDL Verilog (une instruction IF-ELSE) crée un résultat incorrect. En outre une extension multiple d'expressions IF à bits multiples dans de multiples instructions correspondantes en langage Verilog IF-ELSE augmente la complexité de la conversion tout en réduisant simultanément la lisibilité du code converti. C'est pourquoi il existe dans la technique un besoin de pouvoir convertir aisément et de façon précise des expressions IF à bits multiples apparaissant dans des expressions non en langage HDL, incluant des expressions IF à bits multiples, imbriquées, pour être utilisées dans le langage HDL Verilog d'une manière qui élimine ces problèmes et limitations tout en maintenant la structure HDL Verilog requise pour la synthèse. La présente invention présente un procédé pour convertir de façon précise les expressions conditionnelles IF à bits multiples, d'un programme de langage de description matériel (HDL) non Verilog, qui sont utilisés pour spécifier un agencement logique mais ne sont pas identifiés par le langage HDL Verilog, en une syntaxe convenant pour le langage HDL Verilog. La méthodologie de la présente invention peut être mise en oeuvre sous la forme d'instructions de programme d'ordinateur exécutables d'un support lisible par ordinateur qui, lorsqu'il est exécuté par un système de traitement, amène le système de traite- ment à convertir les expressions conditionnelles non en langage Verilog en une syntaxe identifiée par le langage HDL Verilog. La méthodologie de la présente invention pour la conversion de l'expression à bits multiples d'un langage HDL non-Verilog en langage HDL Verilog inclut a) pour une expression conditionnelle du programme en langage HDL non-Verilog, possédant un format IF ifcond THEN exprl ELSE expr2, déterminant une largeur en bits de l'expression conditionnelle ; b) comprenant, si l'expression conditionnelle est une expression à bits multiples : 1) la création d'une instruction à opérateurs binaires comprenant une pluralité d'opérateurs binaires tra- vaillant au niveau du bit, qui est équivalente à l'expression conditionnelle ; 2) la détermination du fait qu'au moins l'expression exprl ou l'expression expr2 sont des expressions à bits multiples imbriquées dans l'instruction à opérateurs binaires ; 3) si au moins l'une de l'expression exprl et ou de l'expression expr2 est une expression à bits mul- tiples imbriquée dans l'instruction à opérateurs binaires, le traitement d'au moins une de l'expres- sion exprl et de l'expression expr2 pour créer une instruction"always"équivalant à l'instruction à opérateurs binaires et comportant la pluralité d'opérateurs binaires travaillant au niveau du bit, contenant une ou plusieurs variables incrémentales représentatives de la au moins une des expressions exprl et expr2, qui sont des expressions à bits mul- tiples, et la conversion de l'instruction"always" pour produire une instruction en langage HDL Verilog équivalente à l'expression conditionnelle ; 4) si la au moins une des expressions exprl ou expr2 n'est pas une expression à bits multiples, la conversion de l'instruction à opérateurs binaires pour produire une instruction de langage HDL Verilog équivalente à l'expression conditionnelle ; c) la répétition de a) -b) pour chaque expression condi- tionnelle d'une pluralité d'expressions conditionnelles du programme en langage HDL non Verilog pour produire une pluralité d'instructions en langage HDL Verilog équivalente à la pluralité d'expressions condition- nelles ; et d) l'exécution de la synthèse portant sur la pluralité d'instructions en langage HDL Verilog pour produire un circuit logique représentatif du programme en langage HDL non Verilog. Selon une autre caractéristique de l'invention, la pluralité d'opérateurs binaires travaillant au niveau du bit de l'instruction à opérateurs binaires comprennent un premier opérateur ET, un second opérateur ET, un opérateur OU et un opérateur NON-ET. Selon une autre caractéristique de l'invention, le procédé comprend en outre : si l'expression conditionnelle n'est pas une expression à bits multiples, l'exécution d'une opération de conversion normale pour produire l'instruction équivalente en langage HDL Verilog. Selon une autre caractéristique de l'invention, avant la création de l'instruction à opérateurs binaires, il comprend en outre : la détermination du fait que l'expression exprl ou l'expression expr2 de l'expression conditionnelle comporte des bits d'omission ; si l'expression expr2 possède un ou plusieurs bits d'omission de exprl, la création d'une expression exprl concaténée, dans laquelle un ou plusieurs bits d'omission exprl sont remplacés par des bits de exprl cor- respondants d'une expression du membre de gauche de l'expression conditionnelle ; et si l'expression expr2 comporte un ou plusieurs bits d'omission de expr2, la création d'une expression expr2 concaténée, dans laquelle le ou la pluralité de bits d'omission de expr2 sont remplacés par des bits expr2 correspondants de l'expression du membre de gauche. L'invention concerne en outre un procédé de conversion d'expressions conditionnelles à bits multiples, d'un programme en langage de description matériel (HDL) non Verilog utilisé pour spécifier un agencement logique, en un langage HDL Verilog, caractérisé en ce qu'il comprend : a) pour une expression conditionnelle du programme en langage HDL non Verilog, possédant un format IF ifcond THEN exprl ELSE expr2, déterminant une largeur en bits de l'expression conditionnelle ; b) comprenant, si l'expression conditionnelle est une expression à bits multiples : 1) la création d'une instruction à opérateurs binaires comprenant une pluralité d'opérateurs binaires tra- vaillant au niveau du bit, qui est équivalente à l'expression conditionnelle ; 2) la détermination du fait qu'au moins l'expression exprl ou l'expression expr2 sont des expressions à bits multiples imbriquées dans l'instruction à opérateurs binaires ; 3) si au moins l'une de l'expression exprl et ou de l'expression expr2 est une expression à bits mul- tiples imbriquée dans l'instruction à opérateurs binaires, la conversion de l'instruction à opérateurs binaires pour produire une instruction en langage HDL Verilog équivalente à l'expression conditionnelle ; 4) Si au moins l'une des expressions exprl et expr2 est une expression à bits multiples imbriquée avec l'instruction à opérateurs binaires, comprenant en outre : A) si l'expression exprl est une expression IF à bits multiples, la création d'une ou de plusieurs variables exprl IF sous la forme exprl IF~&num; et le remplacement de l'expression exprl par une ou plusieurs variables exprl IF dans une instruction "always", qui est équivalente à l'instruction à opérateurs binaires ; B) si l'expression exprl est une zone secondaire exprl à bits multiples, la création d'une ou de plusieurs variables exprl de zone secondaire sous la forme exprl INE~&num; et le remplacement de l'expression exprl par une ou plusieurs variables exprl de zone secondaire dans la section"always" ; C) si l'expression expr2 est une expression expr2 IF à bits multiples, la création d'une ou de plu- sieurs variables expr2 IF sous la forme expr2 IF~&num; et le remplacement de l'expression expr2 par une ou la pluralité des variables expr2 IF dans l'instruction"always" ; D) si l'expression expr2 est une zone secondaire expr2 à bits multiples, la création d'une ou de plusieurs variables expr2 de zone secondaire sous la forme expr2 INNE&num; et le remplacement de l'expression expr2 par une ou plusieurs variables expr2 de zone secondaire dans l'instruction "always" ; et E) la conversion de l'instruction"always"pour produire une instruction en langage HDL Verilog équivalente à l'expression conditionnelle ; c) la répétition de a) -b) pour chaque expression condi- tionnelle d'une pluralité d'expressions conditionnelles du programme non en langage HDL Verilog pour produire une pluralité d'instructions en langage HDL Verilog équivalente à la pluralité d'expressions condition- nelles ; et d) l'exécution de la synthèse portant sur la pluralité d'instructions en langage HDL Verilog pour produire un circuit logique représentatif du programme en langage non HDL Verilog. Selon une autre caractéristique de l'invention, le procédé, selon lequel la création d'une ou plusieurs variables exprl IF et le remplacement de l'expression exprl par une ou plusieurs variables exprl IF si l'expression exprl est une expression exprl IF à bits multiples, caractérisé en ce qu'il comporte en outre : la détermination d'un type et d'une largeur en bits de l'expression exprl ; la création d'une ou de plusieurs variables exprl IF possédant le type et la largeur en bits multiples de l'expression exprl ; la définition de la variable ou de la pluralité de variables exprl IF pour qu'elles possèdent les caractéristiques équivalentes à une expression du membre de droite de l'instruction à opérateurs binaires ; et l'affectation de l'expression exprl à une ou à la pluralité de variables exprl IF. Selon une autre caractéristique de l'invention, la création d'une ou de plusieurs variables exprl de zone secondaire et le remplacement de l'expression exprl avec la variable ou la pluralité de variables exprl de zones secondaires si l'expression exprl est une zone secondaire exprl à bits multiples, caractérisé en ce qu'il comprend en outre : la détermination d'un type et d'une largeur en bits de l'expression exprl ; la création d'une ou plusieurs variables exprl de zone secondaire comportant le type et la largeur en bits du type de l'expression exprl ; et l'affectation de l'expression exprl à une ou plusieurs variables exprl de zone secondaire. Selon une autre caractéristique de l'invention, la création d'une ou plusieurs variables expr2 IF et le remplacement de l'expression expr2 par une ou plusieurs variables expr2 IF si l'expression exprl est une expression expr2 à bit-bit IF, caractérisé en ce qu'il comporte en outre : la détermination d'un type et d'une largeur en bits de l'expression expr2 ; la création d'une ou de plusieurs variables expr2 IF possédant le type et la largeur en bits de type de l'expression expr2 ; la définition d'une ou de la pluralité de variables expr2 IF pour qu'elles possèdent les caractéristiques équivalentes à une expression du membre de droite de l'instruction à opérateurs binaires ; et l'affectation de l'expression expr2 à une ou plusieurs variables expr2 IF. Selon une autre caractéristique de l'invention, la création de la ou de la pluralité de variables expr2 de zone secondaire et le remplacement de l'expression expr2 par la ou la pluralité de variables expr2 de zone secondaire si l'expression expr2 est une zone secondaire expr2 à bits multiples, caractérisé en ce qu'il comporte en outre : la détermination d'un type et d'une largeur en bits de l'expression expr2 ; la création d'une ou de la pluralité de variables expr2 de zone secondaire comportant le type, la largeur en bits de type de l'expression expr2 ; et l'affectation de l'expression expr2 à la ou à la pluralité de variables exprl de zone secondaire. Selon une autre caractéristique de l'invention, si l'expression conditionnelle n'est pas un expression à bits multiples, on réalise une conversion normale pour générer l'instruction équivalente HDL Verilog. D'autres caractéristiques et avantages de la présente invention ressortiront de la description donnée ci-après prise en référence aux dessins annexés, sur lesquels : - les figures 1 à 3, dont il a déjà été fait mention, représentent des résultats de synthèse produits à partir de différents codes convertis, au moyen d'un outil de synthèse logique ; - la figure 4 représente un organigramme général pour la conversion d'expressions conditionnelles à bits multiples en langage HDL non Verilog, en une syntaxe en langage HDL Verilog identifiable, conformément à un mode de mise en oeuvre préféré de la présente invention ; - les figures 5 à 7 illustrent l'organigramme d'ensemble de la figure 4 d'une manière plus détaillée, conformément au mode de mise en oeuvre préféré de la présente invention ; et - les figures 8 à 9 représentent des résultats de synthèse produits à partir de différents codes convertis par un outil de synthèse logique, conformément à la présente invention. Comme cela a été décrit précédemment, la solution consistant à convertir directement une expression IF à bits multiples en une instruction conditionnelle en langage HDL Verilog (une instruction IF-ELSE), fournit une conversion incorrecte qui crée un résultat incorrect. En outre l'extension d'expressions IF à bits multiples en des instructions correspondantes multiples en langage HDL Verilog IF-ELSE augmente fortement la complexité de la conversion et réduit la lisibilité du code converti. La présente invention fournit une solution pour convertir les expressions IF à bits multiples à codes en langage HDL non Verilog, non identifiées par le langage HDL Verilog, en une syntaxe pouvant être reconnue en tant que code HDL Verilog. toutes les expressions IF à bits multiples, incluant des expressions IF à bits multiples, imbriquées, sont converties en une syntaxe qui est aisément comprise en tant que syntaxe HDL Verilog. La présente invention est applicable à n'importe quel langage HDL non Verilog comportant des expressions IF à bits multiples qui doivent être aisément et facilement converties pour être utilisées en tant que langage HDL Verilog. En outre la méthodologie de la présente invention peut être mise en oeuvre par un programme d'ordinateur d'un milieu lisible par ordinateur. La présente invention évite complètement l'expression conditionnelle IF-ELSE du langage HDL Verilog, qui ne supporte pas d'expressions conditionnelles à bits multiples, lors de la conversion d'une expression conditionnelle IF à bits multiples pour son utilisation par le langage HDL Verilog. Au lieu de cela, la présente invention utilise des opérateurs binaires travaillant au niveau du bit, incluant l'opérateur binaire ET travaillant au niveau du bit," & "l'opérateur binaire OU travaillant au niveau du bit,"I"et l'opérateur unaire travaillant au niveau du bit NON-OU,"-"", dans le procédé de conversion. En utilisant les opérateurs ET, OU, NON-ET travaillant au niveau du bit on crée une nouvelle instruction possédant la même signification logique que l'expression IF à bits multiples, à partir d'un point de vue fonctionnel et d'un point de vue synthèse. Les opérateurs travaillant au niveau du bit sont des opérateurs du langage HDL Verilog défini dans la norme IEEE langage de description matériel basé sur le langage de description matériel Verilog 4. 1. 10, en tant qu'opérateurs qui"exécutent des manipulations au niveau du bit sur les opérandes-c'est-à-dire que l'opérande combine un bit dans un opérateur avec le bit, qui lui correspond, dans l'autre opérande pour calculer un bit du résultat". Les tables logiques indiquées ci-après montrent les résultats de l'application de chacun de ces opérateurs dans le langage Verilog : Opérateur binaire ET travaillant au niveau du bit & 01 000 101 Opérateur binaire OU travaillant au niveau du bit 101 001 1 1 1 Opérateur binaire NON-ET travaillant au niveau du bit - Sortie 01 10 L'opérateur ET travaillant au niveau du bit, & , peut être utilisé pour masquer certains ensembles de bits, et l'opérateur OU travaillant au niveau du bit, I, peut être utilisé pour activer des bits (ou les placer à une valeur"1"logique). Etant donné que l'effet d'utiliser le langage source HDL non Verilog est de traiter chaque bit individuellement dans ifcond, on peut utiliser une combinaison des opérateurs ET, OU travaillant au niveau du bit et de l'opérateur unaire NON-ET, pour créer l'équivalent logique de l'expression IF à bits multiples. Cette solution fonctionne étant donné que l'expression IF à bits multiples suivantes : q : = IF (x) THEN (y) ELSE (z) ; est équivalente à l'expression logique suivante contenant des opérateurs travaillant au niveau du bit, et qui est aisément exprimée en langage HDL Verilog : q : =y & x ! z & -z ; A titre d'exemple, on va considérer le cas où l'on a x ='00101011, y='11101101 et z ='00101100. En introduisant x, y et z dans l'expression IF à bits multiples, le résultat est : q : =IF ('00101011) THEN ('11101101) ELSE ('00101100) ; ce qui fournit un résultat q égal à'00101101. En utilisant la solution selon la présente invention, on obtient le même résultat précis pour q en appliquant les opérateurs ET, OU et NON-ET travaillant au niveau du bit, comme suit : q : = ('11101101 & '00101011) 1 ('00101100 & - ('00101011)) q : ='001010011 ('00101100 & '11010100) q : ='001010011'00000100 q : ='00101101 La méthodologie de la solution de conversion selon la présente invention est indiquée dans les organigrammes des figures 4 à 7. Les détails des figures 5 à 7 reproduisent d'une manière plus détaillée certains blocs de l'organigramme général 100 de la figure 4. En se référant maintenant à la figure 4, une conversion est exécutée sur chaque expression conditionnelle à laquelle on s'intéresse du programme HDL non Verilog. La largeur en bits de la partie"ifcond"d'une expression conditionnelle IF est établie dans le bloc 110. La largeur en bits de la partie ifcond de l'expression IF suivante, par exemple est égale à 8 bits : INTERFACE (... INPUT NODE A [8] ; ...); out : =IF (a) THEN sigc ELSE siga ; La largeur en bits de l'expression conditionnelle peut être contrôlée en un certain point plus loin dans la procédure, comme par exemple après le bloc de décision 120, le bloc de décision 140, etc. La demande faite lors du bloc de décision 120 concerne le fait que l'expression ifcond est ou non une expression à bits multiples. On peut voir que, dans l'exemple précédent, dans lequel ifcond possède une largeur en bits de 8 bits, l'expression ifcond est une expression à bits multiples. Si cependant l'expression ifcond n'était pas une expression à bits multiples, la conversion normale de l'expression commencerait dans le bloc 130. Alors, dans le cas où l'expression ifcond est une expression à bits multiples, une solution spéciale pour la conversion d'expressions à bits multiples, qui prend en compte à la fois les expressions IF à bits multiples et les expressions de zones secondaires à bits multiples, est utilisée. Dans le bloc de décision 140, une demande est faite pour savoir s'il existe des bits d'omission présents dans l'expression THEN"exprl"ou dans l'expression ELSE "expr2"de l'expression IF à bits multiples. Des bits d'omission, qui sont différents de bits différents, doivent être adressés par l'unité de conversion de manière à obtenir une conversion correcte. S'il existe des bits d'émission dans exprl ou expr2, alors une nouvelle expression concaténée, dans laquelle des bits correspondants de l'expression du membre de gauche (LHS) remplacent les bits d'omission, est exécutée dans le bloc 50. Par exemple l'expression IF à bits multiples suivante, dans laquelle l'expression THEN"exprl"contient deux bits d'omission : out : = IF (a) THEN'111100 ; ELSE siga ; est concaténée comme suit : out : =IF (a) THEN {a'bllll, out [3 : 2], 2'bO0} ; ELSE siga ; Naturellement les bits d'omission pourraient également apparaître dans l'expression ELSE"expr2"et seraient traités d'une manière similaire. S'il n'existe aucun bit d'omission"exprl"ou"expr2", alors la procédure passe directement au bloc 160. Dans le bloc 160, une nouvelle instruction à opérateurs binaires, équivalente à l'expression IF à bits multiples, mais sans la syntaxe gênante IF-THEN-ELSE non supportée par le langage HDL Verilog, est créée moyennant l'utilisation des opérateurs binaires ET" & ", OU"I", et NON-ET"-"agissant au niveau du bit. Etant donné que dans une expression IF à bits multiples, chaque bit de l'expression ifcond est traité individuellement, on peut utiliser une combinaison des opérateurs & , 1 et-travail- lant au niveau du bit pour obtenir le même résultat. On va considérer les deux exemples suivants. Tout d'abord l'expression IF à bits multiples suivante, qui contient des bits d'omission : out : = IF (a) THEN'111100 ; ELSE siga ; est concaténée dans le bloc 150, comme décrit précédemment, pour fournir : out : = IF (a) THEN {4'bllll, out [3 : 2], 2'bOO} ; ELSE siga ; qui est remplacée par l'instruction d'opérateur équivalent suivante dans le bloc 160 : out : = {4'bllll, out [3 : 2], 2'bOOI & a I siga & -a ; En second lieu, on considère l'expression à bits multiples, qui ne contient aucun bit d'omission : out : = IF (a) THEN sigc ELSE siga ; Cette expression IF à bits multiples est remplacée par l'instruction d'opérateur équivalent suivante dans le bloc 160 : out = sigc & a I siga & -a ; La demande suivante concerne le fait de savoir si les expressions IF à bits multiples et/ou les expressions de zone secondaire à bits multiples (zone secondaire d'une expression vectorielle) sont imbriquées ou non dans l'expression IF à bits multiples primaire. Si c'est le cas, ces expressions imbriquées doivent être également mises sous une forme convenant pour une conversion dans le langage HDL Verilog, réalisées lors des blocs 170 et 175. Dans le bloc de détection 170, la demande concerne le fait de savoir si le THEN exprl ou l'expression ELSE expr2 est une expression IF à bits multiples et/ou une expression de zone secondaire à bits multiples. Si l'une ou l'autre des expressions exprl ou expr2 ou ces deux expressions sont des expressions de zone secondaire à bits multiples ou des expressions IF à bits multiples, alors il faut les traiter dans le bloc 175 pour créer une nouvelle instruction "always", représentative de l'instruction à opérateurs binaires, qui peut être convertie. La conversion d'expressions IF à bits multiples imbriquées sera expliquée de façon plus détaillée sur les figures 5 à 7. La conversion de l'expression IF à bits multiples est achevée dans le bloc 400. A nouveau, la détermination du type d'expression et sa conversion sont effectuées de façon correspondante pour chaque expression à laquelle on s'intéresse dans le programme HDL non Verilog, comme cela est garanti par le bloc de décision 410. Le bloc de décision 410 demande s'il existe un plus grand nombre d'expressions IF conditionnelles dans le code de langage HDL non Verilog que ce qui doit être converti. Si la réponse est oui, la procédure revient au bloc 110. Si la réponse est non, alors une synthèse peut être effectuée sur les expressions converties par un outil de synthèse logique dans le bloc 420 pour tester l'agencement de circuit logique représenté par le langage HDL non Verilog. On notera que la synthèse des instructions IF converties peut se produire après que toutes les expressions IF conditionnelles ont été converties, ou bien peut se produire lorsque chaque expression IF est convertie. En se référant maintenant à la figure 5, on va décrire des détails du bloc 175 de la figure 4 ; l'organigramme de la figure 5 est déclenché dans le bloc 170 si l'une ou l'autre de exprl et/ou expr2 est une expression à bits multiples et garantit que chaque expression imbriquée à bits multiples, qu'il s'agisse d'une expression IF ou d'une zone secondaire, est traitée de telle sorte que l'instruction à opérateurs binaires produite dans le bloc 160 peut être convertie en le format HDL Verilog (syntaxe). L'expression THEN exprl est considérée avant l'expression ELSE expr2, mais cet ordre peut être inversé si on le désire. Dans le bloc de décision 180, une demande est faite pour savoir si l'expression THEN exprl est une expression à bits multiples. S'il en est ainsi, le bloc de décision 182 détermine si l'expression THEN exprl est une expression IF à bits multiples ou non (et non une expression de zone secondaire à bits multiples). Si la réponse est oui, alors des expressions IF&num; sont créées pour l'expression IF à bits multiples exprl dans le bloc 300, de la manière représentée sur la figure 7, ces expressions remplaçant les expressions IF à bits multiples exprl dans l'instruction à opérateurs binaires. Si l'expression THEN exprl n'est pas une expression IF à bits multiples, alors la demande au niveau du bloc de décision 184 est de savoir si l'expression THEN exprl est une zone secondaire à bits multiples d'une expression vectorielle. Si la réponse est oui, alors les expressions INNE&num; sont créées pour l'expression de zone secondaire à bits multiples exprl dans le bloc 200, de la manière représentée sur la figure 6. Après le traitement de l'expression THEN exprl, l'expression ELSE expr2 est ensuite prise en compte. Lors du bloc de décision 186, la demande consiste à savoir si l'expression ELSE expr2 est une expression à bits multiples. Si ce n'est pas le cas, alors la procédure passe au bloc 195. Si l'expression ELSE expr2 est une expression à bits multiples, il faut déterminer ensuite quel type de réflexion à bits multiples est une expression IF à bits multiples ou une zone secondaire à bits multiples. Le bloc de décision 188 demande si l'expression ELSE expr2 est une expression IF à bits multiples. S'il en est ainsi, alors les expressions IF~&num; sont créées pour l'expression IF à bits multiples expr2 dans le bloc 300, ces expressions remplaçant expr2 dans l'instruction à opérateurs binaires (représentée sur la figure 7). Si l'expression ELSE expr2 n'est pas une expression IF à bits multiples, alors le bloc de décision 190 demande s'il s'agit d'une expression de zone secondaire à bits multiples d'une expression vectorielle. Si c'est le cas, alors le bloc 200 (représenté sur la figure 6) déclenche la création d'expressions INE~&num;, qui peuvent remplacer l'expression de zone secondaire à bits multiples expr2 dans l'instruction à opérateurs binaires qui a été créée dans le bloc 160. Si l'expression ELSE expr2 n'est pas une expression IF à bits multiples ni une expression à zone secondaire, alors la procédure passe directement au bloc 195. Le bloc 195 provoque la création d'une instruc- tion"always"pour chaque expression IF à bits multiples lorsque cette expression IF à bits multiples s'est avérée contenir au moins une expression à bits multiples imbriquée (bloc de décision 170). Une expression d'événement de l'instruction"always", qui est créée dans le bloc 195, contient les expression IF~&num; et/ou INNE&num; qui ont remplacé les expressions IF à bits multiples, imbriquées et/ou les expressions de zones secondaires à bits multiples et ce respectivement dans l'organigramme de la figure 5. L'ins- truction"always"est équivalente à l'instruction à opérateurs binaires créée dans le bloc 160, mais traite des expressions imbriquées à bits multiples exprl et/ou expr2, d'une manière qui permet la conversion d'instructions en un langage HDL Verilog. Comme cela est connu dans la syntaxe IEEE, l'expression d'événement d'une instruction"always" est un identifiant d'événement comme par exemple une expression de nature positive ou une expression de nature négative. L'organigramme 200 sur la figure 6 représente la méthodologie pour créer des variables IN~&num; pour chaque zone secondaire à bits multiples qui a été identifiée dans les blocs de décision 184 et 190 de la figure 5. Chaque expression de zone secondaire à bits multiples imbriquée ainsi identifiée est remplacée par un nombre incrémental créé, INE~&num;. Dans le bloc 202, le type et la largeur en bits de la zone secondaire à bits multiples (exprl ou expr2) est déterminé ; des exemples du type de zone secondaire incluent le bus à l'état TRI, le bus à l'état NTRI, etc. La variable INE~&num;, qui est créée, est du même type et possède la même largeur en bits que la zone secondaire à bits multiples. Ensuite, dans le bloc 204, une nouvelle variable d'un nombre incrémental INE &num; est créée. La variable incrémentale est représentative d'une variable correspondante de l'expression de zone secondaire à bits multiples. Si la zone secondaire contient plus d'une variable, alors une variable incrémentale INE~&num; est créée pour chaque variable de l'expression de zone secondaire, par exemple INE0 ; INE1 ; INE2 ;... ; Innen, sont créées pour une expression de zone secondaire à bits multiples imbriquée contenant n variables. Ensuite, dans le bloc 200, l'expression de zone secondaire à bits multiples est affectée à la variable incrémentale INE~&num;, et la variable incrémentale INNE&num; remplace l'expression de zone secondaire dans l'expression d'événement de l'instruction"always"qui est créée dans le bloc 195 de la figure 5. Après l'achèvement de l'organigramme de la figure 6, la procédure revient au bloc 400 de la figure 4, dans lequel le processus de conversion est terminé pour l'expression IF à bits multiples, à laquelle on s'intéresse. L'applicabilité de la figure 6 pour des expres- sions de zones secondaires à bits multiples imbriquées est en outre illustrée par l'exemple suivant. On considère l'expression IF à bits multiples suivante contenant une zone secondaire imbriquée d'une expression vectorielle, dans laquelle q, a et b possèdent chacun une largeur de 8 bits et k et h possèdent chacune une largeur de 32 bits. q : = IF (a) THEN b ELSE (k XOR h) [27 : 20] ; Conformément à la méthodologie selon la présente invention, cette expression IF à bits multiples contenant une zone secondaire à bits multiples ELSE expr2 imbriquée d'un vecteur, est convertie en l'instruction"always"équiva- lente suivante (l'étape intermédiaire de création de l'instruction à opérateurs binaires (telle qu'au niveau du bloc 160, n'est pas représentée séparément dans cet exemple) ) : always&commat; (INE 0 or k or h or b or a) begin INNE0 = (k^h) ; q = b & a 1 INE0 [27 : 20] & -a ; end L'organigramme 300 de la figure 7 représente la méthodologie de création de variables IF pour chaque expression IF à bits multiples qui a été identifiée dans des blocs de décision 182 et 188 de la figure 5. Chaque expression IF à bits multiples imbriquée est identifiée de manière à être remplacée par un nombre incrémental créé IF&num;. Dans le bloc 302, le type et la largeur en bits de l'expression IF à bits multiples (exprl ou expr2) sont déterminés. La variable IF&num;, qui est créée est du même type et possède la même largeur de bits que l'expression IF à bits multiples. Ensuite, dans le bloc 304, une nouvelle variable du nombre incrémental IF &num; est créée. L'incrément variable est représentatif d'une variable correspondante de l'expression IF à bits multiples. Si une expression IF contient plus d'une variable, alors une variable incrémentale IF~&num; est créée pour chaque variable de l'expression IF, par exemple IF0 ; IF1 ; IF2 ;... ; IFn sont créées pour une expression IF à bits multiples imbriquée contenant n variables. Dans le bloc 306 la variable incrémentale IF est définie comme possédant une ou plusieurs caractéristiques, comme par exemple la largeur et le type, qui sont égaux à une ou plusieurs caractéristiques de l'expression du membre de droite de l'instruction à opérateurs binaires. Pour une expression IF, ceci inclut de descendre au niveau des expressions exprl et expr2 pour définir la ou les variables incrémentales. Ensuite lors du bloc 308 l'expression IF à bits multiples est affectée à la variable incrémentale IF&num;, et la variable incrémentale IF~&num; remplace l'expression IF à bits multiples imbriquées, dans l'expression d'événement de l'instruction"always". Ceci est créé dans le bloc 195 de la figure 5. A la suite de l'achèvement de l'organigramme de la figure 6, la procédure revient au bloc 400 de la figure 4, dans lequel le processus de conversion est terminé pour l'expression conditionnelle actuelle à bits multiples, à laquelle on s'intéresse. Un exemple de la conversion pour une expression IF possédant une expression IF à un seul bit imbriquée peut être le suivant : q = IF (IF (a) THEN b ELSE c) THEN d ELSE e ; qui est convertie en if (a) ICC0=b ; else ICC0=c ; if (ICC0) q = d ; else q = e ; On notera que cette conversion est correcte uniquement si q, a, b, c, d et e possèdent chacun une largeur d'un seul bit. Ci-après on va indiquer la conversion de la même expression IF, qui est maintenant une expression IF à bits multiples comportant des expressions IF à bits mul- tiples, imbriquées, dans lesquelles q, a, b, c, d et e représentent une largeur à bits multiples : always &commat; (a or b or c or ICC~0 or d or e) begin ICC0 = a & b ! c & -a ; q = ICC0 & d ! e & -ICC0 ; end Comme avec l'organigramme 200 de la figure 6, à la suite de l'achèvement de l'organigramme de la figure 7, la procédure revient au bloc 400 de la figure 4. La description ci-dessus montre que, en dehors du fait de traiter la zone secondaire à bits multiples imbriquée d'une expression vectorielle, la présente invention est également bien appropriée pour traiter le problème précédemment difficile de l'expression IF à bits multiples. On va considérer l'expression IF suivante à bits multiples imbriquée, dans laquelle a et b représentent des expressions à bits multiples : q : = IF (a) THEN IF (b) THEN (c) ELSE (d) ELSE (e) ; Conformément à la méthodologie de la présente invention représentée sur les figures 4 à 5 et 7, cette expression IF à bits multiples contenant une expression imbriquée à bits multiples est convertie pour créer la nouvelle instruction suivante équivalente"always" (l'étape intermédiaire de création d'une instruction à opérateurs binaires décrite dans le bloc 160 est maintenant représentée ici en tant qu'étape séparée). always&commat; (a or b or c or ICC-0 or d or e) begin ICC0 = c & b d & -b ; q = ICC0 & a ! e & -a ; end Pour mieux représenter la méthodologie de conversion selon la présente invention, on va considérer le code suivant (précédemment indiqué au début de la présente description), qui contient l'expression IF, IF (a) THEN sigc ELSE siga ; : FUB test ; BEGIN"test" ; INTERFACE (INPUT NODE siga [8] ; INPUT NODE sigc [8] ; INPUT NODE A [8] ; OUTPUT NODE out [8]) ; STRUCTURAL MAIN ; BEGIN Out : = IF (a) THEN sigc ELSE siga ; END ; END ; Ce code est converti conformément à la présente invention en la syntaxe acceptable du langage HDL Verilog suivant : module tc2 (siga, sigc, out, a) ; input [7 : 0] siga ; input [7 : 0] sigc ; input [7 : 0] a ; output [7 : 0] out ; reg [7 : 0] out ; always &commat; (sigc or siga or a) begin out = sigc & a 1 siga & -a ; end endmodule Les schémas des figures 8 et 9 (optimisés) illustrent le résultat de synthèse qui est produit à partir du code converti indiqué plus haut, par un outil de synthèse logique. On notera que la solution optimisée est identique à la figure 3, qui était le schéma produit en utilisant la solution de force brute, dans laquelle l'expression IF à bits multiples était dilatée en un nombre N d'instructions IF. Si l'invention a été représentée et décrite d'une manière particulière en référence à un mode de mise en oeuvre préféré, les spécialistes de la technique comprendront que de nombreux changements du point de vue de la forme et des détails peuvent y être apportés sans sortir du cadre de l'invention. LEGENDES DES FIGURES Figures 1 à 3 : Pas de légendes Figure 4 : 110. Vérification de la largeur en bits de l'expression "ifcond" 120. L'expression ifcond est-elle une expression à bits multiples ? 130. Exécuter une conversion normale de l'expression IF 140. Bits d'omission dans l'expression exprl ou expr2 ? 150. Création d'une nouvelle expression de concaténation, dans laquelle des bits correspondants de l'expression LHS remplacent les bits d'omission 160. Elimination de l'expression IF et création d'une instruction à opérateurs binaires avec deux & , un"I"et un "-", équivalent à l'expression IF à bits multiples 170. exprl et/ou expr2 sont-elles une expression IF à bits multiples ou une expression de zone secondaire à bits multiples' ? 175. Traitement de la ou des expressions pour créer une instruction"always"équivalente à l'instruction de l'opérateur binaire (160) 400. Fin de la conversion de l'expression IF à bits multiples 410. Y-a-t-il d'autres expressions IF à convertir ? 420. Exécution de la synthèse sur les expressions traduites a. Départ b. fin Sur cette figure remplacer YES par OUI et NO par NON. Figure 5 : 180. exprl est-elle une expression à bits multiples ? 182. exprl est-elle une expression IF à bits multiples 184. exprl est-elle une zone secondaire d'une expression vectorielle ? 200. Création d'une ou d'expressions INE~&num; pour une expression de zone secondaire à bits multiples et utilisation pour remplacer la ou les zones secondaires à bits multiples dans l'indication à opérateurs binaires 300. Création d'une ou d'expressions IF~&num; pour l'expression IF à bits multiples et utilisation pour remplacer la ou les expressions IF à bits multiples dans l'indication à opérateurs binaires 186. expr2 est-elle une expression à bits multiples ? 188. expr2 est-elle une expression IF à bits multiples ? 190. expr2 est-elle une zone secondaire d'une expression vectorielle ? 195. Création d'une instruction"always"représentative de l'instruction à opérateurs binaires a. Départ b. Fin Sur cette figure remplacer YES par OUI et NO par NON. Figure 6 : 202. Détermination du type et de la largeur en bits de la zone secondaire à bits multiples 204. Création d'une nouvelle variable avec le nombre d'un nombre incrémental INE~&num;, c'est-à-dire INE0 ; INE1 ; INE2 ... INEn, possédant le même type et la même largeur qu'une zone secondaire à bits multiples 206. Affectation d'une expression correspondante à l'expression de la variable INE (INE~&num;) a. Départ b. Retour Figure 7 : 302. Détermination du type et de la largeur en bits de l'expression IF à bits multiples 304. Création d'une nouvelle variable avec le nom d'un nombre incrémental IF&num;, par exemple IF0 ; IF1 ; IF~2... IF n, possédant le même type et la même largeur que l'expression IF à bits multiples 306. Définition d'une variable incrémentale pour obtenir une ou des caractéristiques égales à une des caracté- ristiques d'une expression du membre de droite de l'instruction à opérateurs binaires 308. Affectation d'une expression correspondante à une expression de variable IF (IF~&num;) a. Départ b. Retour Figures 8 et 9 : Pas de légendes REVENDICATIONS 1. Procédé (100) pour convertir des expressions conditionnelles à bits multiples d'un programme en langage de description matériel HDL non Verilog, utilisé pour spécifier un agencement logique, en un langage HDL Verilog, caractérisé en ce qu'il comprend : a) pour une expression conditionnelle du programme non en langage HDL non-Verilog, possédant un format IF ifcond THEN exprl ELSE expr2, déterminant une largeur en bits de l'expression conditionnelle (110) ; b) comprenant, si l'expression conditionnelle est une expression à bits multiples (120) : 1) la création d'une instruction à opérateurs binaires comprenant une pluralité à opérateurs binaires tra- vaillant au niveau du bit, qui est équivalente à l'expression conditionnelle (160) ; 2) la détermination du fait qu'au moins l'expression exprl ou l'expression expr2 sont des expressions à bits multiples imbriquées dans l'instruction à opérateurs binaires (170) ; 3) si au moins l'une de l'expression exprl et ou de l'expression expr2 est une expression à bits mul- tiples imbriquée dans l'instruction à opérateurs binaires, le traitement d'au moins une de l'expres- sion exprl et de l'expression expr2 pour créer une instruction"always"équivalant à l'instruction à opérateurs binaires et comportant la pluralité d'opé- rateurs binaires travaillant au niveau du bit, contenant une ou plusieurs variables incrémentales représentatives de la au moins une des expressions exprl et expr2, qui sont des expressions à bits mul- tiples, et la conversion de l'instruction"always" pour produire une instruction en langage HDL Verilog équivalente à l'expression conditionnelle (175,200, 300,400) i 4) si la au moins une des expressions exprl ou expr2 n'est pas une expression à bits multiples (170), la conversion de l'instruction à opérateurs binaires pour produire une instruction de langage HDL Verilog équivalente à l'expression conditionnelle (400) ; c) la répétition de a) -b) pour chaque expression condi- tionnelle d'une pluralité d'expressions conditionnelles du programme en langage HDL non Verilog pour produire une pluralité d'instructions en langage HDL Verilog équivalente à la pluralité d'expressions conditionnelles (410) ; et d) l'exécution de la synthèse portant sur la pluralité d'instructions en langage HDL Verilog pour produire un circuit logique représentatif du programme en langage HDL non Verilog (420). 2. Procédé selon la revendication 1, caractérisé en ce que la pluralité d'opérateurs binaires travaillant au niveau'du bit de l'instruction à opérateurs binaires comprennent un premier opérateur ET, un second opérateur ET, un opérateur OU et un opérateur NON-ET. 3. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre : si l'expression conditionnelle n'est pas une expression à bits multiples, l'exécution d'une opération de conversion normale pour produire l'instruction équivalente (120,130) en langage HDL Verilog. 4. Procédé selon la revendication 1, caractérisé en ce qu'avant la création de l'instruction à opérateurs binaires, il comprend en outre : la détermination du fait que l'expression exprl ou l'expression expr2 de l'expression conditionnelle comporte des bits d'omission (140) ; si l'expression expr2 possède un ou plusieurs bits d'omission de exprl, la création d'une expression exprl concaténée, dans laquelle un ou plusieurs bits d'omission exprl sont remplacés par des bits de exprl correspondants d'une expression du membre de gauche de l'expression conditionnelle (150) ; et si l'expression expr2 comporte un ou plusieurs bits d'omission de expr2, la création d'une expression expr2 concaténée, dans laquelle le ou la pluralité de bits d'omission de expr2 sont remplacés par des bits expr2 correspondants de l'expression du membre de gauche (150). 5. Procédé (100) de conversion d'expressions conditionnelles à bits multiples, d'un programme en langage de description matériel (HDL) non Verilog utilisé pour spécifier un agencement logique, en un langage HDL Verilog, caractérisé en ce qu'il comprend : a) pour une expression conditionnelle du programme en langage HDL non Verilog, possédant un format IF ifcond THEN exprl ELSE expr2, déterminant une largeur en bits de l'expression conditionnelle (110) ; b) comprenant, si l'expression conditionnelle est une expression à bits multiples (120) : 1) la création d'une instruction à opérateurs binaires comprenant une pluralité d'opérateurs binaires tra- vaillant au niveau du bit, qui est équivalente à l'expression conditionnelle (160) ; 2) la détermination du fait qu'au moins l'expression exprl ou l'expression expr2 sont des expressions à bits multiples imbriquées dans l'instruction à opérateurs binaires (170) ; 3) si au moins l'une de l'expression exprl et ou de l'expression expr2 est une expression à bits mul- tiples imbriquée dans l'instruction à opérateurs binaires, la conversion de l'instruction à opérateurs binaires pour produire une instruction en langage HDL Verilog équivalente à l'expression conditionnelle (170,400) ; 4) Si au moins l'une des expressions exprl et expr2 est une expression à bits multiples imbriquée avec l'instruction à opérateurs binaires (170, 175), comprenant en outre : A) si l'expression exprl est une expression IF à bits multiples (182), la création d'une ou de plusieurs variables exprl IF sous la forme exprl IF~&num; et le remplacement de l'expression exprl par une ou plusieurs variables exprl IF dans une instruction "always", qui est équivalente à l'instruction à opérateurs binaires (300,195) ; B) si l'expression exprl est une zone secondaire exprl à bits multiples (184), la création d'une ou de plusieurs variables exprl de zone secondaire sous la forme exprl INNE&num; et le remplacement de l'expression exprl par une ou plusieurs variables exprl de zone secondaire dans la section"always" (200, 195) ; C) si l'expression expr2 est une expression expr2 IF à bits multiples (188), la création d'une ou de plusieurs variables expr2 IF sous la forme expr2 IF~&num; et le remplacement de l'expression expr2 par une ou la pluralité des variables expr2 IF dans l'instruction"always" (300,195) ; D) si l'expression expr2 est une zone secondaire expr2 à bits multiples (190), la création d'une ou de plusieurs variables expr2 de zone secondaire sous la forme expr2 INNE&num; et le remplacement de l'expression expr2 par une ou plusieurs variables expr2 de zone secondaire dans l'instruction "always" (200, 195) ; et E) la conversion de l'instruction"always"pour produire une instruction en langage HDL Verilog équivalente à l'expression conditionnelle (400) ; c) la répétition de a) -b) pour chaque expression condi- tionnelle d'une pluralité d'expressions conditionnelles du programme non en langage HDL Verilog pour produire une pluralité d'instructions en langage HDL Verilog équivalente à la pluralité d'expressions conditionnelles (410) ; et d) l'exécution de la synthèse portant sur la pluralité d'instructions en langage HDL Verilog pour produire un circuit logique représentatif du programme en langage HDL non Verilog (420). 6. Procédé selon la revendication 5, selon lequel la création d'une ou plusieurs variables exprl IF et le remplacement de l'expression exprl par une ou plusieurs variables exprl IF si l'expression exprl est une expression exprl IF à bits multiples (300), caractérisé en ce qu'il comprend en outre : la détermination d'un type et d'une largeur en bits de l'expression exprl (302) ; la création d'une ou de plusieurs variables exprl IF possédant le type et la largeur en bits multiples de l'expression exprl (304) ; la définition de la variable ou de la pluralité de variables exprl IF pour qu'elles possèdent les caractéristiques équivalentes à une expression du membre de droite de l'instruction à opérateurs binaires (306) ; et l'affectation de l'expression exprl à une ou à la pluralité de variables exprl IF (308). 7. Procédé selon la revendication 5, caractérisé en ce que la création d'une ou de plusieurs variables exprl de zone secondaire et le remplacement de l'expression exprl avec la variable ou la pluralité de variables exprl de zone secondaire si l'expression exprl est une zone secondaire exprl à bits multiples (200), caractérisé en ce qu'il comprend en outre : la détermination d'un type et d'une largeur en bits de l'expression exprl (202) ; la création d'une ou plusieurs variables exprl de zone secondaire comportant le type et la largeur en bits du type de l'expression exprl (204) ; et l'affectation de l'expression exprl à une ou plusieurs variables exprl de zone secondaire (206). 8. Procédé selon la revendication 5, selon lequel la création d'une ou plusieurs variables expr2 IF et le remplacement de l'expression expr2 par une ou plusieurs variables expr2 IF si l'expression exprl est une expression expr2 à bit-bit IF (300), caractérisé en ce qu'il comprend en outre : la détermination d'un type et d'une largeur en bits de l'expression expr2 (302) ; la création d'une ou de plusieurs variables expr2 IF possédant le type et la largeur en bits de type de l'expression expr2 (304) ; la définition d'une ou de la pluralité de variables expr2 IF pour qu'elles possèdent les caractéristiques'équivalentes à une expression du membre de droite de l'instruction à opérateurs binaires (306) ; et l'affectation de l'expression expr2 à une ou plusieurs variables expr2 IF (308). 9. Procédé selon la revendication 5, selon lequel la création de la ou de la pluralité de variables expr2 de zone secondaire et le remplacement de l'expression expr2 par la ou la pluralité de variables expr2 de zone secondaire si l'expression expr2 est une zone secondaire expr2 à bits multiples (200), caractérisé en ce qu'il comprend en outre : la détermination d'un type et d'une largeur en bits de l'expression expr2 (202) ; la création d'une ou de la pluralité de variables expr2 de zone secondaire comportant le type, la largeur en bits de type de l'expression expr2 (204) ; et l'affectation de l'expression expr2 à la ou à la pluralité de variables exprl de zone secondaire (206). 10. Procédé selon la revendication 5, caractérisé en ce qu'il comprend en outre : si l'expression conditionnelle n'est pas une expression à bits multiples (120), l'exécution d'une opération de conversion normale pour produire l'instruction équivalente au langage HDL Verilog (130).