origen_testers 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. checksums.yaml +7 -0
  2. data/config/application.rb +140 -0
  3. data/config/commands.rb +73 -0
  4. data/config/development.rb +12 -0
  5. data/config/environment.rb +1 -0
  6. data/config/shared_commands.rb +47 -0
  7. data/config/users.rb +18 -0
  8. data/config/version.rb +8 -0
  9. data/lib/commands/build.rb +69 -0
  10. data/lib/origen_testers.rb +23 -0
  11. data/lib/origen_testers/api.rb +258 -0
  12. data/lib/origen_testers/basic_test_setups.rb +105 -0
  13. data/lib/origen_testers/callback_handlers.rb +58 -0
  14. data/lib/origen_testers/generator.rb +279 -0
  15. data/lib/origen_testers/generator/flow_control_api.rb +611 -0
  16. data/lib/origen_testers/generator/identity_map.rb +23 -0
  17. data/lib/origen_testers/generator/placeholder.rb +11 -0
  18. data/lib/origen_testers/generator/test_numberer.rb +23 -0
  19. data/lib/origen_testers/igxl_based_tester.rb +12 -0
  20. data/lib/origen_testers/igxl_based_tester/base.rb +641 -0
  21. data/lib/origen_testers/igxl_based_tester/base/flow.rb +171 -0
  22. data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +322 -0
  23. data/lib/origen_testers/igxl_based_tester/base/generator.rb +217 -0
  24. data/lib/origen_testers/igxl_based_tester/base/patgroup.rb +109 -0
  25. data/lib/origen_testers/igxl_based_tester/base/patgroups.rb +38 -0
  26. data/lib/origen_testers/igxl_based_tester/base/patset.rb +68 -0
  27. data/lib/origen_testers/igxl_based_tester/base/patset_pattern.rb +56 -0
  28. data/lib/origen_testers/igxl_based_tester/base/patsets.rb +38 -0
  29. data/lib/origen_testers/igxl_based_tester/base/patsubr.rb +68 -0
  30. data/lib/origen_testers/igxl_based_tester/base/patsubr_pattern.rb +56 -0
  31. data/lib/origen_testers/igxl_based_tester/base/patsubrs.rb +38 -0
  32. data/lib/origen_testers/igxl_based_tester/base/test_instance.rb +326 -0
  33. data/lib/origen_testers/igxl_based_tester/base/test_instance_group.rb +58 -0
  34. data/lib/origen_testers/igxl_based_tester/base/test_instances.rb +179 -0
  35. data/lib/origen_testers/igxl_based_tester/files.rb +43 -0
  36. data/lib/origen_testers/igxl_based_tester/j750.rb +248 -0
  37. data/lib/origen_testers/igxl_based_tester/j750/flow.rb +10 -0
  38. data/lib/origen_testers/igxl_based_tester/j750/flow_line.rb +19 -0
  39. data/lib/origen_testers/igxl_based_tester/j750/generator.rb +19 -0
  40. data/lib/origen_testers/igxl_based_tester/j750/patgroup.rb +9 -0
  41. data/lib/origen_testers/igxl_based_tester/j750/patgroups.rb +10 -0
  42. data/lib/origen_testers/igxl_based_tester/j750/patset.rb +9 -0
  43. data/lib/origen_testers/igxl_based_tester/j750/patset_pattern.rb +18 -0
  44. data/lib/origen_testers/igxl_based_tester/j750/patsets.rb +10 -0
  45. data/lib/origen_testers/igxl_based_tester/j750/patsubr.rb +9 -0
  46. data/lib/origen_testers/igxl_based_tester/j750/patsubr_pattern.rb +18 -0
  47. data/lib/origen_testers/igxl_based_tester/j750/patsubrs.rb +10 -0
  48. data/lib/origen_testers/igxl_based_tester/j750/templates/flow.txt.erb +9 -0
  49. data/lib/origen_testers/igxl_based_tester/j750/templates/instances.txt.erb +16 -0
  50. data/lib/origen_testers/igxl_based_tester/j750/templates/patgroups.txt.erb +8 -0
  51. data/lib/origen_testers/igxl_based_tester/j750/templates/patsets.txt.erb +10 -0
  52. data/lib/origen_testers/igxl_based_tester/j750/templates/patsubrs.txt.erb +10 -0
  53. data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +547 -0
  54. data/lib/origen_testers/igxl_based_tester/j750/test_instance_group.rb +9 -0
  55. data/lib/origen_testers/igxl_based_tester/j750/test_instances.rb +10 -0
  56. data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +34 -0
  57. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow.rb +9 -0
  58. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow_line.rb +9 -0
  59. data/lib/origen_testers/igxl_based_tester/j750_hpt/generator.rb +19 -0
  60. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroup.rb +9 -0
  61. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroups.rb +9 -0
  62. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset.rb +9 -0
  63. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset_pattern.rb +9 -0
  64. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsets.rb +9 -0
  65. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr.rb +9 -0
  66. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr_pattern.rb +9 -0
  67. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubrs.rb +9 -0
  68. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance.rb +515 -0
  69. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance_group.rb +9 -0
  70. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instances.rb +9 -0
  71. data/lib/origen_testers/igxl_based_tester/parser.rb +102 -0
  72. data/lib/origen_testers/igxl_based_tester/parser/ac_spec.rb +9 -0
  73. data/lib/origen_testers/igxl_based_tester/parser/ac_specs.rb +0 -0
  74. data/lib/origen_testers/igxl_based_tester/parser/dc_spec.rb +33 -0
  75. data/lib/origen_testers/igxl_based_tester/parser/dc_specs.rb +48 -0
  76. data/lib/origen_testers/igxl_based_tester/parser/descriptions.rb +339 -0
  77. data/lib/origen_testers/igxl_based_tester/parser/flow.rb +109 -0
  78. data/lib/origen_testers/igxl_based_tester/parser/flow_line.rb +203 -0
  79. data/lib/origen_testers/igxl_based_tester/parser/flows.rb +21 -0
  80. data/lib/origen_testers/igxl_based_tester/parser/pattern_set.rb +92 -0
  81. data/lib/origen_testers/igxl_based_tester/parser/pattern_sets.rb +31 -0
  82. data/lib/origen_testers/igxl_based_tester/parser/test_instance.rb +341 -0
  83. data/lib/origen_testers/igxl_based_tester/parser/test_instances.rb +24 -0
  84. data/lib/origen_testers/igxl_based_tester/parser/timeset.rb +13 -0
  85. data/lib/origen_testers/igxl_based_tester/parser/timesets.rb +0 -0
  86. data/lib/origen_testers/igxl_based_tester/ultraflex.rb +477 -0
  87. data/lib/origen_testers/igxl_based_tester/ultraflex/flow.rb +10 -0
  88. data/lib/origen_testers/igxl_based_tester/ultraflex/flow_line.rb +19 -0
  89. data/lib/origen_testers/igxl_based_tester/ultraflex/generator.rb +19 -0
  90. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroup.rb +9 -0
  91. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroups.rb +10 -0
  92. data/lib/origen_testers/igxl_based_tester/ultraflex/patset.rb +9 -0
  93. data/lib/origen_testers/igxl_based_tester/ultraflex/patset_pattern.rb +18 -0
  94. data/lib/origen_testers/igxl_based_tester/ultraflex/patsets.rb +10 -0
  95. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr.rb +9 -0
  96. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr_pattern.rb +18 -0
  97. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubrs.rb +10 -0
  98. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/flow.txt.erb +9 -0
  99. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/instances.txt.erb +16 -0
  100. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patgroups.txt.erb +9 -0
  101. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patsets.txt.erb +10 -0
  102. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patsubrs.txt.erb +10 -0
  103. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb +270 -0
  104. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance_group.rb +9 -0
  105. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instances.rb +10 -0
  106. data/lib/origen_testers/interface.rb +183 -0
  107. data/lib/origen_testers/parser.rb +22 -0
  108. data/lib/origen_testers/parser/description_lookup.rb +62 -0
  109. data/lib/origen_testers/parser/searchable_array.rb +30 -0
  110. data/lib/origen_testers/parser/searchable_hash.rb +30 -0
  111. data/lib/origen_testers/pattern_compilers.rb +116 -0
  112. data/lib/origen_testers/pattern_compilers/assembler.rb +88 -0
  113. data/lib/origen_testers/pattern_compilers/job.rb +96 -0
  114. data/lib/origen_testers/pattern_compilers/ultraflex_pattern_compiler.rb +599 -0
  115. data/lib/origen_testers/program_generators.rb +55 -0
  116. data/lib/origen_testers/smartest_based_tester.rb +8 -0
  117. data/lib/origen_testers/smartest_based_tester/base.rb +411 -0
  118. data/lib/origen_testers/smartest_based_tester/base/flow.rb +188 -0
  119. data/lib/origen_testers/smartest_based_tester/base/flow_node.rb +476 -0
  120. data/lib/origen_testers/smartest_based_tester/base/generator.rb +123 -0
  121. data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +23 -0
  122. data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +47 -0
  123. data/lib/origen_testers/smartest_based_tester/base/test_method.rb +143 -0
  124. data/lib/origen_testers/smartest_based_tester/base/test_methods.rb +73 -0
  125. data/lib/origen_testers/smartest_based_tester/base/test_methods/ac_tml.rb +33 -0
  126. data/lib/origen_testers/smartest_based_tester/base/test_methods/base_tml.rb +38 -0
  127. data/lib/origen_testers/smartest_based_tester/base/test_methods/custom_tml.rb +19 -0
  128. data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +147 -0
  129. data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +43 -0
  130. data/lib/origen_testers/smartest_based_tester/base/test_suite.rb +166 -0
  131. data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +58 -0
  132. data/lib/origen_testers/smartest_based_tester/v93k.rb +8 -0
  133. data/lib/origen_testers/smartest_based_tester/v93k/builder.rb +89 -0
  134. data/lib/origen_testers/smartest_based_tester/v93k/builder/flow.rb +169 -0
  135. data/lib/origen_testers/smartest_based_tester/v93k/builder/pattern_master.rb +54 -0
  136. data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +10 -0
  137. data/lib/origen_testers/smartest_based_tester/v93k/flow_node.rb +9 -0
  138. data/lib/origen_testers/smartest_based_tester/v93k/generator.rb +19 -0
  139. data/lib/origen_testers/smartest_based_tester/v93k/pattern_compiler.rb +10 -0
  140. data/lib/origen_testers/smartest_based_tester/v93k/pattern_master.rb +10 -0
  141. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb +17 -0
  142. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.flow.erb +201 -0
  143. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb +13 -0
  144. data/lib/origen_testers/smartest_based_tester/v93k/test_method.rb +9 -0
  145. data/lib/origen_testers/smartest_based_tester/v93k/test_methods.rb +9 -0
  146. data/lib/origen_testers/smartest_based_tester/v93k/test_suite.rb +9 -0
  147. data/lib/origen_testers/smartest_based_tester/v93k/test_suites.rb +9 -0
  148. data/lib/origen_testers/test/basic_interface.rb +17 -0
  149. data/lib/origen_testers/test/block.rb +21 -0
  150. data/lib/origen_testers/test/dut.rb +184 -0
  151. data/lib/origen_testers/test/dut2.rb +76 -0
  152. data/lib/origen_testers/test/j750_base_interface.rb +119 -0
  153. data/lib/origen_testers/test/j750_hpt_interface.rb +8 -0
  154. data/lib/origen_testers/test/j750_interface.rb +8 -0
  155. data/lib/origen_testers/test/nvm.rb +94 -0
  156. data/lib/origen_testers/test/ultraflex_interface.rb +110 -0
  157. data/lib/origen_testers/test/v93k_interface.rb +115 -0
  158. data/lib/origen_testers/timing.rb +362 -0
  159. data/lib/origen_testers/vector.rb +203 -0
  160. data/lib/origen_testers/vector_based_tester.rb +42 -0
  161. data/lib/origen_testers/vector_generator.rb +623 -0
  162. data/lib/origen_testers/vector_pipeline.rb +288 -0
  163. data/pattern/dc_instr.rb +7 -0
  164. data/pattern/delay.rb +7 -0
  165. data/pattern/mem_test.rb +8 -0
  166. data/pattern/multi_vector.rb +117 -0
  167. data/pattern/multi_vector_plus1.rb +125 -0
  168. data/pattern/nvm/j750/add_late_pins.rb +3 -0
  169. data/pattern/nvm/j750/iterator_postfix_test_x_bx.rb +8 -0
  170. data/pattern/nvm/j750/iterator_test_x_bx.rb +8 -0
  171. data/pattern/nvm/j750/j750_halt.rb +159 -0
  172. data/pattern/nvm/j750/j750_workout.rb +202 -0
  173. data/pattern/nvm/j750/timing.rb +73 -0
  174. data/pattern/nvm/v93k/v93k_workout.rb +136 -0
  175. data/pattern/read_write_reg.rb +58 -0
  176. data/pattern/reset.rb +4 -0
  177. data/pattern/subroutines.rb +38 -0
  178. data/program/_additional_erase.rb +7 -0
  179. data/program/_efa_resources.rb +7 -0
  180. data/program/_erase.rb +25 -0
  181. data/program/_erase_vfy.rb +5 -0
  182. data/program/_iv_resources.rb +10 -0
  183. data/program/basic_interface.rb +5 -0
  184. data/program/components/_prb2_main.rb +6 -0
  185. data/program/flow_control.rb +164 -0
  186. data/program/prb1.rb +226 -0
  187. data/program/prb1_resources.rb +28 -0
  188. data/program/prb2.rb +40 -0
  189. data/program/test.rb +20 -0
  190. data/templates/example.txt.erb +53 -0
  191. data/templates/j750/_vt_flow.txt.erb +8 -0
  192. data/templates/j750/_vt_instances.txt.erb +4 -0
  193. data/templates/j750/program_sheet.txt.erb +9 -0
  194. data/templates/manifest/v93k.yaml.erb +22 -0
  195. data/templates/web/index.md.erb +51 -0
  196. data/templates/web/layouts/_basic.html.erb +15 -0
  197. data/templates/web/partials/_navbar.html.erb +22 -0
  198. data/templates/web/release_notes.md.erb +5 -0
  199. metadata +332 -0
@@ -0,0 +1,10 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ require 'origen_testers/igxl_based_tester/base/flow'
5
+ class Flow < Base::Flow
6
+ TEMPLATE = "#{Origen.root!}/lib/origen_testers/igxl_based_tester/j750/templates/flow.txt.erb"
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ require 'origen_testers/igxl_based_tester/base/flow_line'
5
+ class FlowLine < Base::FlowLine
6
+ # Attributes for each flow line, these must be declared in the order they are to be output
7
+ TESTER_FLOWLINE_ATTRS = %w(label enable job part env opcode parameter tname tnum bin_pass bin_fail
8
+ sort_pass sort_fail result flag_pass flag_fail state
9
+ group_specifier group_sense group_condition group_name
10
+ device_sense device_condition device_name
11
+ debug_assume debug_sites comment
12
+ )
13
+
14
+ # Generate the instance method definitions based on the above
15
+ define
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ # Include this module in an interface class to make it a J750 interface and to give
5
+ # access to the J750 program generator API
6
+ module Generator
7
+ extend ActiveSupport::Concern
8
+
9
+ require_all "#{Origen.root!}/lib/origen_testers/igxl_based_tester/j750"
10
+ require 'origen_testers/igxl_based_tester/base/generator'
11
+
12
+ included do
13
+ include Base::Generator
14
+ PLATFORM = J750
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ require 'origen_testers/igxl_based_tester/base/patgroup'
5
+ class Patgroup < Base::Patgroup
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ require 'origen_testers/igxl_based_tester/base/patgroups'
5
+ class Patgroups < Base::Patgroups
6
+ TEMPLATE = "#{Origen.root!}/lib/origen_testers/igxl_based_tester/j750/templates/patgroups.txt.erb"
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ require 'origen_testers/igxl_based_tester/base/patset'
5
+ class Patset < Base::Patset
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ require 'origen_testers/igxl_based_tester/base/patset_pattern'
5
+ class PatsetPattern < Base::PatsetPattern
6
+ # Attributes for each pattern set line
7
+ PATSET_ATTRS = %w(pattern_set file_name start_label stop_label comment)
8
+
9
+ # Pattern set defaults
10
+ PATSET_DEFAULTS = {
11
+ }
12
+
13
+ # Generate the instance method definitions based on the above
14
+ define
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,10 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ require 'origen_testers/igxl_based_tester/base/patsets'
5
+ class Patsets < Base::Patsets
6
+ TEMPLATE = "#{Origen.root!}/lib/origen_testers/igxl_based_tester/j750/templates/patsets.txt.erb"
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ require 'origen_testers/igxl_based_tester/base/patsubr'
5
+ class Patsubr < Base::Patsubr
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ require 'origen_testers/igxl_based_tester/base/patsubr_pattern'
5
+ class PatsubrPattern < Base::PatsubrPattern
6
+ # Attributes for each pattern subroutine line
7
+ PATSUBR_ATTRS = %w(file_name comment)
8
+
9
+ # Pattern subroutine defaults
10
+ PATSUBR_DEFAULTS = {
11
+ }
12
+
13
+ # Generate the instance method definitions based on the above
14
+ define
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,10 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ require 'origen_testers/igxl_based_tester/base/patsubrs'
5
+ class Patsubrs < Base::Patsubrs
6
+ TEMPLATE = "#{Origen.root!}/lib/origen_testers/igxl_based_tester/j750/templates/patsubrs.txt.erb"
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
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
@@ -0,0 +1,16 @@
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
@@ -0,0 +1,8 @@
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
@@ -0,0 +1,10 @@
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
@@ -0,0 +1,10 @@
1
+ % unless @append
2
+ DFF 1.0 Pattern Subroutine
3
+
4
+ Pattern Filename Comment
5
+ % end
6
+ % collection.each do |patsubr|
7
+ % patsubr.lines.each do |line|
8
+ <%= line %>
9
+ % end
10
+ % end
@@ -0,0 +1,547 @@
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class J750
4
+ require 'origen_testers/igxl_based_tester/base/test_instance'
5
+ class TestInstance < Base::TestInstance
6
+ # Attributes for each test instance line, first few are named directly
7
+ TEST_INSTANCE_ATTRS = %w(
8
+ test_name proc_type proc_name proc_called_as dc_category
9
+ dc_selector ac_category ac_selector
10
+ time_sets edge_sets pin_levels overlay
11
+ )
12
+
13
+ # Attributes for additional test instance arguments beyond those described above
14
+ TEST_INSTANCE_EXTRA_ARGS = 80
15
+
16
+ TEST_INSTANCE_ALIASES = {
17
+ name: :test_name,
18
+ time_set: :time_sets,
19
+ timeset: :time_sets,
20
+ timesets: :time_sets,
21
+
22
+ other: {
23
+ },
24
+
25
+ empty: {
26
+ start_func: :arg0,
27
+ start_of_body_f: :arg0,
28
+ pre_pat_func: :arg1,
29
+ pre_pat_f: :arg1,
30
+ pre_test_func: :arg2,
31
+ pre_test_f: :arg2,
32
+ post_test_func: :arg3,
33
+ post_test_f: :arg3,
34
+ post_pat_func: :arg4,
35
+ post_pat_f: :arg4,
36
+ end_func: :arg5,
37
+ end_of_body_f: :arg5,
38
+ start_func_args: :arg6,
39
+ start_of_body_f_args: :arg6,
40
+ pre_pat_func_args: :arg7,
41
+ pre_pat_f_args: :arg7,
42
+ pre_test_func_args: :arg8,
43
+ pre_test_f_args: :arg8,
44
+ post_test_func_args: :arg9,
45
+ post_test_f_args: :arg9,
46
+ post_pat_func_args: :arg10,
47
+ post_pat_f_args: :arg10,
48
+ end_func_args: :arg11,
49
+ end_of_body_f_args: :arg11,
50
+ utility_pins_1: :arg12,
51
+ utility_pins_0: :arg13,
52
+ init_lo: :arg14,
53
+ start_lo: :arg14,
54
+ init_hi: :arg15,
55
+ start_hi: :arg15,
56
+ init_hiz: :arg16,
57
+ start_hiz: :arg16,
58
+ float_pins: :arg17
59
+ },
60
+
61
+ # Functional test instances
62
+ functional: {
63
+ pattern: :arg0,
64
+ patterns: :arg0,
65
+ start_func: :arg1,
66
+ start_of_body_f: :arg1,
67
+ pre_pat_func: :arg2,
68
+ pre_pat_f: :arg2,
69
+ pre_test_func: :arg3,
70
+ pre_test_f: :arg3,
71
+ post_test_func: :arg4,
72
+ post_test_f: :arg4,
73
+ post_pat_func: :arg5,
74
+ post_pat_f: :arg5,
75
+ end_func: :arg6,
76
+ end_of_body_f: :arg6,
77
+ set_pass_fail: :arg7,
78
+ init_lo: :arg8,
79
+ start_lo: :arg8,
80
+ init_hi: :arg9,
81
+ start_hi: :arg9,
82
+ init_hiz: :arg10,
83
+ start_hiz: :arg10,
84
+ float_pins: :arg11,
85
+ start_func_args: :arg13,
86
+ start_of_body_f_args: :arg13,
87
+ pre_pat_func_args: :arg14,
88
+ pre_pat_f_args: :arg14,
89
+ pre_test_func_args: :arg15,
90
+ pre_test_f_args: :arg15,
91
+ post_test_func_args: :arg16,
92
+ post_test_f_args: :arg16,
93
+ post_pat_func_args: :arg17,
94
+ post_pat_f_args: :arg17,
95
+ end_func_args: :arg18,
96
+ end_of_body_f_args: :arg18,
97
+ wait_flags: :arg21,
98
+ wait_time: :arg22,
99
+ pattern_timeout: :arg22,
100
+ pat_flag_func: :arg23,
101
+ pat_flag_f: :arg23,
102
+ PatFlagF: :arg23,
103
+ pat_flag_func_args: :arg24,
104
+ pat_flag_f_args: :arg24,
105
+ relay_mode: :arg25,
106
+ threading: :arg26,
107
+ match_all_sites: :arg27,
108
+ capture_mode: :arg30,
109
+ capture_what: :arg31,
110
+ capture_memory: :arg32,
111
+ capture_size: :arg33,
112
+ datalog_mode: :arg34,
113
+ data_type: :arg35
114
+ },
115
+
116
+ board_pmu: {
117
+ hsp_start: :arg0,
118
+ start_func: :arg1,
119
+ start_of_body_f: :arg1,
120
+ pre_pat_func: :arg2,
121
+ pre_pat_f: :arg2,
122
+ pre_test_func: :arg3,
123
+ pre_test_f: :arg3,
124
+ post_test_func: :arg4,
125
+ post_test_f: :arg4,
126
+ post_pat_func: :arg5,
127
+ post_pat_f: :arg5,
128
+ end_func: :arg6,
129
+ end_of_body_f: :arg6,
130
+ precond_pat: :arg7,
131
+ hold_state_pat: :arg8,
132
+ holdstate_pat: :arg8,
133
+ pattern: :arg8,
134
+ pcp_stop: :arg9,
135
+ wait_flags: :arg10,
136
+ start_lo: :arg11,
137
+ init_lo: :arg11,
138
+ start_hi: :arg12,
139
+ init_hi: :arg12,
140
+ start_hiz: :arg13,
141
+ init_hiz: :arg13,
142
+ float_pins: :arg14,
143
+ pinlist: :arg15,
144
+ pin: :arg15,
145
+ pin_list: :arg15,
146
+ measure_mode: :arg16,
147
+ irange: :arg17,
148
+ clamp: :arg18,
149
+ vrange: :arg19,
150
+ sampling_time: :arg20,
151
+ samples: :arg21,
152
+ settling_time: :arg22,
153
+ hi_lo_lim_valid: :arg23,
154
+ hi_lo_limit_valid: :arg23,
155
+ hi_limit: :arg24,
156
+ lo_limit: :arg25,
157
+ force_cond_1: :arg26,
158
+ force_cond: :arg26,
159
+ force_condition: :arg26,
160
+ force_cond_2: :arg27,
161
+ gang_pins_tested: :arg28,
162
+ relay_mode: :arg29,
163
+ wait_time_out: :arg30,
164
+ start_func_args: :arg31,
165
+ start_of_body_f_args: :arg31,
166
+ pre_pat_func_args: :arg32,
167
+ pre_pat_f_args: :arg32,
168
+ pre_test_func_args: :arg33,
169
+ pre_test_f_args: :arg33,
170
+ post_test_func_args: :arg34,
171
+ post_test_f_args: :arg34,
172
+ post_pat_func_args: :arg35,
173
+ post_pat_f_args: :arg35,
174
+ end_func_args: :arg36,
175
+ end_of_body_f_args: :arg36,
176
+ pcp_start: :arg37,
177
+ pcp_check_pg: :arg38,
178
+ hsp_stop: :arg39,
179
+ hsp_check_pg: :arg40,
180
+ resume_pat: :arg41,
181
+ utility_pins_1: :arg42,
182
+ utility_pins_0: :arg43,
183
+ pre_charge_enable: :arg44,
184
+ pre_charge: :arg45,
185
+ threading: :arg46
186
+ },
187
+
188
+ pin_pmu: {
189
+ hsp_start: :arg0,
190
+ start_func: :arg1,
191
+ start_of_body_f: :arg1,
192
+ pre_pat_func: :arg2,
193
+ pre_pat_f: :arg2,
194
+ pre_test_func: :arg3,
195
+ pre_test_f: :arg3,
196
+ post_test_func: :arg4,
197
+ post_test_f: :arg4,
198
+ post_pat_func: :arg5,
199
+ post_pat_f: :arg5,
200
+ end_func: :arg6,
201
+ end_of_body_f: :arg6,
202
+ precond_pat: :arg7,
203
+ hold_state_pat: :arg8,
204
+ holdstate_pat: :arg8,
205
+ pattern: :arg8,
206
+ pcp_stop: :arg9,
207
+ wait_flags: :arg10,
208
+ start_lo: :arg11,
209
+ init_lo: :arg11,
210
+ start_hi: :arg12,
211
+ init_hi: :arg12,
212
+ start_hiz: :arg13,
213
+ init_hiz: :arg13,
214
+ float_pins: :arg14,
215
+ pinlist: :arg15,
216
+ pin: :arg15,
217
+ pin_list: :arg15,
218
+ measure_mode: :arg16,
219
+ irange: :arg17,
220
+ settling_time: :arg18,
221
+ hi_lo_lim_valid: :arg19,
222
+ hi_lo_limit_valid: :arg19,
223
+ hi_limit: :arg20,
224
+ lo_limit: :arg21,
225
+ force_cond_1: :arg22,
226
+ force_cond: :arg22,
227
+ force_condition: :arg22,
228
+ force_cond_2: :arg23,
229
+ fload: :arg24,
230
+ relay_mode: :arg25,
231
+ wait_time_out: :arg26,
232
+ start_func_args: :arg27,
233
+ start_of_body_f_args: :arg27,
234
+ pre_pat_func_args: :arg28,
235
+ pre_pat_f_args: :arg28,
236
+ pre_test_func_args: :arg29,
237
+ pre_test_f_args: :arg29,
238
+ post_test_func_args: :arg30,
239
+ post_test_f_args: :arg30,
240
+ post_pat_func_args: :arg31,
241
+ post_pat_f_args: :arg31,
242
+ end_func_args: :arg32,
243
+ end_of_body_f_args: :arg32,
244
+ pcp_start: :arg33,
245
+ pcp_check_pg: :arg34,
246
+ hsp_stop: :arg35,
247
+ hsp_check_pg: :arg36,
248
+ sampling_time: :arg37,
249
+ samples: :arg38,
250
+ resume_pat: :arg39,
251
+ vcl: :arg40,
252
+ vch: :arg41,
253
+ utility_pins_1: :arg42,
254
+ utility_pins_0: :arg43,
255
+ pre_charge_enable: :arg44,
256
+ pre_charge: :arg45,
257
+ threading: :arg46
258
+ },
259
+
260
+ apmu_powersupply: {
261
+ precond_pat: :arg0,
262
+ pre_cond_pat: :arg0,
263
+ start_func: :arg1,
264
+ start_of_body_f: :arg1,
265
+ pre_pat_func: :arg2,
266
+ pre_pat_f: :arg2,
267
+ pre_test_func: :arg3,
268
+ pre_test_f: :arg3,
269
+ post_test_func: :arg4,
270
+ post_test_f: :arg4,
271
+ post_pat_func: :arg5,
272
+ post_pat_f: :arg5,
273
+ end_func: :arg6,
274
+ end_of_body_f: :arg6,
275
+ hold_state_pat: :arg7,
276
+ holdstate_pat: :arg7,
277
+ wait_flags: :arg8,
278
+ wait_time_out: :arg9,
279
+ start_lo: :arg10,
280
+ start_init_lo: :arg10,
281
+ init_lo: :arg10,
282
+ start_hi: :arg11,
283
+ start_init_hi: :arg11,
284
+ init_hi: :arg11,
285
+ start_hiz: :arg12,
286
+ start_init_hiz: :arg12,
287
+ init_hiz: :arg12,
288
+ float_pins: :arg13,
289
+ irange: :arg14,
290
+ sampling_time: :arg15,
291
+ samples: :arg16,
292
+ settling_time: :arg17,
293
+ hi_lo_lim_valid: :arg18,
294
+ hi_lo_limit_valid: :arg18,
295
+ hi_limit: :arg19,
296
+ lo_limit: :arg20,
297
+ force_cond_1: :arg21,
298
+ force_cond: :arg21,
299
+ force_condition: :arg21,
300
+ force_condition_1: :arg21,
301
+ force_cond_2: :arg22,
302
+ force_condition_2: :arg22,
303
+ power_pins: :arg23,
304
+ pins: :arg23,
305
+ pin: :arg23,
306
+ force_source: :arg24,
307
+ pcp_start: :arg25,
308
+ pcp_stop: :arg26,
309
+ start_func_args: :arg27,
310
+ start_of_body_f_args: :arg27,
311
+ pre_pat_func_args: :arg28,
312
+ pre_pat_f_args: :arg28,
313
+ pre_test_func_args: :arg29,
314
+ pre_test_f_args: :arg29,
315
+ post_test_func_args: :arg30,
316
+ post_test_f_args: :arg30,
317
+ post_pat_func_args: :arg31,
318
+ post_pat_f_args: :arg31,
319
+ end_func_args: :arg32,
320
+ end_of_body_f_args: :arg32,
321
+ hsp_start: :arg33,
322
+ hsp_stop: :arg34,
323
+ pcp_check_pg: :arg35,
324
+ clamp: :arg36,
325
+ hsp_check_pg: :arg37,
326
+ resume_pat: :arg38,
327
+ relay_mode: :arg39,
328
+ utility_pins_1: :arg40,
329
+ utility_pins_0: :arg41,
330
+ test_control: :arg42,
331
+ serialize_meas: :arg43,
332
+ serialize_meas_func: :arg44,
333
+ serialize_meas_f: :arg44,
334
+ serialize_meas_func_args: :arg45,
335
+ serialize_meas_f_args: :arg45
336
+ },
337
+ mto_memory: {
338
+ patterns: :arg0,
339
+ pattern: :arg0,
340
+ start_func: :arg1,
341
+ start_of_body_f: :arg1,
342
+ pre_pat_func: :arg2,
343
+ pre_pat_f: :arg2,
344
+ pre_test_func: :arg3,
345
+ pre_test_f: :arg3,
346
+ post_test_func: :arg4,
347
+ post_test_f: :arg4,
348
+ post_pat_func: :arg5,
349
+ post_pat_f: :arg5,
350
+ end_of_body_func: :arg6,
351
+ end_of_body_f: :arg6,
352
+ set_pass_fail: :arg7,
353
+ init_lo: :arg8,
354
+ start_lo: :arg8,
355
+ init_hi: :arg9,
356
+ start_hi: :arg9,
357
+ init_hiz: :arg10,
358
+ start_hiz: :arg10,
359
+ float_pins: :arg11,
360
+ start_of_body_func_args: :arg12,
361
+ start_of_body_f_args: :arg12,
362
+ pre_pat_func_args: :arg13,
363
+ pre_pat_f_args: :arg13,
364
+ pre_test_func_args: :arg14,
365
+ pre_test_f_args: :arg14,
366
+ post_test_func_args: :arg15,
367
+ post_test_f_args: :arg15,
368
+ post_pat_f_args: :arg16,
369
+ end_of_body_func_args: :arg17,
370
+ end_of_body_f_args: :arg17,
371
+ utility_pins_1: :arg18,
372
+ utility_pins_0: :arg19,
373
+ wait_flags: :arg20,
374
+ wait_time_out: :arg21,
375
+ PatFlagF: :arg22,
376
+ pat_flag_f: :arg22,
377
+ pat_flag_func_args: :arg23,
378
+ pat_flag_f_args: :arg23,
379
+ relay_mode: :arg24,
380
+ x_enable_mask: :arg29,
381
+ x_shift_direction: :arg30,
382
+ x_shift_input: :arg31,
383
+ y_enable_mask: :arg36,
384
+ y_shift_direction: :arg37,
385
+ y_shift_input: :arg38,
386
+ dga: :arg39,
387
+ dgb: :arg40,
388
+ dgc: :arg41,
389
+ dgd: :arg42,
390
+ dg_enable_mask: :arg43,
391
+ dg_shift_direction: :arg44,
392
+ dg_shift_input: :arg45,
393
+ x_coincidence_enable_mask: :arg46,
394
+ y_coincidence_enable_mask: :arg47,
395
+ two_bit_dg_setup: :arg48,
396
+ x_scramble_algorithm: :arg49,
397
+ y_scramble_algorithm: :arg50,
398
+ topo_inversion_algorithm: :arg51,
399
+ utility_counter_a: :arg52,
400
+ utility_counter_b: :arg53,
401
+ utility_counter_c: :arg54,
402
+ dut_data_source: :arg55,
403
+ scramble_addr: :arg56,
404
+ speed_mode: :arg57,
405
+ resource_map: :arg58,
406
+ receive_data: :arg59,
407
+ data_to_capture: :arg60,
408
+ capture_marker: :arg61,
409
+ enable_wrapping: :arg62,
410
+ capture_scrambled_address: :arg63,
411
+ mapmem_0_input_set: :arg64,
412
+ mapmem_1_input_set: :arg65,
413
+ threading: :arg69,
414
+ match_all_sites: :arg70
415
+ }
416
+ }
417
+
418
+ TEST_INSTANCE_DEFAULTS = {
419
+ empty: {
420
+ proc_type: 'IG-XL Template',
421
+ proc_name: 'Empty_T',
422
+ proc_called_as: 'Excel Macro'
423
+ },
424
+ other: {
425
+ proc_type: 'Other',
426
+ proc_called_as: 'Excel Macro'
427
+ },
428
+ functional: {
429
+ proc_type: 'IG-XL Template',
430
+ proc_name: 'Functional_T',
431
+ proc_called_as: 'VB DLL',
432
+ set_pass_fail: 1,
433
+ wait_flags: 'XXXX',
434
+ wait_time: 30,
435
+ relay_mode: 1,
436
+ threading: 0,
437
+ match_all_sites: 0,
438
+ capture_mode: 0,
439
+ capture_what: 0,
440
+ capture_memory: 0,
441
+ capture_size: 256,
442
+ datalog_mode: 0,
443
+ data_type: 0
444
+ },
445
+ board_pmu: {
446
+ proc_type: 'IG-XL Template',
447
+ proc_name: 'BoardPmu_T',
448
+ proc_called_as: 'VB DLL',
449
+ wait_flags: 'XXXX',
450
+ measure_mode: 1,
451
+ irange: 5,
452
+ vrange: 3,
453
+ settling_time: 0,
454
+ hi_lo_lim_valid: 3,
455
+ gang_pins_tested: 0,
456
+ relay_mode: 0,
457
+ wait_time_out: 30,
458
+ pcp_check_pg: 1,
459
+ hsp_check_pg: 1,
460
+ resume_pat: 0,
461
+ threading: 0
462
+ },
463
+ pin_pmu: {
464
+ proc_type: 'IG-XL Template',
465
+ proc_name: 'PinPmu_T',
466
+ proc_called_as: 'VB DLL',
467
+ wait_flags: 'XXXX',
468
+ measure_mode: 1,
469
+ irange: 2,
470
+ settling_time: 0,
471
+ hi_lo_lim_valid: 3,
472
+ fload: 0,
473
+ relay_mode: 0,
474
+ wait_time_out: 30,
475
+ pcp_check_pg: 1,
476
+ hsp_check_pg: 1,
477
+ resume_pat: 0,
478
+ threading: 0
479
+ },
480
+ apmu_powersupply: {
481
+ proc_type: 'IG-XL Template',
482
+ proc_name: 'ApmuPowerSupply_T',
483
+ proc_called_as: 'VB DLL',
484
+ wait_flags: 'XXXX',
485
+ irange: 1,
486
+ settling_time: 0,
487
+ hi_lo_lim_valid: 3,
488
+ relay_mode: 0,
489
+ wait_time_out: 30,
490
+ pcp_check_pg: 1,
491
+ hsp_check_pg: 1,
492
+ resume_pat: 0,
493
+ test_control: 0
494
+ },
495
+ mto_memory: {
496
+ proc_type: 'IG-XL Template',
497
+ proc_name: 'MtoMemory_T',
498
+ proc_called_as: 'VB DLL',
499
+ set_pass_fail: 1,
500
+ wait_flags: 'XXXX',
501
+ wait_time: 30,
502
+ relay_mode: 1,
503
+ threading: 0,
504
+ match_all_sites: 0,
505
+ dut_data_source: 0,
506
+ scramble_addr: 0,
507
+ speed_mode: 0,
508
+ resource_map: 'MAP_1M_2BIT',
509
+ receive_data: 0,
510
+ data_to_capture: 1,
511
+ capture_marker: 1,
512
+ enable_wrapping: 0,
513
+ capture_scrambled_address: 0,
514
+ mapmem_0_input_set: 'Map_By16',
515
+ mapmem_1_input_set: 'Map_By16',
516
+ x_scramble_algorithm: 'X_NO_SCRAMBLE',
517
+ y_scramble_algorithm: 'Y_NO_SCRAMBLE',
518
+ topo_inversion_algorithm: 'NO_TOPO',
519
+ x_shift_direction: 0,
520
+ x_shift_input: 0,
521
+ y_shift_direction: 0,
522
+ y_shift_input: 0,
523
+ x_coincidence_enable_mask: 0,
524
+ y_coincidence_enable_mask: 0,
525
+ dg_shift_direction: 0,
526
+ dg_shift_input: 0
527
+ }
528
+ }
529
+
530
+ # Generate the instance method definitions based on the above
531
+ define
532
+
533
+ # Set the cpu wait flags for the given test instance
534
+ # instance.set_wait_flags(:a)
535
+ # instance.set_wait_flags(:a, :c)
536
+ def set_wait_flags(*flags)
537
+ a = (flags.include?(:a) || flags.include?(:a)) ? '1' : 'X'
538
+ b = (flags.include?(:b) || flags.include?(:b)) ? '1' : 'X'
539
+ c = (flags.include?(:c) || flags.include?(:c)) ? '1' : 'X'
540
+ d = (flags.include?(:d) || flags.include?(:d)) ? '1' : 'X'
541
+ self.wait_flags = d + c + b + a
542
+ self
543
+ end
544
+ end
545
+ end
546
+ end
547
+ end