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,30 +1,30 @@
1
- module Tester
2
- module Parser
3
- class SearchableArray < ::Array
4
- def where(conditions)
5
- exact = conditions.delete(:exact)
6
- results = SearchableArray.new
7
- each do |item|
8
- if conditions.all? do |attr, val|
9
- if val.is_a?(Array)
10
- if exact
11
- val.any? { |v| item.send(attr).to_s == v.to_s }
12
- else
13
- val.any? { |v| item.send(attr).to_s =~ /#{v.to_s}/ }
14
- end
15
- else
16
- if exact
17
- item.send(attr).to_s == val.to_s
18
- else
19
- item.send(attr).to_s =~ /#{val.to_s}/
20
- end
21
- end
22
- end
23
- results << item
24
- end
25
- end
26
- results
27
- end
28
- end
29
- end
30
- end
1
+ module Tester
2
+ module Parser
3
+ class SearchableArray < ::Array
4
+ def where(conditions)
5
+ exact = conditions.delete(:exact)
6
+ results = SearchableArray.new
7
+ each do |item|
8
+ if conditions.all? do |attr, val|
9
+ if val.is_a?(Array)
10
+ if exact
11
+ val.any? { |v| item.send(attr).to_s == v.to_s }
12
+ else
13
+ val.any? { |v| item.send(attr).to_s =~ /#{v.to_s}/ }
14
+ end
15
+ else
16
+ if exact
17
+ item.send(attr).to_s == val.to_s
18
+ else
19
+ item.send(attr).to_s =~ /#{val.to_s}/
20
+ end
21
+ end
22
+ end
23
+ results << item
24
+ end
25
+ end
26
+ results
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,30 +1,30 @@
1
- module OrigenTesters
2
- module Parser
3
- class SearchableHash < ::Hash
4
- def where(conditions)
5
- exact = conditions.delete(:exact)
6
- results = SearchableArray.new
7
- each do |key, item|
8
- if conditions.all? do |attr, val|
9
- if val.is_a?(Array)
10
- if exact
11
- val.any? { |v| item.send(attr).to_s == v.to_s }
12
- else
13
- val.any? { |v| item.send(attr).to_s =~ /#{v.to_s}/ }
14
- end
15
- else
16
- if exact
17
- item.send(attr).to_s == val.to_s
18
- else
19
- item.send(attr).to_s =~ /#{val.to_s}/
20
- end
21
- end
22
- end
23
- results << item
24
- end
25
- end
26
- results
27
- end
28
- end
29
- end
30
- end
1
+ module OrigenTesters
2
+ module Parser
3
+ class SearchableHash < ::Hash
4
+ def where(conditions)
5
+ exact = conditions.delete(:exact)
6
+ results = SearchableArray.new
7
+ each do |key, item|
8
+ if conditions.all? do |attr, val|
9
+ if val.is_a?(Array)
10
+ if exact
11
+ val.any? { |v| item.send(attr).to_s == v.to_s }
12
+ else
13
+ val.any? { |v| item.send(attr).to_s =~ /#{v.to_s}/ }
14
+ end
15
+ else
16
+ if exact
17
+ item.send(attr).to_s == val.to_s
18
+ else
19
+ item.send(attr).to_s =~ /#{val.to_s}/
20
+ end
21
+ end
22
+ end
23
+ results << item
24
+ end
25
+ end
26
+ results
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,116 +1,116 @@
1
- module OrigenTesters
2
- module PatternCompilers
3
- require 'pathname'
4
- require_relative 'pattern_compilers/ultraflex_pattern_compiler'
5
-
6
- PLATFORMS = [:ultraflex]
7
-
8
- # Linux compiler executable path
9
- LINUX_PATTERN_COMPILER = "#{Origen.root!}/bin/latest/bin/atpcompiler"
10
-
11
- # Windows compiler executable path
12
- WINDOWS_PATTERN_COMPILER = "#{ENV['IGXLROOT']}/bin/apc.exe"
13
-
14
- # Hash wrapper for compiler instances, defaults to display currently enabled
15
- # tester platform. If none is set then user must supply a valid tester platform argument
16
- def pattern_compilers(id = nil)
17
- @pattern_compilers ||= begin
18
- hash = {}
19
- PLATFORMS.each { |platform| hash[platform] = {} }
20
- hash
21
- end
22
- if id.nil?
23
- @pattern_compilers[platform]
24
- else
25
- @pattern_compilers[platform][id].inspect_options
26
- end
27
- end
28
- alias_method :compilers, :pattern_compilers
29
-
30
- def pattern_compiler_platforms
31
- PLATFORMS
32
- end
33
- alias_method :compiler_platforms, :pattern_compiler_platforms
34
-
35
- # Delete pattern compiler instances. If no argument default to current platform
36
- def delete_pattern_compilers(p = platform)
37
- @pattern_compilers[p].delete_if { |k, v| true }
38
- end
39
- alias_method :delete_compilers, :delete_pattern_compilers
40
-
41
- # Delete a pattern compiler instance.
42
- def delete_pattern_compiler(id)
43
- @pattern_compilers[platform].delete(id)
44
- end
45
- alias_method :delete_compiler, :delete_pattern_compiler
46
-
47
- # Add a compiler for a particular tester platform and pattern type
48
- def add_pattern_compiler(id, platform, options = {})
49
- pattern_compilers
50
- id = id.to_sym
51
- platform = platform.to_sym
52
- options[:location] = options[:location].to_sym unless options[:location].nil?
53
- case platform
54
- when :ultraflex
55
- fail "Compiler ID #{id} for platform #{platform} already exists! Pick another name, delete the compiler, or clear all compilers" if @pattern_compilers[platform].keys.include? id
56
- @pattern_compilers[platform][id] = UltraFlexPatternCompiler.new(id, options)
57
- else
58
- fail "Platform #{platform} is not valid, please choose from #{PLATFORMS.join(', ')}"
59
- end
60
- end
61
- alias_method :add_compiler, :add_pattern_compiler
62
-
63
- # Returns an array of the pattern compiler instance ids
64
- # for the currently selected tester platform.
65
- def pattern_compiler_instances(p = platform)
66
- # Check if nil which means no tester is defined so ask user to supply it
67
- fail "No tester platform defined so supply one of the following as an argument: #{PLATFORMS.join(', ')}" if p.nil?
68
- p = p.to_sym
69
- @pattern_compilers[p].keys
70
- end
71
- alias_method :compiler_instances, :pattern_compiler_instances
72
-
73
- def pattern_compiler_options
74
- cmd = ''
75
- running_on_windows? ? cmd = "#{WINDOWS_PATTERN_COMPILER} -help" : cmd = "#{LINUX_PATTERN_COMPILER} -help"
76
- system cmd
77
- end
78
- alias_method :compiler_options, :pattern_compiler_options
79
-
80
- def pattern_compiler_version
81
- cmd = ''
82
- running_on_windows? ? cmd = "#{WINDOWS_PATTERN_COMPILER} -version" : cmd = "#{LINUX_PATTERN_COMPILER} -version"
83
- system cmd
84
- end
85
- alias_method :compiler_version, :pattern_compiler_version
86
-
87
- # Check if the current tester is supported
88
- def pattern_compiler_supported?
89
- PLATFORMS.include? platform ? true : false
90
- end
91
- alias_method :compiler_supported?, :pattern_compiler_supported?
92
-
93
- private
94
-
95
- def running_on_windows?
96
- RUBY_PLATFORM == 'i386-mingw32'
97
- end
98
-
99
- # Check if the current tester is an Ultraflex
100
- def is_ultraflex?
101
- platform == :ultraflex ? true : false
102
- end
103
-
104
- def platform
105
- if $tester.nil?
106
- fail 'No tester instantiated, $tester is set to nil'
107
- else
108
- $tester.class.to_s.downcase.split('::').last.to_sym
109
- end
110
- end
111
-
112
- def target_enabled?
113
- Origen.target.name.nil? ? true : false
114
- end
115
- end
116
- end
1
+ module OrigenTesters
2
+ module PatternCompilers
3
+ require 'pathname'
4
+ require_relative 'pattern_compilers/ultraflex_pattern_compiler'
5
+
6
+ PLATFORMS = [:ultraflex]
7
+
8
+ # Linux compiler executable path
9
+ LINUX_PATTERN_COMPILER = "#{Origen.root!}/bin/latest/bin/atpcompiler"
10
+
11
+ # Windows compiler executable path
12
+ WINDOWS_PATTERN_COMPILER = "#{ENV['IGXLROOT']}/bin/apc.exe"
13
+
14
+ # Hash wrapper for compiler instances, defaults to display currently enabled
15
+ # tester platform. If none is set then user must supply a valid tester platform argument
16
+ def pattern_compilers(id = nil)
17
+ @pattern_compilers ||= begin
18
+ hash = {}
19
+ PLATFORMS.each { |platform| hash[platform] = {} }
20
+ hash
21
+ end
22
+ if id.nil?
23
+ @pattern_compilers[platform]
24
+ else
25
+ @pattern_compilers[platform][id].inspect_options
26
+ end
27
+ end
28
+ alias_method :compilers, :pattern_compilers
29
+
30
+ def pattern_compiler_platforms
31
+ PLATFORMS
32
+ end
33
+ alias_method :compiler_platforms, :pattern_compiler_platforms
34
+
35
+ # Delete pattern compiler instances. If no argument default to current platform
36
+ def delete_pattern_compilers(p = platform)
37
+ @pattern_compilers[p].delete_if { |k, v| true }
38
+ end
39
+ alias_method :delete_compilers, :delete_pattern_compilers
40
+
41
+ # Delete a pattern compiler instance.
42
+ def delete_pattern_compiler(id)
43
+ @pattern_compilers[platform].delete(id)
44
+ end
45
+ alias_method :delete_compiler, :delete_pattern_compiler
46
+
47
+ # Add a compiler for a particular tester platform and pattern type
48
+ def add_pattern_compiler(id, platform, options = {})
49
+ pattern_compilers
50
+ id = id.to_sym
51
+ platform = platform.to_sym
52
+ options[:location] = options[:location].to_sym unless options[:location].nil?
53
+ case platform
54
+ when :ultraflex
55
+ fail "Compiler ID #{id} for platform #{platform} already exists! Pick another name, delete the compiler, or clear all compilers" if @pattern_compilers[platform].keys.include? id
56
+ @pattern_compilers[platform][id] = UltraFlexPatternCompiler.new(id, options)
57
+ else
58
+ fail "Platform #{platform} is not valid, please choose from #{PLATFORMS.join(', ')}"
59
+ end
60
+ end
61
+ alias_method :add_compiler, :add_pattern_compiler
62
+
63
+ # Returns an array of the pattern compiler instance ids
64
+ # for the currently selected tester platform.
65
+ def pattern_compiler_instances(p = platform)
66
+ # Check if nil which means no tester is defined so ask user to supply it
67
+ fail "No tester platform defined so supply one of the following as an argument: #{PLATFORMS.join(', ')}" if p.nil?
68
+ p = p.to_sym
69
+ @pattern_compilers[p].keys
70
+ end
71
+ alias_method :compiler_instances, :pattern_compiler_instances
72
+
73
+ def pattern_compiler_options
74
+ cmd = ''
75
+ running_on_windows? ? cmd = "#{WINDOWS_PATTERN_COMPILER} -help" : cmd = "#{LINUX_PATTERN_COMPILER} -help"
76
+ system cmd
77
+ end
78
+ alias_method :compiler_options, :pattern_compiler_options
79
+
80
+ def pattern_compiler_version
81
+ cmd = ''
82
+ running_on_windows? ? cmd = "#{WINDOWS_PATTERN_COMPILER} -version" : cmd = "#{LINUX_PATTERN_COMPILER} -version"
83
+ system cmd
84
+ end
85
+ alias_method :compiler_version, :pattern_compiler_version
86
+
87
+ # Check if the current tester is supported
88
+ def pattern_compiler_supported?
89
+ PLATFORMS.include? platform ? true : false
90
+ end
91
+ alias_method :compiler_supported?, :pattern_compiler_supported?
92
+
93
+ private
94
+
95
+ def running_on_windows?
96
+ RUBY_PLATFORM == 'i386-mingw32'
97
+ end
98
+
99
+ # Check if the current tester is an Ultraflex
100
+ def is_ultraflex?
101
+ platform == :ultraflex ? true : false
102
+ end
103
+
104
+ def platform
105
+ if $tester.nil?
106
+ fail 'No tester instantiated, $tester is set to nil'
107
+ else
108
+ $tester.class.to_s.downcase.split('::').last.to_sym
109
+ end
110
+ end
111
+
112
+ def target_enabled?
113
+ Origen.target.name.nil? ? true : false
114
+ end
115
+ end
116
+ end
@@ -1,88 +1,88 @@
1
- module OrigenTesters
2
- module PatternCompilers
3
- class UltraFlexPatternCompiler
4
- private
5
-
6
- # Check the file extension of a file, return status can be 'atp', 'list', or nil
7
- def check_file_ext(file)
8
- status = nil
9
- ext = file.extname
10
- name = file.basename
11
- if ext == '.atp'
12
- status = 'atp'
13
- elsif ext == '.gz'
14
- # Ensure we have a .atp.gz
15
- sub_ext = name.to_s.split('.')[-2]
16
- if sub_ext == 'atp'
17
- status = 'atp'
18
- end
19
- elsif ext == '.list'
20
- status = 'list'
21
- end
22
- status
23
- end
24
-
25
- # Parse a pattern list file recursively until all .atp or .atp.gz files are found
26
- def parse_list(path, files)
27
- list_name = path.basename
28
- dir = path.dirname
29
- line_number = 0
30
- path.open('r') do |f|
31
- while (line = f.gets)
32
- line_number += 1
33
- # Strip the leading and trailing whitespace for sloppy typers
34
- line.strip!
35
- # Skip a blank line
36
- next if line.match(/^\s+$/)
37
- # Check if the pattern or list exists
38
- line_path = Pathname.new("#{dir}/#{line}")
39
- unless line_path.file?
40
- # puts "Skipping #{line_path.to_s} at line ##{line_number} in file #{path.to_s} because it is not a file"
41
- next
42
- end
43
- # Process the file
44
- process_file(line_path, files)
45
- end
46
- end
47
- end
48
-
49
- # Processes a file looking for a valid .atp or .list
50
- def process_file(file, files)
51
- # puts "processing file #{file.to_s}"
52
- case check_file_ext(file)
53
- when 'atp'
54
- files << file unless files.include?(file)
55
- when 'list'
56
- parse_list(file, files)
57
- end
58
- end
59
-
60
- # Processes a diretcory looking for files in '.' or recursively
61
- def process_directory(dir, files, rec)
62
- dir.children(true).each do |f|
63
- # ignore sub-directories
64
- if f.directory?
65
- if rec == false
66
- next
67
- else
68
- process_directory(f.expand_path, files, rec)
69
- end
70
- end
71
- process_file(f.expand_path, files)
72
- end
73
- end
74
-
75
- # Deletes the pattern compiler log files
76
- def clean_output
77
- @jobs.each do |job|
78
- logfile = Pathname.new("#{job.pattern.dirname}/#{job.pattern.basename.to_s.chomp(job.pattern.extname)}.log")
79
- logfile.cleanpath
80
- if logfile.file?
81
- # puts "Deleting log file #{logfile}"
82
- logfile.delete
83
- end
84
- end
85
- end
86
- end
87
- end
88
- end
1
+ module OrigenTesters
2
+ module PatternCompilers
3
+ class UltraFlexPatternCompiler
4
+ private
5
+
6
+ # Check the file extension of a file, return status can be 'atp', 'list', or nil
7
+ def check_file_ext(file)
8
+ status = nil
9
+ ext = file.extname
10
+ name = file.basename
11
+ if ext == '.atp'
12
+ status = 'atp'
13
+ elsif ext == '.gz'
14
+ # Ensure we have a .atp.gz
15
+ sub_ext = name.to_s.split('.')[-2]
16
+ if sub_ext == 'atp'
17
+ status = 'atp'
18
+ end
19
+ elsif ext == '.list'
20
+ status = 'list'
21
+ end
22
+ status
23
+ end
24
+
25
+ # Parse a pattern list file recursively until all .atp or .atp.gz files are found
26
+ def parse_list(path, files)
27
+ list_name = path.basename
28
+ dir = path.dirname
29
+ line_number = 0
30
+ path.open('r') do |f|
31
+ while (line = f.gets)
32
+ line_number += 1
33
+ # Strip the leading and trailing whitespace for sloppy typers
34
+ line.strip!
35
+ # Skip a blank line
36
+ next if line.match(/^\s+$/)
37
+ # Check if the pattern or list exists
38
+ line_path = Pathname.new("#{dir}/#{line}")
39
+ unless line_path.file?
40
+ # puts "Skipping #{line_path.to_s} at line ##{line_number} in file #{path.to_s} because it is not a file"
41
+ next
42
+ end
43
+ # Process the file
44
+ process_file(line_path, files)
45
+ end
46
+ end
47
+ end
48
+
49
+ # Processes a file looking for a valid .atp or .list
50
+ def process_file(file, files)
51
+ # puts "processing file #{file.to_s}"
52
+ case check_file_ext(file)
53
+ when 'atp'
54
+ files << file unless files.include?(file)
55
+ when 'list'
56
+ parse_list(file, files)
57
+ end
58
+ end
59
+
60
+ # Processes a diretcory looking for files in '.' or recursively
61
+ def process_directory(dir, files, rec)
62
+ dir.children(true).each do |f|
63
+ # ignore sub-directories
64
+ if f.directory?
65
+ if rec == false
66
+ next
67
+ else
68
+ process_directory(f.expand_path, files, rec)
69
+ end
70
+ end
71
+ process_file(f.expand_path, files)
72
+ end
73
+ end
74
+
75
+ # Deletes the pattern compiler log files
76
+ def clean_output
77
+ @jobs.each do |job|
78
+ logfile = Pathname.new("#{job.pattern.dirname}/#{job.pattern.basename.to_s.chomp(job.pattern.extname)}.log")
79
+ logfile.cleanpath
80
+ if logfile.file?
81
+ # puts "Deleting log file #{logfile}"
82
+ logfile.delete
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end