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 70 |
# 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 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
106 107 108 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 106 def self.new_apmu_powersupply(name, attrs = {}) new(name, :apmu_powersupply, attrs) end |
.new_board_pmu(name, attrs = {}) ⇒ Object
98 99 100 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 98 def self.new_board_pmu(name, attrs = {}) new(name, :board_pmu, attrs) end |
.new_empty(name, attrs = {}) ⇒ Object
90 91 92 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 90 def self.new_empty(name, attrs = {}) new(name, :empty, attrs) end |
.new_functional(name, attrs = {}) ⇒ Object
94 95 96 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 94 def self.new_functional(name, attrs = {}) new(name, :functional, attrs) end |
.new_mto_memory(name, attrs = {}) ⇒ Object
114 115 116 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 114 def self.new_mto_memory(name, attrs = {}) new(name, :mto_memory, attrs) end |
.new_pin_pmu(name, attrs = {}) ⇒ Object
102 103 104 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 102 def self.new_pin_pmu(name, attrs = {}) new(name, :pin_pmu, attrs) end |
.new_powersupply(name, attrs = {}) ⇒ Object
110 111 112 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 110 def self.new_powersupply(name, attrs = {}) new(name, :powersupply, attrs) end |
Instance Method Details
#==(other_instance) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 76 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
312 313 314 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 312 def fimv? measure_mode == 1 end |
#fvmi? ⇒ Boolean
Returns true if instance configured for force voltage, measure current
317 318 319 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 317 def fvmi? measure_mode == 0 end |
#inspect ⇒ Object
72 73 74 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 72 def inspect "<TestInstance: #{name}, Type: #{type}>" end |
#name ⇒ Object Also known as: test_name
131 132 133 134 135 136 137 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 131 def name if version && @append_version "#{@test_name}_v#{version}" else @test_name.to_s end end |
#name=(val) ⇒ Object
140 141 142 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 140 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.
158 159 160 161 162 163 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 158 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
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 274 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 203 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.
168 169 170 171 172 173 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 168 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
290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 290 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)
151 152 153 154 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 151 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
119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 119 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
144 145 146 |
# File 'lib/origen_testers/igxl_based_tester/base/test_instance.rb', line 144 def unversioned_name @test_name.to_s end |