-
Notifications
You must be signed in to change notification settings - Fork 2
/
CheckTimingValidity.m
41 lines (37 loc) · 1.37 KB
/
CheckTimingValidity.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function [ Flag_TimingValidity , LongestChainLength] = CheckTimingValidity( targetAdderObject, servedTiming )
% FUNCTION DESCRIPTION:
AdderWidth = size(targetAdderObject, 2);
K = servedTiming;
Chain = zeros(1, AdderWidth-1);
LongestChainLength = 0;
Counter = 0;
%----------------------------------------------------------------------
for i = 1 : AdderWidth-1
if ( isequal(targetAdderObject{i}.carryOut, 'Yes') && ...
isequal(targetAdderObject{i+1}.carryIn, 'Yes') )
Chain(1, i) = 1;
else
Chain(1, i) = 0;
end
end
%----------------------------------------------------------------------
%----------------------------------------------------------------------
for i = 1: AdderWidth-1
if Chain(1, i) == 1
Counter = Counter + 1;
if (Counter > LongestChainLength)
LongestChainLength = Counter;
end
else
Counter = 0;
end
end
%----------------------------------------------------------------------
LongestChainLength = LongestChainLength + 1;
if LongestChainLength > K
Flag_TimingValidity = false;
else
Flag_TimingValidity = true;
end
%----------------------------------------------------------------------
end