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,69 +1,69 @@
1
- require 'pathname'
2
- module OrigenTesters
3
- module SmartestBasedTester
4
- class Base
5
- class PatternMaster
6
- include OrigenTesters::Generator
7
-
8
- attr_reader :flow, :paths
9
- attr_accessor :filename, :id
10
-
11
- def initialize(flow = nil)
12
- @flow = flow
13
- @paths = {}
14
- end
15
-
16
- def filename
17
- @filename || flow.filename.sub('.tf', '.pmfl')
18
- end
19
-
20
- def subdirectory
21
- 'vectors'
22
- end
23
-
24
- def paths
25
- { '../vectors' => patterns }
26
- end
27
-
28
- # def add(name, options = {})
29
- # name, subdir = extract_subdir(name, options)
30
- # name += '.binl.gz' unless name =~ /binl.gz$/
31
- # # Don't want to ask Origen to compile these, but do want them in the v93k
32
- # # compile list
33
- # if name =~ /_part\d+\.binl\.gz$/
34
- # Origen.interface.pattern_compiler.part_patterns << name
35
- # else
36
- # Origen.interface.referenced_patterns << name
37
- # end
38
- # paths[subdir] ||= []
39
- # # Just add it, duplicates will be removed at render time
40
- # paths[subdir] << name unless paths[subdir].include?(name)
41
- # end
42
-
43
- def patterns
44
- (references[:subroutine][:all] + references[:subroutine][:ate] +
45
- references[:main][:all] + references[:main][:ate]).map do |p|
46
- p = p.strip
47
- p += '.binl.gz' unless p =~ /binl.gz$/
48
- end.uniq
49
- end
50
-
51
- def references
52
- Origen.interface.all_pattern_references[id]
53
- end
54
-
55
- private
56
-
57
- def extract_subdir(name, options = {})
58
- p = Pathname.new(name.to_s)
59
- name = p.basename.to_s
60
- subdir = p.dirname.to_s
61
- # if subdir == '.'
62
- # # In future may support setting a default subdir via the interface
63
- # end
64
- [name, subdir]
65
- end
66
- end
67
- end
68
- end
69
- end
1
+ require 'pathname'
2
+ module OrigenTesters
3
+ module SmartestBasedTester
4
+ class Base
5
+ class PatternMaster
6
+ include OrigenTesters::Generator
7
+
8
+ attr_reader :flow, :paths
9
+ attr_accessor :filename, :id
10
+
11
+ def initialize(flow = nil)
12
+ @flow = flow
13
+ @paths = {}
14
+ end
15
+
16
+ def filename
17
+ @filename || flow.filename.sub('.tf', '.pmfl')
18
+ end
19
+
20
+ def subdirectory
21
+ 'vectors'
22
+ end
23
+
24
+ def paths
25
+ { '../vectors' => patterns }
26
+ end
27
+
28
+ # def add(name, options = {})
29
+ # name, subdir = extract_subdir(name, options)
30
+ # name += '.binl.gz' unless name =~ /binl.gz$/
31
+ # # Don't want to ask Origen to compile these, but do want them in the v93k
32
+ # # compile list
33
+ # if name =~ /_part\d+\.binl\.gz$/
34
+ # Origen.interface.pattern_compiler.part_patterns << name
35
+ # else
36
+ # Origen.interface.referenced_patterns << name
37
+ # end
38
+ # paths[subdir] ||= []
39
+ # # Just add it, duplicates will be removed at render time
40
+ # paths[subdir] << name unless paths[subdir].include?(name)
41
+ # end
42
+
43
+ def patterns
44
+ (references[:subroutine][:all] + references[:subroutine][:ate] +
45
+ references[:main][:all] + references[:main][:ate]).map do |p|
46
+ p = p.strip
47
+ p += '.binl.gz' unless p =~ /binl.gz$/
48
+ end.uniq
49
+ end
50
+
51
+ def references
52
+ Origen.interface.all_pattern_references[id]
53
+ end
54
+
55
+ private
56
+
57
+ def extract_subdir(name, options = {})
58
+ p = Pathname.new(name.to_s)
59
+ name = p.basename.to_s
60
+ subdir = p.dirname.to_s
61
+ # if subdir == '.'
62
+ # # In future may support setting a default subdir via the interface
63
+ # end
64
+ [name, subdir]
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -1,16 +1,16 @@
1
- module OrigenTesters
2
- module SmartestBasedTester
3
- class Base
4
- module Processors
5
- # Include any V93K specific AST processors here
6
- autoload :IfRanCleaner, 'origen_testers/smartest_based_tester/base/processors/if_ran_cleaner'
7
- autoload :EmptyBranchCleaner, 'origen_testers/smartest_based_tester/base/processors/empty_branch_cleaner'
8
- autoload :FlagOptimizer, 'origen_testers/smartest_based_tester/base/processors/flag_optimizer'
9
- autoload :ExtractSetVariables, 'origen_testers/smartest_based_tester/base/processors/extract_set_variables'
10
- autoload :AdjacentIfCombiner, 'origen_testers/smartest_based_tester/base/processors/adjacent_if_combiner'
11
- autoload :ContinueImplementer, 'origen_testers/smartest_based_tester/base/processors/continue_implementer'
12
- autoload :ExtractRunFlagTable, 'origen_testers/smartest_based_tester/base/processors/extract_run_flag_table'
13
- end
14
- end
15
- end
16
- end
1
+ module OrigenTesters
2
+ module SmartestBasedTester
3
+ class Base
4
+ module Processors
5
+ # Include any V93K specific AST processors here
6
+ autoload :IfRanCleaner, 'origen_testers/smartest_based_tester/base/processors/if_ran_cleaner'
7
+ autoload :EmptyBranchCleaner, 'origen_testers/smartest_based_tester/base/processors/empty_branch_cleaner'
8
+ autoload :FlagOptimizer, 'origen_testers/smartest_based_tester/base/processors/flag_optimizer'
9
+ autoload :ExtractSetVariables, 'origen_testers/smartest_based_tester/base/processors/extract_set_variables'
10
+ autoload :AdjacentIfCombiner, 'origen_testers/smartest_based_tester/base/processors/adjacent_if_combiner'
11
+ autoload :ContinueImplementer, 'origen_testers/smartest_based_tester/base/processors/continue_implementer'
12
+ autoload :ExtractRunFlagTable, 'origen_testers/smartest_based_tester/base/processors/extract_run_flag_table'
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,106 +1,106 @@
1
- module OrigenTesters
2
- module SmartestBasedTester
3
- class Base
4
- module Processors
5
- # This combines adjacent if flag nodes where the flag is in the opposite state
6
- #
7
- # s(:flow,
8
- # s(:name, "prb1"),
9
- # s(:run_flag, "SOME_FLAG", true,
10
- # s(:test,
11
- # s(:name, "test1"))),
12
- # s(:run_flag, "SOME_FLAG", false,
13
- # s(:test,
14
- # s(:name, "test2"))))
15
- #
16
- # s(:flow,
17
- # s(:name, "prb1"),
18
- # s(:run_flag, "SOME_FLAG",
19
- # s(:flag_true,
20
- # s(:test,
21
- # s(:name, "test1"))),
22
- # s(:flag_false,
23
- # s(:test,
24
- # s(:name, "test2")))))
25
- #
26
- # See here for an example of the kind of flow level effect it has:
27
- # https://github.com/Origen-SDK/origen_testers/issues/43
28
- class AdjacentIfCombiner < ATP::Processor
29
- class SetRunFlagFinder < ATP::Processor
30
- def contains?(node, flag_name)
31
- @result = false
32
- @flag_name = flag_name
33
- process_all(node)
34
- @result
35
- end
36
-
37
- def on_set_run_flag(node)
38
- if node.to_a[0] == @flag_name
39
- @result = true
40
- end
41
- end
42
- alias_method :on_set_flow_flag, :on_set_run_flag
43
- end
44
-
45
- def on_unnamed_collection(node)
46
- node.updated(nil, optimize(process_all(node.children)))
47
- end
48
- alias_method :on_on_fail, :on_unnamed_collection
49
- alias_method :on_on_pass, :on_unnamed_collection
50
-
51
- def on_named_collection(node)
52
- name, *nodes = *node
53
- node.updated(nil, [name] + optimize(process_all(nodes)))
54
- end
55
- alias_method :on_flow, :on_named_collection
56
- alias_method :on_group, :on_named_collection
57
-
58
- def on_group(node)
59
- name, *nodes = *node
60
- node.updated(nil, [name] + optimize(process_all(nodes)))
61
- end
62
-
63
- def optimize(nodes)
64
- results = []
65
- node1 = nil
66
- nodes.each do |node2|
67
- if node1
68
- if opposite_flag_states?(node1, node2) && safe_to_combine?(node1, node2)
69
- results << combine(node1, node2)
70
- node1 = nil
71
- else
72
- results << node1
73
- node1 = node2
74
- end
75
- else
76
- node1 = node2
77
- end
78
- end
79
- results << node1 if node1
80
- results
81
- end
82
-
83
- def combine(node1, node2)
84
- true_node = node1.to_a[1] ? node1 : node2
85
- false_node = node1.to_a[1] ? node2 : node1
86
- true_node = n(:flag_true, process_all(true_node.to_a[2..-1]))
87
- false_node = n(:flag_false, process_all(false_node.to_a[2..-1]))
88
-
89
- n(node1.type, [node1.to_a[0], true_node, false_node])
90
- end
91
-
92
- def opposite_flag_states?(node1, node2)
93
- ((node1.type == :run_flag && node2.type == :run_flag) || (node1.type == :flow_flag && node2.type == :flow_flag)) &&
94
- node1.to_a[0] == node2.to_a[0] && node1.to_a[1] != node2.to_a[1]
95
- end
96
-
97
- def safe_to_combine?(node1, node2)
98
- # Nodes won't be collapsed if node1 touches the shared run flag, i.e. if there is any chance
99
- # that by the time it would naturally execute node2, the flag could have been changed by node1
100
- !SetRunFlagFinder.new.contains?(node1, node1.to_a[0])
101
- end
102
- end
103
- end
104
- end
105
- end
106
- end
1
+ module OrigenTesters
2
+ module SmartestBasedTester
3
+ class Base
4
+ module Processors
5
+ # This combines adjacent if flag nodes where the flag is in the opposite state
6
+ #
7
+ # s(:flow,
8
+ # s(:name, "prb1"),
9
+ # s(:run_flag, "SOME_FLAG", true,
10
+ # s(:test,
11
+ # s(:name, "test1"))),
12
+ # s(:run_flag, "SOME_FLAG", false,
13
+ # s(:test,
14
+ # s(:name, "test2"))))
15
+ #
16
+ # s(:flow,
17
+ # s(:name, "prb1"),
18
+ # s(:run_flag, "SOME_FLAG",
19
+ # s(:flag_true,
20
+ # s(:test,
21
+ # s(:name, "test1"))),
22
+ # s(:flag_false,
23
+ # s(:test,
24
+ # s(:name, "test2")))))
25
+ #
26
+ # See here for an example of the kind of flow level effect it has:
27
+ # https://github.com/Origen-SDK/origen_testers/issues/43
28
+ class AdjacentIfCombiner < ATP::Processor
29
+ class SetRunFlagFinder < ATP::Processor
30
+ def contains?(node, flag_name)
31
+ @result = false
32
+ @flag_name = flag_name
33
+ process_all(node)
34
+ @result
35
+ end
36
+
37
+ def on_set_run_flag(node)
38
+ if node.to_a[0] == @flag_name
39
+ @result = true
40
+ end
41
+ end
42
+ alias_method :on_set_flow_flag, :on_set_run_flag
43
+ end
44
+
45
+ def on_unnamed_collection(node)
46
+ node.updated(nil, optimize(process_all(node.children)))
47
+ end
48
+ alias_method :on_on_fail, :on_unnamed_collection
49
+ alias_method :on_on_pass, :on_unnamed_collection
50
+
51
+ def on_named_collection(node)
52
+ name, *nodes = *node
53
+ node.updated(nil, [name] + optimize(process_all(nodes)))
54
+ end
55
+ alias_method :on_flow, :on_named_collection
56
+ alias_method :on_group, :on_named_collection
57
+
58
+ def on_group(node)
59
+ name, *nodes = *node
60
+ node.updated(nil, [name] + optimize(process_all(nodes)))
61
+ end
62
+
63
+ def optimize(nodes)
64
+ results = []
65
+ node1 = nil
66
+ nodes.each do |node2|
67
+ if node1
68
+ if opposite_flag_states?(node1, node2) && safe_to_combine?(node1, node2)
69
+ results << combine(node1, node2)
70
+ node1 = nil
71
+ else
72
+ results << node1
73
+ node1 = node2
74
+ end
75
+ else
76
+ node1 = node2
77
+ end
78
+ end
79
+ results << node1 if node1
80
+ results
81
+ end
82
+
83
+ def combine(node1, node2)
84
+ true_node = node1.to_a[1] ? node1 : node2
85
+ false_node = node1.to_a[1] ? node2 : node1
86
+ true_node = n(:flag_true, process_all(true_node.to_a[2..-1]))
87
+ false_node = n(:flag_false, process_all(false_node.to_a[2..-1]))
88
+
89
+ n(node1.type, [node1.to_a[0], true_node, false_node])
90
+ end
91
+
92
+ def opposite_flag_states?(node1, node2)
93
+ ((node1.type == :run_flag && node2.type == :run_flag) || (node1.type == :flow_flag && node2.type == :flow_flag)) &&
94
+ node1.to_a[0] == node2.to_a[0] && node1.to_a[1] != node2.to_a[1]
95
+ end
96
+
97
+ def safe_to_combine?(node1, node2)
98
+ # Nodes won't be collapsed if node1 touches the shared run flag, i.e. if there is any chance
99
+ # that by the time it would naturally execute node2, the flag could have been changed by node1
100
+ !SetRunFlagFinder.new.contains?(node1, node1.to_a[0])
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -1,39 +1,39 @@
1
- module OrigenTesters
2
- module SmartestBasedTester
3
- class Base
4
- module Processors
5
- # Implements continue on a fail branch for V93K by removing any bin nodes that are
6
- # siblings of continue nodes. The continue nodes are also removed in the process since
7
- # they have now served their function.
8
- class ContinueImplementer < ATP::Processor
9
- # Delete any on-fail child if it's 'empty'
10
- def on_on_fail(node)
11
- if cont = node.find(:continue) || @continue
12
- node = node.updated(nil, node.children - [cont] - node.find_all(:set_result))
13
- end
14
- node.updated(nil, process_all(node.children))
15
- end
16
-
17
- def on_group(node)
18
- f = node.find(:on_fail)
19
- if f && f.find(:continue)
20
- with_continue do
21
- node = node.updated(nil, process_all(node.children))
22
- end
23
- node
24
- else
25
- node.updated(nil, process_all(node.children))
26
- end
27
- end
28
-
29
- def with_continue
30
- orig = @continue
31
- @continue = true
32
- yield
33
- @continue = orig
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
1
+ module OrigenTesters
2
+ module SmartestBasedTester
3
+ class Base
4
+ module Processors
5
+ # Implements continue on a fail branch for V93K by removing any bin nodes that are
6
+ # siblings of continue nodes. The continue nodes are also removed in the process since
7
+ # they have now served their function.
8
+ class ContinueImplementer < ATP::Processor
9
+ # Delete any on-fail child if it's 'empty'
10
+ def on_on_fail(node)
11
+ if cont = node.find(:continue) || @continue
12
+ node = node.updated(nil, node.children - [cont] - node.find_all(:set_result))
13
+ end
14
+ node.updated(nil, process_all(node.children))
15
+ end
16
+
17
+ def on_group(node)
18
+ f = node.find(:on_fail)
19
+ if f && f.find(:continue)
20
+ with_continue do
21
+ node = node.updated(nil, process_all(node.children))
22
+ end
23
+ node
24
+ else
25
+ node.updated(nil, process_all(node.children))
26
+ end
27
+ end
28
+
29
+ def with_continue
30
+ orig = @continue
31
+ @continue = true
32
+ yield
33
+ @continue = orig
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end