42 CHAPTER 2. TOY(FD) Programming Examples
genCir’ (A, P, C, D) = (i0, (A, P, C, D))
genCir’ (A, P, C, D) = (i1, (A, P, C, D))
genCir’ (A, P, C, D) = (i2, (A, P, C, D))
genCir’ (A, P, C, D) = (notGate B, (A, P, C, D)) <==
domain [A] ((fd_min A) + notGateArea) (fd_max A),
genCir’ (A, P, C, D) == (B, (A, P, C, D))
genCir’ (A, P, C, D) = (andGate B1 B2, (A, P, C, D)) <==
domain [A] ((fd_min A) + andGateArea) (fd_max A),
genCir’ (A, P, C, D) == (B1, (A, P, C, D)),
genCir’ (A, P, C, D) == (B2, (A, P, C, D))
genCir’ (A, P, C, D) = (orGate B1 B2, (A, P, C, D)) <==
domain [A] ((fd_min A) + orGateArea) (fd_max A),
genCir’ (A, P, C, D) == (B1, (A, P, C, D)),
genCir’ (A, P, C, D) == (B2, (A, P, C, D))
% Delay
circuitDelay :: circuit -> bool
circuitDelay (B, (A, P, C, D)) :-
delay (B, (A, P, C, D)) D
delay :: circuit -> delay -> bool
delay (i0, (A, P, C, D)) Dout = true
delay (i1, (A, P, C, D)) Dout = true
delay (i2, (A, P, C, D)) Dout = true
delay ((notGate B), (A, P, C, D)) Dout :-
domain [Dout] ((fd_min Dout) + notGateDelay) (fd_max Dout),
delay (B, (A, P, C, D)) Dout
delay ((andGate B1 B2), (A, P, C, D)) Dout :-
domain [Din1, Din2] ((fd_min Dout) + andGateDelay) (fd_max Dout),
delay (B1, (A, P, C, D)) Din1,
delay (B2, (A, P, C, D)) Din2,
domain [Dout] (maximum (fd_min Din1) (fd_min Din2)) (fd_max Dout)
delay ((orGate B1 B2), (A, P, C, D)) Dout :-
domain [Din1, Din2] ((fd_min Dout) + orGateDelay) (fd_max Dout),
delay (B1, (A, P, C, D)) Din1,
delay (B2, (A, P, C, D)) Din2,
domain [Dout] (maximum (fd_min Din1) (fd_min Din2)) (fd_max Dout)
% Switching Function
switchingFunction :: behaviour -> functionality
switchingFunction Behaviour = [Outcome0, Outcome1, Outcome2, Outcome3,
Outcome4, Outcome5, Outcome6, Outcome7] <==
(Behaviour false false false) == Outcome0,
Comentarios a estos manuales