Class: Origen::Tester::J750::Generator::FlowLine

Inherits:
Object
  • Object
show all
Defined in:
lib/origen/tester/j750/generator/flow_line.rb

Constant Summary

ATTRS =

Attributes for each flow line, these must be declared in the order they are to be output

%w(label enable job part env opcode parameter tname tnum bin_pass bin_fail
sort_pass sort_fail result flag_pass flag_fail state
group_specifier group_sense group_condition group_name
device_sense device_condition device_name
debug_assume debug_sites comment
ALIASES =

Map any aliases to the official names here, multiple aliases for a given attribute are allowed

{
  bin:            :bin_fail,
  softbin:        :sort_fail,
  soft_bin:       :sort_fail,
  name:           :tname,
  number:         :tnum,
  if_enable:      :enable,
  if_enabled:     :enable,
  enabled:        :enable,
  # Aliases can also be used to set defaults on multiple attributes like this,
  # use :value to refer to the value passed in to the given alias
  flag_false:     { device_condition: 'flag-false',
                    device_name:      :value
                 },
  flag_true:      { device_condition: 'flag-true',
                    device_name:      :value
                 },
  flag_false_any: { group_specifier: 'any-active',
                    group_condition: 'flag-false',
                    group_name:      :value
                     },
  flag_false_all: { group_specifier: 'all-active',
                    group_condition: 'flag-false',
                    group_name:      :value
                     },
  flag_true_any:  { group_specifier: 'any-active',
                    group_condition: 'flag-true',
                    group_name:      :value
                    },
  flag_true_all:  { group_specifier: 'all-active',
                    group_condition: 'flag-true',
                    group_name:      :value
                    },
  flag_clear:     { device_condition: 'flag-clear',
                    device_name:      :value
                 }
}
DEFAULTS =

Assign attribute defaults here, generally this should match whatever defaults Teradyne has set whenever you create a new test instance, etc.

{
  test:              {
    opcode: 'Test',
    result: 'Fail'
  },
  cz:                {
    opcode: 'characterize',
    result: 'None'
  },
  goto:              {
    opcode: 'goto'
  },
  nop:               {
    opcode: 'nop'
  },
  set_device:        {
    opcode: 'set-device'
  },
  set_error_bin:     {
    opcode: 'set-error-bin'
  },
  enable_flow_word:  {
    opcode: 'enable-flow-word'
  },
  disable_flow_word: {
    opcode: 'disable-flow-word'
  },
  logprint:          {
    opcode: 'logprint'
  }
}

Instance Attribute Summary (collapse)

Class Method Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (FlowLine) initialize(type, attrs = {})

Returns a new instance of FlowLine



114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 114

def initialize(type, attrs = {})
  @ignore_missing_instance = attrs.delete(:instance_not_available)
  self.cz_setup = attrs.delete(:cz_setup)
  @type = type
  # Set the defaults
  DEFAULTS[@type.to_sym].each do |k, v|
    send("#{k}=", v) if self.respond_to?("#{k}=")
  end
  # Then the values that have been supplied
  attrs.each do |k, v|
    send("#{k}=", v) if self.respond_to?("#{k}=")
  end
end

Instance Attribute Details

- (Object) cz_setup

cz_setup is a virtual attrib since it is not part of the regular flow line



6
7
8
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 6

def cz_setup
  @cz_setup
end

- (Object) id

cz_setup is a virtual attrib since it is not part of the regular flow line



6
7
8
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 6

def id
  @id
end

- (Object) type

cz_setup is a virtual attrib since it is not part of the regular flow line



6
7
8
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 6

def type
  @type
end

Class Method Details

+ (Object) unique_counter



276
277
278
279
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 276

def self.unique_counter
  @ix ||= -1
  @ix += 1
end

Instance Method Details

- (Object) continue_on_fail



216
217
218
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 216

def continue_on_fail
  self.result = 'None'
end

- (Object) continue_pass



220
221
222
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 220

def continue_pass
  self.result = 'Pass'
end

- (Object) debug_assume_fail



228
229
230
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 228

def debug_assume_fail
  self.debug_assume = 'Fail'
end

- (Object) debug_assume_pass



224
225
226
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 224

def debug_assume_pass
  self.debug_assume = 'Pass'
end

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



191
192
193
194
195
196
197
198
199
200
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 191

def if_job=(jobs)
  [jobs].flatten.compact.each do |job|
    job = job.to_s.upcase
    if job =~ /!/
      self.unless_job = job
    else
      if_jobs << job unless if_jobs.include?(job)
    end
  end
end

- (Object) if_jobs



183
184
185
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 183

def if_jobs
  @if_jobs ||= []
end

- (Object) job Also known as: jobs



166
167
168
169
170
171
172
173
174
175
176
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 166

def job
  if !if_jobs.empty? && !unless_jobs.empty?
    fail "Both if and unless jobs have been defined for test: #{parameter}"
  elsif !if_jobs.empty?
    if_jobs.join(',')
  elsif !unless_jobs.empty?
    unless_jobs.map { |j| "!#{j}" }.join(',')
  else
    ''
  end
end

- (Object) parameter



137
138
139
140
141
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 137

def parameter
  # When referring to the test instance take the opportunity to refresh the current
  # version of the test instance
  @parameter = Origen.interface.identity_map.current_version_of(@parameter)
end

- (Object) parameter=(value)



128
129
130
131
132
133
134
135
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 128

def parameter=(value)
  if (@type == :test || @test == :cz) && !@ignore_missing_instance
    if value.is_a?(String) || value.is_a?(Symbol)
      fail "You must supply the actual test instance object for #{value} when adding it to the flow"
    end
  end
  @parameter = value
end

- (Object) run_if_all_failed(parent)



263
264
265
266
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 263

def run_if_all_failed(parent)
  parent.continue_on_fail
  self.flag_true_all = parent.set_flag_on_fail
end

- (Object) run_if_all_passed(parent)



253
254
255
256
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 253

def run_if_all_passed(parent)
  parent.continue_on_fail
  self.flag_true_all = parent.set_flag_on_pass
end

- (Object) run_if_any_failed(parent)



258
259
260
261
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 258

def run_if_any_failed(parent)
  parent.continue_on_fail
  self.flag_true_any = parent.set_flag_on_fail
end

- (Object) run_if_any_passed(parent)



248
249
250
251
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 248

def run_if_any_passed(parent)
  parent.continue_on_fail
  self.flag_true_any = parent.set_flag_on_pass
end

- (Object) set_flag_on_fail

def debug_sites

  self.debug_sites = "All"
end


236
237
238
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 236

def set_flag_on_fail
  self.flag_fail = "#{id}_FAILED"
end

- (Object) set_flag_on_pass



240
241
242
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 240

def set_flag_on_pass
  self.flag_pass = "#{id}_PASSED"
end

- (Object) set_flag_on_ran



244
245
246
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 244

def set_flag_on_ran
  self.flag_pass = "#{id}_RAN"
end

- (Boolean) test?

Returns:

  • (Boolean)


281
282
283
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 281

def test?
  @type == :test
end

- (Object) to_s

Returns the fully formatted flow line for insertion into a flow sheet



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 144

def to_s
  l = "\t"
  ATTRS.each do |attr|
    if attr == 'parameter'
      ins = parameter
      if ins.respond_to?(:name)
        l += "#{ins.name}"
      else
        l += "#{ins}"
      end
      if cz_setup
        l += " #{cz_setup}\t"
      else
        l += "\t"
      end
    else
      l += "#{send(attr)}\t"
    end
  end
  "#{l}"
end

- (Object) unique_counter



272
273
274
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 272

def unique_counter
  @unique_counter ||= self.class.unique_counter
end

- (Object) unless_enable=(*_args) Also known as: unless_enabled=



179
180
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 179

def unless_enable=(*_args)
end

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



205
206
207
208
209
210
211
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 205

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

- (Object) unless_jobs



187
188
189
# File 'lib/origen/tester/j750/generator/flow_line.rb', line 187

def unless_jobs
  @unless_jobs ||= []
end