diff --git a/Makefile b/Makefile
deleted file mode 100644
index 0a1aca45b4a9c971c21f92631d6a2183bd992420..0000000000000000000000000000000000000000
--- a/Makefile
+++ /dev/null
@@ -1,57 +0,0 @@
-###############################################################################
-# Global receipes
-none:
-	$(info You should specify what to make: ip, sim, clean, clean-all)
-
-sim:
-
-###############################################################################
-# Configuration
-hdlpkgsrc := 
-
-###############################################################################
-# Generate a source list, depending on the config
-rdlsrc := $(shell ls rdl/*.rdl)
-rdltarget := $(rdlsrc:rdl/%.rdl=hdl/%.vhd)
-hdlsrc := $(shell ls hdl/*.vhd) $(rdltarget) $(hdlpkgsrc)
-# TODO: depends on the configuration
-tcl/sources.tcl:
-	echo read_vhdl {$(hdlsrc)} > $@
-
-###############################################################################
-# Compute interface from rdl files
-hdl/%.vhd:rdl/%.rdl
-	hectare --axi-vhdl $@ $<
-
-###############################################################################
-# Package IP
-ip:component.xml
-
-component.xml:tcl/sources.tcl tcl/combpm.tcl tcl/generate_gtwizard.tcl $(hdlsrc)
-	vivado -mode batch -source tcl/combpm.tcl
-
-###############################################################################
-# Synthessize IP for test
-synth:component.xml
-	vivado -mode batch -source tcl/bloc_synthesis.tcl
-
-
-
-
-###############################################################################
-# Cleaner Rules
-clean:
-	rm -f vivado*.log vivado*.jou
-
-clean-ip:
-	rm -rf ip_proj ip_user_files xgui
-	rm -f component.xml
-
-clean-sim:
-	rm -f *.wdb
-
-clean-all:clean-ip clean
-	rm -f tcl/sources.tcl
-	rm -f hdl/combpm_protocol_electron_ctrl.vhd
-
-.PHONY: clean clean-ip clean-sim clean-all none ip sim synth
diff --git a/doc/main.adoc b/doc/main.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..56f27542b14553514dc5161051b9df99f2869fdb
--- /dev/null
+++ b/doc/main.adoc
@@ -0,0 +1 @@
+=  Documentation
diff --git a/tcl/generate_gtwizard.tcl b/tcl/combpm_gtwizard.tcl
similarity index 81%
rename from tcl/generate_gtwizard.tcl
rename to tcl/combpm_gtwizard.tcl
index 7ab3be708c003606f56caa0deb55fd9689c76321..d22a0c85029632232dfc8cc357566df682e394c3 100644
--- a/tcl/generate_gtwizard.tcl
+++ b/tcl/combpm_gtwizard.tcl
@@ -1,13 +1,15 @@
+# Create a GTWizard IP for one quad.
 set module_name "combpm_gtwizard"
+set quad_name X0Y4
 
 # Create IP
 create_ip -name gtwizard_ultrascale -vendor xilinx.com -library ip -version 1.7 -module_name ${module_name}
 
 # Configure the IP
 set_property -dict [list \
-    CONFIG.CHANNEL_ENABLE {X0Y4} \
-    CONFIG.TX_MASTER_CHANNEL {X0Y4} \
-    CONFIG.RX_MASTER_CHANNEL {X0Y4} \
+    CONFIG.CHANNEL_ENABLE {${quad_name}} \
+    CONFIG.TX_MASTER_CHANNEL {${quad_name}} \
+    CONFIG.RX_MASTER_CHANNEL {${quad_name}} \
     CONFIG.TX_LINE_RATE {2.125} \
     CONFIG.TX_PLL_TYPE {QPLL1} \
     CONFIG.TX_REFCLK_FREQUENCY {156.2500001} \
@@ -40,8 +42,8 @@ set_property -dict [list \
     CONFIG.RX_CC_K_0_1 {false} \
     CONFIG.RX_CC_PERIODICITY {100} \
     CONFIG.ENABLE_OPTIONAL_PORTS {rxcdrlock_out} \
-    CONFIG.RX_REFCLK_SOURCE {X0Y4 clk1} \
-    CONFIG.TX_REFCLK_SOURCE {X0Y4 clk1} \
+    CONFIG.RX_REFCLK_SOURCE {${quad_name} clk1} \
+    CONFIG.TX_REFCLK_SOURCE {${quad_name} clk1} \
     CONFIG.LOCATE_TX_USER_CLOCKING {CORE} \
     CONFIG.LOCATE_RX_USER_CLOCKING {CORE} \
     CONFIG.LOCATE_COMMON {EXAMPLE_DESIGN} \
@@ -55,10 +57,6 @@ set_property -dict [list \
     ] [get_ips ${module_name}]
 
 # If using 2 ports
-# CONFIG.CHANNEL_ENABLE {X0Y4 X0Y5}
-# CONFIG.RX_REFCLK_SOURCE {X0Y5 clk1 X0Y4 clk1}
-# CONFIG.TX_REFCLK_SOURCE {X0Y5 clk1 X0Y4 clk1}
-
-
-# Generate output products
-generate_target all [get_ips ${module_name}]
+# CONFIG.CHANNEL_ENABLE {${quad_name} X0Y5}
+# CONFIG.RX_REFCLK_SOURCE {X0Y5 clk1 ${quad_name} clk1}
+# CONFIG.TX_REFCLK_SOURCE {X0Y5 clk1 ${quad_name} clk1}
diff --git a/tcl/main.tcl b/tcl/main.tcl
new file mode 100644
index 0000000000000000000000000000000000000000..9e69f0761036edc13f29a69df4ee5e372dbea4a2
--- /dev/null
+++ b/tcl/main.tcl
@@ -0,0 +1,40 @@
+################################################################################
+# Main tcl for the module
+################################################################################
+
+# ==============================================================================
+proc init {} {
+
+    # Configuration
+    # TODO Follow FWK
+    # variable quad_name
+    # set quad_name X0Y4
+}
+
+# ==============================================================================
+proc setSources {} {
+  variable Vhdl
+  lappend Vhdl ../hdl/combpm_protocol_electron.vhd
+  lappend Vhdl ../hdl/top_combpm_electron.vhd
+}
+
+# ==============================================================================
+proc setAddressSpace {} {
+}
+
+# ==============================================================================
+proc doOnCreate {} {
+  variable Vhdl
+  addSources Vhdl
+
+  # Create GT wizard IP
+  source ../tcl/combpm_gtwizard.tcl
+}
+
+# ==============================================================================
+proc doOnBuild {} {
+}
+
+# ==============================================================================
+proc setSim {} {
+}