Chapitre II. Etude comparative des outils commerciaux de synthèse
V.2. Forme intermédiaire utilisée : COLIF 80
V.4.2. Les parseurs d’interface
Le premier parseur analyse la partie déclarative (i.e. interface au niveau fonctionnel) de
chaque DSP-IP Matlab et fournit une structure COLIF (module COLIF) contenant toutes les
informations caractérisant l’interface. Les informations extraites sont : -- **************************************
-- INTERNAL USE ONLY
-- <company_name> - <division_name> -- ************************************** -- -- Project name : -- Library name : -- Global package : -- -- Entity : <ip_name> -- Architecture : rtl
-- Designer name : <author_name> -- Company name : <company_name> -- Division : <division_name> -- -- Description : TO_BE_DEFINED -- -- Parameters : TO_BE_DEFINED --
-- Input ports : TO_BE_DEFINED --
-- Output ports : TO_BE_DEFINED --
-- Creation date : <date> (<author_name>)
-- Modification : --
-- ******** REVISION HISTORY *********** --
-- Date Modification Initials -- ---- --- --- -- <date> Creation <author_initial> library ieee; use ieee.STD_LOGIC_1164.all; use ieee.STD_LOGIC_unsigned.all; use ieee.STD_LOGIC_signed.all; use ieee.std_logic_misc.all; use ieee.std_logic_arith.all; library UTILS; use UTILS.utils_pkg.all; --- entity <ip_name> is generic ( <param_name1> : <param_datatype1>; ... <param_nameN> : <param_datatypeN-1> ); port ( <in_name1> : in <in_datatype1>; ... <in_nameN> : in <in_datatypeN>; <out_name1> : out <out_datatype1>; ...
<out_nameN> : out <out_datatypeN> );
end <ip_name>;
--- architecture rtl of <ip_name> is -- data type and constant declaration -- --- TO_BE_DEFINED -- component declaration -- --- TO_BE_DEFINED -- signal declaration -- ---
signal <in_name1>_s : <in_datatype1>; ...
signal <in_nameN>_s : <inport_datatypeN>; signal <out_name1>_s : <out_datatype1>; ...
signal <out_nameN>_s : <out_datatypeN>; TO_BE_DEFINED
--- begin
-- connect I/O to signals --- <inport_name1>_s <= <inport_name1>; ... <inport_nameN>_s <= <inport_nameN>; <outport_name1> <= <outport_name1>_s; ... <outport_nameN> <= <outport_nameN>_s; TO_BE_DEFINED end rtl; page 1 page 2
Chapitre V. Implémentation de la méthodologie en un flot de conception
− le nom de la fonction (i.e. le nom de l’IP)
− une liste de valeurs de retour correspondant aux signaux de sortie.
− une liste de paramètres. Ces paramètres peuvent se diviser en trois types : o les paramètres correspondants aux signaux d’entrée traités par l’IP.
o une référence vers un fichier texte contenant la liste des valeurs de paramètre
de l’application.
o un identificateur (entier) permettant de distinguer une instance de l’IP des
autres instances.
Par convention, pour distinguer les différents types de paramètres, nous adoptons la
convention suivante :
− les (N-2) premiers paramètres concernent les signaux d’entrée (N étant le nombre de paramètres de l’IP).
− l’avant-dernier paramètre est la référence sur le fichier de paramètres.
− le dernier paramètre est l’identificateur.
L’interface d’un IP fonctionne l en Matlab est spécifiée par le patron de la figure 23.
Figure 23. Patron de la déclaration de fonction en Matlab
La figure 24 donne un exemple d’IP Matlab et la structure COLIF associée.
function [<outport_list>]
= <IP_name> (<inport_list>,<parameter_file>,<id>) où :
- <outport_list> <outport1_name> , … , <output_portN_name> - <inport_list> <inport1_name> , … , <inportN_name>
Chapitre V. Implémentation de la méthodologie en un flot de conception
91
Figure 24. Exemple d’IP Matlab (haut) et structure COLIF associée (bas)
De même, le second parseur analyse la partie entité au sens VHDL du terme (i.e. interface
au niveau RTL) de chaque IP RTL et fournit une structure COLIF (module COLIF) contenant
les informations relatives à l’interface. Les informations extraites sont :
− le nom de l’entité (i.e. nom de l’IP)
− une liste de paramètres. Chaque paramètre est défini par un nom, un type de donnée et optionnellement par une valeur par défaut.
− une liste de ports. Chaque port est défini par un nom, une direction (IN ou OUT) et un type de donnée (std_logic, std_logic_vector, etc.). Il est important de noter qu’un IP
RTL contient plus de ports qu’un IP fonctionnel. En effet, un IP fonctionnel contient
les ports liés au flot de données alors qu’un IP RTL contient les ports liés au flot de
données ainsi que des ports tels que le port d’horloge, de reset, de contrôle du flot de
données, de tests, etc.
L’interface d’un IP fonctionnel en Matlab est spécifiée par le patron de la figure 25. function [data_out1, data_out2] = IP1(data_in, pkg_file, id)
% corps de la fonction … data_in data_out1 data_out2 module : IP1 parameter_list : pkg_file
Chapitre V. Implémentation de la méthodologie en un flot de conception
Figure 25. Patron de la déclaration d’entité en VHDL
La figure 26 donne un exemple d’IP VHDL et la structure COLIF associée.
Figure 26. Exemple d’IP VHDL (haut) et structure COLIF associée (bas)
entity <IP_name> is
generic( <param_list> ); port ( <port_list> ); end <IP_name>;
où :
- <param_list> <param_decl1> ; … ; <param_declN> - <port_list> <port_decl1> ; … ; <port_declN>
- <param_decl> <param_name> : <param_type> := <default_val> - <param_decl> <param_name> : <param_type>
- <port_decl> <port_name> : <direction> <port_type> - <direction> IN | OUT
entity IP1 is generic (
nbit : integer ); port (
data_in : in std_logic_vector(nbit downto 0); data_out1 : out std_logic_vector(nbit downto 0); data_out2 : out std_logic_vector(nbit downto 0); clk : in std_logic; nrst : in std_logic; enable : in std_logic); end IP1; -- architecture … module : IP1 parameter_list : nbit data_in* clk** data_out2* data_out1* nrst** enable** *
: le port inclut aussi le type (i.e. std_logic_vector(nbit…) )
** : le port inclut aussi le type (i.e. std_logic)
Chapitre V. Implémentation de la méthodologie en un flot de conception
93
Ces analyses des interfaces des IP sont faites une fois et une seule fois pour toute lors de
l’insertion d’un nouvel IP dans la librairie. Ces informations seront utilisées pour les
différents outils de la partie « conception par assemblage d’IP ».