Class: OrigenTesters::IGXLBasedTester::UltraFLEX::TestInstance

Inherits:
Base::TestInstance show all
Defined in:
lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb

Constant Summary collapse

TEST_INSTANCE_ATTRS =

Attributes for each test instance line, first few are named directly

%w(
  test_name proc_type proc_name proc_called_as dc_category
  dc_selector ac_category ac_selector
  time_sets edge_sets pin_levels mixedsignal_timing overlay
)
TEST_INSTANCE_EXTRA_ARGS =

Attributes for additional test instance arguments beyond those described above

130
TEST_INSTANCE_ALIASES =
{
  name:             :test_name,
  time_set:         :time_sets,
  timeset:          :time_sets,
  timesets:         :time_sets,

  other:            {
  },

  empty:            {
    arg_list:             :arg0,
    start_func:           :arg1,
    start_of_body_f:      :arg1,
    pre_pat_func:         :arg2,
    pre_pat_f:            :arg2,
    pre_test_func:        :arg3,
    pre_test_f:           :arg3,
    post_test_func:       :arg4,
    post_test_f:          :arg4,
    post_pat_func:        :arg5,
    post_pat_f:           :arg5,
    end_func:             :arg6,
    end_of_body_f:        :arg6,
    start_func_args:      :arg7,
    start_of_body_f_args: :arg7,
    pre_pat_func_args:    :arg8,
    pre_pat_f_args:       :arg8,
    pre_test_func_args:   :arg9,
    pre_test_f_args:      :arg9,
    post_test_func_args:  :arg10,
    post_test_f_args:     :arg10,
    post_pat_func_args:   :arg11,
    post_pat_f_args:      :arg11,
    end_func_args:        :arg12,
    end_of_body_f_args:   :arg12,
    utility_pins_1:       :arg13,
    utility_pins_0:       :arg14,
    init_lo:              :arg15,
    start_lo:             :arg15,
    init_hi:              :arg16,
    start_hi:             :arg16,
    init_hiz:             :arg17,
    start_hiz:            :arg17,
    float_pins:           :arg18,
    disable_pins:         :arg19
  },

  # Functional test instances
  functional:       {
    arg_list:             :arg0,
    pattern:              :arg1,
    patterns:             :arg1,
    start_func:           :arg2,
    start_of_body_f:      :arg2,
    pre_pat_func:         :arg3,
    pre_pat_f:            :arg3,
    pre_test_func:        :arg4,
    pre_test_f:           :arg4,
    post_test_func:       :arg5,
    post_test_f:          :arg5,
    post_pat_func:        :arg6,
    post_pat_f:           :arg6,
    end_func:             :arg7,
    end_of_body_f:        :arg7,
    set_pass_fail:        :arg8,
    report_result:        :arg8,
    result_mode:          :arg9,
    init_lo:              :arg10,
    start_lo:             :arg10,
    init_hi:              :arg11,
    start_hi:             :arg11,
    init_hiz:             :arg12,
    start_hiz:            :arg12,
    disable_pins:         :arg13,
    float_pins:           :arg14,
    start_func_args:      :arg15,
    start_of_body_f_args: :arg15,
    pre_pat_func_args:    :arg16,
    pre_pat_f_args:       :arg16,
    pre_test_func_args:   :arg17,
    pre_test_f_args:      :arg17,
    post_test_func_args:  :arg18,
    post_test_f_args:     :arg18,
    post_pat_func_args:   :arg19,
    post_pat_f_args:      :arg19,
    end_func_args:        :arg20,
    end_of_body_f_args:   :arg20,
    utility_pins_1:       :arg21,
    utility_pins_0:       :arg22,
    pat_flag_func:        :arg23,
    pat_flag_f:           :arg23,
    PatFlagF:             :arg23,
    pat_flag_func_args:   :arg24,
    pat_flag_f_args:      :arg24,
    relay_mode:           :arg25,
    threading:            :arg26,
    match_all_sites:      :arg27,
    wait_flag1:           :arg28,
    wait_flag2:           :arg29,
    wait_flag3:           :arg30,
    wait_flag4:           :arg31,
    validating:           :arg32,
    wait_time:            :arg33,
    pattern_timeout:      :arg33,
    wait_time_domain:     :arg34,
    concurrent_mode:      :arg35
  },

  pin_pmu:          {
    arg_list:                :arg0,
    hsp_start:               :arg1,
    start_func:              :arg2,
    start_of_body_f:         :arg2,
    pre_pat_func:            :arg3,
    pre_pat_f:               :arg3,
    pre_test_func:           :arg4,
    pre_test_f:              :arg4,
    post_test_func:          :arg5,
    post_test_f:             :arg5,
    post_pat_func:           :arg6,
    post_pat_f:              :arg6,
    end_func:                :arg7,
    end_of_body_f:           :arg7,
    precond_pat:             :arg8,
    hold_state_pat:          :arg9,
    holdstate_pat:           :arg9,
    pattern:                 :arg9,
    pcp_stop:                :arg10,
    start_lo:                :arg11,
    init_lo:                 :arg11,
    start_hi:                :arg12,
    init_hi:                 :arg12,
    start_hiz:               :arg13,
    init_hiz:                :arg13,
    disable_pins:            :arg14,
    float_pins:              :arg15,
    pinlist:                 :arg16,
    pin:                     :arg16,
    pin_list:                :arg16,
    measure_mode:            :arg17,
    settling_time:           :arg18,
    force_cond_1:            :arg19,
    force_cond:              :arg19,
    force_condition:         :arg19,
    force_cond_2:            :arg20,
    relay_mode:              :arg21,
    start_func_args:         :arg22,
    start_of_body_f_args:    :arg22,
    pre_pat_func_args:       :arg23,
    pre_pat_f_args:          :arg23,
    pre_test_func_args:      :arg24,
    pre_test_f_args:         :arg24,
    post_test_func_args:     :arg25,
    post_test_f_args:        :arg25,
    post_pat_func_args:      :arg26,
    post_pat_f_args:         :arg26,
    end_func_args:           :arg27,
    end_of_body_f_args:      :arg27,
    pcp_start:               :arg28,
    pcp_check_pg:            :arg29,
    hsp_stop:                :arg30,
    hsp_check_pg:            :arg31,
    sampling_time:           :arg32,
    samples:                 :arg33,
    resume_pat:              :arg34,
    vcl:                     :arg35,
    vch:                     :arg36,
    utility_pins_1:          :arg37,
    utility_pins_0:          :arg38,
    wait_flag1:              :arg39,
    wait_flag2:              :arg40,
    wait_flag3:              :arg41,
    wait_flag4:              :arg42,
    validating:              :arg43,
    force_irange:            :arg44,
    meas_irange:             :arg45,
    wait_time_out:           :arg46,
    pcp_disable_alarm_check: :arg47,
    hsp_disable_alarm_check: :arg48,
    testing_in_series:       :arg49,
    background_meas_mode:    :arg50,
    background_force_irange: :arg51,
    background_meas_irange:  :arg52,
    background_force_cond:   :arg53,
    pins_alt:                :arg54,
    measure_mode_alt:        :arg55,
    force_cond_alt:          :arg56,
    force_irange_alt:        :arg57,
    meas_irange_alt:         :arg58
  },

  dcvi_powersupply: {
    arg_list:             :arg0,
    precond_pat:		        :arg1,
    start_func:		         :arg2,
    pre_pat_func:			      :arg3,
    pre_test_func:			     :arg4,
    post_test_func:		     :arg5,
    post_pat_func:			     :arg6,
    end_of_body_f:		      :arg7,
    hold_state_pat:		     :arg8,
    pattern:		            :arg8,
    drive_lo_pins:		      :arg9,
    drive_hi_pins:		      :arg10,
    drive_z_pins:		       :arg11,
    float_pins:		         :arg12,
    sampling_time:		      :arg13,
    sample:		             :arg14,
    sample_size:		        :arg14,
    settling_time:		      :arg15,
    main_voltage:		       :arg16,
    alt_voltage:		        :arg17,
    power_pins:		         :arg18,
    disable_pins:		       :arg19,
    voltage_output:		     :arg20,
    pcp_start_label:		    :arg21,
    pcp_start:		          :arg21,
    pcp_stop_label:		     :arg22,
    pcp_stop:		           :arg22,
    start_func_args:      :arg23,
    start_of_body_f_args: :arg23,
    pre_pat_func_args:    :arg24,
    pre_pat_f_args:       :arg24,
    pre_test_func_args:   :arg25,
    pre_test_f_args:      :arg25,
    post_test_func_args:  :arg26,
    post_test_f_args:     :arg26,
    post_pat_func_args:   :arg27,
    post_pat_f_args:      :arg27,
    end_func_args:        :arg28,
    end_of_body_f_args:   :arg28,
    hsp_start_label:		    :arg29,
    hsp_start:		          :arg29,
    hsp_stop_label:		     :arg30,
    hsp_stop:		           :arg30,
    pcp_check_patGen:		   :arg31,
    current_clamp:		      :arg32,
    hsp_checkpat_gen:		   :arg33,
    hsp_resume_pat:		     :arg34,
    relay_mode:		         :arg35,
    utility_pins_1:       :arg36,
    utility_pins_0:       :arg37,
    test_control:		       :arg38,
    serialize_meas:		     :arg39,
    meas_f:			            :arg40,
    meas_f_args:		        :arg41,
    wait_flag1:           :arg42,
    wait_flag2:           :arg43,
    wait_flag3:           :arg44,
    wait_flag4:           :arg45,
    validating:           :arg46,
    i_range:			           :arg47,
    pattern_timeout:		    :arg48,
    pcp_disable_alarm:		  :arg49,
    hcp_disable_alarm:		  :arg50
  }

}
TEST_INSTANCE_DEFAULTS =
{
  empty:            {
    arg_list:       'StartOfBodyF,PrePatF,PreTestF,PostTestF,PostPatF,EndOfBodyF,StartOfBodyFArgs,PrePatFArgs,PreTestFArgs,PostTestFArgs,PostPatFArgs,EndOfBodyFArgs,Util1Pins,Util0Pins,DriveLoPins,DriveHiPins,DriveZPins,FloatPins,DisablePins',
    proc_type:      'VBT',
    proc_name:      'Empty_T',
    proc_called_as: 'Excel Macro'
  },
  other:            {
    proc_type:      'Other',
    proc_called_as: 'Excel Macro'
  },
  functional:       {
    arg_list:        'Patterns,StartOfBodyF,PrePatF,PreTestF,PostTestF,PostPatF,EndOfBodyF,ReportResult,ResultMode,DriveLoPins,DriveHiPins,DriveZPins,DisablePins,FloatPins,StartOfBodyFArgs,PrePatFArgs,PreTestFArgs,PostTestFArgs,PostPatFArgs,EndOfBodyFArgs,Util1Pins,Util0Pins,PatFlagF,PatFlagFArgs,RelayMode,PatThreading,MatchAllSites,WaitFlagA,WaitFlagB,WaitFlagC,WaitFlagD,Validating_,PatternTimeout,WaitTimeDomain,ConcurrentMode',
    proc_type:       'VBT',
    proc_name:       'Functional_T',
    proc_called_as:  'Excel Macro',
    set_pass_fail:   1,
    relay_mode:      1,
    threading:       0,
    match_all_sites: 0,
    wait_flag1:      -2, # waitoff
    wait_flag2:      -2, # waitoff
    wait_flag3:      -2, # waitoff
    wait_flag4:      -2, # waitoff
    wait_time:       30
  },
  pin_pmu:          {
    arg_list:       'HspStartLabel,StartOfBodyF,PrePatF,PreTestF,PostTestF,PostPatF,EndOfBodyF,PreconditionPat,HoldStatePat,PcpStopLabel,DriveLoPins,DriveHiPins,DriveZPins,DisablePins,FloatPins,Pins,MeasureMode,SettlingTime,ForceCond1,ForceCond2,RelayMode,StartOfBodyFArgs,PrePatFArgs,PreTestFArgs,PostTestFArgs,PostPatFArgs,EndOfBodyFArgs,PcpStartLabel,PcpCheckPatGen,HspStopLabel,HspCheckPatGen,SamplingTime,SampleCount,HspResumePat,VClampLo,VClampHi,Util1Pins,Util0Pins,WaitFlagA,WaitFlagB,WaitFlagC,WaitFlagD,Validating_,ForceIRange,MeasIRange,PatternTimeout,PcpDisableAlarmCheck,HspDisableAlarmCheck,TestingInSeries,BackgroundMeasureMode,BackgroundForceIRange,BackgroundMeasIRange,BackgroundForceCond,PinsAlt,MeasureModeAlt,ForceCondAlt,ForceIRangeAlt,MeasIRangeAlt',
    proc_type:      'VBT',
    proc_name:      'PinPmu_T',
    proc_called_as: 'Excel Macro',
    wait_flag1:     -2, # waitoff
    wait_flag2:     -2, # waitoff
    wait_flag3:     -2, # waitoff
    wait_flag4:     -2, # waitoff
  },
  dcvi_powersupply: {
    arg_list:       'PreconditionPat,StartOfBodyF,PrePatF,PreTestF,PostTestF,PostPatF,EndOfBodyF,HoldStatePat,DriveLoPins,DriveHiPins,DriveZPins,FloatPins,SamplingTime,SampleSize,SettlingTime,MainVoltage,AltVoltage,PowerPins,DisablePins,VoltageOutput,PcpStartLabel,PcpStopLabel,StartOfBodyFArgs,PrePatFArgs,PreTestFArgs,PostTestFArgs,PostPatFArgs,EndOfBodyFArgs,HspStartLabel,HspStopLabel,PcpCheckPatGen,CurrentClamp,HspCheckPatGen,HspResumePat,RelayMode,Util1Pins,Util0Pins,TestControl,SerializeMeas,MeasF,MeasFArgs,WaitFlagA,WaitFlagB,WaitFlagC,WaitFlagD,Validating_,Irange,PatternTimeout,PcpDisableAlarm,HspDisableAlarm',
    proc_type:      'VBT',
    proc_name:      'DCVIPowerSupply_T',
    proc_called_as: 'Excel Macro',
    wait_flag1:     -2, # waitoff
    wait_flag2:     -2, # waitoff
    wait_flag3:     -2, # waitoff
    wait_flag4:     -2, # waitoff
  }

}

Instance Attribute Summary collapse

Attributes inherited from Base::TestInstance

#append_version, #finalize, #index, #meta, #type, #version

Instance Method Summary collapse

Methods inherited from Base::TestInstance

#==, attrs, define, #fimv?, #fvmi?, #initialize, #inspect, #name, #name=, new_apmu_powersupply, new_board_pmu, new_dcvi_powersupply, new_empty, new_functional, new_mto_memory, new_pin_pmu, new_powersupply, #set_hi_limit, #set_irange, #set_lo_limit, #set_vrange, #to_s, #unversioned_name

Constructor Details

This class inherits a constructor from OrigenTesters::IGXLBasedTester::Base::TestInstance

Instance Attribute Details

#defer_limitsObject

Give all UltraFLEX test instances the ability to contain limits, these will be rendered to Use-limit lines in the flow



15
16
17
# File 'lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb', line 15

def defer_limits
  @defer_limits
end

#hiObject

Give all UltraFLEX test instances the ability to contain limits, these will be rendered to Use-limit lines in the flow



15
16
17
# File 'lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb', line 15

def hi
  @hi
end

#hi_limitObject

Give all UltraFLEX test instances the ability to contain limits, these will be rendered to Use-limit lines in the flow



15
16
17
# File 'lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb', line 15

def hi_limit
  @hi_limit
end

#loObject

Give all UltraFLEX test instances the ability to contain limits, these will be rendered to Use-limit lines in the flow



15
16
17
# File 'lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb', line 15

def lo
  @lo
end

#lo_limitObject

Give all UltraFLEX test instances the ability to contain limits, these will be rendered to Use-limit lines in the flow



15
16
17
# File 'lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb', line 15

def lo_limit
  @lo_limit
end

#scaleObject

Give all UltraFLEX test instances the ability to contain limits, these will be rendered to Use-limit lines in the flow



15
16
17
# File 'lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb', line 15

def scale
  @scale
end

#unitsObject

Give all UltraFLEX test instances the ability to contain limits, these will be rendered to Use-limit lines in the flow



15
16
17
# File 'lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb', line 15

def units
  @units
end

Instance Method Details

#set_measure_mode(mode) ⇒ Object

Set the meaure mode of a parametric test instance, either:

  • :voltage / :fimv

  • :current / :fvmi



380
381
382
383
384
385
386
387
388
# File 'lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb', line 380

def set_measure_mode(mode)
  if mode == :current || mode == :fvmi
    self.measure_mode = 2
  elsif mode == :voltage || mode == :fimv
    self.measure_mode = 1
  else
    fail "Unknown measure mode: #{mode}"
  end
end

#set_pre_charge(val) ⇒ Object Also known as: set_precharge

Set and enable the pre-charge voltage of a parametric test instance.



350
351
352
# File 'lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb', line 350

def set_pre_charge(val)
  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)

assumes set flag means to set it high (waithi = -1 ) assumes clr flag means to set it off (waitoff = -2) does not yet support waitlo = 0



337
338
339
340
341
342
343
344
345
346
347
# File 'lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb', line 337

def set_wait_flags(*flags)
  a = (flags.include?(:a) || flags.include?(:a)) ? '-1' : '-2'
  b = (flags.include?(:b) || flags.include?(:b)) ? '-1' : '-2'
  c = (flags.include?(:c) || flags.include?(:c)) ? '-1' : '-2'
  d = (flags.include?(:d) || flags.include?(:d)) ? '-1' : '-2'
  self.wait_flag1 = a
  self.wait_flag2 = b
  self.wait_flag3 = c
  self.wait_flag4 = d
  self
end

#to_metaObject

Returns a hash containing key meta data about the test instance, this is intended to be used in documentation



357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
# File 'lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb', line 357

def to_meta
  return @meta if @meta
  m = { 'Test' => name,
        'Type' => type
  }
  if type == :functional
    m['Pattern'] = pattern
  elsif type == :board_pmu || type == :pin_pmu
    m['Measure'] = fvmi? ? 'current' : 'voltage'
    m['Hi'] = hi_limit
    m['Lo'] = lo_limit
    if force_cond
      m['Force'] = force_cond
    end
  end
  m['DC'] = "#{dc_category} (#{dc_selector})"
  m['AC'] = "#{ac_category} (#{ac_selector})"
  m
end