Discrete Event. Explicit notion of time (global order…) DE simulator maintains a global event queue (Verilog and VHDL) Drawbacks global event queue => tight coordination between parts Simultaneous events => nondeterministic behavior Some simulators use delta delay to prevent nondeterminacy.
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
Can be refined
E.g. introduce timing constraints
(minimum reaction time 0.1 s)
t
Fire B or C?
t
A
B
C
B has 0 delay
B has delta delay
t
t
t
t+
A
B
C
A
B
C
Fire C once? or twice?
Fire C twice.
Still have problem with 0delay
(causality) loop
ticks
computation
continuous time
Synchrony: Triggering and OrderingF
B=>C
C=>F
G
C=>G
C=>G
F^(G==1)
C
C=>A
CFSM2
CFSM1
CFSM1
CFSM2
C
C=>B
A
B
C=>B
(A==0)=>B
CFSM3
(avoid inconsistencies when interconnected)
(global asynchronicity)
(local synchronicity)
Emit
Write v2
Emit
Sender S
Receiver R
Read Event
Read Value
ti1
t1
t2
ti
t3
t4
ti+1
Event/Data SeparationY:=4
Y:=5
X:=5
Sender S
Read Y
Read X
Receiver R1
Read X
Read Y
Receiver R2
t1
t2
t3
t4
t5
t6
Non Atomic Data Value ReadingEmit Y
Sender S
Read
Receiver R1
Read
Receiver R2
Read
Receiver R3
t1
t2
t3
t4
t5
Atomicity of Event ReadingA
C
i
err
o
B
i2
Example of CFSM Behaviorsfor Digital Signal Processors (HW and SW)
(process cannot test input queues for emptiness)
*c2
i
*c1
+
o
*c2
i
*c1
+
o
*c2
i
*c1
+
o
*c2
i
*c1
+
o
*c2
i
*c1
+
o
*c2
i
*c1
+
o
*c2
i
*c1
+
o
*c2
i
*c1
+
o
*c2
i
*c1
+
o
*c2
i
*c1
+
o
X = [ x1, x2, x3, …]
F : Sp > Sq
Y = ( y1, … , yp ), Y’ = ( y’1, … , y’p ) in Sp :Y <= Y’ iff yi <= y’i for all 1 <= i <= p
F( lub( C ) = lub( F( C ) )
X = F( X, I )
(number of required tokens on inputs)
(including number of consumed and produced tokens)
1024
1024
10
1
Examples of Data Flow actors1
+
1
1
T
F
select
merge
T
F
(only fires actors when fireable)
(brings network back to initial state firing each actor at least once)
must be satisfied for each edge
np
nc
A
B
2
3
2
1
1
1
B
C
1
1
Balance equations0 1 1
2 0 1
2 0 1
A
2
3
M =
2
1
1
1
B
C
1
1
Balance equationsiff S is periodic
(too many tokens accumulate on A>B or B>C)
2 1 0
0 1 1
2 0 1
2 0 1
A
2
2
M =
2
1
1
1
B
C
1
1
Balance equationsM q = 0
2
1
1
3
B
C
2
3
Admissibility of schedulesBACBA, then deadlock…
BACBACBA valid
2
2
2
1
1
1
B
C
1
1
From repetition vector to scheduleq = 1 2 2T
(chaining custom code for each actor)
(“zerooverhead loops”)
e.g. ABCBC > A (2BC), ABBCC > A (2B) (2C)
(Bhattacharyya ‘94, Lauwereins ‘96, Murthy ‘97)
A
10
C
D
1
10
B
10
1
Buffer size minimizationq =  100 100 10 1T
(Parks ‘96: may not terminate, but never fails if feasible)
0
T
F
T
F
<0
T
F
+
>n
+1

T
F
T
F
T
F
Example of Boolean DFT
T
In
Out
b = get (B)
forever {
if (a > b) {
put (O, a)
a = get (A)
} else if (a < b) {
put (O, b)
b = get (B)
} else {
put (O, a)
a = get (A)
b = get (B)
}
}
*3
dup
*2
1
ordered
merge
out
Example of general DF(no “peeking”)
dup
1
B
A
O