Module: OrigenTesters::SmartestBasedTester::Base::FlowNode::FlowControlAPI

Included in:
OrigenTesters::SmartestBasedTester::Base::FlowNode
Defined in:
lib/origen_testers/smartest_based_tester/base/flow_node.rb

Overview

This module implements the flow control API for the V93K

Instance Method Summary collapse

Instance Method Details

#continue_on_failObject



217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 217

def continue_on_fail
  if group? || if_then?
    nodes.reject! do |n|
      if n.bin?
        n.deleted = true
        parent.delete(n)
        true
      end
    end
    nodes.each { |n| n.continue_on_fail if n.test? || n.if_then? }
    if if_then?
      else_nodes.reject! do |n|
        if n.bin?
          n.deleted = true
          parent.delete(n)
          true
        end
      end
      else_nodes.each { |n| n.continue_on_fail if n.test? || n.if_then? }
    end
  else
    else_nodes.reject! do |n|
      if n.bin?
        n.deleted = true
        parent.delete(n)
        true
      end
    end
  end
end

#enableObject



132
133
134
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 132

def enable
  @enable
end

#enable=(val) ⇒ Object Also known as: if_enable=, if_enabled=, enabled=



136
137
138
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 136

def enable=(val)
  @enable = val
end

#flag_clear=(var) ⇒ Object

Run the test unless the given flow variable is true



200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 200

def flag_clear=(var)
  c = "@#{var.to_s.upcase} != 1"
  if type == :if_then && condition == :skip
    self.condition = c
    self
  else
    node = FlowNode.create(flow, :if_then)
    node.parent = parent
    node.condition = c
    node.nodes << self
    # Replace self in the main flow with the conditional node (which includes self
    # in its parent collection)
    parent[parent.index(self)] = node
    flow.replace_relationship_dependent(self, node)
  end
end

#flag_true=(var) ⇒ Object

Run the test only if the given flow variable is true



182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 182

def flag_true=(var)
  c = "@#{var.to_s.upcase} == 1"
  if type == :if_then && condition == :skip
    self.condition = c
    self
  else
    node = FlowNode.create(flow, :if_then)
    node.parent = parent
    node.condition = c
    node.nodes << self
    # Replace self in the main flow with the conditional node (which includes self
    # in its parent collection)
    parent[parent.index(self)] = node
    flow.replace_relationship_dependent(self, node)
  end
end

#if_job=(jobs) ⇒ Object Also known as: if_jobs=, add_if_jobs, add_if_job



160
161
162
163
164
165
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 160

def if_job=(jobs)
  [jobs].flatten.compact.each do |job|
    job = job.to_s.upcase
    if_jobs << job unless if_jobs.include?(job)
  end
end

#if_jobsObject



152
153
154
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 152

def if_jobs
  @if_jobs ||= []
end

#run_if_all_failed(parent) ⇒ Object



306
307
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 306

def run_if_all_failed(parent)
end

#run_if_all_passed(parent) ⇒ Object



300
301
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 300

def run_if_all_passed(parent)
end

#run_if_any_failed(parent) ⇒ Object



309
310
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 309

def run_if_any_failed(parent)
end

#run_if_any_passed(parent) ⇒ Object



303
304
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 303

def run_if_any_passed(parent)
end

#set_flag_on_fail(id = self.id) ⇒ Object



248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 248

def set_flag_on_fail(id = self.id)
  var = "#{id}_FAILED"
  if group?
    nodes.each { |n| n.set_flag_on_fail(id) if n.test? || n.if_then? }
  elsif if_then?
    nodes.each { |n| n.set_flag_on_fail(id) if n.test? || n.if_then? }
    else_nodes.each { |n| n.set_flag_on_fail(id) if n.test? || n.if_then? }
  else
    @fail_flags_set ||= []
    unless @fail_flags_set.include?(var)
      flow.flow_control_variables << var
      else_nodes << flow.assign_value(var, 1)
      @fail_flags_set << var
    end
  end
  var
end

#set_flag_on_pass(id = self.id) ⇒ Object



266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 266

def set_flag_on_pass(id = self.id)
  var = "#{id}_PASSED"
  if group?
    nodes.each { |n| n.set_flag_on_pass(id) if n.test? || n.if_then? }
  elsif if_then?
    nodes.each { |n| n.set_flag_on_pass(id) if n.test? || n.if_then? }
    else_nodes.each { |n| n.set_flag_on_pass(id) if n.test? || n.if_then? }
  else
    @pass_flags_set ||= []
    unless @pass_flags_set.include?(var)
      flow.flow_control_variables << var
      nodes << flow.assign_value(var, 1)
      @pass_flags_set << var
    end
  end
  var
end

#set_flag_on_ran(id = self.id) ⇒ Object



284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 284

def set_flag_on_ran(id = self.id)
  var = "#{id}_RAN"
  if group?
    nodes.each { |n| n.set_flag_on_ran(id) if n.test? }
  else
    @ran_flags_set ||= []
    unless @ran_flags_set.include?(var)
      flow.flow_control_variables << var
      nodes << flow.assign_value(var, 1)
      else_nodes << flow.assign_value(var, 1)
      @ran_flags_set << var
    end
  end
  var
end

#unless_enableObject



143
144
145
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 143

def unless_enable
  @unless_enable
end

#unless_enable=(val) ⇒ Object Also known as: unless_enabled=



147
148
149
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 147

def unless_enable=(val)
  @unless_enable = val
end

#unless_job=(jobs) ⇒ Object Also known as: unless_jobs=, add_unless_jobs, add_unless_job



170
171
172
173
174
175
176
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 170

def unless_job=(jobs)
  [jobs].flatten.compact.each do |job|
    job = job.to_s.upcase
    job.gsub!('!', '')
    unless_jobs << job unless unless_jobs.include?(job)
  end
end

#unless_jobsObject



156
157
158
# File 'lib/origen_testers/smartest_based_tester/base/flow_node.rb', line 156

def unless_jobs
  @unless_jobs ||= []
end