origen_testers 0.13.1 → 0.13.2

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 (258) hide show
  1. checksums.yaml +4 -4
  2. data/config/application.rb +151 -151
  3. data/config/boot.rb +13 -13
  4. data/config/commands.rb +85 -86
  5. data/config/users.rb +18 -18
  6. data/config/version.rb +8 -8
  7. data/lib/commands/build.rb +69 -69
  8. data/lib/commands/run.rb +48 -48
  9. data/lib/origen_testers.rb +47 -47
  10. data/lib/origen_testers/api.rb +381 -381
  11. data/lib/origen_testers/basic_test_setups.rb +105 -105
  12. data/lib/origen_testers/callback_handlers.rb +59 -59
  13. data/lib/origen_testers/command_based_tester.rb +45 -45
  14. data/lib/origen_testers/flow.rb +382 -382
  15. data/lib/origen_testers/generator.rb +283 -283
  16. data/lib/origen_testers/generator/identity_map.rb +23 -23
  17. data/lib/origen_testers/generator/placeholder.rb +11 -11
  18. data/lib/origen_testers/generator/test_numberer.rb +23 -23
  19. data/lib/origen_testers/igxl_based_tester.rb +12 -12
  20. data/lib/origen_testers/igxl_based_tester/base.rb +1100 -1099
  21. data/lib/origen_testers/igxl_based_tester/base/ac_specsets.rb +79 -79
  22. data/lib/origen_testers/igxl_based_tester/base/custom_test_instance.rb +169 -169
  23. data/lib/origen_testers/igxl_based_tester/base/dc_specsets.rb +98 -98
  24. data/lib/origen_testers/igxl_based_tester/base/edge.rb +60 -60
  25. data/lib/origen_testers/igxl_based_tester/base/edges.rb +24 -24
  26. data/lib/origen_testers/igxl_based_tester/base/edgeset.rb +39 -39
  27. data/lib/origen_testers/igxl_based_tester/base/edgesets.rb +130 -130
  28. data/lib/origen_testers/igxl_based_tester/base/flow.rb +460 -460
  29. data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +276 -276
  30. data/lib/origen_testers/igxl_based_tester/base/generator.rb +607 -607
  31. data/lib/origen_testers/igxl_based_tester/base/global_specs.rb +83 -83
  32. data/lib/origen_testers/igxl_based_tester/base/job.rb +75 -75
  33. data/lib/origen_testers/igxl_based_tester/base/jobs.rb +44 -44
  34. data/lib/origen_testers/igxl_based_tester/base/level_io_se.rb +59 -59
  35. data/lib/origen_testers/igxl_based_tester/base/level_supply.rb +39 -39
  36. data/lib/origen_testers/igxl_based_tester/base/levels.rb +31 -31
  37. data/lib/origen_testers/igxl_based_tester/base/levelset.rb +110 -110
  38. data/lib/origen_testers/igxl_based_tester/base/patgroup.rb +109 -109
  39. data/lib/origen_testers/igxl_based_tester/base/patgroups.rb +38 -38
  40. data/lib/origen_testers/igxl_based_tester/base/patset.rb +68 -68
  41. data/lib/origen_testers/igxl_based_tester/base/patset_pattern.rb +56 -56
  42. data/lib/origen_testers/igxl_based_tester/base/patsets.rb +38 -38
  43. data/lib/origen_testers/igxl_based_tester/base/patsubr.rb +68 -68
  44. data/lib/origen_testers/igxl_based_tester/base/patsubr_pattern.rb +56 -56
  45. data/lib/origen_testers/igxl_based_tester/base/patsubrs.rb +38 -38
  46. data/lib/origen_testers/igxl_based_tester/base/pinmap.rb +93 -93
  47. data/lib/origen_testers/igxl_based_tester/base/references.rb +25 -25
  48. data/lib/origen_testers/igxl_based_tester/base/test_instance.rb +322 -322
  49. data/lib/origen_testers/igxl_based_tester/base/test_instance_group.rb +66 -66
  50. data/lib/origen_testers/igxl_based_tester/base/test_instances.rb +212 -212
  51. data/lib/origen_testers/igxl_based_tester/base/test_instances/custom_til.rb +37 -37
  52. data/lib/origen_testers/igxl_based_tester/base/timeset.rb +37 -37
  53. data/lib/origen_testers/igxl_based_tester/base/timesets.rb +49 -49
  54. data/lib/origen_testers/igxl_based_tester/base/timesets_basic.rb +49 -49
  55. data/lib/origen_testers/igxl_based_tester/files.rb +43 -43
  56. data/lib/origen_testers/igxl_based_tester/j750.rb +269 -269
  57. data/lib/origen_testers/igxl_based_tester/j750/custom_test_instance.rb +32 -32
  58. data/lib/origen_testers/igxl_based_tester/j750/flow.rb +10 -10
  59. data/lib/origen_testers/igxl_based_tester/j750/flow_line.rb +19 -19
  60. data/lib/origen_testers/igxl_based_tester/j750/generator.rb +19 -19
  61. data/lib/origen_testers/igxl_based_tester/j750/patgroup.rb +9 -9
  62. data/lib/origen_testers/igxl_based_tester/j750/patgroups.rb +10 -10
  63. data/lib/origen_testers/igxl_based_tester/j750/patset.rb +9 -9
  64. data/lib/origen_testers/igxl_based_tester/j750/patset_pattern.rb +18 -18
  65. data/lib/origen_testers/igxl_based_tester/j750/patsets.rb +10 -10
  66. data/lib/origen_testers/igxl_based_tester/j750/patsubr.rb +9 -9
  67. data/lib/origen_testers/igxl_based_tester/j750/patsubr_pattern.rb +18 -18
  68. data/lib/origen_testers/igxl_based_tester/j750/patsubrs.rb +10 -10
  69. data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +746 -746
  70. data/lib/origen_testers/igxl_based_tester/j750/test_instance_group.rb +9 -9
  71. data/lib/origen_testers/igxl_based_tester/j750/test_instances.rb +10 -10
  72. data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +34 -34
  73. data/lib/origen_testers/igxl_based_tester/j750_hpt/custom_test_instance.rb +32 -32
  74. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow.rb +9 -9
  75. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow_line.rb +9 -9
  76. data/lib/origen_testers/igxl_based_tester/j750_hpt/generator.rb +19 -19
  77. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroup.rb +9 -9
  78. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroups.rb +9 -9
  79. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset.rb +9 -9
  80. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset_pattern.rb +9 -9
  81. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsets.rb +9 -9
  82. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr.rb +9 -9
  83. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr_pattern.rb +9 -9
  84. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubrs.rb +9 -9
  85. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance.rb +599 -599
  86. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance_group.rb +9 -9
  87. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instances.rb +9 -9
  88. data/lib/origen_testers/igxl_based_tester/parser.rb +102 -102
  89. data/lib/origen_testers/igxl_based_tester/parser/ac_spec.rb +9 -9
  90. data/lib/origen_testers/igxl_based_tester/parser/dc_spec.rb +33 -33
  91. data/lib/origen_testers/igxl_based_tester/parser/dc_specs.rb +48 -48
  92. data/lib/origen_testers/igxl_based_tester/parser/descriptions.rb +339 -339
  93. data/lib/origen_testers/igxl_based_tester/parser/flow.rb +109 -109
  94. data/lib/origen_testers/igxl_based_tester/parser/flow_line.rb +203 -203
  95. data/lib/origen_testers/igxl_based_tester/parser/flows.rb +21 -21
  96. data/lib/origen_testers/igxl_based_tester/parser/pattern_set.rb +92 -92
  97. data/lib/origen_testers/igxl_based_tester/parser/pattern_sets.rb +31 -31
  98. data/lib/origen_testers/igxl_based_tester/parser/test_instance.rb +420 -420
  99. data/lib/origen_testers/igxl_based_tester/parser/test_instances.rb +24 -24
  100. data/lib/origen_testers/igxl_based_tester/parser/timeset.rb +13 -13
  101. data/lib/origen_testers/igxl_based_tester/ultraflex.rb +798 -798
  102. data/lib/origen_testers/igxl_based_tester/ultraflex/ac_specsets.rb +10 -10
  103. data/lib/origen_testers/igxl_based_tester/ultraflex/ate_hardware.rb +949 -949
  104. data/lib/origen_testers/igxl_based_tester/ultraflex/custom_test_instance.rb +36 -36
  105. data/lib/origen_testers/igxl_based_tester/ultraflex/dc_specsets.rb +10 -10
  106. data/lib/origen_testers/igxl_based_tester/ultraflex/edge.rb +9 -9
  107. data/lib/origen_testers/igxl_based_tester/ultraflex/edges.rb +9 -9
  108. data/lib/origen_testers/igxl_based_tester/ultraflex/edgeset.rb +9 -9
  109. data/lib/origen_testers/igxl_based_tester/ultraflex/edgesets.rb +10 -10
  110. data/lib/origen_testers/igxl_based_tester/ultraflex/flow.rb +158 -158
  111. data/lib/origen_testers/igxl_based_tester/ultraflex/flow_line.rb +19 -19
  112. data/lib/origen_testers/igxl_based_tester/ultraflex/generator.rb +19 -19
  113. data/lib/origen_testers/igxl_based_tester/ultraflex/global_specs.rb +10 -10
  114. data/lib/origen_testers/igxl_based_tester/ultraflex/job.rb +9 -9
  115. data/lib/origen_testers/igxl_based_tester/ultraflex/jobs.rb +10 -10
  116. data/lib/origen_testers/igxl_based_tester/ultraflex/level_io_se.rb +9 -9
  117. data/lib/origen_testers/igxl_based_tester/ultraflex/level_supply.rb +9 -9
  118. data/lib/origen_testers/igxl_based_tester/ultraflex/levels.rb +9 -9
  119. data/lib/origen_testers/igxl_based_tester/ultraflex/levelset.rb +10 -10
  120. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroup.rb +9 -9
  121. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroups.rb +10 -10
  122. data/lib/origen_testers/igxl_based_tester/ultraflex/patset.rb +9 -9
  123. data/lib/origen_testers/igxl_based_tester/ultraflex/patset_pattern.rb +18 -18
  124. data/lib/origen_testers/igxl_based_tester/ultraflex/patsets.rb +10 -10
  125. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr.rb +9 -9
  126. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr_pattern.rb +18 -18
  127. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubrs.rb +10 -10
  128. data/lib/origen_testers/igxl_based_tester/ultraflex/pinmap.rb +10 -10
  129. data/lib/origen_testers/igxl_based_tester/ultraflex/references.rb +10 -10
  130. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/ac_specsets.txt.erb +0 -0
  131. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/dc_specsets.txt.erb +0 -0
  132. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/edgesets.txt.erb +0 -0
  133. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/global_specs.txt.erb +0 -0
  134. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/jobs.txt.erb +0 -0
  135. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/levelset.txt.erb +0 -0
  136. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/pinmap.txt.erb +0 -0
  137. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/references.txt.erb +0 -0
  138. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets.txt.erb +0 -0
  139. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets_basic.txt.erb +0 -0
  140. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb +315 -315
  141. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance_group.rb +9 -9
  142. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instances.rb +10 -10
  143. data/lib/origen_testers/igxl_based_tester/ultraflex/timeset.rb +9 -9
  144. data/lib/origen_testers/igxl_based_tester/ultraflex/timesets.rb +10 -10
  145. data/lib/origen_testers/igxl_based_tester/ultraflex/timesets_basic.rb +10 -10
  146. data/lib/origen_testers/interface.rb +345 -324
  147. data/lib/origen_testers/memory_style.rb +77 -77
  148. data/lib/origen_testers/no_interface.rb +7 -7
  149. data/lib/origen_testers/origen_ext/application/runner.rb +25 -25
  150. data/lib/origen_testers/origen_ext/generator.rb +54 -54
  151. data/lib/origen_testers/origen_ext/generator/flow.rb +91 -77
  152. data/lib/origen_testers/origen_ext/generator/resources.rb +21 -21
  153. data/lib/origen_testers/origen_ext/pins/pin.rb +78 -78
  154. data/lib/origen_testers/origen_ext/pins/pin_collection.rb +84 -84
  155. data/lib/origen_testers/parser.rb +22 -22
  156. data/lib/origen_testers/parser/description_lookup.rb +62 -62
  157. data/lib/origen_testers/parser/searchable_array.rb +30 -30
  158. data/lib/origen_testers/parser/searchable_hash.rb +30 -30
  159. data/lib/origen_testers/pattern_compilers.rb +116 -116
  160. data/lib/origen_testers/pattern_compilers/assembler.rb +88 -88
  161. data/lib/origen_testers/pattern_compilers/job.rb +96 -96
  162. data/lib/origen_testers/pattern_compilers/ultraflex_pattern_compiler.rb +599 -599
  163. data/lib/origen_testers/program_generators.rb +62 -62
  164. data/lib/origen_testers/smartest_based_tester.rb +8 -8
  165. data/lib/origen_testers/smartest_based_tester/base.rb +576 -567
  166. data/lib/origen_testers/smartest_based_tester/base/flow.rb +296 -291
  167. data/lib/origen_testers/smartest_based_tester/base/generator.rb +207 -194
  168. data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +32 -32
  169. data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +69 -69
  170. data/lib/origen_testers/smartest_based_tester/base/processors.rb +16 -16
  171. data/lib/origen_testers/smartest_based_tester/base/processors/adjacent_if_combiner.rb +106 -106
  172. data/lib/origen_testers/smartest_based_tester/base/processors/continue_implementer.rb +39 -39
  173. data/lib/origen_testers/smartest_based_tester/base/processors/empty_branch_cleaner.rb +21 -21
  174. data/lib/origen_testers/smartest_based_tester/base/processors/extract_run_flag_table.rb +33 -33
  175. data/lib/origen_testers/smartest_based_tester/base/processors/extract_set_variables.rb +22 -22
  176. data/lib/origen_testers/smartest_based_tester/base/processors/flag_optimizer.rb +188 -188
  177. data/lib/origen_testers/smartest_based_tester/base/processors/if_ran_cleaner.rb +34 -34
  178. data/lib/origen_testers/smartest_based_tester/base/test_method.rb +178 -164
  179. data/lib/origen_testers/smartest_based_tester/base/test_methods.rb +77 -73
  180. data/lib/origen_testers/smartest_based_tester/base/test_methods/ac_tml.rb +33 -33
  181. data/lib/origen_testers/smartest_based_tester/base/test_methods/base_tml.rb +38 -38
  182. data/lib/origen_testers/smartest_based_tester/base/test_methods/custom_tml.rb +19 -19
  183. data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +147 -147
  184. data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +65 -65
  185. data/lib/origen_testers/smartest_based_tester/base/test_suite.rb +208 -193
  186. data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +58 -54
  187. data/lib/origen_testers/smartest_based_tester/base/variables_file.rb +38 -38
  188. data/lib/origen_testers/smartest_based_tester/v93k.rb +8 -8
  189. data/lib/origen_testers/smartest_based_tester/v93k/builder.rb +89 -89
  190. data/lib/origen_testers/smartest_based_tester/v93k/builder/flow.rb +181 -181
  191. data/lib/origen_testers/smartest_based_tester/v93k/builder/pattern_master.rb +54 -54
  192. data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +10 -10
  193. data/lib/origen_testers/smartest_based_tester/v93k/generator.rb +19 -19
  194. data/lib/origen_testers/smartest_based_tester/v93k/pattern_compiler.rb +10 -10
  195. data/lib/origen_testers/smartest_based_tester/v93k/pattern_master.rb +10 -10
  196. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb +17 -17
  197. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb +13 -13
  198. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.tf.erb +236 -214
  199. data/lib/origen_testers/smartest_based_tester/v93k/templates/vars.tf.erb +48 -48
  200. data/lib/origen_testers/smartest_based_tester/v93k/test_method.rb +9 -9
  201. data/lib/origen_testers/smartest_based_tester/v93k/test_methods.rb +9 -9
  202. data/lib/origen_testers/smartest_based_tester/v93k/test_suite.rb +9 -9
  203. data/lib/origen_testers/smartest_based_tester/v93k/test_suites.rb +9 -9
  204. data/lib/origen_testers/smartest_based_tester/v93k/variables_file.rb +10 -10
  205. data/lib/origen_testers/test/basic_interface.rb +17 -17
  206. data/lib/origen_testers/test/block.rb +21 -21
  207. data/lib/origen_testers/test/custom_test_interface.rb +111 -111
  208. data/lib/origen_testers/test/dut.rb +295 -295
  209. data/lib/origen_testers/test/dut2.rb +76 -76
  210. data/lib/origen_testers/test/dut3.rb +244 -244
  211. data/lib/origen_testers/test/interface.rb +503 -503
  212. data/lib/origen_testers/test/nvm.rb +94 -94
  213. data/lib/origen_testers/timing.rb +368 -368
  214. data/lib/origen_testers/vector.rb +207 -207
  215. data/lib/origen_testers/vector_based_tester.rb +41 -41
  216. data/lib/origen_testers/vector_generator.rb +655 -655
  217. data/lib/origen_testers/vector_pipeline.rb +302 -302
  218. data/pattern/bitmap.rb +7 -7
  219. data/pattern/dc_instr.rb +7 -7
  220. data/pattern/delay.rb +7 -7
  221. data/pattern/freq_counter.rb +6 -6
  222. data/pattern/mem_test.rb +8 -8
  223. data/pattern/multi_vector.rb +122 -122
  224. data/pattern/multi_vector_plus1.rb +125 -125
  225. data/pattern/nvm/j750/add_late_pins.rb +3 -3
  226. data/pattern/nvm/j750/iterator_postfix_test_x_bx.rb +8 -8
  227. data/pattern/nvm/j750/iterator_test_x_bx.rb +8 -8
  228. data/pattern/nvm/j750/j750_halt.rb +159 -159
  229. data/pattern/nvm/j750/j750_workout.rb +209 -209
  230. data/pattern/nvm/j750/timing.rb +73 -73
  231. data/pattern/read_write_reg.rb +61 -61
  232. data/pattern/reset.rb +4 -4
  233. data/pattern/subroutines.rb +69 -69
  234. data/pattern/tester_overlay.rb +61 -52
  235. data/pattern/tester_store.rb +28 -28
  236. data/program/_additional_erase.rb +7 -7
  237. data/program/_efa_resources.rb +7 -7
  238. data/program/_erase.rb +25 -25
  239. data/program/_erase_vfy.rb +5 -5
  240. data/program/_iv_resources.rb +10 -10
  241. data/program/basic_interface.rb +5 -5
  242. data/program/components/_prb1_main.rb +222 -222
  243. data/program/components/_temp.rb +6 -6
  244. data/program/custom_tests.rb +10 -10
  245. data/program/flow_control.rb +422 -422
  246. data/program/prb1.rb +11 -11
  247. data/program/prb1_resources.rb +28 -28
  248. data/program/prb2.rb +27 -27
  249. data/program/test.rb +29 -29
  250. data/program/uflex_resources.rb +199 -199
  251. data/templates/example.txt.erb +53 -53
  252. data/templates/j750/program_sheet.txt.erb +9 -9
  253. data/templates/manifest/v93k.yaml.erb +22 -22
  254. data/templates/web/index.md.erb +51 -51
  255. data/templates/web/layouts/_basic.html.erb +15 -15
  256. data/templates/web/partials/_navbar.html.erb +22 -22
  257. data/templates/web/release_notes.md.erb +5 -5
  258. metadata +2 -2
@@ -1,21 +1,21 @@
1
- module OrigenTesters
2
- class IGXLBasedTester
3
- class Parser
4
- class Flows < ::OrigenTesters::Parser::SearchableArray
5
- attr_accessor :parser
6
-
7
- def initialize(options = {})
8
- @parser = options[:parser]
9
- end
10
-
11
- def import(file)
12
- self << Flow.new(file, parser: parser)
13
- end
14
-
15
- def inspect
16
- "<TestFlows: #{size}>"
17
- end
18
- end
19
- end
20
- end
21
- end
1
+ module OrigenTesters
2
+ class IGXLBasedTester
3
+ class Parser
4
+ class Flows < ::OrigenTesters::Parser::SearchableArray
5
+ attr_accessor :parser
6
+
7
+ def initialize(options = {})
8
+ @parser = options[:parser]
9
+ end
10
+
11
+ def import(file)
12
+ self << Flow.new(file, parser: parser)
13
+ end
14
+
15
+ def inspect
16
+ "<TestFlows: #{size}>"
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,92 +1,92 @@
1
- module OrigenTesters
2
- class IGXLBasedTester
3
- class Parser
4
- class PatternSet
5
- class Pattern
6
- attr_accessor :parser
7
-
8
- ATTRS = %w(pattern_set file_name start_label stop_label comment)
9
-
10
- ALIASES = {
11
- pattern: :file_name,
12
- file: :file_name,
13
- name: :file_name
14
- }
15
-
16
- # Generate readers for all attributes and their aliases
17
- ATTRS.each do |attr|
18
- attr_reader attr.to_sym
19
- end
20
-
21
- ALIASES.each do |_alias, attr|
22
- define_method("#{_alias}") do
23
- send(attr)
24
- end
25
- end
26
-
27
- def initialize(line)
28
- @line = line
29
- parse
30
- if valid?
31
- ATTRS.each_with_index do |attr, i|
32
- instance_variable_set("@#{attr}", components[i + 1])
33
- end
34
- end
35
- end
36
-
37
- def parse
38
- @components = @line.split("\t") unless @line.strip.empty?
39
- end
40
-
41
- def valid?
42
- components[1] && !components[1].empty? && components[1] != 'Pattern Set' &&
43
- components[2] && !components[2].empty?
44
- end
45
-
46
- def components
47
- @components ||= []
48
- end
49
- end
50
-
51
- def initialize(line, options = {})
52
- @parser = options[:parser]
53
- p = add_pattern_line(line)
54
- @name = p.pattern_set if p.valid?
55
- end
56
-
57
- def inspect # :nodoc:
58
- "<PatternSet: #{name}>"
59
- end
60
-
61
- def name
62
- @name
63
- end
64
-
65
- def patterns
66
- @patterns ||= []
67
- end
68
-
69
- def self.extract_name(line)
70
- new(line).name
71
- end
72
-
73
- def add_pattern_line(line)
74
- p = Pattern.new(line)
75
- patterns << Pattern.new(line) if p.valid?
76
- p
77
- end
78
-
79
- def valid?
80
- patterns.all?(&:valid?)
81
- end
82
-
83
- # Returns an array containing all pattern names contained in this
84
- # pattern set
85
- def pattern_names
86
- # This removes the path and extensions
87
- patterns.map { |pat| pat.name.gsub(/.*[\\\/]/, '').gsub(/\..*/, '') }
88
- end
89
- end
90
- end
91
- end
92
- end
1
+ module OrigenTesters
2
+ class IGXLBasedTester
3
+ class Parser
4
+ class PatternSet
5
+ class Pattern
6
+ attr_accessor :parser
7
+
8
+ ATTRS = %w(pattern_set file_name start_label stop_label comment)
9
+
10
+ ALIASES = {
11
+ pattern: :file_name,
12
+ file: :file_name,
13
+ name: :file_name
14
+ }
15
+
16
+ # Generate readers for all attributes and their aliases
17
+ ATTRS.each do |attr|
18
+ attr_reader attr.to_sym
19
+ end
20
+
21
+ ALIASES.each do |_alias, attr|
22
+ define_method("#{_alias}") do
23
+ send(attr)
24
+ end
25
+ end
26
+
27
+ def initialize(line)
28
+ @line = line
29
+ parse
30
+ if valid?
31
+ ATTRS.each_with_index do |attr, i|
32
+ instance_variable_set("@#{attr}", components[i + 1])
33
+ end
34
+ end
35
+ end
36
+
37
+ def parse
38
+ @components = @line.split("\t") unless @line.strip.empty?
39
+ end
40
+
41
+ def valid?
42
+ components[1] && !components[1].empty? && components[1] != 'Pattern Set' &&
43
+ components[2] && !components[2].empty?
44
+ end
45
+
46
+ def components
47
+ @components ||= []
48
+ end
49
+ end
50
+
51
+ def initialize(line, options = {})
52
+ @parser = options[:parser]
53
+ p = add_pattern_line(line)
54
+ @name = p.pattern_set if p.valid?
55
+ end
56
+
57
+ def inspect # :nodoc:
58
+ "<PatternSet: #{name}>"
59
+ end
60
+
61
+ def name
62
+ @name
63
+ end
64
+
65
+ def patterns
66
+ @patterns ||= []
67
+ end
68
+
69
+ def self.extract_name(line)
70
+ new(line).name
71
+ end
72
+
73
+ def add_pattern_line(line)
74
+ p = Pattern.new(line)
75
+ patterns << Pattern.new(line) if p.valid?
76
+ p
77
+ end
78
+
79
+ def valid?
80
+ patterns.all?(&:valid?)
81
+ end
82
+
83
+ # Returns an array containing all pattern names contained in this
84
+ # pattern set
85
+ def pattern_names
86
+ # This removes the path and extensions
87
+ patterns.map { |pat| pat.name.gsub(/.*[\\\/]/, '').gsub(/\..*/, '') }
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -1,31 +1,31 @@
1
- module OrigenTesters
2
- class IGXLBasedTester
3
- class Parser
4
- class PatternSets < ::OrigenTesters::Parser::SearchableHash
5
- attr_accessor :parser
6
-
7
- def initialize(options = {})
8
- @parser = options[:parser]
9
- end
10
-
11
- def import(file)
12
- File.readlines(file).each do |line|
13
- name = PatternSet.extract_name(line)
14
- if name
15
- if self[name]
16
- self[name].add_pattern_line(line)
17
- else
18
- l = PatternSet.new(line, parser: parser)
19
- self[l.name] = l if l.valid?
20
- end
21
- end
22
- end
23
- end
24
-
25
- def inspect
26
- "<Patsets: #{size}>"
27
- end
28
- end
29
- end
30
- end
31
- end
1
+ module OrigenTesters
2
+ class IGXLBasedTester
3
+ class Parser
4
+ class PatternSets < ::OrigenTesters::Parser::SearchableHash
5
+ attr_accessor :parser
6
+
7
+ def initialize(options = {})
8
+ @parser = options[:parser]
9
+ end
10
+
11
+ def import(file)
12
+ File.readlines(file).each do |line|
13
+ name = PatternSet.extract_name(line)
14
+ if name
15
+ if self[name]
16
+ self[name].add_pattern_line(line)
17
+ else
18
+ l = PatternSet.new(line, parser: parser)
19
+ self[l.name] = l if l.valid?
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ def inspect
26
+ "<Patsets: #{size}>"
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,420 +1,420 @@
1
- module OrigenTesters
2
- class IGXLBasedTester
3
- class Parser
4
- class TestInstance
5
- attr_accessor :parser
6
-
7
- TYPES = %w(
8
- functional board_pmu empty pin_pmu powersupply mto_memory
9
- )
10
-
11
- TYPE_ALIASES = {
12
- functional_t: :functional,
13
- boardpmu_t: :board_pmu,
14
- nvmboardpmucal_t: :board_pmu,
15
- nvmboardpmumeasure_t: :board_pmu,
16
- empty_t: :empty,
17
- pinpmu_t: :pin_pmu,
18
- nvmpinpmucal_t: :pin_pmu,
19
- nvmpinpmumeas_t: :pin_pmu,
20
- powersupply_t: :powersupply,
21
- mto_memory_t: :mto_memory
22
- }
23
-
24
- attributes = %w(
25
- test_name proc_type proc_name proc_called_as dc_category dc_selector ac_category ac_selector
26
- time_sets edge_sets pin_levels overlay
27
- )
28
- 80.times do |i|
29
- attributes << "arg#{i}"
30
- end
31
- attributes << 'comment'
32
-
33
- ATTRS = attributes
34
-
35
- ALIASES = {
36
- name: :test_name,
37
-
38
- functional: {
39
- pattern: :arg0,
40
- start_func: :arg1,
41
- pre_pat_func: :arg2,
42
- pre_test_func: :arg3,
43
- post_test_func: :arg4,
44
- post_pat_func: :arg5,
45
- end_func: :arg6,
46
- set_pass_fail: :arg7,
47
- start_func_args: :arg13,
48
- pre_pat_func_args: :arg14,
49
- pre_test_func_args: :arg15,
50
- post_test_func_args: :arg16,
51
- post_pat_func_args: :arg17,
52
- end_func_args: :arg18,
53
- wait_flags: :arg21,
54
- wait_time: :arg22,
55
- pat_flag_func: :arg23,
56
- pat_flag_func_args: :arg24,
57
- relay_mode: :arg25,
58
- threading: :arg26,
59
- match_all_sites: :arg27,
60
- capture_mode: :arg30,
61
- capture_what: :arg31,
62
- capture_memory: :arg32,
63
- capture_size: :arg33,
64
- datalog_mode: :arg34,
65
- data_type: :arg35
66
- },
67
-
68
- board_pmu: {
69
- hsp_start: :arg0,
70
- start_func: :arg1,
71
- pre_pat_func: :arg2,
72
- pre_test_func: :arg3,
73
- post_test_func: :arg4,
74
- post_pat_func: :arg5,
75
- end_func: :arg6,
76
- precond_pat: :arg7,
77
- hold_state_pat: :arg8,
78
- holdstate_pat: :arg8,
79
- pattern: :arg8,
80
- pcp_stop: :arg9,
81
- wait_flags: :arg10,
82
- start_lo: :arg11,
83
- init_lo: :arg11,
84
- start_hi: :arg12,
85
- init_hi: :arg12,
86
- start_hiz: :arg13,
87
- init_hiz: :arg13,
88
- float_pins: :arg14,
89
- pinlist: :arg15,
90
- measure_mode: :arg16,
91
- irange: :arg17,
92
- clamp: :arg18,
93
- vrange: :arg19,
94
- sampling_time: :arg20,
95
- samples: :arg21,
96
- setting_time: :arg22,
97
- hi_lo_lim_valid: :arg23,
98
- hi_limit: :arg24,
99
- lo_limit: :arg25,
100
- force_cond_1: :arg26,
101
- force_cond_2: :arg27,
102
- gang_pins_tested: :arg28,
103
- relay_mode: :arg29,
104
- wait_time_out: :arg30,
105
- start_func_args: :arg31,
106
- pre_pat_func_args: :arg32,
107
- pre_test_func_args: :arg33,
108
- post_test_func_args: :arg34,
109
- post_pat_func_args: :arg35,
110
- end_func_args: :arg36,
111
- pcp_start: :arg37,
112
- pcp_check_pg: :arg38,
113
- hsp_stop: :arg39,
114
- hsp_check_pg: :arg40,
115
- resume_pat: :arg41,
116
- utility_pins_1: :arg42,
117
- utility_pins_0: :arg43,
118
- pre_charge_enable: :arg44,
119
- pre_charge: :arg45,
120
- threading: :arg46
121
- },
122
-
123
- pin_pmu: {
124
- hsp_start: :arg0,
125
- start_func: :arg1,
126
- pre_pat_func: :arg2,
127
- pre_test_func: :arg3,
128
- post_test_func: :arg4,
129
- post_pat_func: :arg5,
130
- end_func: :arg6,
131
- precond_pat: :arg7,
132
- hold_state_pat: :arg8,
133
- holdstate_pat: :arg8,
134
- pattern: :arg8,
135
- pcp_stop: :arg9,
136
- wait_flags: :arg10,
137
- start_lo: :arg11,
138
- init_lo: :arg11,
139
- start_hi: :arg12,
140
- init_hi: :arg12,
141
- start_hiz: :arg13,
142
- init_hiz: :arg13,
143
- float_pins: :arg14,
144
- pinlist: :arg15,
145
- measure_mode: :arg16,
146
- irange: :arg17,
147
- setting_time: :arg18,
148
- hi_lo_lim_valid: :arg19,
149
- hi_limit: :arg20,
150
- lo_limit: :arg21,
151
- force_cond_1: :arg22,
152
- force_cond_2: :arg23,
153
- fload: :arg24,
154
- f_load: :arg24,
155
- relay_mode: :arg25,
156
- wait_time_out: :arg26,
157
- start_func_args: :arg27,
158
- pre_pat_func_args: :arg28,
159
- pre_test_func_args: :arg29,
160
- post_test_func_args: :arg30,
161
- post_pat_func_args: :arg31,
162
- end_func_args: :arg32,
163
- pcp_start: :arg33,
164
- pcp_check_pg: :arg34,
165
- hsp_stop: :arg35,
166
- hsp_check_pg: :arg36,
167
- sampling_time: :arg37,
168
- samples: :arg38,
169
- resume_pat: :arg39,
170
- vcl: :arg40,
171
- vch: :arg41,
172
- utility_pins_1: :arg42,
173
- utility_pins_0: :arg43,
174
- pre_charge_enable: :arg44,
175
- pre_charge: :arg45,
176
- threading: :arg46
177
- },
178
- mto_memory: {
179
- patterns: :arg0,
180
- pattern: :arg0,
181
- start_func: :arg1,
182
- start_of_body_f: :arg1,
183
- pre_pat_func: :arg2,
184
- pre_pat_f: :arg2,
185
- pre_test_func: :arg3,
186
- pre_test_f: :arg3,
187
- post_test_func: :arg4,
188
- post_test_f: :arg4,
189
- post_pat_func: :arg5,
190
- post_pat_f: :arg5,
191
- end_of_body_func: :arg6,
192
- end_of_body_f: :arg6,
193
- set_pass_fail: :arg7,
194
- init_lo: :arg8,
195
- start_lo: :arg8,
196
- init_hi: :arg9,
197
- start_hi: :arg9,
198
- init_hiz: :arg10,
199
- start_hiz: :arg10,
200
- float_pins: :arg11,
201
- start_of_body_func_args: :arg12,
202
- start_of_body_f_args: :arg12,
203
- pre_pat_func_args: :arg13,
204
- pre_pat_f_args: :arg13,
205
- pre_test_func_args: :arg14,
206
- pre_test_f_args: :arg14,
207
- post_test_func_args: :arg15,
208
- post_test_f_args: :arg15,
209
- post_pat_f_args: :arg16,
210
- end_of_body_func_args: :arg17,
211
- end_of_body_f_args: :arg17,
212
- utility_pins_1: :arg18,
213
- utility_pins_0: :arg19,
214
- wait_flags: :arg20,
215
- wait_time_out: :arg21,
216
- PatFlagF: :arg22,
217
- pat_flag_f: :arg22,
218
- pat_flag_func_args: :arg23,
219
- pat_flag_f_args: :arg23,
220
- relay_mode: :arg24,
221
- x_enable_mask: :arg29,
222
- x_shift_direction: :arg30,
223
- x_shift_input: :arg31,
224
- y_enable_mask: :arg36,
225
- y_shift_direction: :arg37,
226
- y_shift_input: :arg38,
227
- dga: :arg39,
228
- dgb: :arg40,
229
- dgc: :arg41,
230
- dgd: :arg42,
231
- dg_enable_mask: :arg43,
232
- dg_shift_direction: :arg44,
233
- dg_shift_input: :arg45,
234
- x_coincidence_enable_mask: :arg46,
235
- y_coincidence_enable_mask: :arg47,
236
- two_bit_dg_setup: :arg48,
237
- x_scramble_algorithm: :arg49,
238
- y_scramble_algorithm: :arg50,
239
- topo_inversion_algorithm: :arg51,
240
- utility_counter_a: :arg52,
241
- utility_counter_b: :arg53,
242
- utility_counter_c: :arg54,
243
- dut_data_source: :arg55,
244
- scramble_addr: :arg56,
245
- speed_mode: :arg57,
246
- resource_map: :arg58,
247
- receive_data: :arg59,
248
- data_to_capture: :arg60,
249
- capture_marker: :arg61,
250
- enable_wrapping: :arg62,
251
- capture_scrambled_address: :arg63,
252
- mapmem_0_input_set: :arg64,
253
- mapmem_1_input_set: :arg65,
254
- threading: :arg69,
255
- match_all_sites: :arg70
256
- },
257
-
258
- powersupply: {
259
- precond_pat: :arg0,
260
- pre_cond_pat: :arg0,
261
- start_func: :arg1,
262
- start_of_body_f: :arg1,
263
- pre_pat_func: :arg2,
264
- pre_pat_f: :arg2,
265
- pre_test_func: :arg3,
266
- pre_test_f: :arg3,
267
- post_test_func: :arg4,
268
- post_test_f: :arg4,
269
- post_pat_func: :arg5,
270
- post_pat_f: :arg5,
271
- end_func: :arg6,
272
- end_of_body_f: :arg6,
273
- hold_state_pat: :arg7,
274
- holdstate_pat: :arg7,
275
- wait_flags: :arg8,
276
- wait_time_out: :arg9,
277
- start_lo: :arg10,
278
- start_init_lo: :arg10,
279
- init_lo: :arg10,
280
- start_hi: :arg11,
281
- start_init_hi: :arg11,
282
- init_hi: :arg11,
283
- start_hiz: :arg12,
284
- start_init_hiz: :arg12,
285
- init_hiz: :arg12,
286
- float_pins: :arg13,
287
- irange: :arg14,
288
- sampling_time: :arg15,
289
- samples: :arg16,
290
- settling_time: :arg17,
291
- hi_lo_lim_valid: :arg18,
292
- hi_lo_limit_valid: :arg18,
293
- hi_limit: :arg19,
294
- lo_limit: :arg20,
295
- force_cond_1: :arg21,
296
- force_cond: :arg21,
297
- force_condition: :arg21,
298
- force_condition_1: :arg21,
299
- force_cond_2: :arg22,
300
- force_condition_2: :arg22,
301
- power_pins: :arg23,
302
- pins: :arg23,
303
- pin: :arg23,
304
- force_source: :arg24,
305
- pcp_start: :arg25,
306
- pcp_stop: :arg26,
307
- start_func_args: :arg27,
308
- start_of_body_f_args: :arg27,
309
- pre_pat_func_args: :arg28,
310
- pre_pat_f_args: :arg28,
311
- pre_test_func_args: :arg29,
312
- pre_test_f_args: :arg29,
313
- post_test_func_args: :arg30,
314
- post_test_f_args: :arg30,
315
- post_pat_func_args: :arg31,
316
- post_pat_f_args: :arg31,
317
- end_func_args: :arg32,
318
- end_of_body_f_args: :arg32,
319
- hsp_start: :arg33,
320
- hsp_stop: :arg34,
321
- pcp_check_pg: :arg35,
322
- clamp: :arg36,
323
- hsp_check_pg: :arg37,
324
- resume_pat: :arg38,
325
- relay_mode: :arg39,
326
- utility_pins_1: :arg40,
327
- utility_pins_0: :arg41,
328
- test_control: :arg42,
329
- serialize_meas: :arg43,
330
- serialize_meas_func: :arg44,
331
- serialize_meas_f: :arg44,
332
- serialize_meas_func_args: :arg45,
333
- serialize_meas_f_args: :arg45,
334
- precond_pat_clam: :arg46,
335
- threading: :arg47
336
- }
337
- }
338
-
339
- # Make readers for each low level attribute
340
- ATTRS.each do |attr|
341
- attr_reader attr
342
- end
343
-
344
- # And the aliases
345
- ALIASES.each do |_alias, attr|
346
- define_method("#{_alias}") do
347
- send(attr)
348
- end
349
- end
350
-
351
- def initialize(line, options = {})
352
- @parser = options[:parser]
353
- @line = line
354
- parse
355
- if valid?
356
- ATTRS.each_with_index do |attr, i|
357
- instance_variable_set("@#{attr}", components[i + 1])
358
- end
359
- if ALIASES[type]
360
- ALIASES[type].each do |_alias, attr|
361
- define_singleton_method("#{_alias}") do
362
- send(attr)
363
- end
364
- end
365
- end
366
- end
367
- end
368
-
369
- def inspect # :nodoc:
370
- "<TestInstance: #{name}, Type: #{type}>"
371
- end
372
-
373
- def description
374
- parser.descriptions.test_instance(name: name)
375
- end
376
-
377
- def type
378
- TYPE_ALIASES[proc_name.downcase.to_sym] || :unsupported
379
- end
380
-
381
- def parse
382
- @components = @line.split("\t") unless @line.strip.empty?
383
- end
384
-
385
- def valid?
386
- components[4] && ['Excel Macro', 'VB DLL'].include?(components[4])
387
- end
388
-
389
- def components
390
- @components ||= []
391
- end
392
-
393
- # Returns an array of all pattern names referenced in this test instance
394
- def patterns
395
- if self.respond_to?(:pattern)
396
- pattern.split(',').map do |pat|
397
- extract_pattern_from_patset(pat)
398
- end.flatten.map { |pat| pat.gsub(/.*[\\\/]/, '').gsub(/\..*/, '') }
399
- end
400
- end
401
-
402
- def extract_pattern_from_patset(patset)
403
- pset = parser.pattern_sets.where(name: patset, exact: true)
404
- if pset.size > 1
405
- puts "Warning multiple pattern sets called #{patset} found, using the first one"
406
- end
407
- if pset.size == 0
408
- patset
409
- else
410
- pset.first.pattern_names
411
- end
412
- end
413
-
414
- def vdd
415
- parser.dc_specs.where(name: 'VDD', exact: true).first.lookup(dc_category, dc_selector)
416
- end
417
- end
418
- end
419
- end
420
- end
1
+ module OrigenTesters
2
+ class IGXLBasedTester
3
+ class Parser
4
+ class TestInstance
5
+ attr_accessor :parser
6
+
7
+ TYPES = %w(
8
+ functional board_pmu empty pin_pmu powersupply mto_memory
9
+ )
10
+
11
+ TYPE_ALIASES = {
12
+ functional_t: :functional,
13
+ boardpmu_t: :board_pmu,
14
+ nvmboardpmucal_t: :board_pmu,
15
+ nvmboardpmumeasure_t: :board_pmu,
16
+ empty_t: :empty,
17
+ pinpmu_t: :pin_pmu,
18
+ nvmpinpmucal_t: :pin_pmu,
19
+ nvmpinpmumeas_t: :pin_pmu,
20
+ powersupply_t: :powersupply,
21
+ mto_memory_t: :mto_memory
22
+ }
23
+
24
+ attributes = %w(
25
+ test_name proc_type proc_name proc_called_as dc_category dc_selector ac_category ac_selector
26
+ time_sets edge_sets pin_levels overlay
27
+ )
28
+ 80.times do |i|
29
+ attributes << "arg#{i}"
30
+ end
31
+ attributes << 'comment'
32
+
33
+ ATTRS = attributes
34
+
35
+ ALIASES = {
36
+ name: :test_name,
37
+
38
+ functional: {
39
+ pattern: :arg0,
40
+ start_func: :arg1,
41
+ pre_pat_func: :arg2,
42
+ pre_test_func: :arg3,
43
+ post_test_func: :arg4,
44
+ post_pat_func: :arg5,
45
+ end_func: :arg6,
46
+ set_pass_fail: :arg7,
47
+ start_func_args: :arg13,
48
+ pre_pat_func_args: :arg14,
49
+ pre_test_func_args: :arg15,
50
+ post_test_func_args: :arg16,
51
+ post_pat_func_args: :arg17,
52
+ end_func_args: :arg18,
53
+ wait_flags: :arg21,
54
+ wait_time: :arg22,
55
+ pat_flag_func: :arg23,
56
+ pat_flag_func_args: :arg24,
57
+ relay_mode: :arg25,
58
+ threading: :arg26,
59
+ match_all_sites: :arg27,
60
+ capture_mode: :arg30,
61
+ capture_what: :arg31,
62
+ capture_memory: :arg32,
63
+ capture_size: :arg33,
64
+ datalog_mode: :arg34,
65
+ data_type: :arg35
66
+ },
67
+
68
+ board_pmu: {
69
+ hsp_start: :arg0,
70
+ start_func: :arg1,
71
+ pre_pat_func: :arg2,
72
+ pre_test_func: :arg3,
73
+ post_test_func: :arg4,
74
+ post_pat_func: :arg5,
75
+ end_func: :arg6,
76
+ precond_pat: :arg7,
77
+ hold_state_pat: :arg8,
78
+ holdstate_pat: :arg8,
79
+ pattern: :arg8,
80
+ pcp_stop: :arg9,
81
+ wait_flags: :arg10,
82
+ start_lo: :arg11,
83
+ init_lo: :arg11,
84
+ start_hi: :arg12,
85
+ init_hi: :arg12,
86
+ start_hiz: :arg13,
87
+ init_hiz: :arg13,
88
+ float_pins: :arg14,
89
+ pinlist: :arg15,
90
+ measure_mode: :arg16,
91
+ irange: :arg17,
92
+ clamp: :arg18,
93
+ vrange: :arg19,
94
+ sampling_time: :arg20,
95
+ samples: :arg21,
96
+ setting_time: :arg22,
97
+ hi_lo_lim_valid: :arg23,
98
+ hi_limit: :arg24,
99
+ lo_limit: :arg25,
100
+ force_cond_1: :arg26,
101
+ force_cond_2: :arg27,
102
+ gang_pins_tested: :arg28,
103
+ relay_mode: :arg29,
104
+ wait_time_out: :arg30,
105
+ start_func_args: :arg31,
106
+ pre_pat_func_args: :arg32,
107
+ pre_test_func_args: :arg33,
108
+ post_test_func_args: :arg34,
109
+ post_pat_func_args: :arg35,
110
+ end_func_args: :arg36,
111
+ pcp_start: :arg37,
112
+ pcp_check_pg: :arg38,
113
+ hsp_stop: :arg39,
114
+ hsp_check_pg: :arg40,
115
+ resume_pat: :arg41,
116
+ utility_pins_1: :arg42,
117
+ utility_pins_0: :arg43,
118
+ pre_charge_enable: :arg44,
119
+ pre_charge: :arg45,
120
+ threading: :arg46
121
+ },
122
+
123
+ pin_pmu: {
124
+ hsp_start: :arg0,
125
+ start_func: :arg1,
126
+ pre_pat_func: :arg2,
127
+ pre_test_func: :arg3,
128
+ post_test_func: :arg4,
129
+ post_pat_func: :arg5,
130
+ end_func: :arg6,
131
+ precond_pat: :arg7,
132
+ hold_state_pat: :arg8,
133
+ holdstate_pat: :arg8,
134
+ pattern: :arg8,
135
+ pcp_stop: :arg9,
136
+ wait_flags: :arg10,
137
+ start_lo: :arg11,
138
+ init_lo: :arg11,
139
+ start_hi: :arg12,
140
+ init_hi: :arg12,
141
+ start_hiz: :arg13,
142
+ init_hiz: :arg13,
143
+ float_pins: :arg14,
144
+ pinlist: :arg15,
145
+ measure_mode: :arg16,
146
+ irange: :arg17,
147
+ setting_time: :arg18,
148
+ hi_lo_lim_valid: :arg19,
149
+ hi_limit: :arg20,
150
+ lo_limit: :arg21,
151
+ force_cond_1: :arg22,
152
+ force_cond_2: :arg23,
153
+ fload: :arg24,
154
+ f_load: :arg24,
155
+ relay_mode: :arg25,
156
+ wait_time_out: :arg26,
157
+ start_func_args: :arg27,
158
+ pre_pat_func_args: :arg28,
159
+ pre_test_func_args: :arg29,
160
+ post_test_func_args: :arg30,
161
+ post_pat_func_args: :arg31,
162
+ end_func_args: :arg32,
163
+ pcp_start: :arg33,
164
+ pcp_check_pg: :arg34,
165
+ hsp_stop: :arg35,
166
+ hsp_check_pg: :arg36,
167
+ sampling_time: :arg37,
168
+ samples: :arg38,
169
+ resume_pat: :arg39,
170
+ vcl: :arg40,
171
+ vch: :arg41,
172
+ utility_pins_1: :arg42,
173
+ utility_pins_0: :arg43,
174
+ pre_charge_enable: :arg44,
175
+ pre_charge: :arg45,
176
+ threading: :arg46
177
+ },
178
+ mto_memory: {
179
+ patterns: :arg0,
180
+ pattern: :arg0,
181
+ start_func: :arg1,
182
+ start_of_body_f: :arg1,
183
+ pre_pat_func: :arg2,
184
+ pre_pat_f: :arg2,
185
+ pre_test_func: :arg3,
186
+ pre_test_f: :arg3,
187
+ post_test_func: :arg4,
188
+ post_test_f: :arg4,
189
+ post_pat_func: :arg5,
190
+ post_pat_f: :arg5,
191
+ end_of_body_func: :arg6,
192
+ end_of_body_f: :arg6,
193
+ set_pass_fail: :arg7,
194
+ init_lo: :arg8,
195
+ start_lo: :arg8,
196
+ init_hi: :arg9,
197
+ start_hi: :arg9,
198
+ init_hiz: :arg10,
199
+ start_hiz: :arg10,
200
+ float_pins: :arg11,
201
+ start_of_body_func_args: :arg12,
202
+ start_of_body_f_args: :arg12,
203
+ pre_pat_func_args: :arg13,
204
+ pre_pat_f_args: :arg13,
205
+ pre_test_func_args: :arg14,
206
+ pre_test_f_args: :arg14,
207
+ post_test_func_args: :arg15,
208
+ post_test_f_args: :arg15,
209
+ post_pat_f_args: :arg16,
210
+ end_of_body_func_args: :arg17,
211
+ end_of_body_f_args: :arg17,
212
+ utility_pins_1: :arg18,
213
+ utility_pins_0: :arg19,
214
+ wait_flags: :arg20,
215
+ wait_time_out: :arg21,
216
+ PatFlagF: :arg22,
217
+ pat_flag_f: :arg22,
218
+ pat_flag_func_args: :arg23,
219
+ pat_flag_f_args: :arg23,
220
+ relay_mode: :arg24,
221
+ x_enable_mask: :arg29,
222
+ x_shift_direction: :arg30,
223
+ x_shift_input: :arg31,
224
+ y_enable_mask: :arg36,
225
+ y_shift_direction: :arg37,
226
+ y_shift_input: :arg38,
227
+ dga: :arg39,
228
+ dgb: :arg40,
229
+ dgc: :arg41,
230
+ dgd: :arg42,
231
+ dg_enable_mask: :arg43,
232
+ dg_shift_direction: :arg44,
233
+ dg_shift_input: :arg45,
234
+ x_coincidence_enable_mask: :arg46,
235
+ y_coincidence_enable_mask: :arg47,
236
+ two_bit_dg_setup: :arg48,
237
+ x_scramble_algorithm: :arg49,
238
+ y_scramble_algorithm: :arg50,
239
+ topo_inversion_algorithm: :arg51,
240
+ utility_counter_a: :arg52,
241
+ utility_counter_b: :arg53,
242
+ utility_counter_c: :arg54,
243
+ dut_data_source: :arg55,
244
+ scramble_addr: :arg56,
245
+ speed_mode: :arg57,
246
+ resource_map: :arg58,
247
+ receive_data: :arg59,
248
+ data_to_capture: :arg60,
249
+ capture_marker: :arg61,
250
+ enable_wrapping: :arg62,
251
+ capture_scrambled_address: :arg63,
252
+ mapmem_0_input_set: :arg64,
253
+ mapmem_1_input_set: :arg65,
254
+ threading: :arg69,
255
+ match_all_sites: :arg70
256
+ },
257
+
258
+ powersupply: {
259
+ precond_pat: :arg0,
260
+ pre_cond_pat: :arg0,
261
+ start_func: :arg1,
262
+ start_of_body_f: :arg1,
263
+ pre_pat_func: :arg2,
264
+ pre_pat_f: :arg2,
265
+ pre_test_func: :arg3,
266
+ pre_test_f: :arg3,
267
+ post_test_func: :arg4,
268
+ post_test_f: :arg4,
269
+ post_pat_func: :arg5,
270
+ post_pat_f: :arg5,
271
+ end_func: :arg6,
272
+ end_of_body_f: :arg6,
273
+ hold_state_pat: :arg7,
274
+ holdstate_pat: :arg7,
275
+ wait_flags: :arg8,
276
+ wait_time_out: :arg9,
277
+ start_lo: :arg10,
278
+ start_init_lo: :arg10,
279
+ init_lo: :arg10,
280
+ start_hi: :arg11,
281
+ start_init_hi: :arg11,
282
+ init_hi: :arg11,
283
+ start_hiz: :arg12,
284
+ start_init_hiz: :arg12,
285
+ init_hiz: :arg12,
286
+ float_pins: :arg13,
287
+ irange: :arg14,
288
+ sampling_time: :arg15,
289
+ samples: :arg16,
290
+ settling_time: :arg17,
291
+ hi_lo_lim_valid: :arg18,
292
+ hi_lo_limit_valid: :arg18,
293
+ hi_limit: :arg19,
294
+ lo_limit: :arg20,
295
+ force_cond_1: :arg21,
296
+ force_cond: :arg21,
297
+ force_condition: :arg21,
298
+ force_condition_1: :arg21,
299
+ force_cond_2: :arg22,
300
+ force_condition_2: :arg22,
301
+ power_pins: :arg23,
302
+ pins: :arg23,
303
+ pin: :arg23,
304
+ force_source: :arg24,
305
+ pcp_start: :arg25,
306
+ pcp_stop: :arg26,
307
+ start_func_args: :arg27,
308
+ start_of_body_f_args: :arg27,
309
+ pre_pat_func_args: :arg28,
310
+ pre_pat_f_args: :arg28,
311
+ pre_test_func_args: :arg29,
312
+ pre_test_f_args: :arg29,
313
+ post_test_func_args: :arg30,
314
+ post_test_f_args: :arg30,
315
+ post_pat_func_args: :arg31,
316
+ post_pat_f_args: :arg31,
317
+ end_func_args: :arg32,
318
+ end_of_body_f_args: :arg32,
319
+ hsp_start: :arg33,
320
+ hsp_stop: :arg34,
321
+ pcp_check_pg: :arg35,
322
+ clamp: :arg36,
323
+ hsp_check_pg: :arg37,
324
+ resume_pat: :arg38,
325
+ relay_mode: :arg39,
326
+ utility_pins_1: :arg40,
327
+ utility_pins_0: :arg41,
328
+ test_control: :arg42,
329
+ serialize_meas: :arg43,
330
+ serialize_meas_func: :arg44,
331
+ serialize_meas_f: :arg44,
332
+ serialize_meas_func_args: :arg45,
333
+ serialize_meas_f_args: :arg45,
334
+ precond_pat_clam: :arg46,
335
+ threading: :arg47
336
+ }
337
+ }
338
+
339
+ # Make readers for each low level attribute
340
+ ATTRS.each do |attr|
341
+ attr_reader attr
342
+ end
343
+
344
+ # And the aliases
345
+ ALIASES.each do |_alias, attr|
346
+ define_method("#{_alias}") do
347
+ send(attr)
348
+ end
349
+ end
350
+
351
+ def initialize(line, options = {})
352
+ @parser = options[:parser]
353
+ @line = line
354
+ parse
355
+ if valid?
356
+ ATTRS.each_with_index do |attr, i|
357
+ instance_variable_set("@#{attr}", components[i + 1])
358
+ end
359
+ if ALIASES[type]
360
+ ALIASES[type].each do |_alias, attr|
361
+ define_singleton_method("#{_alias}") do
362
+ send(attr)
363
+ end
364
+ end
365
+ end
366
+ end
367
+ end
368
+
369
+ def inspect # :nodoc:
370
+ "<TestInstance: #{name}, Type: #{type}>"
371
+ end
372
+
373
+ def description
374
+ parser.descriptions.test_instance(name: name)
375
+ end
376
+
377
+ def type
378
+ TYPE_ALIASES[proc_name.downcase.to_sym] || :unsupported
379
+ end
380
+
381
+ def parse
382
+ @components = @line.split("\t") unless @line.strip.empty?
383
+ end
384
+
385
+ def valid?
386
+ components[4] && ['Excel Macro', 'VB DLL'].include?(components[4])
387
+ end
388
+
389
+ def components
390
+ @components ||= []
391
+ end
392
+
393
+ # Returns an array of all pattern names referenced in this test instance
394
+ def patterns
395
+ if self.respond_to?(:pattern)
396
+ pattern.split(',').map do |pat|
397
+ extract_pattern_from_patset(pat)
398
+ end.flatten.map { |pat| pat.gsub(/.*[\\\/]/, '').gsub(/\..*/, '') }
399
+ end
400
+ end
401
+
402
+ def extract_pattern_from_patset(patset)
403
+ pset = parser.pattern_sets.where(name: patset, exact: true)
404
+ if pset.size > 1
405
+ puts "Warning multiple pattern sets called #{patset} found, using the first one"
406
+ end
407
+ if pset.size == 0
408
+ patset
409
+ else
410
+ pset.first.pattern_names
411
+ end
412
+ end
413
+
414
+ def vdd
415
+ parser.dc_specs.where(name: 'VDD', exact: true).first.lookup(dc_category, dc_selector)
416
+ end
417
+ end
418
+ end
419
+ end
420
+ end