diff --git a/tmlcode/scp.tarchi b/tmlcode/scp.tarchi
new file mode 100644
index 0000000000000000000000000000000000000000..f7b68b4b1f5bd99c0cc9211416d3cec0b38f2065
--- /dev/null
+++ b/tmlcode/scp.tarchi
@@ -0,0 +1,60 @@
+// Master clock frequency - in MHz
+MASTERCLOCKFREQUENCY 200
+
+NODE MEMORY Memory0
+SET Memory0 byteDataSize 4
+
+NODE BUS Bus0
+SET Bus0 byteDataSize 4
+SET Bus0 pipelineSize 1
+SET Bus0 arbitration 0
+
+NODE CPU CPU1
+SET CPU1 nbOfCores 1
+SET CPU1 byteDataSize 4
+SET CPU1 pipelineSize 5
+SET CPU1 goIdleTime 10
+SET CPU1 maxConsecutiveIdleCycles 10
+SET CPU1 taskSwitchingTime 20
+SET CPU1 branchingPredictionPenalty 2
+SET CPU1 cacheMiss 5
+SET CPU1 schedulingPolicy 0
+SET CPU1 sliceTime 10000
+SET CPU1 execiTime 1
+SET CPU1 execcTime 1
+
+NODE CPU CPU0
+SET CPU0 nbOfCores 1
+SET CPU0 byteDataSize 4
+SET CPU0 pipelineSize 5
+SET CPU0 goIdleTime 10
+SET CPU0 maxConsecutiveIdleCycles 10
+SET CPU0 taskSwitchingTime 20
+SET CPU0 branchingPredictionPenalty 2
+SET CPU0 cacheMiss 18
+SET CPU0 schedulingPolicy 0
+SET CPU0 sliceTime 10000
+SET CPU0 execiTime 1
+SET CPU0 execcTime 1
+
+NODE HWA HWA0
+SET HWA0 byteDataSize 4
+SET HWA0 execiTime 1
+SET HWA0 execcTime 1
+
+NODE LINK link_CPU0_to_Bus0
+SET link_CPU0_to_Bus0 node CPU0
+SET link_CPU0_to_Bus0 bus Bus0
+SET link_CPU0_to_Bus0 priority 0
+NODE LINK link_CPU1_to_Bus0
+SET link_CPU1_to_Bus0 node CPU1
+SET link_CPU1_to_Bus0 bus Bus0
+SET link_CPU1_to_Bus0 priority 0
+NODE LINK link_Memory0_to_Bus0
+SET link_Memory0_to_Bus0 node Memory0
+SET link_Memory0_to_Bus0 bus Bus0
+SET link_Memory0_to_Bus0 priority 0
+NODE LINK link_HWA0_to_Bus0
+SET link_HWA0_to_Bus0 node HWA0
+SET link_HWA0_to_Bus0 bus Bus0
+SET link_HWA0_to_Bus0 priority 0
diff --git a/tmlcode/scp.tmap b/tmlcode/scp.tmap
new file mode 100644
index 0000000000000000000000000000000000000000..ec772cda577d39d1948bde20f6d31edb03e62456
--- /dev/null
+++ b/tmlcode/scp.tmap
@@ -0,0 +1,20 @@
+TMLSPEC
+    #include "spec.tml"
+ENDTMLSPEC
+
+TMLARCHI
+    #include "spec.tarchi"
+ENDTMLARCHI
+
+TMLMAPPING
+    MAP CPU1 AppC__InterfaceDevice
+    SET AppC__InterfaceDevice priority 0
+    MAP CPU0 AppC__TCPIP
+    SET AppC__TCPIP priority 0
+    MAP CPU0 AppC__Application
+    SET AppC__Application priority 0
+    MAP CPU0 AppC__SmartCard
+    SET AppC__SmartCard priority 0
+    MAP HWA0 AppC__Timer
+    SET AppC__Timer priority 0
+ENDTMLMAPPING
diff --git a/tmlcode/scp.tml b/tmlcode/scp.tml
new file mode 100644
index 0000000000000000000000000000000000000000..81b6d37b8e58e518975f4e9f19d25cbb8602a9f6
--- /dev/null
+++ b/tmlcode/scp.tml
@@ -0,0 +1,330 @@
+// TML Application - FORMAT 0.1
+// Application: /Users/ludovicapvrille/TTool/modeling/DIPLODOCUS/SmartCardProtocol.xml
+// Generated: Tue Jun 25 14:16:04 CEST 2019
+
+// Channels
+CHANNEL AppC__fromAtoT BRNBW 4 OUT AppC__Application IN AppC__TCPIP
+CHANNEL AppC__fromDtoSC BRNBW 40 OUT AppC__InterfaceDevice IN AppC__SmartCard
+CHANNEL AppC__fromPtoT BRNBW 4 OUT AppC__SmartCard IN AppC__TCPIP
+CHANNEL AppC__fromSCtoD BRNBW 40 OUT AppC__SmartCard IN AppC__InterfaceDevice
+CHANNEL AppC__fromTtoA BRNBW 4 OUT AppC__TCPIP IN AppC__Application
+CHANNEL AppC__fromTtoP BRNBW 4 OUT AppC__TCPIP IN AppC__SmartCard
+CHANNEL AppC__temp NBRNBW 4 OUT AppC__TCPIP IN AppC__TCPIP
+
+// Events
+EVENT AppC__abort__AppC__abort() NINB 1 AppC__Application AppC__TCPIP
+EVENT AppC__answerToReset__AppC__answerToReset() NINB 1 AppC__SmartCard AppC__InterfaceDevice
+EVENT AppC__close__AppC__close() NINB 1 AppC__Application AppC__TCPIP
+EVENT AppC__connectionOpened__AppC__connectionOpened() NIB 8 AppC__Application AppC__SmartCard
+EVENT AppC__data_Ready_SC__AppC__data_Ready_SC() INF AppC__SmartCard AppC__InterfaceDevice
+EVENT AppC__data_Ready__AppC__data_Ready(int, bool) INF AppC__InterfaceDevice AppC__SmartCard
+EVENT AppC__end__AppC__end() NINB 1 AppC__InterfaceDevice AppC__SmartCard
+EVENT AppC__open__AppC__open() NINB 1 AppC__Application AppC__TCPIP
+EVENT AppC__opened__AppC__opened() INF AppC__TCPIP AppC__Application
+EVENT AppC__pTSConfirm__AppC__pTSConfirm() NINB 1 AppC__SmartCard AppC__InterfaceDevice
+EVENT AppC__pTS__AppC__pTS() NINB 1 AppC__InterfaceDevice AppC__SmartCard
+EVENT AppC__receive_Application__AppC__receive_Application() INF AppC__TCPIP AppC__Application
+EVENT AppC__receive__AppC__receive() INF AppC__SmartCard AppC__TCPIP
+EVENT AppC__reset__AppC__reset() NINB 1 AppC__InterfaceDevice AppC__SmartCard
+EVENT AppC__send_TCP__AppC__send_TCP() INF AppC__Application AppC__TCPIP
+EVENT AppC__send__AppC__send() INF AppC__TCPIP AppC__SmartCard
+EVENT AppC__stop__AppC__stop() NINB 1 AppC__TCPIP AppC__Timer
+EVENT AppC__timeOut__AppC__timeOut() NINB 1 AppC__Timer AppC__TCPIP
+
+// Requests
+REQUEST AppC__activation() AppC__InterfaceDevice AppC__SmartCard
+REQUEST AppC__req_Timer() AppC__TCPIP AppC__Timer
+REQUEST AppC__start_Application() AppC__SmartCard AppC__Application
+REQUEST AppC__start_TCP_IP() AppC__Application AppC__SmartCard AppC__TCPIP
+
+TASK AppC__Application
+    TASKOP
+    //Local variables
+    
+    //Behavior
+    NOTIFY AppC__open__AppC__open
+    WAIT AppC__opened__AppC__opened
+    NOTIFY AppC__connectionOpened__AppC__connectionOpened
+    EXECI 10
+    WRITE AppC__fromAtoT 1
+    NOTIFY AppC__send_TCP__AppC__send_TCP
+    RAND
+        CASERAND 50
+            NOTIFY AppC__close__AppC__close
+        ENDCASERAND
+        CASERAND 50
+            NOTIFY AppC__abort__AppC__abort
+        ENDCASERAND
+    ENDRAND
+ENDTASK
+
+TASK AppC__InterfaceDevice
+    TASKOP
+    //Local variables
+    int resetType = 0
+    int x = 0
+    int i = 0
+    int nbOfComputedPackets = 1
+    bool b
+    
+    //Behavior
+    NOTIFYREQUEST AppC__activation
+    NOTIFY AppC__reset__AppC__reset
+    WAIT AppC__answerToReset__AppC__answerToReset
+    NOTIFY AppC__pTS__AppC__pTS
+    WAIT AppC__pTSConfirm__AppC__pTSConfirm
+    FOR(i=0; i<nbOfComputedPackets; i = i +1)
+        RAND
+            CASERAND 50
+                WRITE AppC__fromDtoSC 1
+                NOTIFY AppC__data_Ready__AppC__data_Ready x b
+            ENDCASERAND
+            CASERAND 50
+                NOTIFIED AppC__data_Ready_SC__AppC__data_Ready_SC x
+                IF (x==0)
+                ORIF (x>0)
+                    WAIT AppC__data_Ready_SC__AppC__data_Ready_SC
+                    READ AppC__fromSCtoD 1
+                ENDIF
+            ENDCASERAND
+        ENDRAND
+    ENDFOR
+    NOTIFY AppC__end__AppC__end
+ENDTASK
+
+TASK AppC__SmartCard
+    TASKOP
+    //Local variables
+    int resetType = 0
+    int a = 0
+    bool b
+    int i = 0
+    int j = 0
+    int x = 0
+    int tcpctrl__a
+    int tcpctrl__state
+    int t
+    
+    //Behavior
+    WAIT AppC__reset__AppC__reset
+    NOTIFY AppC__answerToReset__AppC__answerToReset
+    WAIT AppC__pTS__AppC__pTS
+    NOTIFY AppC__pTSConfirm__AppC__pTSConfirm
+    NOTIFYREQUEST AppC__start_TCP_IP
+    NOTIFYREQUEST AppC__start_Application
+    WAIT AppC__connectionOpened__AppC__connectionOpened
+    FOR(j=0; x==0; j = j)
+        SELECTEVT
+            CASE AppC__send__AppC__send
+                READ AppC__fromTtoP 1
+                NOTIFY AppC__data_Ready_SC__AppC__data_Ready_SC
+                WRITE AppC__fromSCtoD 1
+            ENDCASE
+            CASE AppC__data_Ready__AppC__data_Ready t b
+                READ AppC__fromDtoSC 1
+                NOTIFY AppC__receive__AppC__receive
+                WRITE AppC__fromPtoT 1
+            ENDCASE
+            CASE AppC__end__AppC__end
+            ENDCASE
+        ENDSELECTEVT
+    ENDFOR
+ENDTASK
+
+TASK AppC__TCPIP
+    TASKOP
+    //Local variables
+    int wind = 64
+    int seqNum = 0
+    int i
+    int j
+    int a = 0
+    int b = 0
+    int tcpctrl__a
+    int tcpctrl__state
+    
+    //Behavior
+    FOR(i=0; (tcpctrl__a==0); i = i)
+        NOTIFIED AppC__abort__AppC__abort tcpctrl__a
+        IF (tcpctrl__a>0)
+            WAIT AppC__abort__AppC__abort
+        ORIF (tcpctrl__a==0)
+            SELECTEVT
+                CASE AppC__timeOut__AppC__timeOut
+                    READ AppC__temp 1
+                    EXECI b
+                    WRITE AppC__fromTtoP 1
+                    NOTIFY AppC__send__AppC__send
+                ENDCASE
+                CASE AppC__receive__AppC__receive
+                    READ AppC__fromPtoT 1
+                    EXECI b b
+                    RAND
+                        CASERAND 33
+                            RAND
+                                CASERAND 33
+                                    NOTIFY AppC__stop__AppC__stop
+                                    READ AppC__temp 1
+                                    RAND
+                                        CASERAND 50
+                                            EXECI b
+                                            WRITE AppC__fromTtoP 1
+                                            NOTIFY AppC__send__AppC__send
+                                            WRITE AppC__temp 1
+                                        ENDCASERAND
+                                        CASERAND 50
+                                            IF (tcpctrl__state==2)
+                                                tcpctrl__state=4
+                                            ORIF (tcpctrl__state==4)
+                                            ELSE
+                                                IF (tcpctrl__state==5)
+                                                    tcpctrl__state=6
+                                                ORIF (tcpctrl__state==7)
+                                                    tcpctrl__state=8
+                                                    tcpctrl__state=0
+                                                ELSE
+                                                    IF (tcpctrl__state==10)
+                                                        tcpctrl__state=0
+                                                    ELSE
+                                                    ENDIF
+                                                ENDIF
+                                            ENDIF
+                                        ENDCASERAND
+                                    ENDRAND
+                                ENDCASERAND
+                                CASERAND 33
+                                    IF (tcpctrl__state==4)
+                                        EXECI b
+                                        WRITE AppC__fromTtoA 1
+                                        NOTIFY AppC__receive_Application__AppC__receive_Application
+                                        EXECI b
+                                        WRITE AppC__fromTtoP 1
+                                        NOTIFY AppC__send__AppC__send
+                                    ELSE
+                                    ENDIF
+                                ENDCASERAND
+                                CASERAND 33
+                                    IF (tcpctrl__state==1)
+                                        EXECI b
+                                        seqNum=seqNum+wind
+                                        WRITE AppC__fromTtoP 1
+                                        NOTIFY AppC__send__AppC__send
+                                        NOTIFYREQUEST AppC__req_Timer
+                                        WRITE AppC__temp 1
+                                        tcpctrl__state=2
+                                    ORIF (tcpctrl__state==3)
+                                        EXECI b
+                                        WRITE AppC__fromTtoP 1
+                                        NOTIFY AppC__send__AppC__send
+                                        tcpctrl__state=2
+                                    ELSE
+                                    ENDIF
+                                ENDCASERAND
+                            ENDRAND
+                        ENDCASERAND
+                        CASERAND 33
+                            IF (tcpctrl__state==0)
+                                tcpctrl__state=1
+                            ORIF (tcpctrl__state==0)
+                                EXECI b
+                                WRITE AppC__fromTtoP 1
+                                NOTIFY AppC__send__AppC__send
+                                tcpctrl__state=3
+                            ELSE
+                            ENDIF
+                        ENDCASERAND
+                        CASERAND 33
+                            IF (tcpctrl__state==5)
+                                EXECI b
+                                WRITE AppC__fromTtoP 1
+                                NOTIFY AppC__send__AppC__send
+                                tcpctrl__state=7
+                            ORIF (tcpctrl__state==4)
+                                EXECI b
+                                WRITE AppC__fromTtoP 1
+                                NOTIFY AppC__send__AppC__send
+                                tcpctrl__state=9
+                            ELSE
+                                IF (tcpctrl__state==6)
+                                    EXECI b
+                                    WRITE AppC__fromTtoP 1
+                                    tcpctrl__state=8
+                                    NOTIFY AppC__send__AppC__send
+                                    tcpctrl__state=0
+                                ELSE
+                                ENDIF
+                            ENDIF
+                        ENDCASERAND
+                    ENDRAND
+                ENDCASE
+                CASE AppC__close__AppC__close
+                    IF ((tcpctrl__state==2)or(tcpctrl__state==4))
+                        EXECI b
+                        seqNum=seqNum+wind
+                        WRITE AppC__fromTtoP 1
+                        NOTIFY AppC__send__AppC__send
+                        tcpctrl__state=5
+                        NOTIFYREQUEST AppC__req_Timer
+                        WRITE AppC__temp 1
+                    ORIF (tcpctrl__state==9)
+                        EXECI b
+                        seqNum=seqNum+wind
+                        WRITE AppC__fromTtoP 1
+                        NOTIFY AppC__send__AppC__send
+                        tcpctrl__state=10
+                        NOTIFYREQUEST AppC__req_Timer
+                        WRITE AppC__temp 1
+                    ELSE
+                        IF (tcpctrl__state==1)
+                            tcpctrl__state=0
+                        ELSE
+                        ENDIF
+                    ENDIF
+                ENDCASE
+                CASE AppC__send_TCP__AppC__send_TCP
+                    IF (tcpctrl__state==4)
+                        READ AppC__fromAtoT 1
+                        EXECI b
+                        seqNum=seqNum+wind
+                        WRITE AppC__fromTtoP 1
+                        NOTIFY AppC__send__AppC__send
+                        NOTIFYREQUEST AppC__req_Timer
+                        WRITE AppC__temp 1
+                    ORIF (tcpctrl__state==1)
+                        EXECI b
+                        seqNum=seqNum+wind
+                        WRITE AppC__fromTtoP 1
+                        NOTIFY AppC__send__AppC__send
+                        tcpctrl__state=3
+                        NOTIFYREQUEST AppC__req_Timer
+                        WRITE AppC__temp 1
+                    ELSE
+                    ENDIF
+                ENDCASE
+                CASE AppC__open__AppC__open
+                    NOTIFY AppC__opened__AppC__opened
+                    IF (tcpctrl__state==0)
+                        tcpctrl__state=1
+                    ELSE
+                    ENDIF
+                ENDCASE
+            ENDSELECTEVT
+        ENDIF
+    ENDFOR
+    tcpctrl__state=0
+ENDTASK
+
+TASK AppC__Timer
+    TASKOP
+    //Local variables
+    int x = 0
+    
+    //Behavior
+    NOTIFIED AppC__stop__AppC__stop x
+    IF (x==0)
+        NOTIFY AppC__timeOut__AppC__timeOut
+    ORIF (x>0)
+        WAIT AppC__stop__AppC__stop
+    ENDIF
+ENDTASK
+