Browse Source

Version fonctionnelle processeur non sécurisé

Paul Faure 2 years ago
parent
commit
f25ee2735a

+ 2
- 1
.gitignore View File

4
 Processeur.runs/*
4
 Processeur.runs/*
5
 Processeur.sim/*
5
 Processeur.sim/*
6
 vivado*
6
 vivado*
7
-.Xil
7
+.Xil
8
+*.log

+ 2
- 3
Processeur.srcs/sim_1/new/Test_Pipeline.vhd View File

45
              Instruction_Bus_Size : Natural := 5;
45
              Instruction_Bus_Size : Natural := 5;
46
              Nb_Instructions : Natural := 32;
46
              Nb_Instructions : Natural := 32;
47
              Nb_Registres : Natural := 16;
47
              Nb_Registres : Natural := 16;
48
-             Memoire_Size : Natural := 32;
49
-             Memoire_Adresses_Retour_Size : Natural := 16;
50
-             Adresse_Memoire_Adresses_Retour_Size : Natural := 4);
48
+             Memoire_Size : Natural := 32);
51
     Port (CLK : STD_LOGIC;
49
     Port (CLK : STD_LOGIC;
52
           RST : STD_LOGIC;
50
           RST : STD_LOGIC;
53
           STD_IN : in STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
51
           STD_IN : in STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
80
     
78
     
81
     process 
79
     process 
82
     begin
80
     begin
81
+        my_STD_IN <= "00000001" after 300 us, "00000010" after 710 us, "00000011" after 1120 us, "00000100" after 1530 us, "00000101" after 1940 us, "00000110" after 2350 us, "00000111" after 2760 us, "00001000" after 3170 us, "00001001" after 3580 us, "00000000" after 3990 us; 
83
         wait;
82
         wait;
84
     end process;
83
     end process;
85
 end Behavioral;
84
 end Behavioral;

+ 22
- 57
Processeur.srcs/sources_1/new/Etage1_LectureInstruction.vhd View File

31
              Nb_bits : Natural; -- Taille d'un mot binaire
31
              Nb_bits : Natural; -- Taille d'un mot binaire
32
              Instruction_bus_size : Natural; -- Nombre de bits du bus d'instruction (Taille d'un code instruction)
32
              Instruction_bus_size : Natural; -- Nombre de bits du bus d'instruction (Taille d'un code instruction)
33
              Nb_registres : Natural; -- Nombre de registres du processeurs
33
              Nb_registres : Natural; -- Nombre de registres du processeurs
34
-             Mem_adresse_retour_size : Natural; -- Taille de la mémoire des adresses de retour (nombre d'adresse maximum) (profondeur d'appel maximale)
35
-             Adresse_size_mem_adresse_retour : Natural; -- Nombre de bits pour adresser la mémoire des adresses de retour
36
              Instructions_critiques_lecture_A : STD_LOGIC_VECTOR; -- Vecteur de bit représentant les instruction critiques sur l'opérande A (si le bit i est a un, l'instruction i lit une valeur dans le registre n°opérandeA)
34
              Instructions_critiques_lecture_A : STD_LOGIC_VECTOR; -- Vecteur de bit représentant les instruction critiques sur l'opérande A (si le bit i est a un, l'instruction i lit une valeur dans le registre n°opérandeA)
37
              Instructions_critiques_lecture_B : STD_LOGIC_VECTOR; -- Vecteur de bit représentant les instruction critiques sur l'opérande B (si le bit i est a un, l'instruction i lit une valeur dans le registre n°opérandeB)
35
              Instructions_critiques_lecture_B : STD_LOGIC_VECTOR; -- Vecteur de bit représentant les instruction critiques sur l'opérande B (si le bit i est a un, l'instruction i lit une valeur dans le registre n°opérandeB)
38
              Instructions_critiques_lecture_C : STD_LOGIC_VECTOR; -- Vecteur de bit représentant les instruction critiques sur l'opérande C (si le bit i est a un, l'instruction i lit une valeur dans le registre n°opérandeC)
36
              Instructions_critiques_lecture_C : STD_LOGIC_VECTOR; -- Vecteur de bit représentant les instruction critiques sur l'opérande C (si le bit i est a un, l'instruction i lit une valeur dans le registre n°opérandeC)
58
     Port ( CLK : in STD_LOGIC; -- Clock
56
     Port ( CLK : in STD_LOGIC; -- Clock
59
            RST : in STD_LOGIC; -- Reset
57
            RST : in STD_LOGIC; -- Reset
60
            Z : in STD_LOGIC;   -- Flag Zero de l'ALU (utile pour le JMZ)
58
            Z : in STD_LOGIC;   -- Flag Zero de l'ALU (utile pour le JMZ)
59
+           Addr_Retour : in STD_LOGIC_VECTOR (Nb_bits - 1 downto 0); -- Entrée de l'adresse de retour depuis l'étage 4
61
            A : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0); -- Sortie de l'opérande A
60
            A : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0); -- Sortie de l'opérande A
62
            B : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0); -- Sortie de l'opérande B
61
            B : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0); -- Sortie de l'opérande B
63
            C : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0); -- Sortie de l'opérande C
62
            C : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0); -- Sortie de l'opérande C
75
            D_OUT : out STD_LOGIC_VECTOR (Nb_bits-1 downto 0) := (others => '0'));
74
            D_OUT : out STD_LOGIC_VECTOR (Nb_bits-1 downto 0) := (others => '0'));
76
     end component;
75
     end component;
77
     
76
     
78
-    component MemoireAdressesRetour is
79
-        Generic (Nb_bits : Natural;
80
-                 Addr_size : Natural;
81
-                 Mem_size : Natural);
82
-        Port ( R : in STD_LOGIC;
83
-               W : in STD_LOGIC;
84
-               D_IN : in STD_LOGIC_VECTOR (Nb_bits-1 downto 0);
85
-               RST : in STD_LOGIC;
86
-               CLK : in STD_LOGIC;
87
-               D_OUT : out STD_LOGIC_VECTOR (Nb_bits-1 downto 0) := (others => '0');
88
-               E : out STD_LOGIC;
89
-               F : out STD_LOGIC);
90
-    end component;
91
-    
92
     -- Signaux pour récuperer l'instruction de la mémoire
77
     -- Signaux pour récuperer l'instruction de la mémoire
93
     signal Pointeur_instruction : STD_LOGIC_VECTOR (Addr_size_mem_instruction - 1 downto 0) := (others => '0');
78
     signal Pointeur_instruction : STD_LOGIC_VECTOR (Addr_size_mem_instruction - 1 downto 0) := (others => '0');
94
-    signal Pointeur_instruction_next : STD_LOGIC_VECTOR (Addr_size_mem_instruction - 1 downto 0) := (0 => '1', others => '0');
95
     signal Instruction_courante : STD_LOGIC_VECTOR (Instruction_size_in_memory - 1 downto 0) := (others => '0');
79
     signal Instruction_courante : STD_LOGIC_VECTOR (Instruction_size_in_memory - 1 downto 0) := (others => '0');
96
     
80
     
97
     
81
     
99
     subtype Registre is integer range -1 to Nb_registres - 1;
83
     subtype Registre is integer range -1 to Nb_registres - 1;
100
     type Tab_registres is array (1 to 3) of Registre;
84
     type Tab_registres is array (1 to 3) of Registre;
101
     signal Tableau : Tab_registres := (others => - 1);
85
     signal Tableau : Tab_registres := (others => - 1);
102
-    
103
-    -- Signaux de gestion pour la mémoire des adresses de retour
104
-    signal Adresse_Retour : STD_LOGIC_VECTOR (Addr_size_mem_instruction - 1 downto 0) := (others => '0');
105
-    signal E : STD_LOGIC;
106
-    signal F : STD_LOGIC;
107
-    signal R_Aux : STD_LOGIC := '0';
108
-    signal W_Aux : STD_LOGIC := '0';
109
 
86
 
110
     -- constantes pour injecter des bulles dans le pipeline
87
     -- constantes pour injecter des bulles dans le pipeline
111
     constant Instruction_nulle : STD_LOGIC_VECTOR (Instruction_bus_size - 1 downto 0) := (others => '0');
88
     constant Instruction_nulle : STD_LOGIC_VECTOR (Instruction_bus_size - 1 downto 0) := (others => '0');
127
                  Mem_size => Mem_instruction_size)
104
                  Mem_size => Mem_instruction_size)
128
     port map (Addr => Pointeur_Instruction,
105
     port map (Addr => Pointeur_Instruction,
129
               D_OUT => Instruction_courante);
106
               D_OUT => Instruction_courante);
130
-              
131
-    instance_MemoireAdressesRetour : MemoireAdressesRetour
132
-    generic map (Nb_bits => Addr_size_mem_instruction,
133
-                 Addr_size => Adresse_size_mem_adresse_retour,
134
-                 Mem_size => Mem_adresse_retour_size
135
-    )
136
-    port map ( R => R_Aux,
137
-               W => W_Aux,
138
-               D_IN => Pointeur_instruction_next,
139
-               RST => RST,
140
-               CLK => CLK,
141
-               D_OUT => Adresse_Retour,
142
-               E => E,
143
-               F => F
144
-    );
145
 
107
 
146
               
108
               
147
     process 
109
     process 
166
             if (not bulles) then
128
             if (not bulles) then
167
                 -- S'il ne faut pas injecter de bulles ont traite l'instruction (Possible code factorisable sur ce if)
129
                 -- S'il ne faut pas injecter de bulles ont traite l'instruction (Possible code factorisable sur ce if)
168
                 if ((Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits) = Code_Instruction_CALL) or (Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits) = Code_Instruction_JMP)) then
130
                 if ((Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits) = Code_Instruction_CALL) or (Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits) = Code_Instruction_JMP)) then
169
-                    -- CAS PARTICULIER : CALL ou JMP, on transmet et on saute
170
-                    C <= Instruction_courante (1 * Nb_bits - 1 downto 0 * Nb_bits);
131
+                    -- CAS PARTICULIER : CALL ou JMP, on transmet (en modifiant le paramètre A pour le CALL (addr de retour à stocker))et on saute
132
+                    C <= Instruction_courante (1 * Nb_bits - 1 downto 0 * Nb_bits); -- STOCKER
171
                     B <= Instruction_courante (2 * Nb_bits - 1 downto 1 * Nb_bits);
133
                     B <= Instruction_courante (2 * Nb_bits - 1 downto 1 * Nb_bits);
172
-                    A <= Instruction_courante (3 * Nb_bits - 1 downto 2 * Nb_bits);
134
+                    A <= ((Nb_bits - 1 downto Addr_size_mem_instruction => '0') & Pointeur_Instruction) + 1;
173
                     Instruction <= Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits);
135
                     Instruction <= Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits);
174
                     Pointeur_Instruction <= Instruction_courante (2 * Nb_bits + Addr_size_mem_instruction - 1 downto 2 * Nb_bits);
136
                     Pointeur_Instruction <= Instruction_courante (2 * Nb_bits + Addr_size_mem_instruction - 1 downto 2 * Nb_bits);
175
                 elsif (Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits) = Code_Instruction_RET) then
137
                 elsif (Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits) = Code_Instruction_RET) then
176
-                    -- CAS PARTICULIER : RET, on transmet et on revient 
177
-                    C <= Instruction_courante (1 * Nb_bits - 1 downto 0 * Nb_bits);
178
-                    B <= Instruction_courante (2 * Nb_bits - 1 downto 1 * Nb_bits);
179
-                    A <= Instruction_courante (3 * Nb_bits - 1 downto 2 * Nb_bits);
180
-                    Instruction <= Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits);
181
-                    Pointeur_Instruction <= Adresse_Retour;
138
+                    -- CAS PARTICULIER : RET, on transmet une seule fois, on attend et on revient 
139
+                    compteur <= compteur + 1;
140
+                    if (compteur = 1) then
141
+                        C <= Instruction_courante (1 * Nb_bits - 1 downto 0 * Nb_bits);
142
+                        B <= Instruction_courante (2 * Nb_bits - 1 downto 1 * Nb_bits);
143
+                        A <= Instruction_courante (3 * Nb_bits - 1 downto 2 * Nb_bits);
144
+                        Instruction <= Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits);
145
+                    elsif (compteur = 5) then
146
+                        Pointeur_Instruction <= Addr_Retour (Addr_size_mem_instruction - 1 downto 0);
147
+                        compteur <= 0;
148
+                    else 
149
+                        C <= Argument_nul;
150
+                        B <= Argument_nul;
151
+                        A <= Argument_nul;
152
+                        Instruction <= Instruction_nulle;
153
+                    end if;
182
                 elsif (Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits) = Code_Instruction_JMZ) then
154
                 elsif (Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits) = Code_Instruction_JMZ) then
183
                     -- CAS PARTICULIER : JMZ, on attends que l'instruction précedente arrive sur l'ALU, si le flag Zero est a un on saute, sinon on continue normalement
155
                     -- CAS PARTICULIER : JMZ, on attends que l'instruction précedente arrive sur l'ALU, si le flag Zero est a un on saute, sinon on continue normalement
184
                     compteur <= compteur + 1;
156
                     compteur <= compteur + 1;
203
                             locked <= true;
175
                             locked <= true;
204
                         end if;
176
                         end if;
205
                         compteur <= compteur + 1;
177
                         compteur <= compteur + 1;
206
-                        if (compteur + 1 = to_integer(unsigned(Instruction_courante (3 * Nb_bits - 1 downto 2 * Nb_bits)))) then
178
+                        if (compteur + 1 = to_integer(unsigned(Instruction_courante (3 * Nb_bits - 1 downto 2 * Nb_bits))) * 1000) then
207
                             Pointeur_Instruction <= Pointeur_Instruction + 1;
179
                             Pointeur_Instruction <= Pointeur_Instruction + 1;
208
                             compteur <= 0;
180
                             compteur <= 0;
209
                         end if;
181
                         end if;
278
         )
250
         )
279
     );
251
     );
280
     
252
     
281
-    -- Gestion de l'écriture/lecture dans la mémoire des adresses de retour
282
-    R_Aux <= '1' when Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits) = Code_Instruction_RET else
283
-             '0';
284
-    W_Aux <= '1' when Instruction_courante (Instruction_bus_size + 3 * Nb_bits - 1 downto 3 * Nb_bits) = Code_instruction_CALL else
285
-             '0';
286
-             
287
-             
288
-    Pointeur_instruction_next <= Pointeur_instruction + 1;
253
+
289
 end Behavioral;
254
 end Behavioral;

+ 1
- 1
Processeur.srcs/sources_1/new/Etage2-5_Registres.vhd View File

168
     
168
     
169
     -- Un multiplexeur pourrait être utilisé ici, mais cela n'a pas été jugé pertinent
169
     -- Un multiplexeur pourrait être utilisé ici, mais cela n'a pas été jugé pertinent
170
     Entree_BancRegistre_DATA <= (others => '0') when RST = '0' else
170
     Entree_BancRegistre_DATA <= (others => '0') when RST = '0' else
171
-                                STD_IN when IN_2_Instruction = Code_Instruction_GET else
171
+                                STD_IN when IN_5_Instruction = Code_Instruction_GET else
172
                                 IN_5_B;
172
                                 IN_5_B;
173
     
173
     
174
     
174
     

+ 13
- 5
Processeur.srcs/sources_1/new/Etage4_Memoire.vhd View File

169
     CALL_Aux <= '1' when IN_Instruction = Code_Instruction_CALL else
169
     CALL_Aux <= '1' when IN_Instruction = Code_Instruction_CALL else
170
              '0';
170
              '0';
171
              
171
              
172
-    New_EBP <= EBP + IN_B (Adresse_mem_size - 1 downto 0) + 2;
173
-    EBP <= New_EBP when CLK'event and CLK='1' and IN_Instruction = Code_Instruction_CALL else 
174
-           Last_EBP (Adresse_mem_size - 1 downto 0) when CLK'event and CLK='1' and IN_Instruction = Code_Instruction_RET else
175
-           (others => '0') when RST = '0' else 
176
-           EBP;
172
+    process 
173
+    begin
174
+        wait until CLK'event and CLK = '1';
175
+        if (IN_Instruction = Code_Instruction_CALL) then
176
+            EBP <= New_EBP;
177
+        elsif (IN_Instruction = Code_Instruction_RET) then 
178
+            EBP <= Last_EBP (Adresse_mem_size - 1 downto 0);
179
+        elsif (RST = '0') then
180
+            EBP <= (others => '0');
181
+        end if;
182
+    end process;
183
+           
184
+   New_EBP <= EBP + IN_B (Adresse_mem_size - 1 downto 0) + 2;
177
     IN_EBP <= (Nb_bits - 1 downto Adresse_mem_size => '0') & EBP;
185
     IN_EBP <= (Nb_bits - 1 downto Adresse_mem_size => '0') & EBP;
178
            
186
            
179
     Addr_MemoireDonnees_EBP <= IN_Addr_MemoireDonnees + EBP;
187
     Addr_MemoireDonnees_EBP <= IN_Addr_MemoireDonnees + EBP;

+ 7
- 2
Processeur.srcs/sources_1/new/MemoireDonnees.vhd View File

47
                 MEMORY (((to_integer(unsigned(Addr)) + 1) * Nb_bits - 1) downto Nb_bits * to_integer(unsigned(Addr))) <= IN_EBP;
47
                 MEMORY (((to_integer(unsigned(Addr)) + 1) * Nb_bits - 1) downto Nb_bits * to_integer(unsigned(Addr))) <= IN_EBP;
48
                 MEMORY (((to_integer(unsigned(Addr)) + 2) * Nb_bits - 1) downto Nb_bits * (to_integer(unsigned(Addr)) + 1)) <= IN_AddrRet;
48
                 MEMORY (((to_integer(unsigned(Addr)) + 2) * Nb_bits - 1) downto Nb_bits * (to_integer(unsigned(Addr)) + 1)) <= IN_AddrRet;
49
             elsif (RET = '1') then
49
             elsif (RET = '1') then
50
-                OUT_EBP <= MEMORY (((to_integer(unsigned(Addr)) - 1) * Nb_bits - 1) downto Nb_bits * (to_integer(unsigned(Addr)) - 2));
51
-                OUT_AddrRet <= MEMORY ((to_integer(unsigned(Addr)) * Nb_bits - 1) downto Nb_bits * (to_integer(unsigned(Addr)) - 1));
50
+                MEMORY (((to_integer(unsigned(Addr)) - 1) * Nb_bits - 1) downto ((to_integer(unsigned(Addr)) - 2) * Nb_bits)) <= MEMORY (((to_integer(unsigned(Addr)) + 1) * Nb_bits - 1) downto Nb_bits * to_integer(unsigned(Addr)));
52
             elsif (RW = '0') then
51
             elsif (RW = '0') then
53
                 MEMORY (((to_integer(unsigned(Addr)) + 1) * Nb_bits - 1) downto Nb_bits * to_integer(unsigned(Addr))) <= D_IN;
52
                 MEMORY (((to_integer(unsigned(Addr)) + 1) * Nb_bits - 1) downto Nb_bits * to_integer(unsigned(Addr))) <= D_IN;
54
             end if;
53
             end if;
57
     
56
     
58
     -- Lecture assynchrone et en permanence
57
     -- Lecture assynchrone et en permanence
59
     D_OUT <= MEMORY (((to_integer(unsigned(Addr)) + 1) * Nb_bits) - 1 downto Nb_bits * to_integer(unsigned(Addr)));
58
     D_OUT <= MEMORY (((to_integer(unsigned(Addr)) + 1) * Nb_bits) - 1 downto Nb_bits * to_integer(unsigned(Addr)));
59
+    
60
+    -- Sortie lors du ret en assynchrone
61
+    OUT_EBP <= MEMORY (((to_integer(unsigned(Addr)) - 1) * Nb_bits - 1) downto Nb_bits * (to_integer(unsigned(Addr)) - 2)) when (RET = '1') else 
62
+               (others => '0'); 
63
+    OUT_AddrRet <= MEMORY ((to_integer(unsigned(Addr)) * Nb_bits - 1) downto Nb_bits * (to_integer(unsigned(Addr)) - 1)) when (RET = '1') else 
64
+                   (others => '0');
60
 end Behavioral;
65
 end Behavioral;

+ 1
- 1
Processeur.srcs/sources_1/new/MemoireInstructions.vhd
File diff suppressed because it is too large
View File


+ 11
- 16
Processeur.srcs/sources_1/new/Pipeline.vhd View File

41
              Nb_Registres : Natural := 16;
41
              Nb_Registres : Natural := 16;
42
              Addr_registres_size : Natural := 4;
42
              Addr_registres_size : Natural := 4;
43
              Memoire_Size : Natural := 32;
43
              Memoire_Size : Natural := 32;
44
-             Adresse_mem_size : Natural := 5;
45
-             Memoire_Adresses_Retour_Size : Natural := 16;
46
-             Adresse_Memoire_Adresses_Retour_Size : Natural := 4);
44
+             Adresse_mem_size : Natural := 5);
47
     Port (CLK : STD_LOGIC;
45
     Port (CLK : STD_LOGIC;
48
           RST : STD_LOGIC;
46
           RST : STD_LOGIC;
49
           STD_IN : in STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
47
           STD_IN : in STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
59
              Nb_bits : Natural;
57
              Nb_bits : Natural;
60
              Instruction_bus_size : Natural;
58
              Instruction_bus_size : Natural;
61
              Nb_registres : Natural;
59
              Nb_registres : Natural;
62
-             Mem_adresse_retour_size : Natural;
63
-             Adresse_size_mem_adresse_retour : Natural;
64
              Instructions_critiques_lecture_A : STD_LOGIC_VECTOR;
60
              Instructions_critiques_lecture_A : STD_LOGIC_VECTOR;
65
              Instructions_critiques_lecture_B : STD_LOGIC_VECTOR;
61
              Instructions_critiques_lecture_B : STD_LOGIC_VECTOR;
66
              Instructions_critiques_lecture_C : STD_LOGIC_VECTOR;
62
              Instructions_critiques_lecture_C : STD_LOGIC_VECTOR;
73
     Port ( CLK : in STD_LOGIC;
69
     Port ( CLK : in STD_LOGIC;
74
            RST : in STD_LOGIC;
70
            RST : in STD_LOGIC;
75
            Z : in STD_LOGIC;
71
            Z : in STD_LOGIC;
72
+           Addr_Retour : in STD_LOGIC_VECTOR (Nb_bits - 1 downto 0); -- Entrée de l'adresse de retour depuis l'étage 4
76
            A : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
73
            A : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
77
            B : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
74
            B : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
78
            C : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
75
            C : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
130
                   Mem_size : Natural;
127
                   Mem_size : Natural;
131
                   Adresse_mem_size : Natural;
128
                   Adresse_mem_size : Natural;
132
                   Instruction_bus_size : Natural;
129
                   Instruction_bus_size : Natural;
133
-                  Mem_EBP_size : Natural;
134
-                  Adresse_size_mem_EBP : Natural;
135
                   Bits_Controle_LC : STD_LOGIC_VECTOR;
130
                   Bits_Controle_LC : STD_LOGIC_VECTOR;
136
                   Bits_Controle_MUX_IN : STD_LOGIC_VECTOR;
131
                   Bits_Controle_MUX_IN : STD_LOGIC_VECTOR;
137
                   Bits_Controle_MUX_IN_EBP : STD_LOGIC_VECTOR;
132
                   Bits_Controle_MUX_IN_EBP : STD_LOGIC_VECTOR;
145
                IN_Instruction : in STD_LOGIC_VECTOR (Instruction_bus_size - 1 downto 0);
140
                IN_Instruction : in STD_LOGIC_VECTOR (Instruction_bus_size - 1 downto 0);
146
                OUT_A : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
141
                OUT_A : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
147
                OUT_B : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
142
                OUT_B : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
148
-               OUT_Instruction : out STD_LOGIC_VECTOR (Instruction_bus_size - 1 downto 0));
143
+               OUT_Instruction : out STD_LOGIC_VECTOR (Instruction_bus_size - 1 downto 0);
144
+               OUT_AddrRetour : out STD_LOGIC_VECTOR (Nb_bits - 1 downto 0)); 
149
     end component;
145
     end component;
150
     
146
     
151
     signal A_from_1 : STD_LOGIC_VECTOR (Nb_bits - 1 downto 0) := (others => '0');
147
     signal A_from_1 : STD_LOGIC_VECTOR (Nb_bits - 1 downto 0) := (others => '0');
180
     signal Z : STD_LOGIC := '0';
176
     signal Z : STD_LOGIC := '0';
181
     signal O : STD_LOGIC := '0';
177
     signal O : STD_LOGIC := '0';
182
     signal C : STD_LOGIC := '0';
178
     signal C : STD_LOGIC := '0';
179
+    signal AdresseRetour : STD_LOGIC_VECTOR (Nb_bits - 1 downto 0) := (others => '0');
183
     
180
     
184
     constant Bits_Controle_MUX_2_A      : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1111011101111111111111";
181
     constant Bits_Controle_MUX_2_A      : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1111011101111111111111";
185
     constant Bits_Controle_MUX_2_B      : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1111111000011000000001";
182
     constant Bits_Controle_MUX_2_B      : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1111111000011000000001";
186
     constant Bits_Controle_LC_3         : STD_LOGIC_VECTOR (Nb_Instructions * 3 - 1 downto 0) := "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "111" & "110" & "101" & "100" & "010" & "011" & "001" & "000";
183
     constant Bits_Controle_LC_3         : STD_LOGIC_VECTOR (Nb_Instructions * 3 - 1 downto 0) := "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "000" & "111" & "110" & "101" & "100" & "010" & "011" & "001" & "000";
187
     constant Bits_Controle_MUX_3        : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1111111111111100000001";
184
     constant Bits_Controle_MUX_3        : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1111111111111100000001";
188
-    constant Bits_Controle_LC_4         : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1111111001011111111111";
189
-    constant Bits_Controle_MUX_4_IN     : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1111111110101111111111";
190
-    constant Bits_Controle_MUX_4_IN_EBP : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1111111011001111111111";
185
+    constant Bits_Controle_LC_4         : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1111111001011111111111"; -- LC
186
+    constant Bits_Controle_MUX_4_IN     : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1101111110101111111111";
187
+    constant Bits_Controle_MUX_4_IN_EBP : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "1001111011001111111111"; -- EBP
191
     constant Bits_Controle_MUX_4_OUT    : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "0000000001010000000000";
188
     constant Bits_Controle_MUX_4_OUT    : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "0000000001010000000000";
192
     constant Bits_Controle_LC_5         : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "0001000001011111111110";
189
     constant Bits_Controle_LC_5         : STD_LOGIC_VECTOR (Nb_Instructions - 1 downto 0) := "1111111111" & "0001000001011111111110";
193
     constant Code_Instruction_JMP  : STD_LOGIC_VECTOR (Instruction_Bus_Size - 1 downto 0) := "01111";
190
     constant Code_Instruction_JMP  : STD_LOGIC_VECTOR (Instruction_Bus_Size - 1 downto 0) := "01111";
210
                  Nb_bits => Nb_bits,
207
                  Nb_bits => Nb_bits,
211
                  Instruction_bus_size => Instruction_Bus_Size,
208
                  Instruction_bus_size => Instruction_Bus_Size,
212
                  Nb_registres => Nb_Registres,
209
                  Nb_registres => Nb_Registres,
213
-                 Mem_adresse_retour_size => Memoire_Adresses_Retour_Size,
214
-                 Adresse_size_mem_adresse_retour => Adresse_Memoire_Adresses_Retour_Size,
215
                  Instructions_critiques_lecture_A => Instructions_critiques_lecture_A,
210
                  Instructions_critiques_lecture_A => Instructions_critiques_lecture_A,
216
                  Instructions_critiques_lecture_B => Instructions_critiques_lecture_B,
211
                  Instructions_critiques_lecture_B => Instructions_critiques_lecture_B,
217
                  Instructions_critiques_lecture_C => Instructions_critiques_lecture_C,
212
                  Instructions_critiques_lecture_C => Instructions_critiques_lecture_C,
226
         CLK => CLK,
221
         CLK => CLK,
227
         RST => RST,
222
         RST => RST,
228
         Z => Z,
223
         Z => Z,
224
+        Addr_Retour => AdresseRetour,
229
         A => A_from_1,
225
         A => A_from_1,
230
         B => B_from_1,
226
         B => B_from_1,
231
         C => C_from_1,
227
         C => C_from_1,
285
                  Mem_size => Memoire_Size,
281
                  Mem_size => Memoire_Size,
286
                  Adresse_mem_size => Adresse_mem_size,
282
                  Adresse_mem_size => Adresse_mem_size,
287
                  Instruction_bus_size => Instruction_Bus_Size,
283
                  Instruction_bus_size => Instruction_Bus_Size,
288
-                 Mem_EBP_size => Memoire_Adresses_Retour_Size,
289
-                 Adresse_size_mem_EBP => Adresse_Memoire_Adresses_Retour_Size,
290
                  Bits_Controle_LC => Bits_Controle_LC_4,
284
                  Bits_Controle_LC => Bits_Controle_LC_4,
291
                  Bits_Controle_MUX_IN => Bits_Controle_MUX_4_IN,
285
                  Bits_Controle_MUX_IN => Bits_Controle_MUX_4_IN,
292
                  Bits_Controle_MUX_IN_EBP => Bits_Controle_MUX_4_IN_EBP,
286
                  Bits_Controle_MUX_IN_EBP => Bits_Controle_MUX_4_IN_EBP,
301
                  IN_Instruction => Instruction_to_4,
295
                  IN_Instruction => Instruction_to_4,
302
                  OUT_A => A_from_4,
296
                  OUT_A => A_from_4,
303
                  OUT_B => B_from_4,
297
                  OUT_B => B_from_4,
304
-                 OUT_Instruction => Instruction_from_4
298
+                 OUT_Instruction => Instruction_from_4,
299
+                 OUT_AddrRetour => AdresseRetour
305
     );
300
     );
306
 
301
 
307
     process
302
     process

+ 3
- 11
Processeur.srcs/sources_1/new/System.vhd View File

39
              Instruction_Bus_Size : Natural := 5;
39
              Instruction_Bus_Size : Natural := 5;
40
              Nb_Instructions : Natural := 32;
40
              Nb_Instructions : Natural := 32;
41
              Nb_Registres : Natural := 16;
41
              Nb_Registres : Natural := 16;
42
-             Memoire_Size : Natural := 32;
43
-             Memoire_Adresses_Retour_Size : Natural := 16;
44
-             Adresse_Memoire_Adresses_Retour_Size : Natural := 4);
42
+             Memoire_Size : Natural := 32);
45
     Port (CLK : STD_LOGIC;
43
     Port (CLK : STD_LOGIC;
46
           RST : STD_LOGIC;
44
           RST : STD_LOGIC;
47
           STD_IN : in STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
45
           STD_IN : in STD_LOGIC_VECTOR (Nb_bits - 1 downto 0);
56
     -- signaux auxiliaires
54
     -- signaux auxiliaires
57
     signal my_RST : STD_LOGIC;
55
     signal my_RST : STD_LOGIC;
58
     signal my_CLK : STD_LOGIC;
56
     signal my_CLK : STD_LOGIC;
59
-    signal buff_CLK : STD_LOGIC;
60
         
57
         
61
-begin
62
-    -- Premier diviseur de clock
58
+begin     
59
+    -- Diviseur de clock
63
     clk_div : Clock_Divider
60
     clk_div : Clock_Divider
64
     port map (CLK_IN => CLK,
61
     port map (CLK_IN => CLK,
65
-              CLK_OUT => buff_CLK);
66
-              
67
-    -- Second diviseur de clock
68
-    clk_div_2 : Clock_Divider
69
-    port map (CLK_IN => buff_CLK,
70
               CLK_OUT => my_CLK);
62
               CLK_OUT => my_CLK);
71
               
63
               
72
     -- Le processeur, augmentation de la taille de la mémoire d'instruction
64
     -- Le processeur, augmentation de la taille de la mémoire d'instruction

+ 2
- 2
Processeur.xpr View File

32
     <Option Name="EnableBDX" Val="FALSE"/>
32
     <Option Name="EnableBDX" Val="FALSE"/>
33
     <Option Name="DSABoardId" Val="basys3"/>
33
     <Option Name="DSABoardId" Val="basys3"/>
34
     <Option Name="DSANumComputeUnits" Val="16"/>
34
     <Option Name="DSANumComputeUnits" Val="16"/>
35
-    <Option Name="WTXSimLaunchSim" Val="287"/>
35
+    <Option Name="WTXSimLaunchSim" Val="339"/>
36
     <Option Name="WTModelSimLaunchSim" Val="0"/>
36
     <Option Name="WTModelSimLaunchSim" Val="0"/>
37
     <Option Name="WTQuestaLaunchSim" Val="0"/>
37
     <Option Name="WTQuestaLaunchSim" Val="0"/>
38
     <Option Name="WTIesLaunchSim" Val="0"/>
38
     <Option Name="WTIesLaunchSim" Val="0"/>
240
       </File>
240
       </File>
241
       <Config>
241
       <Config>
242
         <Option Name="DesignMode" Val="RTL"/>
242
         <Option Name="DesignMode" Val="RTL"/>
243
-        <Option Name="TopModule" Val="Test_Etage4_Memoire"/>
243
+        <Option Name="TopModule" Val="Test_Pipeline"/>
244
         <Option Name="TopLib" Val="xil_defaultlib"/>
244
         <Option Name="TopLib" Val="xil_defaultlib"/>
245
         <Option Name="TransportPathDelay" Val="0"/>
245
         <Option Name="TransportPathDelay" Val="0"/>
246
         <Option Name="TransportIntDelay" Val="0"/>
246
         <Option Name="TransportIntDelay" Val="0"/>

+ 144
- 38
SimulationsConfig/Test_Pipeline_behav1.wcfg View File

3
    <wave_state>
3
    <wave_state>
4
    </wave_state>
4
    </wave_state>
5
    <db_ref_list>
5
    <db_ref_list>
6
-      <db_ref path="Test_Pipeline_behav1.wdb" id="1">
6
+      <db_ref path="Test_Pipeline_behav.wdb" id="1">
7
          <top_modules>
7
          <top_modules>
8
             <top_module name="Test_Pipeline" />
8
             <top_module name="Test_Pipeline" />
9
          </top_modules>
9
          </top_modules>
10
       </db_ref>
10
       </db_ref>
11
    </db_ref_list>
11
    </db_ref_list>
12
    <zoom_setting>
12
    <zoom_setting>
13
-      <ZoomStartTime time="320666666fs"></ZoomStartTime>
14
-      <ZoomEndTime time="441266667fs"></ZoomEndTime>
15
-      <Cursor1Time time="404267000fs"></Cursor1Time>
13
+      <ZoomStartTime time="9750000000fs"></ZoomStartTime>
14
+      <ZoomEndTime time="10289000001fs"></ZoomEndTime>
15
+      <Cursor1Time time="10000000000fs"></Cursor1Time>
16
    </zoom_setting>
16
    </zoom_setting>
17
    <column_width_setting>
17
    <column_width_setting>
18
       <NameColumnWidth column_width="146"></NameColumnWidth>
18
       <NameColumnWidth column_width="146"></NameColumnWidth>
19
-      <ValueColumnWidth column_width="73"></ValueColumnWidth>
19
+      <ValueColumnWidth column_width="71"></ValueColumnWidth>
20
    </column_width_setting>
20
    </column_width_setting>
21
-   <WVObjectSize size="10" />
22
-   <wvobject fp_name="/Test_Pipeline/my_CLK" type="logic">
21
+   <WVObjectSize size="12" />
22
+   <wvobject type="logic" fp_name="/Test_Pipeline/my_CLK">
23
       <obj_property name="ElementShortName">my_CLK</obj_property>
23
       <obj_property name="ElementShortName">my_CLK</obj_property>
24
       <obj_property name="ObjectShortName">my_CLK</obj_property>
24
       <obj_property name="ObjectShortName">my_CLK</obj_property>
25
    </wvobject>
25
    </wvobject>
26
-   <wvobject fp_name="/Test_Pipeline/my_RST" type="logic">
26
+   <wvobject type="logic" fp_name="/Test_Pipeline/my_RST">
27
       <obj_property name="ElementShortName">my_RST</obj_property>
27
       <obj_property name="ElementShortName">my_RST</obj_property>
28
       <obj_property name="ObjectShortName">my_RST</obj_property>
28
       <obj_property name="ObjectShortName">my_RST</obj_property>
29
    </wvobject>
29
    </wvobject>
30
-   <wvobject fp_name="/Test_Pipeline/my_STD_IN" type="array">
30
+   <wvobject type="array" fp_name="/Test_Pipeline/my_STD_IN">
31
       <obj_property name="ElementShortName">my_STD_IN[7:0]</obj_property>
31
       <obj_property name="ElementShortName">my_STD_IN[7:0]</obj_property>
32
       <obj_property name="ObjectShortName">my_STD_IN[7:0]</obj_property>
32
       <obj_property name="ObjectShortName">my_STD_IN[7:0]</obj_property>
33
    </wvobject>
33
    </wvobject>
34
-   <wvobject fp_name="/Test_Pipeline/my_STD_OUT" type="array">
34
+   <wvobject type="array" fp_name="/Test_Pipeline/my_STD_OUT">
35
       <obj_property name="ElementShortName">my_STD_OUT[7:0]</obj_property>
35
       <obj_property name="ElementShortName">my_STD_OUT[7:0]</obj_property>
36
       <obj_property name="ObjectShortName">my_STD_OUT[7:0]</obj_property>
36
       <obj_property name="ObjectShortName">my_STD_OUT[7:0]</obj_property>
37
    </wvobject>
37
    </wvobject>
38
-   <wvobject fp_name="/Test_Pipeline/CLK_period" type="other">
38
+   <wvobject type="other" fp_name="/Test_Pipeline/CLK_period">
39
       <obj_property name="ElementShortName">CLK_period</obj_property>
39
       <obj_property name="ElementShortName">CLK_period</obj_property>
40
       <obj_property name="ObjectShortName">CLK_period</obj_property>
40
       <obj_property name="ObjectShortName">CLK_period</obj_property>
41
    </wvobject>
41
    </wvobject>
42
-   <wvobject fp_name="group20" type="group">
42
+   <wvobject type="group" fp_name="group20">
43
       <obj_property name="label">Etage1</obj_property>
43
       <obj_property name="label">Etage1</obj_property>
44
       <obj_property name="DisplayName">label</obj_property>
44
       <obj_property name="DisplayName">label</obj_property>
45
       <obj_property name="isExpanded"></obj_property>
45
       <obj_property name="isExpanded"></obj_property>
46
-      <wvobject fp_name="/Test_Pipeline/instance/Instruction_from_1" type="array">
46
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/Instruction_from_1">
47
          <obj_property name="ElementShortName">Instruction_from_1[4:0]</obj_property>
47
          <obj_property name="ElementShortName">Instruction_from_1[4:0]</obj_property>
48
          <obj_property name="ObjectShortName">Instruction_from_1[4:0]</obj_property>
48
          <obj_property name="ObjectShortName">Instruction_from_1[4:0]</obj_property>
49
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
49
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
50
       </wvobject>
50
       </wvobject>
51
-      <wvobject fp_name="/Test_Pipeline/instance/A_from_1" type="array">
51
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/A_from_1">
52
          <obj_property name="ElementShortName">A_from_1[7:0]</obj_property>
52
          <obj_property name="ElementShortName">A_from_1[7:0]</obj_property>
53
          <obj_property name="ObjectShortName">A_from_1[7:0]</obj_property>
53
          <obj_property name="ObjectShortName">A_from_1[7:0]</obj_property>
54
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
54
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
55
       </wvobject>
55
       </wvobject>
56
-      <wvobject fp_name="/Test_Pipeline/instance/B_from_1" type="array">
56
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/B_from_1">
57
          <obj_property name="ElementShortName">B_from_1[7:0]</obj_property>
57
          <obj_property name="ElementShortName">B_from_1[7:0]</obj_property>
58
          <obj_property name="ObjectShortName">B_from_1[7:0]</obj_property>
58
          <obj_property name="ObjectShortName">B_from_1[7:0]</obj_property>
59
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
59
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
60
       </wvobject>
60
       </wvobject>
61
-      <wvobject fp_name="/Test_Pipeline/instance/C_from_1" type="array">
61
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/C_from_1">
62
          <obj_property name="ElementShortName">C_from_1[7:0]</obj_property>
62
          <obj_property name="ElementShortName">C_from_1[7:0]</obj_property>
63
          <obj_property name="ObjectShortName">C_from_1[7:0]</obj_property>
63
          <obj_property name="ObjectShortName">C_from_1[7:0]</obj_property>
64
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
64
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
65
       </wvobject>
65
       </wvobject>
66
    </wvobject>
66
    </wvobject>
67
-   <wvobject fp_name="group21" type="group">
67
+   <wvobject type="group" fp_name="group21">
68
       <obj_property name="label">Etage2</obj_property>
68
       <obj_property name="label">Etage2</obj_property>
69
       <obj_property name="DisplayName">label</obj_property>
69
       <obj_property name="DisplayName">label</obj_property>
70
       <obj_property name="isExpanded"></obj_property>
70
       <obj_property name="isExpanded"></obj_property>
71
-      <wvobject fp_name="/Test_Pipeline/instance/Instruction_from_2" type="array">
71
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/Instruction_from_2">
72
          <obj_property name="ElementShortName">Instruction_from_2[4:0]</obj_property>
72
          <obj_property name="ElementShortName">Instruction_from_2[4:0]</obj_property>
73
          <obj_property name="ObjectShortName">Instruction_from_2[4:0]</obj_property>
73
          <obj_property name="ObjectShortName">Instruction_from_2[4:0]</obj_property>
74
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
74
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
75
       </wvobject>
75
       </wvobject>
76
-      <wvobject fp_name="/Test_Pipeline/instance/A_from_2" type="array">
76
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/A_from_2">
77
          <obj_property name="ElementShortName">A_from_2[7:0]</obj_property>
77
          <obj_property name="ElementShortName">A_from_2[7:0]</obj_property>
78
          <obj_property name="ObjectShortName">A_from_2[7:0]</obj_property>
78
          <obj_property name="ObjectShortName">A_from_2[7:0]</obj_property>
79
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
79
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
80
       </wvobject>
80
       </wvobject>
81
-      <wvobject fp_name="/Test_Pipeline/instance/B_from_2" type="array">
81
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/B_from_2">
82
          <obj_property name="ElementShortName">B_from_2[7:0]</obj_property>
82
          <obj_property name="ElementShortName">B_from_2[7:0]</obj_property>
83
          <obj_property name="ObjectShortName">B_from_2[7:0]</obj_property>
83
          <obj_property name="ObjectShortName">B_from_2[7:0]</obj_property>
84
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
84
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
85
       </wvobject>
85
       </wvobject>
86
-      <wvobject fp_name="/Test_Pipeline/instance/C_from_2" type="array">
86
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/C_from_2">
87
          <obj_property name="ElementShortName">C_from_2[7:0]</obj_property>
87
          <obj_property name="ElementShortName">C_from_2[7:0]</obj_property>
88
          <obj_property name="ObjectShortName">C_from_2[7:0]</obj_property>
88
          <obj_property name="ObjectShortName">C_from_2[7:0]</obj_property>
89
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
89
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
90
       </wvobject>
90
       </wvobject>
91
    </wvobject>
91
    </wvobject>
92
-   <wvobject fp_name="group22" type="group">
92
+   <wvobject type="group" fp_name="group22">
93
       <obj_property name="label">Etage3</obj_property>
93
       <obj_property name="label">Etage3</obj_property>
94
       <obj_property name="DisplayName">label</obj_property>
94
       <obj_property name="DisplayName">label</obj_property>
95
       <obj_property name="isExpanded"></obj_property>
95
       <obj_property name="isExpanded"></obj_property>
96
-      <wvobject fp_name="/Test_Pipeline/instance/Instruction_from_3" type="array">
96
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/Instruction_from_3">
97
          <obj_property name="ElementShortName">Instruction_from_3[4:0]</obj_property>
97
          <obj_property name="ElementShortName">Instruction_from_3[4:0]</obj_property>
98
          <obj_property name="ObjectShortName">Instruction_from_3[4:0]</obj_property>
98
          <obj_property name="ObjectShortName">Instruction_from_3[4:0]</obj_property>
99
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
99
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
100
       </wvobject>
100
       </wvobject>
101
-      <wvobject fp_name="/Test_Pipeline/instance/A_from_3" type="array">
101
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/A_from_3">
102
          <obj_property name="ElementShortName">A_from_3[7:0]</obj_property>
102
          <obj_property name="ElementShortName">A_from_3[7:0]</obj_property>
103
          <obj_property name="ObjectShortName">A_from_3[7:0]</obj_property>
103
          <obj_property name="ObjectShortName">A_from_3[7:0]</obj_property>
104
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
104
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
105
       </wvobject>
105
       </wvobject>
106
-      <wvobject fp_name="/Test_Pipeline/instance/B_from_3" type="array">
106
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/B_from_3">
107
          <obj_property name="ElementShortName">B_from_3[7:0]</obj_property>
107
          <obj_property name="ElementShortName">B_from_3[7:0]</obj_property>
108
          <obj_property name="ObjectShortName">B_from_3[7:0]</obj_property>
108
          <obj_property name="ObjectShortName">B_from_3[7:0]</obj_property>
109
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
109
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
110
       </wvobject>
110
       </wvobject>
111
    </wvobject>
111
    </wvobject>
112
-   <wvobject fp_name="group23" type="group">
112
+   <wvobject type="group" fp_name="group23">
113
       <obj_property name="label">Etage4</obj_property>
113
       <obj_property name="label">Etage4</obj_property>
114
       <obj_property name="DisplayName">label</obj_property>
114
       <obj_property name="DisplayName">label</obj_property>
115
       <obj_property name="isExpanded"></obj_property>
115
       <obj_property name="isExpanded"></obj_property>
116
-      <wvobject fp_name="/Test_Pipeline/instance/Instruction_from_4" type="array">
116
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/Instruction_from_4">
117
          <obj_property name="ElementShortName">Instruction_from_4[4:0]</obj_property>
117
          <obj_property name="ElementShortName">Instruction_from_4[4:0]</obj_property>
118
          <obj_property name="ObjectShortName">Instruction_from_4[4:0]</obj_property>
118
          <obj_property name="ObjectShortName">Instruction_from_4[4:0]</obj_property>
119
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
119
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
120
       </wvobject>
120
       </wvobject>
121
-      <wvobject fp_name="/Test_Pipeline/instance/A_from_4" type="array">
121
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/A_from_4">
122
          <obj_property name="ElementShortName">A_from_4[7:0]</obj_property>
122
          <obj_property name="ElementShortName">A_from_4[7:0]</obj_property>
123
          <obj_property name="ObjectShortName">A_from_4[7:0]</obj_property>
123
          <obj_property name="ObjectShortName">A_from_4[7:0]</obj_property>
124
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
124
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
125
       </wvobject>
125
       </wvobject>
126
-      <wvobject fp_name="/Test_Pipeline/instance/B_from_4" type="array">
126
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/B_from_4">
127
          <obj_property name="ElementShortName">B_from_4[7:0]</obj_property>
127
          <obj_property name="ElementShortName">B_from_4[7:0]</obj_property>
128
          <obj_property name="ObjectShortName">B_from_4[7:0]</obj_property>
128
          <obj_property name="ObjectShortName">B_from_4[7:0]</obj_property>
129
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
129
          <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
130
       </wvobject>
130
       </wvobject>
131
    </wvobject>
131
    </wvobject>
132
-   <wvobject fp_name="group31" type="group">
132
+   <wvobject type="group" fp_name="group31">
133
       <obj_property name="label">Registres</obj_property>
133
       <obj_property name="label">Registres</obj_property>
134
       <obj_property name="DisplayName">label</obj_property>
134
       <obj_property name="DisplayName">label</obj_property>
135
-      <obj_property name="isExpanded"></obj_property>
136
-      <wvobject fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/REGISTRES" type="array">
135
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/REGISTRES">
137
          <obj_property name="ElementShortName">REGISTRES[127:0]</obj_property>
136
          <obj_property name="ElementShortName">REGISTRES[127:0]</obj_property>
138
          <obj_property name="ObjectShortName">REGISTRES[127:0]</obj_property>
137
          <obj_property name="ObjectShortName">REGISTRES[127:0]</obj_property>
139
       </wvobject>
138
       </wvobject>
140
-      <wvobject fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/AddrA" type="array">
139
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/AddrA">
141
          <obj_property name="ElementShortName">AddrA[3:0]</obj_property>
140
          <obj_property name="ElementShortName">AddrA[3:0]</obj_property>
142
          <obj_property name="ObjectShortName">AddrA[3:0]</obj_property>
141
          <obj_property name="ObjectShortName">AddrA[3:0]</obj_property>
143
       </wvobject>
142
       </wvobject>
144
-      <wvobject fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/AddrB" type="array">
143
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/AddrB">
145
          <obj_property name="ElementShortName">AddrB[3:0]</obj_property>
144
          <obj_property name="ElementShortName">AddrB[3:0]</obj_property>
146
          <obj_property name="ObjectShortName">AddrB[3:0]</obj_property>
145
          <obj_property name="ObjectShortName">AddrB[3:0]</obj_property>
147
       </wvobject>
146
       </wvobject>
148
-      <wvobject fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/AddrC" type="array">
147
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/AddrC">
149
          <obj_property name="ElementShortName">AddrC[3:0]</obj_property>
148
          <obj_property name="ElementShortName">AddrC[3:0]</obj_property>
150
          <obj_property name="ObjectShortName">AddrC[3:0]</obj_property>
149
          <obj_property name="ObjectShortName">AddrC[3:0]</obj_property>
151
       </wvobject>
150
       </wvobject>
152
-      <wvobject fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/AddrW" type="array">
151
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/AddrW">
153
          <obj_property name="ElementShortName">AddrW[3:0]</obj_property>
152
          <obj_property name="ElementShortName">AddrW[3:0]</obj_property>
154
          <obj_property name="ObjectShortName">AddrW[3:0]</obj_property>
153
          <obj_property name="ObjectShortName">AddrW[3:0]</obj_property>
155
       </wvobject>
154
       </wvobject>
156
-      <wvobject fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/W" type="logic">
155
+      <wvobject type="logic" fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/W">
157
          <obj_property name="ElementShortName">W</obj_property>
156
          <obj_property name="ElementShortName">W</obj_property>
158
          <obj_property name="ObjectShortName">W</obj_property>
157
          <obj_property name="ObjectShortName">W</obj_property>
159
       </wvobject>
158
       </wvobject>
160
-      <wvobject fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/DATA" type="array">
159
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage2_5/instance_BancRegistres/DATA">
161
          <obj_property name="ElementShortName">DATA[7:0]</obj_property>
160
          <obj_property name="ElementShortName">DATA[7:0]</obj_property>
162
          <obj_property name="ObjectShortName">DATA[7:0]</obj_property>
161
          <obj_property name="ObjectShortName">DATA[7:0]</obj_property>
163
       </wvobject>
162
       </wvobject>
164
    </wvobject>
163
    </wvobject>
164
+   <wvobject type="group" fp_name="group115">
165
+      <obj_property name="label">Memoire</obj_property>
166
+      <obj_property name="DisplayName">label</obj_property>
167
+      <obj_property name="isExpanded"></obj_property>
168
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/instance_MemoireDonnees/MEMORY">
169
+         <obj_property name="ElementShortName">MEMORY[255:0]</obj_property>
170
+         <obj_property name="ObjectShortName">MEMORY[255:0]</obj_property>
171
+      </wvobject>
172
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/instance_MemoireDonnees/D_OUT">
173
+         <obj_property name="ElementShortName">D_OUT[7:0]</obj_property>
174
+         <obj_property name="ObjectShortName">D_OUT[7:0]</obj_property>
175
+      </wvobject>
176
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/instance_MemoireDonnees/OUT_AddrRet">
177
+         <obj_property name="ElementShortName">OUT_AddrRet[7:0]</obj_property>
178
+         <obj_property name="ObjectShortName">OUT_AddrRet[7:0]</obj_property>
179
+      </wvobject>
180
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/instance_MemoireDonnees/OUT_EBP">
181
+         <obj_property name="ElementShortName">OUT_EBP[7:0]</obj_property>
182
+         <obj_property name="ObjectShortName">OUT_EBP[7:0]</obj_property>
183
+      </wvobject>
184
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/instance_MemoireDonnees/IN_AddrRet">
185
+         <obj_property name="ElementShortName">IN_AddrRet[7:0]</obj_property>
186
+         <obj_property name="ObjectShortName">IN_AddrRet[7:0]</obj_property>
187
+      </wvobject>
188
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/instance_MemoireDonnees/IN_EBP">
189
+         <obj_property name="ElementShortName">IN_EBP[7:0]</obj_property>
190
+         <obj_property name="ObjectShortName">IN_EBP[7:0]</obj_property>
191
+      </wvobject>
192
+      <wvobject type="logic" fp_name="/Test_Pipeline/instance/instance_Etage4/instance_MemoireDonnees/CALL">
193
+         <obj_property name="ElementShortName">CALL</obj_property>
194
+         <obj_property name="ObjectShortName">CALL</obj_property>
195
+      </wvobject>
196
+      <wvobject type="logic" fp_name="/Test_Pipeline/instance/instance_Etage4/instance_MemoireDonnees/RET">
197
+         <obj_property name="ElementShortName">RET</obj_property>
198
+         <obj_property name="ObjectShortName">RET</obj_property>
199
+      </wvobject>
200
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/instance_MemoireDonnees/Addr">
201
+         <obj_property name="ElementShortName">Addr[4:0]</obj_property>
202
+         <obj_property name="ObjectShortName">Addr[4:0]</obj_property>
203
+      </wvobject>
204
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/instance_MemoireDonnees/D_IN">
205
+         <obj_property name="ElementShortName">D_IN[7:0]</obj_property>
206
+         <obj_property name="ObjectShortName">D_IN[7:0]</obj_property>
207
+      </wvobject>
208
+      <wvobject type="logic" fp_name="/Test_Pipeline/instance/instance_Etage4/instance_MemoireDonnees/RW">
209
+         <obj_property name="ElementShortName">RW</obj_property>
210
+         <obj_property name="ObjectShortName">RW</obj_property>
211
+      </wvobject>
212
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/Last_EBP">
213
+         <obj_property name="ElementShortName">Last_EBP[7:0]</obj_property>
214
+         <obj_property name="ObjectShortName">Last_EBP[7:0]</obj_property>
215
+      </wvobject>
216
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/EBP">
217
+         <obj_property name="ElementShortName">EBP[4:0]</obj_property>
218
+         <obj_property name="ObjectShortName">EBP[4:0]</obj_property>
219
+      </wvobject>
220
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/Addr_MemoireDonnees">
221
+         <obj_property name="ElementShortName">Addr_MemoireDonnees[4:0]</obj_property>
222
+         <obj_property name="ObjectShortName">Addr_MemoireDonnees[4:0]</obj_property>
223
+      </wvobject>
224
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/IN_Addr_MemoireDonnees">
225
+         <obj_property name="ElementShortName">IN_Addr_MemoireDonnees[4:0]</obj_property>
226
+         <obj_property name="ObjectShortName">IN_Addr_MemoireDonnees[4:0]</obj_property>
227
+      </wvobject>
228
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage4/Addr_MemoireDonnees_EBP">
229
+         <obj_property name="ElementShortName">Addr_MemoireDonnees_EBP[4:0]</obj_property>
230
+         <obj_property name="ObjectShortName">Addr_MemoireDonnees_EBP[4:0]</obj_property>
231
+      </wvobject>
232
+   </wvobject>
233
+   <wvobject type="group" fp_name="group121">
234
+      <obj_property name="label">Instructions</obj_property>
235
+      <obj_property name="DisplayName">label</obj_property>
236
+      <wvobject type="logic" fp_name="/Test_Pipeline/instance/instance_Etage1/Z">
237
+         <obj_property name="ElementShortName">Z</obj_property>
238
+         <obj_property name="ObjectShortName">Z</obj_property>
239
+      </wvobject>
240
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage1/Addr_Retour">
241
+         <obj_property name="ElementShortName">Addr_Retour[7:0]</obj_property>
242
+         <obj_property name="ObjectShortName">Addr_Retour[7:0]</obj_property>
243
+         <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
244
+      </wvobject>
245
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage1/Pointeur_instruction">
246
+         <obj_property name="ElementShortName">Pointeur_instruction[7:0]</obj_property>
247
+         <obj_property name="ObjectShortName">Pointeur_instruction[7:0]</obj_property>
248
+         <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
249
+      </wvobject>
250
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage1/Instruction_courante">
251
+         <obj_property name="ElementShortName">Instruction_courante[28:0]</obj_property>
252
+         <obj_property name="ObjectShortName">Instruction_courante[28:0]</obj_property>
253
+      </wvobject>
254
+      <wvobject type="array" fp_name="/Test_Pipeline/instance/instance_Etage1/Tableau">
255
+         <obj_property name="ElementShortName">Tableau[1:3]</obj_property>
256
+         <obj_property name="ObjectShortName">Tableau[1:3]</obj_property>
257
+      </wvobject>
258
+      <wvobject type="other" fp_name="/Test_Pipeline/instance/instance_Etage1/bulles">
259
+         <obj_property name="ElementShortName">bulles</obj_property>
260
+         <obj_property name="ObjectShortName">bulles</obj_property>
261
+      </wvobject>
262
+      <wvobject type="other" fp_name="/Test_Pipeline/instance/instance_Etage1/compteur">
263
+         <obj_property name="ElementShortName">compteur</obj_property>
264
+         <obj_property name="ObjectShortName">compteur</obj_property>
265
+      </wvobject>
266
+      <wvobject type="other" fp_name="/Test_Pipeline/instance/instance_Etage1/locked">
267
+         <obj_property name="ElementShortName">locked</obj_property>
268
+         <obj_property name="ObjectShortName">locked</obj_property>
269
+      </wvobject>
270
+   </wvobject>
165
 </wave_config>
271
 </wave_config>

Loading…
Cancel
Save