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,66 +1,66 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class Base
4
- class TestInstanceGroup
5
- attr_accessor :name, :version, :append_version
6
-
7
- include Enumerable
8
-
9
- def initialize(name, options = {})
10
- @name = name
11
- @store = []
12
- @append_version = true
13
- end
14
-
15
- def name
16
- if unversioned_name
17
- if version && @append_version
18
- "#{unversioned_name}_v#{version}"
19
- else
20
- unversioned_name.to_s
21
- end
22
- end
23
- end
24
-
25
- def unversioned_name
26
- if @name
27
- if @name =~ /grp$/
28
- @name
29
- else
30
- "#{@name}_grp"
31
- end
32
- end
33
- end
34
-
35
- def <<(instance)
36
- @store << instance
37
- end
38
-
39
- def size
40
- @store.size
41
- end
42
-
43
- def each
44
- @store.each { |ins| yield ins }
45
- end
46
-
47
- def ==(other_instance_group)
48
- self.class == other_instance_group.class &&
49
- unversioned_name.to_s == other_instance_group.unversioned_name.to_s &&
50
- size == other_instance_group.size &&
51
- self.all? do |ins|
52
- other_instance_group.any? { |other_ins| ins == other_ins }
53
- end
54
- end
55
-
56
- def finalize
57
- lambda do |group|
58
- each do |ti|
59
- ti.finalize.call(ti) if ti.finalize
60
- end
61
- end
62
- end
63
- end
64
- end
65
- end
66
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class Base
4
+ class TestInstanceGroup
5
+ attr_accessor :name, :version, :append_version
6
+
7
+ include Enumerable
8
+
9
+ def initialize(name, options = {})
10
+ @name = name
11
+ @store = []
12
+ @append_version = true
13
+ end
14
+
15
+ def name
16
+ if unversioned_name
17
+ if version && @append_version
18
+ "#{unversioned_name}_v#{version}"
19
+ else
20
+ unversioned_name.to_s
21
+ end
22
+ end
23
+ end
24
+
25
+ def unversioned_name
26
+ if @name
27
+ if @name =~ /grp$/
28
+ @name
29
+ else
30
+ "#{@name}_grp"
31
+ end
32
+ end
33
+ end
34
+
35
+ def <<(instance)
36
+ @store << instance
37
+ end
38
+
39
+ def size
40
+ @store.size
41
+ end
42
+
43
+ def each
44
+ @store.each { |ins| yield ins }
45
+ end
46
+
47
+ def ==(other_instance_group)
48
+ self.class == other_instance_group.class &&
49
+ unversioned_name.to_s == other_instance_group.unversioned_name.to_s &&
50
+ size == other_instance_group.size &&
51
+ self.all? do |ins|
52
+ other_instance_group.any? { |other_ins| ins == other_ins }
53
+ end
54
+ end
55
+
56
+ def finalize
57
+ lambda do |group|
58
+ each do |ti|
59
+ ti.finalize.call(ti) if ti.finalize
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -1,212 +1,212 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class Base
4
- class TestInstances
5
- include OrigenTesters::Generator
6
-
7
- autoload :CustomTil, 'origen_testers/igxl_based_tester/base/test_instances/custom_til'
8
-
9
- OUTPUT_POSTFIX = 'instances'
10
-
11
- class IndexedString < ::String
12
- attr_accessor :index
13
-
14
- def name
15
- self
16
- end
17
- end
18
-
19
- def add(name, type, options = {})
20
- options = {
21
- test_instance_class: platform::TestInstance
22
- }.merge(options)
23
- klass =
24
- if type.is_a?(Symbol) || type.is_a?(String)
25
- ins = options.delete(:test_instance_class).new(name, type, options)
26
- else
27
- ins = type
28
- end
29
- if @current_group
30
- @current_group << ins
31
- else
32
- collection << ins
33
- end
34
- c = Origen.interface.consume_comments
35
- Origen.interface.descriptions.add_for_test_definition(name, c)
36
- ins
37
- end
38
-
39
- # IG-XL doesn't have a formal instance group type and instead declares them anonymously
40
- # whenever test instances of the same name appear consecutively in the test instance sheet.
41
- # However when it comes to generating a test program life becomes much easier if we have
42
- # a way to explicitly declare instances as part of a group - this makes duplicate tracking
43
- # and sorting of the test instance sheet much easier.
44
- #
45
- # Use this method to generate instance groups via a block. Within the block you should
46
- # generate instances as normal and they will automatically be assigned to the current group.
47
- # Note that the name of the instances generated within the group is discarded and replaced
48
- # with the name of the group. Origen automatically appends "grp" to this name to highlight
49
- # instances that were generated as part of the group.
50
- #
51
- # test_instances.group("erase_all_blocks") do |group|
52
- # # Generate instances here as normal
53
- # test_instances.functional("erase_blk0")
54
- # test_instances.functional("erase_blk1")
55
- # end
56
- #
57
- # The group object is passed into the block but usually you should not need to interact
58
- # with this directly except maybe to set the name if it is not yet established at the point
59
- # where the group is initiated:
60
- #
61
- # test_instances.group do |group|
62
- # # Generate instances here as normal
63
- # group.name = "group_blah"
64
- # end
65
- #
66
- # A common way to generate groups is to create a helper method in your application which
67
- # is responsible for creating groups as required:
68
- #
69
- # def group_wrapper(name, options)
70
- # if options[:by_block]
71
- # test_instances.group(name) do |group|
72
- # yield group
73
- # end
74
- # else
75
- # yield
76
- # end
77
- # end
78
- #
79
- # In that case the group argument becomes quite useful for branching based on whether you
80
- # are generating a group or standalone instances:
81
- #
82
- # group_wrapper(name, options) do |group|
83
- # if group
84
- # # Generate group instances
85
- # else
86
- # # Generate standalone instances
87
- # end
88
- # end
89
- def group(name = nil, options = {})
90
- name, options = nil, name if name.is_a?(Hash)
91
- @current_group = platform::TestInstanceGroup.new(name, options)
92
- collection << @current_group
93
- yield @current_group
94
- @current_group = nil
95
- end
96
- alias_method :add_group, :group
97
-
98
- def finalize(options = {}) # :nodoc:
99
- uniq!
100
- sort_and_finalize!
101
- end
102
-
103
- def uniq! # :nodoc:
104
- uniques = []
105
- versions = {}
106
- multi_version_tests = {}
107
- collection.each do |instance|
108
- # If a uniquely named instance is found add it, otherwise update the version
109
- # of the current instance to match that of the existing instance that it duplicates
110
- unless uniques.any? do |i|
111
- if i == instance
112
- instance.version = i.version
113
- true
114
- else
115
- false
116
- end
117
- end
118
- if instance.respond_to?(:version=)
119
- versions[instance.unversioned_name] ||= 0
120
- versions[instance.unversioned_name] += 1
121
- if versions[instance.unversioned_name] > 1
122
- multi_version_tests[instance.unversioned_name] = true
123
- end
124
- instance.version = versions[instance.unversioned_name]
125
- end
126
- uniques << instance
127
- end
128
- end
129
- # This final loop disables the version identifier for tests that have only a single version,
130
- # this makes it clearer when multiple versions exist - whenever you see a v1 you know there
131
- # is at least a v2 also.
132
- collection.map! do |instance|
133
- if instance.respond_to?(:version=)
134
- unless multi_version_tests[instance.unversioned_name]
135
- instance.append_version = false
136
- end
137
- end
138
- instance
139
- end
140
- self.collection = uniques
141
- end
142
-
143
- def sort_and_finalize! # :nodoc:
144
- # Present the instances in the final sheet in alphabetical order
145
- collection.map!.with_index do |ins, i|
146
- if ins.is_a?(String) # Can happen if content has been rendered in from a template
147
- ins = IndexedString.new(ins)
148
- else
149
- ins.finalize.call(ins) if ins.finalize
150
- end
151
- ins
152
- end
153
- collection.sort! { |a, b| [a.name.to_s] <=> [b.name.to_s] }
154
- end
155
-
156
- def bpmu(name, options = {})
157
- add(name, :board_pmu, options)
158
- end
159
- alias_method :board_pmu, :bpmu
160
-
161
- def powersupply(name, options = {})
162
- add(name, :powersupply, options)
163
- end
164
- alias_method :power_supply, :powersupply
165
-
166
- def ppmu(name, options = {})
167
- add(name, :pin_pmu, options)
168
- end
169
- alias_method :pin_pmu, :ppmu
170
-
171
- def functional(name, options = {})
172
- add(name, :functional, options)
173
- end
174
-
175
- def empty(name, options = {})
176
- add(name, :empty, options)
177
- end
178
-
179
- def other(name, options = {})
180
- add(name, :other, options)
181
- end
182
-
183
- def apmu_powersupply(name, options = {})
184
- add(name, :apmu_powersupply, options)
185
- end
186
-
187
- def mto_memory(name, options = {})
188
- add(name, :mto_memory, options)
189
- end
190
-
191
- # Creates an accessor for custom test method libraries the first time they are called
192
- def method_missing(method, *args, &block)
193
- custom_tils = Origen.interface.send(:custom_tils)
194
- if custom_tils[method]
195
- ti = CustomTil.new(self, custom_tils[method])
196
- instance_variable_set "@#{method}", ti
197
- define_singleton_method method do
198
- instance_variable_get("@#{method}")
199
- end
200
- send(method)
201
- else
202
- super
203
- end
204
- end
205
-
206
- def respond_to?(method)
207
- !!Origen.interface.send(:custom_tils)[method] || super
208
- end
209
- end
210
- end
211
- end
212
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class Base
4
+ class TestInstances
5
+ include OrigenTesters::Generator
6
+
7
+ autoload :CustomTil, 'origen_testers/igxl_based_tester/base/test_instances/custom_til'
8
+
9
+ OUTPUT_POSTFIX = 'instances'
10
+
11
+ class IndexedString < ::String
12
+ attr_accessor :index
13
+
14
+ def name
15
+ self
16
+ end
17
+ end
18
+
19
+ def add(name, type, options = {})
20
+ options = {
21
+ test_instance_class: platform::TestInstance
22
+ }.merge(options)
23
+ klass =
24
+ if type.is_a?(Symbol) || type.is_a?(String)
25
+ ins = options.delete(:test_instance_class).new(name, type, options)
26
+ else
27
+ ins = type
28
+ end
29
+ if @current_group
30
+ @current_group << ins
31
+ else
32
+ collection << ins
33
+ end
34
+ c = Origen.interface.consume_comments
35
+ Origen.interface.descriptions.add_for_test_definition(name, c)
36
+ ins
37
+ end
38
+
39
+ # IG-XL doesn't have a formal instance group type and instead declares them anonymously
40
+ # whenever test instances of the same name appear consecutively in the test instance sheet.
41
+ # However when it comes to generating a test program life becomes much easier if we have
42
+ # a way to explicitly declare instances as part of a group - this makes duplicate tracking
43
+ # and sorting of the test instance sheet much easier.
44
+ #
45
+ # Use this method to generate instance groups via a block. Within the block you should
46
+ # generate instances as normal and they will automatically be assigned to the current group.
47
+ # Note that the name of the instances generated within the group is discarded and replaced
48
+ # with the name of the group. Origen automatically appends "grp" to this name to highlight
49
+ # instances that were generated as part of the group.
50
+ #
51
+ # test_instances.group("erase_all_blocks") do |group|
52
+ # # Generate instances here as normal
53
+ # test_instances.functional("erase_blk0")
54
+ # test_instances.functional("erase_blk1")
55
+ # end
56
+ #
57
+ # The group object is passed into the block but usually you should not need to interact
58
+ # with this directly except maybe to set the name if it is not yet established at the point
59
+ # where the group is initiated:
60
+ #
61
+ # test_instances.group do |group|
62
+ # # Generate instances here as normal
63
+ # group.name = "group_blah"
64
+ # end
65
+ #
66
+ # A common way to generate groups is to create a helper method in your application which
67
+ # is responsible for creating groups as required:
68
+ #
69
+ # def group_wrapper(name, options)
70
+ # if options[:by_block]
71
+ # test_instances.group(name) do |group|
72
+ # yield group
73
+ # end
74
+ # else
75
+ # yield
76
+ # end
77
+ # end
78
+ #
79
+ # In that case the group argument becomes quite useful for branching based on whether you
80
+ # are generating a group or standalone instances:
81
+ #
82
+ # group_wrapper(name, options) do |group|
83
+ # if group
84
+ # # Generate group instances
85
+ # else
86
+ # # Generate standalone instances
87
+ # end
88
+ # end
89
+ def group(name = nil, options = {})
90
+ name, options = nil, name if name.is_a?(Hash)
91
+ @current_group = platform::TestInstanceGroup.new(name, options)
92
+ collection << @current_group
93
+ yield @current_group
94
+ @current_group = nil
95
+ end
96
+ alias_method :add_group, :group
97
+
98
+ def finalize(options = {}) # :nodoc:
99
+ uniq!
100
+ sort_and_finalize!
101
+ end
102
+
103
+ def uniq! # :nodoc:
104
+ uniques = []
105
+ versions = {}
106
+ multi_version_tests = {}
107
+ collection.each do |instance|
108
+ # If a uniquely named instance is found add it, otherwise update the version
109
+ # of the current instance to match that of the existing instance that it duplicates
110
+ unless uniques.any? do |i|
111
+ if i == instance
112
+ instance.version = i.version
113
+ true
114
+ else
115
+ false
116
+ end
117
+ end
118
+ if instance.respond_to?(:version=)
119
+ versions[instance.unversioned_name] ||= 0
120
+ versions[instance.unversioned_name] += 1
121
+ if versions[instance.unversioned_name] > 1
122
+ multi_version_tests[instance.unversioned_name] = true
123
+ end
124
+ instance.version = versions[instance.unversioned_name]
125
+ end
126
+ uniques << instance
127
+ end
128
+ end
129
+ # This final loop disables the version identifier for tests that have only a single version,
130
+ # this makes it clearer when multiple versions exist - whenever you see a v1 you know there
131
+ # is at least a v2 also.
132
+ collection.map! do |instance|
133
+ if instance.respond_to?(:version=)
134
+ unless multi_version_tests[instance.unversioned_name]
135
+ instance.append_version = false
136
+ end
137
+ end
138
+ instance
139
+ end
140
+ self.collection = uniques
141
+ end
142
+
143
+ def sort_and_finalize! # :nodoc:
144
+ # Present the instances in the final sheet in alphabetical order
145
+ collection.map!.with_index do |ins, i|
146
+ if ins.is_a?(String) # Can happen if content has been rendered in from a template
147
+ ins = IndexedString.new(ins)
148
+ else
149
+ ins.finalize.call(ins) if ins.finalize
150
+ end
151
+ ins
152
+ end
153
+ collection.sort! { |a, b| [a.name.to_s] <=> [b.name.to_s] }
154
+ end
155
+
156
+ def bpmu(name, options = {})
157
+ add(name, :board_pmu, options)
158
+ end
159
+ alias_method :board_pmu, :bpmu
160
+
161
+ def powersupply(name, options = {})
162
+ add(name, :powersupply, options)
163
+ end
164
+ alias_method :power_supply, :powersupply
165
+
166
+ def ppmu(name, options = {})
167
+ add(name, :pin_pmu, options)
168
+ end
169
+ alias_method :pin_pmu, :ppmu
170
+
171
+ def functional(name, options = {})
172
+ add(name, :functional, options)
173
+ end
174
+
175
+ def empty(name, options = {})
176
+ add(name, :empty, options)
177
+ end
178
+
179
+ def other(name, options = {})
180
+ add(name, :other, options)
181
+ end
182
+
183
+ def apmu_powersupply(name, options = {})
184
+ add(name, :apmu_powersupply, options)
185
+ end
186
+
187
+ def mto_memory(name, options = {})
188
+ add(name, :mto_memory, options)
189
+ end
190
+
191
+ # Creates an accessor for custom test method libraries the first time they are called
192
+ def method_missing(method, *args, &block)
193
+ custom_tils = Origen.interface.send(:custom_tils)
194
+ if custom_tils[method]
195
+ ti = CustomTil.new(self, custom_tils[method])
196
+ instance_variable_set "@#{method}", ti
197
+ define_singleton_method method do
198
+ instance_variable_get("@#{method}")
199
+ end
200
+ send(method)
201
+ else
202
+ super
203
+ end
204
+ end
205
+
206
+ def respond_to?(method)
207
+ !!Origen.interface.send(:custom_tils)[method] || super
208
+ end
209
+ end
210
+ end
211
+ end
212
+ end