origen 0.2.6 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/origen +3 -1
- data/config/boot.rb +1 -7
- data/config/commands.rb +0 -1
- data/config/version.rb +2 -2
- data/lib/c99/{j750_interface.rb → ate_interface.rb} +3 -11
- data/lib/c99/doc_interface.rb +1 -1
- data/lib/origen.rb +9 -30
- data/lib/origen/application.rb +10 -8
- data/lib/origen/application/configuration.rb +13 -26
- data/lib/origen/application/plugins.rb +122 -0
- data/lib/origen/application/plugins_manager.rb +16 -254
- data/lib/origen/application/release.rb +2 -2
- data/lib/origen/application/runner.rb +2 -4
- data/lib/origen/chips.rb +0 -0
- data/lib/origen/chips/chip.rb +0 -0
- data/lib/origen/chips/design_entry.rb +0 -0
- data/lib/origen/chips/doc_entry.rb +0 -0
- data/lib/origen/chips/note.rb +0 -0
- data/lib/origen/commands.rb +4 -44
- data/lib/origen/commands/compile.rb +1 -2
- data/lib/origen/commands/generate.rb +1 -1
- data/lib/origen/commands/interactive.rb +1 -2
- data/lib/origen/commands/plugin.rb +49 -56
- data/lib/origen/commands/program.rb +1 -1
- data/lib/origen/commands/rc.rb +2 -2
- data/lib/origen/commands/version.rb +2 -17
- data/lib/origen/commands_global.rb +3 -0
- data/lib/origen/file_handler.rb +10 -10
- data/lib/origen/generator.rb +1 -1
- data/lib/origen/generator/job.rb +1 -1
- data/lib/origen/generator/pattern.rb +2 -2
- data/lib/origen/generator/pattern_finder.rb +10 -9
- data/lib/origen/pins/pin.rb +0 -0
- data/lib/origen/regression_manager.rb +0 -0
- data/lib/origen/remote_manager.rb +2 -8
- data/lib/origen/revision_control/design_sync.rb +0 -0
- data/lib/origen/revision_control/git.rb +0 -0
- data/lib/origen/specs.rb +0 -0
- data/lib/origen/specs/checkers.rb +0 -0
- data/lib/origen/specs/creation_info.rb +0 -0
- data/lib/origen/specs/exhibit.rb +0 -0
- data/lib/origen/specs/spec.rb +0 -0
- data/lib/origen/utility.rb +0 -1
- data/lib/origen/utility/diff.rb +0 -0
- metadata +42 -119
- data/lib/origen/import_manager.rb +0 -596
- data/lib/origen/nvm.rb +0 -6
- data/lib/origen/nvm/block_array.rb +0 -72
- data/lib/origen/tester.rb +0 -56
- data/lib/origen/tester/api.rb +0 -277
- data/lib/origen/tester/bdm/bdm.rb +0 -25
- data/lib/origen/tester/doc/doc.rb +0 -226
- data/lib/origen/tester/doc/generator.rb +0 -126
- data/lib/origen/tester/doc/generator/flow.rb +0 -71
- data/lib/origen/tester/doc/generator/flow_line.rb +0 -203
- data/lib/origen/tester/doc/generator/test.rb +0 -68
- data/lib/origen/tester/doc/generator/test_group.rb +0 -66
- data/lib/origen/tester/doc/generator/tests.rb +0 -47
- data/lib/origen/tester/doc/model.rb +0 -162
- data/lib/origen/tester/generator.rb +0 -271
- data/lib/origen/tester/generator/flow_control_api.rb +0 -606
- data/lib/origen/tester/generator/identity_map.rb +0 -25
- data/lib/origen/tester/generator/placeholder.rb +0 -13
- data/lib/origen/tester/generator/test_numberer.rb +0 -25
- data/lib/origen/tester/interface.rb +0 -154
- data/lib/origen/tester/j750/files.rb +0 -45
- data/lib/origen/tester/j750/generator.rb +0 -203
- data/lib/origen/tester/j750/generator/flow.rb +0 -123
- data/lib/origen/tester/j750/generator/flow_line.rb +0 -288
- data/lib/origen/tester/j750/generator/patgroup.rb +0 -111
- data/lib/origen/tester/j750/generator/patgroups.rb +0 -41
- data/lib/origen/tester/j750/generator/patset.rb +0 -111
- data/lib/origen/tester/j750/generator/patsets.rb +0 -41
- data/lib/origen/tester/j750/generator/templates/flow.txt.erb +0 -9
- data/lib/origen/tester/j750/generator/templates/instances.txt.erb +0 -16
- data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +0 -8
- data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +0 -10
- data/lib/origen/tester/j750/generator/test_instance.rb +0 -846
- data/lib/origen/tester/j750/generator/test_instance_group.rb +0 -60
- data/lib/origen/tester/j750/generator/test_instances.rb +0 -182
- data/lib/origen/tester/j750/j750.rb +0 -845
- data/lib/origen/tester/j750/j750_hpt.rb +0 -35
- data/lib/origen/tester/j750/parser.rb +0 -104
- data/lib/origen/tester/j750/parser/ac_spec.rb +0 -11
- data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/j750/parser/dc_spec.rb +0 -36
- data/lib/origen/tester/j750/parser/dc_specs.rb +0 -50
- data/lib/origen/tester/j750/parser/descriptions.rb +0 -340
- data/lib/origen/tester/j750/parser/flow.rb +0 -111
- data/lib/origen/tester/j750/parser/flow_line.rb +0 -207
- data/lib/origen/tester/j750/parser/flows.rb +0 -23
- data/lib/origen/tester/j750/parser/pattern_set.rb +0 -94
- data/lib/origen/tester/j750/parser/pattern_sets.rb +0 -33
- data/lib/origen/tester/j750/parser/test_instance.rb +0 -322
- data/lib/origen/tester/j750/parser/test_instances.rb +0 -26
- data/lib/origen/tester/j750/parser/timeset.rb +0 -15
- data/lib/origen/tester/j750/parser/timesets.rb +0 -0
- data/lib/origen/tester/jlink/jlink.rb +0 -33
- data/lib/origen/tester/parser.rb +0 -24
- data/lib/origen/tester/parser/description_lookup.rb +0 -64
- data/lib/origen/tester/parser/searchable_array.rb +0 -32
- data/lib/origen/tester/parser/searchable_hash.rb +0 -32
- data/lib/origen/tester/time.rb +0 -338
- data/lib/origen/tester/timing.rb +0 -253
- data/lib/origen/tester/ultraflex/files.rb +0 -45
- data/lib/origen/tester/ultraflex/generator.rb +0 -200
- data/lib/origen/tester/ultraflex/generator/flow.rb +0 -119
- data/lib/origen/tester/ultraflex/generator/flow_line.rb +0 -269
- data/lib/origen/tester/ultraflex/generator/patgroup.rb +0 -111
- data/lib/origen/tester/ultraflex/generator/patgroups.rb +0 -41
- data/lib/origen/tester/ultraflex/generator/patset.rb +0 -111
- data/lib/origen/tester/ultraflex/generator/patsets.rb +0 -41
- data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +0 -9
- data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +0 -16
- data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +0 -8
- data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +0 -10
- data/lib/origen/tester/ultraflex/generator/test_instance.rb +0 -622
- data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +0 -60
- data/lib/origen/tester/ultraflex/generator/test_instances.rb +0 -174
- data/lib/origen/tester/ultraflex/parser.rb +0 -104
- data/lib/origen/tester/ultraflex/parser/ac_spec.rb +0 -11
- data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/ultraflex/parser/dc_spec.rb +0 -36
- data/lib/origen/tester/ultraflex/parser/dc_specs.rb +0 -50
- data/lib/origen/tester/ultraflex/parser/descriptions.rb +0 -342
- data/lib/origen/tester/ultraflex/parser/flow.rb +0 -111
- data/lib/origen/tester/ultraflex/parser/flow_line.rb +0 -207
- data/lib/origen/tester/ultraflex/parser/flows.rb +0 -23
- data/lib/origen/tester/ultraflex/parser/pattern_set.rb +0 -94
- data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +0 -33
- data/lib/origen/tester/ultraflex/parser/test_instance.rb +0 -262
- data/lib/origen/tester/ultraflex/parser/test_instances.rb +0 -26
- data/lib/origen/tester/ultraflex/parser/timeset.rb +0 -15
- data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
- data/lib/origen/tester/ultraflex/ultraflex.rb +0 -759
- data/lib/origen/tester/v93k/generator.rb +0 -80
- data/lib/origen/tester/v93k/generator/flow.rb +0 -63
- data/lib/origen/tester/v93k/generator/flow_node.rb +0 -17
- data/lib/origen/tester/v93k/generator/flow_node/print.rb +0 -10
- data/lib/origen/tester/v93k/generator/pattern.rb +0 -16
- data/lib/origen/tester/v93k/generator/pattern_master.rb +0 -54
- data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +0 -6
- data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +0 -11
- data/lib/origen/tester/v93k/generator/templates/template.flow.erb +0 -121
- data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +0 -9
- data/lib/origen/tester/v93k/generator/test_function.rb +0 -103
- data/lib/origen/tester/v93k/generator/test_functions.rb +0 -79
- data/lib/origen/tester/v93k/generator/test_method.rb +0 -46
- data/lib/origen/tester/v93k/generator/test_methods.rb +0 -75
- data/lib/origen/tester/v93k/generator/test_suite.rb +0 -54
- data/lib/origen/tester/v93k/generator/test_suites.rb +0 -65
- data/lib/origen/tester/v93k/v93k.rb +0 -420
- data/lib/origen/tester/vector.rb +0 -86
- data/lib/origen/tester/vector_generator.rb +0 -637
- data/lib/origen/tester/vector_pipeline.rb +0 -150
- data/lib/origen/utility/design_sync.rb +0 -494
- data/lib/origen/version_checker.rb +0 -117
@@ -1,41 +0,0 @@
|
|
1
|
-
module Origen
|
2
|
-
module Tester
|
3
|
-
class J750
|
4
|
-
module Generator
|
5
|
-
class Patgroups
|
6
|
-
include Origen::Tester::Generator
|
7
|
-
|
8
|
-
TEMPLATE = "#{Origen.top}/lib/origen/tester/j750/generator/templates/patgroups.txt.erb"
|
9
|
-
OUTPUT_POSTFIX = 'patgroups'
|
10
|
-
|
11
|
-
def add(name, options = {})
|
12
|
-
p = Patgroup.new(name, options)
|
13
|
-
collection << p
|
14
|
-
p
|
15
|
-
end
|
16
|
-
|
17
|
-
def finalize(_options = {})
|
18
|
-
uniq!
|
19
|
-
sort!
|
20
|
-
end
|
21
|
-
|
22
|
-
# Present the patgroups in the final sheet in alphabetical order
|
23
|
-
def sort!
|
24
|
-
collection.sort_by!(&:name)
|
25
|
-
end
|
26
|
-
|
27
|
-
# Removes all duplicate patgroups
|
28
|
-
def uniq!
|
29
|
-
uniques = []
|
30
|
-
collection.each do |patgroup|
|
31
|
-
unless uniques.any? { |p| p == patgroup }
|
32
|
-
uniques << patgroup
|
33
|
-
end
|
34
|
-
end
|
35
|
-
self.collection = uniques
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,111 +0,0 @@
|
|
1
|
-
module Origen
|
2
|
-
module Tester
|
3
|
-
class J750
|
4
|
-
module Generator
|
5
|
-
class Patset
|
6
|
-
attr_accessor :index
|
7
|
-
|
8
|
-
class Pattern
|
9
|
-
ATTRS = %w(pattern_set file_name start_label stop_label comment)
|
10
|
-
|
11
|
-
ALIASES = {
|
12
|
-
pattern: :file_name
|
13
|
-
}
|
14
|
-
|
15
|
-
DEFAULTS = {
|
16
|
-
}
|
17
|
-
|
18
|
-
# Generate accessors for all attributes and their aliases
|
19
|
-
ATTRS.each do |attr|
|
20
|
-
attr_accessor attr.to_sym
|
21
|
-
end
|
22
|
-
|
23
|
-
ALIASES.each do |_alias, val|
|
24
|
-
define_method("#{_alias}=") do |v|
|
25
|
-
send("#{val}=", v)
|
26
|
-
end
|
27
|
-
define_method("#{_alias}") do
|
28
|
-
send(val)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def initialize(patset, attrs = {})
|
33
|
-
# Set the defaults
|
34
|
-
DEFAULTS.each do |k, v|
|
35
|
-
send("#{k}=", v)
|
36
|
-
end
|
37
|
-
# Then the values that have been supplied
|
38
|
-
self.pattern_set = patset
|
39
|
-
attrs.each do |k, v|
|
40
|
-
send("#{k}=", v)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def to_s
|
45
|
-
l = "\t"
|
46
|
-
ATTRS.each do |attr|
|
47
|
-
l += "#{send(attr)}\t"
|
48
|
-
end
|
49
|
-
"#{l}"
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# Specify multiple patterns by passing an array of attributes
|
54
|
-
# as the 2nd argument:
|
55
|
-
#
|
56
|
-
# Patset.new("mrd1_pset", :pattern => "nvm_mrd1.PAT")
|
57
|
-
#
|
58
|
-
# Patset.new("mrd1_pset", [{:pattern => "nvm_mrd1.PAT"},
|
59
|
-
# {:pattern => "nvm_global_subs.PAT, :start_label => "subr"}
|
60
|
-
# ])
|
61
|
-
def initialize(name, attrs = {})
|
62
|
-
attrs = [attrs] unless attrs.is_a? Array
|
63
|
-
attrs.each do |pattrs|
|
64
|
-
if pattrs[:pattern]
|
65
|
-
pat = Pathname.new(pattrs[:pattern].gsub('\\', '/')).basename('.*').to_s
|
66
|
-
Origen.interface.referenced_patterns << pat
|
67
|
-
end
|
68
|
-
lines << Pattern.new(name, pattrs)
|
69
|
-
end
|
70
|
-
self.name = name
|
71
|
-
end
|
72
|
-
|
73
|
-
def ==(other_patset)
|
74
|
-
self.class == other_patset.class &&
|
75
|
-
name.to_s == other_patset.name.to_s &&
|
76
|
-
sorted_pattern_files == other_patset.sorted_pattern_files
|
77
|
-
end
|
78
|
-
|
79
|
-
def name
|
80
|
-
@name
|
81
|
-
end
|
82
|
-
|
83
|
-
def name=(n)
|
84
|
-
@name = n
|
85
|
-
lines.each { |l| l.pattern_set = n }
|
86
|
-
n
|
87
|
-
end
|
88
|
-
|
89
|
-
# Returns all lines in the pattern set
|
90
|
-
def lines
|
91
|
-
@lines ||= []
|
92
|
-
end
|
93
|
-
|
94
|
-
# Returns all pattern files in the pattern set in alphabetical order
|
95
|
-
def sorted_pattern_files
|
96
|
-
@lines.map(&:file_name).sort
|
97
|
-
end
|
98
|
-
|
99
|
-
# Returns the fully formatted pattern set for insertion into a patset sheet
|
100
|
-
def to_s
|
101
|
-
l = ''
|
102
|
-
lines.each do |line|
|
103
|
-
l += "#{line}\r\n"
|
104
|
-
end
|
105
|
-
l.chomp
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module Origen
|
2
|
-
module Tester
|
3
|
-
class J750
|
4
|
-
module Generator
|
5
|
-
class Patsets
|
6
|
-
include Origen::Tester::Generator
|
7
|
-
|
8
|
-
TEMPLATE = "#{Origen.top}/lib/origen/tester/j750/generator/templates/patsets.txt.erb"
|
9
|
-
OUTPUT_POSTFIX = 'patsets'
|
10
|
-
|
11
|
-
def add(name, options = {})
|
12
|
-
p = Patset.new(name, options)
|
13
|
-
collection << p
|
14
|
-
p
|
15
|
-
end
|
16
|
-
|
17
|
-
def finalize(_options = {})
|
18
|
-
uniq!
|
19
|
-
sort!
|
20
|
-
end
|
21
|
-
|
22
|
-
# Present the patsets in the final sheet in alphabetical order
|
23
|
-
def sort!
|
24
|
-
collection.sort_by!(&:name)
|
25
|
-
end
|
26
|
-
|
27
|
-
# Removes all duplicate patsets
|
28
|
-
def uniq!
|
29
|
-
uniques = []
|
30
|
-
collection.each do |patset|
|
31
|
-
unless uniques.any? { |p| p == patset }
|
32
|
-
uniques << patset
|
33
|
-
end
|
34
|
-
end
|
35
|
-
self.collection = uniques
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,9 +0,0 @@
|
|
1
|
-
% unless @append
|
2
|
-
DFF 1.1 Flow Table
|
3
|
-
|
4
|
-
Gate Command Bin Number Sort Number Flag Group Device Debug
|
5
|
-
Label Enable Job Part Env Opcode Parameter TName TNum Pass Fail Pass Fail Result Pass Fail State Specifier Sense Condition Name Sense Condition Name Assume Sites Comment
|
6
|
-
% end
|
7
|
-
% collection.each do |test|
|
8
|
-
<%= test %>
|
9
|
-
% end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
% unless @append
|
2
|
-
DFF 1.3 Test Instances
|
3
|
-
|
4
|
-
Test Procedure DC Specs AC Specs Sheet Parameters Other Parameters
|
5
|
-
Test Name Type Name Called As Category Selector Category Selector Time Sets Edge Sets Pin Levels Overlay Arg0 Arg1 Arg2 Arg3 Arg4 Arg5 Arg6 Arg7 Arg8 Arg9 Arg10 Arg11 Arg12 Arg13 Arg14 Arg15 Arg16 Arg17 Arg18 Arg19 Arg20 Arg21 Arg22 Arg23 Arg24 Arg25 Arg26 Arg27 Arg28 Arg29 Arg30 Arg31 Arg32 Arg33 Arg34 Arg35 Arg36 Arg37 Arg38 Arg39 Arg40 Arg41 Arg42 Arg43 Arg44 Arg45 Arg46 Arg47 Arg48 Arg49 Arg50 Arg51 Arg52 Arg53 Arg54 Arg55 Arg56 Arg57 Arg58 Arg59 Arg60 Arg61 Arg62 Arg63 Arg64 Arg65 Arg66 Arg67 Arg68 Arg69 Arg70 Arg71 Arg72 Arg73 Arg74 Arg75 Arg76 Arg77 Arg78 Arg79 Comment
|
6
|
-
% end
|
7
|
-
% collection.each do |test_instance|
|
8
|
-
% if test_instance.respond_to?("each")
|
9
|
-
%# Instance group case...
|
10
|
-
% test_instance.each do |ins|
|
11
|
-
<%= ins.to_s(test_instance.name) %>
|
12
|
-
% end
|
13
|
-
% else
|
14
|
-
<%= test_instance %>
|
15
|
-
% end
|
16
|
-
% end
|
@@ -1,846 +0,0 @@
|
|
1
|
-
module Origen
|
2
|
-
module Tester
|
3
|
-
class J750
|
4
|
-
module Generator
|
5
|
-
class TestInstance
|
6
|
-
attr_accessor :type, :index, :version, :append_version
|
7
|
-
|
8
|
-
attrs = %w(
|
9
|
-
test_name proc_type proc_name proc_called_as dc_category
|
10
|
-
dc_selector ac_category ac_selector
|
11
|
-
time_sets edge_sets pin_levels overlay
|
12
|
-
)
|
13
|
-
|
14
|
-
80.times do |i|
|
15
|
-
attrs << "arg#{i}"
|
16
|
-
end
|
17
|
-
attrs << 'comment'
|
18
|
-
|
19
|
-
ATTRS = attrs
|
20
|
-
|
21
|
-
ALIASES = {
|
22
|
-
name: :test_name,
|
23
|
-
time_set: :time_sets,
|
24
|
-
timeset: :time_sets,
|
25
|
-
timesets: :time_sets,
|
26
|
-
|
27
|
-
other: {
|
28
|
-
},
|
29
|
-
|
30
|
-
empty: {
|
31
|
-
start_func: :arg0,
|
32
|
-
start_of_body_f: :arg0,
|
33
|
-
pre_pat_func: :arg1,
|
34
|
-
pre_pat_f: :arg1,
|
35
|
-
pre_test_func: :arg2,
|
36
|
-
pre_test_f: :arg2,
|
37
|
-
post_test_func: :arg3,
|
38
|
-
post_test_f: :arg3,
|
39
|
-
post_pat_func: :arg4,
|
40
|
-
post_pat_f: :arg4,
|
41
|
-
end_func: :arg5,
|
42
|
-
end_of_body_f: :arg5,
|
43
|
-
start_func_args: :arg6,
|
44
|
-
start_of_body_f_args: :arg6,
|
45
|
-
pre_pat_func_args: :arg7,
|
46
|
-
pre_pat_f_args: :arg7,
|
47
|
-
pre_test_func_args: :arg8,
|
48
|
-
pre_test_f_args: :arg8,
|
49
|
-
post_test_func_args: :arg9,
|
50
|
-
post_test_f_args: :arg9,
|
51
|
-
post_pat_func_args: :arg10,
|
52
|
-
post_pat_f_args: :arg10,
|
53
|
-
end_func_args: :arg11,
|
54
|
-
end_of_body_f_args: :arg11,
|
55
|
-
utility_pins_1: :arg12,
|
56
|
-
utility_pins_0: :arg13,
|
57
|
-
init_lo: :arg14,
|
58
|
-
start_lo: :arg14,
|
59
|
-
init_hi: :arg15,
|
60
|
-
start_hi: :arg15,
|
61
|
-
init_hiz: :arg16,
|
62
|
-
start_hiz: :arg16,
|
63
|
-
float_pins: :arg17
|
64
|
-
},
|
65
|
-
|
66
|
-
# Functional test instances
|
67
|
-
functional: {
|
68
|
-
pattern: :arg0,
|
69
|
-
patterns: :arg0,
|
70
|
-
start_func: :arg1,
|
71
|
-
start_of_body_f: :arg1,
|
72
|
-
pre_pat_func: :arg2,
|
73
|
-
pre_pat_f: :arg2,
|
74
|
-
pre_test_func: :arg3,
|
75
|
-
pre_test_f: :arg3,
|
76
|
-
post_test_func: :arg4,
|
77
|
-
post_test_f: :arg4,
|
78
|
-
post_pat_func: :arg5,
|
79
|
-
post_pat_f: :arg5,
|
80
|
-
end_func: :arg6,
|
81
|
-
end_of_body_f: :arg6,
|
82
|
-
set_pass_fail: :arg7,
|
83
|
-
init_lo: :arg8,
|
84
|
-
start_lo: :arg8,
|
85
|
-
init_hi: :arg9,
|
86
|
-
start_hi: :arg9,
|
87
|
-
init_hiz: :arg10,
|
88
|
-
start_hiz: :arg10,
|
89
|
-
float_pins: :arg11,
|
90
|
-
start_func_args: :arg13,
|
91
|
-
start_of_body_f_args: :arg13,
|
92
|
-
pre_pat_func_args: :arg14,
|
93
|
-
pre_pat_f_args: :arg14,
|
94
|
-
pre_test_func_args: :arg15,
|
95
|
-
pre_test_f_args: :arg15,
|
96
|
-
post_test_func_args: :arg16,
|
97
|
-
post_test_f_args: :arg16,
|
98
|
-
post_pat_func_args: :arg17,
|
99
|
-
post_pat_f_args: :arg17,
|
100
|
-
end_func_args: :arg18,
|
101
|
-
end_of_body_f_args: :arg18,
|
102
|
-
wait_flags: :arg21,
|
103
|
-
wait_time: :arg22,
|
104
|
-
pat_flag_func: :arg23,
|
105
|
-
pat_flag_f: :arg23,
|
106
|
-
PatFlagF: :arg23,
|
107
|
-
pat_flag_func_args: :arg24,
|
108
|
-
pat_flag_f_args: :arg24,
|
109
|
-
relay_mode: :arg25,
|
110
|
-
threading: :arg26,
|
111
|
-
match_all_sites: :arg27,
|
112
|
-
capture_mode: :arg30,
|
113
|
-
capture_what: :arg31,
|
114
|
-
capture_memory: :arg32,
|
115
|
-
capture_size: :arg33,
|
116
|
-
datalog_mode: :arg34,
|
117
|
-
data_type: :arg35
|
118
|
-
},
|
119
|
-
|
120
|
-
board_pmu: {
|
121
|
-
hsp_start: :arg0,
|
122
|
-
start_func: :arg1,
|
123
|
-
start_of_body_f: :arg1,
|
124
|
-
pre_pat_func: :arg2,
|
125
|
-
pre_pat_f: :arg2,
|
126
|
-
pre_test_func: :arg3,
|
127
|
-
pre_test_f: :arg3,
|
128
|
-
post_test_func: :arg4,
|
129
|
-
post_test_f: :arg4,
|
130
|
-
post_pat_func: :arg5,
|
131
|
-
post_pat_f: :arg5,
|
132
|
-
end_func: :arg6,
|
133
|
-
end_of_body_f: :arg6,
|
134
|
-
precond_pat: :arg7,
|
135
|
-
hold_state_pat: :arg8,
|
136
|
-
holdstate_pat: :arg8,
|
137
|
-
pattern: :arg8,
|
138
|
-
pcp_stop: :arg9,
|
139
|
-
wait_flags: :arg10,
|
140
|
-
start_lo: :arg11,
|
141
|
-
init_lo: :arg11,
|
142
|
-
start_hi: :arg12,
|
143
|
-
init_hi: :arg12,
|
144
|
-
start_hiz: :arg13,
|
145
|
-
init_hiz: :arg13,
|
146
|
-
float_pins: :arg14,
|
147
|
-
pinlist: :arg15,
|
148
|
-
pin: :arg15,
|
149
|
-
pin_list: :arg15,
|
150
|
-
measure_mode: :arg16,
|
151
|
-
irange: :arg17,
|
152
|
-
clamp: :arg18,
|
153
|
-
vrange: :arg19,
|
154
|
-
sampling_time: :arg20,
|
155
|
-
samples: :arg21,
|
156
|
-
settling_time: :arg22,
|
157
|
-
hi_lo_lim_valid: :arg23,
|
158
|
-
hi_lo_limit_valid: :arg23,
|
159
|
-
hi_limit: :arg24,
|
160
|
-
lo_limit: :arg25,
|
161
|
-
force_cond_1: :arg26,
|
162
|
-
force_cond: :arg26,
|
163
|
-
force_condition: :arg26,
|
164
|
-
force_cond_2: :arg27,
|
165
|
-
gang_pins_tested: :arg28,
|
166
|
-
relay_mode: :arg29,
|
167
|
-
wait_time_out: :arg30,
|
168
|
-
start_func_args: :arg31,
|
169
|
-
start_of_body_f_args: :arg31,
|
170
|
-
pre_pat_func_args: :arg32,
|
171
|
-
pre_pat_f_args: :arg32,
|
172
|
-
pre_test_func_args: :arg33,
|
173
|
-
pre_test_f_args: :arg33,
|
174
|
-
post_test_func_args: :arg34,
|
175
|
-
post_test_f_args: :arg34,
|
176
|
-
post_pat_func_args: :arg35,
|
177
|
-
post_pat_f_args: :arg35,
|
178
|
-
end_func_args: :arg36,
|
179
|
-
end_of_body_f_args: :arg36,
|
180
|
-
pcp_start: :arg37,
|
181
|
-
pcp_check_pg: :arg38,
|
182
|
-
hsp_stop: :arg39,
|
183
|
-
hsp_check_pg: :arg40,
|
184
|
-
resume_pat: :arg41,
|
185
|
-
utility_pins_1: :arg42,
|
186
|
-
utility_pins_0: :arg43,
|
187
|
-
pre_charge_enable: :arg44,
|
188
|
-
pre_charge: :arg45,
|
189
|
-
threading: :arg46
|
190
|
-
},
|
191
|
-
|
192
|
-
pin_pmu: {
|
193
|
-
hsp_start: :arg0,
|
194
|
-
start_func: :arg1,
|
195
|
-
start_of_body_f: :arg1,
|
196
|
-
pre_pat_func: :arg2,
|
197
|
-
pre_pat_f: :arg2,
|
198
|
-
pre_test_func: :arg3,
|
199
|
-
pre_test_f: :arg3,
|
200
|
-
post_test_func: :arg4,
|
201
|
-
post_test_f: :arg4,
|
202
|
-
post_pat_func: :arg5,
|
203
|
-
post_pat_f: :arg5,
|
204
|
-
end_func: :arg6,
|
205
|
-
end_of_body_f: :arg6,
|
206
|
-
precond_pat: :arg7,
|
207
|
-
hold_state_pat: :arg8,
|
208
|
-
holdstate_pat: :arg8,
|
209
|
-
pattern: :arg8,
|
210
|
-
pcp_stop: :arg9,
|
211
|
-
wait_flags: :arg10,
|
212
|
-
start_lo: :arg11,
|
213
|
-
init_lo: :arg11,
|
214
|
-
start_hi: :arg12,
|
215
|
-
init_hi: :arg12,
|
216
|
-
start_hiz: :arg13,
|
217
|
-
init_hiz: :arg13,
|
218
|
-
float_pins: :arg14,
|
219
|
-
pinlist: :arg15,
|
220
|
-
pin: :arg15,
|
221
|
-
pin_list: :arg15,
|
222
|
-
measure_mode: :arg16,
|
223
|
-
irange: :arg17,
|
224
|
-
settling_time: :arg18,
|
225
|
-
hi_lo_lim_valid: :arg19,
|
226
|
-
hi_lo_limit_valid: :arg19,
|
227
|
-
hi_limit: :arg20,
|
228
|
-
lo_limit: :arg21,
|
229
|
-
force_cond_1: :arg22,
|
230
|
-
force_cond: :arg22,
|
231
|
-
force_condition: :arg22,
|
232
|
-
force_cond_2: :arg23,
|
233
|
-
fload: :arg24,
|
234
|
-
relay_mode: :arg25,
|
235
|
-
wait_time_out: :arg26,
|
236
|
-
start_func_args: :arg27,
|
237
|
-
start_of_body_f_args: :arg27,
|
238
|
-
pre_pat_func_args: :arg28,
|
239
|
-
pre_pat_f_args: :arg28,
|
240
|
-
pre_test_func_args: :arg29,
|
241
|
-
pre_test_f_args: :arg29,
|
242
|
-
post_test_func_args: :arg30,
|
243
|
-
post_test_f_args: :arg30,
|
244
|
-
post_pat_func_args: :arg31,
|
245
|
-
post_pat_f_args: :arg31,
|
246
|
-
end_func_args: :arg32,
|
247
|
-
end_of_body_f_args: :arg32,
|
248
|
-
pcp_start: :arg33,
|
249
|
-
pcp_check_pg: :arg34,
|
250
|
-
hsp_stop: :arg35,
|
251
|
-
hsp_check_pg: :arg36,
|
252
|
-
sampling_time: :arg37,
|
253
|
-
samples: :arg38,
|
254
|
-
resume_pat: :arg39,
|
255
|
-
vcl: :arg40,
|
256
|
-
vch: :arg41,
|
257
|
-
utility_pins_1: :arg42,
|
258
|
-
utility_pins_0: :arg43,
|
259
|
-
pre_charge_enable: :arg44,
|
260
|
-
pre_charge: :arg45,
|
261
|
-
threading: :arg46
|
262
|
-
},
|
263
|
-
|
264
|
-
apmu_powersupply: {
|
265
|
-
precond_pat: :arg0,
|
266
|
-
pre_cond_pat: :arg0,
|
267
|
-
start_func: :arg1,
|
268
|
-
start_of_body_f: :arg1,
|
269
|
-
pre_pat_func: :arg2,
|
270
|
-
pre_pat_f: :arg2,
|
271
|
-
pre_test_func: :arg3,
|
272
|
-
pre_test_f: :arg3,
|
273
|
-
post_test_func: :arg4,
|
274
|
-
post_test_f: :arg4,
|
275
|
-
post_pat_func: :arg5,
|
276
|
-
post_pat_f: :arg5,
|
277
|
-
end_func: :arg6,
|
278
|
-
end_of_body_f: :arg6,
|
279
|
-
hold_state_pat: :arg7,
|
280
|
-
holdstate_pat: :arg7,
|
281
|
-
wait_flags: :arg8,
|
282
|
-
wait_time_out: :arg9,
|
283
|
-
start_lo: :arg10,
|
284
|
-
start_init_lo: :arg10,
|
285
|
-
init_lo: :arg10,
|
286
|
-
start_hi: :arg11,
|
287
|
-
start_init_hi: :arg11,
|
288
|
-
init_hi: :arg11,
|
289
|
-
start_hiz: :arg12,
|
290
|
-
start_init_hiz: :arg12,
|
291
|
-
init_hiz: :arg12,
|
292
|
-
float_pins: :arg13,
|
293
|
-
irange: :arg14,
|
294
|
-
sampling_time: :arg15,
|
295
|
-
samples: :arg16,
|
296
|
-
settling_time: :arg17,
|
297
|
-
hi_lo_lim_valid: :arg18,
|
298
|
-
hi_lo_limit_valid: :arg18,
|
299
|
-
hi_limit: :arg19,
|
300
|
-
lo_limit: :arg20,
|
301
|
-
force_cond_1: :arg21,
|
302
|
-
force_cond: :arg21,
|
303
|
-
force_condition: :arg21,
|
304
|
-
force_condition_1: :arg21,
|
305
|
-
force_cond_2: :arg22,
|
306
|
-
force_condition_2: :arg22,
|
307
|
-
power_pins: :arg23,
|
308
|
-
pins: :arg23,
|
309
|
-
pin: :arg23,
|
310
|
-
force_source: :arg24,
|
311
|
-
pcp_start: :arg25,
|
312
|
-
pcp_stop: :arg26,
|
313
|
-
start_func_args: :arg27,
|
314
|
-
start_of_body_f_args: :arg27,
|
315
|
-
pre_pat_func_args: :arg28,
|
316
|
-
pre_pat_f_args: :arg28,
|
317
|
-
pre_test_func_args: :arg29,
|
318
|
-
pre_test_f_args: :arg29,
|
319
|
-
post_test_func_args: :arg30,
|
320
|
-
post_test_f_args: :arg30,
|
321
|
-
post_pat_func_args: :arg31,
|
322
|
-
post_pat_f_args: :arg31,
|
323
|
-
end_func_args: :arg32,
|
324
|
-
end_of_body_f_args: :arg32,
|
325
|
-
hsp_start: :arg33,
|
326
|
-
hsp_stop: :arg34,
|
327
|
-
pcp_check_pg: :arg35,
|
328
|
-
clamp: :arg36,
|
329
|
-
hsp_check_pg: :arg37,
|
330
|
-
resume_pat: :arg38,
|
331
|
-
relay_mode: :arg39,
|
332
|
-
utility_pins_1: :arg40,
|
333
|
-
utility_pins_0: :arg41,
|
334
|
-
test_control: :arg42,
|
335
|
-
serialize_meas: :arg43,
|
336
|
-
serialize_meas_func: :arg44,
|
337
|
-
serialize_meas_f: :arg44,
|
338
|
-
serialize_meas_func_args: :arg45,
|
339
|
-
serialize_meas_f_args: :arg45
|
340
|
-
},
|
341
|
-
|
342
|
-
mto_memory: {
|
343
|
-
patterns: :arg0,
|
344
|
-
pattern: :arg0,
|
345
|
-
start_func: :arg1,
|
346
|
-
start_of_body_f: :arg1,
|
347
|
-
pre_pat_func: :arg2,
|
348
|
-
pre_pat_f: :arg2,
|
349
|
-
pre_test_func: :arg3,
|
350
|
-
pre_test_f: :arg3,
|
351
|
-
post_test_func: :arg4,
|
352
|
-
post_test_f: :arg4,
|
353
|
-
post_pat_func: :arg5,
|
354
|
-
post_pat_f: :arg5,
|
355
|
-
end_of_body_func: :arg6,
|
356
|
-
end_of_body_f: :arg6,
|
357
|
-
set_pass_fail: :arg7,
|
358
|
-
init_lo: :arg8,
|
359
|
-
start_lo: :arg8,
|
360
|
-
init_hi: :arg9,
|
361
|
-
start_hi: :arg9,
|
362
|
-
init_hiz: :arg10,
|
363
|
-
start_hiz: :arg10,
|
364
|
-
float_pins: :arg11,
|
365
|
-
start_of_body_func_args: :arg12,
|
366
|
-
start_of_body_f_args: :arg12,
|
367
|
-
pre_pat_func_args: :arg13,
|
368
|
-
pre_pat_f_args: :arg13,
|
369
|
-
pre_test_func_args: :arg14,
|
370
|
-
pre_test_f_args: :arg14,
|
371
|
-
post_test_func_args: :arg15,
|
372
|
-
post_test_f_args: :arg15,
|
373
|
-
post_pat_func_args: :arg16,
|
374
|
-
post_pat_f_args: :arg16,
|
375
|
-
end_of_body_func_args: :arg17,
|
376
|
-
end_of_body_f_args: :arg17,
|
377
|
-
utility_pins_1: :arg18,
|
378
|
-
utility_pins_0: :arg19,
|
379
|
-
wait_flags: :arg20,
|
380
|
-
wait_time_out: :arg21,
|
381
|
-
PatFlagF: :arg22,
|
382
|
-
pat_flag_f: :arg22,
|
383
|
-
pat_flag_func_args: :arg23,
|
384
|
-
pat_flag_f_args: :arg23,
|
385
|
-
relay_mode: :arg24,
|
386
|
-
x_enable_mask: :arg29,
|
387
|
-
x_shift_direction: :arg30,
|
388
|
-
x_shift_input: :arg31,
|
389
|
-
y_enable_mask: :arg36,
|
390
|
-
y_shift_direction: :arg37,
|
391
|
-
y_shift_input: :arg38,
|
392
|
-
dga: :arg39,
|
393
|
-
dgb: :arg40,
|
394
|
-
dgc: :arg41,
|
395
|
-
dgd: :arg42,
|
396
|
-
dg_enable_mask: :arg43,
|
397
|
-
dg_shift_direction: :arg44,
|
398
|
-
dg_shift_input: :arg45,
|
399
|
-
x_coincidence_enable_mask: :arg46,
|
400
|
-
y_coincidence_enable_mask: :arg47,
|
401
|
-
two_bit_dg_setup: :arg48,
|
402
|
-
x_scramble_algorithm: :arg49,
|
403
|
-
y_scramble_algorithm: :arg50,
|
404
|
-
topo_inversion_algorithm: :arg51,
|
405
|
-
utility_counter_a: :arg52,
|
406
|
-
utility_counter_b: :arg53,
|
407
|
-
utility_counter_c: :arg54,
|
408
|
-
dut_data_source: :arg55,
|
409
|
-
scramble_addr: :arg56,
|
410
|
-
speed_mode: :arg57,
|
411
|
-
resource_map: :arg58,
|
412
|
-
receive_data: :arg59,
|
413
|
-
data_to_capture: :arg60,
|
414
|
-
capture_marker: :arg61,
|
415
|
-
enable_wrapping: :arg62,
|
416
|
-
capture_scrambled_address: :arg63,
|
417
|
-
mapmem_0_input_set: :arg64,
|
418
|
-
mapmem_1_input_set: :arg65,
|
419
|
-
threading: :arg69,
|
420
|
-
match_all_sites: :arg70
|
421
|
-
}
|
422
|
-
}
|
423
|
-
|
424
|
-
# HPT Support for Defaults
|
425
|
-
if Origen::Tester::J750.hpt_mode
|
426
|
-
template_type = 'Template'
|
427
|
-
template_name_prefix = 'HPT.xla!HPT_'
|
428
|
-
else
|
429
|
-
template_type = 'IG-XL Template'
|
430
|
-
template_name_prefix = ''
|
431
|
-
end
|
432
|
-
|
433
|
-
DEFAULTS = {
|
434
|
-
empty: {
|
435
|
-
proc_type: template_type,
|
436
|
-
proc_name: "#{template_name_prefix}Empty_T",
|
437
|
-
proc_called_as: 'Excel Macro'
|
438
|
-
},
|
439
|
-
other: {
|
440
|
-
proc_type: 'Other',
|
441
|
-
proc_called_as: 'Excel Macro'
|
442
|
-
},
|
443
|
-
functional: {
|
444
|
-
proc_type: template_type,
|
445
|
-
proc_name: "#{template_name_prefix}Functional_T",
|
446
|
-
proc_called_as: 'VB DLL',
|
447
|
-
set_pass_fail: 1,
|
448
|
-
wait_flags: 'XXXX',
|
449
|
-
wait_time: 30,
|
450
|
-
relay_mode: 1,
|
451
|
-
threading: 0,
|
452
|
-
match_all_sites: 0,
|
453
|
-
capture_mode: 0,
|
454
|
-
capture_what: 0,
|
455
|
-
capture_memory: 0,
|
456
|
-
capture_size: 256,
|
457
|
-
datalog_mode: 0,
|
458
|
-
data_type: 0
|
459
|
-
},
|
460
|
-
board_pmu: {
|
461
|
-
proc_type: template_type,
|
462
|
-
proc_name: "#{template_name_prefix}BoardPmu_T",
|
463
|
-
proc_called_as: 'VB DLL',
|
464
|
-
wait_flags: 'XXXX',
|
465
|
-
measure_mode: 1,
|
466
|
-
irange: 5,
|
467
|
-
vrange: 3,
|
468
|
-
settling_time: 0,
|
469
|
-
hi_lo_lim_valid: 3,
|
470
|
-
gang_pins_tested: 0,
|
471
|
-
relay_mode: 0,
|
472
|
-
wait_time_out: 30,
|
473
|
-
pcp_check_pg: 1,
|
474
|
-
hsp_check_pg: 1,
|
475
|
-
resume_pat: 0,
|
476
|
-
threading: 0
|
477
|
-
},
|
478
|
-
pin_pmu: {
|
479
|
-
proc_type: template_type,
|
480
|
-
proc_name: "#{template_name_prefix}PinPmu_T",
|
481
|
-
proc_called_as: 'VB DLL',
|
482
|
-
wait_flags: 'XXXX',
|
483
|
-
measure_mode: 1,
|
484
|
-
irange: 2,
|
485
|
-
settling_time: 0,
|
486
|
-
hi_lo_lim_valid: 3,
|
487
|
-
fload: 0,
|
488
|
-
relay_mode: 0,
|
489
|
-
wait_time_out: 30,
|
490
|
-
pcp_check_pg: 1,
|
491
|
-
hsp_check_pg: 1,
|
492
|
-
resume_pat: 0,
|
493
|
-
threading: 0
|
494
|
-
},
|
495
|
-
apmu_powersupply: {
|
496
|
-
proc_type: template_type,
|
497
|
-
proc_name: "#{template_name_prefix}ApmuPowerSupply_T",
|
498
|
-
proc_called_as: 'VB DLL',
|
499
|
-
wait_flags: 'XXXX',
|
500
|
-
irange: 1,
|
501
|
-
settling_time: 0,
|
502
|
-
hi_lo_lim_valid: 3,
|
503
|
-
relay_mode: 0,
|
504
|
-
wait_time_out: 30,
|
505
|
-
pcp_check_pg: 1,
|
506
|
-
hsp_check_pg: 1,
|
507
|
-
resume_pat: 0,
|
508
|
-
test_control: 0
|
509
|
-
},
|
510
|
-
mto_memory: {
|
511
|
-
proc_type: template_type,
|
512
|
-
proc_name: "#{template_name_prefix}MtoMemory_T",
|
513
|
-
proc_called_as: 'VB DLL',
|
514
|
-
set_pass_fail: 1,
|
515
|
-
wait_flags: 'XXXX',
|
516
|
-
wait_time: 30,
|
517
|
-
relay_mode: 1,
|
518
|
-
threading: 0,
|
519
|
-
match_all_sites: 0,
|
520
|
-
dut_data_source: 0,
|
521
|
-
scramble_addr: 0,
|
522
|
-
speed_mode: 0,
|
523
|
-
resource_map: 'MAP_1M_2BIT',
|
524
|
-
receive_data: 0,
|
525
|
-
data_to_capture: 1,
|
526
|
-
capture_marker: 1,
|
527
|
-
enable_wrapping: 0,
|
528
|
-
capture_scrambled_address: 0,
|
529
|
-
mapmem_0_input_set: 'Map_By16',
|
530
|
-
mapmem_1_input_set: 'Map_By16',
|
531
|
-
x_scramble_algorithm: 'X_NO_SCRAMBLE',
|
532
|
-
y_scramble_algorithm: 'Y_NO_SCRAMBLE',
|
533
|
-
topo_inversion_algorithm: 'NO_TOPO',
|
534
|
-
x_shift_direction: 0,
|
535
|
-
x_shift_input: 0,
|
536
|
-
y_shift_direction: 0,
|
537
|
-
y_shift_input: 0,
|
538
|
-
x_coincidence_enable_mask: 0,
|
539
|
-
y_coincidence_enable_mask: 0,
|
540
|
-
dg_shift_direction: 0,
|
541
|
-
dg_shift_input: 0
|
542
|
-
}
|
543
|
-
}
|
544
|
-
|
545
|
-
# Generate accessors for all attributes and their aliases
|
546
|
-
ATTRS.each do |attr|
|
547
|
-
attr_accessor attr.to_sym
|
548
|
-
end
|
549
|
-
|
550
|
-
# Define the common aliases now, the instance type specific ones will
|
551
|
-
# be created when the instance type is known
|
552
|
-
ALIASES.each do |alias_, val|
|
553
|
-
if val.is_a? Hash
|
554
|
-
else
|
555
|
-
define_method("#{alias_}=") do |v|
|
556
|
-
send("#{val}=", v)
|
557
|
-
end
|
558
|
-
define_method("#{alias_}") do
|
559
|
-
send(val)
|
560
|
-
end
|
561
|
-
end
|
562
|
-
end
|
563
|
-
|
564
|
-
def initialize(name, type, attrs = {})
|
565
|
-
@type = type
|
566
|
-
@append_version = true
|
567
|
-
self.name = name
|
568
|
-
# Build the type specific accessors (aliases)
|
569
|
-
ALIASES[@type.to_sym].each do |alias_, val|
|
570
|
-
define_singleton_method("#{alias_}=") do |v|
|
571
|
-
send("#{val}=", v) if self.respond_to?("#{val}=", v)
|
572
|
-
end
|
573
|
-
define_singleton_method("#{alias_}") do
|
574
|
-
send(val) if self.respond_to?(val)
|
575
|
-
end
|
576
|
-
end
|
577
|
-
# Set the defaults
|
578
|
-
DEFAULTS[@type.to_sym].each do |k, v|
|
579
|
-
send("#{k}=", v) if self.respond_to?("#{k}=", v)
|
580
|
-
end
|
581
|
-
# Then the values that have been supplied
|
582
|
-
attrs.each do |k, v|
|
583
|
-
send("#{k}=", v) if self.respond_to?("#{k}=", v)
|
584
|
-
end
|
585
|
-
end
|
586
|
-
|
587
|
-
def ==(other_instance)
|
588
|
-
self.class == other_instance.class &&
|
589
|
-
unversioned_name.to_s == other_instance.unversioned_name.to_s &&
|
590
|
-
ATTRS.all? do |attr|
|
591
|
-
# Exclude test name, already examined above and don't want to include
|
592
|
-
# the version in the comparison
|
593
|
-
if attr == 'test_name'
|
594
|
-
true
|
595
|
-
else
|
596
|
-
send(attr) == other_instance.send(attr)
|
597
|
-
end
|
598
|
-
end
|
599
|
-
end
|
600
|
-
|
601
|
-
def self.new_empty(name, attrs = {})
|
602
|
-
new(name, :empty, attrs)
|
603
|
-
end
|
604
|
-
|
605
|
-
def self.new_functional(name, attrs = {})
|
606
|
-
new(name, :functional, attrs)
|
607
|
-
end
|
608
|
-
|
609
|
-
def self.new_board_pmu(name, attrs = {})
|
610
|
-
new(name, :board_pmu, attrs)
|
611
|
-
end
|
612
|
-
|
613
|
-
def self.new_pin_pmu(name, attrs = {})
|
614
|
-
new(name, :pin_pmu, attrs)
|
615
|
-
end
|
616
|
-
|
617
|
-
def self.new_apmu_powersupply(name, attrs = {})
|
618
|
-
new(name, :apmu_powersupply, attrs)
|
619
|
-
end
|
620
|
-
|
621
|
-
def self.new_mto_memory(name, attrs = {})
|
622
|
-
new(name, :mto_memory, attrs)
|
623
|
-
end
|
624
|
-
|
625
|
-
# Returns the fully formatted test instance for insertion into an instance sheet
|
626
|
-
def to_s(override_name = nil)
|
627
|
-
l = "\t"
|
628
|
-
ATTRS.each do |attr|
|
629
|
-
if attr == 'test_name' && override_name
|
630
|
-
l += "#{override_name}\t"
|
631
|
-
else
|
632
|
-
l += "#{send(attr)}\t"
|
633
|
-
end
|
634
|
-
end
|
635
|
-
"#{l}"
|
636
|
-
end
|
637
|
-
|
638
|
-
def name
|
639
|
-
if version && @append_version
|
640
|
-
"#{@test_name}_v#{version}"
|
641
|
-
else
|
642
|
-
@test_name.to_s
|
643
|
-
end
|
644
|
-
end
|
645
|
-
alias_method :test_name, :name
|
646
|
-
|
647
|
-
def unversioned_name
|
648
|
-
@test_name.to_s
|
649
|
-
end
|
650
|
-
|
651
|
-
# Set the cpu wait flags for the given test instance
|
652
|
-
# instance.set_wait_flags(:a)
|
653
|
-
# instance.set_wait_flags(:a, :c)
|
654
|
-
def set_wait_flags(*flags)
|
655
|
-
a = (flags.include?(:a) || flags.include?(:a)) ? '1' : 'X'
|
656
|
-
b = (flags.include?(:b) || flags.include?(:b)) ? '1' : 'X'
|
657
|
-
c = (flags.include?(:c) || flags.include?(:c)) ? '1' : 'X'
|
658
|
-
d = (flags.include?(:d) || flags.include?(:d)) ? '1' : 'X'
|
659
|
-
self.wait_flags = d + c + b + a
|
660
|
-
self
|
661
|
-
end
|
662
|
-
|
663
|
-
# Set and enable the pre-charge voltage of a parametric test instance.
|
664
|
-
def set_pre_charge(val)
|
665
|
-
if val
|
666
|
-
self.pre_charge_enable = 1
|
667
|
-
self.pre_charge = val
|
668
|
-
else
|
669
|
-
self.pre_charge_enable = 0
|
670
|
-
end
|
671
|
-
self
|
672
|
-
end
|
673
|
-
alias_method :set_precharge, :set_pre_charge
|
674
|
-
|
675
|
-
# Set and enable the hi limit of a parametric test instance, passing in
|
676
|
-
# nil or false as the lim parameter will disable the hi limit.
|
677
|
-
def set_hi_limit(lim)
|
678
|
-
if lim
|
679
|
-
self.hi_lo_limit_valid = hi_lo_limit_valid | 2
|
680
|
-
self.hi_limit = lim
|
681
|
-
else
|
682
|
-
self.hi_lo_limit_valid = hi_lo_limit_valid & 1
|
683
|
-
end
|
684
|
-
self
|
685
|
-
end
|
686
|
-
|
687
|
-
# Set and enable the hi limit of a parametric test instance, passing in
|
688
|
-
# nil or false as the lim parameter will disable the hi limit.
|
689
|
-
def set_lo_limit(lim)
|
690
|
-
if lim
|
691
|
-
self.hi_lo_limit_valid = hi_lo_limit_valid | 1
|
692
|
-
self.lo_limit = lim
|
693
|
-
else
|
694
|
-
self.hi_lo_limit_valid = hi_lo_limit_valid & 2
|
695
|
-
end
|
696
|
-
self
|
697
|
-
end
|
698
|
-
|
699
|
-
# Set the current range of the test instance, the following are valid:
|
700
|
-
#
|
701
|
-
# Board PMU
|
702
|
-
# * 2uA
|
703
|
-
# * 20uA
|
704
|
-
# * 200uA
|
705
|
-
# * 2mA
|
706
|
-
# * 20mA
|
707
|
-
# * 200mA
|
708
|
-
# * :smart
|
709
|
-
#
|
710
|
-
# Pin PMU
|
711
|
-
# * 200nA
|
712
|
-
# * 2uA
|
713
|
-
# * 20uA
|
714
|
-
# * 200uA
|
715
|
-
# * 2mA
|
716
|
-
# * :auto
|
717
|
-
# * :smart
|
718
|
-
#
|
719
|
-
# Examples
|
720
|
-
# instance.set_irange(:smart)
|
721
|
-
# instance.set_irange(:ua => 2)
|
722
|
-
# instance.set_irange(2.uA) # Same as above
|
723
|
-
# instance.set_irange(:ma => 200)
|
724
|
-
# instance.set_irange(0.2) # Same as above
|
725
|
-
# instance.set_irange(:a => 0.2) # Same as above
|
726
|
-
def set_irange(r = nil, options = {})
|
727
|
-
r, options = nil, r if r.is_a?(Hash)
|
728
|
-
unless r
|
729
|
-
# rubocop:disable AssignmentInCondition
|
730
|
-
if r = options.delete(:na) || options.delete(:nA)
|
731
|
-
r = r / 1_000_000_000
|
732
|
-
elsif r = options.delete(:ua) || options.delete(:uA)
|
733
|
-
r = r / 1_000_000.0
|
734
|
-
elsif r = options.delete(:ma) || options.delete(:mA)
|
735
|
-
r = r / 1000.0
|
736
|
-
elsif r = options.delete(:a) || options.delete(:A)
|
737
|
-
else
|
738
|
-
fail "Can't determine requested irange!"
|
739
|
-
end
|
740
|
-
# rubocop:enable AssignmentInCondition
|
741
|
-
end
|
742
|
-
|
743
|
-
if @type == :board_pmu
|
744
|
-
if r == :smart
|
745
|
-
self.irange = 6
|
746
|
-
else
|
747
|
-
self.irange = case
|
748
|
-
when r > 0.02 then 5
|
749
|
-
when r > 0.002 then 4
|
750
|
-
when r > 0.0002 then 3
|
751
|
-
when r > 0.00002 then 2
|
752
|
-
when r > 0.000002 then 1
|
753
|
-
else 0
|
754
|
-
end
|
755
|
-
end
|
756
|
-
|
757
|
-
else # :pin_pmu
|
758
|
-
if r == :smart
|
759
|
-
self.irange = 5
|
760
|
-
elsif r == :auto
|
761
|
-
fail 'Auto range not available in FIMV mode!' if self.fimv?
|
762
|
-
self.irange = 6
|
763
|
-
else
|
764
|
-
if fimv?
|
765
|
-
self.irange = case
|
766
|
-
when r > 0.0002 then 2
|
767
|
-
else 4
|
768
|
-
end
|
769
|
-
else
|
770
|
-
self.irange = case
|
771
|
-
when r > 0.0002 then 2
|
772
|
-
when r > 0.00002 then 4
|
773
|
-
when r > 0.000002 then 0
|
774
|
-
when r > 0.0000002 then 1
|
775
|
-
else 3
|
776
|
-
end
|
777
|
-
end
|
778
|
-
end
|
779
|
-
end
|
780
|
-
|
781
|
-
self
|
782
|
-
end
|
783
|
-
|
784
|
-
# Set the voltage range of the test instance, the following are valid:
|
785
|
-
#
|
786
|
-
# Board PMU
|
787
|
-
# * 2V
|
788
|
-
# * 5V
|
789
|
-
# * 10V
|
790
|
-
# * 24V
|
791
|
-
# * :auto
|
792
|
-
# * :smart
|
793
|
-
#
|
794
|
-
# Examples
|
795
|
-
# instance.set_vrange(:auto)
|
796
|
-
# instance.set_vrange(:v => 5)
|
797
|
-
# instance.set_vrange(5) # Same as above
|
798
|
-
def set_vrange(r = nil, options = {})
|
799
|
-
r, options = nil, r if r.is_a?(Hash)
|
800
|
-
if r == :smart
|
801
|
-
self.vrange = 4
|
802
|
-
elsif r == :auto
|
803
|
-
self.vrange = 5
|
804
|
-
elsif !r
|
805
|
-
r = options.delete(:v) || options.delete(:V)
|
806
|
-
if r
|
807
|
-
else
|
808
|
-
fail "Can't determine requested vrange!"
|
809
|
-
end
|
810
|
-
end
|
811
|
-
self.vrange = case
|
812
|
-
when r > 10 then 3
|
813
|
-
when r > 5 then 2
|
814
|
-
when r > 2 then 1
|
815
|
-
else 0
|
816
|
-
end
|
817
|
-
self
|
818
|
-
end
|
819
|
-
|
820
|
-
# Set the meaure mode of a parametric test instance, either:
|
821
|
-
# * :voltage / :fimv
|
822
|
-
# * :current / :fvmi
|
823
|
-
def set_measure_mode(mode)
|
824
|
-
if mode == :current || mode == :fvmi
|
825
|
-
self.measure_mode = 0
|
826
|
-
elsif mode == :voltage || mode == :fimv
|
827
|
-
self.measure_mode = 1
|
828
|
-
else
|
829
|
-
fail "Unknown measure mode: #{mode}"
|
830
|
-
end
|
831
|
-
end
|
832
|
-
|
833
|
-
# Returns true if instance configured for force current, measure voltage
|
834
|
-
def fimv?
|
835
|
-
measure_mode == 1
|
836
|
-
end
|
837
|
-
|
838
|
-
# Returns true if instance configured for force voltage, measure current
|
839
|
-
def fvmi?
|
840
|
-
measure_mode == 0
|
841
|
-
end
|
842
|
-
end
|
843
|
-
end
|
844
|
-
end
|
845
|
-
end
|
846
|
-
end
|