This example shows how causality relations can exist between unrelated time scales. Two CPUs with independent time scales (they is no tag relation between their clocks) compute a result A and a result B. When both results are available, the first CPU computes A+B:
rational-clock CPU1_time // time scale on CPU 1 rational-clock compute_A sporadic 1 // start computing A at 1 tag relation compute_A = CPU1_time unit-clock A_available compute_A time delayed by 0.5 on CPU1_time implies A_available rational-clock CPU2_time // time scale on CPU 2 rational-clock compute_B sporadic 2 // start computing B at 2 tag relation compute_B = CPU2_time unit-clock B_available compute_B time delayed by 1.5 on CPU2_time implies B_available // start computing A+B when both A and B are available unit-clock compute_A_plus_B A_available sustained immediately from B_available to compute_A_plus_B implies compute_A_plus_B B_available sustained immediately from A_available to compute_A_plus_B implies compute_A_plus_B unit-clock A_plus_B_available compute_A_plus_B time delayed by 1 on CPU1_time implies A_plus_B_available @tagref CPU1_time // display events according to the time of CPU 1 @output vcd @output svg standalone
As you can see on the result, without any information on the relative time scales on CPU 1 and CPU 2, TESL makes both tasks start at the same time, and makes time advance as fast as possible. Therefore A and B become available at the same time. Since there is not tag relation between the clocks on CPU 1 and CPU 2, they belong to different time islands, and the semantics of TESL makes time advance on each time island as fast as possible while obeying causality (the clock of CPU 1 is used as time reference in the following picture):