Class: Origen::Tester::Ultraflex::Generator::FlowLine
- Inherits:
-
Object
- Object
- Origen::Tester::Ultraflex::Generator::FlowLine
- Defined in:
- lib/origen/tester/ultraflex/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' }, enable_flow_word: { opcode: 'enable-flow-word' }, disable_flow_word: { opcode: 'disable-flow-word' }, logprint: { opcode: 'logprint' } }
Instance Attribute Summary (collapse)
-
- (Object) cz_setup
cz_setup is a virtual attrib since it is not part of the regular flow line.
-
- (Object) id
cz_setup is a virtual attrib since it is not part of the regular flow line.
-
- (Object) type
cz_setup is a virtual attrib since it is not part of the regular flow line.
Class Method Summary (collapse)
Instance Method Summary (collapse)
- - (Object) continue_on_fail
- - (Object) if_job=(jobs) (also: #if_jobs=, #add_if_jobs, #add_if_job)
- - (Object) if_jobs
-
- (FlowLine) initialize(type, attrs = {})
constructor
A new instance of FlowLine.
- - (Object) job (also: #jobs)
- - (Object) parameter
- - (Object) parameter=(value)
- - (Object) run_if_all_failed(parent)
- - (Object) run_if_all_passed(parent)
- - (Object) run_if_any_failed(parent)
- - (Object) run_if_any_passed(parent)
- - (Object) set_flag_on_fail
- - (Object) set_flag_on_pass
- - (Object) set_flag_on_ran
- - (Boolean) test?
-
- (Object) to_s
Returns the fully formatted flow line for insertion into a flow sheet.
- - (Object) unique_counter
- - (Object) unless_enable=(*_args) (also: #unless_enabled=)
- - (Object) unless_job=(jobs) (also: #unless_jobs=, #add_unless_jobs, #add_unless_job)
- - (Object) unless_jobs
Constructor Details
- (FlowLine) initialize(type, attrs = {})
Returns a new instance of FlowLine
111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 111 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/ultraflex/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/ultraflex/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/ultraflex/generator/flow_line.rb', line 6 def type @type end |
Class Method Details
+ (Object) unique_counter
257 258 259 260 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 257 def self.unique_counter @ix ||= -1 @ix += 1 end |
Instance Method Details
- (Object) continue_on_fail
213 214 215 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 213 def continue_on_fail self.result = 'None' end |
- (Object) if_job=(jobs) Also known as: if_jobs=, add_if_jobs, add_if_job
188 189 190 191 192 193 194 195 196 197 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 188 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
180 181 182 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 180 def if_jobs @if_jobs ||= [] end |
- (Object) job Also known as: jobs
163 164 165 166 167 168 169 170 171 172 173 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 163 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
134 135 136 137 138 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 134 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)
125 126 127 128 129 130 131 132 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 125 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)
244 245 246 247 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 244 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)
234 235 236 237 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 234 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)
239 240 241 242 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 239 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)
229 230 231 232 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 229 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
217 218 219 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 217 def set_flag_on_fail self.flag_fail = "#{id}_FAILED" end |
- (Object) set_flag_on_pass
221 222 223 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 221 def set_flag_on_pass self.flag_pass = "#{id}_PASSED" end |
- (Object) set_flag_on_ran
225 226 227 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 225 def set_flag_on_ran self.flag_pass = "#{id}_RAN" end |
- (Boolean) test?
262 263 264 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 262 def test? @type == :test end |
- (Object) to_s
Returns the fully formatted flow line for insertion into a flow sheet
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 141 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
253 254 255 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 253 def unique_counter @unique_counter ||= self.class.unique_counter end |
- (Object) unless_enable=(*_args) Also known as: unless_enabled=
176 177 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 176 def unless_enable=(*_args) end |
- (Object) unless_job=(jobs) Also known as: unless_jobs=, add_unless_jobs, add_unless_job
202 203 204 205 206 207 208 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 202 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
184 185 186 |
# File 'lib/origen/tester/ultraflex/generator/flow_line.rb', line 184 def unless_jobs @unless_jobs ||= [] end |