origen 0.2.6 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/bin/origen +3 -1
  3. data/config/boot.rb +1 -7
  4. data/config/commands.rb +0 -1
  5. data/config/version.rb +2 -2
  6. data/lib/c99/{j750_interface.rb → ate_interface.rb} +3 -11
  7. data/lib/c99/doc_interface.rb +1 -1
  8. data/lib/origen.rb +9 -30
  9. data/lib/origen/application.rb +10 -8
  10. data/lib/origen/application/configuration.rb +13 -26
  11. data/lib/origen/application/plugins.rb +122 -0
  12. data/lib/origen/application/plugins_manager.rb +16 -254
  13. data/lib/origen/application/release.rb +2 -2
  14. data/lib/origen/application/runner.rb +2 -4
  15. data/lib/origen/chips.rb +0 -0
  16. data/lib/origen/chips/chip.rb +0 -0
  17. data/lib/origen/chips/design_entry.rb +0 -0
  18. data/lib/origen/chips/doc_entry.rb +0 -0
  19. data/lib/origen/chips/note.rb +0 -0
  20. data/lib/origen/commands.rb +4 -44
  21. data/lib/origen/commands/compile.rb +1 -2
  22. data/lib/origen/commands/generate.rb +1 -1
  23. data/lib/origen/commands/interactive.rb +1 -2
  24. data/lib/origen/commands/plugin.rb +49 -56
  25. data/lib/origen/commands/program.rb +1 -1
  26. data/lib/origen/commands/rc.rb +2 -2
  27. data/lib/origen/commands/version.rb +2 -17
  28. data/lib/origen/commands_global.rb +3 -0
  29. data/lib/origen/file_handler.rb +10 -10
  30. data/lib/origen/generator.rb +1 -1
  31. data/lib/origen/generator/job.rb +1 -1
  32. data/lib/origen/generator/pattern.rb +2 -2
  33. data/lib/origen/generator/pattern_finder.rb +10 -9
  34. data/lib/origen/pins/pin.rb +0 -0
  35. data/lib/origen/regression_manager.rb +0 -0
  36. data/lib/origen/remote_manager.rb +2 -8
  37. data/lib/origen/revision_control/design_sync.rb +0 -0
  38. data/lib/origen/revision_control/git.rb +0 -0
  39. data/lib/origen/specs.rb +0 -0
  40. data/lib/origen/specs/checkers.rb +0 -0
  41. data/lib/origen/specs/creation_info.rb +0 -0
  42. data/lib/origen/specs/exhibit.rb +0 -0
  43. data/lib/origen/specs/spec.rb +0 -0
  44. data/lib/origen/utility.rb +0 -1
  45. data/lib/origen/utility/diff.rb +0 -0
  46. metadata +42 -119
  47. data/lib/origen/import_manager.rb +0 -596
  48. data/lib/origen/nvm.rb +0 -6
  49. data/lib/origen/nvm/block_array.rb +0 -72
  50. data/lib/origen/tester.rb +0 -56
  51. data/lib/origen/tester/api.rb +0 -277
  52. data/lib/origen/tester/bdm/bdm.rb +0 -25
  53. data/lib/origen/tester/doc/doc.rb +0 -226
  54. data/lib/origen/tester/doc/generator.rb +0 -126
  55. data/lib/origen/tester/doc/generator/flow.rb +0 -71
  56. data/lib/origen/tester/doc/generator/flow_line.rb +0 -203
  57. data/lib/origen/tester/doc/generator/test.rb +0 -68
  58. data/lib/origen/tester/doc/generator/test_group.rb +0 -66
  59. data/lib/origen/tester/doc/generator/tests.rb +0 -47
  60. data/lib/origen/tester/doc/model.rb +0 -162
  61. data/lib/origen/tester/generator.rb +0 -271
  62. data/lib/origen/tester/generator/flow_control_api.rb +0 -606
  63. data/lib/origen/tester/generator/identity_map.rb +0 -25
  64. data/lib/origen/tester/generator/placeholder.rb +0 -13
  65. data/lib/origen/tester/generator/test_numberer.rb +0 -25
  66. data/lib/origen/tester/interface.rb +0 -154
  67. data/lib/origen/tester/j750/files.rb +0 -45
  68. data/lib/origen/tester/j750/generator.rb +0 -203
  69. data/lib/origen/tester/j750/generator/flow.rb +0 -123
  70. data/lib/origen/tester/j750/generator/flow_line.rb +0 -288
  71. data/lib/origen/tester/j750/generator/patgroup.rb +0 -111
  72. data/lib/origen/tester/j750/generator/patgroups.rb +0 -41
  73. data/lib/origen/tester/j750/generator/patset.rb +0 -111
  74. data/lib/origen/tester/j750/generator/patsets.rb +0 -41
  75. data/lib/origen/tester/j750/generator/templates/flow.txt.erb +0 -9
  76. data/lib/origen/tester/j750/generator/templates/instances.txt.erb +0 -16
  77. data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +0 -8
  78. data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +0 -10
  79. data/lib/origen/tester/j750/generator/test_instance.rb +0 -846
  80. data/lib/origen/tester/j750/generator/test_instance_group.rb +0 -60
  81. data/lib/origen/tester/j750/generator/test_instances.rb +0 -182
  82. data/lib/origen/tester/j750/j750.rb +0 -845
  83. data/lib/origen/tester/j750/j750_hpt.rb +0 -35
  84. data/lib/origen/tester/j750/parser.rb +0 -104
  85. data/lib/origen/tester/j750/parser/ac_spec.rb +0 -11
  86. data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
  87. data/lib/origen/tester/j750/parser/dc_spec.rb +0 -36
  88. data/lib/origen/tester/j750/parser/dc_specs.rb +0 -50
  89. data/lib/origen/tester/j750/parser/descriptions.rb +0 -340
  90. data/lib/origen/tester/j750/parser/flow.rb +0 -111
  91. data/lib/origen/tester/j750/parser/flow_line.rb +0 -207
  92. data/lib/origen/tester/j750/parser/flows.rb +0 -23
  93. data/lib/origen/tester/j750/parser/pattern_set.rb +0 -94
  94. data/lib/origen/tester/j750/parser/pattern_sets.rb +0 -33
  95. data/lib/origen/tester/j750/parser/test_instance.rb +0 -322
  96. data/lib/origen/tester/j750/parser/test_instances.rb +0 -26
  97. data/lib/origen/tester/j750/parser/timeset.rb +0 -15
  98. data/lib/origen/tester/j750/parser/timesets.rb +0 -0
  99. data/lib/origen/tester/jlink/jlink.rb +0 -33
  100. data/lib/origen/tester/parser.rb +0 -24
  101. data/lib/origen/tester/parser/description_lookup.rb +0 -64
  102. data/lib/origen/tester/parser/searchable_array.rb +0 -32
  103. data/lib/origen/tester/parser/searchable_hash.rb +0 -32
  104. data/lib/origen/tester/time.rb +0 -338
  105. data/lib/origen/tester/timing.rb +0 -253
  106. data/lib/origen/tester/ultraflex/files.rb +0 -45
  107. data/lib/origen/tester/ultraflex/generator.rb +0 -200
  108. data/lib/origen/tester/ultraflex/generator/flow.rb +0 -119
  109. data/lib/origen/tester/ultraflex/generator/flow_line.rb +0 -269
  110. data/lib/origen/tester/ultraflex/generator/patgroup.rb +0 -111
  111. data/lib/origen/tester/ultraflex/generator/patgroups.rb +0 -41
  112. data/lib/origen/tester/ultraflex/generator/patset.rb +0 -111
  113. data/lib/origen/tester/ultraflex/generator/patsets.rb +0 -41
  114. data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +0 -9
  115. data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +0 -16
  116. data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +0 -8
  117. data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +0 -10
  118. data/lib/origen/tester/ultraflex/generator/test_instance.rb +0 -622
  119. data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +0 -60
  120. data/lib/origen/tester/ultraflex/generator/test_instances.rb +0 -174
  121. data/lib/origen/tester/ultraflex/parser.rb +0 -104
  122. data/lib/origen/tester/ultraflex/parser/ac_spec.rb +0 -11
  123. data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
  124. data/lib/origen/tester/ultraflex/parser/dc_spec.rb +0 -36
  125. data/lib/origen/tester/ultraflex/parser/dc_specs.rb +0 -50
  126. data/lib/origen/tester/ultraflex/parser/descriptions.rb +0 -342
  127. data/lib/origen/tester/ultraflex/parser/flow.rb +0 -111
  128. data/lib/origen/tester/ultraflex/parser/flow_line.rb +0 -207
  129. data/lib/origen/tester/ultraflex/parser/flows.rb +0 -23
  130. data/lib/origen/tester/ultraflex/parser/pattern_set.rb +0 -94
  131. data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +0 -33
  132. data/lib/origen/tester/ultraflex/parser/test_instance.rb +0 -262
  133. data/lib/origen/tester/ultraflex/parser/test_instances.rb +0 -26
  134. data/lib/origen/tester/ultraflex/parser/timeset.rb +0 -15
  135. data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
  136. data/lib/origen/tester/ultraflex/ultraflex.rb +0 -759
  137. data/lib/origen/tester/v93k/generator.rb +0 -80
  138. data/lib/origen/tester/v93k/generator/flow.rb +0 -63
  139. data/lib/origen/tester/v93k/generator/flow_node.rb +0 -17
  140. data/lib/origen/tester/v93k/generator/flow_node/print.rb +0 -10
  141. data/lib/origen/tester/v93k/generator/pattern.rb +0 -16
  142. data/lib/origen/tester/v93k/generator/pattern_master.rb +0 -54
  143. data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +0 -6
  144. data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +0 -11
  145. data/lib/origen/tester/v93k/generator/templates/template.flow.erb +0 -121
  146. data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +0 -9
  147. data/lib/origen/tester/v93k/generator/test_function.rb +0 -103
  148. data/lib/origen/tester/v93k/generator/test_functions.rb +0 -79
  149. data/lib/origen/tester/v93k/generator/test_method.rb +0 -46
  150. data/lib/origen/tester/v93k/generator/test_methods.rb +0 -75
  151. data/lib/origen/tester/v93k/generator/test_suite.rb +0 -54
  152. data/lib/origen/tester/v93k/generator/test_suites.rb +0 -65
  153. data/lib/origen/tester/v93k/v93k.rb +0 -420
  154. data/lib/origen/tester/vector.rb +0 -86
  155. data/lib/origen/tester/vector_generator.rb +0 -637
  156. data/lib/origen/tester/vector_pipeline.rb +0 -150
  157. data/lib/origen/utility/design_sync.rb +0 -494
  158. 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,8 +0,0 @@
1
- % unless @append
2
- DFF 1.0 Pattern Groups
3
-
4
- Group Name Pattern File Comment
5
- % end
6
- % collection.each do |patgroup|
7
- <%= patgroup %>
8
- % end
@@ -1,10 +0,0 @@
1
- % unless @append
2
- DFF 1.1 Pattern Sets
3
-
4
- Pattern Set File/Group Name Start Label Stop Label Comment
5
- % end
6
- % collection.each do |patset|
7
- % patset.lines.each do |line|
8
- <%= line %>
9
- % end
10
- % 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