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,276 +1,276 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class Base
4
- class FlowLine
5
- attr_accessor :type, :id, :cz_setup # cz_setup is a virtual attrib since it is not part of the regular flow line
6
- # cz_setup combine with instance name when characterize opcode is used
7
-
8
- # Map any aliases to the official names here, multiple aliases for a given attribute
9
- # are allowed
10
- ALIASES = {
11
- bin: :bin_fail,
12
- softbin: :sort_fail,
13
- soft_bin: :sort_fail,
14
- sbin: :sort_fail,
15
- name: :tname,
16
- number: :tnum,
17
- if_enable: :enable,
18
- if_enabled: :enable,
19
- enabled: :enable,
20
- hi_limit: :hilim,
21
- hi: :hilim,
22
- lo_limit: :lolim,
23
- lo: :lolim,
24
- # Aliases can also be used to set defaults on multiple attributes like this,
25
- # use :value to refer to the value passed in to the given alias
26
- flag_false: { device_condition: 'flag-false',
27
- device_name: :value
28
- },
29
- flag_true: { device_condition: 'flag-true',
30
- device_name: :value
31
- },
32
- flag_false_any: { group_specifier: 'any-active',
33
- group_condition: 'flag-false',
34
- group_name: :value
35
- },
36
- flag_false_all: { group_specifier: 'all-active',
37
- group_condition: 'flag-false',
38
- group_name: :value
39
- },
40
- flag_true_any: { group_specifier: 'any-active',
41
- group_condition: 'flag-true',
42
- group_name: :value
43
- },
44
- flag_true_all: { group_specifier: 'all-active',
45
- group_condition: 'flag-true',
46
- group_name: :value
47
- },
48
- flag_clear: { device_condition: 'flag-clear',
49
- device_name: :value
50
- }
51
- }
52
-
53
- # Assign attribute defaults here, generally this should match whatever defaults
54
- # Teradyne has set whenever you create a new test instance, etc.
55
- DEFAULTS = {
56
- test: {
57
- opcode: 'Test',
58
- result: 'Fail'
59
- },
60
- test_defer_limits: {
61
- opcode: 'Test-defer-limits',
62
- result: 'Fail'
63
- },
64
- cz: {
65
- opcode: 'characterize',
66
- result: 'None'
67
- },
68
- goto: {
69
- opcode: 'goto'
70
- },
71
- nop: {
72
- opcode: 'nop'
73
- },
74
- set_device: {
75
- opcode: 'set-device'
76
- },
77
- set_error_bin: {
78
- opcode: 'set-error-bin'
79
- },
80
- enable_flow_word: {
81
- opcode: 'enable-flow-word'
82
- },
83
- disable_flow_word: {
84
- opcode: 'disable-flow-word'
85
- },
86
- logprint: {
87
- opcode: 'logprint'
88
- },
89
- use_limit: {
90
- opcode: 'Use-Limit',
91
- result: 'Fail'
92
- },
93
- flag_false: {
94
- opcode: 'flag-false'
95
- },
96
- flag_false_all: {
97
- opcode: 'flag-false-all'
98
- },
99
- flag_true: {
100
- opcode: 'flag-true'
101
- },
102
- flag_true_all: {
103
- opcode: 'flag-true-all'
104
- }
105
- }
106
-
107
- def self.define
108
- # Generate accessors for all attributes and their aliases
109
- self::TESTER_FLOWLINE_ATTRS.each do |attr|
110
- writer = "#{attr}=".to_sym
111
- reader = attr.to_sym
112
- attr_reader attr.to_sym unless method_defined? reader
113
- attr_writer attr.to_sym unless method_defined? writer
114
- end
115
-
116
- ALIASES.each do |_alias, val|
117
- if val.is_a? Hash
118
- if ((self::TESTER_FLOWLINE_ATTRS.map(&:to_sym)) & val.keys) == val.keys
119
- writer = "#{_alias}=".to_sym
120
- unless method_defined? writer
121
- define_method("#{_alias}=") do |v|
122
- val.each do |k, _v|
123
- myval = _v == :value ? v : _v
124
- send("#{k}=", myval)
125
- end
126
- end
127
- end
128
- end
129
- else
130
-
131
- if self::TESTER_FLOWLINE_ATTRS.include? "#{val}"
132
- writer = "#{_alias}=".to_sym
133
- reader = _alias.to_sym
134
- unless method_defined? writer
135
- define_method("#{_alias}=") do |v|
136
- send("#{val}=", v)
137
- end
138
- end
139
- unless method_defined? reader
140
- define_method("#{_alias}") do
141
- send(val)
142
- end
143
- end
144
- end
145
- end
146
- end
147
- end
148
-
149
- def initialize(type, attrs = {})
150
- @ignore_missing_instance = attrs.delete(:instance_not_available)
151
- self.cz_setup = attrs.delete(:cz_setup)
152
- @type = type
153
- # Set the defaults
154
- DEFAULTS[@type.to_sym].each do |k, v|
155
- send("#{k}=", v) if self.respond_to?("#{k}=")
156
- end
157
- # Then the values that have been supplied
158
- attrs.each do |k, v|
159
- send("#{k}=", v) if self.respond_to?("#{k}=")
160
- end
161
- # override test numbers if diff-friendly output desired
162
- if Origen.tester.diff_friendly_output?
163
- self.tnum = 0
164
- end
165
- end
166
-
167
- def parameter=(value)
168
- if (@type == :test || @test == :cz) && !@ignore_missing_instance
169
- if value.is_a?(String) || value.is_a?(Symbol)
170
- fail "You must supply the actual test instance object for #{value} when adding it to the flow"
171
- end
172
- end
173
- @parameter = value
174
- end
175
-
176
- def parameter
177
- # When referring to the test instance take the opportunity to refresh the current
178
- # version of the test instance
179
- @parameter = Origen.interface.identity_map.current_version_of(@parameter)
180
- end
181
-
182
- # Returns the fully formatted flow line for insertion into a flow sheet
183
- def to_s
184
- l = "\t"
185
- self.class::TESTER_FLOWLINE_ATTRS.each do |attr|
186
- if attr == 'parameter'
187
- ins = parameter
188
- if ins.respond_to?(:name)
189
- l += "#{ins.name}"
190
- else
191
- l += "#{ins}"
192
- end
193
- if type == :cz && cz_setup
194
- l += " #{cz_setup}\t"
195
- else
196
- l += "\t"
197
- end
198
- else
199
- l += "#{send(attr)}\t"
200
- end
201
- end
202
- "#{l}"
203
- end
204
-
205
- def unless_enable=(*args)
206
- end
207
- alias_method :unless_enabled=, :unless_enable=
208
-
209
- def continue_pass
210
- self.result = 'Pass'
211
- end
212
-
213
- def debug_assume_pass
214
- self.debug_assume = 'Pass'
215
- end
216
-
217
- def debug_assume_fail
218
- self.debug_assume = 'Fail'
219
- end
220
-
221
- # def debug_sites
222
- # self.debug_sites = "All"
223
- # end
224
-
225
- def set_flag_on_pass
226
- self.flag_pass = "#{id}_PASSED"
227
- end
228
-
229
- def set_flag_on_ran
230
- self.flag_pass = "#{id}_RAN"
231
- end
232
-
233
- def run_if_any_passed(parent)
234
- parent.continue_on_fail
235
- self.flag_true_any = parent.set_flag_on_pass
236
- end
237
-
238
- def run_if_all_passed(parent)
239
- parent.continue_on_fail
240
- self.flag_true_all = parent.set_flag_on_pass
241
- end
242
-
243
- def run_if_any_failed(parent)
244
- parent.continue_on_fail
245
- self.flag_true_any = parent.set_flag_on_fail
246
- end
247
-
248
- def run_if_all_failed(parent)
249
- parent.continue_on_fail
250
- self.flag_true_all = parent.set_flag_on_fail
251
- end
252
-
253
- def run_if_all_(args)
254
- # code
255
- end
256
-
257
- def id
258
- @id || "#{parameter}_#{unique_counter}"
259
- end
260
-
261
- def unique_counter
262
- @unique_counter ||= self.class.unique_counter
263
- end
264
-
265
- def self.unique_counter
266
- @ix ||= -1
267
- @ix += 1
268
- end
269
-
270
- def test?
271
- @type == :test
272
- end
273
- end
274
- end
275
- end
276
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class Base
4
+ class FlowLine
5
+ attr_accessor :type, :id, :cz_setup # cz_setup is a virtual attrib since it is not part of the regular flow line
6
+ # cz_setup combine with instance name when characterize opcode is used
7
+
8
+ # Map any aliases to the official names here, multiple aliases for a given attribute
9
+ # are allowed
10
+ ALIASES = {
11
+ bin: :bin_fail,
12
+ softbin: :sort_fail,
13
+ soft_bin: :sort_fail,
14
+ sbin: :sort_fail,
15
+ name: :tname,
16
+ number: :tnum,
17
+ if_enable: :enable,
18
+ if_enabled: :enable,
19
+ enabled: :enable,
20
+ hi_limit: :hilim,
21
+ hi: :hilim,
22
+ lo_limit: :lolim,
23
+ lo: :lolim,
24
+ # Aliases can also be used to set defaults on multiple attributes like this,
25
+ # use :value to refer to the value passed in to the given alias
26
+ flag_false: { device_condition: 'flag-false',
27
+ device_name: :value
28
+ },
29
+ flag_true: { device_condition: 'flag-true',
30
+ device_name: :value
31
+ },
32
+ flag_false_any: { group_specifier: 'any-active',
33
+ group_condition: 'flag-false',
34
+ group_name: :value
35
+ },
36
+ flag_false_all: { group_specifier: 'all-active',
37
+ group_condition: 'flag-false',
38
+ group_name: :value
39
+ },
40
+ flag_true_any: { group_specifier: 'any-active',
41
+ group_condition: 'flag-true',
42
+ group_name: :value
43
+ },
44
+ flag_true_all: { group_specifier: 'all-active',
45
+ group_condition: 'flag-true',
46
+ group_name: :value
47
+ },
48
+ flag_clear: { device_condition: 'flag-clear',
49
+ device_name: :value
50
+ }
51
+ }
52
+
53
+ # Assign attribute defaults here, generally this should match whatever defaults
54
+ # Teradyne has set whenever you create a new test instance, etc.
55
+ DEFAULTS = {
56
+ test: {
57
+ opcode: 'Test',
58
+ result: 'Fail'
59
+ },
60
+ test_defer_limits: {
61
+ opcode: 'Test-defer-limits',
62
+ result: 'Fail'
63
+ },
64
+ cz: {
65
+ opcode: 'characterize',
66
+ result: 'None'
67
+ },
68
+ goto: {
69
+ opcode: 'goto'
70
+ },
71
+ nop: {
72
+ opcode: 'nop'
73
+ },
74
+ set_device: {
75
+ opcode: 'set-device'
76
+ },
77
+ set_error_bin: {
78
+ opcode: 'set-error-bin'
79
+ },
80
+ enable_flow_word: {
81
+ opcode: 'enable-flow-word'
82
+ },
83
+ disable_flow_word: {
84
+ opcode: 'disable-flow-word'
85
+ },
86
+ logprint: {
87
+ opcode: 'logprint'
88
+ },
89
+ use_limit: {
90
+ opcode: 'Use-Limit',
91
+ result: 'Fail'
92
+ },
93
+ flag_false: {
94
+ opcode: 'flag-false'
95
+ },
96
+ flag_false_all: {
97
+ opcode: 'flag-false-all'
98
+ },
99
+ flag_true: {
100
+ opcode: 'flag-true'
101
+ },
102
+ flag_true_all: {
103
+ opcode: 'flag-true-all'
104
+ }
105
+ }
106
+
107
+ def self.define
108
+ # Generate accessors for all attributes and their aliases
109
+ self::TESTER_FLOWLINE_ATTRS.each do |attr|
110
+ writer = "#{attr}=".to_sym
111
+ reader = attr.to_sym
112
+ attr_reader attr.to_sym unless method_defined? reader
113
+ attr_writer attr.to_sym unless method_defined? writer
114
+ end
115
+
116
+ ALIASES.each do |_alias, val|
117
+ if val.is_a? Hash
118
+ if ((self::TESTER_FLOWLINE_ATTRS.map(&:to_sym)) & val.keys) == val.keys
119
+ writer = "#{_alias}=".to_sym
120
+ unless method_defined? writer
121
+ define_method("#{_alias}=") do |v|
122
+ val.each do |k, _v|
123
+ myval = _v == :value ? v : _v
124
+ send("#{k}=", myval)
125
+ end
126
+ end
127
+ end
128
+ end
129
+ else
130
+
131
+ if self::TESTER_FLOWLINE_ATTRS.include? "#{val}"
132
+ writer = "#{_alias}=".to_sym
133
+ reader = _alias.to_sym
134
+ unless method_defined? writer
135
+ define_method("#{_alias}=") do |v|
136
+ send("#{val}=", v)
137
+ end
138
+ end
139
+ unless method_defined? reader
140
+ define_method("#{_alias}") do
141
+ send(val)
142
+ end
143
+ end
144
+ end
145
+ end
146
+ end
147
+ end
148
+
149
+ def initialize(type, attrs = {})
150
+ @ignore_missing_instance = attrs.delete(:instance_not_available)
151
+ self.cz_setup = attrs.delete(:cz_setup)
152
+ @type = type
153
+ # Set the defaults
154
+ DEFAULTS[@type.to_sym].each do |k, v|
155
+ send("#{k}=", v) if self.respond_to?("#{k}=")
156
+ end
157
+ # Then the values that have been supplied
158
+ attrs.each do |k, v|
159
+ send("#{k}=", v) if self.respond_to?("#{k}=")
160
+ end
161
+ # override test numbers if diff-friendly output desired
162
+ if Origen.tester.diff_friendly_output?
163
+ self.tnum = 0
164
+ end
165
+ end
166
+
167
+ def parameter=(value)
168
+ if (@type == :test || @test == :cz) && !@ignore_missing_instance
169
+ if value.is_a?(String) || value.is_a?(Symbol)
170
+ fail "You must supply the actual test instance object for #{value} when adding it to the flow"
171
+ end
172
+ end
173
+ @parameter = value
174
+ end
175
+
176
+ def parameter
177
+ # When referring to the test instance take the opportunity to refresh the current
178
+ # version of the test instance
179
+ @parameter = Origen.interface.identity_map.current_version_of(@parameter)
180
+ end
181
+
182
+ # Returns the fully formatted flow line for insertion into a flow sheet
183
+ def to_s
184
+ l = "\t"
185
+ self.class::TESTER_FLOWLINE_ATTRS.each do |attr|
186
+ if attr == 'parameter'
187
+ ins = parameter
188
+ if ins.respond_to?(:name)
189
+ l += "#{ins.name}"
190
+ else
191
+ l += "#{ins}"
192
+ end
193
+ if type == :cz && cz_setup
194
+ l += " #{cz_setup}\t"
195
+ else
196
+ l += "\t"
197
+ end
198
+ else
199
+ l += "#{send(attr)}\t"
200
+ end
201
+ end
202
+ "#{l}"
203
+ end
204
+
205
+ def unless_enable=(*args)
206
+ end
207
+ alias_method :unless_enabled=, :unless_enable=
208
+
209
+ def continue_pass
210
+ self.result = 'Pass'
211
+ end
212
+
213
+ def debug_assume_pass
214
+ self.debug_assume = 'Pass'
215
+ end
216
+
217
+ def debug_assume_fail
218
+ self.debug_assume = 'Fail'
219
+ end
220
+
221
+ # def debug_sites
222
+ # self.debug_sites = "All"
223
+ # end
224
+
225
+ def set_flag_on_pass
226
+ self.flag_pass = "#{id}_PASSED"
227
+ end
228
+
229
+ def set_flag_on_ran
230
+ self.flag_pass = "#{id}_RAN"
231
+ end
232
+
233
+ def run_if_any_passed(parent)
234
+ parent.continue_on_fail
235
+ self.flag_true_any = parent.set_flag_on_pass
236
+ end
237
+
238
+ def run_if_all_passed(parent)
239
+ parent.continue_on_fail
240
+ self.flag_true_all = parent.set_flag_on_pass
241
+ end
242
+
243
+ def run_if_any_failed(parent)
244
+ parent.continue_on_fail
245
+ self.flag_true_any = parent.set_flag_on_fail
246
+ end
247
+
248
+ def run_if_all_failed(parent)
249
+ parent.continue_on_fail
250
+ self.flag_true_all = parent.set_flag_on_fail
251
+ end
252
+
253
+ def run_if_all_(args)
254
+ # code
255
+ end
256
+
257
+ def id
258
+ @id || "#{parameter}_#{unique_counter}"
259
+ end
260
+
261
+ def unique_counter
262
+ @unique_counter ||= self.class.unique_counter
263
+ end
264
+
265
+ def self.unique_counter
266
+ @ix ||= -1
267
+ @ix += 1
268
+ end
269
+
270
+ def test?
271
+ @type == :test
272
+ end
273
+ end
274
+ end
275
+ end
276
+ end