Class: OrigenTesters::SmartestBasedTester::Base::Processors::ExtractFlowVars
- Inherits:
-
ATP::Processor
- Object
- ATP::Processor
- OrigenTesters::SmartestBasedTester::Base::Processors::ExtractFlowVars
show all
- Defined in:
- lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb
Overview
Returns an array containing all runtime control variables from the given AST node and their default values
Constant Summary
collapse
- OWNERS =
[:all, :this_flow, :sub_flows]
- CATEGORIES =
[:jobs, :referenced_flags, :set_flags, :unset_flags, :add_flags,
:set_flags_extern, :unset_flags_extern, :add_flags_extern,
:referenced_enables, :set_enables]
Instance Method Summary
collapse
#add_global_flag, #clean_flag, #extract_globals, #extract_volatiles, #global_flag?, #global_flags, #handler_missing, #process, #process_all, #volatile?, #volatile_flags
Instance Method Details
#on_add_flag(node) ⇒ Object
96
97
98
99
100
101
102
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 96
def on_add_flag(node)
add generate_flag_name(node.value), :add_flags
if !node.to_a.include?('auto_generated') || node.to_a.include?('extern')
add generate_flag_name(node.value), :add_flags_extern
end
end
|
#on_enable(node) ⇒ Object
Also known as:
on_disable
113
114
115
116
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 113
def on_enable(node)
flag = node.value.upcase
add flag, :set_enables
end
|
#on_if_enabled(node) ⇒ Object
Also known as:
on_unless_enabled
104
105
106
107
108
109
110
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 104
def on_if_enabled(node)
flag, *nodes = *node
[flag].flatten.each do |f|
add generate_flag_name(f), :referenced_enables
end
process_all(nodes)
end
|
#on_if_flag(node) ⇒ Object
Also known as:
on_unless_flag
71
72
73
74
75
76
77
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 71
def on_if_flag(node)
flag, *nodes = *node
[flag].flatten.each do |f|
add generate_flag_name(f), :referenced_flags
end
process_all(nodes)
end
|
#on_if_job(node) ⇒ Object
Also known as:
on_unless_job
53
54
55
56
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 53
def on_if_job(node)
add ['JOB', ''], :jobs
process_all(node.children)
end
|
#on_loop(node) ⇒ Object
124
125
126
127
128
129
130
131
132
133
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 124
def on_loop(node)
start, stop, step, loop_var, test_inc, *nodes = *node
[start, stop, step, loop_var].each do |type|
if [String, Symbol].include?(type.class) && tester.smt8?
add generate_flag_name(type), :referenced_flags
end
end
process_all(nodes)
end
|
#on_set(node) ⇒ Object
119
120
121
122
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 119
def on_set(node)
flag = generate_flag_name(node.to_a[0])
add flag, :set_enables
end
|
#on_set_flag(node) ⇒ Object
80
81
82
83
84
85
86
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 80
def on_set_flag(node)
add generate_flag_name(node.value), :set_flags
if !node.to_a.include?('auto_generated') || node.to_a.include?('extern')
add generate_flag_name(node.value), :set_flags_extern
end
end
|
#on_sub_flow(node) ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 40
def on_sub_flow(node)
@sub_flow_depth += 1
children = node.children
on_fail = node.find_all(:on_fail)
children -= on_fail
on_pass = node.find_all(:on_pass)
children -= on_pass
process_all(children)
@sub_flow_depth -= 1
process_all(on_fail)
process_all(on_pass)
end
|
#on_unset_flag(node) ⇒ Object
88
89
90
91
92
93
94
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 88
def on_unset_flag(node)
add generate_flag_name(node.value), :unset_flags
if !node.to_a.include?('auto_generated') || node.to_a.include?('extern')
add generate_flag_name(node.value), :unset_flags_extern
end
end
|
#on_whenever(node) ⇒ Object
Also known as:
on_whenever_all, on_whenever_any
59
60
61
62
63
64
65
66
67
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 59
def on_whenever(node)
flow_var, *nodes = *node
[flow_var].flatten.each do |f|
if [String, Symbol].include?(f.value.class)
add generate_flag_name(f.value.to_s), :referenced_flags
end
end
process_all(nodes)
end
|
#run(node, options = {}) ⇒ Object
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
|
# File 'lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb', line 14
def run(node, options = {})
@variables = {}
@variables[:empty?] = true
OWNERS.each do |t|
@variables[t] = {}
CATEGORIES.each { |c| @variables[t][c] = Set.new }
end
@sub_flow_depth = 0
process(node)
OWNERS.each do |t|
CATEGORIES.each do |c|
curr_vars = @variables[t][c].to_a.dup
flag_classes = curr_vars.map(&:class)
if flag_classes.include?(String) && flag_classes.include?(Symbol)
curr_vars.map!(&:to_s)
end
@variables[t][c] = curr_vars.sort do |x, y|
x = x[0] if x.is_a?(Array)
y = y[0] if y.is_a?(Array)
x <=> y
end
end
end
@variables
end
|