Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,6 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
+
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../..
+DIR_COMPONENT			= ..
+include				$(DIR_COMPONENT)/Makefile.defs
 
 LIBRARY				= $(Counter_LIBRARY)
@@ -24,5 +25,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/Counter.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/Counter.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/Counter.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ..
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Counter}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/Makefile	(revision 30)
@@ -18,5 +18,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/Makefile	(revision 30)
@@ -24,5 +24,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration.cfg	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration.cfg	(revision 30)
@@ -1,5 +1,5 @@
 RegisterFile_Monolithic
-1	8 	*2	# nb_port_read
+2	8 	*2	# nb_port_read
 1	4	*2	# nb_port_write
-64	256	*2	# nb_word
+32	256	*2	# nb_word
 32	32	*2	# size_word
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info	(revision 30)
@@ -1,11 +1,181 @@
 
-# RegisterFile_34
-target_dep	all	RegisterFile_34.ngc
-target_dep	RegisterFile_34.ngc	RegisterFile_34.prj
-target_dep	RegisterFile_34.prj	RegisterFile_34_Pack.vhdl RegisterFile_34.vhdl
+# RegisterFile_Monolithic_0
+target_dep	all	RegisterFile_Monolithic_0.ngc
+target_dep	RegisterFile_Monolithic_0.ngc	RegisterFile_Monolithic_0.prj
+target_dep	RegisterFile_Monolithic_0.prj	RegisterFile_Monolithic_0_Pack.vhdl RegisterFile_Monolithic_0.vhdl
 
-# RegisterFile_35
-target_dep	all	RegisterFile_35.ngc
-target_dep	RegisterFile_35.ngc	RegisterFile_35.prj
-target_dep	RegisterFile_35.prj	RegisterFile_35_Pack.vhdl RegisterFile_35.vhdl
+# RegisterFile_Monolithic_10
+target_dep	all	RegisterFile_Monolithic_10.ngc
+target_dep	RegisterFile_Monolithic_10.ngc	RegisterFile_Monolithic_10.prj
+target_dep	RegisterFile_Monolithic_10.prj	RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl
 
+# RegisterFile_Monolithic_11
+target_dep	all	RegisterFile_Monolithic_11.ngc
+target_dep	RegisterFile_Monolithic_11.ngc	RegisterFile_Monolithic_11.prj
+target_dep	RegisterFile_Monolithic_11.prj	RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl
+
+# RegisterFile_Monolithic_12
+target_dep	all	RegisterFile_Monolithic_12.ngc
+target_dep	RegisterFile_Monolithic_12.ngc	RegisterFile_Monolithic_12.prj
+target_dep	RegisterFile_Monolithic_12.prj	RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl
+
+# RegisterFile_Monolithic_13
+target_dep	all	RegisterFile_Monolithic_13.ngc
+target_dep	RegisterFile_Monolithic_13.ngc	RegisterFile_Monolithic_13.prj
+target_dep	RegisterFile_Monolithic_13.prj	RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl
+
+# RegisterFile_Monolithic_14
+target_dep	all	RegisterFile_Monolithic_14.ngc
+target_dep	RegisterFile_Monolithic_14.ngc	RegisterFile_Monolithic_14.prj
+target_dep	RegisterFile_Monolithic_14.prj	RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl
+
+# RegisterFile_Monolithic_15
+target_dep	all	RegisterFile_Monolithic_15.ngc
+target_dep	RegisterFile_Monolithic_15.ngc	RegisterFile_Monolithic_15.prj
+target_dep	RegisterFile_Monolithic_15.prj	RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl
+
+# RegisterFile_Monolithic_16
+target_dep	all	RegisterFile_Monolithic_16.ngc
+target_dep	RegisterFile_Monolithic_16.ngc	RegisterFile_Monolithic_16.prj
+target_dep	RegisterFile_Monolithic_16.prj	RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl
+
+# RegisterFile_Monolithic_17
+target_dep	all	RegisterFile_Monolithic_17.ngc
+target_dep	RegisterFile_Monolithic_17.ngc	RegisterFile_Monolithic_17.prj
+target_dep	RegisterFile_Monolithic_17.prj	RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl
+
+# RegisterFile_Monolithic_18
+target_dep	all	RegisterFile_Monolithic_18.ngc
+target_dep	RegisterFile_Monolithic_18.ngc	RegisterFile_Monolithic_18.prj
+target_dep	RegisterFile_Monolithic_18.prj	RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl
+
+# RegisterFile_Monolithic_19
+target_dep	all	RegisterFile_Monolithic_19.ngc
+target_dep	RegisterFile_Monolithic_19.ngc	RegisterFile_Monolithic_19.prj
+target_dep	RegisterFile_Monolithic_19.prj	RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl
+
+# RegisterFile_Monolithic_1
+target_dep	all	RegisterFile_Monolithic_1.ngc
+target_dep	RegisterFile_Monolithic_1.ngc	RegisterFile_Monolithic_1.prj
+target_dep	RegisterFile_Monolithic_1.prj	RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl
+
+# RegisterFile_Monolithic_20
+target_dep	all	RegisterFile_Monolithic_20.ngc
+target_dep	RegisterFile_Monolithic_20.ngc	RegisterFile_Monolithic_20.prj
+target_dep	RegisterFile_Monolithic_20.prj	RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl
+
+# RegisterFile_Monolithic_21
+target_dep	all	RegisterFile_Monolithic_21.ngc
+target_dep	RegisterFile_Monolithic_21.ngc	RegisterFile_Monolithic_21.prj
+target_dep	RegisterFile_Monolithic_21.prj	RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl
+
+# RegisterFile_Monolithic_22
+target_dep	all	RegisterFile_Monolithic_22.ngc
+target_dep	RegisterFile_Monolithic_22.ngc	RegisterFile_Monolithic_22.prj
+target_dep	RegisterFile_Monolithic_22.prj	RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl
+
+# RegisterFile_Monolithic_23
+target_dep	all	RegisterFile_Monolithic_23.ngc
+target_dep	RegisterFile_Monolithic_23.ngc	RegisterFile_Monolithic_23.prj
+target_dep	RegisterFile_Monolithic_23.prj	RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl
+
+# RegisterFile_Monolithic_24
+target_dep	all	RegisterFile_Monolithic_24.ngc
+target_dep	RegisterFile_Monolithic_24.ngc	RegisterFile_Monolithic_24.prj
+target_dep	RegisterFile_Monolithic_24.prj	RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl
+
+# RegisterFile_Monolithic_25
+target_dep	all	RegisterFile_Monolithic_25.ngc
+target_dep	RegisterFile_Monolithic_25.ngc	RegisterFile_Monolithic_25.prj
+target_dep	RegisterFile_Monolithic_25.prj	RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl
+
+# RegisterFile_Monolithic_26
+target_dep	all	RegisterFile_Monolithic_26.ngc
+target_dep	RegisterFile_Monolithic_26.ngc	RegisterFile_Monolithic_26.prj
+target_dep	RegisterFile_Monolithic_26.prj	RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl
+
+# RegisterFile_Monolithic_27
+target_dep	all	RegisterFile_Monolithic_27.ngc
+target_dep	RegisterFile_Monolithic_27.ngc	RegisterFile_Monolithic_27.prj
+target_dep	RegisterFile_Monolithic_27.prj	RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl
+
+# RegisterFile_Monolithic_28
+target_dep	all	RegisterFile_Monolithic_28.ngc
+target_dep	RegisterFile_Monolithic_28.ngc	RegisterFile_Monolithic_28.prj
+target_dep	RegisterFile_Monolithic_28.prj	RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl
+
+# RegisterFile_Monolithic_29
+target_dep	all	RegisterFile_Monolithic_29.ngc
+target_dep	RegisterFile_Monolithic_29.ngc	RegisterFile_Monolithic_29.prj
+target_dep	RegisterFile_Monolithic_29.prj	RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl
+
+# RegisterFile_Monolithic_2
+target_dep	all	RegisterFile_Monolithic_2.ngc
+target_dep	RegisterFile_Monolithic_2.ngc	RegisterFile_Monolithic_2.prj
+target_dep	RegisterFile_Monolithic_2.prj	RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl RegisterFile_Monolithic_2_Pack.vhdl RegisterFile_Monolithic_2.vhdl
+
+# RegisterFile_Monolithic_30
+target_dep	all	RegisterFile_Monolithic_30.ngc
+target_dep	RegisterFile_Monolithic_30.ngc	RegisterFile_Monolithic_30.prj
+target_dep	RegisterFile_Monolithic_30.prj	RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl
+
+# RegisterFile_Monolithic_31
+target_dep	all	RegisterFile_Monolithic_31.ngc
+target_dep	RegisterFile_Monolithic_31.ngc	RegisterFile_Monolithic_31.prj
+target_dep	RegisterFile_Monolithic_31.prj	RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl
+
+# RegisterFile_Monolithic_32
+target_dep	all	RegisterFile_Monolithic_32.ngc
+target_dep	RegisterFile_Monolithic_32.ngc	RegisterFile_Monolithic_32.prj
+target_dep	RegisterFile_Monolithic_32.prj	RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl
+
+# RegisterFile_Monolithic_33
+target_dep	all	RegisterFile_Monolithic_33.ngc
+target_dep	RegisterFile_Monolithic_33.ngc	RegisterFile_Monolithic_33.prj
+target_dep	RegisterFile_Monolithic_33.prj	RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl
+
+# RegisterFile_Monolithic_34
+target_dep	all	RegisterFile_Monolithic_34.ngc
+target_dep	RegisterFile_Monolithic_34.ngc	RegisterFile_Monolithic_34.prj
+target_dep	RegisterFile_Monolithic_34.prj	RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl
+
+# RegisterFile_Monolithic_35
+target_dep	all	RegisterFile_Monolithic_35.ngc
+target_dep	RegisterFile_Monolithic_35.ngc	RegisterFile_Monolithic_35.prj
+target_dep	RegisterFile_Monolithic_35.prj	RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl
+
+# RegisterFile_Monolithic_3
+target_dep	all	RegisterFile_Monolithic_3.ngc
+target_dep	RegisterFile_Monolithic_3.ngc	RegisterFile_Monolithic_3.prj
+target_dep	RegisterFile_Monolithic_3.prj	RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl RegisterFile_Monolithic_3_Pack.vhdl RegisterFile_Monolithic_3.vhdl
+
+# RegisterFile_Monolithic_4
+target_dep	all	RegisterFile_Monolithic_4.ngc
+target_dep	RegisterFile_Monolithic_4.ngc	RegisterFile_Monolithic_4.prj
+target_dep	RegisterFile_Monolithic_4.prj	RegisterFile_Monolithic_4_Pack.vhdl RegisterFile_Monolithic_4.vhdl
+
+# RegisterFile_Monolithic_5
+target_dep	all	RegisterFile_Monolithic_5.ngc
+target_dep	RegisterFile_Monolithic_5.ngc	RegisterFile_Monolithic_5.prj
+target_dep	RegisterFile_Monolithic_5.prj	RegisterFile_Monolithic_5_Pack.vhdl RegisterFile_Monolithic_5.vhdl
+
+# RegisterFile_Monolithic_6
+target_dep	all	RegisterFile_Monolithic_6.ngc
+target_dep	RegisterFile_Monolithic_6.ngc	RegisterFile_Monolithic_6.prj
+target_dep	RegisterFile_Monolithic_6.prj	RegisterFile_Monolithic_6_Pack.vhdl RegisterFile_Monolithic_6.vhdl
+
+# RegisterFile_Monolithic_7
+target_dep	all	RegisterFile_Monolithic_7.ngc
+target_dep	RegisterFile_Monolithic_7.ngc	RegisterFile_Monolithic_7.prj
+target_dep	RegisterFile_Monolithic_7.prj	RegisterFile_Monolithic_7_Pack.vhdl RegisterFile_Monolithic_7.vhdl
+
+# RegisterFile_Monolithic_8
+target_dep	all	RegisterFile_Monolithic_8.ngc
+target_dep	RegisterFile_Monolithic_8.ngc	RegisterFile_Monolithic_8.prj
+target_dep	RegisterFile_Monolithic_8.prj	RegisterFile_Monolithic_8_Pack.vhdl RegisterFile_Monolithic_8.vhdl
+
+# RegisterFile_Monolithic_9
+target_dep	all	RegisterFile_Monolithic_9.ngc
+target_dep	RegisterFile_Monolithic_9.ngc	RegisterFile_Monolithic_9.prj
+target_dep	RegisterFile_Monolithic_9.prj	RegisterFile_Monolithic_9_Pack.vhdl RegisterFile_Monolithic_9.vhdl
+
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/RegisterFile_Monolithic.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/RegisterFile_Monolithic.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/RegisterFile_Monolithic.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{RegisterFile\_Monolithic}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../../../..
+DIR_COMPONENT			= ..
+include				$(DIR_COMPONENT)/Makefile.defs
 
 LIBRARY				= $(RegisterFile_Multi_Banked_Glue_LIBRARY)
@@ -23,6 +24,6 @@
 library_clean			: RegisterFile_Multi_Banked_Glue_library_clean
 
-include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_COMPONENT)/Makefile.deps
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/configuration.cfg	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/configuration.cfg	(revision 30)
@@ -1,9 +1,9 @@
 RegisterFile_Multi_Banked_Glue
-4	4 	*2	# nb_port_read
+11	11	*2	# nb_port_read
 4	4	*2	# nb_port_write
 8  	8    	+1	# size_address
 32	32	*2	# size_word
-2	2	*2	# nb_bank
-2	2 	*2	# nb_port_read_by_bank
+4	4	*2	# nb_bank
+3	3 	*2	# nb_port_read_by_bank
 2	2	*2	# nb_port_write_by_bank
-0	1	+1	# crossbar
+0	0	+1	# crossbar
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/test.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/test.cpp	(revision 30)
@@ -9,4 +9,5 @@
 #define NB_ITERATION 16
 
+#define TEXT(str)  do {cout << "<" << name << "> : " << str << endl;} while (0)
 #define LABEL(str) do {cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} " << str << endl; _RegisterFile_Multi_Banked_Glue->vhdl_testbench_label(str);} while (0)
 
@@ -18,5 +19,5 @@
 	   morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::Parameters _param)
 {
-  cout << "<" << name << "> : Simulation SystemC" << endl;
+  TEXT("Simulation SystemC");
 
   RegisterFile_Multi_Banked_Glue * _RegisterFile_Multi_Banked_Glue = new RegisterFile_Multi_Banked_Glue (name.c_str(),
@@ -192,5 +193,5 @@
    ********************************************************/
   
-  cout << "<" << name << "> Instanciation of _RegisterFile_Multi_Banked_Glue" << endl;
+   TEXT("Instanciation of _RegisterFile_Multi_Banked_Glue");
   
   (*(_RegisterFile_Multi_Banked_Glue->in_CLOCK))        (*(CLOCK));
@@ -247,5 +248,5 @@
 
 
-  cout << "<" << name << "> Start Simulation ............" << endl;
+   TEXT("Start Simulation ............");
   
   /********************************************************
@@ -265,13 +266,13 @@
 
   uint32_t   read_in_num_bank [_param._nb_port_read]; // Number of bank
-//Tcontrol_t read_in_valid    [_param._nb_port_read];
+  Tcontrol_t read_is_busy     [_param._nb_port_read];
+  bool       read_out_find    [_param._nb_bank][_param._nb_port_read_by_bank];  
+  uint32_t   read_out_port    [_param._nb_bank][_param._nb_port_read_by_bank];  
+
   Tcontrol_t read_in_ack      [_param._nb_port_read]; // to test
   Tdata_t    read_in_data     [_param._nb_port_read]; // to test
   Tcontrol_t read_out_val     [_param._nb_bank][_param._nb_port_read_by_bank];  
-  Tcontrol_t read_out_ack     [_param._nb_bank][_param._nb_port_read_by_bank];  
   Taddress_t read_out_address [_param._nb_bank][_param._nb_port_read_by_bank];  
-  Tcontrol_t read_is_busy     [_param._nb_port_read];
-  Tcontrol_t read_select_val  [_param._nb_bank][_param._nb_port_read        ];
-  Tcontrol_t read_select_ack  [_param._nb_bank][_param._nb_port_read        ];
+  Tcontrol_t read_select_val  [_param._nb_bank][_param._nb_port_read_by_bank][_param._nb_port_read];
 
   LABEL("Loop of Test");
@@ -281,5 +282,5 @@
       LABEL("Iteration "+toString(iteration));
       
-      LABEL("Test read_in");
+      //LABEL("Test read_in");
       
       // Write in interface "read_in"
@@ -287,34 +288,32 @@
 	{
 	  read_in_num_bank  [i] =  rand() % _param._nb_bank;
-	  Tcontrol_t read_in_valid = (rand() % 2) != 0;
+	  Tcontrol_t read_in_val = (rand() % 2) != 0;
 
 	  Taddress_t address    = (read_in_num_bank[i] << _param._shift_address) | (gen_mask<Taddress_t>(_param._size_address-_param._shift_address) & i);
 
-	  read_is_busy      [i] = (read_in_valid == 0);
-	  read_in_ack       [i] = 0;
-	  read_in_data      [i] = 0;
-	  READ_IN_VAL       [i]->write(read_in_valid);
-	  READ_IN_ADDRESS   [i]->write(address);
-
-	  for (uint32_t j=0; j<_param._nb_bank; j++)
-	    read_select_ack [j][i] = 0;
+	  read_is_busy      [i] = (read_in_val == 0);   // invalid = busy
+	  read_in_ack       [i] = 0;                    // init
+	  read_in_data      [i] = 0;                    // init
+	  READ_IN_VAL       [i]->write(read_in_val);    // write signal
+	  READ_IN_ADDRESS   [i]->write(address);        // write signal
 	}
 
-      for (uint32_t i=0; i<_param._nb_bank; i++)
-	for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
-	  {
-	    read_out_ack      [i][j] = (rand() % 2) != 0;
-	    READ_OUT_ACK      [i][j]->write(read_out_ack      [i][j]);
-	    READ_OUT_DATA     [i][j]->write((j<<1)|1); // (j<<1)|1 afin de n'avoir jamais 0
-	  }
-      
       // compute the good read_select
       for (uint32_t i=0; i<_param._nb_bank; i++)
 	for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
 	  {
+	    Tcontrol_t read_out_ack = (rand() % 2) != 0;
+	    READ_OUT_ACK     [i][j]->write(read_out_ack);
+	    READ_OUT_DATA    [i][j]->write((j<<1)|1);            // (j<<1)|1 afin de n'avoir jamais 0
+
+	    read_out_find    [i][j] = false;
+	    read_out_port    [i][j] = 0;
+
+	    read_out_val     [i][j] = 0;
+	    read_out_address [i][j] = 0;
+
 	    bool find = false; // have find a port_in to link with this port_out
 	    for (uint32_t k=0; k<_param._nb_port_select_by_bank_read_port[j]; k++)
 	      {
-
 		uint32_t num_port; // number of port
 		
@@ -323,27 +322,31 @@
 		  num_port = k;
 		else
-		  num_port = _param._link_port_read [i];
-
-		read_select_val [i][num_port] = read_out_ack [i][j] && not read_is_busy [num_port];
-		
-		if ((read_out_ack [i][j] == 0) || find)
-		  read_select_ack [i][num_port] = 0; // read_out is busy or already find
-		else
+		  num_port = k*_param._nb_port_read_by_bank+j;
+
+		read_select_val [i][j][k] = read_out_ack and not read_is_busy [num_port] and (read_in_num_bank[num_port] == i); // select val if port is not busy and out accept a data
+		Tcontrol_t read_select_ack = 0;
+
+		// test a previous find
+		if (not ((read_out_ack == 0) || find))
 		  {
 		    // find a busy port?
-		    find = not read_is_busy [num_port];
-		    read_is_busy       [num_port]|= find;
-		    read_select_ack [i][num_port] = find;
+		    find                      = read_select_val;
+		    read_is_busy   [num_port]|= find; // port became busy if find
+		    read_select_ack           = find; // ack if find
 
 		    if (find)
 		      {
+			read_out_find    [i][j] = true;
+			read_out_port    [i][j] = num_port;
+
+			// know the good output
 			read_in_ack      [num_port] = 1;
 			read_in_data     [num_port] = ((j<<1)|1);
 			read_out_val     [i][j]     = 1;
-			read_out_address [i][j]     = (read_in_num_bank[i] << _param._shift_address) | (gen_mask<Taddress_t>(_param._size_address-_param._shift_address) & i);
+			read_out_address [i][j]     = (i << _param._shift_address) | (gen_mask<Taddress_t>(_param._size_address-_param._shift_address) & num_port);
 		      }
 		  }
 		
-		READ_SELECT_ACK [i][j][k]->write(read_select_ack [i][num_port]);
+		READ_SELECT_ACK [i][j][k]->write(read_select_ack);
 	      }
 	  }
@@ -352,14 +355,65 @@
       sc_start(1);
 
-//       // lot of test
-//   public    : SC_OUT(Tcontrol_t)           ** out_READ_IN_ACK       ;
-//   public    : SC_OUT(Tdata_t   )           ** out_READ_IN_DATA      ;
-
-//   public    : SC_OUT(Tcontrol_t)         **** out_READ_SELECT_VAL   ;
-
-//   public    : SC_OUT(Tcontrol_t)          *** out_READ_OUT_VAL      ;
-//   public    : SC_OUT(Taddress_t)          *** out_READ_OUT_ADDRESS  ;
+      // test output
+
+      TEXT ("===== Test Output =====");
+      for (uint32_t i=0; i<_param._nb_port_read; i++)
+	{
+	  TEXT ("Read_in         [" << i << "]       : "
+		<< READ_IN_VAL [i]->read() << ","
+		<< read_in_ack [i]         << " - "
+		<< "Reg[" << READ_IN_ADDRESS [i]->read() << "] -> "
+		<< read_in_data [i] << " "
+		<< "{bank : " << read_in_num_bank[i] << "}"
+		);
+
+	  TEST (Tcontrol_t, read_in_ack  [i], READ_IN_ACK  [i]->read());
+	  if (READ_IN_VAL [i]->read() and READ_IN_ACK [i]->read())
+	  TEST (Tdata_t   , read_in_data [i], READ_IN_DATA [i]->read());
+	}
+
+      cout << endl;
+      for (uint32_t i=0; i<_param._nb_bank; i++)
+	for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+	  {
+	    TEXT ("Read_out        [" << i << "][" << j << "]    : "
+		  << read_out_val [i][j]         << ","
+		  << READ_OUT_ACK [i][j]->read() << " - "
+		  << "Reg[" << read_out_address [i][j] << "] -> "
+		  << READ_OUT_DATA [i][j]->read() << " - "
+		  << "[" << read_out_find [i][j]<< " , "
+		  << read_out_port    [i][j] << "]"		  
+		  );
+
+	    TEST (Tcontrol_t, read_out_val     [i][j], READ_OUT_VAL     [i][j]->read());
+	    if (READ_OUT_VAL [i][j]->read() and READ_OUT_ACK [i][j]->read())
+	    TEST (Taddress_t, read_out_address [i][j], READ_OUT_ADDRESS [i][j]->read());
+
+	    for (uint32_t k=0; k<_param._nb_port_select_by_bank_read_port[j]; k++)
+	      {
+		uint32_t num_port; // number of port
+		
+		// compute the good number of port
+		if (_param._crossbar == FULL_CROSSBAR)
+		  num_port = k;
+		else
+		  num_port = k*_param._nb_port_read_by_bank+j;
+		
+		TEXT (" * Read_select  [" << i << "][" << j << "][" << k << "] : "
+		      << read_select_val [i][j][k]         << ","
+		      << READ_SELECT_ACK [i][j][k]->read() << " - "
+		      << "link with read_in[" << num_port << "]"
+		      );
+		
+		TEST (Tcontrol_t, read_select_val  [i][j][k], READ_SELECT_VAL  [i][j][k]->read());
+	      }
+	    
+	    
+	    
+	  }
 
     }
+
+  sc_start(0);
 
   /********************************************************
@@ -367,14 +421,20 @@
    ********************************************************/
 
-  cout << "<" << name << "> ............ Stop Simulation" << endl;
+  TEXT("............ Stop Simulation");
 
   delete CLOCK;
 
+  TEXT("delete read_in");
   for (uint32_t i=0; i<_param._nb_port_read; i++)
     {
+//       TEXT("1, i " << i);
       delete READ_IN_VAL       [i];
+//       TEXT("2");
       delete READ_IN_ACK       [i];
+//       TEXT("3");
       delete READ_IN_ADDRESS   [i];
+//       TEXT("4");
       delete READ_IN_DATA      [i];
+//       TEXT("5");
     }
   						      
@@ -384,4 +444,5 @@
   delete READ_IN_DATA   ;
 
+  TEXT("delete read_select");
    for (uint32_t i=0; i<_param._nb_bank; i++)
      {
@@ -402,4 +463,5 @@
    delete READ_SELECT_ACK;
 
+  TEXT("delete read_out");
    for (uint32_t i=0; i<_param._nb_bank; i++)
      {
@@ -423,4 +485,5 @@
   delete READ_OUT_DATA   ;
 
+  TEXT("delete write_in");
   for (uint32_t i=0; i<_param._nb_port_write; i++)
     {
@@ -436,4 +499,5 @@
   delete WRITE_IN_DATA   ;
 
+  TEXT("delete write_select");
   for (uint32_t i=0; i<_param._nb_bank; i++)
     {
@@ -454,4 +518,5 @@
   delete WRITE_SELECT_ACK;
   
+  TEXT("delete write_out");
   for (uint32_t i=0; i<_param._nb_bank; i++)
     {
@@ -477,4 +542,5 @@
 #endif
 
+
   delete _RegisterFile_Multi_Banked_Glue;
 }
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/RegisterFile_Multi_Banked_Glue.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/RegisterFile_Multi_Banked_Glue.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/RegisterFile_Multi_Banked_Glue.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{RegisterFile\_Multi\_Banked\_Glue}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h	(revision 30)
@@ -63,9 +63,9 @@
   public : const uint32_t    _shift_address        ;
 
-  public :       uint32_t  * _link_port_read       ; 
-  public :       uint32_t  * _link_port_write      ;
-
-  public :       uint32_t  * _nb_port_select_by_bank_read_port ;
-  public :       uint32_t  * _nb_port_select_by_bank_write_port;
+    // A lot of table to the partial crossbar
+  public :       uint32_t  * _link_port_read_in_to_out    ;
+  public :       uint32_t  * _link_port_read_in_to_select ;
+  public :       uint32_t  * _link_port_write_in_to_out   ;
+  public :       uint32_t  * _link_port_write_in_to_select;
 
     //-----[ methods ]-----------------------------------------------------------
@@ -82,5 +82,5 @@
   public : ~Parameters () ;
 
-  public : string msg_error (void);
+  public : string msg_error           (void);
 
   public :        string   print      (uint32_t depth);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h	(revision 30)
@@ -119,4 +119,19 @@
 					       
 #ifdef SYSTEMC				       
+    // function pointer
+  public : uint32_t  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_read_in_to_out    ) (uint32_t, uint32_t);
+  public : uint32_t  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_read_in_to_select ) (uint32_t, uint32_t);
+  public : uint32_t  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_write_in_to_out   ) (uint32_t, uint32_t);
+  public : uint32_t  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_write_in_to_select) (uint32_t, uint32_t);
+
+  public : uint32_t  full_crossbar_link_port_read_in_to_out        (uint32_t num_port, uint32_t num_bank);
+  public : uint32_t  full_crossbar_link_port_read_in_to_select     (uint32_t num_port, uint32_t num_bank);
+  public : uint32_t  full_crossbar_link_port_write_in_to_out       (uint32_t num_port, uint32_t num_bank);
+  public : uint32_t  full_crossbar_link_port_write_in_to_select    (uint32_t num_port, uint32_t num_bank);
+  public : uint32_t  partial_crossbar_link_port_read_in_to_out     (uint32_t num_port, uint32_t num_bank);
+  public : uint32_t  partial_crossbar_link_port_read_in_to_select  (uint32_t num_port, uint32_t num_bank);
+  public : uint32_t  partial_crossbar_link_port_write_in_to_out    (uint32_t num_port, uint32_t num_bank);
+  public : uint32_t  partial_crossbar_link_port_write_in_to_select (uint32_t num_port, uint32_t num_bank);
+
   private : void     allocation                (void);
   private : void     deallocation              (void);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters.cpp	(revision 30)
@@ -31,5 +31,5 @@
     _nb_port_write_by_bank (nb_port_write_by_bank),
     _crossbar              (crossbar             ),
-    _shift_address         (static_cast<uint32_t>(ceil(log2(_nb_bank))))
+    _shift_address         (_size_address-static_cast<uint32_t>(ceil(log2(_nb_bank))))
   {
     log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","Begin");
@@ -39,46 +39,37 @@
 	// All port_src is connected with one port_dest on each bank
 	
-	_link_port_read  = new uint32_t [_nb_port_read ];
-	for (uint32_t i=0; i<_nb_port_read ; i++)
-	  _link_port_read  [i] = i%_nb_port_read_by_bank;
+	_link_port_read_in_to_out          = new uint32_t [_nb_port_read ];
+	_link_port_read_in_to_select       = new uint32_t [_nb_port_read ];
+	_link_port_write_in_to_out         = new uint32_t [_nb_port_write];
+	_link_port_write_in_to_select      = new uint32_t [_nb_port_write];
+	uint32_t _nb_port_select_by_bank_read_port  [_nb_port_read_by_bank ];
+	uint32_t _nb_port_select_by_bank_write_port [_nb_port_write_by_bank];
+	
+	// init
+	for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
+	  _nb_port_select_by_bank_read_port  [i] = 0;
+	
+	for (uint32_t i=0; i<_nb_port_read         ;i++)
+	  {
+	    uint32_t x = i%_nb_port_read_by_bank;
+	    _link_port_read_in_to_out          [i] = x;
+	    _link_port_read_in_to_select       [i] = _nb_port_select_by_bank_read_port [x];
+	    _nb_port_select_by_bank_read_port  [x] ++;
+	  }
 
-	_link_port_write = new uint32_t [_nb_port_write];
-	for (uint32_t i=0; i<_nb_port_write; i++)
-	  _link_port_write [i] = i%_nb_port_write_by_bank;
+	// init
+	for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
+	  _nb_port_select_by_bank_write_port [i] = 0;
+	
+	for (uint32_t i=0; i<_nb_port_write         ;i++)
+	  {
+	    uint32_t x = i%_nb_port_write_by_bank;
+	    _link_port_write_in_to_out         [i] = x;
+	    _link_port_write_in_to_select      [i] = _nb_port_select_by_bank_write_port [x];
+	    _nb_port_select_by_bank_write_port [x] ++;
+	  }
       }
     // else : don't allocate
 
-    _nb_port_select_by_bank_read_port  = new uint32_t [_nb_port_read_by_bank ];
-    
-    if (_crossbar == FULL_CROSSBAR)
-      // All port_src is connected with all port_dest on each bank
-      for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
-	_nb_port_select_by_bank_read_port [i] = _nb_port_read;
-    else
-      // All port_src is connected with one port_dest on each bank
-      {
-	for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
-	  _nb_port_select_by_bank_read_port [i] = 0;
-
-	for (uint32_t i=0; i<_nb_port_read         ;i++)
-	  _nb_port_select_by_bank_read_port [_link_port_read [i]] ++;
-      }
-    
-    _nb_port_select_by_bank_write_port = new uint32_t [_nb_port_write_by_bank];
-
-    if (_crossbar == FULL_CROSSBAR)
-      // All port_src is connected with all port_dest on each bank
-      for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
-	_nb_port_select_by_bank_write_port [i] = _nb_port_write;
-    else
-      // All port_src is connected with one port_dest on each bank
-      {
-	for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
-	  _nb_port_select_by_bank_write_port [i] = 0;
-
-	for (uint32_t i=0; i<_nb_port_write         ;i++)
-	  _nb_port_select_by_bank_write_port [_link_port_write[i]] ++;
-      }
-    
     test();
     log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","End");
@@ -97,13 +88,4 @@
    {
     log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","Begin");
-
-    _nb_port_select_by_bank_read_port  = new uint32_t [_nb_port_read_by_bank ];
-    for (uint32_t i=0; i<_nb_port_read_by_bank; i++)
-      _nb_port_select_by_bank_read_port [i] = param._nb_port_select_by_bank_read_port [i];
-    
-    _nb_port_select_by_bank_write_port = new uint32_t [_nb_port_write_by_bank ];
-    for (uint32_t i=0; i<_nb_port_write_by_bank; i++)
-      _nb_port_select_by_bank_write_port[i] = param._nb_port_select_by_bank_write_port [i];
-    
     test();
     log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","End");
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue.cpp	(revision 30)
@@ -33,4 +33,22 @@
     log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Begin");
 
+#ifdef SYSTEMC
+    // write function pointer
+    if (_crossbar == PARTIAL_CROSSBAR)
+      {
+	link_port_read_in_to_out     = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_read_in_to_out    ;
+ 	link_port_read_in_to_select  = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_read_in_to_select ;
+ 	link_port_write_in_to_out    = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_write_in_to_out   ;
+ 	link_port_write_in_to_select = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_write_in_to_select;
+      }
+    else
+      {
+ 	link_port_read_in_to_out     = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::   full_crossbar_link_port_read_in_to_out    ;
+ 	link_port_read_in_to_select  = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::   full_crossbar_link_port_read_in_to_select ;
+ 	link_port_write_in_to_out    = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::   full_crossbar_link_port_write_in_to_out   ;
+ 	link_port_write_in_to_select = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::   full_crossbar_link_port_write_in_to_select;
+      }
+#endif
+
 #ifdef STATISTICS
     log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Allocation of statistics");
@@ -66,5 +84,5 @@
 
     allocation ();
-
+    
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Method - transition");
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_genMealy_read_in.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_genMealy_read_in.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_genMealy_read_in.cpp	(revision 30)
@@ -9,5 +9,5 @@
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
 
-namespace morpheo                    {
+namespace morpheo {
 namespace behavioural {
 namespace generic {
@@ -16,27 +16,41 @@
 namespace registerfile_multi_banked_glue {
 
-  
   void RegisterFile_Multi_Banked_Glue::genMealy_read_in (void)
   {
     log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","Begin");
     
-    for (uint32_t l=0; l<_param._nb_port_read; l++)
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
       {
-	uint32_t num_bank = PORT_READ(in_READ_IN_ADDRESS [l])>>_param._shift_address;
+	log_printf(ALL,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","read_in [%d]",i);
 
+	uint32_t num_bank        = PORT_READ(in_READ_IN_ADDRESS [i])>>_param._shift_address;
+	uint32_t num_port_out    = *link_port_read_in_to_out    (i,num_bank);
+	uint32_t num_port_select = *link_port_read_in_to_select (i,num_bank);
+
+	if (_param._crossbar == FULL_CROSSBAR) 
+	  {
+	    // scearch in all possible destination the good
+	    // if not found : num_port = 0
+	    for (num_port = _param._nb_port_read_by_bank-1; num_port > 0; num_port --)
+	      {
+		log_printf(ALL,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","test read_out_port   %d",num_port);		
+		
+		for (uint32_t j=0; j<_param._nb_port_select_by_bank_read_port [num_port]; j++)
+		  {
+                log_printf(ALL,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","test read_out_select %d",j);
+		    if (PORT_READ(in_READ_SELECT_ACK [num_bank][num_port][j])==1)
+		      goto end_FULL_CROSSBAR;
+		  }
+	      }
+	  }
+	
+	end_FULL_CROSSBAR :	
+	  
+	log_printf(TRACE,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","read_in [%d] address : %.8x - num_bank %d, num_port %d",i,static_cast<uint32_t>(PORT_READ(in_READ_IN_ADDRESS [i])),num_bank,num_port);
+	
+	PORT_WRITE(out_READ_IN_ACK  [i],PORT_READ(in_READ_SELECT_ACK [num_bank][num_port]));
+	PORT_WRITE(out_READ_IN_DATA [i],PORT_READ(in_READ_OUT_DATA   [num_bank][num_port]));
 // 	(*(out_READ_IN_ACK  [l])) (*(in_READ_IN_ADDRESS [i][j]));
 // 	(*(out_READ_IN_DATA [l])) (*(in_READ_IN_ADDRESS [i][j]));
-
-// 	for (uint32_t i=0; i<_param._nb_bank; i++)
-// 	  for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
-// 	    {
-// 	      (*(out_READ_IN_ACK  [l])) (*(in_READ_OUT_ACK      [i][j]));
-// 	      (*(out_READ_IN_DATA [l])) (*(in_READ_OUT_DATA     [i][j]));
-// 	      for (uint32_t k=0; k<_param._nb_port_select_by_bank_read_port[j]; k++)
-// 		{
-// 		  (*(out_READ_IN_ACK  [l])) (*(in_READ_SELECT_ACK [i][j][k]));
-// 		  (*(out_READ_IN_DATA [l])) (*(in_READ_SELECT_ACK [i][j][k]));
-// 		}
-// 	    }
       }
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile	(revision 30)
@@ -24,5 +24,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/RegisterFile_Multi_Banked.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/RegisterFile_Multi_Banked.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/RegisterFile_Multi_Banked.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{RegisterFile\_Multi\_Banked}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/Makefile	(revision 30)
@@ -24,5 +24,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/configuration.cfg	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/configuration.cfg	(revision 30)
@@ -1,4 +1,4 @@
 Select_Priority_Fixed
-2	16	*2	# nb_entity
-0	1	+1	# encoding_one_hot
+16	16	*2	# nb_entity
+0	0	+1	# encoding_one_hot
 1	1	+1	# encoding_compact
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/Select_Priority_Fixed.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/Select_Priority_Fixed.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/Select_Priority_Fixed.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Select\_Priority\_Fixed}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 30)
@@ -19,4 +19,6 @@
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h"
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Types.h"
+#include "Behavioural/include/Interfaces.h"
+
 #ifdef STATISTICS
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h"
@@ -59,4 +61,6 @@
   private   : Vhdl_Testbench                 * _vhdl_testbench;
 #endif
+
+  private   : Interfaces                     * interfaces;
 
 #ifdef SYSTEMC
@@ -113,7 +117,7 @@
 #if VHDL				       
   public  : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl & vhdl);
-  private : void     vhdl_declaration          (Vhdl & vhdl);
-  private : void     vhdl_body                 (Vhdl & vhdl);
+  private : void     vhdl_port                 (Vhdl * & vhdl);
+  private : void     vhdl_declaration          (Vhdl * & vhdl);
+  private : void     vhdl_body                 (Vhdl * & vhdl);
 #endif					       
 					       
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp	(revision 30)
@@ -32,4 +32,16 @@
     log_printf(FUNC,Select_Priority_Fixed,"Select_Priority_Fixed","Begin");
 
+#ifdef SYSTEMC
+    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation");
+
+    allocation ();
+#endif
+
+#ifdef POSITION
+    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Position");
+    
+    
+#endif
+
 #ifdef STATISTICS
     log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation of statistics");
@@ -48,5 +60,4 @@
     //  -> clock's signals
     _vhdl_testbench = new Vhdl_Testbench (_name);
-//     _vhdl_testbench->set_clock    ("in_CLOCK",false);
 #endif
 
@@ -58,13 +69,5 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-    _vhdl_testbench->set_clock    ("in_CLOCK",true);
-#endif
-
 #ifdef SYSTEMC
-    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation");
-
-    allocation ();
-
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Method - transition");
@@ -98,5 +101,4 @@
     
 #endif    
-
 #endif
     log_printf(FUNC,Select_Priority_Fixed,"Select_Priority_Fixed","End");
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp	(revision 30)
@@ -15,5 +15,4 @@
 namespace select_priority_fixed {
 
-
   void Select_Priority_Fixed::allocation (void)
   {
@@ -22,6 +21,11 @@
     log_printf(FUNC,Select_Priority_Fixed,"allocation","Begin");
 
-     in_CLOCK        = new SC_CLOCK           ("in_CLOCK ");
-     in_NRESET       = new SC_IN (Tcontrol_t) ("in_NRESET");
+    interfaces = new Interfaces;
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    Interface interface_ ("", IN, WEST);
+    
+    in_CLOCK        = interface_.set_signal_clk              ("clock" ,1, PORT_VHDL_YES_TESTBENCH_NO);
+    in_NRESET       = interface_.set_signal_in  <Tcontrol_t> ("nreset",1);
 
      in_VAL          = new SC_IN (Tcontrol_t)           * [_param._nb_entity];
@@ -31,19 +35,15 @@
     for (uint32_t i=0; i<_param._nb_entity; i++)
       {
-	rename = " in_VAL_"+toString(i);
-	 in_VAL [i]      = new SC_IN (Tcontrol_t) (rename.c_str());
-
+	 in_VAL [i]    = interface_.set_signal_in  <Tcontrol_t> ("val_"+toString(i),1);
 	if (_param._encoding_one_hot)
-	  {
-	rename = "out_ACK_"+toString(i);
-	out_ACK [i]      = new SC_OUT(Tcontrol_t) (rename.c_str());
-	  }
+	out_ACK [i]    = interface_.set_signal_out <Tcontrol_t> ("ack_"+toString(i),1);
       }
 
     if (_param._encoding_compact)
       {
-	out_ENTITY_ACK   = new SC_OUT(Tcontrol_t)           ("out_entity_ack");
-	out_ENTITY       = new SC_OUT(Tentity_t)            ("out_entity");
+	out_ENTITY     = interface_.set_signal_out <Tentity_t > ("entity"    , _param._size_entity);
+	out_ENTITY_ACK = interface_.set_signal_out <Tcontrol_t> ("entity_ack", 1);
       }
+
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
@@ -54,5 +54,4 @@
 }; // end namespace select
 }; // end namespace generic
-
 }; // end namespace behavioural
 }; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp	(revision 30)
@@ -40,4 +40,6 @@
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
+    delete interfaces;
+
     log_printf(FUNC,Select_Priority_Fixed,"deallocation","End");
   };
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp	(revision 30)
@@ -20,7 +20,8 @@
   {
     log_printf(FUNC,Select_Priority_Fixed,"vhdl","Begin");
-    Vhdl vhdl (_name);
 
-    vhdl.set_library_work (_name + "_Pack");
+    Vhdl * vhdl = new Vhdl (_name);
+
+    vhdl->set_library_work (_name + "_Pack");
 
     vhdl_port        (vhdl);
@@ -28,5 +29,5 @@
     vhdl_body        (vhdl);
 
-    vhdl.generate_file();
+    vhdl->generate_file();
     log_printf(FUNC,Select_Priority_Fixed,"vhdl","End");
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp	(revision 30)
@@ -16,28 +16,28 @@
 
 
-  void Select_Priority_Fixed::vhdl_body (Vhdl & vhdl)
+  void Select_Priority_Fixed::vhdl_body (Vhdl * & vhdl)
   {
     log_printf(FUNC,Select_Priority_Fixed,"vhdl_body","Begin");
-    vhdl.set_body ("");
+    vhdl->set_body ("");
 
-    vhdl.set_body("internal_entity <=");
+    vhdl->set_body("internal_entity <=");
     for (uint32_t i=0; i<_param._nb_entity; i++)
       {
-	vhdl.set_body("\t"+std_logic_conv(_param._size_entity+1,i)+" when in_VAL_"+toString(i)+"='1' else");
+	vhdl->set_body("\t"+std_logic_conv(_param._size_entity+1,i)+" when in_VAL_"+toString(i)+"='1' else");
       }
-    vhdl.set_body("\t"+std_logic_conv(_param._size_entity+1,1<<_param._size_entity)+";");
-    vhdl.set_body ("");
+    vhdl->set_body("\t"+std_logic_conv(_param._size_entity+1,1<<_param._size_entity)+";");
+    vhdl->set_body ("");
 
     if (_param._encoding_one_hot)
       {
 	for (uint32_t i=0; i<_param._nb_entity; i++)
-	  vhdl.set_body("out_ACK_"+toString(i)+" <= '1' when internal_entity"+std_logic_range(_param._size_entity+1)+" = "+std_logic_conv(_param._size_entity+1,i)+" else '0';");
-	vhdl.set_body ("");
+	  vhdl->set_body("out_ACK_"+toString(i)+" <= '1' when internal_entity"+std_logic_range(_param._size_entity+1)+" = "+std_logic_conv(_param._size_entity+1,i)+" else '0';");
+	vhdl->set_body ("");
       }
 
     if (_param._encoding_compact)
       {
-	vhdl.set_body ("out_ENTITY     <=     internal_entity"+std_logic_range(_param._size_entity-1,                  0)+";");
-	vhdl.set_body ("out_ENTITY_ACK <= not internal_entity"+std_logic_range(_param._size_entity  ,_param._size_entity)+";");
+	vhdl->set_body ("out_ENTITY     <=     internal_entity"+std_logic_range(_param._size_entity-1,                  0)+";");
+	vhdl->set_body ("out_ENTITY_ACK <= not internal_entity"+std_logic_range(_param._size_entity  ,_param._size_entity)+";");
       }	   
     
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_declaration.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_declaration.cpp	(revision 30)
@@ -16,9 +16,9 @@
 
 
-  void Select_Priority_Fixed::vhdl_declaration (Vhdl & vhdl)
+  void Select_Priority_Fixed::vhdl_declaration (Vhdl * & vhdl)
   {
     log_printf(FUNC,Select_Priority_Fixed,"vhdl_declaration","Begin");
 
-    vhdl.set_signal("internal_entity",_param._size_entity+1);
+    vhdl->set_signal("internal_entity",_param._size_entity+1);
 
     log_printf(FUNC,Select_Priority_Fixed,"vhdl_declaration","End");
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp	(revision 30)
@@ -9,11 +9,5 @@
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h"
 
-#ifdef VHDL_TESTBENCH
-# define VHDL_SET_PORT(name,direction,size) do {vhdl.set_port (name,direction,size); _vhdl_testbench->set_port (name,direction,size);} while (0)
-#else
-# define VHDL_SET_PORT(name,direction,size)     vhdl.set_port (name,direction,size)
-#endif
-
-namespace morpheo                    {
+namespace morpheo {
 namespace behavioural {
 namespace generic {
@@ -21,24 +15,17 @@
 namespace select_priority_fixed {
 
-
-  void Select_Priority_Fixed::vhdl_port (Vhdl & vhdl)
+  void Select_Priority_Fixed::vhdl_port (Vhdl * & vhdl)
   {
     log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","Begin");
 
-    vhdl.set_port (" in_CLOCK ", IN, 1);
-    VHDL_SET_PORT (" in_NRESET", IN, 1);
-	
-    for (uint32_t i=0; i<_param._nb_entity; i++)
-      {
-	VHDL_SET_PORT (" in_VAL_"+toString(i) , IN, 1);
-	if (_param._encoding_one_hot)
-	VHDL_SET_PORT ("out_ACK_"+toString(i) ,OUT, 1);
-      }
-    if (_param._encoding_compact)
-      {
-    VHDL_SET_PORT ("out_ENTITY    ",OUT,_param._size_entity);
-    VHDL_SET_PORT ("out_ENTITY_ACK",OUT,1);
-      }
-    log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","End");
+#ifdef VHDL
+    interfaces->set_port(vhdl);
+#endif
+#ifdef VHDL_TESTBENCH
+    interfaces->set_port(_vhdl_testbench);			
+   _vhdl_testbench->set_clock    ("in_CLOCK",true);
+#endif    
+
+   log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/Makefile	(revision 30)
@@ -24,5 +24,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/Shifter.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/Shifter.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/Shifter.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Shifter}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -18,5 +19,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/Makefile	(revision 30)
@@ -24,5 +24,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/Victim_Pseudo_LRU.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/Victim_Pseudo_LRU.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/Victim_Pseudo_LRU.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Victime\_Pseudo\_LRU}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../
+DIR_COMPONENT                   = ./
+include                         $(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -18,5 +19,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Component
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Component	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Component	(revision 30)
@@ -1,9 +1,11 @@
-#-----[ Variable ]-----------------------------------------
+#-----[ Directory ]----------------------------------------
+DIR_DOC				= doc
 DIR_LIB				= lib
 DIR_TEST			= SelfTest
 
+#-----[ Variable ]-----------------------------------------
 OBJECTS				= $(OBJECTS_COMMON)
 
-#-----[ Directory ]----------------------------------------
+#-----[ Rules ]--------------------------------------------
 .PRECIOUS			: $(DIR_LIB)/%.a
 .NOPARALLEL			: clean help
@@ -21,4 +23,7 @@
 				@$(MKDIR) $@
 
+document			:
+				@$(MAKE) --directory=$(DIR_DOC) --makefile=Makefile
+
 component_clean			:
 				@$(RM) $(DIR_LIB)
@@ -28,4 +33,5 @@
 				@$(ECHO) ""
 				@$(ECHO) " * all_component        : compile all c++ file and generate library"
+				@$(ECHO) " * document             : Generate documantation"
 				@$(ECHO) " * clean                : Erase all generate files"
 				@$(ECHO) " * help                 : print this text"
@@ -39,3 +45,3 @@
 				@$(MAKE) common_clean 
 				@$(MAKE) component_clean
-
+				@if $(TEST) -d $(DIR_DOC); then $(MAKE) --directory=$(DIR_DOC) --makefile=Makefile clean; fi
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Documentation
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Documentation	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Documentation	(revision 30)
@@ -0,0 +1,116 @@
+#-----[ Directory ]----------------------------------------
+
+DIR_DOCUMENTATION       = .
+DIR_TEX   	        = $(DIR_DOCUMENTATION)
+DIR_SCHEMA              = $(DIR_DOCUMENTATION)/fig
+DIR_SCHEMA_EPS          = $(DIR_DOCUMENTATION)/eps
+
+#-----[ Files ]--------------------------------------------
+
+TEX_FILES               = $(wildcard $(DIR_TEX)/*.tex)
+DVI_FILES               = $(patsubst $(DIR_TEX)/%.tex,%.dvi,$(TEX_FILES))
+PS_FILES                = $(patsubst $(DIR_TEX)/%.tex,%.ps ,$(TEX_FILES))
+PDF_FILES               = $(patsubst $(DIR_TEX)/%.tex,%.pdf,$(TEX_FILES))
+EPS_FILES               = $(patsubst $(DIR_SCHEMA)/%.fig,$(DIR_SCHEMA_EPS)/%.eps,$(wildcard $(DIR_SCHEMA)/*.fig))       \
+                          $(patsubst $(DIR_SCHEMA)/%.eps,$(DIR_SCHEMA_EPS)/%.eps,$(wildcard $(DIR_SCHEMA)/*.eps))
+
+#-----[ Rules ]--------------------------------------------
+
+#--------------------------------------------------------------------------------
+# The reset of this file shall not be editted
+#--------------------------------------------------------------------------------
+.PHONY 			: all clean help
+.SECONDARY 		: $(DVI_FILES) $(PS_FILES) $(PDF_FILES) $(EPS_FILES) $(DIR_SCHEMA_EPS)
+
+all_documentation	: $(EPS_FILES)
+			$(MAKE) $(PDF_FILES)
+
+#--------------------------------------------------------------------------------
+# Generation of the formatted text:
+# regular flow tex -> dvi -> ps -> pdf.
+#--------------------------------------------------------------------------------
+%.pdf 			: %.ps
+			@$(ECHO) "Génération du fichier $*.pdf"
+			@$(PS2PDF) $< $@
+			@#Copy at directory
+
+%.ps 			: %.dvi
+			@$(ECHO) "Génération du fichier $*.ps"
+			@$(DVIPS) -o $@ $<
+
+%.dvi 			: $(DIR_TEX)/%.tex
+			@$(ECHO) "Génération du fichier $*.dvi"
+			@#touch $(patsubst %.tex,%.ind,$<)
+			@$(LATEX) $<
+			@$(LATEX) $< > /dev/null
+			@#$(MAKEINDEX) $(patsubst %.tex,%.idx,$<)
+			@citation=`$(GREP) "citation" $*.aux`; \
+	                 if $(TEST) -n "$$citation" ; then  \
+			  $(BIBTEX) $* ; \
+			fi
+			@$(LATEX) $< > /dev/null
+			@$(LATEX) $< > /dev/null
+
+#--------------------------------------------------------------------------------
+# The figures directory
+#--------------------------------------------------------------------------------
+$(DIR_SCHEMA_EPS)	:
+			@$(ECHO) "Make directory       : $@"
+			@$(MKDIR) $@
+
+$(DIR_SCHEMA_EPS)/%.eps	: $(DIR_SCHEMA)/%.eps $(DIR_SCHEMA_EPS)
+			@$(ECHO) "Generate   files     : $*.eps"
+			@$(CP) $(DIR_SCHEMA)/$*.eps $(DIR_SCHEMA_EPS)
+
+$(DIR_SCHEMA_EPS)/%.eps	: $(DIR_SCHEMA)/%.fig $(DIR_SCHEMA_EPS)
+			@$(ECHO) "Generate   files     : $*.eps"
+			@$(FIG2EPS) $< $@
+
+#--------------------------------------------------------------------------------
+# Cleaning
+#--------------------------------------------------------------------------------
+
+clean			:
+			@$(ECHO) "Delete     temporary files              "$(PWD)
+			@$(RM) $(DIR_SCHEMA_EPS)
+			@$(RM) $(DVI_FILES) $(PS_FILES) $(PDF_FILES)
+			@$(MAKE) clean_rec DIR_CLEAN=.  
+
+#Clean recursive
+clean_rec		:
+			@$(ECHO) "Delete     temporary files in directory $(DIR_CLEAN)"
+			@$(RM)	$(DIR_CLEAN)/*~ 		\
+				$(DIR_CLEAN)/*.bak  		\
+				$(DIR_CLEAN)/*.aux  		\
+				$(DIR_CLEAN)/*.bbl  		\
+				$(DIR_CLEAN)/*.blg  		\
+				$(DIR_CLEAN)/*.bmt  		\
+				$(DIR_CLEAN)/*.log  		\
+				$(DIR_CLEAN)/*.mtc* 		\
+				$(DIR_CLEAN)/*.toc  		\
+				$(DIR_CLEAN)/*.idx  		\
+				$(DIR_CLEAN)/*.ilg  		\
+				$(DIR_CLEAN)/*.ind  		\
+				$(DIR_CLEAN)/*.out  		\
+				$(DIR_CLEAN)/*.nav  		\
+				$(DIR_CLEAN)/*.snm  		\
+				$(DIR_CLEAN)/missfont.log
+			@# The .bbl file is to be removed if "bibtex" is used.
+			@for files in `$(LS) $(DIR_CLEAN)`; do                              			\
+				if $(TEST) -d $(DIR_CLEAN)/$$files;                         			\
+				then                                                        			\
+					$(MAKE) clean_rec DIR_CLEAN=$(DIR_CLEAN)/$$files;   			\
+				fi;                                                         			\
+			done;
+
+#--------------------------------------------------------------------------------
+# Help
+#--------------------------------------------------------------------------------
+
+help			:
+			@$(ECHO) " -----[ Documentation ]------------------------------"
+			@$(ECHO) ""
+			@$(ECHO) " * all_documentation    : Generate all documents"
+			@$(ECHO) " * clean                : Erase all generate files"
+			@$(ECHO) " * help                 : Print this message"
+			@$(ECHO) ""
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest	(revision 30)
@@ -10,5 +10,5 @@
 DIR_BIN				= bin
 DIR_LIB				= ../lib
-DIR_CFG_GEN				= configuration_generated
+DIR_CFG_GEN			= configuration_generated
 DIR_CFG_USER			= configuration
 DIR_LOG				= log
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.defs	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.defs	(revision 30)
@@ -4,27 +4,6 @@
 # [ Description ]
 # 
-# Makefile
 
-#-----[ Simulator ]----------------------------------------
-SIMULATOR			= systemcass_deps
-
-# 3 simulators :
-# systemc			- SystemC    
-# systemcass 			- SystemCASS
-# systemcass_deps		- SystemCASS, and use port dependency information instead of sensitivity list
-
-#-----[ Flags ]--------------------------------------------
-FLAGS				=	-DVHDL			\
- 					-DVHDL_TESTBENCH	\
-					-DSYSTEMC		\
-					-DSTATISTICS 		\
-					-DCONFIGURATION		\
-					-DDEBUG=DEBUG_ALL    
-					
-# Flags :
-# DEBUG={level}                 - Print Debug Message
-# VHDL                          - To generate a vhdl's    model
-# SYSTEMC                       - To generate a systemc's model
-# CONFIGURATION			- To generate a configuration file (it's input of viewer)
-# STATISTICS     (need SYSTEMC) - In the simulation, generate a statistics's file
-# VHDL_TESTBENCH (need SYSTEMC) - In the simulation, generate two testbench's file (input and ouput) to validate the vhdl's model
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO           = ..
+DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 30)
@@ -0,0 +1,31 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+
+#-----[ Simulator ]----------------------------------------
+SIMULATOR			= systemcass_deps
+
+# 3 simulators :
+# systemc			- SystemC    
+# systemcass 			- SystemCASS
+# systemcass_deps		- SystemCASS, and use port dependency information instead of sensitivity list
+
+#-----[ Flags ]--------------------------------------------
+FLAGS				=	-DSYSTEMC		\
+					-DVHDL			\
+ 					-DVHDL_TESTBENCH	\
+					-DSTATISTICS 		\
+					-DPOSITION       	\
+					-DCONFIGURATION  	\
+					-DDEBUG=DEBUG_ALL    
+					
+# Flags :
+# DEBUG={level}                 - Print Debug Message
+# SYSTEMC                       - To generate a systemc's model
+# VHDL                          - To generate a vhdl's    models
+# VHDL_TESTBENCH (need SYSTEMC) - In the simulation, generate two testbench's file (input and ouput) to validate the vhdl's model
+# STATISTICS     (need SYSTEMC) - In the simulation, generate a statistics's file
+# POSITION                      - To generate a position's files     (it's input of viewer)
+# CONFIGURATION			- To generate a configuration's file (it's input of viewer and generator)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf	(revision 30)
@@ -3,20 +3,17 @@
 #
 
-all: _Generic/RegisterFile/SelfTest _Generic/Select/Priority_Fixed/SelfTest
+all: _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest Generic/Select/Priority_Fixed/SelfTest
 
-_Generic/RegisterFile/SelfTest:
-	gmake all -C Generic/RegisterFile/SelfTest
+_Generic/RegisterFile/RegisterFile_Monolithic/SelfTest:
+	gmake all -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
 
-_Generic/Select/Priority_Fixed/SelfTest:
-	gmake all -C Generic/Select/Priority_Fixed/SelfTest
+Generic/Select/Priority_Fixed/SelfTest:
 
 clean:
-	gmake clean -C Generic/RegisterFile/SelfTest
-	gmake clean -C Generic/Select/Priority_Fixed/SelfTest
+	gmake clean -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
 
 re: clean all
 
 install:
-	gmake install -C Generic/RegisterFile/SelfTest
-	gmake install -C Generic/Select/Priority_Fixed/SelfTest
+	gmake install -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= @DIR_MORPHEO
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= @DIR_MORPHEO
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../@DIR_MORPHEO
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
 
 LIBRARY				= $(@COMPONENT_LIBRARY)
@@ -24,5 +25,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/VERSION
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/VERSION	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/VERSION	(revision 30)
@@ -1,3 +1,4 @@
-v0.5
+v0.6
 
 0.5 modif vhdl_port et vhdl_testbench_port -> ajout d'une macro
+0.6 ajout de la documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/New_Component.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/New_Component.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/New_Component.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../@DIR_MORPHEO/Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{@COMPONENT}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/Makefile	(revision 30)
@@ -24,5 +24,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ..
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/Meta_Predictor_Glue.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/Meta_Predictor_Glue.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/Meta_Predictor_Glue.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Meta\_Predictor\_Glue}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/Makefile	(revision 30)
@@ -24,5 +24,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/mkf.info
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/mkf.info	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/mkf.info	(revision 30)
@@ -0,0 +1,6 @@
+
+# Meta_Predictor_0
+target_dep	all	Meta_Predictor_0.ngc
+target_dep	Meta_Predictor_0.ngc	Meta_Predictor_0.prj
+target_dep	Meta_Predictor_0.prj	Meta_Predictor_0_Meta_Predictor_Glue_Pack.vhdl Meta_Predictor_0_Meta_Predictor_Glue.vhdl Meta_Predictor_0_Pack.vhdl Meta_Predictor_0_Two_Level_Branch_Predictor_2_Pack.vhdl Meta_Predictor_0_Two_Level_Branch_Predictor_2_Pattern_History_Table_Counter_Pack.vhdl Meta_Predictor_0_Two_Level_Branch_Predictor_2_Pattern_History_Table_Counter.vhdl Meta_Predictor_0_Two_Level_Branch_Predictor_2_Pattern_History_Table_Pack.vhdl Meta_Predictor_0_Two_Level_Branch_Predictor_2_Pattern_History_Table_RegisterFile_Pack.vhdl Meta_Predictor_0_Two_Level_Branch_Predictor_2_Pattern_History_Table_RegisterFile.vhdl Meta_Predictor_0_Two_Level_Branch_Predictor_2_Pattern_History_Table.vhdl Meta_Predictor_0_Two_Level_Branch_Predictor_2_Two_Level_Branch_Predictor_Glue_Pack.vhdl Meta_Predictor_0_Two_Level_Branch_Predictor_2_Two_Level_Branch_Predictor_Glue.vhdl Meta_Predictor_0_Two_Level_Branch_Predictor_2.vhdl Meta_Predictor_0.vhdl
+
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/Makefile	(revision 30)
@@ -24,5 +24,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/Branch_History_Table.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/Branch_History_Table.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/Branch_History_Table.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ..
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Branch\_History\_Table}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/Makefile	(revision 30)
@@ -24,5 +24,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ..
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/Pattern_History_Table.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/Pattern_History_Table.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/Pattern_History_Table.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Pattern\_History\_Table}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/Makefile	(revision 30)
@@ -24,5 +24,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile	(revision 30)
@@ -8,5 +8,6 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_MORPHEO			= ../../../../../..
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
 
 #-----[ Library ]------------------------------------------
@@ -19,5 +20,5 @@
 				@$(MAKE) all_component
 
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile.defs	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile.defs	(revision 30)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/Makefile	(revision 30)
@@ -24,5 +24,5 @@
 
 include                         ../Makefile.deps
-include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
 include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ..
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/Two_Level_Branch_Predictor_Glue.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/Two_Level_Branch_Predictor_Glue.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/Two_Level_Branch_Predictor_Glue.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Two\_Level\_Branch\_Predictor\_Glue}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ..
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/Two_Level_Branch_Predictor.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/Two_Level_Branch_Predictor.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/Two_Level_Branch_Predictor.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Two\_Level\_Branch\_Predictor}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ..
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/Meta_Predictor.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/Meta_Predictor.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/Meta_Predictor.tex	(revision 30)
@@ -0,0 +1,37 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Meta\_Predictor}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/Behavioural.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/Behavioural.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/Behavioural.tex	(revision 30)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/Makefile	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/Makefile	(revision 30)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/sty/doc-style.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/sty/doc-style.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/sty/doc-style.sty	(revision 30)
@@ -0,0 +1,189 @@
+\typeout{Fichier de style `doc-style.sty'.}
+
+\usepackage{makeidx}
+\usepackage{palatino}
+\usepackage{fancyheadings}
+\usepackage{float}
+\usepackage{verbatim}
+\usepackage{subfigure}
+\usepackage{wrapfig}
+\usepackage[dvips]{graphics}     
+\usepackage{graphicx}
+\usepackage[french]{babel}
+\usepackage[french]{minitoc}
+\usepackage[latin1]{inputenc}  % Pour utiliser les caractères accentués dans votre texte 
+\usepackage{openbib}
+
+\bibliographystyle{plain}
+
+
+
+% Titres de figures en 9 points helvetica gras
+% choisissez selon votre installation LaTeX
+\font\tenhv  = phvb at 8pt
+\font\tenhv  = phvb7t at 8pt
+
+% Fontes en 11 points gras pour les titres de deuxième niveau
+% \font\elvbf  = cmbx10 scaled 1100
+\font\elvbf  = ptmb scaled 1100
+
+% Dimensions des colonnes, espace entre colonnes, et indentation des
+% paragraphes 
+
+\setlength{\hoffset}{-18pt}  	
+\setlength{\oddsidemargin}{0pt} 	% Marge gauche sur pages impaires
+\setlength{\evensidemargin}{9pt} 	% Marge gauche sur pages paires
+\setlength{\topmargin}{0pt} 	% Pas de marge en haut
+\setlength{\marginparwidth}{54pt} 	% Largeur de note dans la marge
+\setlength{\textwidth}{481pt} 	% Largeur de la zone de texte (17cm)
+\setlength{\voffset}{-18pt} 	% Bon pour DOS
+\setlength{\marginparsep}{7pt} 	% Séparation de la marge
+\setlength{\headheight}{13pt} 	% Haut de page
+\setlength{\headsep}{10pt} 	% Entre le haut de page et le texte
+\setlength{\footskip}{27pt} 	% Bas de page + séparation
+\setlength{\textheight}{708pt} 	% Hauteur de la zone de texte (25cm)
+
+%%\setlength{\topsep}{0pt}%
+%%\setlength{\parsep}{0pt plus 1pt}%
+%\setlength{\columnsep}{10mm}
+%
+%\setlength{\parindent}{1pc}
+%\setlength{\listparindent}{\parindent}%
+%\setlength{\itemindent}{\parindent}%
+
+% Rappel: size10.clo
+
+% \normalsize{\@setfontsize\normalsize\@xpt\@xiipt} 
+% \small{\@setfontsize\small\@ixpt{11}}
+% \footnotesize{\@setfontsize\footnotesize\@viiipt{9.5}} 
+% \scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+% \tiny{\@setfontsize\tiny\@vpt\@vipt}
+% \large{\@setfontsize\large\@xiipt{14}} 
+% \Large{\@setfontsize\Large\@xivpt{18}} 
+% \LARGE{\@setfontsize\LARGE\@xviipt{22}} 
+% \huge{\@setfontsize\huge\@xxpt{25}}
+% \Huge{\@setfontsize\Huge\@xxvpt{30}}
+
+
+%% % file, Dimension, légende
+\newcommand{\printgraph}[3]
+ 	   {\begin{figure}[htbp]
+ 	       \centering
+ 	       \includegraphics[scale=#2]{\dirschema/#1.eps}
+ 	       \caption{#3}
+	       \label{#1}
+ 	     \end{figure}
+ 	   }
+
+\newcommand{\printgraphonly}[2]
+ 	   {\begin{figure}[htbp]
+ 	       \centering
+ 	       \includegraphics[scale=#2]{\dirschema/#1.eps}
+	       \label{#1}
+ 	     \end{figure}
+ 	   }
+	   
+\def\@maketitle
+   {
+   \newpage
+%   \null
+   \vskip 1cm
+   \begin{center}
+      {\Large \bf \@title \par} 
+      % Deux lignes vides après le titre
+      \vspace*{24pt} 
+      {
+      \large 
+      \lineskip .5em
+      \begin{tabular}[t]{c}
+         \@author 
+      \end{tabular}
+      \par
+      } 
+      % Un peu d'espace après le nom des auteurs
+      \vskip .5em 
+      {
+       \large 
+      \begin{tabular}[t]{c}
+         \@affiliation 
+      \end{tabular}
+      \par 
+      \ifx \@empty \@email
+      \else
+         \begin{tabular}{r@{~}l}
+            E-mail: & {\tt \@email}
+         \end{tabular}
+         \par
+      \fi
+      \begin{tabular}{r@{~}l}
+        {\tt \@date}
+      \end{tabular}
+      \par
+      }
+      % Une ligne vide après le bloc de titre
+      \vspace*{12pt} 
+   \end{center}
+   } 
+
+\def\abstract
+   {%
+   \centerline{\large\bf R\'esum\'e}%
+   \vspace*{12pt}%
+   \it%
+   }
+
+\def\endabstract
+   {
+   % Une ligne vide après le résumé
+   \vspace*{12pt} 
+   }
+
+% On traduit 'Référence'
+\renewcommand\refname{R\'ef\'erences}
+
+\def\affiliation#1{\gdef\@affiliation{#1}}
+\gdef\@affiliation{}
+
+\def\email#1{\gdef\@email{#1}}
+\gdef\@email{}
+
+\newlength{\@ctmp}
+\newlength{\@figindent}
+\setlength{\@figindent}{1pc}
+
+\long\def\@makecaption#1#2{
+   \vskip 10pt
+
+   \setbox\@tempboxa\hbox{\tenhv\noindent #1.~#2} 
+   \setlength{\@ctmp}{\hsize}
+   \addtolength{\@ctmp}{-\@figindent}\addtolength{\@ctmp}{-\@figindent} 
+   % SI c'est plus long qu'une ligne indentée
+   \ifdim \wd\@tempboxa >\@ctmp
+      % ALORS on définit un paragraphe indenté
+      \begin{list}{}{\leftmargin\@figindent \rightmargin\leftmargin} 
+         \item[]\tenhv #1.~#2\par
+      \end{list}
+   \else
+      % SINON centrer
+      \hbox to\hsize{\hfil\box\@tempboxa\hfil} 
+   \fi}
+
+% Type et espacement des en-têtes
+
+\def\section{\@startsection {section}{1}{\z@}
+   {14pt plus 2pt minus 2pt}{14pt plus 2pt minus 2pt} {\large\bf}} 
+\def\subsection{\@startsection {subsection}{2}{\z@}
+   {13pt plus 2pt minus 2pt}{13pt plus 2pt minus 2pt} {\elvbf}}
+
+\renewcommand\subsubsection{\@startsection {subsubsection}{1}{\z@}%
+        {12pt \@plus -1ex \@minus -.2ex}{-2mm}
+        {\reset@font\normalsize\bfseries}}
+% On ajoute un point après le numéro de section
+
+\newcommand{\Section}[1]{\section{\hskip -1em.~#1}} 
+\newcommand{\subSection}[1]{\subsection{\hskip -1em.~#1}}
+\newcommand{\subsubSection}[1]{\subsubsection{\hskip -1em.~#1}
+  \hskip -2mm.\hskip 2mm} 
+
+\def\registered{{\ooalign {\hfil\raise .05ex\hbox{\scriptsize
+R}\hfil\crcr\mathhexbox20D}}}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/sty/header.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/sty/header.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Behavioural}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/01_introduction.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/01_introduction.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/02_features.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/02_features.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/03_description.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/03_description.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/04_pinout.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/04_pinout.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/05_parameters.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/05_parameters.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/06_performance.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/06_performance.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/07_details.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/07_details.tex	(revision 30)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/08_history.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/08_history.tex	(revision 30)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/doc/tex/root.tex	(revision 30)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h	(revision 30)
@@ -0,0 +1,29 @@
+#ifdef VHDL
+
+#ifndef morpheo_behavioural_Direction_h
+#define morpheo_behavioural_Direction_h
+
+#include "Include/ToString.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+typedef enum { IN, OUT, INOUT } direction_t;
+
+}; // end namespace behavioural          
+  
+template<>           inline std::string toString<morpheo::behavioural::direction_t>(const morpheo::behavioural::direction_t& x)
+{
+  switch (x)
+    {
+    case morpheo::behavioural::IN    : return "in"    ; break;
+    case morpheo::behavioural::OUT   : return "out"   ; break;
+    case morpheo::behavioural::INOUT : return "inout" ; break;
+    default    : return ""      ; break;
+    }
+}
+
+}; // end namespace morpheo              
+
+#endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 30)
@@ -0,0 +1,110 @@
+#ifndef morpheo_behavioural_Interface_h
+#define morpheo_behavioural_Interface_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <stdint.h>
+#include <iostream>
+#include <list>
+#include "Behavioural/include/Signal.h"
+#include "Behavioural/include/Direction.h"
+#include "Behavioural/include/Localisation.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#ifdef VHDL_TESTBENCH
+#include "Behavioural/include/Vhdl_Testbench.h"
+#endif
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+
+using namespace std;
+
+namespace morpheo              {
+namespace behavioural          {
+
+  class Interface
+  {
+    // -----[ fields ]----------------------------------------------------
+  private   : const string          _name         ;
+  private   : const direction_t     _direction    ;
+  private   : const localisation_t  _localisation ;
+  private   :       string          _comment      ;
+  private   : list<Signal>          _list_signal  ;
+
+    // -----[ methods ]---------------------------------------------------
+  public    :                       Interface            (string         name        ,
+							  direction_t    direction   ,
+							  localisation_t localisation);
+
+  public    :                       ~Interface           ();
+
+  public    : void                  set_comment          (string comment);
+  public    : string                get_comment          (void          );
+
+  public    : string                set_signal           (Signal          signal   );
+  public    : string                set_signal           (string          name     ,
+							  direction_t     direction,
+							  uint32_t        size     ,
+							  presence_port_t presence_port = PORT_VHDL_YES_TESTBENCH_YES);
+
+#ifdef SYSTEMC
+  public    : sc_in_clk *           set_signal_clk       (string          name     ,
+							  uint32_t        size     ,
+							  presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
+    {
+      string str = set_signal (name, IN , size, presence_port);
+      sc_in_clk * signal = new sc_in_clk (str.c_str());
+      return signal;
+    };
+
+  public    : template <typename T>
+              sc_in <T> *           set_signal_in       (string          name     ,
+							 uint32_t        size     ,
+							 presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
+    {
+      string str = set_signal (name, IN , size, presence_port);
+      sc_in <T> * signal = new sc_in <T> (str.c_str());
+      return signal;
+    };
+
+  public    : template <typename T>
+              sc_out <T> *          set_signal_out      (string          name     ,
+							 uint32_t        size     ,
+							 presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
+    {
+      string str = set_signal (name, OUT , size, presence_port);
+      sc_out <T> * signal = new sc_out <T> (str.c_str());
+      return signal;
+    };
+#endif
+
+  public    : string                get_signal           (void);
+
+#ifdef VHDL
+  public    : void                  set_port             (Vhdl * & vhdl);
+#endif
+#ifdef VHDL_TESTBENCH
+  public    : void                  set_port             (Vhdl_Testbench * & vhdl_testbench);
+#endif
+
+  public    : XML                   toXML                (void);
+
+  public    : friend ostream&       operator<<           (ostream& output_stream,
+  					  		  morpheo::behavioural::Interface & x);
+
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h	(revision 30)
@@ -0,0 +1,59 @@
+#ifndef morpheo_behavioural_Interfaces_h
+#define morpheo_behavioural_Interfaces_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <stdint.h>
+#include <iostream>
+#include <list>
+#include "Behavioural/include/Interface.h"
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#ifdef VHDL_TESTBENCH
+#include "Behavioural/include/Vhdl_Testbench.h"
+#endif
+
+using namespace std;
+
+namespace morpheo              {
+namespace behavioural          {
+
+  class Interfaces
+  {
+    // -----[ fields ]----------------------------------------------------
+  private   : list<Interface>       _list_interface;
+
+    // -----[ methods ]---------------------------------------------------
+  public    :                       Interfaces            (void);
+
+  public    :                       ~Interfaces           ();
+
+  public    : void                  set_interface         (Interface interface);
+  public    : string                get_interface         (void);
+
+#ifdef VHDL
+  public    : void                  set_port              (Vhdl           * & vhdl          );
+#endif
+#ifdef VHDL_TESTBENCH
+  public    : void                  set_port              (Vhdl_Testbench * & vhdl_testbench);
+#endif
+
+  public    : XML                   toXML                 (void);
+
+  public    : friend ostream&       operator<<            (ostream& output_stream,
+  					  		   morpheo::behavioural::Interfaces & x);
+
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Localisation.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Localisation.h	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Localisation.h	(revision 30)
@@ -0,0 +1,30 @@
+#ifdef VHDL
+
+#ifndef morpheo_behavioural_Localisation_h
+#define morpheo_behavioural_Localisation_h
+
+#include "Include/ToString.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  typedef enum {NORTH, SOUTH, EAST, WEST} localisation_t;
+  
+}; // end namespace behavioural          
+  
+  template<>           inline std::string toString<morpheo::behavioural::localisation_t>(const morpheo::behavioural::localisation_t& x)
+  {
+    switch (x)
+      {
+      case morpheo::behavioural::NORTH   : return "north" ; break;
+      case morpheo::behavioural::SOUTH   : return "south" ; break;
+      case morpheo::behavioural::EAST    : return "east"  ; break;
+      case morpheo::behavioural::WEST    : return "west"  ; break;
+      default                            : return ""      ; break;
+      }
+  }
+  
+}; // end namespace morpheo              
+
+#endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 30)
@@ -0,0 +1,65 @@
+#ifndef morpheo_behavioural_Signal_h
+#define morpheo_behavioural_Signal_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <stdint.h>
+#include <iostream>
+#include "Behavioural/include/Direction.h"
+#include "Behavioural/include/XML.h"
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+
+using namespace std;
+
+namespace morpheo              {
+namespace behavioural          {
+
+  typedef enum {PORT_VHDL_YES_TESTBENCH_YES,
+		PORT_VHDL_YES_TESTBENCH_NO ,
+		PORT_VHDL_NO_TESTBENCH_YES ,
+		PORT_VHDL_NO_TESTBENCH_NO  } presence_port_t;
+
+  class Signal
+  {
+    // -----[ fields ]----------------------------------------------------
+  public    : const string          _name         ;
+  public    : const direction_t     _direction    ;
+  public    : const uint32_t        _size         ;
+  public    : const presence_port_t _presence_port;
+
+    // -----[ methods ]---------------------------------------------------
+  public    :                   Signal          (string          name          ,
+						 direction_t     direction     ,
+						 uint32_t        size          ,
+						 presence_port_t presence_port = PORT_VHDL_YES_TESTBENCH_YES);
+  public    :                   ~Signal         ();
+
+  public    : XML               toXML           (void);
+
+  public    : friend ostream&   operator<<      (ostream& output_stream,
+						 morpheo::behavioural::Signal & x);
+
+  };
+}; // end namespace behavioural          
+
+  template<>           inline std::string toString<morpheo::behavioural::presence_port_t>(const morpheo::behavioural::presence_port_t& x)
+  {
+    switch (x)
+      {
+      case morpheo::behavioural::PORT_VHDL_YES_TESTBENCH_YES : return "Port is in VHDL's model and TestBench's model" ; break;
+      case morpheo::behavioural::PORT_VHDL_YES_TESTBENCH_NO  : return "Port is in VHDL's model                      " ; break;
+      case morpheo::behavioural::PORT_VHDL_NO_TESTBENCH_YES  : return "Port is in                  TestBench's model" ; break;
+      case morpheo::behavioural::PORT_VHDL_NO_TESTBENCH_NO   : return "Port is in none model                        " ; break;
+      default                                                : return "";                                               break;
+      }
+  }
+
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 30)
@@ -14,4 +14,5 @@
 #include <iostream>
 #include <list>
+#include "Behavioural/include/Direction.h"
 #include "Include/ToString.h"
 #include "Include/Debug.h"
@@ -21,6 +22,4 @@
 namespace morpheo              {
 namespace behavioural          {
-
-  typedef enum { IN, OUT, INOUT } direction_t;
 
   string std_logic        (uint32_t size);
@@ -45,5 +44,5 @@
     // -----[ methods ]---------------------------------------------------
   public    :                  Vhdl                        (string name);
-  public    : virtual          ~Vhdl                       ();
+  public    :                  ~Vhdl                       ();
 						           
   public    : void             generate_file               (void);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h	(revision 30)
@@ -40,4 +40,5 @@
   public   : bool             singleton_end       (void);
   public   : bool             attribut            (string name, string value);
+  public   : bool             insert_XML          (XML    xml );
 
   public   : void             generate_file       (void);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info	(revision 30)
@@ -16,5 +16,5 @@
 # build src directory content
 #target_dep		all		Generic/Counter/SelfTest
-target_dep		all		Generic/RegisterFile/SelfTest
+target_dep		all		Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
 #target_dep		all		Generic/Shifter/SelfTest
 target_dep		all		Generic/Select/Priority_Fixed/SelfTest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp	(revision 30)
@@ -0,0 +1,28 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  Interface::Interface  (string                name         ,
+			 direction_t           direction    ,
+			 localisation_t        localisation ):
+    _name         (name        ),
+    _direction    (direction   ),
+    _localisation (localisation)
+  {
+  };
+  
+  Interface::~Interface ()
+  {
+  };
+  
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_comment.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_comment.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_comment.cpp	(revision 30)
@@ -0,0 +1,20 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interface::get_comment (void)
+  {
+    return _comment;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp	(revision 30)
@@ -0,0 +1,51 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interface::get_signal (void)
+  {
+    uint32_t               depth          = 0;
+    string                 separator      = ",\n";
+    bool                   last_separator = false;
+
+
+    list<Signal>::iterator i     = _list_signal.begin();
+    bool                   empty = _list_signal.empty();
+
+    string                 tab   = string(depth,'\t');
+    ostringstream          text;
+
+    if (not empty)
+      {
+	// First
+	if (i != _list_signal.end())
+	  {
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	while (i != _list_signal.end())
+	  {
+	    text << separator;
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	if (last_separator)
+	  text << separator;
+      }
+
+    return text.str();
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp	(revision 30)
@@ -0,0 +1,24 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  ostream& operator<< (ostream& output_stream,
+		       morpheo::behavioural::Interface & x)
+  {
+    output_stream << x._name + "\t"+toString(x._localisation)+"\t"+toString(x._direction) << endl;
+    output_stream << x.get_comment() << endl;
+    output_stream << x.get_signal () << endl;
+    return output_stream;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_comment.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_comment.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_comment.cpp	(revision 30)
@@ -0,0 +1,20 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interface::set_comment (string comment)
+  {
+    _comment = _comment + comment;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp	(revision 30)
@@ -0,0 +1,51 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interface::set_port (Vhdl * & vhdl)
+  {
+    if (not _list_signal.empty())
+      {
+	list<Signal>::iterator i     = _list_signal.begin();
+	
+	while (i != _list_signal.end())
+	  {
+	    presence_port_t p = (*i)._presence_port;
+	    if ((p == PORT_VHDL_YES_TESTBENCH_YES) or
+		(p == PORT_VHDL_YES_TESTBENCH_NO ) )
+	      vhdl->set_port ((*i)._name,(*i)._direction,(*i)._size);
+	    ++i;
+	  }
+      }
+  };
+
+  void Interface::set_port (Vhdl_Testbench * & vhdl_testbench)
+  {
+    if (not _list_signal.empty())
+      {
+	list<Signal>::iterator i     = _list_signal.begin();
+	
+	while (i != _list_signal.end())
+	  {
+	    presence_port_t p = (*i)._presence_port;
+	    if ((p == PORT_VHDL_YES_TESTBENCH_YES) or
+		(p == PORT_VHDL_NO_TESTBENCH_YES ) )
+	      vhdl_testbench->set_port ((*i)._name,(*i)._direction,(*i)._size);
+	    ++i;
+	  }
+      }
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp	(revision 30)
@@ -0,0 +1,50 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Include/ChangeCase.h"
+#include "Behavioural/include/Interface.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interface::set_signal (Signal signal)
+  {
+    return set_signal(signal._name     ,
+		      signal._direction,
+		      signal._size     );
+    
+  };
+
+  string Interface::set_signal (string          name     ,
+				direction_t     direction,
+				uint32_t        size     ,
+				presence_port_t presence_port)
+  {
+    string str_direction =  toString(direction);
+    string str_interface = _name;
+    string str_signal    =  name;
+
+    LowerCase(str_direction);    
+    UpperCase(str_interface);
+    UpperCase(str_signal   );
+    
+    string signame = str_direction;
+    if (_name != "")
+      signame += "_"+str_interface;
+    if (name  != "")
+      signame += "_"+str_signal;
+    
+    _list_signal.push_back (Signal (signame      ,
+				    direction    ,
+				    size         ,
+				    presence_port));
+
+    return signame;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_toXML.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_toXML.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_toXML.cpp	(revision 30)
@@ -0,0 +1,41 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  XML Interface::toXML (void)
+  {
+    XML xml ("interface");
+    
+    xml.balise_open_begin ("interface");
+    xml.  attribut        ("name"         ,_name                 );
+    xml.  attribut        ("direction"   ,toString(_direction   ));
+    xml.  attribut        ("localisation",toString(_localisation));
+    xml.balise_open_end   ();
+    xml.  text            (get_comment());
+
+    if (_list_signal.empty()== false)
+      {
+	list<Signal>::iterator i     = _list_signal.begin();
+
+	while (i != _list_signal.end())
+	  {
+	    xml.  insert_XML ((*i).toXML());
+	    ++i;
+	  }
+      }
+
+    xml.balise_close      ();
+     
+    return xml;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp	(revision 30)
@@ -0,0 +1,22 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  Interfaces::Interfaces  (void)
+  {
+  };
+  
+  Interfaces::~Interfaces ()
+  {
+  };
+  
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp	(revision 30)
@@ -0,0 +1,51 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interfaces::get_interface (void)
+  {
+    uint32_t               depth          = 0;
+    string                 separator      = ",\n";
+    bool                   last_separator = false;
+
+
+    list<Interface>::iterator i  = _list_interface.begin();
+    bool                   empty = _list_interface.empty();
+
+    string                 tab   = string(depth,'\t');
+    ostringstream          text;
+
+    if (not empty)
+      {
+	// First
+	if (i != _list_interface.end())
+	  {
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	while (i != _list_interface.end())
+	  {
+	    text << separator;
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	if (last_separator)
+	  text << separator;
+      }
+
+    return text.str();
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp	(revision 30)
@@ -0,0 +1,22 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  ostream& operator<< (ostream& output_stream,
+		       morpheo::behavioural::Interfaces & x)
+  {
+    output_stream << x.get_interface () << endl;
+    return output_stream;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp	(revision 30)
@@ -0,0 +1,20 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interfaces::set_interface (Interface interface)
+  {
+    _list_interface.push_back (interface);
+  };
+
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp	(revision 30)
@@ -0,0 +1,45 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interfaces::set_port (Vhdl * & vhdl)
+  {
+    if (not _list_interface.empty())
+      {
+	list<Interface>::iterator i     = _list_interface.begin();
+	
+	while (i != _list_interface.end())
+	  {
+	    (*i).set_port (vhdl);
+	    ++i;
+	  }
+      }
+  };
+
+  void Interfaces::set_port (Vhdl_Testbench * & vhdl_testbench)
+  {
+    if (not _list_interface.empty())
+      {
+	list<Interface>::iterator i     = _list_interface.begin();
+	
+	while (i != _list_interface.end())
+	  {
+	    (*i).set_port (vhdl_testbench);
+	    ++i;
+	  }
+      }
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp	(revision 30)
@@ -0,0 +1,36 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  XML Interfaces::toXML (void)
+  {
+    XML xml ("interfaces");
+    
+//     xml.balise_open ("interfaces");
+
+    if (_list_interface.empty()== false)
+      {
+	list<Interface>::iterator i     = _list_interface.begin();
+
+	while (i != _list_interface.end())
+	  {
+	    xml.  insert_XML ((*i).toXML());
+	    ++i;
+	  }
+      }
+
+//     xml.balise_close      ();
+     
+    return xml;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 30)
@@ -0,0 +1,30 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  Signal::Signal  (string          name         ,
+		   direction_t     direction    ,
+		   uint32_t        size         ,
+		   presence_port_t presence_port):
+    _name          (name         ),
+    _direction     (direction    ),
+    _size          (size         ),
+    _presence_port (presence_port)
+  {
+  };
+  
+  Signal::~Signal ()
+  {
+  };
+  
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp	(revision 30)
@@ -0,0 +1,25 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+namespace morpheo              {
+
+  
+
+namespace behavioural          {
+
+  ostream& operator<< (ostream& output_stream,
+		       morpheo::behavioural::Signal & x)
+  {
+    output_stream << x._name + "\t{"+toString(x._size)+"}\t"+toString(x._direction) +"\t"+toString(x._presence_port);
+
+    return output_stream;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_toXML.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_toXML.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_toXML.cpp	(revision 30)
@@ -0,0 +1,27 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  XML Signal::toXML (void)
+  {
+    XML xml ("signal");
+    
+    xml.singleton_begin ("signal");
+    xml.attribut        ("name"     ,_name               );
+    xml.attribut        ("direction",toString(_direction));
+    xml.attribut        ("size"     ,toString(_size     ));
+    xml.singleton_end   ();
+     
+    return xml;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: unk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_direction_toString.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_direction_toString.cpp	(revision 20)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#ifdef VHDL
-
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/include/Vhdl.h"
-
-#include <sstream>
-using namespace std;
-
-namespace morpheo              {
-namespace behavioural          {
-  
-  string Vhdl::direction_toString (direction_t direction)
-  {
-    switch (direction)
-      {
-      case IN    : return "in    "; break;
-      case OUT   : return "out   "; break;
-      case INOUT : return "inout "; break;
-      }
-    return "";
-  };
-  
-}; // end namespace behavioural          
-}; // end namespace morpheo              
-
-#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp	(revision 30)
@@ -0,0 +1,22 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/XML.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  bool XML::insert_XML (XML xml)
+  {
+    //return text (xml.get_body());
+    _body += xml.get_body(depth());
+
+    return true;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA/common/bibliographie.bib
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA/common/bibliographie.bib	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA/common/bibliographie.bib	(revision 30)
@@ -0,0 +1,1979 @@
+@book{1983_Lee,
+  title={{Analysis of Branch Prediction Strategies and Branch Target Buffer Design}},
+  author={Lee, J.K.F. and Smith, A.J.},
+  year={1983},
+  publisher={Computer Science Division (EECS), University of California}
+}
+@article{1991_kaeli,
+  title={{Branch history table prediction of moving target branches due to subroutine returns}},
+  author={Kaeli, D.R. and Emma, P.G.},
+  journal={Proceedings of the 18th annual international symposium on Computer architecture},
+  pages={34--42},
+  year={1991},
+  publisher={ACM Press New York, NY, USA}
+}
+@article{scherson1991ogc,
+  title={{Orthogonal graphs for the construction of a class ofinterconnection networks}},
+  author={Scherson, ID},
+  journal={Parallel and Distributed Systems, IEEE Transactions on},
+  volume={2},
+  number={1},
+  pages={3--19},
+  year={1991}
+}
+@article{1991_wall,
+  title={{Wall, Limits of instruction-level parallelism}},
+  author={David, W.},
+  journal={Proceedings of the fourth international conference on Architectural support for programming languages and operating systems},
+  pages={176--188},
+  year={1991}
+}
+
+01/12/2004
+
+Etude sur le niveau de parallélisme d'un programme => l'ILP ne dépasse pas 5-7 instructions
+Ceci déterminera la viabilité d'ajout de mécanismes pour traiter en parralléle un maximum d'instructions (superscalaire, renommage de registre etc..)
+               #instruction
+Parrallelism = -------------
+               #cycle requit
+
+Le parallélisme est en moyenne de 3-4 inst. Peut être plus haut (ex. Programme numérique). Le profit d'une crête de parrallélisme est bas si la moyenne est basse.
+
+Augmenter l'ILP : 2 variétés de techniques :
+ a) Parrallélisme dans un bloc de base
+ b) Parrallélisme entre plusieurs blocs de base
+
+a) limité par les dépendances entre paire d'instructions
+    -> Renommage de registres (Hardware ou Software). Les compilos préfére utilisé le moins de registres possibles.
+    -> Pur les dépendances d'adresse mémoire => analyse d'alias
+b) Nombre d'instructions entre 2 branchements est en moyenne moins de 6 instructions
+    -> Prédiction de branchement pour exécuter de manière spéculatives les blocs de bases
+    -> Déroullement de boucles => augmentation de la taille des blocs de base
+    -> Pipeline logiciel => augmente le parallélisme au sein d'un bloc
+    -> Ordonnanceur de trace => trace : séquence de blocs souvent éxecuté
+
+CADRE DE TRAVAIL:
+
+* Execution du programme pour produire une trace d'execution
+* Algorithme va "paquetiser" ses instructions en groupe d'instruction non suspendu => on tente d'avoir 64 inst en //
+* Pas de limites d'unité fonctionnelle ni de limite d'accès au banc de registres. Chaque instruction à une latence d'un cycle, de même pour les opérations mémoires
+* L'execution se faire par groupe de paquet, si la suspension à également lieu dans le modèle, alors le paquet suivant sera exécuter le cycle suivant. Sinon, nous pouvons l'exécuter le même cycle.
+
+Le parrallélisme sera donc le nombre d'instruction par le nombre de cycles
+
+Paramètres :
+Register renamings : Parfait(nombre infinie de registres)
+                     finit (allocation dynamique => LRU, 256 registres entier, 256 flottant)
+                     aucun
+Prédiction de branchement : Prédiction parfaite (tjs correctement prédit)
+                            finit (dynamique) (prédiction d'un schéma à 2 bits , avec une table à 2048 entrées)
+                            finit (statique)  (tjs la même prédiction (dépendant de la prédiction parfaite))      
+                            aucun -> prédiciton tjs faux
+Idem pour le jump prediction
+analyse d'alias : Parfait (Il y a un conflit d'adresse que si l'adresse d'une écriture est la même qu'une autre écriture ou lecture)
+                  Aucune analyse (Une écritures sont en conflits avec chaque autre écriture et lecture)
+                  inspection d'instruction => pas de conflits si même registre de base mais dpt différent
+                                                              si registre de base différent (Mais explecitement différent ex utilisation de sp et gp qui sont deux pointeurs différents)
+                  analyse par le compilateur => analyse parfaite de la pile et des références globales
+Taille de la fenêtre : Nombre maximum d'instructions pouvant apparaître dans un cycle de traitement
+                     => Gestion de la fenêtre de manière discrète (Chercher une fênetre entière)
+                                                         continue (Chercher autant d'instruction qui viennent de ce terminer)
+
+Définitions de 5 modèles :
+
+          +----------------+--------------+--------------+----------------+
+          | branch Perfect | Jump predict | Reg renaming | Alias analysis |
++---------+----------------+--------------+--------------+----------------+
+| Stupid  | none           | none         | none         | none           |
+| Fair    | infinite       | infinite     | 256          | inspection     |
+| Good    | infinite       | infinite     | 256          | perfect        |
+| Great   | infinite       | infinite     | perfect      | perfect        |
+| Perfect | perfect        | perfect      | perfect      | perfect        |
++---------+----------------+--------------+--------------+----------------+
+
+Pour une taille de fenêtre de 2048 instructions ( continue)
+
+Sur les jeux de tests, on notera que le parrallélisme du modèle :
+ - stupide ne dépasse pas 2 
+ - pauvre  ne dépasse pas 4
+ - Great   ne dépasse pas 8 sauf pour quelque modèle numérique qui exploite l'analyse des alias 
+ - Parfait 
+
+Le déroullage de boucles à un effet significatif pour les modèles ambitieux. Sinon, ceci est limite par les load de début de boucle et les stores de fin de boucles (càd réduite par les technique d'alias analysis)
+
+Taille de la fenêtre
+
+La modification de la taille de la fenêtre n'influe que sur les modèles ambitieux grâce à leur technique de prediction améliorer. La plupart des benchmarks ont besoin que d'une fenêtre de 32 inst
+Avec une gestion de fenêtre demanière discrete, cela exploite moins de parrallélisme (- d'inst prete)
+
+Effet des predictions de branchements :
+
+Réduire le niveau de la prédiction de branchment à un impact significatif sur le parrallélisme (Beaucoup moins d'instructions prête à être executer). Mais réduire le niveau de la prédiction de saut n'a d'effet que si la prédiction de branchement est parfaite.
+De plus sur le modèle parfait, l'augmentation de la latence d'un miss à un effet significatif sur le parrallélisme (Car les instructions feteched ne sont plus executé en parralléle car les instructions précédentes sont déjà terminées)
+
+Effet du rennommage de registres et de l'analyse des alias
+
+L'analyse d'alias par inspection n'est pas très performantes (augmente l'ILP de 0.5). L'analyse par compilation n'est performante que pour des programmes utilisant la pile .
+Le nombre de registre pour le renomage de registres n'influe que très peu sur le parallélisme dans un modèle où les prédictions ne sont pas parfaite (à l'exception faite des programmes ayant beaucoup de dépendance)
+
+CONCLUSION
+
+Une bonne prédiction (hard ou soft) est un facteur déterminant pour l'augmentation de l'ILP. Le renommage de registres est important si le compilateur l'exploite.
+Le parrallelism moyen tourne autour de 5 d'après cette étude. (Dans un contexte très favorable => latence des inst = 1, etc...)
+@article{1992_pan,
+  title={{Improving the accuracy of dynamic branch prediction using branch correlation}},
+  author={Pan, S.T. and So, K. and Rahmeh, J.T.},
+  journal={Proceedings of the fifth international conference on Architectural support for programming languages and operating systems},
+  pages={76--84},
+  year={1992},
+  publisher={ACM Press New York, NY, USA}
+}
+@article{1992_yeh,
+  title={{Alternative Implementations of Two-Level Adaptive Branch Prediction}},
+  author={Yeh, T.Y. and Patt, YN},
+  journal={Computer Architecture, 1992. Proceedings., The 19th Annual International Symposium on},
+  pages={124--134},
+  year={1992}
+}
+@techreport{1993_mcfarling,
+  title={{Combining Branch Predictors}},
+  author={McFarling, S.},
+  institution={Technical Report WRL Technical Note TN-36, Digital Equipment Corporation, June 1993}
+}
+@article{1993_Perleberg,
+  title={{Branch target buffer design and optimization}},
+  author={Perleberg, CH and Smith, AJ},
+  journal={Computers, IEEE Transactions on},
+  volume={42},
+  number={4},
+  pages={396--412},
+  year={1993}
+}
+@article{1993_yeh,
+  title={{A comparison of dynamic branch predictors that use two levels of branch history}},
+  author={Yeh, T.Y. and Patt, Y.N.},
+  journal={Proceedings of the 20th annual international symposium on Computer architecture},
+  pages={257--266},
+  year={1993},
+  publisher={ACM Press New York, NY, USA}
+}
+@InProceedings{1995_sohi,
+  author = 	 {Sohi, G.S.     and
+                  Breach, S.E.   and
+                  Vijaykumar, T.N. },
+  title = 	 {Multiscalar processors},
+  OPTcrossref =  {},
+  OPTkey = 	 {},
+  OPTbooktitle = {Computer Architecture, 1995. Proceedings. 22nd Annual International Symposium on},
+  OPTpages = 	 {414-425},
+  OPTyear = 	 {1995},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {Santa Margherita Ligure  ,   Italy},
+  OPTmonth = 	 {22-24 Jun},
+  OPTorganization = {},
+  OPTpublisher = {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+22/02/2005
+
+Paradigme de base : fetch-execute - pointé par un program counter
+                    -> sous entend que les instructions vont être executer dans le même ordre que le programme.
+
+processeur ILP et les compilos désordonne le programme en respectant toutefois les dépendances sur les données et les controles.
+Les dépendances de contrôles peuvent être représenté par un "control flow graph" -> bloc de bases sont représenté par des noeuds et les arcs représentent les flots de contrôles
+
+Overview
+--------
+Objectif : A partir du "control flow graph" (CFG), on peut établir une fenêtre dynamique d'instruction pouvant être extré et lancé.
+
+le CFG peut être vut : - instruction / instruction
+                       - bloc / bloc
+                       - tâche / tâche (thread)
+
+Assignation d'une tâche à une unité d'execution.
+Le multiscalar à une collection d'unité d'execution et un séquenceur s'occupant de distribuer les tâches au UE.
+
+=> Obligation de maintenir l'ordre séquentielle de consommation et de production de données (registre ou accès mémoire)
+ Synchronisation  des accès mémoires 
+ - approche conservatrice : Attendre que les accès mémoires des tâches moins spéculatives soit terminer
+ - approche aggréssive    : Réaliser des chargements spéculatifs (vérif dynamique si une tâche moins spéculatifs écrit dans un zone chargé spéculativement.)
+
+Le contrôle et les accès aux données peuvent être spéculative. -> Mécanisme de "Retour en arrière" et de commit
+Gestion circulaire des tâches : La tâche en tête n'est jamais spéculative. On retire les tâches de manière circulaire.
+
+Software
+~~~~~~~~
+ - Le séquenceur a besoin des informations sur le CFG.
+ - Il faut caractériser une tâche par les données consommés et les données produites.
+   |-> Analyse statique par la compilation et création d'un "create mask" indiquant quel registres sont produits par la tâche.
+   |-> Noté quel est la dernière instructions produisant le registre pour pouvoir ensuite le forwarder.
+
+Hardware
+~~~~~~~~
+Hardware -> lancement des tâches vers une unités d'execution
+         -> Maintient d'une execution séquentielle apparente
+
+Le séquenceur détermine l'ordre des tâches. (Charge le descripteur de tâche et à partir de la va charger la tâche, creer les différent masqie et déterminer (ou prédit) la prochaine tâche à executer)
+
+Les accès à la mémoire donnée sont réalisées par le Address résolution buffer (ARB) qui gére la spéculation, dépendance ...
+
+Distribution des cycles pour l'execution
+----------------------------------------
+Relacement d'un calcul si :
+ - utilisation d'une valeur incorrect
+ - prediction incorrect
+
+Pour cela :
+ a) Synchronisation des communications de données
+
+ b) Détermination de la prediction :
+  - Registre pas de problèmes
+  - Accès mémoires : synchronisé explicitement
+Pour les prédictions -> Valider la prédiction au plus tôt : 
+  * intruction explicite de validation de prediction
+  * changer la structure de la bcl afin de tester la condition au + tôt
+
+
+Cycle idle          : aucune unité de calculs n'a de tâches à executer
+Cycle de non calcul : les unités ont des tâches mais ne peux pas les executer
+ - Dépendances intra-tâche : dépendance entre instructions d'une même tâche (désordonnancement, cache non bloquant etc ...)
+ - Dépendances inter-tâche : dépendance entre tâches (calculs de la condition de la boucle à la fin du corps de bcl etc ...)
+
+Conclusion
+----------
+Exploite l'ILP. Pour cela utilisation d'une combinaison hardware/software afin d'extraire l'ILP
+ -> division le CFG en tâche 
+ -> traverser le CFG de manière spéculative
+ -> Les tâches sont distribués à une collection d'unité d'execution.
+ -> Chaque unité d'execution fetche et execute les instructions de la tâche associées
+ -> Processeurs utilise plusieurs PCs  afin de pouvoir séquencer plusieurs parties différente du CFG.
+@InBook{         1996_mudge,
+  ALTauthor = 	 {trevor mudge},
+  ALTeditor = 	 {},
+  title = 	 {ACM Computing Surveys (CSUR)},
+  chapter = 	 { Special ACM 50th-anniversary issue: strategic directions in computing research},
+  publisher = 	 {ACM Press   New York, NY, USA },
+  year = 	 {1996},
+  OPTkey = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTtype = 	 {},
+  OPTaddress = 	 {},
+  OPTedition = 	 {},
+  OPTmonth = 	 {december},
+  OPTpages = 	 {671 - 678},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+01/12/2004
+
+Architecture des ordinateurs est un degré significatif sur les activités de l'ingénieurs pour trouver une solution à un problem avec une contrainte de coûts.
+
+Tendance -> a) resulte d'un apport de la technologie (ex. techno micronique et submicronique)
+         -> b) resulte d'un contexte d'application (ex. Multi processings => ajout de mécanisme de tâches)
+a) Défi : Consommation (Au premier ordre conso est proportionnel à la fréquence, loi de moore : Double la fréquence tous les Deux ans donc double la conso)
+          Latence : La fréquence d'horloge croit plus vite que la technologie des Rams : f(CPU) +50\%/an , vitesse(DRAM) +10\%/an
+b) application guide les architectures : Les processeurs deviennent de + en + grand public  (jeux 3D, multimédia etc..). Avant ils étaient surtout utilisé par des militaires. 
+
+L'auteur voit 3 challenges pour la prochaine décade (càd jusqu'en 2006)
+-> Puissance et taille
+-> Performance
+-> Complexité
+
+Axes de recherches
+-> locality
+-> Paralélisme
+-> Prédictabilité
+
+Paralélisme au niveau instructions (ILP) -> Approche VLIW et superscalaire
+            au niveau application  -> Simultaneous multithreadings (SMT)
+
+l'idée de ce SMT viens du processeur HEP devellopper par denelcor vers la fin des années 70
+
+Hierarchie mémoire => nécessité de masquer la latence des accès mémoires (technique de prefetching => utilisation de la bande passante innoccupé en vue d'aller chercher des instructions potentiellement utiles)
+
+Evolution des benchmarks pour prendre en compte des évolutions de marché pour le processeurs (c'est à dire bench "multimédia")
+@InProceedings{,
+  author = 	 { Kunle Olukotun  and
+                   Basem A. Nayfeh and
+                   Lance Hammond   and
+                   Ken Wilson      and
+                   Kunyung Chang 	
+                 },
+  title = 	 {the case for a single-chip multiprocessor},
+  OPTcrossref =  {ISBN:0-89791-767-7},
+  OPTkey = 	 {},
+  OPTbooktitle = {Proceedings of the seventh international conference on Architectural support for programming languages and operating systems},
+  OPTpages = 	 {2-11},
+  OPTyear = 	 {1996},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {Cambridge, Massachusetts, United States},
+  OPTmonth = 	 {},
+  OPTorganization = {},
+  OPTpublisher = {ACM Press},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+24/01/2005
+
+Opposition entre un mono-processeur compléxe et des multi-processeurs simple.
+
+Comparaison entre un processeur super scalaire 6 voies à ordonnancement dynamique et 4 processeurs superscalaire 2 voies. 
+Un superscalaire est décomposé en 3 phases :
+
+                     |----| <-> E
+           |----| -> |    | <-> E
+ICache <-> | IF | -> | IR | <-> E
+           |----| -> |    | <-> E
+                     |----| <-> E
+
+- Instructions fetch => fournir le maximum d'instruction prête.
+  Limitation : 
+   * Branchement mal prédit (degré de spéculation)
+   * Instruction mal aligné
+   * Miss de caches
+- Issue and retirement 
+  Rennommage : 
+   * Table de mappage (nb_opérande * nb_voie_scalaire   ports de lecture)
+   * Reorder buffer   (nb_bit_codage_registre * Taille_file_instruction_issue * nb_opérande * nb_voie_scalaire
+- Execution
+  Augmentation du temps de cycle lors de l'écriture si beaucoup de voie scalaire
+  Compléxité du by-pass (augmentation quadratique en fonction du nombre d'unité d'execution)
+
+Single-Chip Multiprocessor
+--------------------------
+1) -> Les OS actuelles sont multi processus => fort parrallélisme
+2) -> Les processus sont également multi thread
+3) -> Les appli mono thread peuvent être découper en thread de manière hard. assez contraignant.
+
+Architecture pour comparaison
+-----------------------------
+
+* Super Scalaire => R10000 de degré 4 à 6. (Augmentation des caractéristiques pour arriver à 430 mm2)
+* Multi proc     => 4 * R10000 de degré 2  (Diminution   des caractéristiques pour arriver à 430 mm2)
+
+=> Même surface de silicium pour les deux architectures.
+
+Performance
+-----------
+Gel d'un proceeseur dut au miss de cache. 
+Superscalaire -> execution désordonné, spéculative, cache non bloquant. Masquage des couts de Miss.
+
+Mesure de performance : Gain par rapport à la version MP - 1 proc.
+- Sur les applications avec peu de parallélismes, le superscalaire est plus performant car exploite mieux l'ILP.
+- Sur les applications avec un grain fin de parallélisme et beaucoup de communication, l'approche SS et MP est équivalente (Les deux approches exploite le parrallélisme grain fin)
+- Sur les applications avec un large degré de parallélisme, le multi proc prend l'avantage. Car le parrallélisme dépasse la fenêtre du supersclaire.
+
+
+=> l'approche SS est limité par l'ILP du programme, et le matériel nécessaire (lancement dynamique et banc de registres) augmente de manière quadratique le matériel et donc le temps de cycle.
+
+@article{1996_tullsen,
+  title={{Exploiting choice: instruction fetch and issue on an implementable simultaneous multithreading processor}},
+  author={Tullsen, D.M. and Eggers, S.J. and Emer, J.S. and Levy, H.M. and Lo, J.L. and Stamm, R.L.},
+  journal={Proceedings of the 23rd annual international symposium on Computer architecture},
+  pages={191--202},
+  year={1996},
+  publisher={ACM Press New York, NY, USA}
+}
+
+16/03/2005
+
+Préentation d'un architecture SMT suivant 3 contraintes :
+ - Minimiser l'impact par rapport à une architecture Superscalaire
+ - Minimiser la perte de performance lors de l'execution de programme monothread
+ - Avoir un gain de performance lors de l'execution de programme multithread
+
+Architecture SMT
+----------------
+L'article dérive un Supersclaire classique 
+(Fetch unit, Decode, Register renaming, wait\_queue, lecture des registres, unités d'executions, commit).
+Les instructions sont lancées dans le désordre, retiré dans l'ordre
+
+Changement minimum à apporter :
+ - un pc/thread et un thread séquenceur
+ - une pile de retour séparé (pour la prédiction de retours)
+ - Par thread : mécanisme pour retirer les instructions, file d'instructions à retirer et mécanisme de trape
+ - un thread id pour le BTB
+ - un large banc de registres
+
+Note : les instructions présente dans la file d'executions sont partagé par plusieurs threads donc grâce au mécanisme de renommage, on ne sélectionne que les instructions indépendante
+
+Conséquence :
+
+* Un pc est prioritaire (choisit de manière round robin)
+* Taille du banc de registres conséquents impose l'augmentation de la profondeur du pipeline.
+
+Performance
+~~~~~~~~~~~
+L'architecture gère 8 threads.
+
+Remarque : Si un seul thread est utilisé, il y a une perte de 2\% sur l'IPC par rapport au superscalaire de référence dut à l'augmentation du pipeline.
+
+Goulot d'étranglement :
+- Taille des files d'instructions : à cause de l'augmentation de l'IPC, elle deviennent souvent pleines
+- l'étage ifetch n'a pas la connaissance que les files sont pleines donc continue à fétché des instructions.
+- manque de parrallélisme : à cause des fausses instructions.
+
+Fetch Unit
+----------
+Il y à un partage de la bande passante de fetch avec tous les threads.
+ -> le fetch unit peut choisir parmit plusieurs source, donc incrémenter l'utilisation de la bande passante (car si un thread est bloqué, les autres ne le sont pas forcément)
+ -> le fetch unit peut choisir pour quels threads travailler (si un thread n'est pas bloqué mais qu'il réalise beaucoup de miss de spéculation, alors il est peut profitable de lui chargé des instructions qui auront de fortes chances d'être fausse)
+
+Définition de plusieurs stratégie de fetchs, classement suivant 3 critères :
+
+ 1) Partionnement du l'unité d'ifetch parmis les threads
+ 2) Efficacité de l'unité de fetch (Qualité des instructions chargés)
+ 3) Disponiblitité de l'unité de fetch (Elimination des conditions de blockage de l'unité)
+
+1) Partitionnement
+~~~~~~~~~~~~~~~~~~
+L'unité fetch charge jusqu'a 8 instructions par cycle.
+Mais comme les blocs de bases sont plutôt petit, il est difficille d'exploiter complétement la bande passante utilement pour un thread.
+ -> Partage des 8 instructions parmit plusieurs threads. Le cache reste identique mais est découpé en plusieurs banc, deux threads peuvent intérrogé deux bancs différents
+
+1.8 (1 threads ayant 8 instructions) -> blocs trop petits 
+2.4 - 4.2                            -> idéal
+8.1                                  -> Il n'y a pas assez de threads non bloqué
+
+Ajout de matériel : Mutipléxeur d'adresse, plusieurs buses d'adresse; logique de sélection des tristates de sorties, logique de conflit de bancs, duplication de la logique de calcul des hit/miss
+=> Augmente la latence du cache mais réduit la latence du bloc decode et rename (car moins de dépendance à calculer)
+
+autre vision : 
+2.8 -> le premier thread est prioritaire et peut charger jusqu'a 8 instructions, s'il n'y arrive pas un autre thread oeut tenter de combler le manque.
+c'est la méthode la plus performante car elle permet de gère la bande passante parmit plusieurs threads et d'avoir un partitionnement flexible.
+
+2) Algorithme
+~~~~~~~~~~~~~
+Algorithme de décision sur le thread prioritaire : Déterminer le meilleur "thread"
+ a) probabilité de ne pas charger un faux chemin
+ b) temps prit par l'instructions pour être executable
+
+* Round-robin
+* BRCOUNT     -> Favorise le thread qui à le moins de branchement non résolue (améliore a)
+* MISSCOUNT   -> Favorise le thread qui à le moins de miss de donnée (améliore b)
+* ICOUNT      -> Favorise le thread qui à le moins d'instructions dans les étages D R IQ (IQ = Instruction queue) (améliore b)
+* IQPOSN      -> Donne la plus basse priorité au thread la plus proche de la tête des files d'attente (améliore b) (la plus vieille instruction) (Ne requiert pas de compteur)
+
+ICOUNT et IQPOSN sont les deux algos les plus performants.
+
+3) Disponibilité
+~~~~~~~~~~~~~~~~
+Condition de blocage du fetch unit : IQ full, Icache miss.
+
+* BIGQ -> Augmentation de la taille du IQ sans augmenter la taille de la zone de recherche
+* ITAG -> Scrute le cache un cycle plutôt est on sélectionne que les threads qui ne vont pas faire de miss
+
+Choix de l'instruction à lancé
+------------------------------
+
+Superscalaire : le degré de spéculation est croissant avec sa position dans l'IQ
+Dans un SMT, ceci n'est pas vrai. 
+
+* OLDEST
+* OPT\_LAST     -> Optimiste
+* SPEC\_LAST    -> Spéculatif en dernier (les instructions sont spéculatifs sont prioritaires)
+* BRANCH\_FIRST -> Branchement sont prioritaires (afin de connaître si un branchement est spéculatif)
+ 
+Les performances n'influe pas énormément -> la bande passante du lancement n'influe pas sur les performances.
+
+Goulot d'étranglement
+---------------------
+Bande passante du lancement      -> non
+Taille de la file d'instructions -> non
+Bande passante du fetch          -> oui : la fréquence des sauts et les problèmes d'alignements du pc ne permet pas d'utiliser entièrement la bande passante.
+Prédiction de branchement        -> non : Le SMT est plus tolérant au mauvaise prédiction qu'un superscalaire classique. plus il y a de threads, plus ils seront entrelacés donc moins d'instructions seront chargé après un branchement.
+Execution spéculative            -> non, mais un SMT bénéficie beaucoup moins de l'apport de l'execution spéculative.
+Sortance de la mémoire           -> non
+Taille du banc de registres      -> oui : Temps d'accès devient limitant
+
+
+
+
+
+@InProceedings{1996_wallace,
+  author = 	 {Wallace, S.     and
+                  Bagherzadeh, N.    },
+  title = 	 {A scalable register file architecture for dynamically scheduled processors},
+  OPTcrossref =  {},
+  OPTkey = 	 {},
+  OPTbooktitle = {Parallel Architectures and Compilation Techniques, 1996., Proceedings of the 1996 Conference on},
+  OPTpages = 	 {179-184},
+  OPTyear = 	 {1996},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {Boston, MA, USA},
+  OPTmonth = 	 {Oct},
+  OPTorganization = {},
+  OPTpublisher = {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+01/04/2005
+
+Abstract
+--------
+
+A major obstacle in designing dynamically scheduled processors is the size and port requirement of the register file. By using a multiple banked register file and performing dynamic result renaming, a scalable register file architecture can be implemented without performance degradation. In addition, a new hybrid register renaming technique to efficiently map the logical to physical registers and reduce the branch misprediction penalty is introduced. The performance was simulated using the SPEC95 benchmark suite
+
+@article{1996_yeager,
+  title={{The Mips R10000 superscalar microprocessor}},
+  author={Yeager, KC},
+  journal={Micro, IEEE},
+  volume={16},
+  number={2},
+  pages={28--41},
+  year={1996}
+}
+@article{burger1997sts,
+  title={{The SimpleScalar tool set, version 2.0}},
+  author={Burger, D. and Austin, T.M.},
+  journal={ACM SIGARCH Computer Architecture News},
+  volume={25},
+  number={3},
+  pages={13--25},
+  year={1997},
+  publisher={ACM Press New York, NY, USA}
+}
+@InProceedings{1997_palacharla,
+  author = 	 {Palacharla, S.  and
+                  Jouppi, N.P.    and
+                  Smith, J.E.   },
+  title = 	 {Complexity-Effective Superscalar Processors},
+  OPTcrossref =  {},
+  OPTkey = 	 {},
+  OPTbooktitle = {Computer Architecture, 1997. Conference Proceedings. The 24th Annual International Symposium on},
+  OPTpages = 	 {206 - 218},
+  OPTyear = 	 {1997},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {},
+  OPTmonth = 	 {Jun},
+  OPTorganization = {},
+  OPTpublisher = {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+07/02/2005
+
+=> Perte de performances du au matériel très couteux.
+
+2 directives pour fabriquer un mono processeurs :
+ - Le compléxifier le matériel afin d'extraire encore plus le nombre d'instructions lancée
+ - Le rendre plus simple afin d'avoir une plus grande fréquence d'horloge
+
+Source de compléxité
+--------------------
+
+Modèle de pipeline typique :
+
+1) FETCH             Lecture de plusieurs instructions, prediction de branchement
+2) DECODE            Décodage d'instruction
+3) RENAME            renommage de registre, dispatchement dans la fenêtre d'isntructions
+4) SELECT/ISSUE      Une fois qu'une instruction à ces opérandes => prête à être lancé -> Envoie vers l'UF approprié
+5) REG READ          Prise des opérandes / bypass
+6) EXECUTE/BY PASS   Execution
+7) DCACHE ACCESS     Accès mémoire
+8) REG WRITE/COMMIT  Accès dans les registres et valdiation (instruction non spéculatif et non érroné)
+
+Dépendance de complexité :
+- Largeur/profondeur de la fenêtre de lancement
+- Structure "Dispatch et issue"
+- Longeur des fils dans ces structures qui se mettent à jour par broadcasting
+
+-> Logique de renommage
+-> Logique de wake up (détermine quel instructions est prête ou non)
+-> Logique de selection
+-> Logique des by-pass
+
+Détails
+-------
+
+Logique de renommage
+~~~~~~~~~~~~~~~~~~~~
+Accès à une table de mappage pour diriger le numéro de registres logique vers le numéro de registres physique
+Accès multiple (plusieurs instructions)
+-> Logique de vérification de dépendances
+
+2 schémas : - schéma RAM : Une table de NB\_REG\_LOG pointant sur les registres physiques
+            - schéma CAM : Une table de NB\_REG\_PHY pointant vers les registres logiques
+Trename   = Tdecode + Twordline + Tbitline + Tsenseamp
+          = cst0 + cst1*IW + cst2*IW²
+
+Twordline (proportionnel à la taille de l'adresse du registre physique (environ 8) )
+Tbitline  (proportionnel au # de registre logique (souvent 32) )
+Tsenseamp fonction de bitline delay
+cst sont donnée par la technologie
+
+=> croit linéairement avec la taille de la fenêtre
+
+Logique de wakeup
+~~~~~~~~~~~~~~~~~
+A chaque résultat produit, a tag associé au résultat est diffusé à toutes les instructions contenus dans la fenête de lancement (IW).
+Chaque instructions compare le tag avec ses opérandes sources
+Si la comparaison est positive => mise à jour du bit ready de(s) l'opérande(s) (Quand tous les bit sont positionnés => instructions prête au lancement)
+
+Il y a IW tag soit NB\_OPERANDE x IW comparaions
+
+Twakeup = Ttagdrive + Ttagmatch + Tmatch\_or
+        = c0 + (c1 + c2 * IW)*WINSIZE + (c3 + c4*IW + c5*IW²)*WINSIZE²        
+
+(IW => nombre d'instruction en attente d'être executer)
+(WINSIZE => nombre d'instruction allant être executé)
+
+Incrémenter le nombre de ligne va incrémenter le nombre de comparaisone et la puissance nécessaire pour atteindre ces comparaisons.
+Seul le Ttagdrive dépend de la taille de fenêtre de lancement (fan-out + élevé car + de comparateur)
+
+Logique de selection
+~~~~~~~~~~~~~~~~~~~~
+Choix des instructions à executer parmit la IW
+ -> Plusieurs types d'instructions
+ -> Plusieurs types d'unités fonctionnelles pouvant acceptés une instructions de plusieurs types d'instructions.
+
+Un signal REQ par instruction contenant dans la IW (actif si instruction prête)
+Un signal GRANT est émit par le bloc de sélection (1 par signal de requête) => indique que l'instructions est lancé dans une unité fonctionnelle.
+Politique de selection -> en général FIFO, ou la plus vieille (C'est à dire la plus en bas de la fenêtre d'instruction)
+
+=> Arbre d'arbitrage.
+ 2 phases : 1) Propagation de la requête jusqu'à la l'unité fonctionnelle
+            2) Propagation de la réponse (GRANT) jusqu'a toute les req d'instructions
+
+Tselection = c0 + c1 * log4(WINSIZE)
+
+log4 car les noeuds de l'arbre d'arbitre accepte 4 requêtes.
+
+Logique des bypass
+~~~~~~~~~~~~~~~~~~
+Si complétement bypassé, il faut : 2*IW²*S (S est le nombre d'étage)
+-> Un fils par unité fonctionnelle
+-> Tous les unité fonctionnelle (ainsi que le banc de registres) doivent avoir un bloc mux
+-> banc de registres à autant 2*UF ports de lecture et UF ports d'écriture
+-> Bloc mux à UF ports d'entrée et en sorties ce sont des bus attaqués pas UF signaux.
+-> Sans oublier les compateurs dans chaque alu
+
+Tbypass = 0.5*R*C*L²   => Dépend principalement de la longueur des fils.
+
+Analyse des résultats
+---------------------
+
+IW  Window-size Trename Tselection Tbypass
+
+(0.18)
+4   32          351.0   578.0      184.9
+8   64          427.9   724.0      1056.4
+
+-> La selection (logique de fenêtrage) et les bypass posent des problèmes de scalabilités.
+=> Toutes les autres structures ne posent pas de pbl d'horloge, où s'il y en a, alors ils peuvent être pipeliné.
+
+Si on découpe l'étage Wakeup (Chercher les opérances) et selection (Chercher une ALU disponible), alors il y aura au meilleur des cas au moins un cycle de gels entre deux instructions dépendante consécutive.
+
+... | WUP | SEL | EXE | ...                add r3,r2,r1
+                   | (Bypass)
+......... | WUP | WUP | SEL | EXE | ...    add r5,r4,r3
+
+Proposition d'architecture
+--------------------------
+Remplacement de la fenêtre de lancement par une architecture "dependance-based"
+Clusterisation des by-pass.
+
+=> architecture "dependance-based"
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Exploitation des dépendances instraséques entre instructions.
+Fenêtre de lancement découpé en plusieurs fifos. Les instructions dépendantes sont routés vers la même fifos.
+Execution In-order des instructions dépendante entre elles. Execution désordonné des autres flots d'instructions.
+Il n'y que les instructions de têtes à aller verifier le banc de registres.
+
+Besoin d'une table(SRC\_FIFO)  où les dépendances des instructions sont maintenus à jour
+SRC\_FIFO(num reg log) -> numéro fifo
+
+=> Clusterisation des by-pass
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Décomposé les unités fonctionnelles en cluster. 
+Il y a 2 types de bypass 
+ - intra cluster (dans le même cycle) 
+ - inter cluster (peut nécessité plusieurs cycles)
+=> N copies du banc de registres : 1 pour chaque cluster
+
+Conclusion
+----------
+Les techniques diminues faiblement (au max 12\%) le CPI mais augmente sensiblement la fréquence d'horloge. Au total, la performance global est meilleur.
+
+Autre technique :
+
+1 cluster - 1 window (Superscalar basique)
+
+-> Window -> Cluster0
+
+
+2 cluster - Fifo dispatch
+
+     -> Cluster0
+   /
+-> 
+   \ 
+     -> Cluster1
+
+2 cluster - windows - Choix du cluster : exec
+
+Instruction stocké dans une fenêtre global puis assigne à un cluster
+
+             -> Cluster0
+           /
+-> Windows 
+           \ 
+             -> Cluster1
+
+2 cluster - windows - Choix du cluster : dispacth
+
+
+     -> Windows -> Cluster0
+   /
+-> 
+   \ 
+     -> Windows -> Cluster1
+
+2 cluster - windows - Choix du cluster : random
+
+Choix des clusters aléatoire
+     -> Windows -> Cluster0
+   /
+-> 
+   \ 
+     -> Windows -> Cluster1
+
+@InProceedings{ 1998_hammond,
+  author = 	 {Lance Hammond and
+                  Mark Willey   and
+                  Kunle Olukotun},
+  title = 	 {},
+  OPTcrossref =  {SSN:0163-5980},
+  OPTkey = 	 {},
+  OPTbooktitle = {Proceedings of the eighth international conference on Architectural support for programming languages and operating systems},
+  OPTpages = 	 {58-69},
+  OPTyear = 	 {1998},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 { San Jose, California, United States},
+  OPTmonth = 	 {},
+  OPTorganization = {},
+  OPTpublisher = {ACM Press},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+27/01/2005
+
+Thread level speculation
+------------------------
+Technique autorisant l'execution paralléle d'une application séquentiel (donc à pour but de tourner sur un multi processeur).
+=> Mécanisme fonctionnant bien pour des applications avec un grain moyen de parallélisme de boucle. Mais quand la granularité de parallélisme devient trop petite, l'overhead devient trop couteux.
+
+DATA Spéculatation
+~~~~~~~~~~~~~~~~~~
+
+Processeur superscalaire avec execution désordonné :
+ -> réordonne les instructions ALU (renommage de registre , ordonnancement dynamique).
+Pas de réordonnancement des accès mémoires si les adresses ne sont pas connut on sont connus et dépendante.
+
+Data spéculation : On execute des loads qui ce situe après des stores dont l'adresse n'est pas encore connus.
+ -> S'il y a une vrai dépendance => le store est prioritaire et le load (et chaque execution en dépendant) sont ré-executés.
+
+Le programmeurs / Compilateur peut diviser un programme séquentiel en plusieurs threads. Or les dépendances de registres et de mémoires imposent beaucoup de contraintes.
+=>Si les dépendance ne peut pas être connus lors de la compilation (exemple des pointeurs en C) alors impossibilité  de diviser le code ou alors placer des routine de synchronisation logicielle.
+
+Avec le thread level data speculation (TLDS)
+=> le compilo divise seulement le programme en threads. 
+=> Chaque thread à un numéro, celui-ci indique le numéro correspondant à l'ordre dans lequel il devrait être s'il été executer en séquence.
+=> La spéculation hardware d'occupe des vrais dépendances entre les accès mémoires
+
+Les écritures deviennent des points de synchronisations.
+
+Chaque processeur execute un thread :
+On classe les procs par rapport au numéro que le thread possède.
+Celui avec le numéro le plus faible (executer sur le processeur de tête) est donc non spéculatif. Les autres sont de + en + spéculatif.
+
+Temps 0 : CPU i   -> R
+Temps 1 : CPU i+1 -> R
+Action  : -
+
+Temps 0 : CPU i   -> R
+Temps 1 : CPU i+1 -> W
+Action  : renomage dans i+1
+
+Temps 0 : CPU i   -> W
+Temps 1 : CPU i+1 -> R
+Action  : envoie de la donnée écrite par i vers i+1
+
+Temps 0 : CPU i   -> W
+Temps 1 : CPU i+1 -> W
+Action  : Ecriture de i puis renommage de i+1 et écrasage de la donnée
+
+Temps 0 : CPU i+1 -> R
+Temps 1 : CPU i   -> R
+Action  : -
+
+Temps 0 : CPU i+1 -> R
+Temps 1 : CPU i   -> W
+Action  : Renommage de i+1
+
+Temps 0 : CPU i+1 -> W
+Temps 1 : CPU i   -> R
+Action  : RAW : i+1 redemarré
+
+Temps 0 : CPU i+1 -> W
+Temps 1 : CPU i   -> W
+Action  : Renommage de i+1, + tard le forward de i sera ignoré
+
+Le matériel de spéculation des donnés doit fournir :
+ - Détection des vrai dépendances mémoire dans l'ordre.
+ - Possibilité de retour en arrière et ré-execution du threads
+ - Bufferisation des écritures jusqu'a ce qu'elle ne sont plus spéculative (Ou supprimé)
+
+Décomposition en thread spéculatif
+----------------------------------
+
+2 architectures différentes :
+ - The Multiscalar architecture => découpage en tâche arbitraire, allocation des tâche dans l'ordre sur un anneau de processeur
+ - The TLDS architecture => support minimum pour la spéculation, principalement controlé par logiciel.
+
+Solution apportée ici :
+Combinaison de l'approche hard/Soft (~TLDS)
+-> Utilisation du support du hardware pour diviser le programme en thread et les distribuer sur les différents processeurs.
+  |-> Coprocesseur de spéculation
+
+Comment diviser un prcess en threads?
+ -> utilisation d'appel de sous fonction
+   -> Un autre processeur va executer de manière spéculatif la suite du programme principal
+ -> Boucle (Ceux indiqué par le compilateur)
+   -> Les différentes itérations sont distribuées sur les différents processeurs
+
+Subroutine Thread
+~~~~~~~~~~~~~~~~~
+
+Spéculation de fonction géré par une list chainé de threads actifs ordonnée du moins au + spéculatif
+Lors d'un appel de fonction, envoie d'un message au autre processeur.
+
+1) Le processeur alloue un register passing buffer (RPB) pour le thread nouvellement crée. 
+2) Sauvegarde des registres (devant être sauvegarder lors d'un appel systems) puis prédition de la valeur retourné 
+  alogo repeat least return value (car en C -> beaucoup de void fonction ou de retour d'erreur, ou imprédictible)
+3) Insertion du buffer dans la list des buffer actif juste après le process courent (pour garder l'ordre par spéculation)
+4) Attribution d'un processeur à ce nouveau thread (soit un libre, soit un executant le plus spéculatif des threads)
+
+Ceci est réaliser dans l'exception handler (Donc chaque appel à une sous fonction génére une exception)
+Si l'appel de fonction à une valeur de type imprédictible, alors on ne considère pas la spéculation.
+
+Au retour d'un appel de fonction :
+1) Le processeur attend jusqu'a ce qu'il soit le processeur de tête (donc sont code devient non spéculatif et deplus il n'est pas en conflit avec les autres thread)
+2) La valeur retourné est comparé avec la une valeur prédite. Si miss => Toute les threads sont relancés
+3) Le RPB est remis dans la free-list, le thread suivant devient celui de tête
+4) L'ancien processeur de tête va executer un thread (donc devient le plus spéculatif)
+
+Loop itération Thread
+~~~~~~~~~~~~~~~~~~~~~
+
+Un boucle spéculatice est préceder d'une verification pour savoir s'il est avantageux ou non de l'exécuter de manière spéculative.
+Une itération de boucle est donnée a chaque proc disponible.
+
+A la fin d'une itération -> validation, l'itération suivante devient le CPU de tête.
+Ceci jusqu'à ce que la condition de terminaison soit trouvée (dans ce cas invalidation de tous les autres threads) 
+
+2 manières de traiter les boucles :
+ - Si la boucle est longue : rebouclage des RPB
+ - sinon Schéma habituel : insertion de 4 RPB (1 pour chaque proc) => Overhead moins couteux mais méthode peu fléxible
+
+Taille des Threads
+~~~~~~~~~~~~~~~~~~
+
+Facteur de Limitations :
+1) Taille limité des buffers : Il n'y a que le CPU de tête qui réalise des mise à jour de la mémoire. Les CPU spéculative ne peuvent commiter leur buffer que s'il deviennent buffers de têtes.
+2) Vrai dépendance : Les grands threads augmente la probabilité de vrai dépendance
+3) Longueur des redémarrages : Un redémmarrage sur un grand thread augmente la charge de travail (données à défaire etc..)
+4) Overhead : Les très petits threads ont un coût d'overhead trop élevé.
+
+=> Violation counters : élimine les threads avec trop de dépendances
+=> Thread timers : élimine les threads trop long
+=> Stall timers : élimine les threads trop souvent bloqués (voir plus bas)
+
+Exception
+~~~~~~~~~
+Si un thread réalise une exception, ou un appel système, alors celui-ci est bloqué.
+
+Speculation Control Coprocessor
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+=> Implémenter dans le Coprocesseur2 du mips
+-> Fonction accèder par software
+-> Contient la table des vecteurs d'exceptions
+
+Hardware Support
+----------------
+
+Sur le multiscalar processor => ARB (Dcache partagé) associé avec un traceur de reférence mémoire spéculative.
+Sur le TDLS processor        => Protocole plus simple
+
+Ici : 
+ - Modification dans le Dcache : Sur chaque tag d'une ligne de cache, ajout de qq bits (modified bit, pre-invalidate bit) (Read, Write bits => pour détecter les vrai dépendance, un bit par mots contenu dans la ligne)
+ - Buffers dans le cache L2    : Bufferisation des écritures encore spéculative. Une fois qu'il ne sont plus spéculative, ordre venant du processeur pour rentre permannent les changement. Le buffer est dépiller par ordre d'arriver et écrit dans le L2. Le buffer full est détecter par chaque proc qui possède une copie local des Tags du buffer couramment utilisé.
+Lors d'un load  spéculatif , On va lire le DCACHE, puis on va lire dans le buffer courrant au proc, puis on remonte tous les buffer appartement a des process moins spéculative (jusqu'a la tête) et enfin on va lire dans le L2 cache. (Tous est vérifier en parralléle)
+Lors d'un sotre spéculatif , il peut se produire : écriture dans le DCACHE (demander par le proc courant), une invalidation par un cpu moins spéculatif (vrai dépendance), une pré invalidation venant des cpu plus spéculatif (vérification). Si proc devient la tête : Drainage du buffer.
+@TechReport{1998_olukotun,
+  author = 	 {Lance Hammond and
+                  Kunle Olukotun},
+  title = 	 {Considerations in the design of hydra : a multiprocessor-on-a-chip microarchitecture},
+  institution =  {Stanford University},
+  year = 	 {1998},
+  OPTkey = 	 {CSL-TR-98-749},
+  OPTtype = 	 {},
+  OPTnumber = 	 {},
+  OPTaddress = 	 {},
+  OPTmonth = 	 {February},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+24/01/2005
+
+Décrit de manière détaillée :
+- Hiérarchie mémoire
+- Bus internes
+- Contrôle et arbitrage
+
+Hierarchie Mémoire
+~~~~~~~~~~~~~~~~~~
+L1 - On chip - I D séparé , et 1 couple pour chaque proc
+L2 - On chip - Partagé avec les 4 processeurs
+L3 - Off chip
+Mémoire principale - Off chip
+
+L1 unifié pour les 4 procs :
+ - Trop de ports R/W
+ - Cache L1 devient "plus gros" pour rendre les même services
+ - Logique entre le cache et le L1 (en cas d'accès à la même case)
+ - Trop de logique => Ne réponds pas en 1 cycle
+
+L1 séparé
+ - Obligation d'un mécanisme de snoop
+
+Limitation d'avoir un L3 off chip :
+ - RAM rapide sont onéreuse
+ - Demande beaucoup de plots
+ - Electriquement non triviale
+
+Communication
+~~~~~~~~~~~~~
+2 bus internes :
+ - Bus Read/Replace
+ - Bus Write-through 
+
+Gérer de manière pipeliné, demande 1 cycle pour l'arbitrage afin d'avoir un débit d'un accès par cycle
+
+Bus Read/Replace  : 256b de large (1 ligne de cache L1 / L2). Liaison entre le L2, et le L3 ainsi que tous les L1 (en lecture uniquement). Bus avec un faible traffic (dans leur exemple : occupation inférieur à 50\% pour les tests les plus gourmand en accès mémoires)
+
+Bus Write-through : 64b de large, de tous les caches L1 vers le L2. Cohérence du cache L1 sur snoop de ce bus (pas le read/replace bus) , Invalidation sur écriture (Un seul cache est propriétaire d'un bloc). Les écritures de tous les procs se retrouvent séquencer.
+
+L'utilisation du write-bus n'est pas scalable :
+ * write-bus multiple (Ou 1 seul rapide) => Ports supplémentaires pour le L1 Tags, snoop et invalidation multiple par cycle. Dans le L2 => plusieurs données peuvent être écrite par cycle.
+ * Une ligne de bus avec un mode rafale
+ * Protocole conventionnel de cohérence MESI, et elimination du write bus pour un bus partagé entre les lecture et les écritures
+
+Contrôleur mémoire
+~~~~~~~~~~~~~~~~~~
+Chaque ctrl mémoire est divisé en 2 pipelines indépendants. 
+ - un pour manager les accès en lecture (Instruction fetch et load)
+ - l'autre pour manager les accès en écriture
+
+Lecture  : en général prévisible et donc absorbé par le cache
+Ecriture : A cause du write throught : répercuter à chaque fois sur le bus. De plus les codes ont tendance à faire des burst de store. En général absorbé par le store buffer.
+
+pipeline de Lecture et celui d'ecriture sont similaire :
+3 étages :
+ - accès L2 (~5  cycles)
+ - accès L3 (~15 cycles)
+ - Initiation de l'accès à la mémoire principal ( 5-10 cycles)
+L'avancement dans le pipeline se fait sur un miss de l'accès courant.
+
+Degré de pipeline :
+Accès L2, Accès L3 pipeliné
+Accès mémoire non pipeliné (1 seul requêtes dans cet étage)
+
+De plus il y a deux autres ctrl dans la mémoire principale et l'interface I/O
+-> Retourne les données venant de l'extérieur vers le cache approprié.
+-> ~ au ctrl des caches
+
+Arbitre
+~~~~~~~
+Les demandes d'accès les plus anciennes sont servies en premier
+
+Ce n'est pas une allocation cycle par cycle ou ressource par ressource. Mais par unité de cycle (de 5 à 20 cycles).
+
+Chaque CPU pipeline (ctrl mémoire) envoie une requete de ressource au début de chaque étage de pipeline.
+Priorité fixe :
+ - vers Accès mémoire et I/O
+ - vers L3
+ - vers L2
+(Les plus courants sont les moins prioritaire, évite la famine)
+
+Read pipeline est prioritaire sur le write pipeline. Possibilité au L1 d'inverser la priorité si le write buffer est (proche d'être) plein.
+
+Arbitrage sur la même adresse
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+2 accès se réalise en parrallèle (L1 / L2 / L3 / Mémoire) sur le même adresses
+Problèmes :
+ - Copie multiple d'une ligne de cache => Plus de proporité d'exclusivité des lignes de caches.
+ 
+@article{1998_kessler,
+  title={{The Alpha 21264 microprocessor architecture}},
+  author={Kessler, RE and McLellan, EJ and Webb, DA},
+  journal={Computer Design: VLSI in Computers and Processors, 1998. ICCD'98. Proceedings., International Conference on},
+  pages={90--95},
+  year={1998}
+}
+@InProceedings{1998_krishnan,
+  author = 	 {Krishnan, V.   and
+                  Torrellas, J.  },
+  title = 	 {A clustered approach to multithreaded processors},
+  OPTcrossref =  {},
+  OPTkey = 	 {},
+  OPTbooktitle = {Parallel Processing Symposium, 1998. 1998 IPPS/SPDP. Proceedings of the First Merged International...and Symposium on Parallel and Distributed Processing 1998},
+  OPTpages = 	 {627-634},
+  OPTyear = 	 {1998},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {Orlando, FL  ,   USA},
+  OPTmonth = 	 {30 Mar - 3 Apr},
+  OPTorganization = {},
+  OPTpublisher = {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+25/02/2005
+
+SMT                    -> Flexible (TLP et ILP) 
+Fixed assignement (FA) -> Sous utilisation des ressources
+
+CMT -> un thread à tous les ressources à un instant donné
+Pbl SMT -> Conséquence sur le temps de cycle !!!
+
+SMT clusterisé : Unité de calculs sont multisthreadé, l'unité de dispatch va envoyé les instructions d'un thread vers les unités de calculs qui lui sont associés.
+
+Model de parallélisme
+---------------------
+
+Architecture fixe : N threads ayant M unités d'execution. Une unité d'execution n'apaprtient qu'a un thread => jusqu'a M IPC
+Si X nb d'Unité d'execution total fixe -> M = X/M 
+  - Si N trop grand -> exploite peu l'ILP
+  - Si N trop petit -> exploite peu le TLP
+
+Architectures
+-------------
+
+Centralisé et clusterisé SMT:
+
+Fetch unit partagé par ts les threads, (géré round robin ou autre), les instructions sont ensuite placé dans une fênetre d'instructions commune. Les instructions sont commité par thread.
+ -> limite : large interconnections entre les unités fonctionnelles et le banc de registres (en particulier les by-pass)
+
+FA :
+
+Réduction de la centralisation des ressources : partionnement du SMT classique en clusters (SMT d'ordre X*Y devient X clusters étant des SMT d'ordre Y).
+Chaque cluster à sont unités de FETCH
+
+Evaluation
+----------
+Un gaspillage d'un slot d'instructions peut être classé en :
+- struc : Manque d'unités fonctionnelle
+- mem   : Accès mémoire
+- data  : Dépendance de donnnées
+- ctrl  : Miss predictions de branchements
+- sync  : Barrières de synchro
+- fetch : Pas d'instructons pour un thread dans la fenêtre
+- autre
+
+Comparaison d'un FA8  (8 clusters qui sont des superscalaire d'ordre 1)
+                 FA4  (4 clusters qui sont des superscalaire d'ordre 2)
+                 FA2  (2 clusters qui sont des superscalaire d'ordre 4)
+                 FA1  (1 clusters qui sont des superscalaire d'ordre 8)
+                 SMT8 (8 clusters qui sont des SMT supportant 1 threads lancant 1 inst/cycles) 
+                 SMT4 (4 clusters qui sont des SMT supportant 2 threads lancant 2 inst/cycles) 
+                 SMT2 (2 clusters qui sont des SMT supportant 4 threads lancant 4 inst/cycles) 
+                 SMT1 (1 clusters qui sont des SMT supportant 8 threads lancant 8 inst/cycles) 
+En terme de complexité SMTx = FAx
+SMT8 est identique à FA8
+SMT1 est une architectures SMT centralisés
+
+de FA8 à FA1 : sync décroit mais les data et mem croit. (logique :P)
+
+@article{1998_tullsen,
+  title={{Simultaneous multithreading: maximizing on-chip parallelism}},
+  author={Tullsen, D.M. and Eggers, S.J. and Levy, H.M.},
+  journal={International Conference on Computer Architecture},
+  pages={533--544},
+  year={1998},
+  publisher={ACM Press New York, NY, USA}
+}
+
+15/02/2005
+
+Présentation du multi-threading.
+-> lancement de plusieurs flots de plusieurs threads dans les unités fonctionnelles du processeurs.
+-> but : augmenter l'utilisation du processeur face au long latence de la mémoire et de ILP limité dans un seul thread
+
+plan :
+ - modèle de SMT
+ - evaluation des perfs (par rapport à un superscalaire et un fine grain multi threading)
+ - hierarchie mémoire dans un SMT
+ - SMT vs CMP
+
+Modification d'un alpha 21164 :
+
+- 10 unités d'execution (4 integer, 2 flottant, 3 load/store et 1 branchement) => complétement pipeliné
+- Issue : 8 inst/cy
+- execution dynamique
+  |-> gestion des dépendance in-order
+  |-> lancement out-order
+- Prediction de bcht
+
+Limitations du super-scalaire
+-----------------------------
+en moyenne, le processeur lance 1.5 inst/cy sur une machine pouvant en lancer 8.
+différente cause :
+ - conflits mémoire, dépendance de donnée (flottant, ou entiere), délai de chargement, bulle de contrôle, mauvaise prédiction, miss de cache et de TLB.
+
+Toutes les cas peuvent être classé suivant deux types d'incidences sur le pipeline
+ - gaspillage verticale   : à un cycle donnée, aucune unité d'exécution ne sera utilisé
+ - gaspillage horizontale : à un cycle donnée, non utilisation d'un créneau de lancement (issue slot)
+
+un corse grain / Fine grain multithreading limite le gaspillage verticale.
+
+Modèles de processeurs
+----------------------
+Chaque modèles à 10 unités fonctionnelles et peut lancer 8 inst/cycles (Donc au max 8 threads)
+
+- Fine-grain multithreading : 1 thread peut lancer des instructions pendant 1 cycle (cycle suivant commutation)
+- SMT : full issue : les 8 threads sont en compétitions sur chaque issue slots à chaque cycle
+- SMT : N issue : chaque threads peut lancer un maximum de N inst/cycle (full issue = 8)
+- SMT : Connection limité : Chaque thread hardware est directement connecter à une unité fonctionnelle de chaque type (si il y a 8 threads et 4 unités fonctionnelles d'un type, alors chaque unité fonctionnelle est connecté à 2 threads)
+
+3 facteurs :
+ 1- # de threads en compétition
+ 2- # d'instructions lancé/thread
+ 3- # d'UF visible/thread
+
+augmente   Port registre | dépendance interinst | logique forward | ordonnancement inst
+1                                                 + complexe        + complexe          -> les ufs ont plus destination possible pour les résultats
+                                                                                        -> plus d'instructions devant être routé
+2          + complexe      + complexe                                                   -> plus d'instruction à lancer (donc chercher les opérandes)
+                                                                                        -> plus d'instruction à analyser (augmentation de la fenêtre de chaque thread)
+3          + complexe      + complexe             + complexe        + complexe          -> l'ordonnancement devient de + en + dépendant d'autre FU
+                                                                                        -> une UF qui est privé à moins de destination possible
+
+Caches
+------
+Le partage des caches et des TLB est néfastes sur les performances.
+Lors du partage des caches entre threads :
+ - Il y a virtuellement moins d'espace par threads
+ - Il faut des caches non bloquants
+
+-> Cache privé afin d'avoir des caches dédié à un thread (le cache est partionné en NB\_THREAD parties) Bon pour les Icaches (Pas d'évincement d'une ligne d'instruction par un autre thread)
+-> Cache partagé : Tous les threads ont accès au même cache => peu de contrôle, bon pour les Dcaches car 1 seules mécanisme de cohérence mémoires à implémenter.
+
+SMT vs CMP
+----------
+Ressemblance :
+Duplication des registres, multiple unité fonctionnelle, grand nombre d'instruction lancé par cycle
+Différence :
+les ressources ne sont pas partitionné et ordonnancé. Ils ont alloué de manière statique à un thread (ou un groupe de threads)
+
+Le SMT surpasse le CMP à complexité égal :
+ -> Un SMT 8 threads - 8 issues avec 10 FU surpasse de 24\% 8 proc 1 issue avec 4 UFs
+
+ * performance avec peu de thread (car partage des ufs)
+ * granularité et flexibilité
+
+
+@article{2000_barroso,
+  title={{Piranha: a scalable architecture based on single-chip multiprocessing}},
+  author={Barroso, L.A. and al.},
+  journal={Proceedings of the 27th annual international symposium on Computer architecture},
+  pages={282--293},
+  year={2000},
+  publisher={ACM Press New York, NY, USA}
+}
+
+02/12/2004
+
+systeme Piranha : Exploite le multiprocesseur à l'aide de 8 alpha (simple) avec 2 niveaux de caches, le tout sur un seul chip.
+
+Les processeurs hautes performances vise l'exploitation au maximum de l'ILP. Réalisant des architectures de + en + complexe, afin d'améliorer les benchmarks de types SPEC.
+Or Les domaines d'applications demandant vraiment de la haute performance se situe au niveau des serveurs. (Application internet) => Comportement n'est pas comme les bench SPEC
+
+Pourquoi cette architecture : Le coût d'un SMT (simultaneous multithrading) étant plus cher qu'un CMP (chip multiprocessing), car plus complexe (le SMT contient du matériel pour gérer les changement de thread, + de banc mémoire etc ...). Alors que l'approche CMP peut être réaliser avec des processeurs plus simple.
+
+Idée dans le piranha :
+ -> Mémoire secondaire partagée (non inclusive avec un niveau L1)
+ -> Cohérence des caches
+ -> architecture I/O
+
+Architecture générale :
+-----------------------
+
+ * CPU alpha possèdant un I et DCACHE dédié
+ * Tous ces couple Proc+Cache sont relié autours d'un Interconnect
+ * Sur cette interconnect, il y a également les caches L2 (donc partagés avec n'importe lequel des CPU)
+ * Sur chacun des caches L2 est connecté un controleur mémoire.
+ * Ce dernier à une liaison directer avec des RDRAM.
+ * Connecté sur le Bus, pour la communication avec le monde extérieur
+    - Home engine
+    - Remote engine
+ * Les 2 moteurs de protocoles sont connecté au routeur de paquet qui distribue les paquets entre les moteurs internes et file d'entrée et de sortie. 
+ * Le bus étant piloté par un module : system control
+
+Structure hiérarchique forte.
+
+Réseau de noeud Piranha :
+ - Les P-chip   => en interne possède 8 CPU alpha
+ - Les I/O-chip => Permet de faire la liaison avec le monde extérieur (Au lieu des 8 CPU, il n'y en a qu'un + un bloc I/O)
+
+D'après les concepteurs, un réseau peut aller jusqu'a 1024 noeuds avec un nombre quelconque de noeud I/O.
+Un des principes fondamental, est qu'un noeud I/O est traité de la même manière qu'un noeud de traitements.
+
+Architecture détaillée :
+------------------------
+
+CPU + L1 cache
+~~~~~~~~~~~~~~
+Processeur alpha de 500Mhz, 8 étages de pipeline classique (Ifetch, Decode, Execute (*5), Writeback).
+ -> Unité flottante, BTB, logic de prédécodage.
+2 caches séparé :
+ -> 64 ko, ass 2voies. Cache bloquant avec adresse Virt et Tag phy. 
+ -> TLB de 256, ass 4voies
+ -> Protocole de cohérence MESI
+ -> Non inclusif avec le niveau L2
+
+Intra-Chips Switch (ICS)
+~~~~~~~~~~~~~~~~~~~~~~~~
+Conceptuellement, c'est un crossbar.
+-> Uni-directionnel, interface Push-only
+-> ECC , bits de parités
+-> pré-allocation (spéculation)
+-> 2 priorités (low & high), un chip peut choisir la priorité désiré.
+
+Cache L2
+~~~~~~~~
+Cache unifié d'1Mo, découpé en 8 bancs qui sont ass 8voies (Remplacement round robin)
+-> Maintient de la cohérence intra-chip
+-> Non inclusif avec le niveau 1 de caches (Non dédoublement des instructions)
+-> write no allocate
+-> Duplication du registre de TAG du cache L1 associé au cache L2
+
+L1 envoie une requete mémoire à son banc L2. Celui-ci peut :
+ -> Servir directement la requête
+ -> La renvoie à un autre Cache L1
+ -> La renvoie à un autre protocle de cohérence
+ -> Obtient la donnée à par le contrôleur mémoire
+
+Contrôlleur Mémoire
+~~~~~~~~~~~~~~~~~~~
+Un Contrôlleur mémoire par cache L2.
+A une liaison rapide avec les RAMs,
+N'a pas de liaison direct avec l'ICS
+
+Protocole Engine
+~~~~~~~~~~~~~~~~
+Assure le support pour la mémoire partagé, 2 blocs spérarés :
+ -> "home engine"   responsable d'exporter la mémoire local a ce noeud
+ -> "remote engine" importe la mémoire qui se trouve dans un noeud distant
+
+Chaque bloc est a peu de chose près conçu de la même manière :
+* Input controller
+* microcode controlled execution unit
+* Ouput controller
+
+Une execution micoprogrammé assure la gestion entre les deux interfaces.
+
+Cohérence des caches : Read, Read-exclusive, Exclusive, Exclusive-without-data
+
+Interconnecte système
+~~~~~~~~~~~~~~~~~~~~~
+3 partie distinct :
+-> Output Queue
+-> Input  Queue
+-> Routeur
+
+Topologie indépendante, adaptatif, Buffer avec différents niveau de priorités, canaux virtuels
+
+Mise en place de dispositifs pour assurer la fiabilité, disponibilité et l'utilité des données :
+ - redondance sur les dispositifs mémorisants
+ - procetection CRC sur les chemins de donn"s
+ - protocle de recouvrement d'erreur
+ - enregistrement d'erreur
+ - Liens permuttable à chaud
+
+METHODOLOGIE D'EVALUATION
+-------------------------
+
+Utilisation d'un bench simulant des accès de clients sur des bases de données.
+ -> Oracle (logiciel)
+ -> SimOS-Alpha (Os pour processeur alpha assez fournit (gère le multi processeur, la mémoire virtuel ...)
+
+Comparaison de l'archi piranha avec :
+ - Un alpha21364 : un superscalaire Out of order, à 1Ghz, 2 niveaux de caches etc...
+ - un système piranha avec 8 procs (P8)
+ - un système piranha avec 1 proc  (P1)
+ - un proc superscalaire In order
+
+Constatation :
+ - le piranha 8 est relativement performant
+ - Le traffic dans l'interconnect local est d'autant plus grand qu'il y a de processeurs, surtout a cause des mécanisme de cohérence de cache (Forwarding vers d'autre cache L2)
+
+Remarque de fin :
+Les auteurs finissent par cette perspective :
+ => La question clé pour les designers des processeurs futures ne va pas être de savoir si on va employés des multi procs, mais de déterminer la bonne compensation entre le nombre de coeurs et la puissance de chaque coeurs. Et quel sera la meilleur hierarchie mémoire.
+@article{2000_hammond,
+  title={{The Stanford Hydra CMP}},
+  author={Hammond, L. and Hubbert, B.A. and Siu, M. and Prabhu, M.K. and Chen, M. and Olukotun, K.},
+  journal = 	 {Micro, IEEE},
+  year = 	 {2000}
+}
+
+07/12/2004
+
+MOTIVATION
+----------
+
+Les processeurs sont plus petits et rapide. Donc pour une même surface, nous avons une augmentation du "budget" de processeur.
+ -> Soit on augmente la complexité d'un mono-processeur
+ -> Soit on augment le nombre de mono-processeur simple sur un chip
+
+Parrallélisme:
+2 types de parrallélisme : ILP (Instruction level parrallelism) et TLP (Thread level parrallelism)
+Souvent la logique utilisé pour augmenter l'ILP fait augmenter le cycle d'horloge de manière quadratique.
+De plus il est limite à 4-6 instructions (cf 1991\_wall)
+
+Contrainte technologique :
+Délai causé par l'interconnection des portes (délai des nets) devient significatif => zone localement synchrone et globalement asynchrone. Un CMP peut faire en sorte de placer des processeurs simples dans les zones localement synchrones
+
+Temps de design:
+La conception d'un CMP s'appuie plus sur l'utilisation d'IP.
+
+Pourquoi les CMP ne sont pas utilisé?
+ -> Difficulté à convertir un programme pour mono-proc en multi-proc (Problème de consitence mémoire, synchronisation entre proc etc ...)
+ -> Les compilateurs parralléles sont encore très assistés par le programmeur
+
+DESIGN
+------
+
+Le chip Hydra est un chip multiprocessor (CMP) intégrant 4 processeurs MIPS possédant chacun un Icache et un Dcache L1, mais un niveau L2 partagé.
+Tous les controleurs des Caches L1 et le cache L2 sont sur le même bus. (Appellé bus d'écriture)
+Un autre bus prévut pour les échanges entre l'extérieur et le cache L2 mais avec possibilités de lecture des contrôleurs L1
+
+Protocole d'invalidation simple sur le bus d'écriture
+
+Il existe beaucoup d'application pour mono-processeur. Pour l'executer sur un système multi-proc, soit on sous utilise notre architecture, soit on ajoute de la thread-level speculation.
+L'hydra va utiliser la deuxième technique.
+
+thread-level speculation
+~~~~~~~~~~~~~~~~~~~~~~~~
+Prends une séquence d'instructions, la découpe de manière arbitraire en thread. Le hardware doit suivre ces threads. Si un thread réalise une lecture trop tôt (Donc un autre thread n'a pas encore fournit de résultat), le hard doit s'arranger pour que ce thread ce réexecute avec la bonne lecture.
+Grande complexité car on doit déterminer toute les possibilités de "vrai dépendances"
+
+Outre le cas normal, il y a 5 types de problèmes de cohérences :
+- Cas normal : début de boucle load X , fin de boucle write X
+- Renvoie de la donnée entre thread parralléle
+- Détection si les lectures sont "proche" (Dépendance RAW) : Au moment de faire un write sur X à l'itération i, alors le distribuer au load de l'itération i+1 (Forward data entre deux thread paralléle). 
+ => Mécanisme pour ce souvenir des traces d'execution (S'il y a eu précedement une lecture sur X dans l'itération i+1 lros de l'execution de l'instuction write sur X de l'itération i, alors il y a une erreur).
+- Annulation saine de l'exec spéculatif après violation 
+- Retirer les écritures spéculatives dans le bonne ordres (Dépendance WAW) (tjs l'itération la plus ancienne en premier) => Les écritures ne deviennent plus spéculative.
+- Fournir le rennomage mémoire (Dépendance WAR)
+
+Le système doit avoir un mécanisme pour décomposer en thread, et pouvoir les arreter les threads spéculatifs.
+
+Où découper les threads : En pratique : que lorsque l'on peut avoir plusieurs voie, càd boucle et appel de fonctions (Si la fonction ne retourne pas de résultats ou le résultat est facilement prédictible)
+Le speculation runtime system va choisir les 4 threads les moins spéculatifs et les executer (car il y a 4 procs).
+
+Le mécanisme de spéculation demande des médiums de communication rapide inter processor, sinon le processus mono thread risque de couter moins cher que sont équivalents découpés en plusieurs threads (spéculatif).
+
+Sur l'hydra, le matériel additionnel pour utiliser cette technique est placé dans 2 blocs matériels :
+- Ram de flags pour les caches L1 (est ce que la donnée contenu dans la ligne à été spéculativement lut ou écrite?)
+- Write buffers dans le cache L2 (Buffer d'écriture permettant de sauvegarder "sainement" les données dans le cache L2. (Garantie de donnée non spéculative)
+
+Comment cela fonctionne?
+~~~~~~~~~~~~~~~~~~~~~~~~
+- Un buffer est alloué à chaque thread en train d'être éxecuté sur ce système. Dès qu'un thread ne devient plus spéculative, alors les buffers écrivent dans la mémoire.
+- Pour contrôler le séquencement des threads, il y a un petit composant utilisant l'interface coprocesseur du mips.
+  |-> "speculation coprocessors"
+
+Classement de threads par degré de spécultation, quand un thread spéculatif d'ordre i envoie un message sur le writebus, seul les ctrls rattaché à des procs éxecutant un thread plus spéculatif (donc d'ordre > i) snoop le bus (rappel => utilisation de l'invalidation sur snoop)
+
+=> Lors d'un accès mémoire => Lecture en L1, si miss (surement invalidé) alors regarde dans son write buffer  puis dans les write buffer des threads de - en - spéculatif, et enfin dans le cache L2.
+
+COUT ET PERFORMANCE
+-------------------
+Cout        : augmente la surface de quelques pourcents.
+Performance : Programme difficille ou impossible à parralléser, cependant ce sont des applications hautements parralléles.
+@article{2000_sharangpani,
+  title={{Itanium processor microarchitecture}},
+  author={Sharangpani, H. and Arora, H.},
+  journal={Micro, IEEE},
+  volume={20},
+  number={5},
+  pages={24--43},
+  year={2000}
+}
+@article{2001_hinton,
+  title={{The microarchitecture of the Pentium 4 processor}},
+  author={Hinton, G. and Sager, D. and Upton, M. and Boggs, D. and Carmean, D. and Kyker, A. and Roussel, P.},
+  journal={Intel Technology Journal},
+  volume={1},
+  pages={2001},
+  year={2001}
+}
+@InProceedings{2001_nagarajan,
+  author = 	 { Ramadass Nagarajan   	  and
+                   Karthikeyan Sankaralingam 	 and
+                   Doug Burger 	 and
+                   Stephen W. Keckler},
+  title = 	 {A design space evaluation of grid processor architectures},
+  OPTcrossref =  {SBN ~ ISSN:1072-4451 , 0-7695-1369-7},
+  OPTkey = 	 {},
+  OPTbooktitle = {Proceedings of the 34th annual ACM/IEEE international symposium on Microarchitecture },
+  OPTpages = 	 {40-51},
+  OPTyear = 	 {2001},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 { Austin, Texas},
+  OPTmonth = 	 {},
+  OPTorganization = {},
+  OPTpublisher = { IEEE Computer Society },
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+02/02/2005
+
+En quoi consiste un Grid processors architecture?
+ -> tableau d'ALU avec un contrôle limité.
+ -> Les alu sont connecté par un réseau ou circule leur opérande
+ -> Les programmes sont éxécutés en mappant les blocs de manière statique et a executé les isntructions de manières dynamiques
+ -> Executions possible via une chaine d'alu (sorte de pipeline)
+
+Le GPA est conçut en vut d'avoir une grande fréquence d'horloge et une grande exploitation de l'ILP
+Le coeur de calcul d'un GPA consiste en une matrice 2D de noeuds. Chaque noeud contient un buffer d'instruction et une unité d'execution.
+-> noeud peuvent donc réaliser des calculs à grain fins
+-> les noeuds sont interconnecter avec un réseau dédié à la communication de données et d'opérande.
+-> Contrôle assuré par un mécanisme mappant les instructions sur les noeuds
+
+=> Equivalent à une approche VLIW : Ressources alloués statiquement par le compilo mais le lancement est dynamique
+
+MODELE D'EXECUTION
+------------------
+
+Modèle d'execution : traite des groupes d'instructions comme une unité atomique pour le fetch, mappage de ressources des unités d'execution et le commit.
+Dans ce modèle, les groupes d'instructions sont définit par le compileur.
+ -> Un groupe n'a pas de transfert interne de ctrl (c'est à dire un saut prit sera la dernière instruction d'un groupe) (Un bloc peut être un bloc de base ou une trace d'execution ...)
+ -> Données utilisé sont de 3 types : (Modèle Producteur - consommateur)
+    * entrée : valeur produite par un autre groupe et consommé par ce groupe
+    * sortie : valeur produite par le groupe et consommé par un autre groupe -> écriture des données dans un mémoire tampon jusqu'au commit
+    * temporaire : valeur produite et consommé par le groupe -> transimition des données en internes
+
+Compilateur assigne statiquement chaque instruction à un groupe d'alu. Un groupe ne peut être allouer à plus d'une instruction
+
+1) Un groupe est fétché et mapped sur les ALUs
+2) Chaque instruction dans le groupe est écrite dans les buffers d'instructions ( ~ station de réservations)
+3) Lecture des opérandes dans le banc de registres et placement des opérandes dans les alus.
+4) Execution de l'instruction
+5) Une fois que l'execution est terminé, le résultat est renvoyé vers l'alu consomatrice. (Ou vers le banc de registres)
+
+Destination encodé explicitement dans l'instruction
+
+6) Lorsque tte les instructions d'un groupe sont finis => commit : update de la mémoire
+7) Le groupe est libéré des ALUs
+8) Mappage du prochain groupe ...
+
+Il existe un branch register pour les résultats des branchements.
+
+Avantage
+--------
+-> Peu de structures larges impliqué dans l'execution (càd non centralisé, pas de fenêtre de lancement associative, pas de table de renommage de registres, peu d'accès en lecture et écriture simultané)
+-> Execution désordonnée (sans vérification de dépendance large, diffusion des bypass, réseau dédié au forward)
+
+Implémentation
+--------------
+
+ICACHEM -- REG --- REG --- REG --- REG
+            |  \ /  |  \ /  |  \ /  |
+            |  / \  |  / \  |  / \  |
+ICACHE --- ALU --- ALU --- ALU --- ALU --- DCACHE
+            |  \ /  |  \ /  |  \ /  |
+            |  / \  |  / \  |  / \  |
+ICACHE --- ALU --- ALU --- ALU --- ALU --- DCACHE
+            |  \ /  |  \ /  |  \ /  |
+            |  / \  |  / \  |  / \  |
+ICACHE --- ALU --- ALU --- ALU --- ALU --- DCACHE
+            |  \ /  |  \ /  |  \ /  |
+            |  / \  |  / \  |  / \  |
+ICACHE --- ALU --- ALU --- ALU --- ALU --- DCACHE
+
+          BLOC TERMINAISON ET TERMINAISON
+
+
+ALU rangé en matrice de n*m cases.
+Le bloc de terminaison détermine quel groupe d'instructions est mappé et quand celui-ci à terminé (dc commit)
+Chaque alu contient 
+ * des ports d'entrée pour les opérandes
+ * des buffers d'instructions et d'opérandes
+ * un routeur pour délivrer les résultats vers les ports de sorties
+Un prédicteur de branchement va prédire le succès de ce blocs et va fetché et mappé sur la grille le bloc suivant.
+
+Caractéristique influencant les performances :
+- Organisation des ALUs (nombre et position)
+- la latence du réseau d'unterconnection d'un noeud
+- le nombre d'I/O de chaque noeud
+
+Alternatives
+------------
+* Changer le design du réseaux de grille : Préreservations du flow, découpage du message, 
+* Chgt du système mémoire : Format d'instruction compressé, envoyant ce code compréssé au L1. Dcache ~ fifo pour maintenir la cohérence => Utilisation de technique de spéculation.
+* Spéculation de grille
+* Management des frames : Execution de multi thread, thread spéculatif 
+
+
+@article{2002_mukherjee,
+  title={{The Alpha 21364 network architecture}},
+  author={Mukherjee, SS and Bannon, P. and Lang, S. and Spink, A. and Webb, D.},
+  journal={Micro, IEEE},
+  volume={22},
+  number={1},
+  pages={26--35},
+  year={2002}
+}
+@article{2002_tendler,
+  title={{POWER4 system microarchitecture}},
+  author={Tendler, J.M. and Dodson, J.S. and Fields Jr, J.S. and Le, H. and Sinharoy, B.},
+  journal={IBM Journal of Research and Development},
+  volume={46},
+  number={1},
+  pages={5--25},
+  year={2002}
+}
+@Article{2002_ungerer,
+  author = 	 {T. Ungerer and 
+                  B. Robic   and
+                  J. Silc },
+  title = 	 {Multithreaded processors},
+  journal = 	 {The Computer Journal},
+  year = 	 {2002},
+  OPTkey = 	 {},
+  OPTvolume = 	 {45},
+  OPTnumber = 	 {3},
+  OPTpages = 	 {320-348},
+  OPTmonth = 	 {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+17/02/2005
+
+Contrainte de la conception d'un proc multi thread :
+ - Différente logique pour le calcul d'adresse
+ - Les threads doivent avoir une espaces d'adressage commun
+ - Extraction de thread de manière hardware ou software (compilo)
+
+-> implicite multi threading : Chaque architecture va executer de manière concurrentiel différent thread d'un même programme séquentiel (predication de branchement etc...)
+-> explicite multi threading : Execution d'un flots multi programmé
+
+But principal -> recouvrir la latence d'un thread par l'execution d'un autre.
+
+
+Mécanisme minimal :
+- Plusieurs PC
+- Mécanisme pour commuter les threads
+  |-> Potentiellement avoir plusieurs banc de registres permet d'augmenter la commutation
+
+3 approches :
+- multithreading imbriqué  (FMT) : Changement de thread à chaque cycle
+- multithreading bloqué    (VMT) : Changement de thread à chaque évenement (evt induiant une latence => ex div, miss etc ...)
+- multithreading simultané (SMT) : Plusieurs threads actifs en même temps
+
+Fine graine MT
+~~~~~~~~~~~~~~
+L'imbrication de plusieurs threads va limiter la perf de chaque thread
+ -> technique "dependance lookahead" : ajout de bits à chaque inst dans l'isa pour déterminer combien d'inst suivant n'a pas de dépendance avec celle-ci
+ -> technique d'imbrication : chgt de thread à chaque cycle
+
+Diverses "astuces" : Cray-MTA à au moins 128 contextes afin de masquer la latence de la mémoire étant de 128 cycles (Changement de contexte à chaque cycle)
+
+Coarse graine MT
+~~~~~~~~~~~~~~~~
+
+=> Execution d'un thread jusqu'a ce qu'une condition de changement de contexte est atteinte :
+
+ -> Modèle statique
+     -> Chgt explicite (Par instr "switch" ou une instruction "taggé")
+     -> Chgt implicite (Sur load, store, branch etc ...)
+ -> Modèle dynamique
+     -> Chgt sur miss de cache
+     -> Chgt sur evenement (interruption, trap ...)
+     -> Chgt sur profil d'utilisation (trop de chargemement (ou pas accès) etc ...)
+     -> Chgt conditionnel (instruction de switch conditionnelle)
+
+Un plus petit nombre de threads est nécessaire pour atteindre de bonne performance.
+-> Pénalisation d'un thread remplicant souvent la condition de changement de contexte
+
+Avantage de Modèle statique -> le changement de contexte peut être détecter tôt dans le pipeline (Voir tjs dans le même étage).
+
+Simultaneous MT
+~~~~~~~~~~~~~~~
+FMT et CMT sont très performant pour des processeurs scalaire ou VLIW (un flut d'instruction)
+
+L'unité d'IFETCH peut être partagé par plusieurs threads, (Dans ce cas on augmente la probabilité d'aller chercher des instructions non spéculative). 
+De plus l'unité IFECTH peut choisir quel thread privilégié pour aller chercher ces instructions.
+
+ -> Partage de ressources : tous les thread partage un maximum de ressources (ifetch buffer, décodeur, banc de registres, fenêtre d'instruction etc ...)
+ -> Duplication de ressources : Chaque buffer interne appartient à un thread spécifique. Les étages internes peuvent être multiplexé ou dupliqué entre les threads.
+
+Priorité :
+ RR        : Round-Robin
+ ICOUNT    : La priorité est donné au thread ayant le moins d'instructions dans les étages decodes, rename et queue
+ BRCOUNT   : La priorité est donné au thread ayant le moins de branchement (donc le - spéculatif)
+ MISSCOUNT : La priorité est donné au thread ayant le moins de DCACHE miss
+ IQPOSN    : La priorité est donné au thread ayant les plus vieille instructions
+
+SMT peut aussi executer les deux chemins d'un branchement. 
+
+Diverses technique :
+~~~~~~~~~~~~~~~~~~~~
+
+- Division d'un thread en collection de tâches qui sont distribués dans les unités d'executions.
+  -> processeur de trace
+- Processeur "super-threadé" un pipeline d'execution/thread,  peut être alloué par le compilateur
+- dynamic multi threading processor : Création de threads de manière dynamique (sur appel de procédure et déroulement de boucle ...)
+- microthread -> Création d'un microthread de manière explicite => préfetech une donner, calculer en avance la condition de saut ...
+              -> Utilisation des threads "idle"
+- Execution des 2 branches d'un saut -> utilisation des threads "idle"
+                                     -> utilisation de la prédication
+
+Multi-threading et le temps réel
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-> Le chgt de contexte "rapide" est un avantage clé pour les systèmes temps réel.
+-> Le multi threading permet d'avoir la routine d'intérruption et le programme principale dans 2 threads du processeurs
+
+Chip multi processors
+---------------------
+Symetric multiprocessors (SMP) et le Distribued shared Memory multiprocessors (DSM) -> espace mémoire uniforme (UMA)
+un DSM peut également ne pas maintenir la propriété d'espace mémoire uniforme => Communication par passage de message
+
+Cohérence des caches par snooping (SMP) ou directory based (DSM).
+
+3 alternatives de CMP :
+ - mémoire partagé (SMP typique)
+ - L2 partagé
+ - L1 partagé
+partagé les niveaux de caches diminue le délai de communication iter-processeur. Plus d'espaces pour les threads
+
+@article{2003_koufaty,
+  title={{Hyperthreading technology in the netburst microarchitecture}},
+  author={Koufaty, D. and Marr, DT},
+  journal={Micro, IEEE},
+  volume={23},
+  number={2},
+  pages={56--65},
+  year={2003}
+}
+@article{2003_mcnairy,
+  title={{Itanium 2 processor microarchitecture}},
+  author={McNairy, C. and Soltis, D.},
+  journal={Micro, IEEE},
+  volume={23},
+  number={2},
+  pages={44--55},
+  year={2003}
+}
+@InProceedings{2003_sankaralingam,
+  author = 	 { Karthikeyan Sankaralingam   	  and
+                   Ramadass Nagarajan 	 and
+                   Haiming Liu 	 and
+                   Changkyu Kim 	 and
+                   Jaehyuk Huh 	 and
+                   Doug Burger 	 and
+                   Stephen W. Keckler 	 and
+                   Charles R. Moore},
+  title = 	 {Exploiting ILP, TLP, and DLP with the polymorphous TRIPS architecture},
+  OPTcrossref =  { ISBN:0-7695-1945-8},
+  OPTkey = 	 {},
+  OPTbooktitle = {Proceedings of the 30th annual international symposium on Computer architecture},
+  OPTpages = 	 {422-433},
+  OPTyear = 	 {2003},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {Volume 31 Issue 2},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {San Diego, California},
+  OPTmonth = 	 {May},
+  OPTorganization = {},
+  OPTpublisher = {ACM Press},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+01/02/2005
+
+Architecture polymorphe : TRIPS
+Peut être configuré pour différente granularité et types de parallélisme => Instruction level paralelism, Thread LP Data LP.
+
+Processeur : Soit on a un général-purpose microprocesseur qui sait tout ou alors on spécialise le processeur :
+ -> Bureautique, network, serveur, scientifique, graphique ou signaux digitaux.
+
+La spécialisation à un défaut :
+ -> Le processeur devient peut performant dans un domaine qui n'est pas sa spécialisation.
+
+Les CMP peuvent être vut de 2 manières :
+ -> Homogène   : Ensemble de processeurs identiques
+ -> Hétérogène : Regroupement de processeurs spécialisé -> mappage d'une application sur cet architecture ...
+    |-> Défauts : * Augmentation de la compléxité
+                  * Sous utilisation des ressources si un thread n'a pas besoin de la spécialité
+
+Une architecture polymorphique est capable de configurer le hard pour exécuter de manière efficace un large spectre d'applications.
+-> Approche synthétique : Utilisation de CMP à grain fin -> synthése de plusieurs éléments de calcul en une large entité logique.
+-> Approche partitionné : Utilisation de CMP à grain grossier => Partitionnement de l'entité la plus large pour exploiter le parrallélisme à grain fin.
+
+Une architecture polymorphe ne va pas surpasser une architecture dédié, mais devrait bien se comporter avec un large spectre d'application.
+
+TRIPS -> Architecture polymorphique, approche partitionné combiné avec un coeur de processeur en grille à grain grossier et avec un système  mémoire on chip adaptatif.
+Objectif -> Avoir un coeur d'architecture qui peut aussi bien être très large que minuscule (scalable)
+
+Architecture TRIPS
+------------------
+Architecture orienté blocs.
+Un programme compilé pour le TRIPS est partitionné en bloc large d'instruction avec un seul point d'entrée, sans boucle et plusieurs point de sorties
+Les blocs valide de manière atomique et les intérruptions sont "blocs précis". (Plus de décision au point de vue instruction mais au point de vue bloc)
+
+Compilateur est résponsable de l'allocation statique de chaque bloc d'instruction dans le le système (Dépendance explicite).
+
+Une opération de flot usuel du proc : Chgt d'un boc depuis la mémoire, chgt dans le moteur de calcul, execution,  reporter les resultats dans la mémoire, chgt d'un autre bloc ...
+
+-> TRIPS est constitué de 4 blocs de 16 coeurs polymorphe. Une grille de 32Ko de mémoire connecter en quadrillage, des ctrl mémoires distribué pour connecter de la mémoire externe.
+-> Chaque blocs est constitué de d'un tableau de noeud d'execution, Il y a un ICACHE L1 par ligne dans la matrice , et une partie du banc de registre par colonne. Sur chaque ligne (droite) il y a également un DCACHE L1. En dessous de la matrice il y a le block de logique de ctrl qui s'occupe du séquencement de ce bloc et de la sélection du prochain bloc. Les caches L1 sont connecté au cache L2 a l'aide d'un interconnect.
+
+-> Chaque noeud d'execution contient une IU, FPU, des stations de réservations, un routeur de connections I/O, un noeud est directement connecter avec ses plus proches voisins, mais peut communiquer avec n'importe quel noeud dans la matrice
+-> Chaque stations de réservations stocke des isntructions et 2 opérandes sources.
+
+3 types principaux de ressources :
+ * hardcoded (ressources utilisées dans tous les mode et non modfiable) ex : interconnect, unité d'execution, cache L1
+ * ressources utilisé dans tous les modes et modifiable
+ * ressources non nécessaires dans tous les modes et pouvant être désactivés.
+
+Gestion du ILP : D-morph
+------------------------
+-> La configuration D-morph traite les buffers d'instructions comme un large, distribué fenêtre de lancement d'instructions. Possibilé d'avoir de l'execution our-of-order
+Le buffer d'instruction doit fournir une large bande passante de chargement d'instruction, un contrôle aggréssif et une spéculation sur les données, une mémoire à faible latence et qui préserve les accès mémoires de manière séquentiels
+
+Vue des buffers comme en trois dimension (x,y sont les coordonées physique dans un bloc et z correspond au nombre de place d'instructions dans chaque noeuds d'ALU.
+Le compilateur va découper le code en hyperblock (morceau de code communicant dans un graphe en 3D et dont il n'y à qu'un net de sortie.) Mappage de ces blocs dans des frames. (Différents slots de buffers sur le même noeuds d'alu). Les A-frame est la zone contenant tous les frame mappant un hyperblock.
+
+Spéculation de Multiblock : Les A-frames vide vont spéculativement chargé et executé un hyperblock. Les A-frames sont traités de manière circulaire : Le buffer de tête étant le moins spéculatif
+
+Instruction fetching -> pc pointe sur les têtes d'hyperblocks. Prédiction sur le prochain hyperblock (et non sur la prochaine instruction). Hyperblock sont codés du style VLIW.
+Interface mémoire : Entrelacement des bancs mémoires -> accès simultané a des adresses non conflictuelles.
+Mémoire secondaire configure le réseau de bank comme un cache à accès non uniform.
+
+Résumé : Prédiction  de fin assuré, grande bande passante pour l'ifecth, Dcache partitioné, execution concourente d'hyperblock (avec le réenvoie des valeur d'interbloc), le Dmorph est capable d'utiliser le buffer d'instrcution comme une fenêtre de lancement out of order
+
+Gestion du TLP : T-morph
+------------------------
+-> fournit un mappage un contrôle pour les multi thread.
+SMT -> cache et unité d'execution sont partagé.
+
+2 stratégies : 
+ - processeurs de lignes -> Partage la matrice d'ALU, en alloue une ou plusieurs lignes par threads. -> chaque thread à un nombre de  ICACHE et un DCACHE proportionnel au nombre de lignes alloué. Attention : La distance du banc de registre n'est pas uniforme (pénalise les lignes inférieurs)
+ - processeurs de frames -> Partage le processeur par un ensemble de frames
+
+|-> Les frames sont partagé entre thread. Un l'intérieur d'un thread, les frmae peuvent être spéculatif (cf D-morph)
+|-> T-morph maintient n PC et n historique de banc de registres
+
+Gestion du DLP : S-morph
+------------------------
+TRIPs est principalement prévut pour les flots multimédia et les calculs scientifiques => contient beaucoup de parrallélisme a niveau donnée
+
+-> fusion des Aframe pour un Super Aframe => Les boucles sont déroullées
+-> mapping reuse : un bloc est gardé dans les stations de réservations pour être utilisé plusieurs fois
+-> Dans les caches, ajout d'une fonctionnalité DMA
+@InProceedings{2004_chaudhuri,
+  author = 	 {Mainak Chaudhuri   and
+                  Mark Heinrich},
+  title = 	 {SMTp: An Architecture for Next-generation Scalable Multi-threading},
+  OPTcrossref =  {},
+  OPTkey = 	 {},
+  OPTbooktitle = {Proceedings of the 31st annual international symposium on Computer architecture},
+  OPTpages = 	 {124-136},
+  OPTyear = 	 {2004},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {0},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {München, Germany},
+  OPTmonth = 	 {},
+  OPTorganization = {},
+  OPTpublisher = {IEEE Computer Society},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+17/03/2005
+
+Modification d'uns SMT pour intégré un protocol de cohérence des threads afin de le placer dans un système à mémoire distribué (DSM).
+
+DSM sont scalable, mais s'ils n'utilisent pas de protocoles de snoop. Le directory based impose des structations de tableaux.
+
+Architecture
+------------
+
+Le processeur à une architecture classique :
+ 9 étages : fetch, decode, issue, lecture1, lecture2, exec, cache accès, commit
+fetch suit la politique ICOUNT (cf 1996\_tullsen)
+=> Il y a 2 threads. Tous est partagé sauf pile des adresses de retours, table de mappage, prédicteur dynamqiue
+
+Un noeud est séparé en deux parties :
+ - le coeur du proc
+ - le contrôlleur mémoire
+
+Le protocole de cohérence est lié à un thread. Celui-ci n'execute que cela (programme dédié donc n'est pas visible de l'extérieur). Il n'est pas aborder de solution dynamique (dès que la cohérence est nécessaire, un thread doit executer ce dernier)
+
+Afin d'éviter les deadlocks (applications tournants sur les threads et le threads gérant le protocole partagent les même ressources (file d'execution etc ...)), il y a des ressources dédié au threads executant le protocles des threads.
+
+Performance
+-----------
+3 limitations :
+- Le protocole de thread souffre de la latence du pipeline
+- Le nombre de registre entiers
+- Le DCACHE-L1 et les CACHE-L2 sont partagés entre les applications tounants sur les threads et le protocole de cohérences des threads
+
+@article{2004_dolbeau,
+  title={{CASH: Revisiting hardware sharing in single-chip parallel processor}},
+  author={Dolbeau, R. and Seznec, A.},
+  journal={Journal of Instruction-Level Parallelism},
+  volume={6},
+  pages={1--16},
+  year={2004}
+}
+@article{2004_kalla,
+  title={{IBM Power5 chip: a dual-core multithreaded processor}},
+  author={Kalla, R. and Sinharoy, B. and Tendler, JM},
+  journal={Micro, IEEE},
+  volume={24},
+  number={2},
+  pages={40--47},
+  year={2004}
+}
+@article{2004_kumar,
+  title={{Conjoined-Core Chip Multiprocessing}},
+  author={Kumar, R. and Jouppi, N.P. and Tullsen, D.M.},
+  journal={Proceedings of the 37th annual IEEE/ACM International Symposium on Microarchitecture},
+  pages={195--206},
+  year={2004},
+  publisher={IEEE Computer Society Washington, DC, USA}
+}
+
+@InProceedings{  2004_wang,
+  author = 	 {Nicholas J. Wang and
+		  Justin Quek      and
+                  Todd M. Rafacz   and 
+                  Sanjay J. Pate},
+  title = 	 {Characterizing the Effects of Transient Faults on a High-Performance Processor Pipeline},
+  OPTcrossref =  {In the Proceedings of the 2004 International Conference on Dependable Systems and Networks},
+  OPTkey = 	 {},
+  OPTbooktitle = {},
+  OPTpages = 	 {},
+  OPTyear = 	 {2004},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {Florence , ITALY},
+  OPTmonth = 	 {june},
+  OPTorganization = {},
+  OPTpublisher = {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+30/11/2004
+
+Moins de 15 \% des corruptions binaires sont visibles du logiciel, des techniques simples d'overhead diminues de 75\% des fautes.
+
+D'ou viennent les fautes :
+ - Sources externe (pulsation electro magnétique)
+ - Sources interne (fuite, bruit da'alimentation ...)
+
+Pour caractériser ses fautes, ils ont définit un modèle de processeur :
+ - ISA alpha
+ - Superscalaire, ordonnacement dynamique (à 32 entrées)
+ - execution spéculative
+ - prédiction des dépendances mémoires
+ - 12 étages de pipelines
+ - 6 inst lancées/cycle
+
+4 types d'erreurs :
+ - Correspondances à un état de la micro architecture
+ - Arret prématuré de la tâche
+ - Corruption d'une donnée
+ - Rien sur le comportement
+
+85\% des fautes sont masqués
+ 3\% sont invisibles
+12\% réalise une execution erronée
+
+=> Les registres visibles sont les plus vulnérables
+
+Types d'erreurs dut à une execution erronnée :
+ - Inconsistence du banc de registres
+ - Inconsistence mémoire
+ - deadlock ou livelock
+ - Accès à une page virtuel invalide (Inst ou data)
+ - Part en exception
+ - Réalise une instruction non demandé
+ 
+Mécanisme de protection :
+ - Timeout => Evite les lock
+ - Code correcteur d'erreur => sur le banc de registres et sur le pointeur de ce banc (register renaming)
+ - Bit de parité => sur le registre IP (il traverse tous le pipeline)
+@article{2005_kongetira,
+  title={{Niagara: a 32-way multithreaded Sparc processor}},
+  author={Kongetira, P. and Aingaran, K. and Olukotun, K.},
+  journal={IEEE Micro},
+  volume={25},
+  number={2},
+  pages={21--29},
+  year={2005}
+}
+@article{2005_mcnairy,
+  title={{Montecito: a dual-core, dual-thread Itanium processor}},
+  author={McNairy, C. and Bhatia, R.},
+  journal={Micro, IEEE},
+  volume={25},
+  number={2},
+  pages={10--20},
+  year={2005}
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/common/bibliographie.bib
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/common/bibliographie.bib	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/common/bibliographie.bib	(revision 30)
@@ -1214,5 +1214,5 @@
 @article{2000_barroso,
   title={{Piranha: a scalable architecture based on single-chip multiprocessing}},
-  author={Barroso, L.A. and Gharachorloo, K. and McNamara, R. and Nowatzyk, A. and Qadeer, S. and Sano, B. and Smith, S. and Stets, R. and Verghese, B.},
+  author={Barroso, L.A. and al.},
   journal={Proceedings of the 27th annual international symposium on Computer architecture},
   pages={282--293},
Index: unk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/01_abstract.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/01_abstract.tex	(revision 20)
+++ 	(revision )
@@ -1,2 +1,0 @@
-\section{Résumé}
-Dans ce document nous allons aborder l'incidence du partage des caches de niveau 1, de la partie opérative et de la partie exécutive d'un processeur. Ceci n'est qu'une étude de performance en terme d'exécution, mais nous pouvons en déduire que le partage des caches fait perdre 10\% de performances, le partage de la partie exécutif n'influe que légèrement, à l'opposé de la partie opérative qui fait chuter les performances de 2,7 entre un CMP de degré 4 et un SMT de même degré.
Index: unk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/02_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/02_introduction.tex	(revision 20)
+++ 	(revision )
@@ -1,9 +1,0 @@
-\section{Introduction}
-
-De nos jours, la capacité d'intégration augmente. Un concepteur possède un ``tas'' de transistors toujours plus grand à sa disposition. L'objectif des vingt dernières années étaient d'avoir un processeur monolithique pouvant extraire le plus d'ILP (Instruction Level Parallelism) possible. Les études de David W. Wall \cite{1991_wall} montre que le parallélisme moyen est de 3-5 instructions. Les mono processeurs de la fin du XX ème siècles comme le MipsR10000 \cite{1996_yeager}, l'alpha 21264 \cite{1998_kessler}, le pentium 4 \cite{2001_hinton} ou encore l'Itanium et l'Itanium 2 d'Intel \cite{2000_sharangpani}, \cite{2003_mcnairy} exploitent tous fortement l'ILP. Dans le même laps de temps des systèmes CMP (Chip Multi Processors) émergeaient. Ils consistent en plusieurs processeurs exploitant faiblement l'ILP. Mais le système d'exploitation peut alors exécuter plusieurs tâches simultanément. Ces CMP exploitent le TLP (Thread Level Parallelism). Dans cette catégorie nous pouvons citer le piranha de Compaq \cite{2000_barroso}, l'Hydra de Stanford \cite{2000_hammond}. On peut également citer le Power4 \cite{2002_tendler} ou l'alpha 21364 \cite{2002_mukherjee} qui sont des processeurs monolithiques mais étant conçut pour être intégrer dans un environnement multi-processeur.
-
-En prenant en compte la sous exploitation des ressources internes des processeurs mono-core, une autre voie pour exploiter le TLP à émerger. Elle consiste à intégrer non pas un mais plusieurs contextes par core. Ceci est la technique du Multi-threading et de sa variante le SMT (Simultaneous multi threading). C'est principalement les travaux de recherches de l'équipe de Tullsen \cite{1998_tullsen}, \cite{1996_tullsen}. Pour un ajout minime en surface (une duplication de quelques registres d'état, des multiplexeurs ...), nous pouvons avoir des processeurs mono-core multi-thread. Ceci à vu l'apparition du Pentium 4 Hyper-Threading d'inter \cite{2003_koufaty} (ajoutant de 5\% en surface pour un gain de performance de 30\%). 
-
-Il y a deux grandes lignes de conduites : Les ressources sont soit totalement dédiés à une tâches (cas des CMP classique), soit totalement partagés entre plusieurs tâches (cas des SMT). Entre ces deux voies, nous pouvons faire varier le degré de partage des ressources entre les tâches. C'est à dire que les ressources internes d'un core ne sont partagées de manière uniformes entre tous les threads. Ils y a alors l'émergence de CMP de SMT. Le POWER 5 \cite{2004_kalla} est un dual-core où chaque core est SMT de degré 2. De même pour le montecito d'Intel \cite{2005_mcnairy}. Alors que le Niagara de Sun intègre 8 cores de CMT (Corse Grain Multi Threading) de degré 4 \cite{2005_kongetira}.
-
-L'objectif de ce papier est d'analyser en terme de performance le partage des ressources d'un processeur. Pour cela, nous allons voir dans la section \ref{experimentations} les expérimentations que nous allons réaliser, ainsi que celles qui ont déjà été réalisé. Dans la section \ref{methodologie} nous allons montrer nos hypothèse de travail. Suivit d'une section interprétant les résultats.
Index: unk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/03_experimentation.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/03_experimentation.tex	(revision 20)
+++ 	(revision )
@@ -1,79 +1,0 @@
-\section{Experimentations}\label{experimentations}
-Le SMT est une solution Bas coût d'obtenir une SMT. Elle à aussi l'avantage de tirer profit des systèmes Single Thread. Car Comme les ressources sont intégralement partagé, s'il n'y a qu'un seul thread à exécuter, il pourra utiliser l'intégralité des ressources du processeur. Avoir plusieurs threads exécutable parallèlement permet de mieux exploiter les ressources du processeur.
-
-Malheureusement cette solution à deux problèmes importants. Le premier est que comme les threads sont en compétition pour obtenir les ressources, la rapidité d'exécution d'un thread dépend des autres thread en compétition. Par exemple si tous les threads font des accès mémoires fréquents, l'unité mémoire va rapidement saturée. Le deuxième problème étant la pollution des ressources partagées. Les meilleurs exemples sont les caches et la BTB (Branch Target Buffer). Suivant les activités des autres threads, des lignes de caches peuvent être désallouées à un thread en faveur à un autre même s'il elle lui était utile. De plus les actions comme le prefetch ou la prédiction de branchement risque de privé des threads de lignes utiles contre une hypothétique ligne utile pour le thread bénéficiaire.
-
-Pour ces raisons, nous allons faire varier le degré de partage des ressources. Des travaux équivalent ont été réalisé. Dans \cite{2004_dolbeau}, ils étudient l'influence du partage des des unités à latence longue (multiplication, division ...), du prédicteur de branchement, ainsi que des caches Instructions et Données. Pour ce faire, ils ont implémentés l'architecture {\bf CASH} (CMP And SMT Hybrid) qui consiste en 4 cores. Dans un autre article, \cite{2004_kumar}, il y a une étude en terme de performance d'exécution mais également en terme de surface du partage des unités flottantes, des ports du crossbar reliant les Caches à la mémoire et des caches instructions et données. Ici l'équipe de Tullsen à valider leur hypothèses sur un système à 8 cores. Le partage des ressources ce fait entre deux cores voisins.
-
-Notre approche consiste à tester l'incidence du partage des caches, des Unités d'exécutions et du Front End et Back end (Que les threads se partage tous les ressources qui ne sont pas les unités d'exécutions).
-
-Nous nommons les partages comme suit :
-\begin{description}
-\item[Cluster :] Les clusters ce partage les caches de niveaux 2 et les unités d'exécutions.
-\item[Unité de lancement :] Les unités d'exécutions ce partage les ports des caches de niveaux 1 et les unités d'exécutions.
-\item[Contexte :] Les contextes ce partages l'accès au décodeur, au Icache et au prédicteur de branchement.
-\end{description}
-
-L'expérimentation ce fait avec le générateur de processeur MORPHEO (acronyme de ``Multi ORganisation for a Processor HEterogeneous and Open''). Une vue d'ensemble de l'architecture résultante peut être vue dans la figure \ref{MORPHEO_overview}. 
-
-\printgraph{MORPHEO_overview}{0.45}{MORPHEO - Vue d'ensemble}
-
-Notre allons analyser l'incidence du partage des ressources au niveau Cluster, UL et Contexte dans un système à 4 Threads, pouvant lancer à chaque cycle 8 instructions. Trois tableaux résument les caractéristiques communes de chaque instance ainsi que les paramètres spécifiques pour les configurations avec 1,2 et 4 cores (nous définissons un core une UL ou un cluster). Le troisième résument le systèmes mémoires
-
-\begin{center}
-\begin{tabular}{|l|c|}
-  \hline
-  \multicolumn{2}{|c|}{Caractéristiques communes}               \\
-  \hline
-  Unité d'exécutions                           & 8              \\
-  Profondeur des Stations de Réservations      & 4		\\
-  Nombre de branchements spéculés              & 8 		\\
-  Return Address Stack                         & 16		\\
-  Réseau de bypass                             & Complet        \\
-  Nombre de port de lecture                    & 12		\\
-  Nombre de port d'écriture                    & 8		\\
-  \hline
-\end{tabular}
-\end{center}
-
-\begin{center}
-\begin{tabular}{|l|ccc|}
-  \hline
-  \multicolumn{4}{|c|}{Caractéristiques spécifiques}            \\
-  \hline
-                                               & 1 core		& 2 cores	& 4 cores	\\
-  \hline
-  Largeur du pipeline                          & 8 		& 4 		& 2 		\\
-  Taille - Ifetch\_queue                       & 8 		& 4 		& 2 		\\
-  Taille - Issue queue                         & 32		& 16 		& 8 		\\
-  Taille - Re Order Buffer                     & 128		& 64 		& 32  		\\
-  Taille - autres                              & 16		& 8 		& 4  		\\
-  Largeur des fenêtres                         & 16		& 8 		& 4 		\\
-  Branch Target Buffer                         & 256	        & 128 	        & 64 	        \\
-  Méta prédicteur                              & 16k		& 8k		& 4k		\\
-  Banc de Registres                            & 256        	& 128      	& 64      	\\
-  \hline
-\end{tabular}
-\end{center}
-   
-\begin{center}
-\begin{tabular}{|l|cc|}
-  \hline
-  \multicolumn{3}{|c|}{Caractéristiques du système mémoire}\\
-  \hline
-	                     & L1          & L2             \\
-	                     & I/D séparé  & unifié         \\
-	\hline
-	Taille               & 8 ko        & 2 Mo           \\
-	Nombre de lignes     & 128*        & 16k            \\
-	Nombre de mots/ligne & 16          & 32             \\
-	Associativité        & 4 voies     & 4 voies        \\
-	Latence - Hit        & 2 cycles    & 6 cycles       \\
-	Pénalités - Miss     & 4 cycles    & 100 cycles     \\
-  \hline
-\end{tabular}
-\end{center}
-
-(Le nombre de lignes du premier niveau de cache est divisé par le nombre de cluster).
-
-Nous allons maintenant voir la méthodologie de test.
Index: unk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/04_methodologie.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/04_methodologie.tex	(revision 20)
+++ 	(revision )
@@ -1,38 +1,0 @@
-\section{Méthodologie}\label{methodologie}
-
-\subsection{Charge de travails}
-
-Dans un premier temps, nous avons sélectionné 6 benchmarks parmi les SPECINT2000 (164.gzip, 175.vpr, 181.mcf, 255.vortex, 256.bzip2, 300.twolf). Nous ne les avons pas tous sélectionnée afin de ne pas avoir trop de simulations à effectuer et car tous les benchmarks ne fonctionnes pas (problème de compatibilité avec gcc 4 et avec notre modèle).
-
-
-Le nombre de software soumit au architecture est décrite par la combinaison $C_{nb\_benchmarks}^{nb\_threads}$. Comme le nombre de benchmark est de 6 pour 4 threads possible, nous obtenons une charge de travails composée de 15 simulations.
-
-Pour les libraries standard (libc et libm) ainsi que les fonctions bas niveaux (read, write, open, close ...) qu'un système d'exploitation ce doit d'offrir, nous utilisons la librairie {\it Newlib}.
-
-\subsection{Simulation}
-
-Pour les simulations, nous avons prit 14 instances de notre modèle. Elle sont déterminer par le nombre de cluster (A), le nombre d'ULs de chaque cluster (B) et le nombre de contexte de chaque UL (C). De plus chaque UL n'a accès qu'a un sous ensemble distinct d'ALUs. Le nombre d'ALUs accessible par un core est définit par la taille du groupe (D).
-
-Si E=A*B*C, nous nommerons une instance x$E$\_$A$\_$B$\_$C$-$D$. Le tableau suivant récapitules toutes les instances que nous avons sélectionnés.
-
-\begin{tabular}{ccccc}
-Nom          & Cluster & UL & Contexte & Taille groupe d'ALUs\\
-x4-1\_1\_4-8 & 1       & 1  & 4        & 8\\
-x4-1\_2\_2-8 & 1       & 2  & 2        & 8\\
-x4-1\_2\_2-4 & 1       & 2  & 2        & 4\\
-x4-1\_4\_1-8 & 1       & 4  & 1        & 8\\
-x4-1\_4\_1-2 & 1       & 4  & 1        & 2\\
-x4-2\_1\_2-8 & 2       & 1  & 2        & 8\\
-x4-2\_1\_2-4 & 2       & 1  & 2        & 4\\
-x4-2\_2\_1-8 & 2       & 2  & 1        & 8\\
-x4-2\_2\_1-4 & 2       & 2  & 1        & 4\\
-x4-2\_2\_1-2 & 2       & 2  & 1        & 2\\
-x4-4\_1\_1-8 & 4       & 1  & 1        & 8\\
-x4-4\_1\_1-4 & 4       & 1  & 1        & 4\\
-x4-4\_1\_1-2 & 4       & 1  & 1        & 2\\
-\end{tabular}
-
-Nous simulerons 110 millions de cycles. Les 10 premiers millions seront ignorés afin de ne pas dégrader les résultats avec des miss à froid des caches et des unités de spéculations. Pour chaque instance, nous prenons le nombre d'instructions exécutée des 15 simulations. Ce résultat est comparé à la moyenne des 6 benchmarks exécutés dans la version Single Thread du processeur (execution séquentiels des 6 benchmarks avec la même instance).
-
-Nous pouvons remarque que les instances ne vont pas être comparé entre eux par une instance de référence, mais serons comparer avec le speedup de la version MT par rapport à la version ST. Ceci à la bonne propriété d'avoir une borne maximal au speed up qui est le nombre de thread (ici 4). 
-
Index: unk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/05_resultat.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/05_resultat.tex	(revision 20)
+++ 	(revision )
@@ -1,51 +1,0 @@
-\section{Résultat}\label{resultat}
-
-La simulation nous fournit le graph \ref{simulation_all}
-
-\printgraphonly{simulation_all}{0.6}
-
-Première constatation simple : plus on dédicace les ressources, plus nous approchons du speed up maximal. La version du x4\_4\_1\_1-2 ne partage que les caches de niveau L2, et est donc une version CMP pure, atteint un speed up de 3,92. Alors que la version x4-1\_1\_4-8 qui est un SMT pur à un speed up de 1.46. 
-
-Attention dans l'interprétation des résultats, car ici nous ne comparons qu'en terme de performances l'incidence du partage des ressources matériels. Pour que l'étude soit complètes, nous devons aussi ajouté l'augmentation de la surface entre la version MT et la version ST et comparé alors le rapport entre l'augmentation de la performance sur le coût matériel.
-
-En terme de performance, il y a une speedup de 2,7 entre la version CMP et la version SMT. Si nous faisons une étude abstraite du coût en surface, le rapport de surface entre la version MT et ST de l'instance x4-4\_1\_1-2 est de 4. Si nous réutilisons les estimations d'Intel pour le Pentium 4 HT \cite{2003_koufaty} indiquant que l'ajout d'un Contexte est de 5\%, trois contextes de plus nous amène à 15\% soit un rapport de surface entre la version MT et ST de l'instance x4\_1\_1\_4-8 est de 1,15. Le rapport performance/surface pour la version CMP de degré 4 nous donnes 0,98 alors que la version SMT de degré 4 nous donnes 1,27.
-
-Pour le partage du cache, nous pouvons tirer enseignement des 3 instances suivantes :
-\begin{itemize}
-\item x4-4\_1\_1-2 avec 4 Icaches et Dcaches L1 de 2k chacun et accessible par un seul thread . Le speed-up de 3,92.
-\item x4-2\_2\_1-2 avec 2 Icaches et Dcaches L1 de 4k chacun et accessible par deux    threads. Le speed-up de 3,63.
-\item x4-1\_4\_1-2 avec 1 Icache  et Dcache  L1 de 8k chacun et accessible par quatre  threads. Le speed-up de 3,27.
-\end{itemize}
-
-Le partage du cache induit des conflits d'accès au port : dans le premier cas, il y a 4 ports d'accès au Icache de largeur de deux instructions. Alors que dans le troisième cas, il n'y a qu'un port de largeur de 8 instructions. Les paquets de 8 instructions permettent de mieux exploiter l'ILP mais moins le TLP : chaque contexte doit attendre 4 cycles avant de prendre un nouveau paquet. De plus, le partage du cache entraîne un effet de bord : le pourrissement du contenus du caches par les autres threads, et un allongements du temps de réponses des miss dut au plus grand nombre de miss et à la plus grande longueur des lignes. Le cache, optimisé pour être tirer partie de la localité spatiale et temporelles des instructions et des données ce retrouve confrontés à plusieurs flots.
-
-Enfin pour le partage de la partie exécutive, nous pouvons observé les instances suivantes :
-\begin{itemize}
-\item x4-2\_2\_1-2 où il y a 4 groupes de 2 ALUs et chacune est accessible par 1 Threads. Le speed-up est de 3.63.
-\item x4-2\_2\_1-4 où il y a 2 groupes de 4 ALUs et chacune est accessible par 2 Threads. Le speed-up est de 3.41.
-\item x4-2\_2\_1-8 où il y a 1 groupe  de 8 ALUs et         est accessible par 4 Threads. Le speed-up est de 3.38.
-\end{itemize}
-
-Le partage des unités d'exécutions n'influe que légèrement sur les performances. Les ressources sont plus utilisés, mais implique un effet de bord : elle augmente la sensibilité du aux erreurs de routages (envoie vers une ALUs surchargés alors que d'autres ALUs sont en famine). Ceci est également du à notre politique actuel qui est un round robin classique.
-
-Notons que dans le cas où il y a plus d'un contexte par core (x4-1\_2\_2-8 et x4-1\_2\_2-4 qui ont eu deux un speed-up de 2.37 alors que les instances x4-2\_1\_2-8 et x4-2\_1\_2-4 on un speed-up respectif de 2.51 et 2.4) le partage des unités d'exécutions est favorable. Ceci peut être expliquer par une bonne exploitation du TLP : la fenêtre de lancement est mieux exploiter et le réseau de routage à plus d'instruction à sa disposition. 
-
-% Il y a aussi une hétérogénéité des instructions longues.
-
-Pour le partage opérative, voyons les instances suivantes :
-\begin{itemize}
-\item x4-1\_1\_4-8, 1 cluster  possédant chacun 1 UL  avec 4 contextes chacun. Le speed-up est de 1.46.
-\item x4-1\_2\_2-8, 1 cluster  possédant chacun 2 ULs avec 2 contextes chacun. Le speed-up est de 2.37.
-\item x4-1\_4\_1-8, 1 cluster  possédant chacun 4 ULs avec 1 contexte  chacun. Le speed-up est de 2.94.
-\item x4-2\_1\_2-8, 2 clusters possédant chacun 1 UL  avec 2 contextes chacun. Le speed-up est de 2.51.
-\item x4-2\_2\_1-8, 2 clusters possédant chacun 2 ULs avec 1 contexte  chacun. Le speed-up est de 3.38.
-\item x4-4\_1\_1-8, 4 clusters possédant chacun 1 UL  avec 1 contexte  chacun. Le speed-up est de 3.94.
-\end{itemize}
-
-Le partage de la partie opérative donne des résultats très disparates et demande une analyse plus poussés des résultats. Nous pouvons noté qu'il y a une augmentation de la sensibilité des instructions de synchronisation et des instructions d'accès au registres spéciaux (car nous imposons qu'avant d'exécuter une instruction d'accès au registres spéciaux que le pipeline soit vide.)
-
-Tous comme une augmentation des miss de spéculations dut au partage du prédicteur de branchement. Ceci implique qu'il y a une augmentation de nombres des instructions inutiles dans le pipeline (dans x4-1\_1\_4-8 représente 6,12\% des instructions, alors qu'il ne représente que 2,17\% dans l'instance x4-4\_1\_1-8). Ceci est aussi dut à la largeur du pipeline et donc à la sous exploitation de L'ILP. Lors du décodage, nous choisissons de manière round robin la fetch queue contenant un paquet. Dans l'instance x4-4\_1\_1-8, 4 décodeurs décode chacun en moyenne 1,63 instruction sur des paquets de 2 instruction alors que dans l'instance x4-1\_1\_4-8, 1 décodeur prend un paquet de 8 instructions et en décodent en moyenne 3,7. Ceci est dut qu'un paquet d'instruction est aligné et à la présence de branchements.
-
-
-
-
Index: unk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/06_conclusion.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/06_conclusion.tex	(revision 20)
+++ 	(revision )
@@ -1,5 +1,0 @@
-\section{Conclusion}
-
-Cette étude à démontrer un fait déjà acquis, que le speedup entre la version MT et la version ST d'un processeur diminue avec l'augmentation du partage du ressource. 
-
-Notre modèle de processeur étant encore en cours de dévellopement, nous nous destinons à fournir un modèle VHDL synthétisable. Ainsi la prochaine étude porteras sur le coût surfacique du partage des ressources matériels et ainsi déterminer quel degré de partage apporte le meilleur ratio performance/surface.
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/root.tex	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/root.tex	(revision 30)
@@ -1,7 +1,308 @@
-\input{\dirroot/01_abstract}
-\input{\dirroot/02_introduction}
-\input{\dirroot/03_experimentation.tex}
-\input{\dirroot/04_methodologie.tex}
-\input{\dirroot/05_resultat.tex}
-\input{\dirroot/06_conclusion.tex}
+\begin{abstract}
+Dans ce document nous allons étudier l'incidence du partage par les contextes matériels d'un processeur, de ces caches de niveau 1, de sa partie opérative et de sa partie exécutive. 
+Il s'agit d'une étude de performance, en terme d'exécution, utilisant les benchmarks SPECINT2000.
+Nous montrons que le partage de la partie exécutive n'a que peu d'incidence sur les performances, alors que le partage des caches fait perdre 10\% de performances et que le partage de la partie opérative fait tomber les performances d'un facteur de 2,7 entre un CMP de degré 4 et un SMT de même degré. 
+
+\end{abstract}
+
+%------------------------------------------------------------------------- 
+\Section{Introduction}
+
+De nos jours, la capacité d'intégration augmente. 
+Un concepteur possède un ``tas'' de transistors toujours plus grand à sa disposition. 
+L'objectif des vingts dernières années était d'avoir un processeur monolithique pouvant extraire des programmes le plus d'ILP (Instruction Level Parallelism) possible. 
+Les études de David W. Wall \cite{1991_wall} montre que l'ILP moyen dans un programme est de 3-5 instructions.
+Les mono-processeurs de la fin du XX ème siècles comme le MipsR10000 \cite{1996_yeager}, l'Alpha 21264 \cite{1998_kessler}, le Pentium 4 \cite{2001_hinton} ou encore l'Itanium 1 et 2 d'Intel (\cite{2000_sharangpani}, \cite{2003_mcnairy}) exploitent tous fortement l'ILP. 
+
+Dans le même laps de temps des systèmes CMP (Chip Multi Processors) firent leur apparition. 
+De telles puces peuvent exécuter plusieurs tâches simultanément. 
+Ces CMP exploitent le TLP (Thread Level Parallelism). 
+Dans cette catégorie nous pouvons citer le piranha de Compaq \cite{2000_barroso}, l'Hydra de Stanford \cite{2000_hammond}. 
+On peut également citer le Power4 \cite{2002_tendler} ou l'Alpha 21364 \cite{2002_mukherjee} qui sont des processeurs monolithiques mais conçus pour être intégrés dans un environnement multiprocesseur. 
+
+L'exploitation de l'ILP de manière aggressive, (prédiction de branchement, lancement désynchronisé) entraine une sous exploitation des ressources internes des processeurs. 
+Une technique consiste en l'éxecution de plusieurs contextes par coeur de processeur en exploitant le TLP. 
+Ceci est la technique du Multi-threading et de sa principale variante le SMT (Simultaneous multi threading).
+C'est l'objet des travaux de recherches de l'équipe de Tullsen \cite{1996_tullsen}, \cite{1998_tullsen}. 
+Pour un ajout minime en surface (une duplication de quelques registres d'état, ajout de multiplexeurs pour sélectionner un contexte... ), nous pouvons avoir des processeurs mono-coeur multi-thread. 
+Cette technique est exploitée dans le Pentium 4 Hyper-Threading d'Intel \cite{2003_koufaty} (ajout de 5\% en surface pour un gain de performance de 30\%). 
+ 
+Il y a deux grands axes de recherches : 
+\begin{enumerate}
+\item le CMP où chaque thread s'execute sur un coeur spécifique. 
+ L'intégralité des ressources d'un coeur est mit à la disposition d'un thread. 
+ Les ressources internes du coeur sont dédiées à un thread. 
+
+\item le SMT où tous les threads s'éxecutent dans un unique coeur. 
+ Tous les threads entrent en compétition pour l'obtention des ressources d'un coeur. 
+ Les ressources internes du coeur sont partagées entre plusieurs threads
+\end{enumerate}
+Entre ces deux axes, il y a une multitude de variation du degré de partage des ressources entre les tâches. 
+Ceci a pour conséquence l'émergence de CMP de SMT (plusieurs coeurs multi contexte). 
+Le POWER 5 \cite{2004_kalla} est un bi-coeurs où chaque coeur est SMT de degré 2. 
+De même pour le montecito d'Intel \cite{2005_mcnairy}. 
+Alors que le Niagara de Sun intègre 8 coeurs de CMT (Corse Grain Multi Threading) de degré 4 \cite{2005_kongetira}. 
+
+L'objectif de ce papier est d'analyser les performances d'exécution entre plusieurs partages des ressources d'un processeur. 
+Pour cela, nous allons voir dans la section \ref{experimentations} les expérimentations que nous avons réalisées, ainsi que celles qui ont déjà été effectuées. 
+Dans la section \ref{methodologie} nous allons montrer nos hypothèses de travail. 
+Enfin une section où nous allons interpréter les résultats. 
+
+%------------------------------------------------------------------------- 
+\Section{Expérimentations}\label{experimentations}
+Le SMT est une solution faible-coût pour obtenir un processeur MT (multi-thread). 
+Les ressources sont intégralement partagées, dans le cas où il n'y a qu'un seul thread à exécuter, ce dernier pourra utiliser l'intégralité des ressources du processeur. 
+ 
+Malheureusement cette solution à deux problèmes importants. 
+ 
+Le premier est que la rapidité d'exécution d'un thread dépend des autres threads. 
+Ceci est dut à la compétition entre les threads pour obtenir les ressources. 
+Par exemple si tous les threads font des accès mémoires fréquents, l'unité mémoire va rapidement saturer. 
+ 
+Le deuxième problème est la pollution des ressources partagées.
+Les meilleurs exemples sont les caches et le Buffer des destinations de branchement (BTB). 
+La gestion du SMT peut être gérer de manière très simple en concaténant le numéro du thread l'adresse de l'instruction ou de la donnée.
+Dans ce cas, le cache peut évincer des lignes très utiles d'un thread au profit de lignes d'autres threads.
+ %De plus les actions comme le prefetch ou la prédiction de branchement risque de priver des threads de lignes utiles contre une hypothétique ligne utile pour le thread bénéficiaire. 
+
+Nous allons faire varier le degré de partage des ressources. 
+Des travaux équivalents ont été réalisés. 
+Dans \cite{2004_dolbeau}, ils étudient l'influence du partage des unités à latence longue (multiplication, division...), du prédicteur de branchement, ainsi que des caches Instructions et Données. 
+Pour ce faire, ils ont implémentés l'architecture {\bf CASH} (CMP And SMT Hybrid) qui consiste en 4 coeurs ce partageant les ressources cités. 
+Dans un autre article, \cite{2004_kumar}, il y a une étude en terme de performance d'exécution mais également en terme de surface. 
+Les blocs concernés sont les unités flottantes, les caches de premiers niveaux, et enfin les ports du crossbar reliant les Caches à la mémoire.  
+Ici l'équipe de Tullsen à validée leurs hypothèses sur un système à 8 coeurs. 
+Le partage des ressources ce fait entre deux coeurs voisins. 
+
+Leurs résultats ainsi que ceux que nous obtenons sont compatibles entre eux. 
+
+Notre approche consiste à tester l'incidence du partage des caches, des Unités d'exécutions et de la partie opérative. 
+
+Nous nommons les partages comme suit :
+\begin{description}
+\item[Cluster            :] Les clusters ce partage les caches de niveaux 2 et les unités d'exécutions. 
+\item[Unité de lancement :] Les unités de lancement ce partage les ports des caches de niveaux 1 et les unités d'exécutions. 
+\item[Contexte           :] Les contextes se partagent l'accès au décodeur, au Icache et au prédicteur de branchement. 
+\end{description}
+
+L'expérimentation ce fait avec le générateur de processeur Morpheo (acronyme de ``Multi ORganisation for a Processor HEterogeneous and Open''). 
+Une vue d'ensemble de l'architecture résultante est donnée dans la figure \ref{MORPHEO_overview}. 
+
+\begin{figure}[h] 
+  \begin{center}
+    \resizebox{8cm}{!}{
+      \includegraphics{\dirschema/MORPHEO_overview.eps}}
+    \caption{\label{MORPHEO_overview}MORPHEO - Vue d'ensemble}
+  \end{center} 
+\end{figure}
+
+Notre allons analyser l'incidence du partage des ressources au niveau Cluster, UL et Contexte dans un système à 4 Threads, pouvant lancer à chaque cycle 8 instructions. 
+Trois tableaux résument les caractéristiques communes de chaque instance ainsi que les paramètres spécifiques pour les configurations avec 1,2 et 4 coeurs. 
+(nous définissons un coeur étant équivalent à une UL). 
+Le troisième tableau résume le système mémoire. 
+
+\begin{table}[h]
+\begin{center}
+\begin{tabular}{|l|c|}
+  \hline
+  Unité d'exécutions                           & 8              \\
+  Profondeur des Stations de Réservations      & 4		\\
+  Nombre de branchements spéculés              & 8 		\\
+  Return Address Stack                         & 16		\\
+  Réseau de by-pass                            & Complet        \\
+  Nombre de port de lecture                    & 12		\\
+  Nombre de port d'écriture                    & 8		\\
+  \hline
+\end{tabular}
+\end{center}
+ \caption{Caractéristiques communes}
+\end{table}
+
+\begin{table}[h]
+\begin{center}
+\begin{tabular}{|l|ccc|}
+  \hline
+                                               & 1 coeur 	& 2 coeurs      & 4 coeurs	\\
+  \hline
+  Largeur du pipeline                          & 8 		& 4 		& 2 		\\
+  Taille-Ifetch\_queue                         & 8 		& 4 		& 2 		\\
+  Taille-Issue queue                           & 32		& 16 		& 8 		\\
+  Taille-ReOrder Buffer                        & 128		& 64 		& 32  		\\
+  Taille-Autres files                          & 16		& 8 		& 4  		\\
+  Largeur des fenêtres                         & 16		& 8 		& 4 		\\
+  Branch Target Buffer                         & 256	        & 128 	        & 64 	        \\
+  Méta prédicteur                              & 16k		& 8k		& 4k		\\
+  Banc de Registres                            & 256        	& 128      	& 64      	\\
+  \hline
+\end{tabular}
+\end{center}
+    \caption{Caractéristiques spécifiques}
+\end{table}
+
+\begin{table}[h]
+
+\begin{center}
+\begin{tabular}{|l|cc|}
+  \hline
+	                     & L1          & L2             \\
+	                     & I/D séparé  & unifié         \\
+	\hline
+	Taille               & 8 ko \footnote{divisé par le nombre de cluster}  & 2 Mo           \\
+	Nombre de lignes     & 128  \footnote{divisé par le nombre de cluster}  & 16k            \\
+	Nombre de mots/ligne & 16          & 32             \\
+	Associativité        & 4 voies     & 4 voies        \\
+	Latence - Hit        & 2 cycles    & 6 cycles       \\
+	Pénalités - Miss     & 4 cycles    & 100 cycles     \\
+  \hline
+\end{tabular}
+\end{center}
+ \caption{Caractéristiques du système mémoire}
+\end{table}
+
+%(Le nombre de lignes du premier niveau de cache est divisé par le nombre de cluster). 
+
+
+%------------------------------------------------------------------------- 
+\Section{Méthodologie}\label{methodologie}
+
+\subSection{Charge de travails}
+
+Dans un premier temps, nous avons sélectionné 6 benchmarks parmi les SPECINT2000 (164.gzip, 175.vpr, 181.mcf, 255.vortex, 256.bzip2, 300.twolf). 
+ %Nous ne les avons pas tout sélectionnés afin de ne pas avoir trop de simulations à effectuer et car tous les benchmarks ne fonctionnes pas (problème de compatibilité avec gcc 4 et avec notre modèle). 
+
+Chaque archtecture est soumise à une charge de travails composée de 15 simulations (Le nombre de simulations est décrit par la combinaison $C_{nb\_benchmarks}^{nb\_threads}$). 
+
+Pour les librairies standard (libc et libm) ainsi que les fonctions bas niveaux (read, write, open, close ...) qu'un système d'exploitation se doit d'offrir, nous utilisons la librairie {\it Newlib}. 
+
+\subSection{Simulation}
+
+Pour les simulations, nous avons pris 14 instances de notre modèle. 
+Elles sont déterminées par le nombre de cluster (A), le nombre d'ULs de chaque cluster (B) et le nombre de contexte de chaque UL (C). 
+De plus chaque UL n'a accès qu'a un sous-ensemble distinct d'ALUs. 
+Ce nombre définit la taille du groupe (D). 
+Nous nommons une instance X$E$\_$A$\_$B$\_$C$-$D$ avec E=A*B*C. 
+
+%Le tableau suivant récapitules toutes les instances que nous avons sélectionnées. 
+
+%
+%\begin{table}[h]
+%\begin{center}
+%\begin{tabular}{ccccc}
+%Nom          & Cluster & UL & Contexte & Taille groupe d'ALUs\\
+%X4-1\_1\_4-8 & 1       & 1  & 4        & 8\\
+%X4-1\_2\_2-8 & 1       & 2  & 2        & 8\\
+%X4-1\_2\_2-4 & 1       & 2  & 2        & 4\\
+%X4-1\_4\_1-8 & 1       & 4  & 1        & 8\\
+%X4-1\_4\_1-2 & 1       & 4  & 1        & 2\\
+%X4-2\_1\_2-8 & 2       & 1  & 2        & 8\\
+%X4-2\_1\_2-4 & 2       & 1  & 2        & 4\\
+%X4-2\_2\_1-8 & 2       & 2  & 1        & 8\\
+%X4-2\_2\_1-4 & 2       & 2  & 1        & 4\\
+%X4-2\_2\_1-2 & 2       & 2  & 1        & 2\\
+%X4-4\_1\_1-8 & 4       & 1  & 1        & 8\\
+%X4-4\_1\_1-4 & 4       & 1  & 1        & 4\\
+%X4-4\_1\_1-2 & 4       & 1  & 1        & 2\\
+%\end{tabular}
+%\end{center}
+% \caption{Instances sélectionnées}
+%\end{table}
+
+Chaque simulation ce fait sur 110 millions de cycles. 
+Les 10 premiers millions sont ignorés afin de chauffer les caches et les unités de prédictions. 
+Pour chaque instance, nous prenons le nombre d'instructions exécutées des 15 simulations. 
+Ce résultat est comparé à la moyenne des 6 benchmarks exécutés dans la version Single Thread du processeur (exécution séquentielle des 6 benchmarks avec la même instance). 
+
+Nous pouvons remarquer que les instances ne vont pas être comparées avec une instance de référence, mais seront comparées avec l'accéllération de la version MT par rapport à la version ST. 
+Ceci à la bonne propriété d'avoir une borne maximale à l'accélération qui est le nombre de thread (ici 4). 
+
+%------------------------------------------------------------------------- 
+\Section{Résultat}\label{resultat}
+
+La simulation nous fournit le graphe \ref{simulation_all}
+
+\begin{figure}[h] 
+  \begin{center}
+    \resizebox{8cm}{!}{
+      \includegraphics{\dirschema/simulation_all}}
+    \label{simulation_all}
+  \end{center} 
+\end{figure}
+
+Première constatation simple : plus on dédit les ressources, plus on approche de l'accélération maximale. 
+La version du X4\_4\_1\_1-2 ne partage que les caches de niveau L2, et est donc une version CMP pure, atteint une accélération de 3,92. 
+Alors que la version X4-1\_1\_4-8 qui est un SMT pur à une accélération de 1,46. 
+ 
+En terme de performance, il y a une accélération de 2,7 entre la version CMP et la version SMT. 
+Attention dans l'interprétation des résultats, car ici nous ne comparons qu'en terme de performances l'incidence du partage des ressources matérielles. 
+Pour que l'étude soit complète, nous devons aussi ajouter l'augmentation de la surface entre la version MT et la version ST. 
+Ensuite il faudrait comparer le rapport entre l'augmentation de la performance sur le coût matériel. 
+Nous pouvons néanmoins faire une étude abstraite du coût en surface. 
+Le rapport de surface entre la version MT et ST de l'instance X4-4\_1\_1-2 est de 4. 
+Ceci donne un rapport performance/surface pour la version CMP de degré 4 de 0,98. 
+Pour le SMT, nous réutilisons les estimations d'Intel pour le Pentium 4 HT \cite{2003_koufaty}.
+Trois contextes de plus nous amène à 15\% de surface en plus. 
+Ce qui donne un rapport de surface entre la version MT et ST de l'instance X4\_1\_1\_4-8 de 1,15. 
+Dans ce cas, le rapport performance/surface pour la version SMT de degré 4 nous donne 1,27. 
+Ce qui donne l'avantage à une implémentation SMT. 
+
+Pour le partage du cache, nous analyserons les 3 instances suivantes :
+\begin{itemize}
+\item X4-4\_1\_1-2 avec 4 Icaches et Dcaches L1 de 2k chacun et accessible par un seul thread . L'accélération de 3,92. 
+\item X4-2\_2\_1-2 avec 2 Icaches et Dcaches L1 de 4k chacun et accessible par deux    threads. L'accélération de 3,63. 
+\item X4-1\_4\_1-2 avec 1 Icache  et Dcache  L1 de 8k chacun et accessible par quatre  threads. L'accélération de 3,27. 
+\end{itemize}
+
+Le partage du cache induit des conflits d'accès au port. 
+Dans le premier cas, il y a 4 ports d'accès au Icache de largeur de deux instructions. 
+Alors que dans le troisième cas, il n'y a qu'un port de largeur de 8 instructions. 
+Les paquets de 8 instructions permettent de mieux exploiter l'ILP mais moins le TLP : chaque contexte accède au cache tous les 4 cycles. 
+Nous notons aussi que le partage du cache entraîne un effet de bord qui est le pourrissement du contenu du cache par les autres threads. 
+Ainsi qu'un allongement du temps de réponses des échecs d'accès au cache du au plus grand nombre de miss et à la plus grande longueur des lignes. 
+Le cache, optimisé pour tirer parti de la localité spatiale et temporelle d'un flot d'instructions ou de données se retrouve maintenant confrontés à plusieurs flots. 
+
+Pour le partage de la partie exécutive, nous pouvons observer les instances suivantes :
+\begin{itemize}
+\item X4-2\_2\_1-2 où il y a 4 groupes de 2 ALUs et chacune est accessible par 1 Threads. L'accélération est de 3,63. 
+\item X4-2\_2\_1-4 où il y a 2 groupes de 4 ALUs et chacune est accessible par 2 Threads. L'accélération est de 3,41. 
+\item X4-2\_2\_1-8 où il y a 1 groupe  de 8 ALUs et         est accessible par 4 Threads. L'accélération est de 3,38. 
+\end{itemize}
+
+Le partage des unités d'exécutions n'influe que légèrement sur les performances. 
+Les ressources sont mieux utilisées. 
+Or il y a une augmentation de la sensibilité du aux erreurs de routages (envoie vers une ALUs surchargés alors que d'autres ALUs sont en famine). 
+Ceci est également du à notre politique de routage actuel qui est un round robin classique. 
+Notons que dans le cas où il y aurait plus d'un contexte par coeur, le partage des unités d'exécutions est favorable. 
+Par exemple X4-1\_2\_2-8 et X4-1\_2\_2-4 qui ont une accélération de 2,37 alors que les instances X4-2\_1\_2-8 et X4-2\_1\_2-4 ont respectivement une accélération de 2,51 et 2,4. 
+Ceci est la conséquece d'une meilleur exploitation du TLP. 
+La fenêtre de lancement est mieux utilisé et le réseau de routage à plus d'instructions à sa disposition. 
+
+% Il y a aussi une hétérogénéité des instructions longues. 
+
+Pour le partage opérative, voyons les instances suivantes :
+\begin{itemize}
+\item X4-1\_1\_4-8, 1 cluster  possédant chacun 1 UL  avec 4 contextes chacun. L'accélération est de 1,46. 
+\item X4-1\_2\_2-8, 1 cluster  possédant chacun 2 ULs avec 2 contextes chacun. L'accélération est de 2,37. 
+\item X4-1\_4\_1-8, 1 cluster  possédant chacun 4 ULs avec 1 contexte  chacun. L'accélération est de 2,94. 
+\item X4-2\_1\_2-8, 2 clusters possédant chacun 1 UL  avec 2 contextes chacun. L'accélération est de 2,51. 
+\item X4-2\_2\_1-8, 2 clusters possédant chacun 2 ULs avec 1 contexte  chacun. L'accélération est de 3,38. 
+\item X4-4\_1\_1-8, 4 clusters possédant chacun 1 UL  avec 1 contexte  chacun. L'accélération est de 3,94. 
+\end{itemize}
+
+Le partage de la partie opérative donne des résultats très disparates et demande une analyse plus poussée des résultats. 
+Nous pouvons néanmoins dire qu'il y a une augmentation de la sensibilité des instructions de synchronisation et d'accès aux registres spéciaux (nous imposons qu'avant d'accèder au registre spéciaux, le pipeline doit être vide). 
+Il y a également une augmentation des miss de spéculations du au partage du prédicteur de branchement. 
+Ceci implique qu'il y a une augmentation des instructions inutiles dans le pipeline. 
+Elles représentent 6,12\% des instructions dans X4-1\_1\_4-8, alors qu'elles ne représentent que 2,17\% dans l'instance X4-4\_1\_1-8. 
+Ceci est aussi du à la largeur du pipeline et donc à la sous exploitation de L'ILP. 
+Lors du décodage, nous choisissons de manière round robin la fetch queue contenant un paquet. 
+Dans l'instance X4-4\_1\_1-8, 4 décodeurs décodent chacun en moyenne 1,63 instructions sur des paquets de 2 instructions (soit un total de 6,52 instructions), alors que dans l'instance X4-1\_1\_4-8, 1 décodeur prend un paquet de 8 instructions et décode en moyenne 3,7 instructions.
+La cause venant à des paquets d'instructions devant être alignés et à la présence de branchements. 
+
+%------------------------------------------------------------------------- 
+\Section{Conclusion}
+
+Cette étude à démontrer un fait déjà acquis, que l'accélération entre la version MT et la version ST d'un processeur diminue avec l'augmentation du partage des ressources. 
+Notre modèle de processeur étant encore en cours de développement, nous nous destinons à fournir un modèle VHDL synthétisable. 
+Ainsi la prochaine étude portera sur le coût surfacique du partage des ressources matérielles et ainsi déterminer quel degré de partage apporte le meilleur rapport performance/surface. 
+
 \bibliography{\dircommon/bibliographie}
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/poster-jnrdm_2007/common/bibliographie.bib
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/poster-jnrdm_2007/common/bibliographie.bib	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/poster-jnrdm_2007/common/bibliographie.bib	(revision 30)
@@ -0,0 +1,1979 @@
+@book{1983_Lee,
+  title={{Analysis of Branch Prediction Strategies and Branch Target Buffer Design}},
+  author={Lee, J.K.F. and Smith, A.J.},
+  year={1983},
+  publisher={Computer Science Division (EECS), University of California}
+}
+@article{1991_kaeli,
+  title={{Branch history table prediction of moving target branches due to subroutine returns}},
+  author={Kaeli, D.R. and Emma, P.G.},
+  journal={Proceedings of the 18th annual international symposium on Computer architecture},
+  pages={34--42},
+  year={1991},
+  publisher={ACM Press New York, NY, USA}
+}
+@article{scherson1991ogc,
+  title={{Orthogonal graphs for the construction of a class ofinterconnection networks}},
+  author={Scherson, ID},
+  journal={Parallel and Distributed Systems, IEEE Transactions on},
+  volume={2},
+  number={1},
+  pages={3--19},
+  year={1991}
+}
+@article{1991_wall,
+  title={{Wall, Limits of instruction-level parallelism}},
+  author={David, W.},
+  journal={Proceedings of the fourth international conference on Architectural support for programming languages and operating systems},
+  pages={176--188},
+  year={1991}
+}
+
+01/12/2004
+
+Etude sur le niveau de parallélisme d'un programme => l'ILP ne dépasse pas 5-7 instructions
+Ceci déterminera la viabilité d'ajout de mécanismes pour traiter en parralléle un maximum d'instructions (superscalaire, renommage de registre etc..)
+               #instruction
+Parrallelism = -------------
+               #cycle requit
+
+Le parallélisme est en moyenne de 3-4 inst. Peut être plus haut (ex. Programme numérique). Le profit d'une crête de parrallélisme est bas si la moyenne est basse.
+
+Augmenter l'ILP : 2 variétés de techniques :
+ a) Parrallélisme dans un bloc de base
+ b) Parrallélisme entre plusieurs blocs de base
+
+a) limité par les dépendances entre paire d'instructions
+    -> Renommage de registres (Hardware ou Software). Les compilos préfére utilisé le moins de registres possibles.
+    -> Pur les dépendances d'adresse mémoire => analyse d'alias
+b) Nombre d'instructions entre 2 branchements est en moyenne moins de 6 instructions
+    -> Prédiction de branchement pour exécuter de manière spéculatives les blocs de bases
+    -> Déroullement de boucles => augmentation de la taille des blocs de base
+    -> Pipeline logiciel => augmente le parallélisme au sein d'un bloc
+    -> Ordonnanceur de trace => trace : séquence de blocs souvent éxecuté
+
+CADRE DE TRAVAIL:
+
+* Execution du programme pour produire une trace d'execution
+* Algorithme va "paquetiser" ses instructions en groupe d'instruction non suspendu => on tente d'avoir 64 inst en //
+* Pas de limites d'unité fonctionnelle ni de limite d'accès au banc de registres. Chaque instruction à une latence d'un cycle, de même pour les opérations mémoires
+* L'execution se faire par groupe de paquet, si la suspension à également lieu dans le modèle, alors le paquet suivant sera exécuter le cycle suivant. Sinon, nous pouvons l'exécuter le même cycle.
+
+Le parrallélisme sera donc le nombre d'instruction par le nombre de cycles
+
+Paramètres :
+Register renamings : Parfait(nombre infinie de registres)
+                     finit (allocation dynamique => LRU, 256 registres entier, 256 flottant)
+                     aucun
+Prédiction de branchement : Prédiction parfaite (tjs correctement prédit)
+                            finit (dynamique) (prédiction d'un schéma à 2 bits , avec une table à 2048 entrées)
+                            finit (statique)  (tjs la même prédiction (dépendant de la prédiction parfaite))      
+                            aucun -> prédiciton tjs faux
+Idem pour le jump prediction
+analyse d'alias : Parfait (Il y a un conflit d'adresse que si l'adresse d'une écriture est la même qu'une autre écriture ou lecture)
+                  Aucune analyse (Une écritures sont en conflits avec chaque autre écriture et lecture)
+                  inspection d'instruction => pas de conflits si même registre de base mais dpt différent
+                                                              si registre de base différent (Mais explecitement différent ex utilisation de sp et gp qui sont deux pointeurs différents)
+                  analyse par le compilateur => analyse parfaite de la pile et des références globales
+Taille de la fenêtre : Nombre maximum d'instructions pouvant apparaître dans un cycle de traitement
+                     => Gestion de la fenêtre de manière discrète (Chercher une fênetre entière)
+                                                         continue (Chercher autant d'instruction qui viennent de ce terminer)
+
+Définitions de 5 modèles :
+
+          +----------------+--------------+--------------+----------------+
+          | branch Perfect | Jump predict | Reg renaming | Alias analysis |
++---------+----------------+--------------+--------------+----------------+
+| Stupid  | none           | none         | none         | none           |
+| Fair    | infinite       | infinite     | 256          | inspection     |
+| Good    | infinite       | infinite     | 256          | perfect        |
+| Great   | infinite       | infinite     | perfect      | perfect        |
+| Perfect | perfect        | perfect      | perfect      | perfect        |
++---------+----------------+--------------+--------------+----------------+
+
+Pour une taille de fenêtre de 2048 instructions ( continue)
+
+Sur les jeux de tests, on notera que le parrallélisme du modèle :
+ - stupide ne dépasse pas 2 
+ - pauvre  ne dépasse pas 4
+ - Great   ne dépasse pas 8 sauf pour quelque modèle numérique qui exploite l'analyse des alias 
+ - Parfait 
+
+Le déroullage de boucles à un effet significatif pour les modèles ambitieux. Sinon, ceci est limite par les load de début de boucle et les stores de fin de boucles (càd réduite par les technique d'alias analysis)
+
+Taille de la fenêtre
+
+La modification de la taille de la fenêtre n'influe que sur les modèles ambitieux grâce à leur technique de prediction améliorer. La plupart des benchmarks ont besoin que d'une fenêtre de 32 inst
+Avec une gestion de fenêtre demanière discrete, cela exploite moins de parrallélisme (- d'inst prete)
+
+Effet des predictions de branchements :
+
+Réduire le niveau de la prédiction de branchment à un impact significatif sur le parrallélisme (Beaucoup moins d'instructions prête à être executer). Mais réduire le niveau de la prédiction de saut n'a d'effet que si la prédiction de branchement est parfaite.
+De plus sur le modèle parfait, l'augmentation de la latence d'un miss à un effet significatif sur le parrallélisme (Car les instructions feteched ne sont plus executé en parralléle car les instructions précédentes sont déjà terminées)
+
+Effet du rennommage de registres et de l'analyse des alias
+
+L'analyse d'alias par inspection n'est pas très performantes (augmente l'ILP de 0.5). L'analyse par compilation n'est performante que pour des programmes utilisant la pile .
+Le nombre de registre pour le renomage de registres n'influe que très peu sur le parallélisme dans un modèle où les prédictions ne sont pas parfaite (à l'exception faite des programmes ayant beaucoup de dépendance)
+
+CONCLUSION
+
+Une bonne prédiction (hard ou soft) est un facteur déterminant pour l'augmentation de l'ILP. Le renommage de registres est important si le compilateur l'exploite.
+Le parrallelism moyen tourne autour de 5 d'après cette étude. (Dans un contexte très favorable => latence des inst = 1, etc...)
+@article{1992_pan,
+  title={{Improving the accuracy of dynamic branch prediction using branch correlation}},
+  author={Pan, S.T. and So, K. and Rahmeh, J.T.},
+  journal={Proceedings of the fifth international conference on Architectural support for programming languages and operating systems},
+  pages={76--84},
+  year={1992},
+  publisher={ACM Press New York, NY, USA}
+}
+@article{1992_yeh,
+  title={{Alternative Implementations of Two-Level Adaptive Branch Prediction}},
+  author={Yeh, T.Y. and Patt, YN},
+  journal={Computer Architecture, 1992. Proceedings., The 19th Annual International Symposium on},
+  pages={124--134},
+  year={1992}
+}
+@techreport{1993_mcfarling,
+  title={{Combining Branch Predictors}},
+  author={McFarling, S.},
+  institution={Technical Report WRL Technical Note TN-36, Digital Equipment Corporation, June 1993}
+}
+@article{1993_Perleberg,
+  title={{Branch target buffer design and optimization}},
+  author={Perleberg, CH and Smith, AJ},
+  journal={Computers, IEEE Transactions on},
+  volume={42},
+  number={4},
+  pages={396--412},
+  year={1993}
+}
+@article{1993_yeh,
+  title={{A comparison of dynamic branch predictors that use two levels of branch history}},
+  author={Yeh, T.Y. and Patt, Y.N.},
+  journal={Proceedings of the 20th annual international symposium on Computer architecture},
+  pages={257--266},
+  year={1993},
+  publisher={ACM Press New York, NY, USA}
+}
+@InProceedings{1995_sohi,
+  author = 	 {Sohi, G.S.     and
+                  Breach, S.E.   and
+                  Vijaykumar, T.N. },
+  title = 	 {Multiscalar processors},
+  OPTcrossref =  {},
+  OPTkey = 	 {},
+  OPTbooktitle = {Computer Architecture, 1995. Proceedings. 22nd Annual International Symposium on},
+  OPTpages = 	 {414-425},
+  OPTyear = 	 {1995},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {Santa Margherita Ligure  ,   Italy},
+  OPTmonth = 	 {22-24 Jun},
+  OPTorganization = {},
+  OPTpublisher = {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+22/02/2005
+
+Paradigme de base : fetch-execute - pointé par un program counter
+                    -> sous entend que les instructions vont être executer dans le même ordre que le programme.
+
+processeur ILP et les compilos désordonne le programme en respectant toutefois les dépendances sur les données et les controles.
+Les dépendances de contrôles peuvent être représenté par un "control flow graph" -> bloc de bases sont représenté par des noeuds et les arcs représentent les flots de contrôles
+
+Overview
+--------
+Objectif : A partir du "control flow graph" (CFG), on peut établir une fenêtre dynamique d'instruction pouvant être extré et lancé.
+
+le CFG peut être vut : - instruction / instruction
+                       - bloc / bloc
+                       - tâche / tâche (thread)
+
+Assignation d'une tâche à une unité d'execution.
+Le multiscalar à une collection d'unité d'execution et un séquenceur s'occupant de distribuer les tâches au UE.
+
+=> Obligation de maintenir l'ordre séquentielle de consommation et de production de données (registre ou accès mémoire)
+ Synchronisation  des accès mémoires 
+ - approche conservatrice : Attendre que les accès mémoires des tâches moins spéculatives soit terminer
+ - approche aggréssive    : Réaliser des chargements spéculatifs (vérif dynamique si une tâche moins spéculatifs écrit dans un zone chargé spéculativement.)
+
+Le contrôle et les accès aux données peuvent être spéculative. -> Mécanisme de "Retour en arrière" et de commit
+Gestion circulaire des tâches : La tâche en tête n'est jamais spéculative. On retire les tâches de manière circulaire.
+
+Software
+~~~~~~~~
+ - Le séquenceur a besoin des informations sur le CFG.
+ - Il faut caractériser une tâche par les données consommés et les données produites.
+   |-> Analyse statique par la compilation et création d'un "create mask" indiquant quel registres sont produits par la tâche.
+   |-> Noté quel est la dernière instructions produisant le registre pour pouvoir ensuite le forwarder.
+
+Hardware
+~~~~~~~~
+Hardware -> lancement des tâches vers une unités d'execution
+         -> Maintient d'une execution séquentielle apparente
+
+Le séquenceur détermine l'ordre des tâches. (Charge le descripteur de tâche et à partir de la va charger la tâche, creer les différent masqie et déterminer (ou prédit) la prochaine tâche à executer)
+
+Les accès à la mémoire donnée sont réalisées par le Address résolution buffer (ARB) qui gére la spéculation, dépendance ...
+
+Distribution des cycles pour l'execution
+----------------------------------------
+Relacement d'un calcul si :
+ - utilisation d'une valeur incorrect
+ - prediction incorrect
+
+Pour cela :
+ a) Synchronisation des communications de données
+
+ b) Détermination de la prediction :
+  - Registre pas de problèmes
+  - Accès mémoires : synchronisé explicitement
+Pour les prédictions -> Valider la prédiction au plus tôt : 
+  * intruction explicite de validation de prediction
+  * changer la structure de la bcl afin de tester la condition au + tôt
+
+
+Cycle idle          : aucune unité de calculs n'a de tâches à executer
+Cycle de non calcul : les unités ont des tâches mais ne peux pas les executer
+ - Dépendances intra-tâche : dépendance entre instructions d'une même tâche (désordonnancement, cache non bloquant etc ...)
+ - Dépendances inter-tâche : dépendance entre tâches (calculs de la condition de la boucle à la fin du corps de bcl etc ...)
+
+Conclusion
+----------
+Exploite l'ILP. Pour cela utilisation d'une combinaison hardware/software afin d'extraire l'ILP
+ -> division le CFG en tâche 
+ -> traverser le CFG de manière spéculative
+ -> Les tâches sont distribués à une collection d'unité d'execution.
+ -> Chaque unité d'execution fetche et execute les instructions de la tâche associées
+ -> Processeurs utilise plusieurs PCs  afin de pouvoir séquencer plusieurs parties différente du CFG.
+@InBook{         1996_mudge,
+  ALTauthor = 	 {trevor mudge},
+  ALTeditor = 	 {},
+  title = 	 {ACM Computing Surveys (CSUR)},
+  chapter = 	 { Special ACM 50th-anniversary issue: strategic directions in computing research},
+  publisher = 	 {ACM Press   New York, NY, USA },
+  year = 	 {1996},
+  OPTkey = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTtype = 	 {},
+  OPTaddress = 	 {},
+  OPTedition = 	 {},
+  OPTmonth = 	 {december},
+  OPTpages = 	 {671 - 678},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+01/12/2004
+
+Architecture des ordinateurs est un degré significatif sur les activités de l'ingénieurs pour trouver une solution à un problem avec une contrainte de coûts.
+
+Tendance -> a) resulte d'un apport de la technologie (ex. techno micronique et submicronique)
+         -> b) resulte d'un contexte d'application (ex. Multi processings => ajout de mécanisme de tâches)
+a) Défi : Consommation (Au premier ordre conso est proportionnel à la fréquence, loi de moore : Double la fréquence tous les Deux ans donc double la conso)
+          Latence : La fréquence d'horloge croit plus vite que la technologie des Rams : f(CPU) +50\%/an , vitesse(DRAM) +10\%/an
+b) application guide les architectures : Les processeurs deviennent de + en + grand public  (jeux 3D, multimédia etc..). Avant ils étaient surtout utilisé par des militaires. 
+
+L'auteur voit 3 challenges pour la prochaine décade (càd jusqu'en 2006)
+-> Puissance et taille
+-> Performance
+-> Complexité
+
+Axes de recherches
+-> locality
+-> Paralélisme
+-> Prédictabilité
+
+Paralélisme au niveau instructions (ILP) -> Approche VLIW et superscalaire
+            au niveau application  -> Simultaneous multithreadings (SMT)
+
+l'idée de ce SMT viens du processeur HEP devellopper par denelcor vers la fin des années 70
+
+Hierarchie mémoire => nécessité de masquer la latence des accès mémoires (technique de prefetching => utilisation de la bande passante innoccupé en vue d'aller chercher des instructions potentiellement utiles)
+
+Evolution des benchmarks pour prendre en compte des évolutions de marché pour le processeurs (c'est à dire bench "multimédia")
+@InProceedings{,
+  author = 	 { Kunle Olukotun  and
+                   Basem A. Nayfeh and
+                   Lance Hammond   and
+                   Ken Wilson      and
+                   Kunyung Chang 	
+                 },
+  title = 	 {the case for a single-chip multiprocessor},
+  OPTcrossref =  {ISBN:0-89791-767-7},
+  OPTkey = 	 {},
+  OPTbooktitle = {Proceedings of the seventh international conference on Architectural support for programming languages and operating systems},
+  OPTpages = 	 {2-11},
+  OPTyear = 	 {1996},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {Cambridge, Massachusetts, United States},
+  OPTmonth = 	 {},
+  OPTorganization = {},
+  OPTpublisher = {ACM Press},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+24/01/2005
+
+Opposition entre un mono-processeur compléxe et des multi-processeurs simple.
+
+Comparaison entre un processeur super scalaire 6 voies à ordonnancement dynamique et 4 processeurs superscalaire 2 voies. 
+Un superscalaire est décomposé en 3 phases :
+
+                     |----| <-> E
+           |----| -> |    | <-> E
+ICache <-> | IF | -> | IR | <-> E
+           |----| -> |    | <-> E
+                     |----| <-> E
+
+- Instructions fetch => fournir le maximum d'instruction prête.
+  Limitation : 
+   * Branchement mal prédit (degré de spéculation)
+   * Instruction mal aligné
+   * Miss de caches
+- Issue and retirement 
+  Rennommage : 
+   * Table de mappage (nb_opérande * nb_voie_scalaire   ports de lecture)
+   * Reorder buffer   (nb_bit_codage_registre * Taille_file_instruction_issue * nb_opérande * nb_voie_scalaire
+- Execution
+  Augmentation du temps de cycle lors de l'écriture si beaucoup de voie scalaire
+  Compléxité du by-pass (augmentation quadratique en fonction du nombre d'unité d'execution)
+
+Single-Chip Multiprocessor
+--------------------------
+1) -> Les OS actuelles sont multi processus => fort parrallélisme
+2) -> Les processus sont également multi thread
+3) -> Les appli mono thread peuvent être découper en thread de manière hard. assez contraignant.
+
+Architecture pour comparaison
+-----------------------------
+
+* Super Scalaire => R10000 de degré 4 à 6. (Augmentation des caractéristiques pour arriver à 430 mm2)
+* Multi proc     => 4 * R10000 de degré 2  (Diminution   des caractéristiques pour arriver à 430 mm2)
+
+=> Même surface de silicium pour les deux architectures.
+
+Performance
+-----------
+Gel d'un proceeseur dut au miss de cache. 
+Superscalaire -> execution désordonné, spéculative, cache non bloquant. Masquage des couts de Miss.
+
+Mesure de performance : Gain par rapport à la version MP - 1 proc.
+- Sur les applications avec peu de parallélismes, le superscalaire est plus performant car exploite mieux l'ILP.
+- Sur les applications avec un grain fin de parallélisme et beaucoup de communication, l'approche SS et MP est équivalente (Les deux approches exploite le parrallélisme grain fin)
+- Sur les applications avec un large degré de parallélisme, le multi proc prend l'avantage. Car le parrallélisme dépasse la fenêtre du supersclaire.
+
+
+=> l'approche SS est limité par l'ILP du programme, et le matériel nécessaire (lancement dynamique et banc de registres) augmente de manière quadratique le matériel et donc le temps de cycle.
+
+@article{1996_tullsen,
+  title={{Exploiting choice: instruction fetch and issue on an implementable simultaneous multithreading processor}},
+  author={Tullsen, D.M. and Eggers, S.J. and Emer, J.S. and Levy, H.M. and Lo, J.L. and Stamm, R.L.},
+  journal={Proceedings of the 23rd annual international symposium on Computer architecture},
+  pages={191--202},
+  year={1996},
+  publisher={ACM Press New York, NY, USA}
+}
+
+16/03/2005
+
+Préentation d'un architecture SMT suivant 3 contraintes :
+ - Minimiser l'impact par rapport à une architecture Superscalaire
+ - Minimiser la perte de performance lors de l'execution de programme monothread
+ - Avoir un gain de performance lors de l'execution de programme multithread
+
+Architecture SMT
+----------------
+L'article dérive un Supersclaire classique 
+(Fetch unit, Decode, Register renaming, wait\_queue, lecture des registres, unités d'executions, commit).
+Les instructions sont lancées dans le désordre, retiré dans l'ordre
+
+Changement minimum à apporter :
+ - un pc/thread et un thread séquenceur
+ - une pile de retour séparé (pour la prédiction de retours)
+ - Par thread : mécanisme pour retirer les instructions, file d'instructions à retirer et mécanisme de trape
+ - un thread id pour le BTB
+ - un large banc de registres
+
+Note : les instructions présente dans la file d'executions sont partagé par plusieurs threads donc grâce au mécanisme de renommage, on ne sélectionne que les instructions indépendante
+
+Conséquence :
+
+* Un pc est prioritaire (choisit de manière round robin)
+* Taille du banc de registres conséquents impose l'augmentation de la profondeur du pipeline.
+
+Performance
+~~~~~~~~~~~
+L'architecture gère 8 threads.
+
+Remarque : Si un seul thread est utilisé, il y a une perte de 2\% sur l'IPC par rapport au superscalaire de référence dut à l'augmentation du pipeline.
+
+Goulot d'étranglement :
+- Taille des files d'instructions : à cause de l'augmentation de l'IPC, elle deviennent souvent pleines
+- l'étage ifetch n'a pas la connaissance que les files sont pleines donc continue à fétché des instructions.
+- manque de parrallélisme : à cause des fausses instructions.
+
+Fetch Unit
+----------
+Il y à un partage de la bande passante de fetch avec tous les threads.
+ -> le fetch unit peut choisir parmit plusieurs source, donc incrémenter l'utilisation de la bande passante (car si un thread est bloqué, les autres ne le sont pas forcément)
+ -> le fetch unit peut choisir pour quels threads travailler (si un thread n'est pas bloqué mais qu'il réalise beaucoup de miss de spéculation, alors il est peut profitable de lui chargé des instructions qui auront de fortes chances d'être fausse)
+
+Définition de plusieurs stratégie de fetchs, classement suivant 3 critères :
+
+ 1) Partionnement du l'unité d'ifetch parmis les threads
+ 2) Efficacité de l'unité de fetch (Qualité des instructions chargés)
+ 3) Disponiblitité de l'unité de fetch (Elimination des conditions de blockage de l'unité)
+
+1) Partitionnement
+~~~~~~~~~~~~~~~~~~
+L'unité fetch charge jusqu'a 8 instructions par cycle.
+Mais comme les blocs de bases sont plutôt petit, il est difficille d'exploiter complétement la bande passante utilement pour un thread.
+ -> Partage des 8 instructions parmit plusieurs threads. Le cache reste identique mais est découpé en plusieurs banc, deux threads peuvent intérrogé deux bancs différents
+
+1.8 (1 threads ayant 8 instructions) -> blocs trop petits 
+2.4 - 4.2                            -> idéal
+8.1                                  -> Il n'y a pas assez de threads non bloqué
+
+Ajout de matériel : Mutipléxeur d'adresse, plusieurs buses d'adresse; logique de sélection des tristates de sorties, logique de conflit de bancs, duplication de la logique de calcul des hit/miss
+=> Augmente la latence du cache mais réduit la latence du bloc decode et rename (car moins de dépendance à calculer)
+
+autre vision : 
+2.8 -> le premier thread est prioritaire et peut charger jusqu'a 8 instructions, s'il n'y arrive pas un autre thread oeut tenter de combler le manque.
+c'est la méthode la plus performante car elle permet de gère la bande passante parmit plusieurs threads et d'avoir un partitionnement flexible.
+
+2) Algorithme
+~~~~~~~~~~~~~
+Algorithme de décision sur le thread prioritaire : Déterminer le meilleur "thread"
+ a) probabilité de ne pas charger un faux chemin
+ b) temps prit par l'instructions pour être executable
+
+* Round-robin
+* BRCOUNT     -> Favorise le thread qui à le moins de branchement non résolue (améliore a)
+* MISSCOUNT   -> Favorise le thread qui à le moins de miss de donnée (améliore b)
+* ICOUNT      -> Favorise le thread qui à le moins d'instructions dans les étages D R IQ (IQ = Instruction queue) (améliore b)
+* IQPOSN      -> Donne la plus basse priorité au thread la plus proche de la tête des files d'attente (améliore b) (la plus vieille instruction) (Ne requiert pas de compteur)
+
+ICOUNT et IQPOSN sont les deux algos les plus performants.
+
+3) Disponibilité
+~~~~~~~~~~~~~~~~
+Condition de blocage du fetch unit : IQ full, Icache miss.
+
+* BIGQ -> Augmentation de la taille du IQ sans augmenter la taille de la zone de recherche
+* ITAG -> Scrute le cache un cycle plutôt est on sélectionne que les threads qui ne vont pas faire de miss
+
+Choix de l'instruction à lancé
+------------------------------
+
+Superscalaire : le degré de spéculation est croissant avec sa position dans l'IQ
+Dans un SMT, ceci n'est pas vrai. 
+
+* OLDEST
+* OPT\_LAST     -> Optimiste
+* SPEC\_LAST    -> Spéculatif en dernier (les instructions sont spéculatifs sont prioritaires)
+* BRANCH\_FIRST -> Branchement sont prioritaires (afin de connaître si un branchement est spéculatif)
+ 
+Les performances n'influe pas énormément -> la bande passante du lancement n'influe pas sur les performances.
+
+Goulot d'étranglement
+---------------------
+Bande passante du lancement      -> non
+Taille de la file d'instructions -> non
+Bande passante du fetch          -> oui : la fréquence des sauts et les problèmes d'alignements du pc ne permet pas d'utiliser entièrement la bande passante.
+Prédiction de branchement        -> non : Le SMT est plus tolérant au mauvaise prédiction qu'un superscalaire classique. plus il y a de threads, plus ils seront entrelacés donc moins d'instructions seront chargé après un branchement.
+Execution spéculative            -> non, mais un SMT bénéficie beaucoup moins de l'apport de l'execution spéculative.
+Sortance de la mémoire           -> non
+Taille du banc de registres      -> oui : Temps d'accès devient limitant
+
+
+
+
+
+@InProceedings{1996_wallace,
+  author = 	 {Wallace, S.     and
+                  Bagherzadeh, N.    },
+  title = 	 {A scalable register file architecture for dynamically scheduled processors},
+  OPTcrossref =  {},
+  OPTkey = 	 {},
+  OPTbooktitle = {Parallel Architectures and Compilation Techniques, 1996., Proceedings of the 1996 Conference on},
+  OPTpages = 	 {179-184},
+  OPTyear = 	 {1996},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {Boston, MA, USA},
+  OPTmonth = 	 {Oct},
+  OPTorganization = {},
+  OPTpublisher = {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+01/04/2005
+
+Abstract
+--------
+
+A major obstacle in designing dynamically scheduled processors is the size and port requirement of the register file. By using a multiple banked register file and performing dynamic result renaming, a scalable register file architecture can be implemented without performance degradation. In addition, a new hybrid register renaming technique to efficiently map the logical to physical registers and reduce the branch misprediction penalty is introduced. The performance was simulated using the SPEC95 benchmark suite
+
+@article{1996_yeager,
+  title={{The Mips R10000 superscalar microprocessor}},
+  author={Yeager, KC},
+  journal={Micro, IEEE},
+  volume={16},
+  number={2},
+  pages={28--41},
+  year={1996}
+}
+@article{burger1997sts,
+  title={{The SimpleScalar tool set, version 2.0}},
+  author={Burger, D. and Austin, T.M.},
+  journal={ACM SIGARCH Computer Architecture News},
+  volume={25},
+  number={3},
+  pages={13--25},
+  year={1997},
+  publisher={ACM Press New York, NY, USA}
+}
+@InProceedings{1997_palacharla,
+  author = 	 {Palacharla, S.  and
+                  Jouppi, N.P.    and
+                  Smith, J.E.   },
+  title = 	 {Complexity-Effective Superscalar Processors},
+  OPTcrossref =  {},
+  OPTkey = 	 {},
+  OPTbooktitle = {Computer Architecture, 1997. Conference Proceedings. The 24th Annual International Symposium on},
+  OPTpages = 	 {206 - 218},
+  OPTyear = 	 {1997},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {},
+  OPTmonth = 	 {Jun},
+  OPTorganization = {},
+  OPTpublisher = {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+07/02/2005
+
+=> Perte de performances du au matériel très couteux.
+
+2 directives pour fabriquer un mono processeurs :
+ - Le compléxifier le matériel afin d'extraire encore plus le nombre d'instructions lancée
+ - Le rendre plus simple afin d'avoir une plus grande fréquence d'horloge
+
+Source de compléxité
+--------------------
+
+Modèle de pipeline typique :
+
+1) FETCH             Lecture de plusieurs instructions, prediction de branchement
+2) DECODE            Décodage d'instruction
+3) RENAME            renommage de registre, dispatchement dans la fenêtre d'isntructions
+4) SELECT/ISSUE      Une fois qu'une instruction à ces opérandes => prête à être lancé -> Envoie vers l'UF approprié
+5) REG READ          Prise des opérandes / bypass
+6) EXECUTE/BY PASS   Execution
+7) DCACHE ACCESS     Accès mémoire
+8) REG WRITE/COMMIT  Accès dans les registres et valdiation (instruction non spéculatif et non érroné)
+
+Dépendance de complexité :
+- Largeur/profondeur de la fenêtre de lancement
+- Structure "Dispatch et issue"
+- Longeur des fils dans ces structures qui se mettent à jour par broadcasting
+
+-> Logique de renommage
+-> Logique de wake up (détermine quel instructions est prête ou non)
+-> Logique de selection
+-> Logique des by-pass
+
+Détails
+-------
+
+Logique de renommage
+~~~~~~~~~~~~~~~~~~~~
+Accès à une table de mappage pour diriger le numéro de registres logique vers le numéro de registres physique
+Accès multiple (plusieurs instructions)
+-> Logique de vérification de dépendances
+
+2 schémas : - schéma RAM : Une table de NB\_REG\_LOG pointant sur les registres physiques
+            - schéma CAM : Une table de NB\_REG\_PHY pointant vers les registres logiques
+Trename   = Tdecode + Twordline + Tbitline + Tsenseamp
+          = cst0 + cst1*IW + cst2*IW²
+
+Twordline (proportionnel à la taille de l'adresse du registre physique (environ 8) )
+Tbitline  (proportionnel au # de registre logique (souvent 32) )
+Tsenseamp fonction de bitline delay
+cst sont donnée par la technologie
+
+=> croit linéairement avec la taille de la fenêtre
+
+Logique de wakeup
+~~~~~~~~~~~~~~~~~
+A chaque résultat produit, a tag associé au résultat est diffusé à toutes les instructions contenus dans la fenête de lancement (IW).
+Chaque instructions compare le tag avec ses opérandes sources
+Si la comparaison est positive => mise à jour du bit ready de(s) l'opérande(s) (Quand tous les bit sont positionnés => instructions prête au lancement)
+
+Il y a IW tag soit NB\_OPERANDE x IW comparaions
+
+Twakeup = Ttagdrive + Ttagmatch + Tmatch\_or
+        = c0 + (c1 + c2 * IW)*WINSIZE + (c3 + c4*IW + c5*IW²)*WINSIZE²        
+
+(IW => nombre d'instruction en attente d'être executer)
+(WINSIZE => nombre d'instruction allant être executé)
+
+Incrémenter le nombre de ligne va incrémenter le nombre de comparaisone et la puissance nécessaire pour atteindre ces comparaisons.
+Seul le Ttagdrive dépend de la taille de fenêtre de lancement (fan-out + élevé car + de comparateur)
+
+Logique de selection
+~~~~~~~~~~~~~~~~~~~~
+Choix des instructions à executer parmit la IW
+ -> Plusieurs types d'instructions
+ -> Plusieurs types d'unités fonctionnelles pouvant acceptés une instructions de plusieurs types d'instructions.
+
+Un signal REQ par instruction contenant dans la IW (actif si instruction prête)
+Un signal GRANT est émit par le bloc de sélection (1 par signal de requête) => indique que l'instructions est lancé dans une unité fonctionnelle.
+Politique de selection -> en général FIFO, ou la plus vieille (C'est à dire la plus en bas de la fenêtre d'instruction)
+
+=> Arbre d'arbitrage.
+ 2 phases : 1) Propagation de la requête jusqu'à la l'unité fonctionnelle
+            2) Propagation de la réponse (GRANT) jusqu'a toute les req d'instructions
+
+Tselection = c0 + c1 * log4(WINSIZE)
+
+log4 car les noeuds de l'arbre d'arbitre accepte 4 requêtes.
+
+Logique des bypass
+~~~~~~~~~~~~~~~~~~
+Si complétement bypassé, il faut : 2*IW²*S (S est le nombre d'étage)
+-> Un fils par unité fonctionnelle
+-> Tous les unité fonctionnelle (ainsi que le banc de registres) doivent avoir un bloc mux
+-> banc de registres à autant 2*UF ports de lecture et UF ports d'écriture
+-> Bloc mux à UF ports d'entrée et en sorties ce sont des bus attaqués pas UF signaux.
+-> Sans oublier les compateurs dans chaque alu
+
+Tbypass = 0.5*R*C*L²   => Dépend principalement de la longueur des fils.
+
+Analyse des résultats
+---------------------
+
+IW  Window-size Trename Tselection Tbypass
+
+(0.18)
+4   32          351.0   578.0      184.9
+8   64          427.9   724.0      1056.4
+
+-> La selection (logique de fenêtrage) et les bypass posent des problèmes de scalabilités.
+=> Toutes les autres structures ne posent pas de pbl d'horloge, où s'il y en a, alors ils peuvent être pipeliné.
+
+Si on découpe l'étage Wakeup (Chercher les opérances) et selection (Chercher une ALU disponible), alors il y aura au meilleur des cas au moins un cycle de gels entre deux instructions dépendante consécutive.
+
+... | WUP | SEL | EXE | ...                add r3,r2,r1
+                   | (Bypass)
+......... | WUP | WUP | SEL | EXE | ...    add r5,r4,r3
+
+Proposition d'architecture
+--------------------------
+Remplacement de la fenêtre de lancement par une architecture "dependance-based"
+Clusterisation des by-pass.
+
+=> architecture "dependance-based"
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Exploitation des dépendances instraséques entre instructions.
+Fenêtre de lancement découpé en plusieurs fifos. Les instructions dépendantes sont routés vers la même fifos.
+Execution In-order des instructions dépendante entre elles. Execution désordonné des autres flots d'instructions.
+Il n'y que les instructions de têtes à aller verifier le banc de registres.
+
+Besoin d'une table(SRC\_FIFO)  où les dépendances des instructions sont maintenus à jour
+SRC\_FIFO(num reg log) -> numéro fifo
+
+=> Clusterisation des by-pass
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Décomposé les unités fonctionnelles en cluster. 
+Il y a 2 types de bypass 
+ - intra cluster (dans le même cycle) 
+ - inter cluster (peut nécessité plusieurs cycles)
+=> N copies du banc de registres : 1 pour chaque cluster
+
+Conclusion
+----------
+Les techniques diminues faiblement (au max 12\%) le CPI mais augmente sensiblement la fréquence d'horloge. Au total, la performance global est meilleur.
+
+Autre technique :
+
+1 cluster - 1 window (Superscalar basique)
+
+-> Window -> Cluster0
+
+
+2 cluster - Fifo dispatch
+
+     -> Cluster0
+   /
+-> 
+   \ 
+     -> Cluster1
+
+2 cluster - windows - Choix du cluster : exec
+
+Instruction stocké dans une fenêtre global puis assigne à un cluster
+
+             -> Cluster0
+           /
+-> Windows 
+           \ 
+             -> Cluster1
+
+2 cluster - windows - Choix du cluster : dispacth
+
+
+     -> Windows -> Cluster0
+   /
+-> 
+   \ 
+     -> Windows -> Cluster1
+
+2 cluster - windows - Choix du cluster : random
+
+Choix des clusters aléatoire
+     -> Windows -> Cluster0
+   /
+-> 
+   \ 
+     -> Windows -> Cluster1
+
+@InProceedings{ 1998_hammond,
+  author = 	 {Lance Hammond and
+                  Mark Willey   and
+                  Kunle Olukotun},
+  title = 	 {},
+  OPTcrossref =  {SSN:0163-5980},
+  OPTkey = 	 {},
+  OPTbooktitle = {Proceedings of the eighth international conference on Architectural support for programming languages and operating systems},
+  OPTpages = 	 {58-69},
+  OPTyear = 	 {1998},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 { San Jose, California, United States},
+  OPTmonth = 	 {},
+  OPTorganization = {},
+  OPTpublisher = {ACM Press},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+27/01/2005
+
+Thread level speculation
+------------------------
+Technique autorisant l'execution paralléle d'une application séquentiel (donc à pour but de tourner sur un multi processeur).
+=> Mécanisme fonctionnant bien pour des applications avec un grain moyen de parallélisme de boucle. Mais quand la granularité de parallélisme devient trop petite, l'overhead devient trop couteux.
+
+DATA Spéculatation
+~~~~~~~~~~~~~~~~~~
+
+Processeur superscalaire avec execution désordonné :
+ -> réordonne les instructions ALU (renommage de registre , ordonnancement dynamique).
+Pas de réordonnancement des accès mémoires si les adresses ne sont pas connut on sont connus et dépendante.
+
+Data spéculation : On execute des loads qui ce situe après des stores dont l'adresse n'est pas encore connus.
+ -> S'il y a une vrai dépendance => le store est prioritaire et le load (et chaque execution en dépendant) sont ré-executés.
+
+Le programmeurs / Compilateur peut diviser un programme séquentiel en plusieurs threads. Or les dépendances de registres et de mémoires imposent beaucoup de contraintes.
+=>Si les dépendance ne peut pas être connus lors de la compilation (exemple des pointeurs en C) alors impossibilité  de diviser le code ou alors placer des routine de synchronisation logicielle.
+
+Avec le thread level data speculation (TLDS)
+=> le compilo divise seulement le programme en threads. 
+=> Chaque thread à un numéro, celui-ci indique le numéro correspondant à l'ordre dans lequel il devrait être s'il été executer en séquence.
+=> La spéculation hardware d'occupe des vrais dépendances entre les accès mémoires
+
+Les écritures deviennent des points de synchronisations.
+
+Chaque processeur execute un thread :
+On classe les procs par rapport au numéro que le thread possède.
+Celui avec le numéro le plus faible (executer sur le processeur de tête) est donc non spéculatif. Les autres sont de + en + spéculatif.
+
+Temps 0 : CPU i   -> R
+Temps 1 : CPU i+1 -> R
+Action  : -
+
+Temps 0 : CPU i   -> R
+Temps 1 : CPU i+1 -> W
+Action  : renomage dans i+1
+
+Temps 0 : CPU i   -> W
+Temps 1 : CPU i+1 -> R
+Action  : envoie de la donnée écrite par i vers i+1
+
+Temps 0 : CPU i   -> W
+Temps 1 : CPU i+1 -> W
+Action  : Ecriture de i puis renommage de i+1 et écrasage de la donnée
+
+Temps 0 : CPU i+1 -> R
+Temps 1 : CPU i   -> R
+Action  : -
+
+Temps 0 : CPU i+1 -> R
+Temps 1 : CPU i   -> W
+Action  : Renommage de i+1
+
+Temps 0 : CPU i+1 -> W
+Temps 1 : CPU i   -> R
+Action  : RAW : i+1 redemarré
+
+Temps 0 : CPU i+1 -> W
+Temps 1 : CPU i   -> W
+Action  : Renommage de i+1, + tard le forward de i sera ignoré
+
+Le matériel de spéculation des donnés doit fournir :
+ - Détection des vrai dépendances mémoire dans l'ordre.
+ - Possibilité de retour en arrière et ré-execution du threads
+ - Bufferisation des écritures jusqu'a ce qu'elle ne sont plus spéculative (Ou supprimé)
+
+Décomposition en thread spéculatif
+----------------------------------
+
+2 architectures différentes :
+ - The Multiscalar architecture => découpage en tâche arbitraire, allocation des tâche dans l'ordre sur un anneau de processeur
+ - The TLDS architecture => support minimum pour la spéculation, principalement controlé par logiciel.
+
+Solution apportée ici :
+Combinaison de l'approche hard/Soft (~TLDS)
+-> Utilisation du support du hardware pour diviser le programme en thread et les distribuer sur les différents processeurs.
+  |-> Coprocesseur de spéculation
+
+Comment diviser un prcess en threads?
+ -> utilisation d'appel de sous fonction
+   -> Un autre processeur va executer de manière spéculatif la suite du programme principal
+ -> Boucle (Ceux indiqué par le compilateur)
+   -> Les différentes itérations sont distribuées sur les différents processeurs
+
+Subroutine Thread
+~~~~~~~~~~~~~~~~~
+
+Spéculation de fonction géré par une list chainé de threads actifs ordonnée du moins au + spéculatif
+Lors d'un appel de fonction, envoie d'un message au autre processeur.
+
+1) Le processeur alloue un register passing buffer (RPB) pour le thread nouvellement crée. 
+2) Sauvegarde des registres (devant être sauvegarder lors d'un appel systems) puis prédition de la valeur retourné 
+  alogo repeat least return value (car en C -> beaucoup de void fonction ou de retour d'erreur, ou imprédictible)
+3) Insertion du buffer dans la list des buffer actif juste après le process courent (pour garder l'ordre par spéculation)
+4) Attribution d'un processeur à ce nouveau thread (soit un libre, soit un executant le plus spéculatif des threads)
+
+Ceci est réaliser dans l'exception handler (Donc chaque appel à une sous fonction génére une exception)
+Si l'appel de fonction à une valeur de type imprédictible, alors on ne considère pas la spéculation.
+
+Au retour d'un appel de fonction :
+1) Le processeur attend jusqu'a ce qu'il soit le processeur de tête (donc sont code devient non spéculatif et deplus il n'est pas en conflit avec les autres thread)
+2) La valeur retourné est comparé avec la une valeur prédite. Si miss => Toute les threads sont relancés
+3) Le RPB est remis dans la free-list, le thread suivant devient celui de tête
+4) L'ancien processeur de tête va executer un thread (donc devient le plus spéculatif)
+
+Loop itération Thread
+~~~~~~~~~~~~~~~~~~~~~
+
+Un boucle spéculatice est préceder d'une verification pour savoir s'il est avantageux ou non de l'exécuter de manière spéculative.
+Une itération de boucle est donnée a chaque proc disponible.
+
+A la fin d'une itération -> validation, l'itération suivante devient le CPU de tête.
+Ceci jusqu'à ce que la condition de terminaison soit trouvée (dans ce cas invalidation de tous les autres threads) 
+
+2 manières de traiter les boucles :
+ - Si la boucle est longue : rebouclage des RPB
+ - sinon Schéma habituel : insertion de 4 RPB (1 pour chaque proc) => Overhead moins couteux mais méthode peu fléxible
+
+Taille des Threads
+~~~~~~~~~~~~~~~~~~
+
+Facteur de Limitations :
+1) Taille limité des buffers : Il n'y a que le CPU de tête qui réalise des mise à jour de la mémoire. Les CPU spéculative ne peuvent commiter leur buffer que s'il deviennent buffers de têtes.
+2) Vrai dépendance : Les grands threads augmente la probabilité de vrai dépendance
+3) Longueur des redémarrages : Un redémmarrage sur un grand thread augmente la charge de travail (données à défaire etc..)
+4) Overhead : Les très petits threads ont un coût d'overhead trop élevé.
+
+=> Violation counters : élimine les threads avec trop de dépendances
+=> Thread timers : élimine les threads trop long
+=> Stall timers : élimine les threads trop souvent bloqués (voir plus bas)
+
+Exception
+~~~~~~~~~
+Si un thread réalise une exception, ou un appel système, alors celui-ci est bloqué.
+
+Speculation Control Coprocessor
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+=> Implémenter dans le Coprocesseur2 du mips
+-> Fonction accèder par software
+-> Contient la table des vecteurs d'exceptions
+
+Hardware Support
+----------------
+
+Sur le multiscalar processor => ARB (Dcache partagé) associé avec un traceur de reférence mémoire spéculative.
+Sur le TDLS processor        => Protocole plus simple
+
+Ici : 
+ - Modification dans le Dcache : Sur chaque tag d'une ligne de cache, ajout de qq bits (modified bit, pre-invalidate bit) (Read, Write bits => pour détecter les vrai dépendance, un bit par mots contenu dans la ligne)
+ - Buffers dans le cache L2    : Bufferisation des écritures encore spéculative. Une fois qu'il ne sont plus spéculative, ordre venant du processeur pour rentre permannent les changement. Le buffer est dépiller par ordre d'arriver et écrit dans le L2. Le buffer full est détecter par chaque proc qui possède une copie local des Tags du buffer couramment utilisé.
+Lors d'un load  spéculatif , On va lire le DCACHE, puis on va lire dans le buffer courrant au proc, puis on remonte tous les buffer appartement a des process moins spéculative (jusqu'a la tête) et enfin on va lire dans le L2 cache. (Tous est vérifier en parralléle)
+Lors d'un sotre spéculatif , il peut se produire : écriture dans le DCACHE (demander par le proc courant), une invalidation par un cpu moins spéculatif (vrai dépendance), une pré invalidation venant des cpu plus spéculatif (vérification). Si proc devient la tête : Drainage du buffer.
+@TechReport{1998_olukotun,
+  author = 	 {Lance Hammond and
+                  Kunle Olukotun},
+  title = 	 {Considerations in the design of hydra : a multiprocessor-on-a-chip microarchitecture},
+  institution =  {Stanford University},
+  year = 	 {1998},
+  OPTkey = 	 {CSL-TR-98-749},
+  OPTtype = 	 {},
+  OPTnumber = 	 {},
+  OPTaddress = 	 {},
+  OPTmonth = 	 {February},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+24/01/2005
+
+Décrit de manière détaillée :
+- Hiérarchie mémoire
+- Bus internes
+- Contrôle et arbitrage
+
+Hierarchie Mémoire
+~~~~~~~~~~~~~~~~~~
+L1 - On chip - I D séparé , et 1 couple pour chaque proc
+L2 - On chip - Partagé avec les 4 processeurs
+L3 - Off chip
+Mémoire principale - Off chip
+
+L1 unifié pour les 4 procs :
+ - Trop de ports R/W
+ - Cache L1 devient "plus gros" pour rendre les même services
+ - Logique entre le cache et le L1 (en cas d'accès à la même case)
+ - Trop de logique => Ne réponds pas en 1 cycle
+
+L1 séparé
+ - Obligation d'un mécanisme de snoop
+
+Limitation d'avoir un L3 off chip :
+ - RAM rapide sont onéreuse
+ - Demande beaucoup de plots
+ - Electriquement non triviale
+
+Communication
+~~~~~~~~~~~~~
+2 bus internes :
+ - Bus Read/Replace
+ - Bus Write-through 
+
+Gérer de manière pipeliné, demande 1 cycle pour l'arbitrage afin d'avoir un débit d'un accès par cycle
+
+Bus Read/Replace  : 256b de large (1 ligne de cache L1 / L2). Liaison entre le L2, et le L3 ainsi que tous les L1 (en lecture uniquement). Bus avec un faible traffic (dans leur exemple : occupation inférieur à 50\% pour les tests les plus gourmand en accès mémoires)
+
+Bus Write-through : 64b de large, de tous les caches L1 vers le L2. Cohérence du cache L1 sur snoop de ce bus (pas le read/replace bus) , Invalidation sur écriture (Un seul cache est propriétaire d'un bloc). Les écritures de tous les procs se retrouvent séquencer.
+
+L'utilisation du write-bus n'est pas scalable :
+ * write-bus multiple (Ou 1 seul rapide) => Ports supplémentaires pour le L1 Tags, snoop et invalidation multiple par cycle. Dans le L2 => plusieurs données peuvent être écrite par cycle.
+ * Une ligne de bus avec un mode rafale
+ * Protocole conventionnel de cohérence MESI, et elimination du write bus pour un bus partagé entre les lecture et les écritures
+
+Contrôleur mémoire
+~~~~~~~~~~~~~~~~~~
+Chaque ctrl mémoire est divisé en 2 pipelines indépendants. 
+ - un pour manager les accès en lecture (Instruction fetch et load)
+ - l'autre pour manager les accès en écriture
+
+Lecture  : en général prévisible et donc absorbé par le cache
+Ecriture : A cause du write throught : répercuter à chaque fois sur le bus. De plus les codes ont tendance à faire des burst de store. En général absorbé par le store buffer.
+
+pipeline de Lecture et celui d'ecriture sont similaire :
+3 étages :
+ - accès L2 (~5  cycles)
+ - accès L3 (~15 cycles)
+ - Initiation de l'accès à la mémoire principal ( 5-10 cycles)
+L'avancement dans le pipeline se fait sur un miss de l'accès courant.
+
+Degré de pipeline :
+Accès L2, Accès L3 pipeliné
+Accès mémoire non pipeliné (1 seul requêtes dans cet étage)
+
+De plus il y a deux autres ctrl dans la mémoire principale et l'interface I/O
+-> Retourne les données venant de l'extérieur vers le cache approprié.
+-> ~ au ctrl des caches
+
+Arbitre
+~~~~~~~
+Les demandes d'accès les plus anciennes sont servies en premier
+
+Ce n'est pas une allocation cycle par cycle ou ressource par ressource. Mais par unité de cycle (de 5 à 20 cycles).
+
+Chaque CPU pipeline (ctrl mémoire) envoie une requete de ressource au début de chaque étage de pipeline.
+Priorité fixe :
+ - vers Accès mémoire et I/O
+ - vers L3
+ - vers L2
+(Les plus courants sont les moins prioritaire, évite la famine)
+
+Read pipeline est prioritaire sur le write pipeline. Possibilité au L1 d'inverser la priorité si le write buffer est (proche d'être) plein.
+
+Arbitrage sur la même adresse
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+2 accès se réalise en parrallèle (L1 / L2 / L3 / Mémoire) sur le même adresses
+Problèmes :
+ - Copie multiple d'une ligne de cache => Plus de proporité d'exclusivité des lignes de caches.
+ 
+@article{1998_kessler,
+  title={{The Alpha 21264 microprocessor architecture}},
+  author={Kessler, RE and McLellan, EJ and Webb, DA},
+  journal={Computer Design: VLSI in Computers and Processors, 1998. ICCD'98. Proceedings., International Conference on},
+  pages={90--95},
+  year={1998}
+}
+@InProceedings{1998_krishnan,
+  author = 	 {Krishnan, V.   and
+                  Torrellas, J.  },
+  title = 	 {A clustered approach to multithreaded processors},
+  OPTcrossref =  {},
+  OPTkey = 	 {},
+  OPTbooktitle = {Parallel Processing Symposium, 1998. 1998 IPPS/SPDP. Proceedings of the First Merged International...and Symposium on Parallel and Distributed Processing 1998},
+  OPTpages = 	 {627-634},
+  OPTyear = 	 {1998},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {Orlando, FL  ,   USA},
+  OPTmonth = 	 {30 Mar - 3 Apr},
+  OPTorganization = {},
+  OPTpublisher = {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+25/02/2005
+
+SMT                    -> Flexible (TLP et ILP) 
+Fixed assignement (FA) -> Sous utilisation des ressources
+
+CMT -> un thread à tous les ressources à un instant donné
+Pbl SMT -> Conséquence sur le temps de cycle !!!
+
+SMT clusterisé : Unité de calculs sont multisthreadé, l'unité de dispatch va envoyé les instructions d'un thread vers les unités de calculs qui lui sont associés.
+
+Model de parallélisme
+---------------------
+
+Architecture fixe : N threads ayant M unités d'execution. Une unité d'execution n'apaprtient qu'a un thread => jusqu'a M IPC
+Si X nb d'Unité d'execution total fixe -> M = X/M 
+  - Si N trop grand -> exploite peu l'ILP
+  - Si N trop petit -> exploite peu le TLP
+
+Architectures
+-------------
+
+Centralisé et clusterisé SMT:
+
+Fetch unit partagé par ts les threads, (géré round robin ou autre), les instructions sont ensuite placé dans une fênetre d'instructions commune. Les instructions sont commité par thread.
+ -> limite : large interconnections entre les unités fonctionnelles et le banc de registres (en particulier les by-pass)
+
+FA :
+
+Réduction de la centralisation des ressources : partionnement du SMT classique en clusters (SMT d'ordre X*Y devient X clusters étant des SMT d'ordre Y).
+Chaque cluster à sont unités de FETCH
+
+Evaluation
+----------
+Un gaspillage d'un slot d'instructions peut être classé en :
+- struc : Manque d'unités fonctionnelle
+- mem   : Accès mémoire
+- data  : Dépendance de donnnées
+- ctrl  : Miss predictions de branchements
+- sync  : Barrières de synchro
+- fetch : Pas d'instructons pour un thread dans la fenêtre
+- autre
+
+Comparaison d'un FA8  (8 clusters qui sont des superscalaire d'ordre 1)
+                 FA4  (4 clusters qui sont des superscalaire d'ordre 2)
+                 FA2  (2 clusters qui sont des superscalaire d'ordre 4)
+                 FA1  (1 clusters qui sont des superscalaire d'ordre 8)
+                 SMT8 (8 clusters qui sont des SMT supportant 1 threads lancant 1 inst/cycles) 
+                 SMT4 (4 clusters qui sont des SMT supportant 2 threads lancant 2 inst/cycles) 
+                 SMT2 (2 clusters qui sont des SMT supportant 4 threads lancant 4 inst/cycles) 
+                 SMT1 (1 clusters qui sont des SMT supportant 8 threads lancant 8 inst/cycles) 
+En terme de complexité SMTx = FAx
+SMT8 est identique à FA8
+SMT1 est une architectures SMT centralisés
+
+de FA8 à FA1 : sync décroit mais les data et mem croit. (logique :P)
+
+@article{1998_tullsen,
+  title={{Simultaneous multithreading: maximizing on-chip parallelism}},
+  author={Tullsen, D.M. and Eggers, S.J. and Levy, H.M.},
+  journal={International Conference on Computer Architecture},
+  pages={533--544},
+  year={1998},
+  publisher={ACM Press New York, NY, USA}
+}
+
+15/02/2005
+
+Présentation du multi-threading.
+-> lancement de plusieurs flots de plusieurs threads dans les unités fonctionnelles du processeurs.
+-> but : augmenter l'utilisation du processeur face au long latence de la mémoire et de ILP limité dans un seul thread
+
+plan :
+ - modèle de SMT
+ - evaluation des perfs (par rapport à un superscalaire et un fine grain multi threading)
+ - hierarchie mémoire dans un SMT
+ - SMT vs CMP
+
+Modification d'un alpha 21164 :
+
+- 10 unités d'execution (4 integer, 2 flottant, 3 load/store et 1 branchement) => complétement pipeliné
+- Issue : 8 inst/cy
+- execution dynamique
+  |-> gestion des dépendance in-order
+  |-> lancement out-order
+- Prediction de bcht
+
+Limitations du super-scalaire
+-----------------------------
+en moyenne, le processeur lance 1.5 inst/cy sur une machine pouvant en lancer 8.
+différente cause :
+ - conflits mémoire, dépendance de donnée (flottant, ou entiere), délai de chargement, bulle de contrôle, mauvaise prédiction, miss de cache et de TLB.
+
+Toutes les cas peuvent être classé suivant deux types d'incidences sur le pipeline
+ - gaspillage verticale   : à un cycle donnée, aucune unité d'exécution ne sera utilisé
+ - gaspillage horizontale : à un cycle donnée, non utilisation d'un créneau de lancement (issue slot)
+
+un corse grain / Fine grain multithreading limite le gaspillage verticale.
+
+Modèles de processeurs
+----------------------
+Chaque modèles à 10 unités fonctionnelles et peut lancer 8 inst/cycles (Donc au max 8 threads)
+
+- Fine-grain multithreading : 1 thread peut lancer des instructions pendant 1 cycle (cycle suivant commutation)
+- SMT : full issue : les 8 threads sont en compétitions sur chaque issue slots à chaque cycle
+- SMT : N issue : chaque threads peut lancer un maximum de N inst/cycle (full issue = 8)
+- SMT : Connection limité : Chaque thread hardware est directement connecter à une unité fonctionnelle de chaque type (si il y a 8 threads et 4 unités fonctionnelles d'un type, alors chaque unité fonctionnelle est connecté à 2 threads)
+
+3 facteurs :
+ 1- # de threads en compétition
+ 2- # d'instructions lancé/thread
+ 3- # d'UF visible/thread
+
+augmente   Port registre | dépendance interinst | logique forward | ordonnancement inst
+1                                                 + complexe        + complexe          -> les ufs ont plus destination possible pour les résultats
+                                                                                        -> plus d'instructions devant être routé
+2          + complexe      + complexe                                                   -> plus d'instruction à lancer (donc chercher les opérandes)
+                                                                                        -> plus d'instruction à analyser (augmentation de la fenêtre de chaque thread)
+3          + complexe      + complexe             + complexe        + complexe          -> l'ordonnancement devient de + en + dépendant d'autre FU
+                                                                                        -> une UF qui est privé à moins de destination possible
+
+Caches
+------
+Le partage des caches et des TLB est néfastes sur les performances.
+Lors du partage des caches entre threads :
+ - Il y a virtuellement moins d'espace par threads
+ - Il faut des caches non bloquants
+
+-> Cache privé afin d'avoir des caches dédié à un thread (le cache est partionné en NB\_THREAD parties) Bon pour les Icaches (Pas d'évincement d'une ligne d'instruction par un autre thread)
+-> Cache partagé : Tous les threads ont accès au même cache => peu de contrôle, bon pour les Dcaches car 1 seules mécanisme de cohérence mémoires à implémenter.
+
+SMT vs CMP
+----------
+Ressemblance :
+Duplication des registres, multiple unité fonctionnelle, grand nombre d'instruction lancé par cycle
+Différence :
+les ressources ne sont pas partitionné et ordonnancé. Ils ont alloué de manière statique à un thread (ou un groupe de threads)
+
+Le SMT surpasse le CMP à complexité égal :
+ -> Un SMT 8 threads - 8 issues avec 10 FU surpasse de 24\% 8 proc 1 issue avec 4 UFs
+
+ * performance avec peu de thread (car partage des ufs)
+ * granularité et flexibilité
+
+
+@article{2000_barroso,
+  title={{Piranha: a scalable architecture based on single-chip multiprocessing}},
+  author={Barroso, L.A. and al.},
+  journal={Proceedings of the 27th annual international symposium on Computer architecture},
+  pages={282--293},
+  year={2000},
+  publisher={ACM Press New York, NY, USA}
+}
+
+02/12/2004
+
+systeme Piranha : Exploite le multiprocesseur à l'aide de 8 alpha (simple) avec 2 niveaux de caches, le tout sur un seul chip.
+
+Les processeurs hautes performances vise l'exploitation au maximum de l'ILP. Réalisant des architectures de + en + complexe, afin d'améliorer les benchmarks de types SPEC.
+Or Les domaines d'applications demandant vraiment de la haute performance se situe au niveau des serveurs. (Application internet) => Comportement n'est pas comme les bench SPEC
+
+Pourquoi cette architecture : Le coût d'un SMT (simultaneous multithrading) étant plus cher qu'un CMP (chip multiprocessing), car plus complexe (le SMT contient du matériel pour gérer les changement de thread, + de banc mémoire etc ...). Alors que l'approche CMP peut être réaliser avec des processeurs plus simple.
+
+Idée dans le piranha :
+ -> Mémoire secondaire partagée (non inclusive avec un niveau L1)
+ -> Cohérence des caches
+ -> architecture I/O
+
+Architecture générale :
+-----------------------
+
+ * CPU alpha possèdant un I et DCACHE dédié
+ * Tous ces couple Proc+Cache sont relié autours d'un Interconnect
+ * Sur cette interconnect, il y a également les caches L2 (donc partagés avec n'importe lequel des CPU)
+ * Sur chacun des caches L2 est connecté un controleur mémoire.
+ * Ce dernier à une liaison directer avec des RDRAM.
+ * Connecté sur le Bus, pour la communication avec le monde extérieur
+    - Home engine
+    - Remote engine
+ * Les 2 moteurs de protocoles sont connecté au routeur de paquet qui distribue les paquets entre les moteurs internes et file d'entrée et de sortie. 
+ * Le bus étant piloté par un module : system control
+
+Structure hiérarchique forte.
+
+Réseau de noeud Piranha :
+ - Les P-chip   => en interne possède 8 CPU alpha
+ - Les I/O-chip => Permet de faire la liaison avec le monde extérieur (Au lieu des 8 CPU, il n'y en a qu'un + un bloc I/O)
+
+D'après les concepteurs, un réseau peut aller jusqu'a 1024 noeuds avec un nombre quelconque de noeud I/O.
+Un des principes fondamental, est qu'un noeud I/O est traité de la même manière qu'un noeud de traitements.
+
+Architecture détaillée :
+------------------------
+
+CPU + L1 cache
+~~~~~~~~~~~~~~
+Processeur alpha de 500Mhz, 8 étages de pipeline classique (Ifetch, Decode, Execute (*5), Writeback).
+ -> Unité flottante, BTB, logic de prédécodage.
+2 caches séparé :
+ -> 64 ko, ass 2voies. Cache bloquant avec adresse Virt et Tag phy. 
+ -> TLB de 256, ass 4voies
+ -> Protocole de cohérence MESI
+ -> Non inclusif avec le niveau L2
+
+Intra-Chips Switch (ICS)
+~~~~~~~~~~~~~~~~~~~~~~~~
+Conceptuellement, c'est un crossbar.
+-> Uni-directionnel, interface Push-only
+-> ECC , bits de parités
+-> pré-allocation (spéculation)
+-> 2 priorités (low & high), un chip peut choisir la priorité désiré.
+
+Cache L2
+~~~~~~~~
+Cache unifié d'1Mo, découpé en 8 bancs qui sont ass 8voies (Remplacement round robin)
+-> Maintient de la cohérence intra-chip
+-> Non inclusif avec le niveau 1 de caches (Non dédoublement des instructions)
+-> write no allocate
+-> Duplication du registre de TAG du cache L1 associé au cache L2
+
+L1 envoie une requete mémoire à son banc L2. Celui-ci peut :
+ -> Servir directement la requête
+ -> La renvoie à un autre Cache L1
+ -> La renvoie à un autre protocle de cohérence
+ -> Obtient la donnée à par le contrôleur mémoire
+
+Contrôlleur Mémoire
+~~~~~~~~~~~~~~~~~~~
+Un Contrôlleur mémoire par cache L2.
+A une liaison rapide avec les RAMs,
+N'a pas de liaison direct avec l'ICS
+
+Protocole Engine
+~~~~~~~~~~~~~~~~
+Assure le support pour la mémoire partagé, 2 blocs spérarés :
+ -> "home engine"   responsable d'exporter la mémoire local a ce noeud
+ -> "remote engine" importe la mémoire qui se trouve dans un noeud distant
+
+Chaque bloc est a peu de chose près conçu de la même manière :
+* Input controller
+* microcode controlled execution unit
+* Ouput controller
+
+Une execution micoprogrammé assure la gestion entre les deux interfaces.
+
+Cohérence des caches : Read, Read-exclusive, Exclusive, Exclusive-without-data
+
+Interconnecte système
+~~~~~~~~~~~~~~~~~~~~~
+3 partie distinct :
+-> Output Queue
+-> Input  Queue
+-> Routeur
+
+Topologie indépendante, adaptatif, Buffer avec différents niveau de priorités, canaux virtuels
+
+Mise en place de dispositifs pour assurer la fiabilité, disponibilité et l'utilité des données :
+ - redondance sur les dispositifs mémorisants
+ - procetection CRC sur les chemins de donn"s
+ - protocle de recouvrement d'erreur
+ - enregistrement d'erreur
+ - Liens permuttable à chaud
+
+METHODOLOGIE D'EVALUATION
+-------------------------
+
+Utilisation d'un bench simulant des accès de clients sur des bases de données.
+ -> Oracle (logiciel)
+ -> SimOS-Alpha (Os pour processeur alpha assez fournit (gère le multi processeur, la mémoire virtuel ...)
+
+Comparaison de l'archi piranha avec :
+ - Un alpha21364 : un superscalaire Out of order, à 1Ghz, 2 niveaux de caches etc...
+ - un système piranha avec 8 procs (P8)
+ - un système piranha avec 1 proc  (P1)
+ - un proc superscalaire In order
+
+Constatation :
+ - le piranha 8 est relativement performant
+ - Le traffic dans l'interconnect local est d'autant plus grand qu'il y a de processeurs, surtout a cause des mécanisme de cohérence de cache (Forwarding vers d'autre cache L2)
+
+Remarque de fin :
+Les auteurs finissent par cette perspective :
+ => La question clé pour les designers des processeurs futures ne va pas être de savoir si on va employés des multi procs, mais de déterminer la bonne compensation entre le nombre de coeurs et la puissance de chaque coeurs. Et quel sera la meilleur hierarchie mémoire.
+@article{2000_hammond,
+  title={{The Stanford Hydra CMP}},
+  author={Hammond, L. and Hubbert, B.A. and Siu, M. and Prabhu, M.K. and Chen, M. and Olukotun, K.},
+  journal = 	 {Micro, IEEE},
+  year = 	 {2000}
+}
+
+07/12/2004
+
+MOTIVATION
+----------
+
+Les processeurs sont plus petits et rapide. Donc pour une même surface, nous avons une augmentation du "budget" de processeur.
+ -> Soit on augmente la complexité d'un mono-processeur
+ -> Soit on augment le nombre de mono-processeur simple sur un chip
+
+Parrallélisme:
+2 types de parrallélisme : ILP (Instruction level parrallelism) et TLP (Thread level parrallelism)
+Souvent la logique utilisé pour augmenter l'ILP fait augmenter le cycle d'horloge de manière quadratique.
+De plus il est limite à 4-6 instructions (cf 1991\_wall)
+
+Contrainte technologique :
+Délai causé par l'interconnection des portes (délai des nets) devient significatif => zone localement synchrone et globalement asynchrone. Un CMP peut faire en sorte de placer des processeurs simples dans les zones localement synchrones
+
+Temps de design:
+La conception d'un CMP s'appuie plus sur l'utilisation d'IP.
+
+Pourquoi les CMP ne sont pas utilisé?
+ -> Difficulté à convertir un programme pour mono-proc en multi-proc (Problème de consitence mémoire, synchronisation entre proc etc ...)
+ -> Les compilateurs parralléles sont encore très assistés par le programmeur
+
+DESIGN
+------
+
+Le chip Hydra est un chip multiprocessor (CMP) intégrant 4 processeurs MIPS possédant chacun un Icache et un Dcache L1, mais un niveau L2 partagé.
+Tous les controleurs des Caches L1 et le cache L2 sont sur le même bus. (Appellé bus d'écriture)
+Un autre bus prévut pour les échanges entre l'extérieur et le cache L2 mais avec possibilités de lecture des contrôleurs L1
+
+Protocole d'invalidation simple sur le bus d'écriture
+
+Il existe beaucoup d'application pour mono-processeur. Pour l'executer sur un système multi-proc, soit on sous utilise notre architecture, soit on ajoute de la thread-level speculation.
+L'hydra va utiliser la deuxième technique.
+
+thread-level speculation
+~~~~~~~~~~~~~~~~~~~~~~~~
+Prends une séquence d'instructions, la découpe de manière arbitraire en thread. Le hardware doit suivre ces threads. Si un thread réalise une lecture trop tôt (Donc un autre thread n'a pas encore fournit de résultat), le hard doit s'arranger pour que ce thread ce réexecute avec la bonne lecture.
+Grande complexité car on doit déterminer toute les possibilités de "vrai dépendances"
+
+Outre le cas normal, il y a 5 types de problèmes de cohérences :
+- Cas normal : début de boucle load X , fin de boucle write X
+- Renvoie de la donnée entre thread parralléle
+- Détection si les lectures sont "proche" (Dépendance RAW) : Au moment de faire un write sur X à l'itération i, alors le distribuer au load de l'itération i+1 (Forward data entre deux thread paralléle). 
+ => Mécanisme pour ce souvenir des traces d'execution (S'il y a eu précedement une lecture sur X dans l'itération i+1 lros de l'execution de l'instuction write sur X de l'itération i, alors il y a une erreur).
+- Annulation saine de l'exec spéculatif après violation 
+- Retirer les écritures spéculatives dans le bonne ordres (Dépendance WAW) (tjs l'itération la plus ancienne en premier) => Les écritures ne deviennent plus spéculative.
+- Fournir le rennomage mémoire (Dépendance WAR)
+
+Le système doit avoir un mécanisme pour décomposer en thread, et pouvoir les arreter les threads spéculatifs.
+
+Où découper les threads : En pratique : que lorsque l'on peut avoir plusieurs voie, càd boucle et appel de fonctions (Si la fonction ne retourne pas de résultats ou le résultat est facilement prédictible)
+Le speculation runtime system va choisir les 4 threads les moins spéculatifs et les executer (car il y a 4 procs).
+
+Le mécanisme de spéculation demande des médiums de communication rapide inter processor, sinon le processus mono thread risque de couter moins cher que sont équivalents découpés en plusieurs threads (spéculatif).
+
+Sur l'hydra, le matériel additionnel pour utiliser cette technique est placé dans 2 blocs matériels :
+- Ram de flags pour les caches L1 (est ce que la donnée contenu dans la ligne à été spéculativement lut ou écrite?)
+- Write buffers dans le cache L2 (Buffer d'écriture permettant de sauvegarder "sainement" les données dans le cache L2. (Garantie de donnée non spéculative)
+
+Comment cela fonctionne?
+~~~~~~~~~~~~~~~~~~~~~~~~
+- Un buffer est alloué à chaque thread en train d'être éxecuté sur ce système. Dès qu'un thread ne devient plus spéculative, alors les buffers écrivent dans la mémoire.
+- Pour contrôler le séquencement des threads, il y a un petit composant utilisant l'interface coprocesseur du mips.
+  |-> "speculation coprocessors"
+
+Classement de threads par degré de spécultation, quand un thread spéculatif d'ordre i envoie un message sur le writebus, seul les ctrls rattaché à des procs éxecutant un thread plus spéculatif (donc d'ordre > i) snoop le bus (rappel => utilisation de l'invalidation sur snoop)
+
+=> Lors d'un accès mémoire => Lecture en L1, si miss (surement invalidé) alors regarde dans son write buffer  puis dans les write buffer des threads de - en - spéculatif, et enfin dans le cache L2.
+
+COUT ET PERFORMANCE
+-------------------
+Cout        : augmente la surface de quelques pourcents.
+Performance : Programme difficille ou impossible à parralléser, cependant ce sont des applications hautements parralléles.
+@article{2000_sharangpani,
+  title={{Itanium processor microarchitecture}},
+  author={Sharangpani, H. and Arora, H.},
+  journal={Micro, IEEE},
+  volume={20},
+  number={5},
+  pages={24--43},
+  year={2000}
+}
+@article{2001_hinton,
+  title={{The microarchitecture of the Pentium 4 processor}},
+  author={Hinton, G. and Sager, D. and Upton, M. and Boggs, D. and Carmean, D. and Kyker, A. and Roussel, P.},
+  journal={Intel Technology Journal},
+  volume={1},
+  pages={2001},
+  year={2001}
+}
+@InProceedings{2001_nagarajan,
+  author = 	 { Ramadass Nagarajan   	  and
+                   Karthikeyan Sankaralingam 	 and
+                   Doug Burger 	 and
+                   Stephen W. Keckler},
+  title = 	 {A design space evaluation of grid processor architectures},
+  OPTcrossref =  {SBN ~ ISSN:1072-4451 , 0-7695-1369-7},
+  OPTkey = 	 {},
+  OPTbooktitle = {Proceedings of the 34th annual ACM/IEEE international symposium on Microarchitecture },
+  OPTpages = 	 {40-51},
+  OPTyear = 	 {2001},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 { Austin, Texas},
+  OPTmonth = 	 {},
+  OPTorganization = {},
+  OPTpublisher = { IEEE Computer Society },
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+02/02/2005
+
+En quoi consiste un Grid processors architecture?
+ -> tableau d'ALU avec un contrôle limité.
+ -> Les alu sont connecté par un réseau ou circule leur opérande
+ -> Les programmes sont éxécutés en mappant les blocs de manière statique et a executé les isntructions de manières dynamiques
+ -> Executions possible via une chaine d'alu (sorte de pipeline)
+
+Le GPA est conçut en vut d'avoir une grande fréquence d'horloge et une grande exploitation de l'ILP
+Le coeur de calcul d'un GPA consiste en une matrice 2D de noeuds. Chaque noeud contient un buffer d'instruction et une unité d'execution.
+-> noeud peuvent donc réaliser des calculs à grain fins
+-> les noeuds sont interconnecter avec un réseau dédié à la communication de données et d'opérande.
+-> Contrôle assuré par un mécanisme mappant les instructions sur les noeuds
+
+=> Equivalent à une approche VLIW : Ressources alloués statiquement par le compilo mais le lancement est dynamique
+
+MODELE D'EXECUTION
+------------------
+
+Modèle d'execution : traite des groupes d'instructions comme une unité atomique pour le fetch, mappage de ressources des unités d'execution et le commit.
+Dans ce modèle, les groupes d'instructions sont définit par le compileur.
+ -> Un groupe n'a pas de transfert interne de ctrl (c'est à dire un saut prit sera la dernière instruction d'un groupe) (Un bloc peut être un bloc de base ou une trace d'execution ...)
+ -> Données utilisé sont de 3 types : (Modèle Producteur - consommateur)
+    * entrée : valeur produite par un autre groupe et consommé par ce groupe
+    * sortie : valeur produite par le groupe et consommé par un autre groupe -> écriture des données dans un mémoire tampon jusqu'au commit
+    * temporaire : valeur produite et consommé par le groupe -> transimition des données en internes
+
+Compilateur assigne statiquement chaque instruction à un groupe d'alu. Un groupe ne peut être allouer à plus d'une instruction
+
+1) Un groupe est fétché et mapped sur les ALUs
+2) Chaque instruction dans le groupe est écrite dans les buffers d'instructions ( ~ station de réservations)
+3) Lecture des opérandes dans le banc de registres et placement des opérandes dans les alus.
+4) Execution de l'instruction
+5) Une fois que l'execution est terminé, le résultat est renvoyé vers l'alu consomatrice. (Ou vers le banc de registres)
+
+Destination encodé explicitement dans l'instruction
+
+6) Lorsque tte les instructions d'un groupe sont finis => commit : update de la mémoire
+7) Le groupe est libéré des ALUs
+8) Mappage du prochain groupe ...
+
+Il existe un branch register pour les résultats des branchements.
+
+Avantage
+--------
+-> Peu de structures larges impliqué dans l'execution (càd non centralisé, pas de fenêtre de lancement associative, pas de table de renommage de registres, peu d'accès en lecture et écriture simultané)
+-> Execution désordonnée (sans vérification de dépendance large, diffusion des bypass, réseau dédié au forward)
+
+Implémentation
+--------------
+
+ICACHEM -- REG --- REG --- REG --- REG
+            |  \ /  |  \ /  |  \ /  |
+            |  / \  |  / \  |  / \  |
+ICACHE --- ALU --- ALU --- ALU --- ALU --- DCACHE
+            |  \ /  |  \ /  |  \ /  |
+            |  / \  |  / \  |  / \  |
+ICACHE --- ALU --- ALU --- ALU --- ALU --- DCACHE
+            |  \ /  |  \ /  |  \ /  |
+            |  / \  |  / \  |  / \  |
+ICACHE --- ALU --- ALU --- ALU --- ALU --- DCACHE
+            |  \ /  |  \ /  |  \ /  |
+            |  / \  |  / \  |  / \  |
+ICACHE --- ALU --- ALU --- ALU --- ALU --- DCACHE
+
+          BLOC TERMINAISON ET TERMINAISON
+
+
+ALU rangé en matrice de n*m cases.
+Le bloc de terminaison détermine quel groupe d'instructions est mappé et quand celui-ci à terminé (dc commit)
+Chaque alu contient 
+ * des ports d'entrée pour les opérandes
+ * des buffers d'instructions et d'opérandes
+ * un routeur pour délivrer les résultats vers les ports de sorties
+Un prédicteur de branchement va prédire le succès de ce blocs et va fetché et mappé sur la grille le bloc suivant.
+
+Caractéristique influencant les performances :
+- Organisation des ALUs (nombre et position)
+- la latence du réseau d'unterconnection d'un noeud
+- le nombre d'I/O de chaque noeud
+
+Alternatives
+------------
+* Changer le design du réseaux de grille : Préreservations du flow, découpage du message, 
+* Chgt du système mémoire : Format d'instruction compressé, envoyant ce code compréssé au L1. Dcache ~ fifo pour maintenir la cohérence => Utilisation de technique de spéculation.
+* Spéculation de grille
+* Management des frames : Execution de multi thread, thread spéculatif 
+
+
+@article{2002_mukherjee,
+  title={{The Alpha 21364 network architecture}},
+  author={Mukherjee, SS and Bannon, P. and Lang, S. and Spink, A. and Webb, D.},
+  journal={Micro, IEEE},
+  volume={22},
+  number={1},
+  pages={26--35},
+  year={2002}
+}
+@article{2002_tendler,
+  title={{POWER4 system microarchitecture}},
+  author={Tendler, J.M. and Dodson, J.S. and Fields Jr, J.S. and Le, H. and Sinharoy, B.},
+  journal={IBM Journal of Research and Development},
+  volume={46},
+  number={1},
+  pages={5--25},
+  year={2002}
+}
+@Article{2002_ungerer,
+  author = 	 {T. Ungerer and 
+                  B. Robic   and
+                  J. Silc },
+  title = 	 {Multithreaded processors},
+  journal = 	 {The Computer Journal},
+  year = 	 {2002},
+  OPTkey = 	 {},
+  OPTvolume = 	 {45},
+  OPTnumber = 	 {3},
+  OPTpages = 	 {320-348},
+  OPTmonth = 	 {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+17/02/2005
+
+Contrainte de la conception d'un proc multi thread :
+ - Différente logique pour le calcul d'adresse
+ - Les threads doivent avoir une espaces d'adressage commun
+ - Extraction de thread de manière hardware ou software (compilo)
+
+-> implicite multi threading : Chaque architecture va executer de manière concurrentiel différent thread d'un même programme séquentiel (predication de branchement etc...)
+-> explicite multi threading : Execution d'un flots multi programmé
+
+But principal -> recouvrir la latence d'un thread par l'execution d'un autre.
+
+
+Mécanisme minimal :
+- Plusieurs PC
+- Mécanisme pour commuter les threads
+  |-> Potentiellement avoir plusieurs banc de registres permet d'augmenter la commutation
+
+3 approches :
+- multithreading imbriqué  (FMT) : Changement de thread à chaque cycle
+- multithreading bloqué    (VMT) : Changement de thread à chaque évenement (evt induiant une latence => ex div, miss etc ...)
+- multithreading simultané (SMT) : Plusieurs threads actifs en même temps
+
+Fine graine MT
+~~~~~~~~~~~~~~
+L'imbrication de plusieurs threads va limiter la perf de chaque thread
+ -> technique "dependance lookahead" : ajout de bits à chaque inst dans l'isa pour déterminer combien d'inst suivant n'a pas de dépendance avec celle-ci
+ -> technique d'imbrication : chgt de thread à chaque cycle
+
+Diverses "astuces" : Cray-MTA à au moins 128 contextes afin de masquer la latence de la mémoire étant de 128 cycles (Changement de contexte à chaque cycle)
+
+Coarse graine MT
+~~~~~~~~~~~~~~~~
+
+=> Execution d'un thread jusqu'a ce qu'une condition de changement de contexte est atteinte :
+
+ -> Modèle statique
+     -> Chgt explicite (Par instr "switch" ou une instruction "taggé")
+     -> Chgt implicite (Sur load, store, branch etc ...)
+ -> Modèle dynamique
+     -> Chgt sur miss de cache
+     -> Chgt sur evenement (interruption, trap ...)
+     -> Chgt sur profil d'utilisation (trop de chargemement (ou pas accès) etc ...)
+     -> Chgt conditionnel (instruction de switch conditionnelle)
+
+Un plus petit nombre de threads est nécessaire pour atteindre de bonne performance.
+-> Pénalisation d'un thread remplicant souvent la condition de changement de contexte
+
+Avantage de Modèle statique -> le changement de contexte peut être détecter tôt dans le pipeline (Voir tjs dans le même étage).
+
+Simultaneous MT
+~~~~~~~~~~~~~~~
+FMT et CMT sont très performant pour des processeurs scalaire ou VLIW (un flut d'instruction)
+
+L'unité d'IFETCH peut être partagé par plusieurs threads, (Dans ce cas on augmente la probabilité d'aller chercher des instructions non spéculative). 
+De plus l'unité IFECTH peut choisir quel thread privilégié pour aller chercher ces instructions.
+
+ -> Partage de ressources : tous les thread partage un maximum de ressources (ifetch buffer, décodeur, banc de registres, fenêtre d'instruction etc ...)
+ -> Duplication de ressources : Chaque buffer interne appartient à un thread spécifique. Les étages internes peuvent être multiplexé ou dupliqué entre les threads.
+
+Priorité :
+ RR        : Round-Robin
+ ICOUNT    : La priorité est donné au thread ayant le moins d'instructions dans les étages decodes, rename et queue
+ BRCOUNT   : La priorité est donné au thread ayant le moins de branchement (donc le - spéculatif)
+ MISSCOUNT : La priorité est donné au thread ayant le moins de DCACHE miss
+ IQPOSN    : La priorité est donné au thread ayant les plus vieille instructions
+
+SMT peut aussi executer les deux chemins d'un branchement. 
+
+Diverses technique :
+~~~~~~~~~~~~~~~~~~~~
+
+- Division d'un thread en collection de tâches qui sont distribués dans les unités d'executions.
+  -> processeur de trace
+- Processeur "super-threadé" un pipeline d'execution/thread,  peut être alloué par le compilateur
+- dynamic multi threading processor : Création de threads de manière dynamique (sur appel de procédure et déroulement de boucle ...)
+- microthread -> Création d'un microthread de manière explicite => préfetech une donner, calculer en avance la condition de saut ...
+              -> Utilisation des threads "idle"
+- Execution des 2 branches d'un saut -> utilisation des threads "idle"
+                                     -> utilisation de la prédication
+
+Multi-threading et le temps réel
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-> Le chgt de contexte "rapide" est un avantage clé pour les systèmes temps réel.
+-> Le multi threading permet d'avoir la routine d'intérruption et le programme principale dans 2 threads du processeurs
+
+Chip multi processors
+---------------------
+Symetric multiprocessors (SMP) et le Distribued shared Memory multiprocessors (DSM) -> espace mémoire uniforme (UMA)
+un DSM peut également ne pas maintenir la propriété d'espace mémoire uniforme => Communication par passage de message
+
+Cohérence des caches par snooping (SMP) ou directory based (DSM).
+
+3 alternatives de CMP :
+ - mémoire partagé (SMP typique)
+ - L2 partagé
+ - L1 partagé
+partagé les niveaux de caches diminue le délai de communication iter-processeur. Plus d'espaces pour les threads
+
+@article{2003_koufaty,
+  title={{Hyperthreading technology in the netburst microarchitecture}},
+  author={Koufaty, D. and Marr, DT},
+  journal={Micro, IEEE},
+  volume={23},
+  number={2},
+  pages={56--65},
+  year={2003}
+}
+@article{2003_mcnairy,
+  title={{Itanium 2 processor microarchitecture}},
+  author={McNairy, C. and Soltis, D.},
+  journal={Micro, IEEE},
+  volume={23},
+  number={2},
+  pages={44--55},
+  year={2003}
+}
+@InProceedings{2003_sankaralingam,
+  author = 	 { Karthikeyan Sankaralingam   	  and
+                   Ramadass Nagarajan 	 and
+                   Haiming Liu 	 and
+                   Changkyu Kim 	 and
+                   Jaehyuk Huh 	 and
+                   Doug Burger 	 and
+                   Stephen W. Keckler 	 and
+                   Charles R. Moore},
+  title = 	 {Exploiting ILP, TLP, and DLP with the polymorphous TRIPS architecture},
+  OPTcrossref =  { ISBN:0-7695-1945-8},
+  OPTkey = 	 {},
+  OPTbooktitle = {Proceedings of the 30th annual international symposium on Computer architecture},
+  OPTpages = 	 {422-433},
+  OPTyear = 	 {2003},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {Volume 31 Issue 2},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {San Diego, California},
+  OPTmonth = 	 {May},
+  OPTorganization = {},
+  OPTpublisher = {ACM Press},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+01/02/2005
+
+Architecture polymorphe : TRIPS
+Peut être configuré pour différente granularité et types de parallélisme => Instruction level paralelism, Thread LP Data LP.
+
+Processeur : Soit on a un général-purpose microprocesseur qui sait tout ou alors on spécialise le processeur :
+ -> Bureautique, network, serveur, scientifique, graphique ou signaux digitaux.
+
+La spécialisation à un défaut :
+ -> Le processeur devient peut performant dans un domaine qui n'est pas sa spécialisation.
+
+Les CMP peuvent être vut de 2 manières :
+ -> Homogène   : Ensemble de processeurs identiques
+ -> Hétérogène : Regroupement de processeurs spécialisé -> mappage d'une application sur cet architecture ...
+    |-> Défauts : * Augmentation de la compléxité
+                  * Sous utilisation des ressources si un thread n'a pas besoin de la spécialité
+
+Une architecture polymorphique est capable de configurer le hard pour exécuter de manière efficace un large spectre d'applications.
+-> Approche synthétique : Utilisation de CMP à grain fin -> synthése de plusieurs éléments de calcul en une large entité logique.
+-> Approche partitionné : Utilisation de CMP à grain grossier => Partitionnement de l'entité la plus large pour exploiter le parrallélisme à grain fin.
+
+Une architecture polymorphe ne va pas surpasser une architecture dédié, mais devrait bien se comporter avec un large spectre d'application.
+
+TRIPS -> Architecture polymorphique, approche partitionné combiné avec un coeur de processeur en grille à grain grossier et avec un système  mémoire on chip adaptatif.
+Objectif -> Avoir un coeur d'architecture qui peut aussi bien être très large que minuscule (scalable)
+
+Architecture TRIPS
+------------------
+Architecture orienté blocs.
+Un programme compilé pour le TRIPS est partitionné en bloc large d'instruction avec un seul point d'entrée, sans boucle et plusieurs point de sorties
+Les blocs valide de manière atomique et les intérruptions sont "blocs précis". (Plus de décision au point de vue instruction mais au point de vue bloc)
+
+Compilateur est résponsable de l'allocation statique de chaque bloc d'instruction dans le le système (Dépendance explicite).
+
+Une opération de flot usuel du proc : Chgt d'un boc depuis la mémoire, chgt dans le moteur de calcul, execution,  reporter les resultats dans la mémoire, chgt d'un autre bloc ...
+
+-> TRIPS est constitué de 4 blocs de 16 coeurs polymorphe. Une grille de 32Ko de mémoire connecter en quadrillage, des ctrl mémoires distribué pour connecter de la mémoire externe.
+-> Chaque blocs est constitué de d'un tableau de noeud d'execution, Il y a un ICACHE L1 par ligne dans la matrice , et une partie du banc de registre par colonne. Sur chaque ligne (droite) il y a également un DCACHE L1. En dessous de la matrice il y a le block de logique de ctrl qui s'occupe du séquencement de ce bloc et de la sélection du prochain bloc. Les caches L1 sont connecté au cache L2 a l'aide d'un interconnect.
+
+-> Chaque noeud d'execution contient une IU, FPU, des stations de réservations, un routeur de connections I/O, un noeud est directement connecter avec ses plus proches voisins, mais peut communiquer avec n'importe quel noeud dans la matrice
+-> Chaque stations de réservations stocke des isntructions et 2 opérandes sources.
+
+3 types principaux de ressources :
+ * hardcoded (ressources utilisées dans tous les mode et non modfiable) ex : interconnect, unité d'execution, cache L1
+ * ressources utilisé dans tous les modes et modifiable
+ * ressources non nécessaires dans tous les modes et pouvant être désactivés.
+
+Gestion du ILP : D-morph
+------------------------
+-> La configuration D-morph traite les buffers d'instructions comme un large, distribué fenêtre de lancement d'instructions. Possibilé d'avoir de l'execution our-of-order
+Le buffer d'instruction doit fournir une large bande passante de chargement d'instruction, un contrôle aggréssif et une spéculation sur les données, une mémoire à faible latence et qui préserve les accès mémoires de manière séquentiels
+
+Vue des buffers comme en trois dimension (x,y sont les coordonées physique dans un bloc et z correspond au nombre de place d'instructions dans chaque noeuds d'ALU.
+Le compilateur va découper le code en hyperblock (morceau de code communicant dans un graphe en 3D et dont il n'y à qu'un net de sortie.) Mappage de ces blocs dans des frames. (Différents slots de buffers sur le même noeuds d'alu). Les A-frame est la zone contenant tous les frame mappant un hyperblock.
+
+Spéculation de Multiblock : Les A-frames vide vont spéculativement chargé et executé un hyperblock. Les A-frames sont traités de manière circulaire : Le buffer de tête étant le moins spéculatif
+
+Instruction fetching -> pc pointe sur les têtes d'hyperblocks. Prédiction sur le prochain hyperblock (et non sur la prochaine instruction). Hyperblock sont codés du style VLIW.
+Interface mémoire : Entrelacement des bancs mémoires -> accès simultané a des adresses non conflictuelles.
+Mémoire secondaire configure le réseau de bank comme un cache à accès non uniform.
+
+Résumé : Prédiction  de fin assuré, grande bande passante pour l'ifecth, Dcache partitioné, execution concourente d'hyperblock (avec le réenvoie des valeur d'interbloc), le Dmorph est capable d'utiliser le buffer d'instrcution comme une fenêtre de lancement out of order
+
+Gestion du TLP : T-morph
+------------------------
+-> fournit un mappage un contrôle pour les multi thread.
+SMT -> cache et unité d'execution sont partagé.
+
+2 stratégies : 
+ - processeurs de lignes -> Partage la matrice d'ALU, en alloue une ou plusieurs lignes par threads. -> chaque thread à un nombre de  ICACHE et un DCACHE proportionnel au nombre de lignes alloué. Attention : La distance du banc de registre n'est pas uniforme (pénalise les lignes inférieurs)
+ - processeurs de frames -> Partage le processeur par un ensemble de frames
+
+|-> Les frames sont partagé entre thread. Un l'intérieur d'un thread, les frmae peuvent être spéculatif (cf D-morph)
+|-> T-morph maintient n PC et n historique de banc de registres
+
+Gestion du DLP : S-morph
+------------------------
+TRIPs est principalement prévut pour les flots multimédia et les calculs scientifiques => contient beaucoup de parrallélisme a niveau donnée
+
+-> fusion des Aframe pour un Super Aframe => Les boucles sont déroullées
+-> mapping reuse : un bloc est gardé dans les stations de réservations pour être utilisé plusieurs fois
+-> Dans les caches, ajout d'une fonctionnalité DMA
+@InProceedings{2004_chaudhuri,
+  author = 	 {Mainak Chaudhuri   and
+                  Mark Heinrich},
+  title = 	 {SMTp: An Architecture for Next-generation Scalable Multi-threading},
+  OPTcrossref =  {},
+  OPTkey = 	 {},
+  OPTbooktitle = {Proceedings of the 31st annual international symposium on Computer architecture},
+  OPTpages = 	 {124-136},
+  OPTyear = 	 {2004},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {0},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {München, Germany},
+  OPTmonth = 	 {},
+  OPTorganization = {},
+  OPTpublisher = {IEEE Computer Society},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+17/03/2005
+
+Modification d'uns SMT pour intégré un protocol de cohérence des threads afin de le placer dans un système à mémoire distribué (DSM).
+
+DSM sont scalable, mais s'ils n'utilisent pas de protocoles de snoop. Le directory based impose des structations de tableaux.
+
+Architecture
+------------
+
+Le processeur à une architecture classique :
+ 9 étages : fetch, decode, issue, lecture1, lecture2, exec, cache accès, commit
+fetch suit la politique ICOUNT (cf 1996\_tullsen)
+=> Il y a 2 threads. Tous est partagé sauf pile des adresses de retours, table de mappage, prédicteur dynamqiue
+
+Un noeud est séparé en deux parties :
+ - le coeur du proc
+ - le contrôlleur mémoire
+
+Le protocole de cohérence est lié à un thread. Celui-ci n'execute que cela (programme dédié donc n'est pas visible de l'extérieur). Il n'est pas aborder de solution dynamique (dès que la cohérence est nécessaire, un thread doit executer ce dernier)
+
+Afin d'éviter les deadlocks (applications tournants sur les threads et le threads gérant le protocole partagent les même ressources (file d'execution etc ...)), il y a des ressources dédié au threads executant le protocles des threads.
+
+Performance
+-----------
+3 limitations :
+- Le protocole de thread souffre de la latence du pipeline
+- Le nombre de registre entiers
+- Le DCACHE-L1 et les CACHE-L2 sont partagés entre les applications tounants sur les threads et le protocole de cohérences des threads
+
+@article{2004_dolbeau,
+  title={{CASH: Revisiting hardware sharing in single-chip parallel processor}},
+  author={Dolbeau, R. and Seznec, A.},
+  journal={Journal of Instruction-Level Parallelism},
+  volume={6},
+  pages={1--16},
+  year={2004}
+}
+@article{2004_kalla,
+  title={{IBM Power5 chip: a dual-core multithreaded processor}},
+  author={Kalla, R. and Sinharoy, B. and Tendler, JM},
+  journal={Micro, IEEE},
+  volume={24},
+  number={2},
+  pages={40--47},
+  year={2004}
+}
+@article{2004_kumar,
+  title={{Conjoined-Core Chip Multiprocessing}},
+  author={Kumar, R. and Jouppi, N.P. and Tullsen, D.M.},
+  journal={Proceedings of the 37th annual IEEE/ACM International Symposium on Microarchitecture},
+  pages={195--206},
+  year={2004},
+  publisher={IEEE Computer Society Washington, DC, USA}
+}
+
+@InProceedings{  2004_wang,
+  author = 	 {Nicholas J. Wang and
+		  Justin Quek      and
+                  Todd M. Rafacz   and 
+                  Sanjay J. Pate},
+  title = 	 {Characterizing the Effects of Transient Faults on a High-Performance Processor Pipeline},
+  OPTcrossref =  {In the Proceedings of the 2004 International Conference on Dependable Systems and Networks},
+  OPTkey = 	 {},
+  OPTbooktitle = {},
+  OPTpages = 	 {},
+  OPTyear = 	 {2004},
+  OPTeditor = 	 {},
+  OPTvolume = 	 {},
+  OPTnumber = 	 {},
+  OPTseries = 	 {},
+  OPTaddress = 	 {Florence , ITALY},
+  OPTmonth = 	 {june},
+  OPTorganization = {},
+  OPTpublisher = {},
+  OPTnote = 	 {},
+  OPTannote = 	 {}
+}
+
+30/11/2004
+
+Moins de 15 \% des corruptions binaires sont visibles du logiciel, des techniques simples d'overhead diminues de 75\% des fautes.
+
+D'ou viennent les fautes :
+ - Sources externe (pulsation electro magnétique)
+ - Sources interne (fuite, bruit da'alimentation ...)
+
+Pour caractériser ses fautes, ils ont définit un modèle de processeur :
+ - ISA alpha
+ - Superscalaire, ordonnacement dynamique (à 32 entrées)
+ - execution spéculative
+ - prédiction des dépendances mémoires
+ - 12 étages de pipelines
+ - 6 inst lancées/cycle
+
+4 types d'erreurs :
+ - Correspondances à un état de la micro architecture
+ - Arret prématuré de la tâche
+ - Corruption d'une donnée
+ - Rien sur le comportement
+
+85\% des fautes sont masqués
+ 3\% sont invisibles
+12\% réalise une execution erronée
+
+=> Les registres visibles sont les plus vulnérables
+
+Types d'erreurs dut à une execution erronnée :
+ - Inconsistence du banc de registres
+ - Inconsistence mémoire
+ - deadlock ou livelock
+ - Accès à une page virtuel invalide (Inst ou data)
+ - Part en exception
+ - Réalise une instruction non demandé
+ 
+Mécanisme de protection :
+ - Timeout => Evite les lock
+ - Code correcteur d'erreur => sur le banc de registres et sur le pointeur de ce banc (register renaming)
+ - Bit de parité => sur le registre IP (il traverse tous le pipeline)
+@article{2005_kongetira,
+  title={{Niagara: a 32-way multithreaded Sparc processor}},
+  author={Kongetira, P. and Aingaran, K. and Olukotun, K.},
+  journal={IEEE Micro},
+  volume={25},
+  number={2},
+  pages={21--29},
+  year={2005}
+}
+@article{2005_mcnairy,
+  title={{Montecito: a dual-core, dual-thread Itanium processor}},
+  author={McNairy, C. and Bhatia, R.},
+  journal={Micro, IEEE},
+  volume={25},
+  number={2},
+  pages={10--20},
+  year={2005}
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/poster-jnrdm_2007/fr/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/poster-jnrdm_2007/fr/root.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/poster-jnrdm_2007/fr/root.tex	(revision 30)
@@ -0,0 +1,195 @@
+\setlength{\columnseprule}{0pt}
+\renewcommand{\labelitemi}{$\star$}
+\renewcommand{\labelitemii}{$\star$}
+
+%%%% Begin of Multicols-Environnent
+\begin{center}
+  {\it Ceci est une étude de performance sur l'incidence du partage par les contextes matériels d'un processeur, de ces caches de niveau 1, de sa partie opérative et de sa partie exécutive. 
+    Nous montrons que le partage de la partie exécutive n'a que peu d'incidence sur les performances, alors que le partage des caches fait perdre 10\% de performances et que le partage de la partie opérative fait tomber les performances d'un facteur de 2,7 entre un CMP de degré 4 et un SMT de même degré. }
+\end{center}
+%\vspace*{1cm}
+\Section{\large{Là où tous commence}}
+	{
+	  \begin{multicols}{3}
+	    
+	    {\bf Exploitation des différentes formes de parallélisme}
+
+	    \begin{description}
+	    \item[Intra flot :] Exploitation de l'ILP : les instructions indépendantes entre elles peuvent s'exécuter en parallèle\newline
+	      Limitation intrinsèque au software. (La taille des paquets contient au maximum 3 et 5 instructions) 
+	    \item[Inter flot :] Exploitation du TLP   : les instructions sont prisent de plusieurs contexte. \newline
+	      Limitation intrinsèque au système cible. (L'application doit pouvoir être découpée en tâche équilibrée)
+	    \end{description}
+
+	    \printgraph{GENERAL_type_of_multi_thread}{0.5}
+
+	    \begin{description}
+	    \item[CMP     :] L'intégralité des ressources d'un coeur sont dédiées   à un contexte. (\cite{2000_barroso}) %, \cite{2000_hammond})
+	    \item[SMT     :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes. (\cite{1996_tullsen})%, \cite{2003_koufaty})\\
+	      Dans le cas où il n'y a qu'un seul thread à exécuter, ce dernier pourra utiliser l'intégralité des ressources du processeur.
+	    \item[Hybride :] Multitude de possibilité de partage des ressources internes. (\cite{2004_kalla}) %, \cite{2005_mcnairy})\\
+	      Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes.
+	    \end{description}
+
+	  \end{multicols}
+}
+	
+%\vspace*{1cm}
+	
+\Section{\large{Sous le capot}}
+{
+  \begin{multicols}{2}
+    
+    \printgraph{MORPHEO_micro_architecture-overview}{0.48}
+    
+    \begin{multicols}{2}
+      
+      {\bf Services Offerts}
+      
+      \begin{itemize}
+      \item Configuration d'une instance
+      \item Génération du VHDL synthétisable
+      \item Simulation haut niveau ({\it SystemC})
+      \item Outils de visualisation architecturale
+      \item Lors de la simulation : 
+	\begin{itemize}
+	\item Génération de TestBench pour tester le VHDL
+	\item Génération de Statistiques
+	\end{itemize}
+      \end{itemize}
+      
+      \printgraph{MORPHEO_service}{0.48}
+      
+    \end{multicols}
+  \end{multicols}
+}
+
+\Section{\large{Expérimentations}}
+{
+  \begin{multicols}{3}
+    {\bf Incidence du partage des caches, des Unités d'exécutions et de la partie opérative.}
+    
+    \printgraph{MORPHEO_micro_architecture-groupement}{}
+
+    
+    \printgraph{simulation_all}{}
+
+    \begin{itemize}
+    \item Benchmark : SPECINT2000 (164.gzip, 175.vpr, 181.mcf, 255.vortex, 256.bzip2, 300.twolf). 
+    \item Pour les librairies standard (libc et libm) ainsi que les fonctions bas niveaux (read, write, open, close ...), nous utilisons la librairie {\it Newlib}. 
+    \item Détermine l'accélération de l'execution parrallèle sur l'execution séquentiel
+    \end{itemize}
+	
+  \end{multicols}
+}
+
+%\begin{multicols}{3}
+%{
+%  L'expérimentation ce fait avec le générateur de processeur Morpheo (``Multi ORganisation Processor with HEterogeneous and Open architecture'').
+%
+%  %Notre approche consiste à tester l'incidence du partage des caches, des Unités d'exécutions et de la partie opérative. 
+%  
+%  Considérons ces trois degrés de partage :
+%  \begin{description}
+%  \item[Coeur              :] Les coeurs   ce partage les caches de niveaux 2 et les unités d'exécutions. 
+%  \item[Unité de lancement :] Les unités de lancement ce partage les ports des caches de niveaux 1 et les unités d'exécutions. 
+%  \item[Contexte           :] Les contextes se partagent l'accès au décodeur, au Icache et au prédicteur de branchement. 
+%  \end{description}
+%
+%  %\printgraph{MORPHEO_micro_architecture-overview}{0.48}
+%  \printgraph{MORPHEO_micro_architecture-groupement}{}
+%
+%}
+%
+%\Section{\large{Plate-forme logicielle}}
+%{
+%  \begin{itemize}
+%  \item Sélection de 6 benchmarks parmi ce proposé dans les SPECINT2000 (164.gzip, 175.vpr, 181.mcf, 255.vortex, 256.bzip2, 300.twolf). 
+%  \item Chaque architecture est soumise à une charge de travails composée de 15 simulations.%(Le nombre de simulations est décrit par la combinaison $C_{nb\_benchmarks}^{nb\_threads}$). 
+%  \item Pour les librairies standard (libc et libm) ainsi que les fonctions bas niveaux (read, write, open, close ...), nous utilisons la librairie {\it Newlib}. 
+%  \end{itemize}
+%}
+%
+%\Section{\large{Résultats}}
+%{
+%  {\bf Méthodoligie :}\\\\
+%  Pour chaque instance : 
+%  \begin{itemize}
+%    \item 2 ensembles de simulations
+%      \begin{itemize}
+%      \item MT = moyenne du nombre de cycles pour exécuter toutes les simulations de 4 benchs en parallèles.
+%      \item ST = moyenne du nombre de cycles pour exécuter toutes les simulations de 4 benchs en séquentiels.
+%      \end{itemize}
+%    \item Chaque simulation ce fait sur 110 millions de cycles. Les 10 premiers millions sont ignorés afin de chauffer les caches et les unités de prédictions. 
+%    \item A la fin de l'ensemble des simulations, le rapport MT/ST nous donne le speed-up du multi-threading sur le single-threading
+%  \end{itemize}
+%  
+%  \printgraph{simulation_all}{}
+%
+%
+%  {
+%    {\bf Partage du cache}
+%    \begin{itemize}
+%    \item {\it X4-4\_1\_1-2 : 3,92} - 4 I/D caches L1 de 2k chacun pour 1 contexte.
+%    \item {\it X4-2\_2\_1-2 : 3,63} - 2 I/D caches L1 de 4k chacun pour 2 contextes.
+%    \item {\it X4-1\_4\_1-2 : 3,27} - 1 I/D cache  L1 de 8k chacun pour 4 contextes.
+%    \end{itemize}
+%  }
+%  {
+%    {\bf Partage de la partie exécutive}
+%    \begin{itemize}
+%    \item {\it X4-2\_2\_1-2 : 3,63} - 4 groupes de 2 ALUs pour 1 contexte.
+%    \item {\it X4-2\_2\_1-4 : 3,41} - 2 groupes de 4 ALUs pour 2 contextes.
+%    \item {\it X4-2\_2\_1-8 : 3,38} - 1 groupe  de 8 ALUs pour 4 contextes.
+%    \end{itemize}
+%  }
+%  {
+%    {\bf Partage de la partie opérative}
+%    \begin{itemize}
+%    \item {\it X4-1\_1\_4-8 : 1,46} - 1 cluster  possédant 1 UL  avec 4 contextes chacun.
+%    \item {\it X4-1\_2\_2-8 : 2,37} - 1 cluster  possédant 2 ULs avec 2 contextes chacun.
+%    \item {\it X4-1\_4\_1-8 : 2,94} - 1 cluster  possédant 4 ULs avec 1 contexte  chacun.
+%    \item {\it X4-2\_1\_2-8 : 2,51} - 2 clusters possédant 1 UL  avec 2 contextes chacun.
+%    \item {\it X4-2\_2\_1-8 : 3,38} - 2 clusters possédant 2 ULs avec 1 contexte  chacun.
+%    \item {\it X4-4\_1\_1-8 : 3,94} - 4 clusters possédant 1 UL  avec 1 contexte  chacun.
+%    \end{itemize}
+%  }
+%}
+%%
+%%\Section{\large{Métrique}}
+%%{
+%%  \begin{itemize}
+%%  \item Obtenir le meilleur compromis Performance / Complexité. 
+%%    \begin{itemize}
+%%    \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks.
+%%    \item Compléxité  : surface occupée du FPGA.
+%%    \end{itemize}
+%%  \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface).
+%%    \begin{itemize}
+%%    \item Gain en performance : rapport entre la performance MT sur la performance ST.
+%%    \item Coût en surface     : rapport entre la surface     MT sur la surface     ST.
+%%    \end{itemize}
+%%  \end{itemize}
+%%}
+%%
+
+\Section{\large{Quelques pistes à suivre}}
+{
+  \begin{multicols}{3}
+
+  Des travaux équivalents ont été réalisés. 
+  
+  \begin{description}
+  \item[\cite{2004_dolbeau} :] Étude de l'influence du partage des unités à latence longue (multiplication, division...), du prédicteur de branchement, ainsi que des caches Instructions et Données. 
+    %Pour ce faire, ils ont implémentés l'architecture {\bf CASH} (CMP And SMT Hybrid) qui consiste en 4 coeurs ce partageant les ressources cités. 
+  \item[\cite{2004_kumar} :] Étude en terme de performance d'exécution mais également en terme de surface. 
+    Les blocs concernés sont les unités flottantes, les caches de premiers niveaux, et enfin les ports du crossbar reliant les Caches à la mémoire.  
+    %Ici l'équipe de Tullsen à validée leurs hypothèses sur un système à 8 coeurs. 
+    %Le partage des ressources ce fait entre deux coeurs voisins. 
+  \end{description}
+
+  {\small
+  \bibliography{\dircommon/bibliographie}
+  }
+  \end{multicols}
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex	(revision 30)
@@ -1,278 +1,296 @@
-\section{Besoins}
+\section{Motivations}
 
 \ContentsCurrent
 
-\slidetitle{Besoins}
-	   {Besoins pour les processeurs embarquées :
-	     
-	     \begin{itemize}
-	     \item Maîtrise du système
-	     \item Souplesse
-	     \item Performance
-	     \end{itemize}
-	   }
+\slidetitle{Motivations}
 	   {
-	     Où : téléphone portable, baladeur mp3/vidéo, automobile ...
-
+	     Sécurité du hardware :
 	     \begin{description}
-	     \item[Maitrise du système :] Les processeurs généralistes sont utilisés dans un vaste échantillon d'application. Ceci touche également la sécurité.
-	     \item[Souplesse           :] Pour un concepteur de système embarqués : bien dimensionner son système 
-	     \item[Performance         :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité.
-	     \end{description}
-	   }
-
-\subsection{Maîtrise du système}
-\slidetitle{Besoin de la Maîtrise du système}
-	   {
-	     {\bf Plate-forme de confiance totale}
-
-	     \begin{itemize}
-	     \item Projet Open
-	     \item ISA Open
-	     \item Instructions customisables
-	     \end{itemize}
-	   }
-	   {
-	     Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale. 
-
-	     Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ...
-%	     On doit supposer que la mémoire d'instruction et de donnée ce trouve en milieu accéssible par les pirates. Leur chiffrement en devient obligatoire.
-%
-%	     En hard dans le proc? cache? interconnect? I/O?
-	   }
-
-
-\subsection{Souplesse}
-\slidetitle{Besoin de Souplesse}
-	   {
-	     {\bf Adapation aux besoins des concepteurs}
-
-	     \begin{itemize}
-	     \item Processeur hautement paramètrables
-	     \item Ressources internes hétérogènes
-	     \item FPGA
-	     \end{itemize}
-	   }
-	   {
-	     Souplesse : s'adapter aux besoins des concepteur de SoC. 
-
-	     \begin{description}
-	     \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur
-	     \item[Hétérogènes :] En découle des paramètres 
-	     \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC
-	     \end{description}
-	   }
-
-\subsection{Performance}
-\slidetitle{Besoin de Performance (1) - ILP vs TLP}
-	   {
-	     {\bf Exploitation des différentes formes de parallélisme}
-	     
-	     Paquet d'instruction pouvant s'éxecuter en parallèle :
-	     \begin{itemize}
-	     \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions)
-	     \item {\it Inter flot} : exploitation du TLP  \newline limitation intrasèque au système cible
-	     \end{itemize}
-	   }
-	   {
-	     \begin{itemize}
-	     \item ILP : superscalaire, OutOfOrder, Spéculation
-	     \item TLP : CMP, SMT 
-	     \end{itemize}
-	   }
-
-\slidetitle{Besoin de Performance (2) - CMP vs SMT}
-	   {
-	     \printgraph{GENERAL_type_of_multi_thread}{0.5}
-	     
-%	     (schéma)
-%	     
-%	     Comparaison théorique de 5 types d'architectures :
-%	     ||Mono Coeur           ||Mono Contexte           ||Largeur infini||Idéal       ||
-%	     ||Mono Coeur           ||Mono Contexte           ||Largeur 4     ||Monolithique||
-%	     ||Multi Coeur d'ordre 4||Mono Contexte           ||Largeur 1     ||CMP         ||
-%	     ||Mono Coeur           ||Multi Contexte d'ordre 4||Largeur 4     ||SMT         ||
-%	     ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2     ||CMP de SMT  ||
-	   }
-	   {
-	     \begin{itemize}
-	     \item A et B : 17 instructions en 7 UT idéale
-	     \item (1) : 14 UT
-	     \item (2) : 17 UT, 34 slot vide, occupation 50\%
-	     \item (3) : 12 UT, 14 slot vide, occupation 70\%
-	     \item (4) : 11 UT, 10 slot vide, occupation 77\%
-	     \end{itemize}
-	   }
-\slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT}
-	   {
-	     \begin{description}
-	     \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées   à un contexte.
-	     \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes.
-	     \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\
-	       Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes.
+	     \item[Ancienne tendance :] IPs (Intellectual Propritie) fermées labelisés sécuritaires. 
+	     \item[Nouvelle tendance :] Ouverture des IPs, intégration de System On Chip (SOC)
 	     \end{description}
 	   }
 	   {
-	     Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ...
+	     
 	   }
 
 
-\section{Solution}
-\ContentsCurrent
-\subsection{Initiatives actuelles}
-\slidetitle{Initiatives actuelles}
-	   {
-	     Tous les processeurs sont des RISC scalaires.
-
-	     \begin{description}
-	     \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes.
-	     \item[Leon 2        :] 32 bits, 5 étages.
-	     \item[Leon 3        :] Leon 2 en 7 étages.
-	     \item[OpenSparcS1   :] 1 coeur 64bits, 6 étages et CMT 4.
-	     \item[OpenSparcT1   :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara.
-	     \item[Micro32       :] 32 bits, 6 étages.
-	     \item[OpenFire      :] 32 bits, 3 étages. Dérivés du MicroBlaze
-	     \item[aeMB          :] 32 bits, 3 étages. Dérivés du MicroBlaze
-	     \end{description}
-	   }
-	   {
-	     \begin{description}
-	     \item[OpenRISC 1200 :] Présence icache, dcache, immu, dmmu. Taille des caches, des opérandes, du banc de registres. Matériel spécifique : div, rotate, mul, mac.
-	     \item[Leon 2 et 3   :] Présence de div, mul, mac, floating point. Taille du banc de registres . Nombre de load delai. Configuration avancé du cache et de la MMU (fetch, decod, execute, memory, write) (fetch, decod, register access, execute, memory, exception, write)
-	     \item[OpenSparc     :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur.
-	     \item[Micro32       :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes.
-	     \item[OpenFire      :] 3 étages (Fetch, Decod, Execute). Faiblement configurable (largeur des données, espace d'addressage, presence de mul et de cmp). Aucun support de caches
-	     \item[aeMB          :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage)
-	     \end{description}
-	   }
-
-\slide     {
-	     \printgraph{GENERAL_Art_of_State-Comparaison}{0.8}
-	   }
-	   {
-	   }
-\subsection{Solution proposée}
-\slidetitle{Solution proposée}
-	   {
-	     \begin{itemize}
-	     \item Partir d'une micro-architecture HighPerf.
-	     \item Ajout de la gestion du multi-thread.
-	     \item Rendre paramétrable les ressources internes.
-	     \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA.
-	     \end{itemize}
-	   }
-	   {
-	     Pentium 4, MipsR10000, Power5
-	   }
-	   
-\subsection{Métrique}
-\slidetitle{Métrique}
-	   {
-	     \begin{itemize}
-	     \item Obtenir le meilleur compromis Performance / Complexité. 
-	       \begin{itemize}
-	       \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks.
-	       \item Compléxité  : surface occupée du FPGA.
-	       \end{itemize}
-	     \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface).
-	       \begin{itemize}
-	       \item Gain en performance : rapport entre la performance MT sur la performance ST.
-	       \item Coût en surface     : rapport entre la surface     MT sur la surface     ST.
-	       \end{itemize}
-	     \end{itemize}
-	   }
-	   {
-	     benchmark : SPECINT2k, Dhrystone
-
-	     FPGA : virtex5LX 330
-	   }
-
-\section{Morpheo}
-\ContentsCurrent
-
-\subsection{Micro Architecture}
-\slidetitle{Micro Architecture : Overview}
-	   {
-	     \printgraph{MORPHEO_micro_architecture-overview}{0.48}
-	   }
-	   {
-	     3 grandes parties :
-	     \begin{description}
-	     \item[Front end :] Amène des paquets d'instructions en séquence, et les décodes. Calcules les addresses suivantes (spéculation) et maintiens l'état des threads (idle, wait, run ...)
-	     \item[Out Of Order Engine :] Renome les registres (annulations des dépendances RAW, WAW et WAR). Re Order Buffer : mettre à jour l'état du contexte dans l'ordre d'arrivé des threads.
-	     \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres.
-	     \end{description}
-	   }
-
-\slidetitle{Micro Architecture : Front end}
-	   {
-	     \printgraph{MORPHEO_micro_architecture-front_end}{0.7}
-	   }
-	   {
-	   }
-
-\slidetitle{Micro Architecture : Out Of Order Engine}
-	   {
-	     \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7}
-	   }
-	   {
-	   }
-
-\slidetitle{Micro Architecture : Execution Loop}
-	   {
-	     \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7}
-	   }
-	   {
-	   }
-
-\subsection{Méthodologie}
-\slidetitle{Service proposé}
-	   {
-	     \printgraph{MORPHEO_service}{0.75}
-	   }
-	   {
-	     libMorpheo :
-	     \begin{itemize}
-	     \item Simulation systemC
-	       \begin{itemize}
-	       \item TestBench Vhdl
-	       \item Statistiques lors de la simulation
-	       \end{itemize}
-	     \item Vhdl : synthétisable sur FPGA
-	     \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1)
-	     \end{itemize}
-	   }
-    
-\slidetitle{Méthodologie - Boucle d'Iteration}
-	   {
-	     \printgraph{MORPHEO_methodologie}{0.3}
-	   }
-	   {
-	     \begin{enumerate}
-	     \item SystemC
-	       \begin{enumerate}
-	       \item Ecriture du modèle systemC
-	       \item Ecriture d'un TestBench pour le systemc - goto 1.1
-	       \end{enumerate}
-	     \item VHDL
-	       \begin{enumerate}
-	       \item Ecriture du vhdl
-	       \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1
-	       \end{enumerate}
-	     \item FPGA
-	       \begin{enumerate}
-	       \item Synthèse sur FPGA - goto 2.1, 1.1
-	       \item Mappage sur FPGA
-	       \end{enumerate}
-	     \end{enumerate}
-	   }
-
-\subsection{Perspective}
-\slidetitle{Comment remplir nos journées?}
-	   {
-	     Il "reste" à faire ...
-	   }
-	   {
-	   }
+
+%\section{Besoins}
+%
+%\ContentsCurrent
+%
+%\slidetitle{Besoins}
+%	   {Besoins pour les processeurs embarquées :
+%	     
+%	     \begin{itemize}
+%	     \item Maîtrise du système
+%	     \item Souplesse
+%	     \item Performance
+%	     \end{itemize}
+%	   }
+%	   {
+%	     Où : téléphone portable, baladeur mp3/vidéo, automobile ...
+%
+%	     \begin{description}
+%	     \item[Maitrise du système :] Les processeurs généralistes sont utilisés dans un vaste échantillon d'application. Ceci touche également la sécurité.
+%	     \item[Souplesse           :] Pour un concepteur de système embarqués : bien dimensionner son système 
+%	     \item[Performance         :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité.
+%	     \end{description}
+%	   }
+%
+%\subsection{Maîtrise du système}
+%\slidetitle{Besoin de la Maîtrise du système}
+%	   {
+%	     {\bf Plate-forme de confiance totale}
+%
+%	     \begin{itemize}
+%	     \item Projet Open
+%	     \item ISA Open
+%	     \item Instructions customisables
+%	     \end{itemize}
+%	   }
+%	   {
+%	     Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale. 
+%
+%	     Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ...
+%%	     On doit supposer que la mémoire d'instruction et de donnée ce trouve en milieu accéssible par les pirates. Leur chiffrement en devient obligatoire.
+%%
+%%	     En hard dans le proc? cache? interconnect? I/O?
+%	   }
+%
+%
+%\subsection{Souplesse}
+%\slidetitle{Besoin de Souplesse}
+%	   {
+%	     {\bf Adapation aux besoins des concepteurs}
+%
+%	     \begin{itemize}
+%	     \item Processeur hautement paramètrables
+%	     \item Ressources internes hétérogènes
+%	     \item FPGA
+%	     \end{itemize}
+%	   }
+%	   {
+%	     Souplesse : s'adapter aux besoins des concepteur de SoC. 
+%
+%	     \begin{description}
+%	     \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur
+%	     \item[Hétérogènes :] En découle des paramètres 
+%	     \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC
+%	     \end{description}
+%	   }
+%
+%\subsection{Performance}
+%\slidetitle{Besoin de Performance (1) - ILP vs TLP}
+%	   {
+%	     {\bf Exploitation des différentes formes de parallélisme}
+%	     
+%	     Paquet d'instruction pouvant s'éxecuter en parallèle :
+%	     \begin{itemize}
+%	     \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions)
+%	     \item {\it Inter flot} : exploitation du TLP  \newline limitation intrasèque au système cible
+%	     \end{itemize}
+%	   }
+%	   {
+%	     \begin{itemize}
+%	     \item ILP : superscalaire, OutOfOrder, Spéculation
+%	     \item TLP : CMP, SMT 
+%	     \end{itemize}
+%	   }
+%
+%\slidetitle{Besoin de Performance (2) - CMP vs SMT}
+%	   {
+%	     \printgraph{GENERAL_type_of_multi_thread}{0.5}
+%	     
+%%	     (schéma)
+%%	     
+%%	     Comparaison théorique de 5 types d'architectures :
+%%	     ||Mono Coeur           ||Mono Contexte           ||Largeur infini||Idéal       ||
+%%	     ||Mono Coeur           ||Mono Contexte           ||Largeur 4     ||Monolithique||
+%%	     ||Multi Coeur d'ordre 4||Mono Contexte           ||Largeur 1     ||CMP         ||
+%%	     ||Mono Coeur           ||Multi Contexte d'ordre 4||Largeur 4     ||SMT         ||
+%%	     ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2     ||CMP de SMT  ||
+%	   }
+%	   {
+%	     \begin{itemize}
+%	     \item A et B : 17 instructions en 7 UT idéale
+%	     \item (1) : 14 UT
+%	     \item (2) : 17 UT, 34 slot vide, occupation 50\%
+%	     \item (3) : 12 UT, 14 slot vide, occupation 70\%
+%	     \item (4) : 11 UT, 10 slot vide, occupation 77\%
+%	     \end{itemize}
+%	   }
+%\slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT}
+%	   {
+%	     \begin{description}
+%	     \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées   à un contexte.
+%	     \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes.
+%	     \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\
+%	       Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes.
+%	     \end{description}
+%	   }
+%	   {
+%	     Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ...
+%	   }
+%
+%
+%\section{Solution}
+%\ContentsCurrent
+%\subsection{Initiatives actuelles}
+%\slidetitle{Initiatives actuelles}
+%	   {
+%	     Tous les processeurs sont des RISC scalaires.
+%
+%	     \begin{description}
+%	     \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes.
+%	     \item[Leon 2        :] 32 bits, 5 étages.
+%	     \item[Leon 3        :] Leon 2 en 7 étages.
+%	     \item[OpenSparcS1   :] 1 coeur 64bits, 6 étages et CMT 4.
+%	     \item[OpenSparcT1   :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara.
+%	     \item[Micro32       :] 32 bits, 6 étages.
+%	     \item[OpenFire      :] 32 bits, 3 étages. Dérivés du MicroBlaze
+%	     \item[aeMB          :] 32 bits, 3 étages. Dérivés du MicroBlaze
+%	     \end{description}
+%	   }
+%	   {
+%	     \begin{description}
+%	     \item[OpenRISC 1200 :] Présence icache, dcache, immu, dmmu. Taille des caches, des opérandes, du banc de registres. Matériel spécifique : div, rotate, mul, mac.
+%	     \item[Leon 2 et 3   :] Présence de div, mul, mac, floating point. Taille du banc de registres . Nombre de load delai. Configuration avancé du cache et de la MMU (fetch, decod, execute, memory, write) (fetch, decod, register access, execute, memory, exception, write)
+%	     \item[OpenSparc     :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur.
+%	     \item[Micro32       :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes.
+%	     \item[OpenFire      :] 3 étages (Fetch, Decod, Execute). Faiblement configurable (largeur des données, espace d'addressage, presence de mul et de cmp). Aucun support de caches
+%	     \item[aeMB          :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage)
+%	     \end{description}
+%	   }
+%
+%\slide     {
+%	     \printgraph{GENERAL_Art_of_State-Comparaison}{0.8}
+%	   }
+%	   {
+%	   }
+%\subsection{Solution proposée}
+%\slidetitle{Solution proposée}
+%	   {
+%	     \begin{itemize}
+%	     \item Partir d'une micro-architecture HighPerf.
+%	     \item Ajout de la gestion du multi-thread.
+%	     \item Rendre paramétrable les ressources internes.
+%	     \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA.
+%	     \end{itemize}
+%	   }
+%	   {
+%	     Pentium 4, MipsR10000, Power5
+%	   }
+%	   
+%\subsection{Métrique}
+%\slidetitle{Métrique}
+%	   {
+%	     \begin{itemize}
+%	     \item Obtenir le meilleur compromis Performance / Complexité. 
+%	       \begin{itemize}
+%	       \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks.
+%	       \item Compléxité  : surface occupée du FPGA.
+%	       \end{itemize}
+%	     \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface).
+%	       \begin{itemize}
+%	       \item Gain en performance : rapport entre la performance MT sur la performance ST.
+%	       \item Coût en surface     : rapport entre la surface     MT sur la surface     ST.
+%	       \end{itemize}
+%	     \end{itemize}
+%	   }
+%	   {
+%	     benchmark : SPECINT2k, Dhrystone
+%
+%	     FPGA : virtex5LX 330
+%	   }
+%
+%\section{Morpheo}
+%\ContentsCurrent
+%
+%\subsection{Micro Architecture}
+%\slidetitle{Micro Architecture : Overview}
+%	   {
+%	     \printgraph{MORPHEO_micro_architecture-overview}{0.48}
+%	   }
+%	   {
+%	     3 grandes parties :
+%	     \begin{description}
+%	     \item[Front end :] Amène des paquets d'instructions en séquence, et les décodes. Calcules les addresses suivantes (spéculation) et maintiens l'état des threads (idle, wait, run ...)
+%	     \item[Out Of Order Engine :] Renome les registres (annulations des dépendances RAW, WAW et WAR). Re Order Buffer : mettre à jour l'état du contexte dans l'ordre d'arrivé des threads.
+%	     \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres.
+%	     \end{description}
+%	   }
+%
+%\slidetitle{Micro Architecture : Front end}
+%	   {
+%	     \printgraph{MORPHEO_micro_architecture-front_end}{0.7}
+%	   }
+%	   {
+%	   }
+%
+%\slidetitle{Micro Architecture : Out Of Order Engine}
+%	   {
+%	     \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7}
+%	   }
+%	   {
+%	   }
+%
+%\slidetitle{Micro Architecture : Execution Loop}
+%	   {
+%	     \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7}
+%	   }
+%	   {
+%	   }
+%
+%\subsection{Méthodologie}
+%\slidetitle{Service proposé}
+%	   {
+%	     \printgraph{MORPHEO_service}{0.75}
+%	   }
+%	   {
+%	     libMorpheo :
+%	     \begin{itemize}
+%	     \item Simulation systemC
+%	       \begin{itemize}
+%	       \item TestBench Vhdl
+%	       \item Statistiques lors de la simulation
+%	       \end{itemize}
+%	     \item Vhdl : synthétisable sur FPGA
+%	     \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1)
+%	     \end{itemize}
+%	   }
+%    
+%\slidetitle{Méthodologie - Boucle d'Iteration}
+%	   {
+%	     \printgraph{MORPHEO_methodologie}{0.3}
+%	   }
+%	   {
+%	     \begin{enumerate}
+%	     \item SystemC
+%	       \begin{enumerate}
+%	       \item Ecriture du modèle systemC
+%	       \item Ecriture d'un TestBench pour le systemc - goto 1.1
+%	       \end{enumerate}
+%	     \item VHDL
+%	       \begin{enumerate}
+%	       \item Ecriture du vhdl
+%	       \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1
+%	       \end{enumerate}
+%	     \item FPGA
+%	       \begin{enumerate}
+%	       \item Synthèse sur FPGA - goto 2.1, 1.1
+%	       \item Mappage sur FPGA
+%	       \end{enumerate}
+%	     \end{enumerate}
+%	   }
+%
+%\subsection{Perspective}
+%\slidetitle{Comment remplir nos journées?}
+%	   {
+%	     Il "reste" à faire ...
+%	   }
+%	   {
+%	   }
 
 \slide{}{}
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.dat
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.dat	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.dat	(revision 30)
@@ -1,14 +1,13 @@
-1.46 # x04_w08-01_e08-01
-2.37 # x04_w08-04_e08-01
-2.37 # x04_w08-04_e08-07
-2.94 # x04_w08-07_e08-01
-3.27 # x04_w08-07_e08-15
-2.51 # x04_w08-08_e08-01
-2.4  # x04_w08-08_e08-07
-3.38 # x04_w08-11_e08-01
-3.64 # x04_w08-11_e08-07a
-3.41 # x04_w08-11_e08-07b
-3.63 # x04_w08-11_e08-15
-3.94 # x04_w08-15_e08-01
-3.88 # x04_w08-15_e08-07
-3.92 # x04_w08-15_e08-15 
+1.46 # x04_w08-01_e08-01  X4-1_1_4-8
+2.37 # x04_w08-04_e08-01  X4-1_2_2-8
+2.37 # x04_w08-04_e08-07  X4-1_2_2-4
+2.94 # x04_w08-07_e08-01  X4-1_4_1-8
+3.27 # x04_w08-07_e08-15  X4-1_4_1-2
+2.51 # x04_w08-08_e08-01  X4-2_1_2-8
+2.4  # x04_w08-08_e08-07  X4-2_1_2-4
+3.38 # x04_w08-11_e08-01  X4-2_2_1-8
+3.41 # x04_w08-11_e08-07b X4-2_2_1-4
+3.63 # x04_w08-11_e08-15  X4-2_2_1-2
+3.94 # x04_w08-15_e08-01  X4-4_1_1-8
+3.88 # x04_w08-15_e08-07  X4-4_1_1-4
+3.92 # x04_w08-15_e08-15  X4-4_1_1-2
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.p
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.p	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.p	(revision 30)
@@ -16,19 +16,17 @@
 set yrange [0:4]
    
-set xtics rotate by -25 ('x04\_w08-01\_e08-01 '  0 , \
-			 'x04\_w08-04\_e08-01 '  1 , \
-			 'x04\_w08-04\_e08-07 '  2 , \
-			 'x04\_w08-07\_e08-01 '  3 , \
-			 'x04\_w08-07\_e08-15 '  4 , \
-			 'x04\_w08-08\_e08-01 '  5 , \
-			 'x04\_w08-08\_e08-07 '  6 , \
-			 'x04\_w08-11\_e08-01 '  7 , \
-			 'x04\_w08-11\_e08-07a'  8 , \
-			 'x04\_w08-11\_e08-07b'  9 , \
-			 'x04\_w08-11\_e08-15 '  10, \
-			 'x04\_w08-15\_e08-01 '  11, \
-			 'x04\_w08-15\_e08-07 '  12, \
-			 'x04\_w08-15\_e08-15 '  13  \
-			 )
+set xtics rotate by -25 ('X4-1_1_4-8'  0 , \
+			 'X4-1_2_2-8'  1 , \
+			 'X4-1_2_2-4'  2 , \
+			 'X4-1_4_1-8'  3 , \
+			 'X4-1_4_1-2'  4 , \
+			 'X4-2_1_2-8'  5 , \
+			 'X4-2_1_2-4'  6 , \
+			 'X4-2_2_1-8'  7 , \
+			 'X4-2_2_1-4'  8 , \
+			 'X4-2_2_1-2'  9 , \
+			 'X4-4_1_1-8'  10, \
+			 'X4-4_1_1-4'  11, \
+			 'X4-4_1_1-2'  12  )
 
 plot "simulation_all.dat" notitle
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/a0poster.cls
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/a0poster.cls	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/a0poster.cls	(revision 30)
@@ -0,0 +1,200 @@
+%% 
+%% This is file `a0poster.cls'
+%% 
+%% Copyright (C) 07.05.97 Gerlinde Kettl and Matthias Weiser
+%%
+%% Problems, bugs and comments to 
+%% gerlinde.kettl@physik.uni-regensburg.de
+%% 
+\ProvidesClass{a0poster}[1997/05/07 v1.21b a0poster class (GK, MW)]
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\LoadClass{article}
+
+\newif\ifportrait
+\newif\ifanullb
+\newif\ifanull
+\newif\ifaeins
+\newif\ifazwei
+\newif\ifadrei
+\newif\ifdraft
+
+\newcount\xkoord
+\newcount\ykoord
+\newcount\xscale
+\newcount\yscale
+
+\DeclareOption{a0b}{
+\anullbtrue
+\xkoord=2594 % big points (1 bp=1/72 inch)
+\ykoord=3370 % big points (1 bp=1/72 inch)
+\xscale=2
+\yscale=2
+}
+\DeclareOption{a0}{
+\anulltrue\anullbfalse
+\xkoord=2380 % big points (1 bp=1/72 inch)
+\ykoord=3368 % big points (1 bp=1/72 inch)
+\xscale=2
+\yscale=2
+}
+\DeclareOption{a1}{
+\aeinstrue\anullbfalse
+\xkoord=1684 % big points (1 bp=1/72 inch)
+\ykoord=2380 % big points (1 bp=1/72 inch)
+\xscale=3
+\yscale=3
+}
+\DeclareOption{a2}{
+\azweitrue\anullbfalse
+\xkoord=1190 % big points (1 bp=1/72 inch)
+\ykoord=1684 % big points (1 bp=1/72 inch)
+\xscale=4
+\yscale=4
+
+}
+\DeclareOption{a3}{
+\adreitrue\anullbfalse
+\xkoord=842  % big points (1 bp=1/72 inch)
+\ykoord=1190 % big points (1 bp=1/72 inch)
+\xscale=6
+\yscale=6
+}
+\DeclareOption{landscape}{
+\portraitfalse
+}
+\DeclareOption{portrait}{
+\portraittrue
+}
+\DeclareOption{draft}{
+\drafttrue
+}
+\DeclareOption{final}{
+\draftfalse
+}
+\DeclareOption*{\PackageWarning{a0poster}{Unknown Option \CurrentOption}}
+\ExecuteOptions{landscape,a0b,final}
+\ProcessOptions\relax
+
+\ifanullb
+   \setlength{\paperwidth}{119cm}
+   \setlength{\paperheight}{87cm}
+   \setlength{\textwidth}{114cm}
+   \setlength{\textheight}{87cm}
+\else\ifanull
+        \setlength{\paperwidth}{118.82cm}
+        \setlength{\paperheight}{83.96cm}
+        \setlength{\textwidth}{114.82cm}
+        \setlength{\textheight}{79.96cm}
+     \else\ifaeins
+             \setlength{\paperwidth}{83.96cm}
+             \setlength{\paperheight}{59.4cm}
+             \setlength{\textwidth}{79.96cm}
+             \setlength{\textheight}{55.4cm}
+          \else\ifazwei
+                  \setlength{\paperwidth}{59.4cm}
+                  \setlength{\paperheight}{41.98cm}
+                  \setlength{\textwidth}{55.4cm}
+                  \setlength{\textheight}{37.98cm}
+               \else\ifadrei
+                       \setlength{\paperwidth}{41.98cm}
+                       \setlength{\paperheight}{29.7cm}
+                       \setlength{\textwidth}{37.98cm}
+                       \setlength{\textheight}{25.7cm}
+                    \else\relax
+                    \fi
+               \fi
+          \fi
+     \fi
+\fi
+
+
+\ifportrait
+   \newdimen\tausch
+   \setlength{\tausch}{\paperwidth}
+   \setlength{\paperwidth}{\paperheight}
+   \setlength{\paperheight}{\tausch}
+   \setlength{\tausch}{\textwidth}
+   \setlength{\textwidth}{\textheight}
+   \setlength{\textheight}{\tausch}
+\else\relax
+\fi
+
+%% Setting proper dimensions for a DIN A0 printer
+
+\setlength{\headheight}{0 cm}
+\setlength{\headsep}{0 cm}
+\setlength{\topmargin}{0 cm}
+\setlength{\oddsidemargin}{0 cm}
+
+\catcode`\%=11
+\newwrite\Ausgabe
+\immediate\openout\Ausgabe=a0header.ps
+\write\Ausgabe{%%BeginFeature *PageSize ISOA0/ISO A0}
+\ifdraft\write\Ausgabe{2 dict dup /PageSize [595 842] put dup /ImagingBBox null put}
+\else\write\Ausgabe{2 dict dup /PageSize [\number\xkoord\space \number\ykoord] put dup /ImagingBBox null put}\fi
+\write\Ausgabe{setpagedevice}
+\ifdraft\write\Ausgabe{38 84 translate}
+\write\Ausgabe{0.\number\xscale\space 0.\number\yscale\space scale}\else\relax\fi
+\write\Ausgabe{%%EndFeature}
+\closeout\Ausgabe
+\catcode`\%=14
+
+\special{header=./a0header.ps}
+
+\input{a0size.sty}
+
+\renewcommand{\tiny}{\fontsize{12}{14}\selectfont}
+\renewcommand{\scriptsize}{\fontsize{14.4}{18}\selectfont}   
+\renewcommand{\footnotesize}{\fontsize{17.28}{22}\selectfont}
+\renewcommand{\small}{\fontsize{20.74}{25}\selectfont}
+%\renewcommand{\normalsize}{\fontsize{24.88}{30}\selectfont}
+\renewcommand{\normalsize}{\fontsize{29.86}{37}\selectfont}
+
+\renewcommand{\large}{\fontsize{29.86}{37}\selectfont}
+\renewcommand{\Large}{\fontsize{35.83}{45}\selectfont}
+\renewcommand{\LARGE}{\fontsize{43}{54}\selectfont}
+\renewcommand{\huge}{\fontsize{51.6}{64}\selectfont}
+\renewcommand{\Huge}{\fontsize{61.92}{77}\selectfont}
+\newcommand{\veryHuge}{\fontsize{74.3}{93}\selectfont}
+\newcommand{\VeryHuge}{\fontsize{89.16}{112}\selectfont}
+\newcommand{\VERYHuge}{\fontsize{107}{134}\selectfont}
+
+\setlength\smallskipamount{6pt plus 2pt minus 2pt}
+\setlength\medskipamount{12pt plus 4pt minus 4pt}
+\setlength\bigskipamount{24pt plus 8pt minus 8pt}
+
+\setlength\abovecaptionskip{25pt}
+\setlength\belowcaptionskip{0pt}
+\setlength\abovedisplayskip{25pt plus 6pt minus 15 pt}
+\setlength\abovedisplayshortskip{0pt plus 6pt}
+\setlength\belowdisplayshortskip{13pt plus 7pt minus 6pt}
+\setlength\belowdisplayskip\abovedisplayskip
+
+\normalsize
+
+\AtBeginDocument{
+\ifanullb
+   \ifportrait\special{papersize=91.51cm,120cm}\else\special{papersize=120cm,91.51cm}\fi
+\else\ifanull
+        \ifportrait\special{papersize=83.96cm,118.82cm}\else\special{papersize=118.82cm,83.96cm}\fi
+     \else\ifaeins
+             \ifportrait\special{papersize=59.4cm,83.96cm}\else\special{papersize=83.96cm,59.4cm}\fi
+          \else\ifazwei
+                  \ifportrait\special{papersize=41.98cm,59.4cm}\else\special{papersize=59.4cm,41.98cm}\fi
+               \else\ifadrei
+                      \ifdraft
+                       \ifportrait\special{papersize=29.7cm,41.35cm}\else\special{papersize=41.98cm,29.0cm}\fi
+                      \else
+                       \ifportrait\special{papersize=29.7cm,41.98cm}\else\special{papersize=41.98cm,29.7cm}\fi
+                      \fi
+                    \else\relax
+                    \fi
+               \fi
+          \fi
+     \fi
+\fi
+\pagestyle{empty}}
+
+\endinput
+%% 
+%% End of file `a0poster.cls'.
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/a0size.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/a0size.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/a0size.sty	(revision 30)
@@ -0,0 +1,241 @@
+%% 
+%% This is file `a0size.sty' (v1.21b) included in the a0poster package
+%% 
+%% Copyright (C) 07.05.97 Gerlinde Kettl and Matthias Weiser
+%%
+ 
+\ProvidesFile{a0size.sty}[1997/05/06 v1.21b a0poster class (GK, MW)]
+
+\DeclareFontShape{OT1}{cmr}{m}{n}
+   {  <5> <6> <7> <8> <9> <10> <12> gen * cmr
+      <10.95> cmr10
+      <14.4>  cmr12
+      <17.28><20.74><24.88>cmr17
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmr17}{}
+
+\DeclareFontShape{OT1}{cmr}{m}{sl}
+    {
+      <5><6><7>cmsl8%
+      <8> <9> gen * cmsl
+      <10><10.95>cmsl10%
+      <12><14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmsl12}{}
+
+\DeclareFontShape{OT1}{cmr}{m}{it}
+    {
+      <5><6><7>cmti7%
+      <8>cmti8%
+      <9>cmti9%
+      <10><10.95>cmti10%
+      <12><14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmti12}{}
+
+\DeclareFontShape{OT1}{cmr}{m}{sc}
+    {
+      <5><6><7><8><9><10><10.95><12>
+      <14.4><17.28><20.74><24.88> 
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmcsc10}{}
+
+\DeclareFontShape{OT1}{cmr}{m}{ui}
+   {
+      <5><6><7><8><9><10><10.95><12>
+      <14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmu10}{}
+      
+\DeclareFontShape{OT1}{cmr}{b}{n}
+     {
+      <5><6><7><8><9><10><10.95><12>
+      <14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmb10}{}
+
+\DeclareFontShape{OT1}{cmr}{bx}{n}
+   {
+      <5> <6> <7> <8> <9> gen * cmbx
+      <10><10.95> cmbx10
+      <12><14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmbx12}{}
+       
+\DeclareFontShape{OT1}{cmr}{bx}{sl}
+      {
+      <5> <6> <7> <8> <9>
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmbxsl10}{}
+
+\DeclareFontShape{OT1}{cmr}{bx}{it}
+      {
+      <5> <6>  <7>  <8> <9>
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmbxti10}{}
+
+\DeclareFontShape{OT1}{cmss}{m}{n}
+     {
+      <5><6><7><8>cmss8
+      <9>cmss9
+      <10><10.95>cmss10
+      <12><14.4>cmss12
+      <17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmss17}{}
+
+\DeclareFontShape{OT1}{cmss}{m}{sl}
+    {
+      <5><6><7><8>cmssi8 <9> cmssi9
+      <10><10.95>cmssi10
+      <12><14.4>cmssi12
+      <17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmssi17}{}
+
+\DeclareFontShape{OT1}{cmss}{sbc}{n}
+     {
+      <5> <6> <7> <8> <9> cmssdc10
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmssdc10}{}
+
+\DeclareFontShape{OT1}{cmss}{bx}{n}
+     {
+      <5> <6> <7> <8> <9> cmssbx10
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmssbx10}{}
+
+\DeclareFontShape{OT1}{cmtt}{m}{n}
+     {
+      <5><6><7><8>cmtt8 <9> cmtt9
+      <10><10.95>cmtt10
+      <12><14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmtt12}{}
+      
+\DeclareFontShape{OT1}{cmtt}{m}{it}
+     {
+      <5> <6> <7> <8> <9>
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmitt10}{}     
+     
+\DeclareFontShape{OT1}{cmtt}{m}{sl}
+     {
+      <5> <6> <7> <8> <9>
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmsltt10}{}
+     
+\DeclareFontShape{OT1}{cmtt}{m}{sc}
+     {
+      <5> <6> <7> <8> <9>
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmtcsc10}{}     
+
+\DeclareFontShape{OML}{cmm}{m}{it}
+    { <5> <6> <7> <8> <9> gen * cmmi
+      <10><10.95>cmmi10
+      <12><14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmmi12}{}
+
+\DeclareFontShape{OML}{cmm}{b}{it}{%
+      <5> <6> <7> <8> <9> gen * cmmib
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmmib10}{}
+
+
+\DeclareFontShape{OMS}{cmsy}{m}{n}{%
+      <5> <6> <7> <8> <9> <10> gen * cmsy
+      <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmsy10}{}
+
+\DeclareFontShape{OMS}{cmsy}{b}{n}{%
+      <5> <6> <7> <8> <9> gen * cmbsy
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmbsy10}{}
+
+\DeclareFontShape{OMX}{cmex}{m}{n}{%
+      <-8>sfixed * cmex7
+      <8> cmex8
+      <9> cmex9
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> 
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmex10}{}
+
+\DeclareFontShape{U}{cmr}{m}{n}
+   {  <5> <6> <7> <8> <9> <10> <12> gen * cmr
+      <10.95> cmr10
+      <14.4>  cmr12
+      <17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmr17}{}
+
+\DeclareFontShape{U}{cmr}{m}{sl}
+    {
+      <5><6><7>cmsl8%
+      <8> <9> gen * cmsl
+      <10><10.95>cmsl10%
+      <12><14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmsl12}{}
+
+\DeclareFontShape{U}{cmr}{m}{it}
+    {
+      <5><6><7>cmti7%
+      <8>cmti8%
+      <9>cmti9%
+      <10><10.95>cmti10%
+      <12><14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmti12}{}
+
+\DeclareFontShape{U}{cmr}{m}{sc}
+    {
+      <5><6><7><8><9><10><10.95><12>
+      <14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmcsc10}{}
+
+\DeclareFontShape{U}{cmr}{m}{ui}
+   {
+      <5><6><7><8><9><10><10.95><12>%
+      <14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmu10}{}
+
+\DeclareFontShape{U}{cmr}{b}{n}
+     {
+      <5><6><7><8><9><10><10.95><12>
+      <14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmb10}{}
+
+\DeclareFontShape{U}{cmr}{bx}{n}
+   {
+      <5> <6> <7> <8> <9> gen * cmbx
+      <10><10.95> cmbx10
+      <12><14.4><17.28><20.74><24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmbx12}{}
+
+\DeclareFontShape{U}{cmr}{bx}{sl}
+      {
+      <5> <6> <7> <8> <9>
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmbxsl10}{}
+
+\DeclareFontShape{U}{cmr}{bx}{it}
+      {
+      <5> <6>  <7>  <8> <9>
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> 
+      <29.86> <35.83> <43.00> <51.6> <61.92> <74.3> <89.16> <107.0> cmbxti10}{}
+
+%% Copied from exscale.sty
+%% Copyright (C) 1992-1995 Frank Mittelbach and Rainer Sch\"opf,
+%% all rights reserved.
+
+\DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n}
+\newdimen\big@size
+\addto@hook\every@math@size{\setbox\z@\vbox{\hbox{$($}\kern\z@}%
+   \global\big@size 1.2\ht\z@}
+\def\bBigg@#1#2{%
+   {\hbox{$\left#2\vcenter to#1\big@size{}\right.\n@space$}}}
+\def\big{\bBigg@\@ne}
+\def\Big{\bBigg@{1.5}}
+\def\bigg{\bBigg@\tw@}
+\def\Bigg{\bBigg@{2.5}}
+
+%% End of copy
+
+\DeclareMathSizes{24.88}{24.88}{20.74}{14.4}
+\DeclareMathSizes{29.86}{29.86}{20.74}{14.4}
+\DeclareMathSizes{35.83}{35.83}{24.88}{17.28}
+\DeclareMathSizes{43.00}{43.00}{35.83}{24.88}
+\DeclareMathSizes{51.6}{51.6}{35.83}{24.88}
+\DeclareMathSizes{61.92}{61.92}{43}{29.86}
+\DeclareMathSizes{74.3}{74.3}{51.6}{35.83}
+\DeclareMathSizes{89.16}{89.16}{61.92}{43}
+\DeclareMathSizes{107}{107}{74.3}{51.6}
+
+%% End of a0size.sty 
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-file_source.sed
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-file_source.sed	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-file_source.sed	(revision 30)
@@ -0,0 +1,32 @@
+\def\lang{@LANG}
+\def\file{@FILE}
+\def\dirschema{@DIRSCHEMA}
+\def\dirdoc{@DIRDOC}
+\def\dircommon{\dirdoc/common}
+\def\dirroot{\dirdoc/\lang}
+
+\include{Package/\file}
+\pagestyle{empty}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{Include/poster-style}
+\usepackage{Package/\file}
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+%\background{1.}
+
+\begin{poster}
+
+\maketitle
+\input{\dirroot/root}
+
+\end{poster}
+\end{document}
+
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-file_source.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-file_source.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-file_source.sty	(revision 30)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-file_source.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-file_source.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-file_source.tex	(revision 30)
@@ -0,0 +1,7 @@
+%\documentclass[landscape,a0b,final,a4resizeable]{a0poster}
+\documentclass[landscape,a0b,final]{a0poster}
+%\documentclass[portrait,a0b,final,a4resizeable]{a0poster}
+%\documentclass[portrait,a0b,final]{a0poster}
+%%% Option "a4resizeable" makes it possible ot resize the
+%   poster by the command: psresize -pa4 poster.ps poster-a4.ps
+%   For final printing, please remove option "a4resizeable" !!
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-style.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-style.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Include/poster-style.sty	(revision 30)
@@ -0,0 +1,192 @@
+\usepackage{epsfig}
+\usepackage{multicol}
+\usepackage{pstricks,pst-grad}
+\usepackage[french]{babel}
+\usepackage[latin1]{inputenc}  % Pour utiliser les caractères accentués dans votre texte 
+\usepackage{openbib}
+
+\bibliographystyle{plain}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Definition of some variables and colors
+%\renewcommand{\rho}{\varrho}
+%\renewcommand{\phi}{\varphi}
+\setlength{\columnsep}{3cm}
+\setlength{\columnseprule}{2mm}
+\setlength{\parindent}{0.0cm}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%               Background                     %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newrgbcolor{cellLineColor}{.7. .7 .9} % lightblue
+\newrgbcolor{cellGradBegin}{1. 1. 1.}   % white
+\newrgbcolor{cellGradEnd}{.5 .5 1.}   % whiteblue
+\newrgbcolor{backgroundGradBegin}{1. 1. 1.}   % grabbegin
+\newrgbcolor{backgroundGradEnd}{1. 1. 1.}   % cellGradEnd
+
+\newcommand{\background}[1]
+	   {
+	     \psframe[fillstyle=gradient,gradbegin=backgroundGradBegin,gradend=backgroundGradEnd,gradmidpoint=#1](0.,0.)(1.\textwidth,-1.\textheight)
+	   }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%                Poster                        %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newenvironment{poster}{\begin{center} \begin{minipage}[c]{0.98\textwidth}}{\end{minipage} \end{center}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%                pcolumn                       %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newenvironment{pcolumn}[1]{\begin{minipage}{#1\textwidth}\begin{center}}{\end{center}\end{minipage}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%                pbox                          %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\pbox}[4]{\psshadowbox[#3]{\begin{minipage}[t][#2][t]{#1}#4\end{minipage}}}
+	   
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%                myfig                         %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% \myfig - replacement for \figure
+%% necessary, since in multicol-environment 
+%% \figure won't work
+%
+%\newcommand{\myfig}[3][0]
+%	   {
+%	     \begin{center}
+%	       \vspace{1.5cm}
+%	       \includegraphics[width=#3\hsize,angle=#1]{#2}
+%	       \nobreak\medskip
+%	     \end{center}
+%	   }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%                mycaption                     %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% \mycaption - replacement for \caption
+%% necessary, since in multicol-environment \figure and
+%% therefore \caption won't work
+%
+%%\newcounter{figure}
+%\setcounter{figure}{1}
+%\newcommand{\mycaption}[1]
+%	   {
+%	     \vspace{1.5cm}
+%	     \begin{quote}
+%	       {
+%		 {\sc Figure}
+%		 \arabic{figure}: #1
+%	       }
+%	     \end{quote}
+%	     \vspace{1.5cm}
+%	     \stepcounter{figure}
+%	   }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%                printgraph                    %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% % file, Dimension, légende
+\newcommand{\printgraph}[3]
+ 	   {
+	     %\vspace*{1cm}
+	     \begin{center}
+	       \includegraphics[width=\columnwidth]{\dirschema/#1.eps}
+	       \label{#1}
+	       \nobreak\medskip
+	     \end{center}
+	     %\vspace*{1cm}
+
+%	     \begin{figure}[htbp]
+% 	       \centering
+% 	       \includegraphics[scale=#2]{\dirschema/#1.eps}
+% 	       \caption{#3}
+%	       \label{#1}
+% 	     \end{figure}
+ 	   }
+
+\newcommand{\printgraphonly}[2]
+ 	   {\begin{figure}[htbp]
+ 	       \centering
+ 	       \includegraphics[scale=#2]{\dirschema/#1.eps}
+	       \label{#1}
+ 	     \end{figure}
+ 	   }
+	   
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%                Section                       %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\BoxSection}[2]
+	   {
+	     \vspace*{1cm}
+	     \begin{center}
+	       \pbox{#2}
+		    {}
+		    {linewidth=2mm,framearc=0.1,linecolor=cellLineColor,fillstyle=gradient,gradangle=0,gradbegin=cellGradBegin,gradend=cellGradEnd,gradmidpoint=1.0,framesep=1em}
+		    {
+		      \begin{center}
+			#1
+		      \end{center}
+		    }
+	     \end{center}
+	     \vspace*{1cm}
+	   }
+
+%\newcommand{\Title}[1]{\BoxSection{#1}{0.8\textwidth}}
+\newcommand{\Section}[1]{\BoxSection{#1}{0.8\columnwidth}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%                cell                          %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\Cell}[1]{\pbox{0.9\textwidth}{}{linewidth=2mm,framearc=0.1,linecolor=cellLineColor,fillstyle=gradient,gradangle=0,gradbegin=cellGradBegin,gradend=cellGradEnd,gradmidpoint=1.0,framesep=1em}{#1}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%                maketitle                     %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\affiliation#1{\gdef\@affiliation{#1}}
+\gdef\@affiliation{}
+
+\def\email#1{\gdef\@email{#1}}
+\gdef\@email{}
+
+\def\@maketitle
+   {
+     \vspace*{1cm}
+     \begin{center}
+       \begin{pcolumn}{0.98}
+	 \pbox{0.95\textwidth}{}{linewidth=2mm,framearc=0.3,linecolor=cellLineColor,fillstyle=gradient,gradangle=0,gradbegin=cellGradBegin,gradend=cellGradEnd,gradmidpoint=1.0,framesep=1em}
+	      {
+		%%% Logo gauche
+		\begin{minipage}[c][9cm][c]{0.1\textwidth}
+		  \begin{center}
+		    % \includegraphics[width=7cm,angle=0]{gklogo.eps}
+		  \end{center}
+		\end{minipage}
+		%%% Titel
+		\begin{minipage}[c][9cm][c]{0.78\textwidth}
+		  \begin{center}
+		    {\sc \Huge \@title}\\[10mm]
+		    {\Large \@author\\[7.5mm]
+		      \@email\\[7.5mm]
+		      \@affiliation}
+		  \end{center}
+		\end{minipage}
+		%%% Logo droit
+		\begin{minipage}[c][9cm][c]{0.1\textwidth}
+		  \begin{center}
+		    %  \includegraphics[width=7cm,angle=0]{gklogo.eps}
+		  \end{center}
+		\end{minipage}
+	      }
+       \end{pcolumn}
+     \end{center}
+     \vspace*{1cm}
+   }
+   
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Language/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Language/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Language/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA	(revision 30)
@@ -0,0 +1,1 @@
+en
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Language/poster-jnrdm_2007
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Language/poster-jnrdm_2007	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Language/poster-jnrdm_2007	(revision 30)
@@ -0,0 +1,1 @@
+fr
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile	(revision 30)
@@ -9,5 +9,5 @@
 #--------------------------------------------------------------------------------
 
-TYPE_DOC              	= ("doc" "ppt")
+TYPE_DOC              	= ("doc" "ppt" "poster")
 
 DEFAULT_LANG		= fr
@@ -32,4 +32,10 @@
 DIR_SCHEMA_JPG		= Schema_jpg
 DIR_TEX			= Source
+
+#--------------------------------------------------------------------------------
+# Directory
+#--------------------------------------------------------------------------------
+ENV_LATEX		= $(EXPORT) TEXINPUTS=$(DIR_INCLUDE):$$TEXINPUTS
+LATEX_WITH_ENV		= $(ENV_LATEX); $(LATEX)
 
 #--------------------------------------------------------------------------------
@@ -93,6 +99,6 @@
 			@$(ECHO) "Génération du fichier $*.dvi"
 			@#touch $(patsubst %.tex,%.ind,$<)
-			@$(LATEX) $<
-			@$(LATEX) $< > /dev/null
+			@$(LATEX_WITH_ENV) $<
+			@$(LATEX_WITH_ENV) $< > /dev/null
 			@#$(MAKEINDEX) $(patsubst %.tex,%.idx,$<)
 			@citation=`$(GREP) "citation" $*.aux`; \
@@ -100,6 +106,6 @@
 			  $(BIBTEX) $* ; \
 			fi
-			@$(LATEX) $< > /dev/null
-			@$(LATEX) $< > /dev/null
+			@$(LATEX_WITH_ENV) $< > /dev/null
+			@$(LATEX_WITH_ENV) $< > /dev/null
 
 #--------------------------------------------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA.sty	(revision 30)
@@ -0,0 +1,12 @@
+%\def\review{YYYY/MM/DD}
+\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Design a CPU with High Performance and High Configurability on FPGA}
+ 
+\author{Mathieu Rosière, Nathalie Drach-Temam, Franck Wajsbürt and Jean-Lou Desbarbieux}
+
+\affiliation{Equipe SOC - Laboratoire d'information de Paris VI - France}
+
+\email{\{mathieu.rosiere, nathalie.drach-temam, franck.wajsburt, jean-lou.desbarbieux\}@lip6.fr}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA.tex	(revision 30)
@@ -0,0 +1,1 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/poster-jnrdm_2007.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/poster-jnrdm_2007.sty	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/poster-jnrdm_2007.sty	(revision 30)
@@ -0,0 +1,13 @@
+\def\review{14, 15 et 16 Mai 2007}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Incidence du partage des ressources architecturales\\
+  entre les contextes matériels}
+
+\author{Mathieu Rosière}
+
+\affiliation{Equipe SOC - Laboratoire d'information de Paris VI - France}
+
+\email{mathieu.rosiere@lip6.fr}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/poster-jnrdm_2007.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/poster-jnrdm_2007.tex	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/poster-jnrdm_2007.tex	(revision 30)
@@ -0,0 +1,4 @@
+%\documentclass[landscape,a0b,final,a4resizeable]{a0poster}
+\documentclass[portrait,a0b,final]{a0poster}
+%\documentclass[portrait,a0b,final,a4resizeable]{a0poster}
+%\documentclass[portrait,a0b,final]{a0poster}
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/presentation-internal_seminary_overview.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/presentation-internal_seminary_overview.sty	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/presentation-internal_seminary_overview.sty	(revision 30)
@@ -2,7 +2,7 @@
 %\def\review{\number\day/\number\month/\number\year\xspace}
 
-\title{Séminaire interne :\newline Processeur libre, haute performance et hautement paramètrable}
+\title{Séminaire interne :\newline Processeur libre, haute performance et paramètrable}
 
-\institute{Equipe SOC - Laboratoire d'information de Paris VI - France}
+\institute{Département SOC - Laboratoire d'information de Paris VI - France}
  
 \author{Mathieu Rosière}
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-execute_loop.fig
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-execute_loop.fig	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-execute_loop.fig	(revision 30)
@@ -1,3 +1,3 @@
-#FIG 3.2  Produced by xfig version 3.2.5-alpha5
+#FIG 3.2
 Landscape
 Center
@@ -13,5 +13,5 @@
 4 1 0 50 -1 -1 10 0.0000 4 105 510 7920 6030 memory\001
 4 1 0 50 -1 -1 10 0.0000 4 105 255 7920 5895 read\001
-4 1 0 50 -1 -1 10 0.0000 4 120 345 7920 6165 queue\001
+4 1 0 50 -1 -1 10 0.0000 4 105 345 7920 6165 queue\001
 -6
 6 10260 6390 10980 6840
@@ -29,5 +29,5 @@
 	 8280 6840 7560 6840 7560 6390 8280 6390 8280 6840
 4 1 0 50 -1 -1 10 0.0000 4 105 255 7920 6570 read\001
-4 1 0 50 -1 -1 10 0.0000 4 120 345 7920 6750 queue\001
+4 1 0 50 -1 -1 10 0.0000 4 105 345 7920 6750 queue\001
 -6
 6 8640 6390 9360 6840
@@ -36,11 +36,4 @@
 4 1 0 50 -1 -1 10 0.0000 4 105 690 9000 6570 reservation\001
 4 1 0 50 -1 -1 10 0.0000 4 105 435 9000 6750 station\001
--6
-6 7380 7200 13860 7920
-2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5
-	 7380 7200 13860 7200 13860 7920 7380 7920 7380 7200
-2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
-	 13680 7740 13680 7380 7560 7380 7560 7740 13680 7740
-4 1 0 50 -1 -1 10 0.0000 4 135 480 10620 7605 register\001
 -6
 2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5
@@ -126,12 +119,34 @@
 	3 0 1.00 60.00 120.00
 	 10620 5760 10620 5130
+2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
+	 13680 7740 13680 7380 7560 7380 7560 7740 13680 7740
+2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
+	 13680 8280 13680 7920 7560 7920 7560 8280 13680 8280
+2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5
+	 7380 7200 13860 7200 13860 8460 7380 8460 7380 7200
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 12780 7335 12780 7920
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8505 7380 8505 7920
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8415 7380 8415 7920
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
+	3 0 1.00 60.00 120.00
+	3 0 1.00 60.00 120.00
+	 7560 8100 7200 8100
 4 1 0 50 -1 -1 10 1.5708 4 105 360 9945 6615 select\001
 4 1 0 50 -1 -1 10 1.5708 4 105 360 11385 6300 select\001
-4 1 0 50 -1 -1 10 0.0000 4 120 345 12240 6435 queue\001
+4 1 0 50 -1 -1 10 0.0000 4 105 345 12240 6435 queue\001
 4 1 0 50 -1 -1 10 0.0000 4 105 345 12240 6255 write\001
 4 1 0 50 -1 -1 10 0.0000 4 90 465 13320 6255 execute\001
-4 1 0 50 -1 -1 10 0.0000 4 120 345 13320 6435 queue\001
-4 0 0 50 -1 -1 10 0.0000 4 150 405 8820 5355 bypass\001
+4 1 0 50 -1 -1 10 0.0000 4 105 345 13320 6435 queue\001
+4 0 0 50 -1 -1 10 0.0000 4 135 405 8820 5355 bypass\001
 4 1 0 50 -1 -1 10 0.0000 4 105 420 10620 5085 Dcache\001
 4 2 0 50 -1 -1 10 0.0000 4 90 465 13995 6660 execute\001
 4 0 0 50 -1 -1 10 0.0000 4 75 435 7245 6345 rename\001
+4 1 0 50 -1 -1 10 0.0000 4 135 480 10620 7605 register\001
+4 1 0 50 -1 -1 10 0.0000 4 105 630 10620 8145 status list\001
+4 0 0 50 -1 -1 10 0.0000 4 150 855 7290 8415 register_state\001
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-groupement.fig
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-groupement.fig	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-groupement.fig	(revision 30)
@@ -0,0 +1,187 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+6 4770 3690 5490 4140
+2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
+	 5490 4140 4770 4140 4770 3690 5490 3690 5490 4140
+4 1 0 50 -1 -1 12 0.0000 4 135 450 5130 3960 decod\001
+-6
+6 4770 3240 5490 3690
+2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
+	 5490 3690 4770 3690 4770 3240 5490 3240 5490 3690
+4 1 0 50 -1 -1 12 0.0000 4 105 570 5130 3420 context\001
+4 1 0 50 -1 -1 12 0.0000 4 105 390 5130 3600 state\001
+-6
+6 5850 3690 6570 4140
+2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
+	 6570 4140 5850 4140 5850 3690 6570 3690 6570 4140
+4 1 0 50 -1 -1 12 0.0000 4 90 555 6210 3960 rename\001
+-6
+6 8370 3690 9090 4140
+2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
+	 9090 4140 8370 4140 8370 3690 9090 3690 9090 4140
+4 1 0 50 -1 -1 12 0.0000 4 135 330 8730 3960 read\001
+-6
+6 11250 3690 11970 4140
+2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
+	 11970 4140 11250 4140 11250 3690 11970 3690 11970 4140
+4 1 0 50 -1 -1 12 0.0000 4 135 390 11610 3960 write\001
+-6
+6 9810 3420 10530 3870
+2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
+	 10530 3870 9810 3870 9810 3420 10530 3420 10530 3870
+4 1 0 50 -1 -1 12 0.0000 4 135 600 10170 3690 memory\001
+-6
+6 9810 3960 10530 4410
+2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
+	 10530 4410 9810 4410 9810 3960 10530 3960 10530 4410
+4 1 0 50 -1 -1 12 0.0000 4 105 600 10170 4230 execute\001
+-6
+6 9810 2475 10530 2925
+2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
+	 10530 2925 9810 2925 9810 2475 10530 2475 10530 2925
+4 1 0 50 -1 -1 12 0.0000 4 150 300 10170 2835 port\001
+4 1 0 50 -1 -1 12 0.0000 4 135 540 10170 2655 dcache\001
+-6
+6 6570 3015 7290 3465
+2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
+	 7290 3465 6570 3465 6570 3015 7290 3015 7290 3465
+4 1 0 50 -1 -1 12 0.0000 4 135 555 6930 3285 commit\001
+-6
+6 3825 3060 4635 3510
+2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
+	 4590 3510 3870 3510 3870 3060 4590 3060 4590 3510
+4 1 0 50 -1 -1 12 0.0000 4 180 675 4230 3330 predictor\001
+-6
+6 2970 3690 3690 4140
+2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
+	 3690 4140 2970 4140 2970 3690 3690 3690 3690 4140
+4 1 0 50 -1 -1 12 0.0000 4 135 390 3330 3960 fetch\001
+-6
+6 1800 4590 3735 5310
+2 4 0 0 14 14 52 -1 20 0.000 0 0 7 0 0 5
+	 1800 5040 2160 5040 2160 4860 1800 4860 1800 5040
+2 4 0 0 12 4 51 -1 20 0.000 0 0 7 0 0 5
+	 2160 4770 2160 4590 1800 4590 1800 4770 2160 4770
+2 4 0 0 14 27 53 -1 20 0.000 0 0 7 0 0 5
+	 1800 5130 2160 5130 2160 5310 1800 5310 1800 5130
+4 0 0 50 -1 -1 12 0.0000 4 135 450 2250 5265 Coeur\001
+4 0 0 50 -1 -1 12 0.0000 4 135 1470 2250 4995 Unit\351 de lancement\001
+4 0 0 50 -1 -1 12 0.0000 4 135 690 2250 4725 Contexte\001
+-6
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 6930 3015 6930 2790 5130 2790 5130 3240
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 5130 2790 4230 2790 4230 3060
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6030 2790 6030 3690
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5490 3915 5850 3915
+2 1 0 1 0 31 50 -1 -1 4.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 6390 3690 6390 3240 6570 3240
+2 1 0 1 0 7 50 -1 20 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6570 3915 7650 3915
+2 1 0 1 0 7 50 -1 20 3.000 0 0 -1 0 0 1
+	 7650 3780
+2 1 0 1 0 7 50 -1 20 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8010 3915 8370 3915
+2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 11970 3915 12150 3915 12150 3240 8010 3240
+2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 11430 4140 11430 4500 8820 4500 8820 4140
+2 1 0 1 0 7 50 -1 20 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8640 4680 8640 4140
+2 1 0 1 0 7 50 -1 20 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 11790 4140 11790 4680
+2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
+	 11970 5040 11970 4680 8370 4680 8370 5040 11970 5040
+2 2 2 1 0 7 50 -1 -1 3.000 0 0 7 0 0 5
+	 8190 3105 12330 3105 12330 5220 8190 5220 8190 3105
+2 4 0 1 0 7 50 -1 20 3.000 0 0 7 0 0 5
+	 11070 3510 11070 4320 10710 4320 10710 3510 11070 3510
+2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 11070 3915 11250 3915
+2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 9090 3915 9270 3915
+2 4 0 1 0 7 50 -1 20 3.000 0 0 7 0 0 5
+	 9630 3510 9630 4320 9270 4320 9270 3510 9630 3510
+2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 9630 4185 9810 4185
+2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 10530 4185 10710 4185
+2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 10530 3645 10710 3645
+2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 9630 3645 9810 3645
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
+	3 0 1.00 60.00 120.00
+	3 0 1.00 60.00 120.00
+	 10170 2925 10170 3420
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 7650 3240 7290 3240
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6930 3465 6930 3915
+2 1 0 1 0 31 50 -1 -1 4.000 0 0 -1 1 1 3
+	3 0 1.00 60.00 120.00
+	3 0 1.00 60.00 120.00
+	 4410 3510 4410 3780 4770 3780
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
+	3 0 1.00 60.00 120.00
+	3 0 1.00 60.00 120.00
+	 2970 3915 2610 3915
+2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5
+	 1710 5400 12510 5400 12510 2295 1710 2295 1710 5400
+2 1 0 1 0 31 50 -1 -1 4.000 0 0 -1 1 1 3
+	3 0 1.00 60.00 120.00
+	3 0 1.00 60.00 120.00
+	 4050 3510 4050 3780 3690 3780
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 3690 4050 4770 4050
+2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5
+	 5580 2880 2790 2880 2790 4320 5580 4320 5580 2880
+2 2 2 1 0 7 50 -1 -1 3.000 0 0 7 0 0 5
+	 7470 4320 5760 4320 5760 2610 7470 2610 7470 4320
+2 4 0 1 0 7 50 -1 20 3.000 0 0 8 0 0 5
+	 8010 2880 8010 4320 7650 4320 7650 2880 8010 2880
+2 4 0 0 12 4 51 -1 20 0.000 0 0 7 0 0 5
+	 3780 4230 3780 3600 2880 3600 2880 4230 3780 4230
+2 4 0 0 14 14 52 -1 20 0.000 0 0 7 0 0 5
+	 2790 4410 7740 4410 7740 2700 2790 2700 2790 4410
+2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
+	 2610 4140 1890 4140 1890 3690 2610 3690 2610 4140
+2 4 0 0 14 27 53 -1 20 0.000 0 0 7 0 0 5
+	 7740 2430 10620 2430 10620 2970 7740 2970 7740 2430
+2 4 0 0 14 27 53 -1 20 0.000 0 0 7 0 0 5
+	 7920 2430 1800 2430 1800 4500 7920 4500 7920 2430
+4 1 0 50 -1 -1 12 0.0000 4 180 585 10170 4905 register\001
+4 1 0 50 -1 -1 12 1.5708 4 135 465 10935 3915 select\001
+4 1 0 50 -1 -1 12 1.5708 4 135 465 9495 3915 select\001
+4 1 0 50 -1 -1 12 1.5708 4 135 465 7875 3600 select\001
+4 1 0 50 -1 -1 12 0.0000 4 150 300 2250 4050 port\001
+4 1 0 50 -1 -1 12 0.0000 4 135 495 2250 3870 icache\001
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-out_of_order_engine.fig
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-out_of_order_engine.fig	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-out_of_order_engine.fig	(revision 30)
@@ -1,3 +1,3 @@
-#FIG 3.2  Produced by xfig version 3.2.5-alpha5
+#FIG 3.2
 Landscape
 Center
@@ -8,9 +8,4 @@
 -2
 1200 2
-6 4590 5400 5310 5850
-2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
-	 5310 5850 4590 5850 4590 5400 5310 5400 5310 5850
-4 1 0 50 -1 -1 10 0.0000 4 105 315 4950 5670 RAT\001
--6
 6 7020 3600 7740 4050
 6 7020 3600 7740 4050
@@ -26,29 +21,20 @@
 4 1 0 50 -1 -1 10 0.0000 4 105 315 7380 3150 State\001
 -6
-6 6210 5985 6930 6435
+6 5130 5400 5850 5850
+2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
+	 5850 5850 5130 5850 5130 5400 5850 5400 5850 5850
+4 1 0 50 -1 -1 10 0.0000 4 105 315 5490 5670 RAT\001
+-6
+6 6750 5985 7470 6435
 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
-	 6930 6435 6210 6435 6210 5985 6930 5985 6930 6435
-4 1 0 50 -1 -1 10 0.0000 4 105 375 6570 6345 RAW\001
-4 1 0 50 -1 -1 10 0.0000 4 105 375 6570 6165 Check\001
+	 7470 6435 6750 6435 6750 5985 7470 5985 7470 6435
+4 1 0 50 -1 -1 10 0.0000 4 105 375 7110 6345 RAW\001
+4 1 0 50 -1 -1 10 0.0000 4 105 375 7110 6165 Check\001
 -6
 1 3 0 1 0 7 50 -1 0 3.000 1 0.0000 7652 5222 30 30 7652 5222 7682 5218
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 4230 6210 6210 6210
-2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
-	 5310 5040 4590 5040 4590 4590 5310 4590 5310 5040
-2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
-	 6390 5850 5670 5850 5670 5400 6390 5400 6390 5850
-2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
-	 7470 5850 6750 5850 6750 5400 7470 5400 7470 5850
+1 3 0 1 0 7 50 -1 0 3.000 1 0.0000 7665 5764 30 30 7665 5764 7695 5760
 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
 	3 0 1.00 60.00 120.00
-	 4950 5850 4950 6210
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 6930 6210 7830 6210
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 7110 6210 7110 5850
+	 7470 6210 7830 6210
 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
 	 8550 6435 7830 6435 7830 5985 8550 5985 8550 6435
@@ -58,22 +44,8 @@
 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
 	3 0 1.00 60.00 120.00
-	 6750 5625 6390 5625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 7110 4050 7110 5400
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 7110 4815 5310 4815
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
 	 8910 3825 7740 3825
 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
 	3 0 1.00 60.00 120.00
-	 7110 4320 4230 4320
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
 	 7650 6210 7650 4050
-2 2 2 1 0 7 50 -1 -1 3.000 0 0 7 0 0 5
-	 8730 6570 4410 6570 4410 4410 8730 4410 8730 6570
 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
 	3 0 1.00 60.00 120.00
@@ -84,23 +56,58 @@
 2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 3
 	3 0 1.00 60.00 120.00
-	 7650 5220 5130 5220 5130 5400
+	 7650 5220 5670 5220 5670 5400
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4770 6210 6750 6210
+2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
+	 5850 5040 5130 5040 5130 4590 5850 4590 5850 5040
+2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
+	 6930 5850 6210 5850 6210 5400 6930 5400 6930 5850
 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
 	3 0 1.00 60.00 120.00
-	 4770 5040 4770 5400
+	 5490 5850 5490 6210
 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
 	3 0 1.00 60.00 120.00
-	 6030 5850 6030 6210
-4 1 0 50 -1 -1 10 0.0000 4 105 315 4950 4770 RAT\001
-4 1 0 50 -1 -1 10 0.0000 4 150 450 4950 4950 Update\001
-4 1 0 50 -1 -1 10 0.0000 4 105 270 6030 5580 Free\001
-4 1 0 50 -1 -1 10 0.0000 4 105 255 6030 5805 List\001
-4 1 0 50 -1 -1 10 0.0000 4 105 390 7110 5580 Status\001
-4 1 0 50 -1 -1 10 0.0000 4 105 255 7110 5775 List\001
+	 7110 4320 4770 4320
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5310 5040 5310 5400
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6570 5850 6570 6210
+2 2 2 1 0 7 50 -1 -1 3.000 0 0 7 0 0 5
+	 8730 6570 4950 6570 4950 4410 8730 4410 8730 6570
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 7110 4050 7110 4815 5850 4815
+2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
+	 8550 5850 7830 5850 7830 5400 8550 5400 8550 5850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 7650 5760 7830 5760
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 7110 4815 7110 5490 7830 5490
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 7830 5625 6930 5625
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
+	3 0 1.00 60.00 120.00
+	3 0 1.00 60.00 120.00
+	 8550 5625 8910 5625
 4 1 0 50 -1 -1 10 0.0000 4 105 480 8190 6165 Rename\001
-4 1 0 50 -1 -1 10 0.0000 4 120 345 8190 6345 queue\001
+4 1 0 50 -1 -1 10 0.0000 4 105 345 8190 6345 queue\001
 4 2 0 50 -1 -1 10 0.0000 4 75 435 8865 5940 rename\001
-4 0 0 50 -1 -1 10 0.0000 4 150 405 4275 4230 update\001
-4 0 0 50 -1 -1 10 0.0000 4 105 345 4275 6165 decod\001
 4 0 0 50 -1 -1 10 0.0000 4 105 360 7695 4770 insert\001
+4 2 0 50 -1 -1 10 0.0000 4 90 465 8865 3780 execute\001
+4 1 0 50 -1 -1 10 0.0000 4 105 315 5490 4770 RAT\001
+4 1 0 50 -1 -1 10 0.0000 4 135 450 5490 4950 Update\001
+4 1 0 50 -1 -1 10 0.0000 4 105 270 6570 5580 Free\001
+4 1 0 50 -1 -1 10 0.0000 4 105 255 6570 5805 List\001
+4 0 0 50 -1 -1 10 0.0000 4 135 405 4815 4230 update\001
+4 0 0 50 -1 -1 10 0.0000 4 105 345 4815 6165 decod\001
 4 2 0 50 -1 -1 10 0.0000 4 105 345 7065 4770 retire\001
-4 2 0 50 -1 -1 10 0.0000 4 90 465 8865 3780 execute\001
+4 1 0 50 -1 -1 10 0.0000 4 105 390 8190 5535 Status\001
+4 1 0 50 -1 -1 10 0.0000 4 105 255 8190 5670 List\001
+4 1 0 50 -1 -1 10 0.0000 4 135 540 8190 5805 Manager\001
+4 2 0 50 -1 -1 10 0.0000 4 150 855 8865 5355 register_state\001
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_service.fig
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_service.fig	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_service.fig	(revision 30)
@@ -1,3 +1,3 @@
-#FIG 3.2  Produced by xfig version 3.2.5-alpha5
+#FIG 3.2
 Landscape
 Center
@@ -8,4 +8,6 @@
 -2
 1200 2
+5 1 0 1 0 29 50 -1 20 0.000 0 1 0 0 4575.000 2100.000 4350 2400 4575 2475 4800 2400
+5 1 0 1 0 2 48 -1 40 0.000 0 0 0 0 5025.000 2700.000 4800 2400 5025 2325 5250 2400
 6 3675 4050 4725 4650
 5 1 0 1 0 2 50 -1 20 0.000 0 1 0 0 3975.000 4200.000 3750 4500 3975 4575 4200 4500
@@ -31,12 +33,4 @@
 2 1 0 1 0 31 50 -1 20 0.000 0 0 7 0 0 4
 	 6150 4500 6150 4050 7050 4050 7050 4500
--6
-6 4350 1950 5250 2550
-5 1 0 1 0 29 50 -1 20 0.000 0 1 0 0 4575.000 2100.000 4350 2400 4575 2475 4800 2400
-5 1 0 1 0 2 48 -1 40 0.000 0 0 0 0 5025.000 2700.000 4800 2400 5025 2325 5250 2400
-2 1 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 4
-	 4350 2400 4350 1950 5250 1950 5250 2400
-4 1 0 50 -1 -1 10 0.0000 4 105 255 4800 2325 .gen\001
-4 1 0 50 -1 -1 10 0.0000 4 120 675 4800 2100 G\351n\351rateur\001
 -6
 6 5550 1950 6450 2550
@@ -87,5 +81,7 @@
 2 4 0 1 0 4 50 -1 20 0.000 0 0 7 0 0 5
 	 5850 4050 4950 4050 4950 4500 5850 4500 5850 4050
-4 1 0 50 -1 -1 10 0.0000 4 150 570 5400 3225 Morpheo\001
+2 1 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 4
+	 4350 2400 4350 1950 5250 1950 5250 2400
+4 1 0 50 -1 -1 10 0.0000 4 135 570 5400 3225 Morpheo\001
 4 1 0 50 -1 -1 10 0.0000 4 105 435 4200 4275 VHDL\001
 4 1 0 50 -1 -1 10 0.0000 4 105 435 4800 5475 VHDL\001
@@ -93,5 +89,7 @@
 4 1 0 50 -1 -1 10 0.0000 4 105 585 6000 5325 Statistics\001
 4 1 0 50 -1 -1 10 0.0000 4 105 585 6600 4200 Positions\001
-4 1 0 50 -1 -1 10 0.0000 4 120 255 6600 4425 .pos\001
+4 1 0 50 -1 -1 10 0.0000 4 105 255 6600 4425 .pos\001
 4 1 0 50 -1 -1 10 0.0000 4 105 465 7500 3225 Viewer\001
 4 1 0 50 -1 -1 10 0.0000 4 135 555 5400 4275 SystemC\001
+4 1 0 50 -1 -1 10 0.0000 4 105 255 4800 2325 .gen\001
+4 1 0 50 -1 -1 10 0.0000 4 105 615 4800 2100 Generator\001
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Type/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Type/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Type/article-Design_a_CPU_with_High_Performance_and_High_Configurability_on_FPGA	(revision 30)
@@ -0,0 +1,1 @@
+doc
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Type/poster-jnrdm_2007
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Type/poster-jnrdm_2007	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Type/poster-jnrdm_2007	(revision 30)
@@ -0,0 +1,1 @@
+poster
Index: /trunk/IPs/systemC/processor/Morpheo/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Makefile	(revision 30)
@@ -1,3 +1,3 @@
-include $(SOC)/Makefile.tools
+include $(MORPHEO_TOPLEVEL)/Makefile.tools
 
 #-----[ Directory ]----------------------------------------------------
@@ -72,4 +72,5 @@
 			@$(ECHO) ""
 			@$(ECHO) "Delete     temporary files              "$(PWD)
+			@$(RM) *~
 #			@$(MAKE) clean_rec DIR_CLEAN=.
 
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/BaseP.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/BaseP.h	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/BaseP.h	(revision 30)
@@ -22,4 +22,5 @@
       string comment;
       int level;
+     
     protected:
       
@@ -28,7 +29,8 @@
       morpheo::tools::viewer::bdd::Entity *getEntity();
       morpheo::tools::viewer::bdd::Architecture *getArchitecture(); 
-      QList<morpheo::tools::viewer::bdd::Component> *BaseP::getComponent();
+      QList<morpheo::tools::viewer::bdd::Component> *getComponent();
 
       BaseP();
+      BaseP(BaseP *p);
       ~BaseP ();
       void setComment(string s);
@@ -37,4 +39,5 @@
       int getLevel();
       void setLevel (int v);
+      int getSchema();
     };//end class BaseP
 
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/BaseV.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/BaseV.h	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/BaseV.h	(revision 30)
@@ -28,5 +28,5 @@
       //accesseurs
       morpheo::tools::viewer::bdd::BaseP  get_BasePos(string v);
-      morpheo::tools::viewer::bdd::Signal *getSignal(string c,PortMap *dest);
+      morpheo::tools::viewer::bdd::Signal *getSignal(morpheo::tools::viewer::bdd::BaseP *top,string c,PortMap *dest);
       QList<morpheo::tools::viewer::bdd::BaseP>  *getBaseP();
       //morpheo::tools::viewer::bdd::Param get_Param(string v);
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/Entity.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/Entity.h	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/Entity.h	(revision 30)
@@ -27,8 +27,9 @@
       
     public:
-      Entity(string n,int l);
+      Entity(string n,string t,int l);
       ~Entity();
       string getComment();
       string getName();
+      string getType();
       void setComment(string s);
       int getSchema();
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseP_accessors.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseP_accessors.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseP_accessors.cpp	(revision 30)
@@ -13,4 +13,8 @@
     comment=s;
   }
+  void BaseP::setLevel(int s){
+    level=s;
+  }
+ 
   void BaseP::setArchitecture(Architecture *a)
   {
@@ -35,4 +39,8 @@
     return comment;
   }
+  int BaseP::getLevel()
+  {
+    return level;
+  }
 
     QList<morpheo::tools::viewer::bdd::Component> *BaseP::getComponent()
@@ -41,4 +49,5 @@
   }
 
+  int BaseP::getSchema(){return ent->getSchema();}
 };//end bdd
 };//end viewer
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseP_alloc.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseP_alloc.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseP_alloc.cpp	(revision 30)
@@ -15,4 +15,8 @@
   }
 
+ BaseP::BaseP(BaseP *p){
+   *this=p;
+  }
+ 
 };//end bdd
 };//end viewer
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_accessors.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_accessors.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_accessors.cpp	(revision 30)
@@ -10,5 +10,5 @@
 namespace bdd{     
 
- void BaseV::setComment(string s){
+  void BaseV::setComment(string s){
     comment=s;
   }
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_afficheBaseConsole.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_afficheBaseConsole.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_afficheBaseConsole.cpp	(revision 30)
@@ -1,3 +1,3 @@
- /*
+/*
  *
  * [desc.]
@@ -13,4 +13,5 @@
         = pos->begin(); it != pos->end(); ++it)
     {
+     
       morpheo::tools::viewer::bdd::Entity *test=(it->getEntity());
       string n2=test->getName();
@@ -18,5 +19,5 @@
       cout << n << endl ;
       cout << "----Entity-----------------------------------------" <<endl;
-      cout << "Entity name:"<< n2<< endl;
+      cout << "Entity name:"<< n2 <<" level:"<< it->getLevel()<< endl;
       cout << "------------------ports east-----------------------" <<endl;
       
@@ -100,12 +101,14 @@
 	   cout << "port :" << it3->getPort() <<endl;
 	   cout << "comment :" << it3->getComment() <<endl;
-	  
-	  
+
+	   
 	   
 	     }
 	 }
       }//if
+      cout << endl<< "************    fin BASEP  *******************"<<endl <<endl;
+	
     }//for
-    
+      
   }
   
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_getSignal.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_getSignal.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_getSignal.cpp	(revision 30)
@@ -9,9 +9,14 @@
 namespace viewer{
 namespace bdd{  
-
-  morpheo::tools::viewer::bdd::Signal *BaseV::getSignal(string c,morpheo::tools::viewer::bdd::PortMap *dest)
+  /*
+   * search and find the signal 
+   * top : actual component is viewed on screen
+   * c: the component (source) which is connected to the dest
+   * dest : the port destination informations
+   */
+  morpheo::tools::viewer::bdd::Signal *BaseV::getSignal(BaseP *top,string c,morpheo::tools::viewer::bdd::PortMap *dest)
   {
     int srcX,srcY,destX,destY;
-    Architecture *aa=((pos->operator[](0)).getArchitecture());
+    Architecture *aa=top->getArchitecture();
     morpheo::tools::viewer::bdd::Component x=aa->getComponent(c);
     // cout << dest->getName() <<endl;  
@@ -19,5 +24,5 @@
     srcX=p->get_x();
     srcY=p->get_y();
-    // cout << dest->getComponent() <<endl;  
+    //cout << dest->getComponent() <<endl;  
     morpheo::tools::viewer::bdd::BaseP res=get_BasePos(dest->getComponent());
     morpheo::tools::viewer::bdd::Port *pm=(res.getEntity())->searchPort(dest->getPort());
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_searchComponent.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_searchComponent.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_searchComponent.cpp	(revision 30)
@@ -1,2 +1,3 @@
+
  /*
  *
@@ -11,5 +12,11 @@
 
   morpheo::tools::viewer::bdd::BaseP BaseV::get_BasePos(string v){ 
-    return pos->operator[](listcomp->indexOf(v,0));
+    int tmp=listcomp->indexOf(v,0);
+    if(tmp==-1){
+      cout << "not found\n";
+      return NULL;
+    }
+    else
+      return pos->operator[](tmp);
   }
 
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Component_accessors.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Component_accessors.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Component_accessors.cpp	(revision 30)
@@ -16,5 +16,5 @@
   string Component::getComment(){ return comment;}
   string Component::getName(){ return name;}
-    string Component::getType(){ return type;}
+  string Component::getType(){ return type;}
   int Component::get_x(){return pos_x+size_x;}
   int Component::get_y(){return pos_y+size_y;}
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Entity_accessors.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Entity_accessors.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Entity_accessors.cpp	(revision 30)
@@ -18,4 +18,5 @@
   
   string Entity::getName(){ return name;}
+  string Entity::getType(){ return type;}
   
   int Entity::getSchema(){return schema;}
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Entity_alloc.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Entity_alloc.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Entity_alloc.cpp	(revision 30)
@@ -11,10 +11,10 @@
 
 
-  Entity::Entity(string n,int l)
+  Entity::Entity(string n,string t,int l)
     :ListePorts()
   {
     name=n;
     schema=l;
-
+    type=t;
   }
  
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/include/window.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/include/window.h	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/include/window.h	(revision 30)
@@ -14,4 +14,6 @@
 
 #include <iostream>
+#include <cmath>
+#include <sstream>
 #include <qstring.h>
 #include <qapplication.h>
@@ -36,4 +38,7 @@
 #include <qtreeview.h>
 #include <qdirmodel.h>
+#include <qevent.h>
+#include <qfiledialog.h>
+
 
 #include "Tools/Viewer/Parser/include/parser.h"
@@ -44,4 +49,7 @@
 #define EAST 2
 #define WEST 3
+
+#define MARGEX 50
+#define MARGEY 70
 
 using namespace morpheo::tools::viewer::parser;
@@ -62,35 +70,49 @@
 
   Window(QString name);
-  void _setParse(Parse *p);  
-  void _init_file();    
+  void _setParse(Parse *p);  //parse the base
+  void _init_file();    //search component and port before drawing
  private slots:
     
-  void _open();
-  void _open_end();
-  void _open_error();
+  void _open(); //open a file
+ void _open_error();
 
-  void _save();
+  void _save(); //save a file
   void _saveAs();
   void _saveAsOk();
-  void _close();
-  void _quit();
+
+  void _close(); //close a file
+
+  void _quit(); //quit a file
   void _quit2();
-  void _zoomIn();
+
+  void _zoomIn(); //zoom for the architecture view
   void _zoomOut();
   void _defautZoom();
-  void _level();
-  void _informations();
-  void _parameters();
-  void _about();
 
- private:
+  void _level();  
+  void _informations(); //show or hide informations window
+  void _parameters(); //show or hide parameters window
+  void _about(); //about the programm
+  void _component_name(); //show or hide the components name
+  void _signal_name(); //show or hide the signals name
 
-  void wparameters();
-  void winformations();
-  void paintEvent( QPaintEvent * );
-  void repaint();
-  void drawPort(int x,int y,int pos,string dir);
+  void _back();//return to the previous view
+  void _cancel_selection();
+  void _apply();
 
-  QList <Port> port_east;
+ protected :
+  void mousePressEvent (QMouseEvent *); //mouse handler when mouse pressed
+  void mouseMoveEvent (QMouseEvent *); //mouse handler in other case
+ private :
+  void wparameters(); // parameters window builder
+  void winformations(); //informations window builder
+  void paintEvent( QPaintEvent * ); //drawing panel
+  void repaint(); //repaint the panel with current parameters
+  void drawPort(int x,int y,int pos,string dir); //draw the components ports
+  void write_name(string name); //write the name of the component clicked name in the informations window
+  void write_comment(string comment);
+  void write_type(string t);
+
+  QList <Port> port_east; //ports lists
   QList <Port> port_west;
   QList <Port> port_north;
@@ -98,16 +120,20 @@
   QList <Component> *compo;
 
-  QWidget *wparam;
+  QWidget *wparam;//windows widget (informations, parameters, open, save ...)
   QWidget *winfo;
   QWidget *ws;
   QWidget *wq;
-  QWidget *wo;
   QWidget *wa;
 
-  Parse *parse;
-  BaseV *base;
-  BaseP p;
-  Entity *entity;
-  Coord *c;
+  QWidget *mess_charg;
+  QWidget *mess;
+  QBoxLayout *informations; //informations box
+  QBoxLayout *parameters; //parameters box
+
+  Parse *parse; //the parser
+  BaseV *base; //the current BaseV
+  BaseP p; //the current BaseP
+  Entity *entity; //entity of current base
+  Coord *c; 
  
   QPainter painter;
@@ -115,14 +141,23 @@
   QStatusBar *status;
 
-  QLineEdit *file_name;
-  QString current_name;
+  QLineEdit *file_name; //retrieve the name user wants to open from the open window
+  QString current_name; //name of the current file opened
 
-  int window_height;
+  /*items of the informations window*/
+  QLabel *lname;//name of the component clicked
+  QLabel *ln;
+  QLineEdit *comment;//comment associated with the component clicked
+  QLabel *lt;
+  QLabel *ltype;//type of the component
+  
+  int level; //level of architecture
+  int mouseX; //mouse position
+  int mouseY;
+
+  int window_height; //main window size
   int window_width;
-  int panel_heigth;
-  int panel_width;
-  int margeX;
+  int margeX;//size of the marge
   int margeY;
-  int portX;
+  int portX;//port size, position and size of components, used when drawing the architecture
   int portY;
   int posX;
@@ -131,17 +166,27 @@
   int tailleY;
 
-  bool save_as;
+  int cpt_level;
+  QString tab[50];
+
+  QString father;//father name
+  QString current;//name of the current architecture visible
+
+  bool save_as; 
   bool first_save;
-  bool info_open;
-  bool param_open;
-  bool is_save;
-  bool paint;
-  bool wq_open;
-  bool wo_open;
-  bool ws_open;
+  bool info_open; //know if the informations window opened or not
+  bool param_open; //know if the parameters window opened or not
+  bool is_save; //know if the file has been saved
+  bool paint; //(re)paint or not
+  bool wq_open; //know if Quit/Open ( 2 windows possible)/Save window is open
   bool wa_open;
-  bool quit_demand;
-  bool file_open;
-  bool is_parse;
+  bool quit_demand;//know if user clicked on "quit" (used for saving file before quit)
+  bool file_open;//know if a file is still open (used if user wants to open another file)
+  bool signalName;//show or hide signals name
+  bool componentName;//show or hide components name
+  bool charg_open;//back chargement message box opened or not
+  bool mess_open;//chargment message box opened or not
+  bool component_clicked;//if user clicked on a component to modify its parameters
+
+
 };
       };
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_about_actions.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_about_actions.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_about_actions.cpp	(revision 30)
@@ -0,0 +1,14 @@
+#include "window.h"
+
+using namespace std;
+using namespace morpheo::tools::viewer::parser;
+using namespace morpheo::tools::viewer::bdd;
+using namespace morpheo::tools::viewer::graphics;
+
+
+void Window::_about(){
+  QMessageBox *mess = new QMessageBox(this);
+  mess->setText("Viewer beta 1.0\n\nmade by : \nChou Philippe\nLafaye Michaël\nRosière Mathieu\n\nLip6 - 2007");
+  mess->addButton("ok",QMessageBox::YesRole);
+  mess->show();  
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_drawAll.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_drawAll.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_drawAll.cpp	(revision 30)
@@ -7,18 +7,21 @@
 void Window::paintEvent( QPaintEvent * )
 {
-    
   /*draw window size*/
   setMinimumSize(600,600);
-    
+   
+  int schema;
+  QString t;
+ 
   if(paint){
-
     painter.begin(this);
     painter.setPen(Qt::blue);
-    painter.drawRect(margeX,margeY,margeX+450,margeY+450);
+    painter.drawRect(MARGEX,MARGEY,MARGEX+450,MARGEY+450);
+
     
     for(QList<Port>::iterator it=port_east.begin(); it!=port_east.end(); ++it){
       portX = it->get_x();
       portY = it->get_y();
-      drawPort(portX + margeX,portY + margeY ,EAST,it->getDirection());
+      drawPort(portX + MARGEX,portY + MARGEY ,EAST,it->getDirection());
+
     } 
     
@@ -26,5 +29,6 @@
       portX = it->get_x() ;
       portY = it->get_y() ;
-      drawPort(portX + margeX,portY + margeY, WEST, it->getDirection());
+      drawPort(portX + MARGEX,portY + MARGEY, WEST, it->getDirection());
+
     }
 
@@ -32,5 +36,6 @@
       portX = it->get_x() ;
       portY = it->get_y() ;
-      drawPort(portX + margeX ,portY+margeY,NORTH,it->getDirection());
+      drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it->getDirection());
+
     }
 
@@ -38,18 +43,48 @@
       portX = it->get_x() ;
       portY = it->get_y() ;
-      drawPort(portX + margeX,portY+margeY,SOUTH,it->getDirection());
+      drawPort(portX + MARGEX,portY+MARGEY,SOUTH,it->getDirection());
+
     }
-
-
+    
     if(p.getArchitecture()!=NULL){
       compo = p.getComponent();
       for(QList<Component>::iterator it=compo->begin();it!=compo->end();++it){
 	Coord *co = it->get_Position();
-	posX = co->get_hg_x()+margeX;
-	posY = co->get_hg_y()+margeY;
+	posX = co->get_hg_x()+MARGEX;
+	posY = co->get_hg_y()+MARGEY;
 	tailleX = co->get_size_x();
 	tailleY = co->get_size_y();
-	painter.drawRect(posX,posY,tailleX,tailleY);
+	
+	t=QString::fromStdString(it->getType()).toLower();
+	BaseP tp = base->get_BasePos(t.toStdString());
+	if(&tp != NULL){
+	  schema=tp.getSchema();
+	  switch(schema){
+	  case 0:
+	    painter.drawRect(posX,posY,tailleX,tailleY);
+	    break;
+	  case 1:
+	    painter.drawEllipse(posX,posY,tailleX,tailleY);
+	    break;  
+	  case 2:
+	    painter.drawRect(posX,posY,tailleX,tailleY);
+	    painter.drawLine(posX+tailleX/4,posY+tailleY,posX+tailleX/4,posY);
+	    painter.drawLine(posX+tailleX/2,posY+tailleY,posX+tailleX/2,posY);
+	    painter.drawLine(posX+3*tailleX/4,posY+tailleY,posX+3*tailleX/4,posY);
+	    break;
+	  case 3:
+	    painter.drawRect(posX,posY,tailleX,tailleY);
+	    painter.drawLine(posX,posY+tailleY,posX+tailleX/2,posY+tailleY/2);
+	    painter.drawLine(posX+tailleX,posY+tailleY,posX+tailleX/2,posY+tailleY/2);
+	    break;
+	  }
+	}
+
+	if (componentName){
+	  QString compo_name = QString::fromStdString(it->getName());
+	  painter.drawText(posX , posY + tailleY/2,compo_name);
+	}
 	Coord *co2=new Coord( co->get_hg_x() + tailleX/2, co->get_hg_y() + tailleY/2,tailleX/2,tailleY/2);
+
 	QList<Port> ports2=(it->getPortEast(co2));
 	for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2) 
@@ -58,5 +93,5 @@
 	    portX =it2->get_x();
 	    portY =it2->get_y();
-	    drawPort(portX + margeX,portY+margeY , EAST,it2->getDirection());
+	    drawPort(portX + MARGEX,portY+MARGEY , EAST,it2->getDirection());
 	  }
 	ports2=(it->getPortWest(co));
@@ -66,5 +101,5 @@
 	    portX =it2->get_x();
 	    portY =it2->get_y();
-	    drawPort(portX + margeX ,portY+margeY ,WEST,it2->getDirection());
+	    drawPort(portX + MARGEX ,portY+MARGEY ,WEST,it2->getDirection());
 	  }
 	ports2=(it->getPortNorth(co));
@@ -74,5 +109,5 @@
 	    portX =it2->get_x();
 	    portY =it2->get_y();
-	    drawPort(portX + margeX ,portY+margeY,NORTH,it2->getDirection());
+	    drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it2->getDirection());
 	    
 	  }
@@ -83,30 +118,37 @@
 	    portX =it2->get_x();
 	    portY =it2->get_y();
-	    drawPort(portX + margeX ,portY+margeY,SOUTH,it2->getDirection());
+	    drawPort(portX + MARGEX ,portY+MARGEY,SOUTH,it2->getDirection());
 
 	  }
 	painter.setPen(Qt::red);
         QList<PortMap> *pm=it->getPortMap();
-	//init_grid();
+	
 	for (QList<PortMap>::iterator it3=pm->begin();it3!=pm->end();++it3) 
 	  {
-	    Signal *s=base->getSignal(it->getType(),new PortMap(*it3));
-	    painter.drawLine(s->get_src_x()+margeX,s->get_src_y()+margeY,s->get_dest_x()+margeX,s->get_dest_y()+margeY);
-            //p1 = new Point(s->get_src_x()+2*margeX,s->get_src_y()+2*margeY,NULL,FREE,0); 
-	    //p2 = new Point(s->get_dest_x()+margeX,s->get_dest_y()+margeY,NULL,FREE,0);
-	   // grid[p1->getX()][p1->getY()] = p1;
-	    //grid[p2->getX()][p2->getY()] = p2;
-	    
-	    
-	    //drawSignal(p1,p2);
-            //p1 = NULL;p2 = NULL;
+	    Signal *s=base->getSignal(&p,it->getName(),new PortMap(*it3));
+	    painter.drawLine(s->get_src_x()+MARGEX,s->get_src_y()+MARGEY,s->get_dest_x()+MARGEX,s->get_dest_y()+MARGEY);
+
+	    if(signalName){
+	      QString signal_name = QString::fromStdString(it3->getName());
+	      if(s->get_src_x() > s->get_dest_x())
+		painter.drawText(s->get_dest_x() + MARGEX - 40 ,s->get_dest_y() + MARGEY-10, signal_name);
+	      if(s->get_src_x() < s->get_dest_x())
+		painter.drawText(s->get_dest_x() + MARGEX - 40 ,s->get_dest_y() + MARGEY-10, signal_name);
+	    }
+
 	  }
+	if(charg_open){
+	  charg_open = false;
+	  mess_charg->close();
+	}
         painter.setPen(Qt::blue);
       }
     }
     painter.end();
-    
-    
   }
+   if(mess_open){
+    mess_open = false;
+    mess->close();
+   }
 }
 
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_file_actions.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_file_actions.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_file_actions.cpp	(revision 30)
@@ -0,0 +1,190 @@
+#include "window.h"
+
+using namespace std;
+using namespace morpheo::tools::viewer::parser;
+using namespace morpheo::tools::viewer::bdd;
+using namespace morpheo::tools::viewer::graphics;
+
+
+/*signals actions implementation*/
+
+void Window::_open(){
+  QString current2;
+  if(!file_open && is_save){//if no file open or if the file opened has been saved -> open other file, else -> ask for saving file
+    current2 = QFileDialog::getOpenFileName(this,"", "./data");
+    if(current2!=""){
+      this->setDisabled(true);
+      current_name = current2;
+      if(parse->open_file( current_name.toStdString(),0)==-1)
+	_open_error();
+      else{
+	paint = false;
+	repaint();
+	_init_file();
+      }
+    }
+  }
+  else{
+    file_open = false;
+    if(!is_save){
+      wa_open = true;
+      wa = new QWidget();
+      QBoxLayout *other_box = new QBoxLayout(QBoxLayout::LeftToRight,0);
+      wa->setFixedSize(500,60);
+      wa->move(50,100);
+      QLabel *label = new QLabel("do you want to save this file?");
+      QPushButton *yes_save = new QPushButton("yes",wa);
+      QPushButton *no_save = new QPushButton("no",wa);
+      if(current_name!=NULL)
+	connect(yes_save,SIGNAL(clicked()),this,SLOT(_save()));
+      else 
+	connect(yes_save,SIGNAL(clicked()),this,SLOT(_saveAs()));
+      connect(no_save,SIGNAL(clicked()),this,SLOT(_open()));
+      other_box->addWidget(label);
+      other_box->addWidget(yes_save);
+      other_box->addWidget(no_save);
+      wa->setLayout(other_box);
+      wa->show();
+    }
+    else{
+      parse->closeBaseV();
+      _open();
+    }
+  }
+}
+
+void Window::_init_file(){
+  is_save = true;
+  base = parse->getBaseV();//parse the base and open the file
+  #ifdef DEBUG_ALL
+  base->afficheBaseConsole();
+  #endif
+  cpt_level = 0;
+  
+  tab[cpt_level] = "";
+  file_open = true;
+  QList <BaseP> *liste_compo = base->getBaseP();
+  p = liste_compo->at(0);
+  entity = p.getEntity();
+  current = QString::fromStdString(entity->getName());
+  c = new Coord(250,250,250,250);
+  port_east = entity->getPortEast(c);
+  port_west = entity->getPortWest(c);
+  port_north = entity->getPortNorth(c);
+  port_south = entity->getPortSouth(c);
+  paint = true;
+  repaint();
+  this->setDisabled(false);
+  setMouseTracking(true);
+}
+
+void Window::_open_error(){
+  QMessageBox *error = new QMessageBox(this);
+  error->setText("error : file doesn't exist or is not a valid format");
+  error->addButton("ok",QMessageBox::YesRole);
+  error->show();  
+}  
+
+
+void Window::_save(){
+  if(file_open){
+    if (wa_open)
+      wa->close();
+    if(save_as || first_save || (current_name==NULL)){//if "save as" or if it's the first time the user click on save (new file) -> save as
+      current_name = QFileDialog::getSaveFileName(this,"","./data");
+      save_as = false;
+      first_save = false;
+    }
+    else {
+      status->showMessage("file " + current_name + " saved",900);
+      is_save = true;//file saved
+    }
+    if(wa_open){
+      wa_open = false;
+      _open();
+    }
+  }
+  else{
+    QMessageBox *mess = new QMessageBox(this);
+    mess->setText("no file opened");
+    mess->addButton("ok",QMessageBox::YesRole);
+    mess->show(); 
+  }
+}
+
+void Window::_saveAs(){
+  if (wq_open){//if "quit" window is open, close it
+    wq->close();
+    wq_open = false;
+  }
+  save_as = true;
+  _save();
+}
+
+void Window::_saveAsOk(){
+  is_save = true;
+  status->showMessage("file " + current_name + " saved",900);
+  if(wa_open){
+    wa_open = false;
+    _open();
+  }
+  if(quit_demand)//if the user clicked on "quit" (but saved the file just before) -> quit the application
+    _quit2();
+}
+
+void Window::_close(){
+  paint = false;
+  parse->closeBaseV();
+  lname->setText("");
+  ln->setText("");
+  lt->setText("");
+  write_name("");
+  write_comment("");
+  comment->hide();
+  winfo->show();
+  file_open = false;
+  repaint();
+}
+
+void Window::_quit(){
+  //if the file is not saved -> ask to the user if he wants to save it. If yes -> save, else quit.
+  if(file_open && !is_save){
+    wq_open = true;
+    quit_demand = true;
+    wq = new QWidget();
+    QBoxLayout *quit_box = new QBoxLayout(QBoxLayout::LeftToRight,0);
+    wq->setWindowTitle("save : file name");
+    wq->setFixedSize(500,60);
+    wq->move(50,100);
+    QLabel *label = new QLabel("do you want to save this file?");
+    QPushButton *yes_save = new QPushButton("yes",wq);
+    QPushButton *no_save = new QPushButton("no",wq);
+    connect(yes_save,SIGNAL(clicked()),this,SLOT(_saveAs()));
+    connect(no_save,SIGNAL(clicked()),this,SLOT(_quit2()));
+    quit_box->addWidget(label);
+    quit_box->addWidget(yes_save);
+    quit_box->addWidget(no_save);
+    wq->setLayout(quit_box);
+    wq->show();
+  }
+  else
+    _quit2();
+}
+  
+void Window::_quit2(){
+  /*test if there are windows (other than the main window) opened*/
+
+  if(wq_open)
+    wq->close();
+  if(wa_open)
+    wa->close();
+  if(param_open)
+    wparam->close();
+  if(info_open)
+    winfo->close();
+  close();
+}
+
+
+
+
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_informations_window.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_informations_window.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_informations_window.cpp	(revision 30)
@@ -10,12 +10,62 @@
 {
   winfo = new QWidget();
-  QBoxLayout *informations = new QBoxLayout(QBoxLayout::LeftToRight,0);
-  winfo->resize(200,450);
+  informations = new QBoxLayout(QBoxLayout::TopToBottom,0);
   winfo->setWindowTitle("informations");
-  winfo->setFixedSize(200,620);
-  winfo->move(608,0);
+  winfo->setFixedSize(350,292);
+  winfo->move(628,50);
+
+  QBoxLayout *bname = new QBoxLayout(QBoxLayout::LeftToRight,0);
+  ln = new QLabel();
+  ln->setText("");
+  lname = new QLabel();
+  lname->setText("");
+  bname->addWidget(ln);
+  bname->addWidget(lname);
+
+  QBoxLayout *btype = new QBoxLayout(QBoxLayout::LeftToRight,0);
+  lt = new QLabel();
+  lt->setText("");
+  ltype = new QLabel();
+  ltype->setText("");
+  btype->addWidget(lt);
+  btype->addWidget(ltype);
+
+  comment = new QLineEdit();
+  comment->setText("");
+  comment->setReadOnly(true);
+
+  QPushButton *noselect = new QPushButton("cancel selection",wparam);
+  QPushButton *back = new QPushButton("back",wparam);
+  connect(back,SIGNAL(clicked()),this,SLOT(_back()));
+  connect(noselect,SIGNAL(clicked()),this,SLOT(_cancel_selection()));
+
+  informations->addLayout(bname);
+  informations->addLayout(btype);
+  informations->addWidget(comment);
+  informations->addWidget(noselect);
+  informations->addWidget(back);
+
   winfo->setLayout(informations);
   winfo->show();
 }
 
+void Window::write_comment(string cm){
+  QString c = QString::fromStdString(cm);
+  comment->setText(c);
+  comment->show();
+}
 
+void Window::write_name(string name){
+  QString n = QString::fromStdString(name);
+  lname->setText(n);
+}
+
+void Window::write_type(string type){
+  lt->setText("type");
+  QString n = QString::fromStdString(type);
+  ltype->setText(n);
+}
+
+void Window::_cancel_selection(){
+  component_clicked = false;
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_main.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_main.cpp	(revision 30)
@@ -18,14 +18,15 @@
   if(argc>2){
     cout << "error : argument must be a file name or nothing" << endl;
+    cout << "usage : Viewer [file]" << endl;
     return 0;
   }
 
   Parse *par = new Parse();
-
+  
   
    QApplication *a=new QApplication (argc,argv);  
    
-   if(argc == 2){
-     if(par->open_file(argv[1])==-1){
+  if(argc == 2){
+     if(par->open_file(argv[1],0)==-1){
 	cout << "file doesn't exist or is not a valid format" << endl;  
 	exit(1);
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_main_window.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_main_window.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_main_window.cpp	(revision 30)
@@ -10,9 +10,10 @@
 {
   paint = false;
-  is_parse = false;
   window_height = 620;
-  window_width = 600;
-  margeX = 50;
-  margeY = 70;
+  window_width = 620;
+  charg_open = false;
+  mess_open = false; 
+  component_clicked = false;
+  cpt_level=0;
   
   /*menu bar*/
@@ -78,10 +79,21 @@
   connect(paramAct,SIGNAL(triggered()),this,SLOT(_parameters()));
 
+
+  QAction *compoNameAct;
+  compoNameAct = new QAction(tr("&components name"),this);
+  connect(compoNameAct,SIGNAL(triggered()),this,SLOT(_component_name()));
+
+  QAction *signalNameAct;
+  signalNameAct = new QAction(tr("&signals name"),this);
+  connect(signalNameAct,SIGNAL(triggered()),this,SLOT(_signal_name()));
+
   /*add the menu "tools" to the menu bar*/
   tools = menu_bar->addMenu(tr("&Tools"));
-  tools->addAction(zoomInAct);
-  tools->addAction(zoomOutAct);
-  tools->addAction(defautZoomAct);
-  tools->addAction(levelAct);
+  //tools->addAction(zoomInAct);
+  //tools->addAction(zoomOutAct);
+  //tools->addAction(defautZoomAct);
+  tools->addAction(compoNameAct);
+  tools->addAction(signalNameAct);
+  //tools->addAction(levelAct);
   tools->addAction(infoAct);
   tools->addAction(paramAct);
@@ -96,5 +108,4 @@
   help->addAction(aboutAct);
  
-
   /*add the menu bar to the main window*/
   this->setMenuWidget(menu_bar);
@@ -108,5 +119,5 @@
 
   /*defaut position*/
-  this->move(0,0);    
+  this->move(0,50);    
 
   /*main window title*/
@@ -125,8 +136,10 @@
 
   /*little windows (open, save...), closed at init*/
-  wo_open = false;
   wq_open = false;
-  ws_open = false;
   wa_open = false;
+
+  /*signals and components name hidden*/
+  signalName = false;
+  componentName = false;
 
   /*file unsaved at init*/
@@ -134,5 +147,4 @@
   first_save = false; //first_save = true for a new file
   
-
   current_name = name;
   if(current_name != NULL){
@@ -142,5 +154,5 @@
     file_open = false;
     paint = false;
-    is_save = false;
+    is_save = true;
   }
 }
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_mouseEvent.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_mouseEvent.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_mouseEvent.cpp	(revision 30)
@@ -0,0 +1,277 @@
+#include "window.h"
+
+using namespace std;
+using namespace morpheo::tools::viewer::parser;
+using namespace morpheo::tools::viewer::bdd;
+using namespace morpheo::tools::viewer::graphics;
+
+void Window::mousePressEvent (QMouseEvent *e){
+  if(paint && (p.getArchitecture() != NULL)){
+
+    compo = p.getComponent();
+    
+    QMouseEvent *mouseEvent = (QMouseEvent *) e;
+    
+    mouseX = mouseEvent->x();
+    mouseY = mouseEvent->y();
+    
+    bool bc = false;
+    int cx,cy,tx,ty;
+    string cc,nc,type;
+    bool found = false;
+
+    for(QList<Component>::iterator it=compo->begin();it!=compo->end();++it){
+      Coord *co = it->get_Position();
+      int px = co->get_hg_x();
+      int py = co->get_hg_y();
+      int taillex = co->get_size_x();
+      int tailley = co->get_size_y();
+      QString t=QString::fromStdString(it->getType()).toLower();
+      if(e->type() == QMouseEvent::MouseButtonDblClick && e->button() == Qt::LeftButton){
+	
+	if(mouseX >= px + MARGEX  && mouseY >= py +MARGEY && mouseX <= px+taillex + MARGEX  && mouseY <= py+tailley + MARGEY) {
+	  
+	  bc = false;
+	  paint = false;
+	  repaint();
+          found=true;
+	  this->setDisabled(true);
+	}
+      }
+      if(found){  
+       	mess = new QWidget();
+	mess->setFixedSize(200,50);
+	mess->move(200,50);
+	QBoxLayout *b = new QBoxLayout(QBoxLayout::TopToBottom,0);
+	QLabel *l = new QLabel();
+	l->setText("please wait while charging");
+	b->addWidget(l);
+	mess->setLayout(b);
+	mess->show();
+	mess_open = true;
+
+	p=base->get_BasePos(t.toStdString());
+	entity = p.getEntity();
+	c = new Coord(250,250,250,250);
+	port_east = entity->getPortEast(c);
+	port_west = entity->getPortWest(c);
+	port_north = entity->getPortNorth(c);
+	port_south = entity->getPortSouth(c);
+	if(cpt_level!=0)
+	  tab[cpt_level]=father;
+	father = current;
+	current = QString::fromStdString(t.toStdString());
+	cpt_level++;
+	tab[cpt_level] = father;
+	paint = true;
+	repaint();
+	write_name("");
+	write_comment("");
+	write_type("");
+	ln->setText("");
+	lt->setText("");
+	comment->hide();
+	found = false;
+	this->setDisabled(false);
+	component_clicked = false;
+      }
+      
+      if(e->type() == QMouseEvent::MouseButtonPress && e->button() == Qt::LeftButton){
+	if(mouseX >= px + MARGEX  && mouseY >= py +MARGEY && mouseX <= px+taillex + MARGEX  && mouseY <= py+tailley + MARGEY) {
+	  bc = true;
+	  nc = it->getName();
+	  cx = px;
+	  cy = py;
+	  tx = taillex;
+	  ty = tailley;
+	  type = it->getType();
+	  BaseP tp = base->get_BasePos(t.toStdString());
+	  if(&tp != NULL)
+		cc=tp.getComment();
+	  component_clicked = true;
+	}
+      }
+    }
+    if(bc){
+      write_name(nc);
+      write_type(type);
+      ln->setText("component");
+      lt->setText("type");
+      write_comment(cc);
+    }
+  }
+}
+
+
+void Window::mouseMoveEvent(QMouseEvent *e){
+  bool b  = false;
+  bool b2 = false;
+  bool b3 = false;
+  int px,py,taillex,tailley,ppx,ppy;
+  string s,s2,c,type;
+
+   if(paint && (p.getArchitecture() != NULL) && !component_clicked){
+
+    compo = p.getComponent();
+    
+    QMouseEvent *mouseEvent = (QMouseEvent *) e;
+
+    mouseX = mouseEvent->x();
+    mouseY = mouseEvent->y();
+    
+    for(QList<Component>::iterator it=compo->begin();it!=compo->end();++it){
+      Coord *co = it->get_Position();
+      px = co->get_hg_x();
+      py = co->get_hg_y();
+      taillex = co->get_size_x();
+      tailley = co->get_size_y();
+      QString t=QString::fromStdString(it->getType()).toLower();
+      QList<PortMap> *pm=it->getPortMap();
+
+      if(e->type() == QMouseEvent::MouseMove){
+	if(mouseX >= px + MARGEX  && mouseY >= py +MARGEY && mouseX <= px+taillex + MARGEX  && mouseY <= py+tailley + MARGEY) {
+	  b = true;
+	  s = it->getName();
+	  type = it->getType();
+	  BaseP tp=base->get_BasePos(t.toStdString());
+	  if(&tp!=NULL)
+	    c=tp.getComment();
+	  ppx = px;
+	  ppy = py;
+	  break;
+	}
+	else{
+	  for (QList<PortMap>::iterator it3=pm->begin();it3!=pm->end();++it3) {
+	  	Signal *sig=base->getSignal(&p,it->getName(),new PortMap(*it3));
+	  	if(mouseX >= sig->get_src_x() - 15  + MARGEX  && mouseY >= sig->get_src_y() - 15 + MARGEY && mouseX <= sig->get_src_x() + 15  + MARGEX  && mouseY <= sig->get_src_y() + 15 +MARGEY){
+		  b2 = true;
+	  	  s = it3->getName();
+		  break;
+	  	}
+	  }
+	}   
+      }
+    }
+    
+    if(b){
+      write_name(s);
+      write_type(type);
+      ln->setText("component");
+      write_comment(c);
+      lt->setText("type");
+      b3 = false;
+      b2 = false;
+    }
+    
+    if(b2){
+      write_name(s);
+      write_type("");
+      lt->setText("");
+      write_comment("");
+      ln->setText("signal");
+      comment->hide();
+      b3 = false;
+      b = false;
+    }
+
+    if(!b && !b2){
+      write_name("");
+      write_type("");
+      ln->setText("");
+      lt->setText("");
+      write_comment("");
+      comment->hide();
+    }
+   }
+  
+  
+   for(QList<Port>::iterator it=port_east.begin(); it!=port_east.end(); ++it){
+      portX = it->get_x();
+      portY = it->get_y();
+      if(mouseX >= portX - 15 + MARGEX && mouseY >= portY - 15 + MARGEY && mouseX <= portX + 15 +MARGEX && mouseY <= portY + 15 + MARGEY){
+	b3 = true;
+	s2 = it->getName();
+      }
+   } 
+   
+   for(QList<Port>::iterator it=port_west.begin(); it!=port_west.end(); ++it){
+     portX = it->get_x() ;
+     portY = it->get_y() ;
+     if(mouseX >= portX - 15 + MARGEX && mouseY >= portY - 15 + MARGEY && mouseX <= portX + 15 + MARGEX && mouseY <= portY + 15 + MARGEY){
+       b3 = true;
+       s2 = it->getName();
+     }
+   }
+   
+   for(QList<Port>::iterator it=port_north.begin(); it!=port_north.end(); ++it){
+     portX = it->get_x() ;
+     portY = it->get_y() ;
+     if(mouseX >= portX - 15 + MARGEX && mouseY >= portY - 15 +MARGEY && mouseX <= portX + 15 + MARGEX && mouseY <= portY + 15 +MARGEY){
+	b3 = true;
+	s2 = it->getName();
+     }
+   }
+   
+    for(QList<Port>::iterator it=port_south.begin(); it!=port_south.end(); ++it){
+      portX = it->get_x() ;
+      portY = it->get_y() ;
+      if(mouseX >= portX - 15 + MARGEX && mouseY >= portY - 15 + MARGEY && mouseX <= portX + 15 +MARGEX && mouseY <= portY + 15 + MARGEY){
+	b3 = true;
+	s2 = it->getName();
+      }
+    }
+    if(b3){
+      b = false;
+      write_name("");
+      write_name(s2);
+      write_type(type);
+      ln->setText("signal");
+      lt->setText("");
+      write_comment("");
+      comment->hide();
+    }
+}
+
+
+   
+ 
+void Window::_back(){
+  if(cpt_level==0){
+    QMessageBox *m = new QMessageBox(this);
+    m->setText("can't go up, you're on the top level !");
+    m->addButton("ok",QMessageBox::YesRole);
+    m->show();  
+  }
+  
+  else{
+    this->setDisabled(true);
+    paint = false;
+    repaint();
+    cpt_level--;
+    mess_charg = new QWidget();
+    mess_charg->setFixedSize(200,50);
+    mess_charg->move(200,50);
+    charg_open = true;
+    QBoxLayout *b = new QBoxLayout(QBoxLayout::TopToBottom,0);
+    QLabel *l = new QLabel();
+    l->setText("please wait while charging");
+    b->addWidget(l);
+    mess_charg->setLayout(b);
+    mess_charg->show();
+    
+    p = base->get_BasePos(father.toStdString());
+    entity = p.getEntity();
+    c = new Coord(250,250,250,250);
+    port_east = entity->getPortEast(c);
+    port_west = entity->getPortWest(c);
+    port_north = entity->getPortNorth(c);
+    port_south = entity->getPortSouth(c);
+    father = tab[cpt_level];
+    current = QString::fromStdString(entity->getName());
+    paint = true;
+    repaint();
+    this->setDisabled(false);
+    component_clicked = false;
+  }
+}
+
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_parameters_window.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_parameters_window.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_parameters_window.cpp	(revision 30)
@@ -10,9 +10,15 @@
 {
   wparam = new QWidget();
-  QBoxLayout *parameters = new QBoxLayout(QBoxLayout::LeftToRight,0);
-  wparam->resize(200,450);
+  parameters = new QBoxLayout(QBoxLayout::TopToBottom,0);
   wparam->setWindowTitle("parameters");
-  wparam->setFixedSize(200,620);
-  wparam->move(816,0);
+  wparam->setFixedSize(350,300);
+  wparam->move(628,370);
+
+  
+  QPushButton *apply = new QPushButton("apply",wparam);
+  connect(apply,SIGNAL(clicked()),this,SLOT(_apply()));
+  
+  parameters->addWidget(apply);
+
   wparam->setLayout(parameters);
   wparam->show();
@@ -20,3 +26,5 @@
 
 
-
+void Window::_apply(){
+  cout << "apply\n";
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_setParse.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_setParse.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_setParse.cpp	(revision 30)
@@ -11,5 +11,4 @@
   if(p)
     parse=p;
-  else
-    cout<<"eee";
+
 }
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_tools_actions.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_tools_actions.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_tools_actions.cpp	(revision 30)
@@ -0,0 +1,65 @@
+#include "window.h"
+
+using namespace std;
+using namespace morpheo::tools::viewer::parser;
+using namespace morpheo::tools::viewer::bdd;
+using namespace morpheo::tools::viewer::graphics;
+
+void Window::_zoomIn(){
+  cout << "zoom in" << endl;
+}
+
+void Window::_zoomOut(){
+  cout << "zoom out" << endl;
+}
+
+void Window::_defautZoom(){
+  cout << "defaut zoom" << endl;
+}
+
+void Window::_level(){
+  cout << "level" <<endl;
+}
+
+void Window::_informations(){
+  if(!info_open){//if the informations window is not open, open it,else close it
+    this->winformations();
+    info_open = true;
+  }
+  else{ 
+    winfo->close();
+    info_open = false;
+  }
+}
+
+void Window::_parameters(){//if the parameteres  window is not open, open it,else close it
+  if(!param_open){
+    this->wparameters();
+    param_open = true;
+  }
+  else{ 
+    wparam->close();
+    param_open = false;
+  }
+}
+
+void Window::_component_name(){
+
+  if(componentName)
+    componentName = false;
+
+  else componentName = true;
+
+  repaint();
+}
+
+void Window::_signal_name(){
+
+  if(signalName)
+    signalName = false;
+
+  else 
+    signalName = true;
+
+  repaint();
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Makefile	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Makefile	(revision 30)
@@ -1,5 +1,5 @@
 #############################################################################
 # Makefile for building: bin/Viewer
-# Generated by qmake (2.01a) (Qt 4.2.2) on: Wed May 2 14:27:25 2007
+# Generated by qmake (2.01a) (Qt 4.2.2) on: Sun May 20 18:09:08 2007
 # Project:  Viewer.pro
 # Template: app app
@@ -93,4 +93,6 @@
 		Bdd/src/ListePorts_searchPort.cpp \
 		Parser/src/Parse_alloc.cpp \
+		Parser/src/Parse_closeBaseV.cpp \
+		Parser/src/Parse_accessors.cpp \
 		Parser/src/Parse_parser_pos.cpp \
 		Parser/src/Parse_getBaseV.cpp \
@@ -98,5 +100,7 @@
 		Parser/src/Parse_open_file.cpp \
 		Graphics/src/Graphics_main.cpp \
-		Graphics/src/Graphics_window_actions.cpp \
+		Graphics/src/Graphics_file_actions.cpp \
+		Graphics/src/Graphics_tools_actions.cpp \
+		Graphics/src/Graphics_about_actions.cpp \
 		Graphics/src/Graphics_main_window.cpp \
 		Graphics/src/Graphics_informations_window.cpp \
@@ -104,5 +108,6 @@
 		Graphics/src/Graphics_parameters_window.cpp \
 		Graphics/src/Graphics_setParse.cpp \
-		Graphics/src/Graphics_drawAll.cpp moc_window.cpp
+		Graphics/src/Graphics_drawAll.cpp \
+		Graphics/src/Graphics_mouseEvent.cpp moc_window.cpp
 OBJECTS       = obj/Architecture_accessors.o \
 		obj/BaseP_accessors.o \
@@ -152,4 +157,6 @@
 		obj/ListePorts_searchPort.o \
 		obj/Parse_alloc.o \
+		obj/Parse_closeBaseV.o \
+		obj/Parse_accessors.o \
 		obj/Parse_parser_pos.o \
 		obj/Parse_getBaseV.o \
@@ -157,5 +164,7 @@
 		obj/Parse_open_file.o \
 		obj/Graphics_main.o \
-		obj/Graphics_window_actions.o \
+		obj/Graphics_file_actions.o \
+		obj/Graphics_tools_actions.o \
+		obj/Graphics_about_actions.o \
 		obj/Graphics_main_window.o \
 		obj/Graphics_informations_window.o \
@@ -164,4 +173,5 @@
 		obj/Graphics_setParse.o \
 		obj/Graphics_drawAll.o \
+		obj/Graphics_mouseEvent.o \
 		obj/moc_window.o
 DIST          = /dsk/l1/misc/kane/qt-x11-opensource-4.2.2/mkspecs/common/unix.conf \
@@ -258,5 +268,5 @@
 dist: 
 	@$(CHK_DIR_EXISTS) obj/Viewer1.0.0 || $(MKDIR) obj/Viewer1.0.0 
-	$(COPY_FILE) --parents $(SOURCES) $(DIST) obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/include/Architecture.h Bdd/include/BaseP.h Bdd/include/BaseV.h Bdd/include/Component.h Bdd/include/Coord.h Bdd/include/Entity.h Bdd/include/ListePorts.h Bdd/include/Port.h Bdd/include/PortMap.h Bdd/include/Signal.h Graphics/include/window.h Parser/include/parser.h obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/src/Architecture_accessors.cpp Bdd/src/BaseP_accessors.cpp Bdd/src/Architecture_addComponent.cpp Bdd/src/Architecture_alloc.cpp Bdd/src/Architecture_searchComponent.cpp Bdd/src/Architecture_unalloc.cpp Bdd/src/BaseP_alloc.cpp Bdd/src/BaseP_unalloc.cpp Bdd/src/BaseV_accessors.cpp Bdd/src/BaseV_addBaseP.cpp Bdd/src/BaseV_addParam.cpp Bdd/src/BaseV_afficheBaseConsole.cpp Bdd/src/BaseV_alloc.cpp Bdd/src/BaseV_searchComponent.cpp Bdd/src/BaseV_unalloc.cpp Bdd/src/Component_accessors.cpp Bdd/src/Component_addPortMap.cpp Bdd/src/Component_alloc.cpp Bdd/src/Component_getPosition.cpp Bdd/src/Component_unalloc.cpp Bdd/src/Coord_alloc.cpp Bdd/src/Coord_unalloc.cpp Bdd/src/Signal_unalloc.cpp Bdd/src/ListePorts_getPortSouth.cpp Bdd/src/Port_accessors.cpp Bdd/src/Signal_alloc.cpp Bdd/src/Port_alloc.cpp Bdd/src/Signal_accessors.cpp Bdd/src/Coord_accessors.cpp Bdd/src/Port_unalloc.cpp Bdd/src/ListePorts_getPortEast.cpp Bdd/src/BaseV_getSignal.cpp Bdd/src/PortMap_alloc.cpp Bdd/src/Entity_alloc.cpp Bdd/src/PortMap_unalloc.cpp Bdd/src/ListePorts_alloc.cpp Bdd/src/PortMap_accessors.cpp Bdd/src/ListePorts_unalloc.cpp Bdd/src/ListePorts_countPort.cpp Bdd/src/ListePorts_getPortWest.cpp Bdd/src/Entity_unalloc.cpp Bdd/src/ListePorts_getPortNorth.cpp Bdd/src/Entity_accessors.cpp Bdd/src/ListePorts_addPort.cpp Bdd/src/ListePorts_accessors.cpp Bdd/src/ListePorts_searchPort.cpp Parser/src/Parse_alloc.cpp Parser/src/Parse_parser_pos.cpp Parser/src/Parse_getBaseV.cpp Parser/src/Parse_unalloc.cpp Parser/src/Parse_open_file.cpp Graphics/src/Graphics_main.cpp Graphics/src/Graphics_window_actions.cpp Graphics/src/Graphics_main_window.cpp Graphics/src/Graphics_informations_window.cpp Graphics/src/Graphics_drawPort.cpp Graphics/src/Graphics_parameters_window.cpp Graphics/src/Graphics_setParse.cpp Graphics/src/Graphics_drawAll.cpp obj/Viewer1.0.0/ && (cd `dirname obj/Viewer1.0.0` && $(TAR) Viewer1.0.0.tar Viewer1.0.0 && $(COMPRESS) Viewer1.0.0.tar) && $(MOVE) `dirname obj/Viewer1.0.0`/Viewer1.0.0.tar.gz . && $(DEL_FILE) -r obj/Viewer1.0.0
+	$(COPY_FILE) --parents $(SOURCES) $(DIST) obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/include/Architecture.h Bdd/include/BaseP.h Bdd/include/BaseV.h Bdd/include/Component.h Bdd/include/Coord.h Bdd/include/Entity.h Bdd/include/ListePorts.h Bdd/include/Port.h Bdd/include/PortMap.h Bdd/include/Signal.h Graphics/include/window.h Parser/include/parser.h obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/src/Architecture_accessors.cpp Bdd/src/BaseP_accessors.cpp Bdd/src/Architecture_addComponent.cpp Bdd/src/Architecture_alloc.cpp Bdd/src/Architecture_searchComponent.cpp Bdd/src/Architecture_unalloc.cpp Bdd/src/BaseP_alloc.cpp Bdd/src/BaseP_unalloc.cpp Bdd/src/BaseV_accessors.cpp Bdd/src/BaseV_addBaseP.cpp Bdd/src/BaseV_addParam.cpp Bdd/src/BaseV_afficheBaseConsole.cpp Bdd/src/BaseV_alloc.cpp Bdd/src/BaseV_searchComponent.cpp Bdd/src/BaseV_unalloc.cpp Bdd/src/Component_accessors.cpp Bdd/src/Component_addPortMap.cpp Bdd/src/Component_alloc.cpp Bdd/src/Component_getPosition.cpp Bdd/src/Component_unalloc.cpp Bdd/src/Coord_alloc.cpp Bdd/src/Coord_unalloc.cpp Bdd/src/Signal_unalloc.cpp Bdd/src/ListePorts_getPortSouth.cpp Bdd/src/Port_accessors.cpp Bdd/src/Signal_alloc.cpp Bdd/src/Port_alloc.cpp Bdd/src/Signal_accessors.cpp Bdd/src/Coord_accessors.cpp Bdd/src/Port_unalloc.cpp Bdd/src/ListePorts_getPortEast.cpp Bdd/src/BaseV_getSignal.cpp Bdd/src/PortMap_alloc.cpp Bdd/src/Entity_alloc.cpp Bdd/src/PortMap_unalloc.cpp Bdd/src/ListePorts_alloc.cpp Bdd/src/PortMap_accessors.cpp Bdd/src/ListePorts_unalloc.cpp Bdd/src/ListePorts_countPort.cpp Bdd/src/ListePorts_getPortWest.cpp Bdd/src/Entity_unalloc.cpp Bdd/src/ListePorts_getPortNorth.cpp Bdd/src/Entity_accessors.cpp Bdd/src/ListePorts_addPort.cpp Bdd/src/ListePorts_accessors.cpp Bdd/src/ListePorts_searchPort.cpp Parser/src/Parse_alloc.cpp Parser/src/Parse_closeBaseV.cpp Parser/src/Parse_accessors.cpp Parser/src/Parse_parser_pos.cpp Parser/src/Parse_getBaseV.cpp Parser/src/Parse_unalloc.cpp Parser/src/Parse_open_file.cpp Graphics/src/Graphics_main.cpp Graphics/src/Graphics_file_actions.cpp Graphics/src/Graphics_tools_actions.cpp Graphics/src/Graphics_about_actions.cpp Graphics/src/Graphics_main_window.cpp Graphics/src/Graphics_informations_window.cpp Graphics/src/Graphics_drawPort.cpp Graphics/src/Graphics_parameters_window.cpp Graphics/src/Graphics_setParse.cpp Graphics/src/Graphics_drawAll.cpp Graphics/src/Graphics_mouseEvent.cpp obj/Viewer1.0.0/ && (cd `dirname obj/Viewer1.0.0` && $(TAR) Viewer1.0.0.tar Viewer1.0.0 && $(COMPRESS) Viewer1.0.0.tar) && $(MOVE) `dirname obj/Viewer1.0.0`/Viewer1.0.0.tar.gz . && $(DEL_FILE) -r obj/Viewer1.0.0
 
 
@@ -443,4 +453,10 @@
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_alloc.o Parser/src/Parse_alloc.cpp
 
+obj/Parse_closeBaseV.o: Parser/src/Parse_closeBaseV.cpp 
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_closeBaseV.o Parser/src/Parse_closeBaseV.cpp
+
+obj/Parse_accessors.o: Parser/src/Parse_accessors.cpp 
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_accessors.o Parser/src/Parse_accessors.cpp
+
 obj/Parse_parser_pos.o: Parser/src/Parse_parser_pos.cpp 
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_parser_pos.o Parser/src/Parse_parser_pos.cpp
@@ -458,6 +474,12 @@
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_main.o Graphics/src/Graphics_main.cpp
 
-obj/Graphics_window_actions.o: Graphics/src/Graphics_window_actions.cpp Graphics/include/window.h
-	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_window_actions.o Graphics/src/Graphics_window_actions.cpp
+obj/Graphics_file_actions.o: Graphics/src/Graphics_file_actions.cpp Graphics/include/window.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_file_actions.o Graphics/src/Graphics_file_actions.cpp
+
+obj/Graphics_tools_actions.o: Graphics/src/Graphics_tools_actions.cpp Graphics/include/window.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_tools_actions.o Graphics/src/Graphics_tools_actions.cpp
+
+obj/Graphics_about_actions.o: Graphics/src/Graphics_about_actions.cpp Graphics/include/window.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_about_actions.o Graphics/src/Graphics_about_actions.cpp
 
 obj/Graphics_main_window.o: Graphics/src/Graphics_main_window.cpp Graphics/include/window.h
@@ -479,4 +501,7 @@
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_drawAll.o Graphics/src/Graphics_drawAll.cpp
 
+obj/Graphics_mouseEvent.o: Graphics/src/Graphics_mouseEvent.cpp Graphics/include/window.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_mouseEvent.o Graphics/src/Graphics_mouseEvent.cpp
+
 obj/moc_window.o: moc_window.cpp 
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_window.o moc_window.cpp
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/include/parser.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/include/parser.h	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/include/parser.h	(revision 30)
@@ -17,5 +17,5 @@
 #include "Tools/Viewer/Bdd/include/PortMap.h"
 
-
+#define LEVEL_MAX 8
 
 using namespace std;
@@ -32,14 +32,13 @@
   string s;
   string absolutePath;
+  string toplevel;
 
-protected:
   morpheo::tools::viewer::bdd::BaseV *base;
   morpheo::tools::viewer::bdd::BaseP *pos;
-  morpheo::tools::viewer::bdd::Entity *ent;
-  morpheo::tools::viewer::bdd::Architecture *arch;
-  morpheo::tools::viewer::bdd::Component *ctemp;
-  //  morpheo::tools::viewer::bdd::Param *param;
-
-
+  morpheo::tools::viewer::bdd::Entity *ent[LEVEL_MAX];
+  morpheo::tools::viewer::bdd::Architecture *arch[LEVEL_MAX];
+  morpheo::tools::viewer::bdd::Component *ctemp[LEVEL_MAX];
+  
+protected:
 
 public:
@@ -47,11 +46,13 @@
   Parse(void);
   ~Parse(void);
-  void parser_pos(QDomNode n);
-  //void ParseParam(void);
-  int open_file(string name);
+  void parser_pos(QDomNode n,int level);
+
+  int open_file(string name,int level);
   //void saveFile(string name);
   morpheo::tools::viewer::bdd::BaseV *getBaseV();
-
- 
+  string getTopLevelName();
+  string getAbsolutePath();
+  /*Close and erase baseV*/
+  void closeBaseV();
  //void refresh();
  
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_accessors.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_accessors.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_accessors.cpp	(revision 30)
@@ -0,0 +1,23 @@
+/*
+ *
+ * [desc.]
+ */
+#include "Tools/Viewer/Parser/include/parser.h"
+
+namespace morpheo{
+namespace tools{
+namespace viewer{
+namespace parser{
+
+  string Parse::getTopLevelName(){
+    return toplevel;
+  }
+  string Parse::getAbsolutePath(){
+    return absolutePath;
+  }
+
+
+};//end parser
+};//end viewer
+};//end tools
+};//end morpheo
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_closeBaseV.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_closeBaseV.cpp	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_closeBaseV.cpp	(revision 30)
@@ -0,0 +1,32 @@
+/*
+ *
+ * [desc.]
+ */
+#include "Tools/Viewer/Parser/include/parser.h"
+
+namespace morpheo{
+namespace tools{
+namespace viewer{
+namespace parser{
+
+   void Parse::closeBaseV(){
+     int i;
+     for(i==0;i<LEVEL_MAX;i++)
+      {
+      delete ctemp[i];
+      delete arch[i];
+      delete ent[i];
+     }
+     delete pos;
+     delete base;
+     toplevel.clear();
+     absolutePath.clear();
+     base=NULL;
+     
+   }
+
+
+};//end parser
+};//end viewer
+};//end tools
+};//end morpheo
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_open_file.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_open_file.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_open_file.cpp	(revision 30)
@@ -10,12 +10,20 @@
 namespace parser{
 
-   int Parse::open_file(string name){
+   int Parse::open_file(string name,int level){
+
     QFile file(QString::fromStdString(name));
+    QString testname,testname2;
     QString tmppath=QString::fromStdString(name);
-
     QString path=tmppath.left(tmppath.lastIndexOf('/',-1,Qt::CaseSensitive)+1);
-
     absolutePath=path.toStdString();
-
+    testname=tmppath.right(tmppath.lastIndexOf('.',-1,Qt::CaseSensitive)-1);
+    testname2=testname.left(testname.lastIndexOf('.',-1,Qt::CaseSensitive));
+    
+    if(tmppath.contains('-') && level==0) //file not top level (first open file)
+      {
+	testname2=testname2.left(testname2.lastIndexOf('-',-1,Qt::CaseSensitive));
+      }
+    
+    
      if( !file.open( QIODevice::ReadOnly ) )
        {
@@ -44,14 +52,17 @@
          #endif
 	 //BaseP
-	 if(!base)
-	   base=new morpheo::tools::viewer::bdd::BaseV();
+	 if(!base){
+	   base=new morpheo::tools::viewer::bdd::BaseV(); 
+	   toplevel=testname2.toStdString();
+	 }
 	 pos=new morpheo::tools::viewer::bdd::BaseP();
 	 //base->addBaseP(pos);
-	 parser_pos(root.firstChild());    
+	 parser_pos(root.firstChild(),level);    
 	 
        }
+
+     //     delete pos;
+     //delete ctemp;
      return 0;
-
-
    }
 
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_parser_pos.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_parser_pos.cpp	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_parser_pos.cpp	(revision 30)
@@ -10,5 +10,6 @@
 namespace parser{     
 
-  void Parse::parser_pos(QDomNode n){
+  void Parse::parser_pos(QDomNode n,int level){
+    string fichier;
        while( !n.isNull() )
       {
@@ -25,17 +26,22 @@
 		//BaseP
 		pos->setComment(e.text().toStdString());
+		pos->setLevel(level);
+		
 	      }
 	    if (e.tagName() == "entity" )
 	      {
-                #ifdef DBUG_PARSE
+		#ifdef DBUG_PARSE
 		cout << "entity" <<endl;
 		cout << e.attribute("name","").toStdString() <<endl;
 		#endif
-		ent=new morpheo::tools::viewer::bdd::Entity\
+
+		ent[level]=new morpheo::tools::viewer::bdd::Entity\
 		  (e.attribute("name","").toStdString(),\
+		   e.attribute("type","").toStdString(),\
 		   e.attribute("schema","").toInt(0,10));
-		s=e.attribute("type","").toStdString();
-		pos->setEntity(ent);
-		parser_pos(n.firstChild());
+		s=e.attribute("name","").toStdString();
+		pos->setEntity(ent[level]);
+
+		parser_pos(n.firstChild(),level);
 		
 		if((n.nextSiblingElement()).tagName() !="architecture")
@@ -59,5 +65,5 @@
 		       e.attribute("localisation","").toStdString());
 		p->setComment(e.text().toStdString());
-		ent->addport(p);
+		ent[level]->addport(p);
 	      } 
 	    if (e.tagName() == "architecture" )
@@ -66,10 +72,10 @@
 		cout << "architecture" <<endl;
 		#endif
-		arch=new morpheo::tools::viewer::bdd::Architecture();
-		pos->setArchitecture(arch);
+		arch[level]=new morpheo::tools::viewer::bdd::Architecture();
+		pos->setArchitecture(arch[level]);
 		
 		base->addBaseP(pos,s);
 
-		parser_pos(n.firstChild());    
+		parser_pos(n.firstChild(),level);    
 	      } 
 	    if (e.tagName() == "component" )
@@ -86,20 +92,25 @@
 			    e.attribute("size_x","").toInt(0,10),\
 			    e.attribute("size_y","").toInt(0,10));
-		arch->addComponent(comp, e.attribute("type","").toStdString());
-		ctemp=comp;
+		ctemp[level]=comp;
+		arch[level]->addComponent(ctemp[level], e.attribute("name","").toStdString());
 		
-		string fichier=absolutePath;
-		fichier.append(e.attribute("type","").toStdString());
+		fichier=absolutePath;
+		fichier.append(ent[level]->getName());
+		fichier.append("-");
+		fichier.append((e.attribute("type","").toLower()).toStdString());
 		fichier.append(".pos");
-		#ifdef DBUG_PARSE
-		cout << fichier <<endl;
-		#endif
-		open_file(fichier);
-		parser_pos(n.firstChild());    
+          #ifdef DBUG_PARSE
+		cout << fichier <<endl; 
+          #endif
+		if(open_file(fichier,level+1)==-1)
+		  exit(1);
+		
+		parser_pos(n.firstChild(),level);    
+		
 		//ajout ptr Port du sous composant
-		BaseP pt=base->get_BasePos(e.attribute("type","").toStdString());
+		BaseP pt=base->get_BasePos((e.attribute("type","").toLower()).toStdString());
 		QList<Port> *sspor= (pt.getEntity())->getPort();
 		for(QList<Port>::iterator it=sspor->begin();it!=sspor->end();++it)
-		  ctemp->addport(new Port(*it));
+		  ctemp[level]->addport(new Port(*it));
 		
 	      } 
@@ -115,5 +126,5 @@
 			  e.attribute("port","").toStdString());
 		
-		ctemp->addPortMap(p);
+		ctemp[level]->addPortMap(p);
 		
 	      } 
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Viewer.pro
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Viewer.pro	(revision 20)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Viewer.pro	(revision 30)
@@ -40,9 +40,7 @@
 			Bdd/include/Entity.h  						\
 			Bdd/include/ListePorts.h  					\
-#			Bdd/include/ListV.h  						\
 			Bdd/include/Port.h  						\
 			Bdd/include/PortMap.h  						\
 			Bdd/include/Signal.h  						\
-#			Graphics/include/point.h  					\
 			Graphics/include/window.h  					\
 			Parser/include/parser.h
@@ -94,5 +92,7 @@
 			Bdd/src/ListePorts_accessors.cpp				\
 			Bdd/src/ListePorts_searchPort.cpp				\
-			Parser/src/Parse_alloc.cpp					\
+			Parser/src/Parse_alloc.cpp					\		
+                        Parser/src/Parse_closeBaseV.cpp					\
+			Parser/src/Parse_accessors.cpp					\
 			Parser/src/Parse_parser_pos.cpp					\
 			Parser/src/Parse_getBaseV.cpp					\
@@ -100,5 +100,7 @@
 			Parser/src/Parse_open_file.cpp					\
 			Graphics/src/Graphics_main.cpp					\
-			Graphics/src/Graphics_window_actions.cpp			\
+			Graphics/src/Graphics_file_actions.cpp				\
+			Graphics/src/Graphics_tools_actions.cpp				\
+			Graphics/src/Graphics_about_actions.cpp				\
 			Graphics/src/Graphics_main_window.cpp				\
 			Graphics/src/Graphics_informations_window.cpp			\
@@ -106,3 +108,5 @@
 			Graphics/src/Graphics_parameters_window.cpp			\
 			Graphics/src/Graphics_setParse.cpp				\
-			Graphics/src/Graphics_drawAll.cpp				
+			Graphics/src/Graphics_drawAll.cpp				\
+			Graphics/src/Graphics_mouseEvent.cpp	
+			
Index: unk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/Branch_History_Table.pos
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/Branch_History_Table.pos	(revision 20)
+++ 	(revision )
@@ -1,33 +1,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<description>
-
-   <comment>
-     Test composant sans architecture
-   </comment>
-
-   <entity name="branch_history_table"
-           type="Branch_History_Table"
-           schema="1" >
-
-      <port name="clock"           
-            localisation="west" 
-            direction="in">
-        Port d'horloge                                                    
-      </port>
-      <port name="predict"         
-            localisation="west" 
-            direction="in">
-        Interface de prediction : demande de la direction pour une adresse
-      </port>
-      <port name="branch_complete" 
-            localisation="east"
-            direction="in">
-        Interface de mise à jour des branchement                           
-      </port>
-
-   </entity>
-
-   
-
-</description>
Index: unk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/Pattern_History_Table.pos
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/Pattern_History_Table.pos	(revision 20)
+++ 	(revision )
@@ -1,33 +1,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<description>
-
-   <comment>
-     Test composant sans architecture
-   </comment>
-
-   <entity name="pattern_history_table"
-           type="Pattern_History_Table"
-           schema="1" >
-
-      <port name="clock"           
-            localisation="west" 
-            direction="in">
-        Port d'horloge                                                    
-      </port>
-      <port name="predict"         
-            localisation="west" 
-            direction="in">
-        Interface de prediction : demande de la direction pour une adresse
-      </port>
-      <port name="branch_complete" 
-            localisation="east"
-            direction="in">
-        Interface de mise à jour des branchement                           
-      </port>
-
-   </entity>
-
-   
-
-</description>
Index: unk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/Two_Level_Branch_Predictor.pos
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/Two_Level_Branch_Predictor.pos	(revision 20)
+++ 	(revision )
@@ -1,89 +1,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<description>
-
-   <comment>
-     Ce composant décrit un prédicteur de branchement à deux niveaux
-   </comment>
-
-   <entity name="two_level_branch_predictor"
-           type="Two_Level_Branch_Predictor"
-           schema="1" >
-
-      <port name="clock"           
-            localisation="west" 
-            direction="in">
-        Port d'horloge                                                    
-      </port>
-      <port name="predict"         
-            localisation="west" 
-            direction="in">
-        Interface de prediction : demande de la direction pour une adresse
-      </port>
-      <port name="branch_complete" 
-            localisation="east"
-            direction="in">
-        Interface de mise à jour des branchement                           
-      </port>
-
-   </entity>
-
-   <architecture>
-
-      <component name="branch_history_table"
-                 type="Branch_History_Table"
-                 size_x="10"
-                 pos_x="50"
-                 size_y="10"
-                 pos_y="20" >
-
-         <port_map name="clock"        
-                   component="Two_Level_Branch_Predictor"
-                   port="clock" />
-         <port_map name="predict" 
-                   component="Two_Level_Branch_Predictor"
-                   port="predict"/>
-         <port_map name="branch_complete"
-                   component="Two_Level_Branch_Predictor"
-                   port="branch_complete" />
-
-      </component>
-
-      <component name="pattern_history_table" 
-                 type="Pattern_History_Table"   
-                 size_x="10"
-                 pos_x="50"
-                 size_y="10"
-                 pos_y="80" >
-
-         <port_map name="clock" 
-                   component="Two_Level_Branch_Predictor"
-                   port="clock" />
-         <port_map name="predict"
-                   component="Two_Level_Branch_Predictor"
-                   port="predict"/>
-         <port_map name="branch_complete"
-                   component="Two_Level_Branch_Predictor"
-                   port="branch_complete" />
-
-      </component>
-
-      <component name="two_level_branch_predictor_glue"
-                 type="Two_Level_Branch_Predictor_Glue"
-                 size_x="10"
-                 pos_x="50"
-                 size_y="10"
-                 pos_y="50" >
-
-         <port_map name="predict"
-                   component="Two_Level_Branch_Predictor"
-                   port="predict" />
-         <port_map name="branch_complete"
-                   component="Two_Level_Branch_Predictor"
-                   port="branch_complete" />
-
-      </component>
-
-   </architecture>
-
-</description>
Index: unk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/Two_Level_Branch_Predictor_Glue.pos
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/Two_Level_Branch_Predictor_Glue.pos	(revision 20)
+++ 	(revision )
@@ -1,33 +1,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<description>
-
-   <comment>
-     Test composant sans architecture
-   </comment>
-
-   <entity name="two_level_branch_predictor_Glue"
-           type="Two_Level_Branch_Predictor_Glue"
-           schema="1" >
-
-      <port name="clock"           
-            localisation="west" 
-            direction="in">
-        Port d'horloge                                                    
-      </port>
-      <port name="predict"         
-            localisation="west" 
-            direction="in">
-        Interface de prediction : demande de la direction pour une adresse
-      </port>
-      <port name="branch_complete" 
-            localisation="east"
-            direction="in">
-        Interface de mise à jour des branchement                           
-      </port>
-
-   </entity>
-
-   
-
-</description>
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/branch_history_table-meta_predictor.pos
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/branch_history_table-meta_predictor.pos	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/branch_history_table-meta_predictor.pos	(revision 30)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<description>
+
+   <comment>     Test composant sans architecture   </comment>
+
+   <entity name="meta_predictor"
+           type="Meta_Predictor"
+           schema="1" >
+
+      <port name="clock"           
+            localisation="west" 
+            direction="in">
+        Port d'horloge                                                    
+      </port>
+      <port name="predict"         
+            localisation="west" 
+            direction="in">
+        Interface de prediction : demande de la direction pour une adresse
+      </port>
+      <port name="branch_complete" 
+            localisation="east"
+            direction="in">
+        Interface de mise à jour des branchement                           
+      </port>
+
+   </entity>
+
+
+   <architecture>
+
+      <component name="meta_register_1"
+                 type="Meta_Register"
+                 size_x="10"
+                 pos_x="50"
+                 size_y="10"
+                 pos_y="50" >
+
+         <port_map name="clock"        
+                   component="meta_predictor"
+                   port="clock" />
+         <port_map name="predict" 
+                   component="meta_predictor"
+                   port="predict"/>
+         <port_map name="branch_complete"
+                   component="meta_predictor"
+                   port="branch_complete" />
+
+      </component>
+
+     <component name="meta_register_2"
+                 type="Meta_Register"
+                 size_x="10"
+                 pos_x="50"
+                 size_y="10"
+                 pos_y="20" >
+
+         <port_map name="clock"        
+                   component="meta_predictor"
+                   port="clock" />
+         <port_map name="predict" 
+                   component="meta_predictor"
+                   port="predict"/>
+         <port_map name="branch_complete"
+                   component="meta_predictor"
+                   port="branch_complete" />
+
+      </component>
+
+   </architecture>
+   
+
+</description>
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/meta_predictor-meta_register.pos
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/meta_predictor-meta_register.pos	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/meta_predictor-meta_register.pos	(revision 30)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<description>
+
+   <comment>     Test composant sans architecture   </comment>
+
+   <entity name="meta_register"
+           type="Meta_Register"
+           schema="1" >
+
+      <port name="clock"           
+            localisation="west" 
+            direction="in">
+        Port d'horloge                                                    
+      </port>
+      <port name="predict"         
+            localisation="west" 
+            direction="in">
+        Interface de prediction : demande de la direction pour une adresse
+      </port>
+      <port name="branch_complete" 
+            localisation="east"
+            direction="in">
+        Interface de mise à jour des branchement                           
+      </port>
+
+   </entity>
+
+   
+
+</description>
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor-branch_history_table.pos
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor-branch_history_table.pos	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor-branch_history_table.pos	(revision 30)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<description>
+
+   <comment>
+     Ce composant décrit la table d'historique de branchement à deux niveaux
+   </comment>
+
+   <entity name="branch_history_table"
+           type="Branch_History_Table"
+           schema="2" >
+
+      <port name="clock"           
+            localisation="west" 
+            direction="in">
+        Port d'horloge                                                    
+      </port>
+      <port name="predict"         
+            localisation="west" 
+            direction="in">
+        Interface de prediction : demande de la direction pour une adresse
+      </port>
+      <port name="branch_complete" 
+            localisation="east"
+            direction="in">
+        Interface de mise à jour des branchement                           
+      </port>
+
+   </entity>
+
+   <architecture>
+
+      <component name="meta_predictor"
+                 type="Meta_Predictor"
+                 size_x="10"
+                 pos_x="50"
+                 size_y="10"
+                 pos_y="20" >
+
+         <port_map name="clock"        
+                   component="branch_history_table"
+                   port="clock" />
+         <port_map name="predict" 
+                   component="branch_history_table"
+                   port="predict"/>
+         <port_map name="branch_complete"
+                   component="branch_history_table"
+                   port="branch_complete" />
+
+      </component>
+<!--
+     <component name="meta_predictor"
+                 type="Meta_Predictor"
+                 size_x="10"
+                 pos_x="50"
+                 size_y="10"
+                 pos_y="20" >
+
+         <port_map name="clock"        
+                   component="branch_history_table"
+                   port="clock" />
+         <port_map name="predict" 
+                   component="branch_history_table"
+                   port="predict"/>
+         <port_map name="branch_complete"
+                   component="branch_history_table"
+                   port="branch_complete" />
+
+      </component>
+-->
+   </architecture>
+
+</description>
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor-pattern_history_table.pos
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor-pattern_history_table.pos	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor-pattern_history_table.pos	(revision 30)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<description>
+
+   <comment>
+     Test composant sans architecture
+   </comment>
+
+   <entity name="pattern_history_table"
+           type="Pattern_History_Table"
+           schema="3" >
+
+      <port name="clock"           
+            localisation="west" 
+            direction="in">
+        Port d'horloge                                                    
+      </port>
+      <port name="predict"         
+            localisation="west" 
+            direction="in">
+        Interface de prediction : demande de la direction pour une adresse
+      </port>
+      <port name="branch_complete" 
+            localisation="east"
+            direction="in">
+        Interface de mise à jour des branchement                           
+      </port>
+
+   </entity>
+
+   
+
+</description>
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor-two_level_branch_predictor_glue.pos
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor-two_level_branch_predictor_glue.pos	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor-two_level_branch_predictor_glue.pos	(revision 30)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<description>
+
+   <comment>
+     Test composant sans architecture
+   </comment>
+
+   <entity name="two_level_branch_predictor_glue"
+           type="Two_Level_Branch_Predictor_Glue"
+           schema="1" >
+
+      <port name="predict"         
+            localisation="west" 
+            direction="in">
+        Interface de prediction : demande de la direction pour une adresse
+      </port>
+      <port name="branch_complete" 
+            localisation="east"
+            direction="in">
+        Interface de mise à jour des branchement                           
+      </port>
+
+   </entity>
+
+   
+
+</description>
Index: /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor.pos
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor.pos	(revision 30)
+++ /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/data/two_level_branch_predictor.pos	(revision 30)
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<description>
+
+   <comment>
+     Ce composant décrit un prédicteur de branchement à deux niveaux
+   </comment>
+
+   <entity name="two_level_branch_predictor"
+           type="Two_Level_Branch_Predictor"
+           schema="1" >
+
+      <port name="clock"           
+            localisation="west" 
+            direction="in">
+        Port d'horloge                                                    
+      </port>
+      <port name="predict"         
+            localisation="west" 
+            direction="in">
+        Interface de prediction : demande de la direction pour une adresse
+      </port>
+      <port name="branch_complete" 
+            localisation="east"
+            direction="in">
+        Interface de mise à jour des branchement                           
+      </port>
+
+   </entity>
+
+   <architecture>
+     <component name="branch_history_table"
+                 type="Branch_History_Table"
+                 size_x="10"
+                 pos_x="50"
+                 size_y="10"
+                 pos_y="20" >
+
+         <port_map name="clock"        
+                   component="two_level_branch_predictor"
+                   port="clock" />
+         <port_map name="predict" 
+                   component="two_level_branch_predictor"
+                   port="predict"/>
+         <port_map name="branch_complete"
+                   component="two_level_branch_predictor"
+                   port="branch_complete" />
+
+      </component>
+
+      <component name="pattern_history_table" 
+                 type="Pattern_History_Table"   
+                 size_x="10"
+                 pos_x="50"
+                 size_y="10"
+                 pos_y="80" >
+
+         <port_map name="clock" 
+                   component="two_level_branch_predictor"
+                   port="clock" />
+         <port_map name="predict"
+                   component="two_level_branch_predictor"
+                   port="predict"/>
+         <port_map name="branch_complete"
+                   component="two_level_branch_predictor"
+                   port="branch_complete" />
+
+      </component>
+
+      <component name="two_level_branch_predictor_glue"
+                 type="Two_Level_Branch_Predictor_Glue"
+                 size_x="10"
+                 pos_x="50"
+                 size_y="10"
+                 pos_y="50" >
+
+         <port_map name="predict"
+                   component="two_level_branch_predictor"
+                   port="predict" />
+         <port_map name="branch_complete"
+                   component="two_level_branch_predictor"
+                   port="branch_complete" />
+
+      </component>
+
+   </architecture>
+
+</description>
Index: /trunk/Makefile.tools
===================================================================
--- /trunk/Makefile.tools	(revision 20)
+++ /trunk/Makefile.tools	(revision 30)
@@ -1,3 +1,6 @@
+#----------------------------------------------------------
 #-----[ Unix Commands ]------------------------------------
+#----------------------------------------------------------
+
 ECHO					= echo
 EXPORT					= export
@@ -39,13 +42,9 @@
 VIEWPDF_FS				= acroread
 
+#----------------------------------------------------------
 #-----[ tools ]--------------------------------------------
-SOCLIB					=  /users/outil/soc/soclib/
-SYSTEMC_systemc				= /users/outil/systemc/systemc-2.1.v1/
-SYSTEMC_systemcass 			= /users/outil/systemc/systemcass/systemcass/latest/i686-Linux.SLA4x/
-SYSTEMC_systemcass_deps 		= $(SYSTEMC_systemcass)
-XILINX					= /dsk/l1/misc/Xilinx91i/
-MODELTECH				= /users/outil/m1archi/modeltech/
-OR1K					= ../../Tools/or32-elf/
-NEWLIB					= ../../Tools/newlib-1.14.0
+#----------------------------------------------------------
+
+include $(MORPHEO_TOPLEVEL)/Makefile.tools_path
 
 #-----[ soclib ]-------------------------------------------
@@ -82,5 +81,5 @@
 
 #-----[ Modeltech ]----------------------------------------
-MODELTECH_ENV				= export LM_LICENSE_FILE=/users/soft/mentor/licence/etc/license.anacad
+MODELTECH_ENV				= export LM_LICENSE_FILE=$(MODELTECH_LICENCE)/license.anacad
 MODELTECH_BIN				= $(MODELTECH)/bin
 MODELTECH_VLIB				= $(MODELTECH_ENV); $(MODELTECH_BIN)/vlib
Index: /trunk/Makefile.tools_path
===================================================================
--- /trunk/Makefile.tools_path	(revision 30)
+++ /trunk/Makefile.tools_path	(revision 30)
@@ -0,0 +1,11 @@
+#-----[ path ]---------------------------------------------
+SOCLIB					=  /users/outil/soc/soclib/
+SYSTEMC_systemc				= /users/outil/systemc/systemc-2.1.v1/
+SYSTEMC_systemcass 			= /users/outil/systemc/systemcass/systemcass/latest/i686-Linux.SLA4x/
+SYSTEMC_systemcass_deps 		= $(SYSTEMC_systemcass)
+XILINX					= /dsk/l1/misc/Xilinx91i/
+MODELTECH				= /users/outil/m1archi/modeltech/
+MODELTECH_LICENCE			= /users/soft/mentor/licence/etc/
+OR1K					= ../../Tools/or32-elf/
+NEWLIB					= ../../Tools/newlib-1.14.0
+
