Class: OrigenTesters::Charz::ShmooRoutine

Inherits:
Routine
  • Object
show all
Defined in:
lib/origen_testers/charz/routines/shmoo_routine.rb

Overview

A 2D search or “Shmoo” routine

Instance Attribute Summary collapse

Attributes inherited from Routine

#id, #name

Instance Method Summary collapse

Methods inherited from Routine

#method_missing

Constructor Details

#initialize(id, options = {}, &block) ⇒ ShmooRoutine



24
25
26
27
# File 'lib/origen_testers/charz/routines/shmoo_routine.rb', line 24

def initialize(id, options = {}, &block)
  super
  attrs_ok?
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class OrigenTesters::Charz::Routine

Instance Attribute Details

#x_resObject



13
# File 'lib/origen_testers/charz/routines/shmoo_routine.rb', line 13

attr_accessor :x_start, :x_stop, :x_res, :x_spec

#x_specSymbol, String



13
# File 'lib/origen_testers/charz/routines/shmoo_routine.rb', line 13

attr_accessor :x_start, :x_stop, :x_res, :x_spec

#x_startNumeric



13
14
15
# File 'lib/origen_testers/charz/routines/shmoo_routine.rb', line 13

def x_start
  @x_start
end

#x_stopNumeric



13
# File 'lib/origen_testers/charz/routines/shmoo_routine.rb', line 13

attr_accessor :x_start, :x_stop, :x_res, :x_spec

#y_resObject



22
# File 'lib/origen_testers/charz/routines/shmoo_routine.rb', line 22

attr_accessor :y_start, :y_stop, :y_res, :y_spec

#y_specSymbol, String



22
# File 'lib/origen_testers/charz/routines/shmoo_routine.rb', line 22

attr_accessor :y_start, :y_stop, :y_res, :y_spec

#y_startNumeric



22
23
24
# File 'lib/origen_testers/charz/routines/shmoo_routine.rb', line 22

def y_start
  @y_start
end

#y_stopNumeric



22
# File 'lib/origen_testers/charz/routines/shmoo_routine.rb', line 22

attr_accessor :y_start, :y_stop, :y_res, :y_spec

Instance Method Details

#attrs_ok?Boolean



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/origen_testers/charz/routines/shmoo_routine.rb', line 29

def attrs_ok?
  return if @quality_check == false

  @required_attrs ||= [:x_start, :x_stop, :x_res, :x_spec, :y_start, :y_stop, :y_res, :y_spec]
  attrs = @required_attrs.map { |attr| instance_variable_get("@#{attr}") }
  if attrs.compact.size != @required_attrs.size
    Origen.log.error "ShmooRoutine #{@id}: unspecified attributes, each of #{@required_attrs} must have a value"
    fail
  end

  return if @attr_value_check == false

  # not sure if I want this check, if so need to scope out if step count is common

  # if [@x_start, @x_stop, @x_res].all? { |attr| attr.is_a? Numeric }
  #   unless @x_res <= (@x_start - @x_stop).abs
  #     Origen.log.error "ShmooRoutine #{@id}: Search x_resolution (#{@x_res} is larger than the search x_range (#{@x_start - @x_stop).abs})"
  #     fail
  #   end
  # end
  # if [@y_start, @y_stop, @y_res].all? { |attr| attr.is_a? Numeric }
  #   unless @y_res <= (@y_start - @y_stop).abs
  #     Origen.log.error "ShmooRoutine #{@id}: Search y_resolution (#{@y_res} is larger than the search y_range (#{@y_start - @y_stop).abs})"
  #     fail
  #   end
  # end
  unless @x_spec != @y_spec
    Origen.log.error "ShmooRoutine #{@id}: Search x_spec is identical to y_spec"
    fail
  end
end