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,34 +1,34 @@
1
- module OrigenTesters
2
- module SmartestBasedTester
3
- class Base
4
- module Processors
5
- class IfRanCleaner < ATP::Processor
6
- def on_test(node)
7
- on_pass = node.find(:on_pass)
8
- on_fail = node.find(:on_fail)
9
-
10
- unless on_pass.nil? || on_fail.nil?
11
- set_run_flag = on_fail.find(:set_run_flag)
12
- set_result = on_fail.find(:set_result)
13
- unless set_run_flag.nil? || set_result.nil?
14
- children = set_run_flag.children.dup
15
- name = children.shift
16
- ag_string = children.shift
17
-
18
- if name =~ /_RAN$/ && ag_string == 'auto_generated'
19
- f = on_fail.dup
20
- f = f.remove(set_result)
21
- n = node.remove(on_fail)
22
- n = n.updated(nil, n.children + (f.is_a?(Array) ? f : [f]))
23
- return n
24
- end
25
-
26
- end
27
- end
28
- node
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
1
+ module OrigenTesters
2
+ module SmartestBasedTester
3
+ class Base
4
+ module Processors
5
+ class IfRanCleaner < ATP::Processor
6
+ def on_test(node)
7
+ on_pass = node.find(:on_pass)
8
+ on_fail = node.find(:on_fail)
9
+
10
+ unless on_pass.nil? || on_fail.nil?
11
+ set_run_flag = on_fail.find(:set_run_flag)
12
+ set_result = on_fail.find(:set_result)
13
+ unless set_run_flag.nil? || set_result.nil?
14
+ children = set_run_flag.children.dup
15
+ name = children.shift
16
+ ag_string = children.shift
17
+
18
+ if name =~ /_RAN$/ && ag_string == 'auto_generated'
19
+ f = on_fail.dup
20
+ f = f.remove(set_result)
21
+ n = node.remove(on_fail)
22
+ n = n.updated(nil, n.children + (f.is_a?(Array) ? f : [f]))
23
+ return n
24
+ end
25
+
26
+ end
27
+ end
28
+ node
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,164 +1,178 @@
1
- module OrigenTesters
2
- module SmartestBasedTester
3
- class Base
4
- class TestMethod
5
- FORMAT_TYPES = [:current, :voltage, :time, :string, :integer, :double]
6
-
7
- # Returns the object representing the test method library that the
8
- # given test method is defined in
9
- attr_reader :library
10
- attr_reader :type
11
- attr_reader :id
12
- alias_method :name, :id
13
- # Returns an hash corresponding to the parameters that the given test method has.
14
- # The keys are the parameter names and the values are the parameter type.
15
- attr_reader :parameters
16
- attr_accessor :class_name
17
- attr_accessor :abs_class_name
18
-
19
- def initialize(options)
20
- @type = options[:type]
21
- @library = options[:library]
22
- @class_name = options[:methods].delete(:class_name)
23
- @parameters = {}
24
- # Add limits by default
25
- define_singleton_method('limits') do
26
- @limits
27
- end
28
- @limits = TestMethods::Limits.new(self)
29
- # Add any methods
30
- if options[:methods][:methods]
31
- methods = options[:methods][:methods]
32
- @finalize = methods[:finalize]
33
- methods.each do |method_name, function|
34
- unless method_name == :finalize
35
- var_name = "@#{method_name}".gsub(/=|\?/, '_')
36
- instance_variable_set(var_name, function)
37
- define_singleton_method method_name do |*args|
38
- instance_variable_get(var_name).call(self, *args)
39
- end
40
- end
41
- end
42
- end
43
- # Create attributes corresponding to the test method type represented
44
- # by this method instance
45
- options[:methods].each do |attr, type_default|
46
- unless attr == :limits_type || attr == :aliases || attr == :methods
47
- clean_attr = clean_attr_name(attr)
48
- type = type_default[0]
49
- default = type_default[1]
50
- allowed = type_default[2]
51
- @parameters[attr] = type
52
- aliases = [clean_attr]
53
- aliases << clean_attr.underscore if clean_attr.underscore != clean_attr
54
- aliases.each do |alias_|
55
- define_singleton_method("#{alias_}=") do |v|
56
- v = v.to_s if v.is_a?(Symbol)
57
- if allowed
58
- unless allowed.include?(v)
59
- fail "Cannot set #{alias_} to #{v}, valid values are: #{allowed.join(', ')}"
60
- end
61
- end
62
- instance_variable_set("@#{clean_attr}", v)
63
- end
64
- define_singleton_method(alias_) do
65
- instance_variable_get("@#{clean_attr}")
66
- end
67
- end
68
- send("#{clean_attr}=", default)
69
- end
70
- end
71
- if options[:methods][:aliases]
72
- options[:methods][:aliases].each do |alias_, attr|
73
- clean_attr = clean_attr_name(attr)
74
- define_singleton_method("#{alias_}=") do |v|
75
- send("#{clean_attr}=", v)
76
- end
77
- define_singleton_method(alias_) do
78
- send(clean_attr)
79
- end
80
- end
81
- end
82
- # Finally set any initial values that have been supplied
83
- options[:attrs].each do |k, v|
84
- send("#{k}=", v) if respond_to?("#{k}=")
85
- end
86
- end
87
-
88
- def format(attr)
89
- clean_attr = clean_attr_name(attr)
90
- val = send(clean_attr)
91
- if FORMAT_TYPES.include?(parameters[attr])
92
- type = parameters[attr]
93
- else
94
- # The type is based on the value of another attribute
95
- name = clean_attr_name(parameters[attr])
96
- if respond_to?(name)
97
- type = send(name)
98
- elsif respond_to?(name.sub(/b$/, ''))
99
- type = inverse_of(send(name.sub(/b$/, '')))
100
- else
101
- fail "Unknown attribute type: #{parameters[attr]}"
102
- end
103
- end
104
- case type
105
- when :current, 'CURR'
106
- "#{val}[A]"
107
- when :voltage, 'VOLT'
108
- "#{val}[V]"
109
- when :time
110
- "#{val}[s]"
111
- when :frequency
112
- "#{val}[Hz]"
113
- when :string, :integer, :double
114
- val.to_s
115
- else
116
- fail "Unknown type for attribute #{attr}: #{type}"
117
- end
118
- end
119
-
120
- def klass
121
- @abs_class_name ||
122
- "#{library.klass}.#{@class_name || type.to_s.camelize}"
123
- end
124
-
125
- def finalize
126
- @finalize
127
- end
128
-
129
- def method_missing(method, *args, &block)
130
- if limits && limits.respond_to?(method)
131
- limits.send(method, *args, &block)
132
- else
133
- super
134
- end
135
- end
136
-
137
- def respond_to?(method)
138
- (limits && limits.respond_to?(method)) || super
139
- end
140
-
141
- private
142
-
143
- def inverse_of(type)
144
- case type
145
- when :current, 'CURR'
146
- :voltage
147
- when :voltage, 'VOLT'
148
- :current
149
- else
150
- fail "Don't know the inverse of type: #{type}"
151
- end
152
- end
153
-
154
- def clean_attr_name(name)
155
- name.to_s.gsub(/\.|-|\s+/, '_')
156
- end
157
-
158
- def id=(val)
159
- @id = val
160
- end
161
- end
162
- end
163
- end
164
- end
1
+ module OrigenTesters
2
+ module SmartestBasedTester
3
+ class Base
4
+ class TestMethod
5
+ FORMAT_TYPES = [:current, :voltage, :time, :string, :integer, :double]
6
+
7
+ # Returns the object representing the test method library that the
8
+ # given test method is defined in
9
+ attr_reader :library
10
+ attr_reader :type
11
+ attr_reader :id
12
+ alias_method :name, :id
13
+ # Returns an hash corresponding to the parameters that the given test method has.
14
+ # The keys are the parameter names and the values are the parameter type.
15
+ attr_reader :parameters
16
+ attr_accessor :class_name
17
+ attr_accessor :abs_class_name
18
+
19
+ def initialize(options)
20
+ @type = options[:type]
21
+ @library = options[:library]
22
+ @class_name = options[:methods].delete(:class_name)
23
+ @parameters = {}
24
+ # Add limits by default
25
+ define_singleton_method('limits') do
26
+ @limits
27
+ end
28
+ @limits = TestMethods::Limits.new(self)
29
+ # Add any methods
30
+ if options[:methods][:methods]
31
+ methods = options[:methods][:methods]
32
+ @finalize = methods[:finalize]
33
+ methods.each do |method_name, function|
34
+ unless method_name == :finalize
35
+ var_name = "@#{method_name}".gsub(/=|\?/, '_')
36
+ instance_variable_set(var_name, function)
37
+ define_singleton_method method_name do |*args|
38
+ instance_variable_get(var_name).call(self, *args)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ # Create attributes corresponding to the test method type represented
44
+ # by this method instance
45
+ options[:methods].each do |attr, type_default|
46
+ unless attr == :limits_type || attr == :aliases || attr == :methods
47
+ clean_attr = clean_attr_name(attr)
48
+ type = type_default[0]
49
+ default = type_default[1]
50
+ allowed = type_default[2]
51
+ @parameters[attr] = type
52
+ aliases = [clean_attr]
53
+ aliases << clean_attr.underscore if clean_attr.underscore != clean_attr
54
+ aliases.each do |alias_|
55
+ define_singleton_method("#{alias_}=") do |v|
56
+ v = v.to_s if v.is_a?(Symbol)
57
+ if allowed
58
+ unless allowed.include?(v)
59
+ fail "Cannot set #{alias_} to #{v}, valid values are: #{allowed.join(', ')}"
60
+ end
61
+ end
62
+ instance_variable_set("@#{clean_attr}", v)
63
+ end
64
+ define_singleton_method(alias_) do
65
+ instance_variable_get("@#{clean_attr}")
66
+ end
67
+ end
68
+ send("#{clean_attr}=", default)
69
+ end
70
+ end
71
+ if options[:methods][:aliases]
72
+ options[:methods][:aliases].each do |alias_, attr|
73
+ clean_attr = clean_attr_name(attr)
74
+ define_singleton_method("#{alias_}=") do |v|
75
+ send("#{clean_attr}=", v)
76
+ end
77
+ define_singleton_method(alias_) do
78
+ send(clean_attr)
79
+ end
80
+ end
81
+ end
82
+ # Finally set any initial values that have been supplied
83
+ options[:attrs].each do |k, v|
84
+ send("#{k}=", v) if respond_to?("#{k}=")
85
+ end
86
+ end
87
+
88
+ def format(attr)
89
+ clean_attr = clean_attr_name(attr)
90
+ val = send(clean_attr)
91
+ if FORMAT_TYPES.include?(parameters[attr])
92
+ type = parameters[attr]
93
+ else
94
+ # The type is based on the value of another attribute
95
+ name = clean_attr_name(parameters[attr])
96
+ if respond_to?(name)
97
+ type = send(name)
98
+ elsif respond_to?(name.sub(/b$/, ''))
99
+ type = inverse_of(send(name.sub(/b$/, '')))
100
+ else
101
+ fail "Unknown attribute type: #{parameters[attr]}"
102
+ end
103
+ end
104
+ case type
105
+ when :current, 'CURR'
106
+ "#{val}[A]"
107
+ when :voltage, 'VOLT'
108
+ "#{val}[V]"
109
+ when :time
110
+ "#{val}[s]"
111
+ when :frequency
112
+ "#{val}[Hz]"
113
+ when :string, :integer, :double
114
+ val.to_s
115
+ else
116
+ fail "Unknown type for attribute #{attr}: #{type}"
117
+ end
118
+ end
119
+
120
+ def klass
121
+ @abs_class_name ||
122
+ "#{library.klass}.#{@class_name || type.to_s.camelize}"
123
+ end
124
+
125
+ def finalize
126
+ @finalize
127
+ end
128
+
129
+ def method_missing(method, *args, &block)
130
+ if limits && limits.respond_to?(method)
131
+ limits.send(method, *args, &block)
132
+ else
133
+ super
134
+ end
135
+ end
136
+
137
+ def respond_to?(method)
138
+ (limits && limits.respond_to?(method)) || super
139
+ end
140
+
141
+ def sorted_parameters
142
+ @parameters.sort_by do |name|
143
+ if name.is_a?(String)
144
+ name
145
+ else
146
+ if name.to_s[0] == '_'
147
+ name.to_s.camelize(:upper)
148
+ else
149
+ name.to_s.camelize(:lower)
150
+ end
151
+ end
152
+ end
153
+ end
154
+
155
+ private
156
+
157
+ def inverse_of(type)
158
+ case type
159
+ when :current, 'CURR'
160
+ :voltage
161
+ when :voltage, 'VOLT'
162
+ :current
163
+ else
164
+ fail "Don't know the inverse of type: #{type}"
165
+ end
166
+ end
167
+
168
+ def clean_attr_name(name)
169
+ name.to_s.gsub(/\.|-|\s+/, '_')
170
+ end
171
+
172
+ def id=(val)
173
+ @id = val
174
+ end
175
+ end
176
+ end
177
+ end
178
+ end
@@ -1,73 +1,77 @@
1
- module OrigenTesters
2
- module SmartestBasedTester
3
- class Base
4
- class TestMethods
5
- # Origen::Tester::Generator not included since test methods do not have their
6
- # own top-level sheet, they will be incorporated within the flow sheet
7
-
8
- require 'origen_testers/smartest_based_tester/base/test_methods/base_tml'
9
- require 'origen_testers/smartest_based_tester/base/test_methods/limits'
10
- autoload :AcTml, 'origen_testers/smartest_based_tester/base/test_methods/ac_tml'
11
- autoload :DcTml, 'origen_testers/smartest_based_tester/base/test_methods/dc_tml'
12
- autoload :CustomTml, 'origen_testers/smartest_based_tester/base/test_methods/custom_tml'
13
-
14
- attr_accessor :flow, :collection
15
-
16
- def initialize(flow)
17
- @flow = flow
18
- @collection = []
19
- @ix = 0
20
- end
21
-
22
- def filename
23
- flow.filename
24
- end
25
-
26
- def add(test_method, options = {})
27
- collection << test_method
28
- test_method.send 'id=', "tm_#{collection.size}"
29
- test_method
30
- end
31
-
32
- def [](ix)
33
- collection[ix]
34
- end
35
-
36
- # Returns the AC test method library
37
- def ac_tml
38
- @ac_tml ||= AcTml.new(self)
39
- end
40
-
41
- # Returns the DC test method library
42
- def dc_tml
43
- @dc_tml ||= DcTml.new(self)
44
- end
45
-
46
- # Creates an accessor for custom test method libraries the first time they are called
47
- def method_missing(method, *args, &block)
48
- custom_tmls = Origen.interface.send(:custom_tmls)
49
- if custom_tmls[method]
50
- tml = CustomTml.new(self, custom_tmls[method])
51
- instance_variable_set "@#{method}", tml
52
- define_singleton_method method do
53
- instance_variable_get("@#{method}")
54
- end
55
- send(method)
56
- else
57
- super
58
- end
59
- end
60
-
61
- def respond_to?(method)
62
- !!Origen.interface.send(:custom_tmls)[method] || super
63
- end
64
-
65
- def finalize
66
- collection.each do |method|
67
- method.finalize.call(method) if method.finalize
68
- end
69
- end
70
- end
71
- end
72
- end
73
- end
1
+ module OrigenTesters
2
+ module SmartestBasedTester
3
+ class Base
4
+ class TestMethods
5
+ # Origen::Tester::Generator not included since test methods do not have their
6
+ # own top-level sheet, they will be incorporated within the flow sheet
7
+
8
+ require 'origen_testers/smartest_based_tester/base/test_methods/base_tml'
9
+ require 'origen_testers/smartest_based_tester/base/test_methods/limits'
10
+ autoload :AcTml, 'origen_testers/smartest_based_tester/base/test_methods/ac_tml'
11
+ autoload :DcTml, 'origen_testers/smartest_based_tester/base/test_methods/dc_tml'
12
+ autoload :CustomTml, 'origen_testers/smartest_based_tester/base/test_methods/custom_tml'
13
+
14
+ attr_accessor :flow, :collection
15
+
16
+ def initialize(flow)
17
+ @flow = flow
18
+ @collection = []
19
+ @ix = 0
20
+ end
21
+
22
+ def filename
23
+ flow.filename
24
+ end
25
+
26
+ def add(test_method, options = {})
27
+ collection << test_method
28
+ test_method.send 'id=', "tm_#{collection.size}"
29
+ test_method
30
+ end
31
+
32
+ def [](ix)
33
+ collection[ix]
34
+ end
35
+
36
+ # Returns the AC test method library
37
+ def ac_tml
38
+ @ac_tml ||= AcTml.new(self)
39
+ end
40
+
41
+ # Returns the DC test method library
42
+ def dc_tml
43
+ @dc_tml ||= DcTml.new(self)
44
+ end
45
+
46
+ # Creates an accessor for custom test method libraries the first time they are called
47
+ def method_missing(method, *args, &block)
48
+ custom_tmls = Origen.interface.send(:custom_tmls)
49
+ if custom_tmls[method]
50
+ tml = CustomTml.new(self, custom_tmls[method])
51
+ instance_variable_set "@#{method}", tml
52
+ define_singleton_method method do
53
+ instance_variable_get("@#{method}")
54
+ end
55
+ send(method)
56
+ else
57
+ super
58
+ end
59
+ end
60
+
61
+ def respond_to?(method)
62
+ !!Origen.interface.send(:custom_tmls)[method] || super
63
+ end
64
+
65
+ def finalize
66
+ collection.each do |method|
67
+ method.finalize.call(method) if method.finalize
68
+ end
69
+ end
70
+
71
+ def sorted_collection
72
+ @collection.sort_by { |tm| tm.name.to_s }
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end