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,9 +1,9 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class UltraFLEX
4
- require 'origen_testers/igxl_based_tester/base/test_instance_group'
5
- class TestInstanceGroup < Base::TestInstanceGroup
6
- end
7
- end
8
- end
9
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class UltraFLEX
4
+ require 'origen_testers/igxl_based_tester/base/test_instance_group'
5
+ class TestInstanceGroup < Base::TestInstanceGroup
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,10 +1,10 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class UltraFLEX
4
- require 'origen_testers/igxl_based_tester/base/test_instances'
5
- class TestInstances < Base::TestInstances
6
- TEMPLATE = "#{Origen.root!}/lib/origen_testers/igxl_based_tester/ultraflex/templates/instances.txt.erb"
7
- end
8
- end
9
- end
10
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class UltraFLEX
4
+ require 'origen_testers/igxl_based_tester/base/test_instances'
5
+ class TestInstances < Base::TestInstances
6
+ TEMPLATE = "#{Origen.root!}/lib/origen_testers/igxl_based_tester/ultraflex/templates/instances.txt.erb"
7
+ end
8
+ end
9
+ end
10
+ end
@@ -1,9 +1,9 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class UltraFLEX
4
- require 'origen_testers/igxl_based_tester/base/timeset'
5
- class Timeset < Base::Timeset
6
- end
7
- end
8
- end
9
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class UltraFLEX
4
+ require 'origen_testers/igxl_based_tester/base/timeset'
5
+ class Timeset < Base::Timeset
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,10 +1,10 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class UltraFLEX
4
- require 'origen_testers/igxl_based_tester/base/timesets'
5
- class Timesets < Base::Timesets
6
- TEMPLATE = "#{Origen.root!}/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets.txt.erb"
7
- end
8
- end
9
- end
10
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class UltraFLEX
4
+ require 'origen_testers/igxl_based_tester/base/timesets'
5
+ class Timesets < Base::Timesets
6
+ TEMPLATE = "#{Origen.root!}/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets.txt.erb"
7
+ end
8
+ end
9
+ end
10
+ end
@@ -1,10 +1,10 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class UltraFLEX
4
- require 'origen_testers/igxl_based_tester/base/timesets_basic'
5
- class TimesetsBasic < Base::TimesetsBasic
6
- TEMPLATE = "#{Origen.root!}/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets_basic.txt.erb"
7
- end
8
- end
9
- end
10
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class UltraFLEX
4
+ require 'origen_testers/igxl_based_tester/base/timesets_basic'
5
+ class TimesetsBasic < Base::TimesetsBasic
6
+ TEMPLATE = "#{Origen.root!}/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets_basic.txt.erb"
7
+ end
8
+ end
9
+ end
10
+ end
@@ -1,324 +1,345 @@
1
- require 'active_support/concern'
2
-
3
- module OrigenTesters
4
- # Include this module in any class you define as a test interface
5
- module Interface
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- Origen.add_interface(self)
10
- end
11
-
12
- (ATP::AST::Builder::CONDITION_KEYS + [:group, :bin, :pass, :fail, :test, :log]).each do |method|
13
- define_method method do |*args, &block|
14
- flow.send(method, *args, &block)
15
- end
16
- end
17
-
18
- class PatternArray < ::Array
19
- def <<(pat)
20
- push(pat)
21
- end
22
-
23
- # Override the array push method to capture the pattern under the new API, but
24
- # maintain the old one where a pattern reference was just pushed to the
25
- # referenced_patterns array
26
- def push(pat)
27
- Origen.interface.record_pattern_reference(pat)
28
- end
29
- end
30
-
31
- def self.with_resources_mode
32
- orig = @resources_mode
33
- @resources_mode = true
34
- yield
35
- @resources_mode = orig
36
- end
37
-
38
- def self.resources_mode?
39
- !!@resources_mode
40
- end
41
-
42
- def self.write=(val)
43
- @write = val
44
- end
45
-
46
- def self.write?
47
- !!@write
48
- end
49
-
50
- def write?
51
- OrigenTesters::Interface.write?
52
- end
53
-
54
- # Set to :enabled to have the current flow wrapped by an enable flow variable
55
- # that is enabled by default (top-level flow has to disable modules it doesn't want).
56
- #
57
- # Set to :disabled to have the opposite, where the top-level flow has to enable all
58
- # modules.
59
- #
60
- # Set to nil to have no wrapping. While this is the default, setting this to nil will
61
- # override any setting of the attribute of the same name that has been set at
62
- # tester-level by the target.
63
- def add_flow_enable=(value)
64
- return unless flow.respond_to?(:add_flow_enable=)
65
- if value
66
- if value == :enable || value == :enabled
67
- flow.add_flow_enable = :enabled
68
- elsif value == :disable || value == :disabled
69
- flow.add_flow_enable = :disabled
70
- else
71
- fail "Unknown add_flow_enable value, #{value}, must be :enabled or :disabled"
72
- end
73
- else
74
- flow.add_flow_enable = nil
75
- end
76
- end
77
-
78
- # This identifier will be used to make labels and other references unique to the
79
- # current application. This will help to avoid name duplication if a program is
80
- # comprised of many modules generated by Origen.
81
- #
82
- # Override in the application interface to customize, by default the identifier
83
- # will be Origen.config.initials
84
- def app_identifier
85
- Origen.config.initials || 'Anon App'
86
- end
87
-
88
- def close(options = {})
89
- sheet_generators.each do |generator|
90
- generator.close(options)
91
- end
92
- end
93
-
94
- # Compile a template file
95
- def compile(file, options = {})
96
- return unless write?
97
- # Any options passed in from an interface will be passed to the compiler and to
98
- # the templates being compiled
99
- options[:initial_options] = options
100
- Origen.file_handler.preserve_state do
101
- begin
102
- file = Origen.file_handler.clean_path_to_template(file)
103
- Origen.generator.compile_file_or_directory(file, options)
104
- rescue
105
- file = Origen.file_handler.clean_path_to(file)
106
- Origen.generator.compile_file_or_directory(file, options)
107
- end
108
- end
109
- end
110
-
111
- def import(file, options = {})
112
- # Attach the import request to the first generator, when it imports
113
- # it any generated resources will automatically find their way to the
114
- # correct generator/collection
115
- generator = flow || sheet_generators.first
116
- generator.import(file, options)
117
- end
118
-
119
- def render(file, options = {})
120
- flow.render(file, options)
121
- end
122
-
123
- def write_files(options = {})
124
- sheet_generators.each do |generator|
125
- generator.finalize(options)
126
- end
127
- sheet_generators.each do |generator|
128
- generator.write_to_file(options) if generator.to_be_written?
129
- end
130
- clean_referenced_patterns
131
- flow.save_program
132
- end
133
-
134
- def on_program_completion(options = {})
135
- reset_globals
136
- @@pattern_references = {}
137
- @@referenced_patterns = nil
138
- end
139
-
140
- # A secondary pattern is one where the pattern has been created by Origen as an output from
141
- # generating another pattern (a primary pattern). For example, on V93K anytime a tester
142
- # handshake is done, the pattern will be split into separate components, such as
143
- # meas_bgap.avc (the primary pattern) and meas_bgap_part1.avc (a secondary pattern).
144
- #
145
- # Any such secondary pattern references should be pushed to this array, rather than the
146
- # referenced_patterns array.
147
- # By using the dedicated secondary array, the pattern will not appear in the referenced.list
148
- # file so that Origen is not asked to generate it (since it will be created naturally from
149
- # the primary pattern reference).
150
- # However if the ATE requires a reference to the pattern (e.g. the V93K pattern master file),
151
- # then it will be included in the relevant ATE files.
152
- def record_pattern_reference(name, options = {})
153
- if name.is_a?(String) || name.is_a?(Symbol)
154
- name = name.to_s
155
- else
156
- fail "Pattern name must be a string or a symbol, not a #{name.class}"
157
- end
158
- # Help out the user and force any multi-part patterns to :ate type
159
- unless options[:type]
160
- if name.sub(/\..*/, '') =~ /part\d+$/
161
- options[:type] = :ate
162
- end
163
- end
164
- unless options[:type] == :origen
165
- # Inform the current generator that it has a new pattern reference to handle
166
- if respond_to?(:pattern_reference_recorded)
167
- pattern_reference_recorded(name, options)
168
- end
169
- end
170
- base = options[:subroutine] ? pattern_references[:subroutine] : pattern_references[:main]
171
- case options[:type]
172
- when :origen
173
- base[:origen] << name
174
- when :ate
175
- base[:ate] << name
176
- when nil
177
- base[:all] << name
178
- else
179
- fail "Unknown pattern reference type, #{options[:type]}, valid values are :origen or :ate"
180
- end
181
- nil
182
- end
183
-
184
- def pattern_references
185
- @@pattern_references ||= {}
186
- @@pattern_references[pattern_references_name] ||= {
187
- main: {
188
- all: [],
189
- origen: [],
190
- ate: []
191
- },
192
- subroutine: {
193
- all: [],
194
- origen: [],
195
- ate: []
196
- }
197
- }
198
- end
199
-
200
- def all_pattern_references
201
- pattern_references
202
- @@pattern_references
203
- end
204
-
205
- def pattern_references_name=(name)
206
- @pattern_references_name = name
207
- end
208
-
209
- def pattern_references_name
210
- @pattern_references_name || 'global'
211
- end
212
-
213
- # @deprecated Use record_pattern_reference instead
214
- #
215
- # All generators should push to this array whenever they reference a pattern
216
- # so that it is captured in the pattern list, e.g.
217
- # Origen.interface.referenced_patterns << pattern
218
- #
219
- # If the ATE platform also has a pattern list, e.g. the pattern master file on V93K,
220
- # then this will also be updated.
221
- # Duplicates will be automatically eliminated, so no duplicate checking should be
222
- # performed on the application side.
223
- def referenced_patterns
224
- @@referenced_patterns ||= PatternArray.new
225
- end
226
-
227
- # Remove duplicates and file extensions from the referenced pattern lists
228
- def clean_referenced_patterns
229
- refs = [:referenced_patterns]
230
- # refs << :referenced_subroutine_patterns if Origen.tester.v93k?
231
- refs.each do |ref|
232
- var = send(ref)
233
- var = var.uniq.map do |pat|
234
- pat = pat.sub(/\..*/, '')
235
- pat unless pat =~ /_part\d+$/
236
- end.uniq.compact
237
- singleton_class.class_variable_set("@@#{ref}", var)
238
- end
239
- end
240
-
241
- # Add a comment line into the buffer
242
- def comment(text)
243
- comments << text
244
- end
245
-
246
- def comments
247
- @@comments ||= []
248
- end
249
-
250
- def discard_comments
251
- @@comments = nil
252
- end
253
-
254
- # Returns the buffered description comments and clears the buffer
255
- def consume_comments
256
- c = comments
257
- discard_comments
258
- c
259
- end
260
-
261
- def top_level_flow
262
- @@top_level_flow ||= nil
263
- end
264
- alias_method :top_level_flow_filename, :top_level_flow
265
-
266
- def flow_generator
267
- flow
268
- end
269
-
270
- def set_top_level_flow
271
- @@top_level_flow = flow_generator.output_file
272
- end
273
-
274
- def clear_top_level_flow
275
- @@top_level_flow = nil
276
- end
277
-
278
- # A storage Hash that all generators can push comment descriptions
279
- # into when generating.
280
- # At the end of a generation run this will contain all descriptions
281
- # for all flows that were just created.
282
- #
283
- # Access via Origen.interface.descriptions
284
- def descriptions
285
- @@descriptions ||= Parser::DescriptionLookup.new
286
- end
287
-
288
- # Any tests generated within the given block will be generated in resources mode.
289
- # Generally this means that all resources for a given test will be generated but
290
- # flow entries will be inhibited.
291
- def resources_mode
292
- OrigenTesters::Interface.with_resources_mode do
293
- yield
294
- end
295
- end
296
- alias_method :with_resources_mode, :resources_mode
297
-
298
- def resources_mode?
299
- OrigenTesters::Interface.resources_mode?
300
- end
301
-
302
- def identity_map # :nodoc:
303
- @@identity_map ||= ::OrigenTesters::Generator::IdentityMap.new
304
- end
305
-
306
- def platform
307
- # This branch to support the ProgramGenerators module where the generator
308
- # is included into an interface instance and not the class
309
- if singleton_class.const_defined? :PLATFORM
310
- singleton_class::PLATFORM
311
- else
312
- self.class::PLATFORM
313
- end
314
- end
315
-
316
- module ClassMethods
317
- # Returns true if the interface class supports the
318
- # given tester instance
319
- def supports?(tester_instance)
320
- tester_instance.class == self::PLATFORM
321
- end
322
- end
323
- end
324
- end
1
+ require 'active_support/concern'
2
+
3
+ module OrigenTesters
4
+ # Include this module in any class you define as a test interface
5
+ module Interface
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ Origen.add_interface(self)
10
+ end
11
+
12
+ (ATP::AST::Builder::CONDITION_KEYS + [:group, :bin, :pass, :fail, :test, :log]).each do |method|
13
+ define_method method do |*args, &block|
14
+ flow.send(method, *args, &block)
15
+ end
16
+ end
17
+
18
+ class PatternArray < ::Array
19
+ def <<(pat)
20
+ push(pat)
21
+ end
22
+
23
+ # Override the array push method to capture the pattern under the new API, but
24
+ # maintain the old one where a pattern reference was just pushed to the
25
+ # referenced_patterns array
26
+ def push(pat)
27
+ Origen.interface.record_pattern_reference(pat)
28
+ end
29
+ end
30
+
31
+ def self.with_resources_mode
32
+ orig = @resources_mode
33
+ @resources_mode = true
34
+ yield
35
+ @resources_mode = orig
36
+ end
37
+
38
+ def self.resources_mode?
39
+ !!@resources_mode
40
+ end
41
+
42
+ def self.write=(val)
43
+ @write = val
44
+ end
45
+
46
+ def self.write?
47
+ !!@write
48
+ end
49
+
50
+ def write?
51
+ OrigenTesters::Interface.write?
52
+ end
53
+
54
+ # Returns the value defined on if/how to make test names unique within a flow
55
+ def unique_test_names
56
+ @unique_test_names
57
+ end
58
+
59
+ # Set the value of unique_test_names
60
+ def unique_test_names=(val)
61
+ @unique_test_names = val
62
+ end
63
+
64
+ # Returns whether the tester has been configured to wrap top-level flow modules with an
65
+ # enable or not.
66
+ #
67
+ # Returns nil if not.
68
+ #
69
+ # Returns :enabled if the enable is configured to be on by default, or :disabled if it is
70
+ # configured to be off by default.
71
+ def add_flow_enable
72
+ @add_flow_enable
73
+ end
74
+
75
+ # Set to :enabled to have the current flow wrapped by an enable flow variable
76
+ # that is enabled by default (top-level flow has to disable modules it doesn't want).
77
+ #
78
+ # Set to :disabled to have the opposite, where the top-level flow has to enable all
79
+ # modules.
80
+ #
81
+ # Set to nil to have no wrapping. While this is the default, setting this to nil will
82
+ # override any setting of the attribute of the same name that has been set at
83
+ # tester-level by the target.
84
+ def add_flow_enable=(value)
85
+ return unless flow.respond_to?(:add_flow_enable=)
86
+ if value
87
+ if value == :enable || value == :enabled
88
+ flow.add_flow_enable = :enabled
89
+ elsif value == :disable || value == :disabled
90
+ flow.add_flow_enable = :disabled
91
+ else
92
+ fail "Unknown add_flow_enable value, #{value}, must be :enabled or :disabled"
93
+ end
94
+ else
95
+ flow.add_flow_enable = nil
96
+ end
97
+ end
98
+
99
+ # This identifier will be used to make labels and other references unique to the
100
+ # current application. This will help to avoid name duplication if a program is
101
+ # comprised of many modules generated by Origen.
102
+ #
103
+ # Override in the application interface to customize, by default the identifier
104
+ # will be Origen.config.initials
105
+ def app_identifier
106
+ Origen.config.initials || 'Anon App'
107
+ end
108
+
109
+ def close(options = {})
110
+ sheet_generators.each do |generator|
111
+ generator.close(options)
112
+ end
113
+ end
114
+
115
+ # Compile a template file
116
+ def compile(file, options = {})
117
+ return unless write?
118
+ # Any options passed in from an interface will be passed to the compiler and to
119
+ # the templates being compiled
120
+ options[:initial_options] = options
121
+ Origen.file_handler.preserve_state do
122
+ begin
123
+ file = Origen.file_handler.clean_path_to_template(file)
124
+ Origen.generator.compile_file_or_directory(file, options)
125
+ rescue
126
+ file = Origen.file_handler.clean_path_to(file)
127
+ Origen.generator.compile_file_or_directory(file, options)
128
+ end
129
+ end
130
+ end
131
+
132
+ def import(file, options = {})
133
+ # Attach the import request to the first generator, when it imports
134
+ # it any generated resources will automatically find their way to the
135
+ # correct generator/collection
136
+ generator = flow || sheet_generators.first
137
+ generator.import(file, options)
138
+ end
139
+
140
+ def render(file, options = {})
141
+ flow.render(file, options)
142
+ end
143
+
144
+ def write_files(options = {})
145
+ sheet_generators.each do |generator|
146
+ generator.finalize(options)
147
+ end
148
+ sheet_generators.each do |generator|
149
+ generator.write_to_file(options) if generator.to_be_written?
150
+ end
151
+ clean_referenced_patterns
152
+ flow.save_program
153
+ end
154
+
155
+ def on_program_completion(options = {})
156
+ reset_globals
157
+ @@pattern_references = {}
158
+ @@referenced_patterns = nil
159
+ end
160
+
161
+ # A secondary pattern is one where the pattern has been created by Origen as an output from
162
+ # generating another pattern (a primary pattern). For example, on V93K anytime a tester
163
+ # handshake is done, the pattern will be split into separate components, such as
164
+ # meas_bgap.avc (the primary pattern) and meas_bgap_part1.avc (a secondary pattern).
165
+ #
166
+ # Any such secondary pattern references should be pushed to this array, rather than the
167
+ # referenced_patterns array.
168
+ # By using the dedicated secondary array, the pattern will not appear in the referenced.list
169
+ # file so that Origen is not asked to generate it (since it will be created naturally from
170
+ # the primary pattern reference).
171
+ # However if the ATE requires a reference to the pattern (e.g. the V93K pattern master file),
172
+ # then it will be included in the relevant ATE files.
173
+ def record_pattern_reference(name, options = {})
174
+ if name.is_a?(String) || name.is_a?(Symbol)
175
+ name = name.to_s
176
+ else
177
+ fail "Pattern name must be a string or a symbol, not a #{name.class}"
178
+ end
179
+ # Help out the user and force any multi-part patterns to :ate type
180
+ unless options[:type]
181
+ if name.sub(/\..*/, '') =~ /part\d+$/
182
+ options[:type] = :ate
183
+ end
184
+ end
185
+ unless options[:type] == :origen
186
+ # Inform the current generator that it has a new pattern reference to handle
187
+ if respond_to?(:pattern_reference_recorded)
188
+ pattern_reference_recorded(name, options)
189
+ end
190
+ end
191
+ base = options[:subroutine] ? pattern_references[:subroutine] : pattern_references[:main]
192
+ case options[:type]
193
+ when :origen
194
+ base[:origen] << name
195
+ when :ate
196
+ base[:ate] << name
197
+ when nil
198
+ base[:all] << name
199
+ else
200
+ fail "Unknown pattern reference type, #{options[:type]}, valid values are :origen or :ate"
201
+ end
202
+ nil
203
+ end
204
+
205
+ def pattern_references
206
+ @@pattern_references ||= {}
207
+ @@pattern_references[pattern_references_name] ||= {
208
+ main: {
209
+ all: [],
210
+ origen: [],
211
+ ate: []
212
+ },
213
+ subroutine: {
214
+ all: [],
215
+ origen: [],
216
+ ate: []
217
+ }
218
+ }
219
+ end
220
+
221
+ def all_pattern_references
222
+ pattern_references
223
+ @@pattern_references
224
+ end
225
+
226
+ def pattern_references_name=(name)
227
+ @pattern_references_name = name
228
+ end
229
+
230
+ def pattern_references_name
231
+ @pattern_references_name || 'global'
232
+ end
233
+
234
+ # @deprecated Use record_pattern_reference instead
235
+ #
236
+ # All generators should push to this array whenever they reference a pattern
237
+ # so that it is captured in the pattern list, e.g.
238
+ # Origen.interface.referenced_patterns << pattern
239
+ #
240
+ # If the ATE platform also has a pattern list, e.g. the pattern master file on V93K,
241
+ # then this will also be updated.
242
+ # Duplicates will be automatically eliminated, so no duplicate checking should be
243
+ # performed on the application side.
244
+ def referenced_patterns
245
+ @@referenced_patterns ||= PatternArray.new
246
+ end
247
+
248
+ # Remove duplicates and file extensions from the referenced pattern lists
249
+ def clean_referenced_patterns
250
+ refs = [:referenced_patterns]
251
+ # refs << :referenced_subroutine_patterns if Origen.tester.v93k?
252
+ refs.each do |ref|
253
+ var = send(ref)
254
+ var = var.uniq.map do |pat|
255
+ pat = pat.sub(/\..*/, '')
256
+ pat unless pat =~ /_part\d+$/
257
+ end.uniq.compact
258
+ singleton_class.class_variable_set("@@#{ref}", var)
259
+ end
260
+ end
261
+
262
+ # Add a comment line into the buffer
263
+ def comment(text)
264
+ comments << text
265
+ end
266
+
267
+ def comments
268
+ @@comments ||= []
269
+ end
270
+
271
+ def discard_comments
272
+ @@comments = nil
273
+ end
274
+
275
+ # Returns the buffered description comments and clears the buffer
276
+ def consume_comments
277
+ c = comments
278
+ discard_comments
279
+ c
280
+ end
281
+
282
+ def top_level_flow
283
+ @@top_level_flow ||= nil
284
+ end
285
+ alias_method :top_level_flow_filename, :top_level_flow
286
+
287
+ def flow_generator
288
+ flow
289
+ end
290
+
291
+ def set_top_level_flow
292
+ @@top_level_flow = flow_generator.output_file
293
+ end
294
+
295
+ def clear_top_level_flow
296
+ @@top_level_flow = nil
297
+ end
298
+
299
+ # A storage Hash that all generators can push comment descriptions
300
+ # into when generating.
301
+ # At the end of a generation run this will contain all descriptions
302
+ # for all flows that were just created.
303
+ #
304
+ # Access via Origen.interface.descriptions
305
+ def descriptions
306
+ @@descriptions ||= Parser::DescriptionLookup.new
307
+ end
308
+
309
+ # Any tests generated within the given block will be generated in resources mode.
310
+ # Generally this means that all resources for a given test will be generated but
311
+ # flow entries will be inhibited.
312
+ def resources_mode
313
+ OrigenTesters::Interface.with_resources_mode do
314
+ yield
315
+ end
316
+ end
317
+ alias_method :with_resources_mode, :resources_mode
318
+
319
+ def resources_mode?
320
+ OrigenTesters::Interface.resources_mode?
321
+ end
322
+
323
+ def identity_map # :nodoc:
324
+ @@identity_map ||= ::OrigenTesters::Generator::IdentityMap.new
325
+ end
326
+
327
+ def platform
328
+ # This branch to support the ProgramGenerators module where the generator
329
+ # is included into an interface instance and not the class
330
+ if singleton_class.const_defined? :PLATFORM
331
+ singleton_class::PLATFORM
332
+ else
333
+ self.class::PLATFORM
334
+ end
335
+ end
336
+
337
+ module ClassMethods
338
+ # Returns true if the interface class supports the
339
+ # given tester instance
340
+ def supports?(tester_instance)
341
+ tester_instance.class == self::PLATFORM
342
+ end
343
+ end
344
+ end
345
+ end