Class: OrigenTesters::IGXLBasedTester::Base::TestInstance
- Inherits:
-
Object
- Object
- OrigenTesters::IGXLBasedTester::Base::TestInstance
- Defined in:
- lib/origen_testers/igxl_based_tester/base/test_instance.rb
Direct Known Subclasses
J750::TestInstance, J750_HPT::TestInstance, UltraFLEX::TestInstance
Instance Attribute Summary collapse
-
#append_version ⇒ Object
Returns the value of attribute append_version.
-
#finalize ⇒ Object
Returns the value of attribute finalize.
-
#index ⇒ Object
Returns the value of attribute index.
-
#meta ⇒ Object
Returns the value of attribute meta.
-
#type ⇒ Object
Returns the value of attribute type.
-
#version ⇒ Object
Returns the value of attribute version.
Class Method Summary collapse
- .attrs ⇒ Object
- .define ⇒ Object
- .new_apmu_powersupply(name, attrs = {}) ⇒ Object
- .new_board_pmu(name, attrs = {}) ⇒ Object
- .new_empty(name, attrs = {}) ⇒ Object
- .new_functional(name, attrs = {}) ⇒ Object
- .new_mto_memory(name, attrs = {}) ⇒ Object
- .new_pin_pmu(name, attrs = {}) ⇒ Object
- .new_powersupply(name, attrs = {}) ⇒ Object
Instance Method Summary collapse
- #==(other_instance) ⇒ Object
-
#fimv? ⇒ Boolean
Returns true if instance configured for force current, measure voltage.
-
#fvmi? ⇒ Boolean
Returns true if instance configured for force voltage, measure current.
-
#initialize(name, type, attrs = {}) ⇒ TestInstance
constructor
A new instance of TestInstance.
- #inspect ⇒ Object
- #name ⇒ Object (also: #test_name)
- #name=(val) ⇒ Object
-
#set_hi_limit(lim) ⇒ Object
(also: #hi_limit=)
Set and enable the hi limit of a parametric test instance, passing in nil or false as the lim parameter will disable the hi limit.
-
#set_irange(r = nil, options = {}) ⇒ Object
Set the current range of the test instance, the following are valid:.
-
#set_lo_limit(lim) ⇒ Object
(also: #lo_limit=)
Set and enable the hi limit of a parametric test instance, passing in nil or false as the lim parameter will disable the hi limit.
-
#set_vrange(r = nil, options = {}) ⇒ Object
Set the voltage range of the test instance, the following are valid:.
-
#set_wait_flags(*flags) ⇒ Object
Set the cpu wait flags for the given test instance instance.set_wait_flags(:a) instance.set_wait_flags(:a, :c).
-
#to_s(override_name = nil) ⇒ Object
Returns the fully formatted test instance for insertion into an instance sheet.
- #unversioned_name ⇒ Object
Constructor Details
#initialize(name, type, attrs = {}) ⇒ TestInstance
Returns a new instance of TestInstance.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 48 def initialize(name, type, attrs = {}) @type = type @append_version = true self.name = name # Build the type specific accessors (aliases) self.class::TEST_INSTANCE_ALIASES[@type.to_sym].each do |_alias, val| define_singleton_method("#{_alias}=") do |v| send("#{val}=", v) if self.respond_to?("#{val}=", v) end define_singleton_method("#{_alias}") do send(val) if self.respond_to?(val) end end # Set the defaults self.class::TEST_INSTANCE_DEFAULTS[@type.to_sym].each do |k, v| send("#{k}=", v) if self.respond_to?("#{k}=", v) end # Then the values that have been supplied attrs.each do |k, v| send("#{k}=", v) if self.respond_to?("#{k}=", v) end end |
Instance Attribute Details
#append_version ⇒ Object
Returns the value of attribute append_version.
5 6 7 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 5 def append_version @append_version end |
#finalize ⇒ Object
Returns the value of attribute finalize.
5 6 7 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 5 def finalize @finalize end |
#index ⇒ Object
Returns the value of attribute index.
5 6 7 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 5 def index @index end |
#meta ⇒ Object
Returns the value of attribute meta.
5 6 7 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 5 def @meta end |
#type ⇒ Object
Returns the value of attribute type.
5 6 7 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 5 def type @type end |
#version ⇒ Object
Returns the value of attribute version.
5 6 7 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 5 def version @version end |
Class Method Details
.attrs ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 36 def self.attrs @attrs ||= begin attrs = self::TEST_INSTANCE_ATTRS.dup self::TEST_INSTANCE_EXTRA_ARGS.times do |i| attrs << "arg#{i}" end attrs << 'comment' attrs end end |
.define ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 7 def self.define # Generate accessors for all attributes and their aliases attrs.each do |attr| writer = "#{attr}=".to_sym reader = attr.to_sym attr_reader attr.to_sym unless method_defined? reader attr_writer attr.to_sym unless method_defined? writer end # Define the common aliases now, the instance type specific ones will # be created when the instance type is known self::TEST_INSTANCE_ALIASES.each do |_alias, val| writer = "#{_alias}=".to_sym reader = _alias.to_sym unless val.is_a? Hash unless method_defined? writer define_method("#{_alias}=") do |v| send("#{val}=", v) end end unless method_defined? reader define_method("#{_alias}") do send(val) end end end end end |
.new_apmu_powersupply(name, attrs = {}) ⇒ Object
105 106 107 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 105 def self.new_apmu_powersupply(name, attrs = {}) new(name, :apmu_powersupply, attrs) end |
.new_board_pmu(name, attrs = {}) ⇒ Object
97 98 99 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 97 def self.new_board_pmu(name, attrs = {}) new(name, :board_pmu, attrs) end |
.new_empty(name, attrs = {}) ⇒ Object
89 90 91 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 89 def self.new_empty(name, attrs = {}) new(name, :empty, attrs) end |
.new_functional(name, attrs = {}) ⇒ Object
93 94 95 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 93 def self.new_functional(name, attrs = {}) new(name, :functional, attrs) end |
.new_mto_memory(name, attrs = {}) ⇒ Object
113 114 115 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 113 def self.new_mto_memory(name, attrs = {}) new(name, :mto_memory, attrs) end |
.new_pin_pmu(name, attrs = {}) ⇒ Object
101 102 103 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 101 def self.new_pin_pmu(name, attrs = {}) new(name, :pin_pmu, attrs) end |
.new_powersupply(name, attrs = {}) ⇒ Object
109 110 111 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 109 def self.new_powersupply(name, attrs = {}) new(name, :powersupply, attrs) end |
Instance Method Details
#==(other_instance) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 75 def ==(other_instance) self.class == other_instance.class && unversioned_name.to_s == other_instance.unversioned_name.to_s && self.class.attrs.all? do |attr| # Exclude test name, already examined above and don't want to include # the version in the comparison if attr == 'test_name' true else send(attr) == other_instance.send(attr) end end end |
#fimv? ⇒ Boolean
Returns true if instance configured for force current, measure voltage
311 312 313 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 311 def fimv? measure_mode == 1 end |
#fvmi? ⇒ Boolean
Returns true if instance configured for force voltage, measure current
316 317 318 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 316 def fvmi? measure_mode == 0 end |
#inspect ⇒ Object
71 72 73 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 71 def inspect "<TestInstance: #{name}, Type: #{type}>" end |
#name ⇒ Object Also known as: test_name
130 131 132 133 134 135 136 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 130 def name if version && @append_version "#{@test_name}_v#{version}" else @test_name.to_s end end |
#name=(val) ⇒ Object
139 140 141 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 139 def name=(val) self.test_name = val end |
#set_hi_limit(lim) ⇒ Object Also known as: hi_limit=
Set and enable the hi limit of a parametric test instance, passing in nil or false as the lim parameter will disable the hi limit.
157 158 159 160 161 162 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 157 def set_hi_limit(lim) if lim self.hi_limit = lim end self end |
#set_irange(r = nil, options = {}) ⇒ Object
Set the current range of the test instance, the following are valid:
Board PMU
-
2uA
-
20uA
-
200uA
-
2mA
-
20mA
-
200mA
-
:smart
Pin PMU
-
200nA
-
2uA
-
20uA
-
200uA
-
2mA
-
:auto
-
:smart
Examples
instance.set_irange(:smart)
instance.set_irange(:ua => 2)
instance.set_irange(2.uA) # Same as above
instance.set_irange(:ma => 200)
instance.set_irange(0.2) # Same as above
instance.set_irange(:a => 0.2) # Same as above
202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 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 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 202 def set_irange(r = nil, = {}) r, = nil, r if r.is_a?(Hash) unless r if r = .delete(:na) || .delete(:nA) r = r / 1_000_000_000 elsif r = .delete(:ua) || .delete(:uA) r = r / 1_000_000.0 elsif r = .delete(:ma) || .delete(:mA) r = r / 1000.0 elsif r = .delete(:a) || .delete(:A) else fail "Can't determine requested irange!" end end if @type == :board_pmu if r == :smart self.irange = 6 else self.irange = case when r > 0.02 then 5 when r > 0.002 then 4 when r > 0.0002 then 3 when r > 0.00002 then 2 when r > 0.000002 then 1 else 0 end end elsif @type == :powersupply if r == :smart self.irange = 6 elsif r == :auto self.irange = 5 else self.irange = case when r > 0.25 then 4 # between 250mA - 1A when r > 0.1 then 7 # between 100mA - 250mA when r > 0.01 then 0 # between 10mA - 100mA when r > 0.0005 then 1 # between 500ua - 10mA when r > 0.00005 then 2 # between 50ua - 500u when r > 0.000005 then 3 # between 5u - 50u else 8 end end else # :pin_pmu if r == :smart self.irange = 5 elsif r == :auto fail 'Auto range not available in FIMV mode!' if self.fimv? self.irange = 6 else if fimv? self.irange = case when r > 0.0002 then 2 else 4 end else self.irange = case when r > 0.0002 then 2 when r > 0.00002 then 4 when r > 0.000002 then 0 when r > 0.0000002 then 1 else 3 end end end end self end |
#set_lo_limit(lim) ⇒ Object Also known as: lo_limit=
Set and enable the hi limit of a parametric test instance, passing in nil or false as the lim parameter will disable the hi limit.
167 168 169 170 171 172 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 167 def set_lo_limit(lim) if lim self.lo_limit = lim end self end |
#set_vrange(r = nil, options = {}) ⇒ Object
Set the voltage range of the test instance, the following are valid:
Board PMU
-
2V
-
5V
-
10V
-
24V
-
:auto
-
:smart
Examples
instance.set_vrange(:auto)
instance.set_vrange(:v => 5)
instance.set_vrange(5) # Same as above
289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 289 def set_vrange(r = nil, = {}) r, = nil, r if r.is_a?(Hash) if r == :smart self.vrange = 4 elsif r == :auto self.vrange = 5 elsif !r if r = .delete(:v) || .delete(:V) else fail "Can't determine requested vrange!" end end self.vrange = case when r > 10 then 3 when r > 5 then 2 when r > 2 then 1 else 0 end self end |
#set_wait_flags(*flags) ⇒ Object
Set the cpu wait flags for the given test instance
instance.set_wait_flags(:a)
instance.set_wait_flags(:a, :c)
150 151 152 153 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 150 def set_wait_flags(*flags) # This method is tester-specific and must be overridden by the child class fail 'The #{self.class} class has not defined a set_wait_flags method!' end |
#to_s(override_name = nil) ⇒ Object
Returns the fully formatted test instance for insertion into an instance sheet
118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 118 def to_s(override_name = nil) l = "\t" self.class.attrs.each do |attr| if attr == 'test_name' && override_name l += "#{override_name}\t" else l += "#{send(attr)}\t" end end "#{l}" end |
#unversioned_name ⇒ Object
143 144 145 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 143 def unversioned_name @test_name.to_s end |