origen_testers 0.41.0 → 0.42.0

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 (347) hide show
  1. checksums.yaml +4 -4
  2. data/approved/j750/decompiler/sample/sample.atp +16 -0
  3. data/config/application.rb +6 -0
  4. data/config/boot.rb +3 -0
  5. data/config/commands.rb +148 -3
  6. data/config/global_commands.rb +0 -0
  7. data/config/shared_commands.rb +0 -0
  8. data/config/users.rb +0 -0
  9. data/config/version.rb +1 -1
  10. data/lib/commands/build.rb +0 -0
  11. data/lib/commands/convert.rb +16 -10
  12. data/lib/commands/run.rb +0 -0
  13. data/lib/origen_testers.rb +5 -0
  14. data/lib/origen_testers/api.rb +4 -0
  15. data/lib/origen_testers/atp.rb +0 -0
  16. data/lib/origen_testers/atp/ast/extractor.rb +0 -0
  17. data/lib/origen_testers/atp/ast/node.rb +0 -0
  18. data/lib/origen_testers/atp/flow.rb +0 -0
  19. data/lib/origen_testers/atp/flow_api.rb +0 -0
  20. data/lib/origen_testers/atp/formatter.rb +0 -0
  21. data/lib/origen_testers/atp/formatters/basic.rb +0 -0
  22. data/lib/origen_testers/atp/formatters/datalog.rb +0 -0
  23. data/lib/origen_testers/atp/parser.rb +0 -0
  24. data/lib/origen_testers/atp/processor.rb +0 -0
  25. data/lib/origen_testers/atp/processors/add_ids.rb +0 -0
  26. data/lib/origen_testers/atp/processors/add_set_result.rb +0 -0
  27. data/lib/origen_testers/atp/processors/adjacent_if_combiner.rb +0 -0
  28. data/lib/origen_testers/atp/processors/append_to.rb +0 -0
  29. data/lib/origen_testers/atp/processors/apply_post_group_actions.rb +0 -0
  30. data/lib/origen_testers/atp/processors/condition.rb +0 -0
  31. data/lib/origen_testers/atp/processors/continue_implementer.rb +0 -0
  32. data/lib/origen_testers/atp/processors/else_remover.rb +0 -0
  33. data/lib/origen_testers/atp/processors/empty_branch_remover.rb +0 -0
  34. data/lib/origen_testers/atp/processors/extract_set_flags.rb +0 -0
  35. data/lib/origen_testers/atp/processors/flag_optimizer.rb +0 -0
  36. data/lib/origen_testers/atp/processors/flattener.rb +0 -0
  37. data/lib/origen_testers/atp/processors/flow_id.rb +0 -0
  38. data/lib/origen_testers/atp/processors/marshal.rb +0 -0
  39. data/lib/origen_testers/atp/processors/on_pass_fail_remover.rb +0 -0
  40. data/lib/origen_testers/atp/processors/one_flag_per_test.rb +0 -0
  41. data/lib/origen_testers/atp/processors/pre_cleaner.rb +0 -0
  42. data/lib/origen_testers/atp/processors/redundant_condition_remover.rb +0 -0
  43. data/lib/origen_testers/atp/processors/relationship.rb +0 -0
  44. data/lib/origen_testers/atp/processors/sub_flow_remover.rb +0 -0
  45. data/lib/origen_testers/atp/program.rb +0 -0
  46. data/lib/origen_testers/atp/runner.rb +0 -0
  47. data/lib/origen_testers/atp/validator.rb +0 -0
  48. data/lib/origen_testers/atp/validators/condition.rb +0 -0
  49. data/lib/origen_testers/atp/validators/duplicate_ids.rb +0 -0
  50. data/lib/origen_testers/atp/validators/flags.rb +0 -0
  51. data/lib/origen_testers/atp/validators/jobs.rb +0 -0
  52. data/lib/origen_testers/atp/validators/missing_ids.rb +0 -0
  53. data/lib/origen_testers/atp_deprecation.rb +0 -0
  54. data/lib/origen_testers/basic_test_setups.rb +0 -0
  55. data/lib/origen_testers/callback_handlers.rb +0 -0
  56. data/lib/origen_testers/command_based_tester.rb +0 -0
  57. data/lib/origen_testers/decompiler.rb +9 -0
  58. data/lib/origen_testers/decompiler/decompiler_api.rb +163 -0
  59. data/lib/origen_testers/decompiler/nodes.rb +141 -0
  60. data/lib/origen_testers/decompiler/pattern.rb +304 -0
  61. data/lib/origen_testers/decompiler/pattern/elements/base.rb +44 -0
  62. data/lib/origen_testers/decompiler/pattern/elements/comment_block.rb +28 -0
  63. data/lib/origen_testers/decompiler/pattern/elements/frontmatter.rb +42 -0
  64. data/lib/origen_testers/decompiler/pattern/elements/pinlist.rb +44 -0
  65. data/lib/origen_testers/decompiler/pattern/elements/vector.rb +59 -0
  66. data/lib/origen_testers/decompiler/pattern/elements/vector_body_element.rb +105 -0
  67. data/lib/origen_testers/decompiler/pattern/enumerable_ext.rb +173 -0
  68. data/lib/origen_testers/decompiler/pattern/parsers.rb +111 -0
  69. data/lib/origen_testers/decompiler/pattern/spec_helpers.rb +41 -0
  70. data/lib/origen_testers/decompiler/pattern/splitter.rb +166 -0
  71. data/lib/origen_testers/decompiler/pattern/vector_delimiter_base.rb +70 -0
  72. data/lib/origen_testers/flow.rb +0 -0
  73. data/lib/origen_testers/generator/identity_map.rb +0 -0
  74. data/lib/origen_testers/generator/placeholder.rb +0 -0
  75. data/lib/origen_testers/generator/test_numberer.rb +0 -0
  76. data/lib/origen_testers/igxl_based_tester.rb +3 -0
  77. data/lib/origen_testers/igxl_based_tester/base.rb +8 -1
  78. data/lib/origen_testers/igxl_based_tester/base/custom_test_instance.rb +0 -0
  79. data/lib/origen_testers/igxl_based_tester/base/flow.rb +0 -0
  80. data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +0 -0
  81. data/lib/origen_testers/igxl_based_tester/base/patgroup.rb +0 -0
  82. data/lib/origen_testers/igxl_based_tester/base/patgroups.rb +0 -0
  83. data/lib/origen_testers/igxl_based_tester/base/patset.rb +0 -0
  84. data/lib/origen_testers/igxl_based_tester/base/patset_pattern.rb +0 -0
  85. data/lib/origen_testers/igxl_based_tester/base/patsets.rb +0 -0
  86. data/lib/origen_testers/igxl_based_tester/base/patsubr.rb +0 -0
  87. data/lib/origen_testers/igxl_based_tester/base/patsubr_pattern.rb +0 -0
  88. data/lib/origen_testers/igxl_based_tester/base/patsubrs.rb +0 -0
  89. data/lib/origen_testers/igxl_based_tester/base/test_instance_group.rb +0 -0
  90. data/lib/origen_testers/igxl_based_tester/base/test_instances.rb +0 -0
  91. data/lib/origen_testers/igxl_based_tester/base/test_instances/custom_til.rb +0 -0
  92. data/lib/origen_testers/igxl_based_tester/decompiler.rb +72 -0
  93. data/lib/origen_testers/igxl_based_tester/decompiler/atp.rb +98 -0
  94. data/lib/origen_testers/igxl_based_tester/decompiler/nodes.rb +77 -0
  95. data/lib/origen_testers/igxl_based_tester/files.rb +0 -0
  96. data/lib/origen_testers/igxl_based_tester/j750.rb +1 -1
  97. data/lib/origen_testers/igxl_based_tester/j750/custom_test_instance.rb +0 -0
  98. data/lib/origen_testers/igxl_based_tester/j750/flow.rb +0 -0
  99. data/lib/origen_testers/igxl_based_tester/j750/flow_line.rb +0 -0
  100. data/lib/origen_testers/igxl_based_tester/j750/generator.rb +0 -0
  101. data/lib/origen_testers/igxl_based_tester/j750/patgroup.rb +0 -0
  102. data/lib/origen_testers/igxl_based_tester/j750/patgroups.rb +0 -0
  103. data/lib/origen_testers/igxl_based_tester/j750/patset.rb +0 -0
  104. data/lib/origen_testers/igxl_based_tester/j750/patset_pattern.rb +0 -0
  105. data/lib/origen_testers/igxl_based_tester/j750/patsets.rb +0 -0
  106. data/lib/origen_testers/igxl_based_tester/j750/patsubr.rb +0 -0
  107. data/lib/origen_testers/igxl_based_tester/j750/patsubr_pattern.rb +0 -0
  108. data/lib/origen_testers/igxl_based_tester/j750/patsubrs.rb +0 -0
  109. data/lib/origen_testers/igxl_based_tester/j750/templates/flow.txt.erb +0 -0
  110. data/lib/origen_testers/igxl_based_tester/j750/templates/instances.txt.erb +0 -0
  111. data/lib/origen_testers/igxl_based_tester/j750/templates/patgroups.txt.erb +0 -0
  112. data/lib/origen_testers/igxl_based_tester/j750/templates/patsets.txt.erb +0 -0
  113. data/lib/origen_testers/igxl_based_tester/j750/templates/patsubrs.txt.erb +0 -0
  114. data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +0 -0
  115. data/lib/origen_testers/igxl_based_tester/j750/test_instance_group.rb +0 -0
  116. data/lib/origen_testers/igxl_based_tester/j750/test_instances.rb +0 -0
  117. data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +0 -0
  118. data/lib/origen_testers/igxl_based_tester/j750_hpt/custom_test_instance.rb +0 -0
  119. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow.rb +0 -0
  120. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow_line.rb +0 -0
  121. data/lib/origen_testers/igxl_based_tester/j750_hpt/generator.rb +0 -0
  122. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroup.rb +0 -0
  123. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroups.rb +0 -0
  124. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset.rb +0 -0
  125. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset_pattern.rb +0 -0
  126. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsets.rb +0 -0
  127. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr.rb +0 -0
  128. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr_pattern.rb +0 -0
  129. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubrs.rb +0 -0
  130. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance.rb +0 -0
  131. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance_group.rb +0 -0
  132. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instances.rb +0 -0
  133. data/lib/origen_testers/igxl_based_tester/parser.rb +0 -0
  134. data/lib/origen_testers/igxl_based_tester/parser/ac_spec.rb +0 -0
  135. data/lib/origen_testers/igxl_based_tester/parser/ac_specs.rb +0 -0
  136. data/lib/origen_testers/igxl_based_tester/parser/dc_spec.rb +0 -0
  137. data/lib/origen_testers/igxl_based_tester/parser/dc_specs.rb +0 -0
  138. data/lib/origen_testers/igxl_based_tester/parser/descriptions.rb +0 -0
  139. data/lib/origen_testers/igxl_based_tester/parser/flow.rb +0 -0
  140. data/lib/origen_testers/igxl_based_tester/parser/flow_line.rb +0 -0
  141. data/lib/origen_testers/igxl_based_tester/parser/flows.rb +0 -0
  142. data/lib/origen_testers/igxl_based_tester/parser/pattern_set.rb +0 -0
  143. data/lib/origen_testers/igxl_based_tester/parser/pattern_sets.rb +0 -0
  144. data/lib/origen_testers/igxl_based_tester/parser/test_instance.rb +0 -0
  145. data/lib/origen_testers/igxl_based_tester/parser/test_instances.rb +0 -0
  146. data/lib/origen_testers/igxl_based_tester/parser/timeset.rb +0 -0
  147. data/lib/origen_testers/igxl_based_tester/parser/timesets.rb +0 -0
  148. data/lib/origen_testers/igxl_based_tester/ultraflex/flow_line.rb +0 -0
  149. data/lib/origen_testers/igxl_based_tester/ultraflex/generator.rb +0 -0
  150. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroup.rb +0 -0
  151. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroups.rb +0 -0
  152. data/lib/origen_testers/igxl_based_tester/ultraflex/patset.rb +0 -0
  153. data/lib/origen_testers/igxl_based_tester/ultraflex/patset_pattern.rb +0 -0
  154. data/lib/origen_testers/igxl_based_tester/ultraflex/patsets.rb +0 -0
  155. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr.rb +0 -0
  156. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr_pattern.rb +0 -0
  157. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubrs.rb +0 -0
  158. data/lib/origen_testers/igxl_based_tester/ultraflex/pinmap.rb +0 -0
  159. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/flow.txt.erb +0 -0
  160. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/instances.txt.erb +0 -0
  161. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patgroups.txt.erb +0 -0
  162. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patsets.txt.erb +0 -0
  163. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patsubrs.txt.erb +0 -0
  164. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance_group.rb +0 -0
  165. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instances.rb +0 -0
  166. data/lib/origen_testers/labview_based_tester.rb +0 -0
  167. data/lib/origen_testers/memory_style.rb +0 -0
  168. data/lib/origen_testers/no_interface.rb +0 -0
  169. data/lib/origen_testers/origen_ext/application/runner.rb +0 -0
  170. data/lib/origen_testers/origen_ext/generator.rb +0 -0
  171. data/lib/origen_testers/origen_ext/generator/flow.rb +0 -0
  172. data/lib/origen_testers/origen_ext/generator/pattern.rb +0 -0
  173. data/lib/origen_testers/origen_ext/generator/resources.rb +0 -0
  174. data/lib/origen_testers/origen_ext/pins/timing.rb +57 -0
  175. data/lib/origen_testers/origen_ext/pins/timing/timeset.rb +29 -0
  176. data/lib/origen_testers/parser.rb +0 -0
  177. data/lib/origen_testers/parser/description_lookup.rb +0 -0
  178. data/lib/origen_testers/parser/searchable_array.rb +0 -0
  179. data/lib/origen_testers/parser/searchable_hash.rb +0 -0
  180. data/lib/origen_testers/pattern_compilers.rb +0 -0
  181. data/lib/origen_testers/pattern_compilers/assembler.rb +0 -0
  182. data/lib/origen_testers/pattern_compilers/base.rb +0 -0
  183. data/lib/origen_testers/pattern_compilers/igxl_based.rb +0 -0
  184. data/lib/origen_testers/pattern_compilers/j750.rb +0 -0
  185. data/lib/origen_testers/pattern_compilers/job.rb +0 -0
  186. data/lib/origen_testers/pattern_compilers/runner.rb +0 -0
  187. data/lib/origen_testers/pattern_compilers/templates/template.aiv.erb +0 -0
  188. data/lib/origen_testers/pattern_compilers/ultraflex.rb +0 -0
  189. data/lib/origen_testers/pattern_compilers/v93k.rb +0 -0
  190. data/lib/origen_testers/pattern_compilers/v93k/digcap.rb +13 -8
  191. data/lib/origen_testers/pattern_compilers/v93k/multiport.rb +0 -0
  192. data/lib/origen_testers/program_generators.rb +0 -0
  193. data/lib/origen_testers/smartest_based_tester.rb +2 -0
  194. data/lib/origen_testers/smartest_based_tester/base.rb +2 -2
  195. data/lib/origen_testers/smartest_based_tester/base/flow.rb +0 -0
  196. data/lib/origen_testers/smartest_based_tester/base/generator.rb +0 -0
  197. data/lib/origen_testers/smartest_based_tester/base/limits_file.rb +0 -0
  198. data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +0 -0
  199. data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +0 -0
  200. data/lib/origen_testers/smartest_based_tester/base/processors/extract_bin_names.rb +0 -0
  201. data/lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb +0 -0
  202. data/lib/origen_testers/smartest_based_tester/base/test_method.rb +0 -0
  203. data/lib/origen_testers/smartest_based_tester/base/test_methods.rb +0 -0
  204. data/lib/origen_testers/smartest_based_tester/base/test_methods/ac_tml.rb +0 -0
  205. data/lib/origen_testers/smartest_based_tester/base/test_methods/base_tml.rb +0 -0
  206. data/lib/origen_testers/smartest_based_tester/base/test_methods/custom_tml.rb +0 -0
  207. data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +0 -0
  208. data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +0 -0
  209. data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +0 -0
  210. data/lib/origen_testers/smartest_based_tester/base/variables_file.rb +0 -0
  211. data/lib/origen_testers/smartest_based_tester/decompiler.rb +43 -0
  212. data/lib/origen_testers/smartest_based_tester/decompiler/avc.rb +76 -0
  213. data/lib/origen_testers/smartest_based_tester/decompiler/nodes.rb +23 -0
  214. data/lib/origen_testers/smartest_based_tester/smt7.rb +0 -0
  215. data/lib/origen_testers/smartest_based_tester/smt8.rb +0 -0
  216. data/lib/origen_testers/smartest_based_tester/v93k.rb +0 -0
  217. data/lib/origen_testers/smartest_based_tester/v93k/builder.rb +0 -0
  218. data/lib/origen_testers/smartest_based_tester/v93k/builder/flow.rb +0 -0
  219. data/lib/origen_testers/smartest_based_tester/v93k/builder/pattern_master.rb +0 -0
  220. data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +0 -0
  221. data/lib/origen_testers/smartest_based_tester/v93k/generator.rb +0 -0
  222. data/lib/origen_testers/smartest_based_tester/v93k/limits_file.rb +0 -0
  223. data/lib/origen_testers/smartest_based_tester/v93k/pattern_compiler.rb +0 -0
  224. data/lib/origen_testers/smartest_based_tester/v93k/pattern_master.rb +0 -0
  225. data/lib/origen_testers/smartest_based_tester/v93k/templates/limits.csv.erb +0 -0
  226. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb +0 -0
  227. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb +0 -0
  228. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.tf.erb +0 -0
  229. data/lib/origen_testers/smartest_based_tester/v93k/templates/vars.tf.erb +0 -0
  230. data/lib/origen_testers/smartest_based_tester/v93k/test_method.rb +0 -0
  231. data/lib/origen_testers/smartest_based_tester/v93k/test_methods.rb +0 -0
  232. data/lib/origen_testers/smartest_based_tester/v93k/test_suites.rb +0 -0
  233. data/lib/origen_testers/smartest_based_tester/v93k/variables_file.rb +0 -0
  234. data/lib/origen_testers/smartest_based_tester/v93k_smt8.rb +0 -0
  235. data/lib/origen_testers/smartest_based_tester/v93k_smt8/flow.rb +0 -0
  236. data/lib/origen_testers/smartest_based_tester/v93k_smt8/generator.rb +0 -0
  237. data/lib/origen_testers/smartest_based_tester/v93k_smt8/limits_file.rb +0 -0
  238. data/lib/origen_testers/smartest_based_tester/v93k_smt8/limits_workbook.rb +0 -0
  239. data/lib/origen_testers/smartest_based_tester/v93k_smt8/templates/limits.csv.erb +0 -0
  240. data/lib/origen_testers/smartest_based_tester/v93k_smt8/templates/template.flow.erb +0 -0
  241. data/lib/origen_testers/smartest_based_tester/v93k_smt8/test_suite.rb +0 -0
  242. data/lib/origen_testers/stil_based_tester.rb +0 -0
  243. data/lib/origen_testers/stil_based_tester/base.rb +6 -6
  244. data/lib/origen_testers/stil_based_tester/d10.rb +0 -0
  245. data/lib/origen_testers/stil_based_tester/stil.rb +0 -0
  246. data/lib/origen_testers/test/basic_interface.rb +0 -0
  247. data/lib/origen_testers/test/block.rb +0 -0
  248. data/lib/origen_testers/test/complex_timing.rb +22 -0
  249. data/lib/origen_testers/test/custom_test_interface.rb +0 -0
  250. data/lib/origen_testers/test/dummy_decompiler.rb +106 -0
  251. data/lib/origen_testers/test/dut.rb +12 -0
  252. data/lib/origen_testers/test/dut2.rb +19 -6
  253. data/lib/origen_testers/test/dut_adv_timing.rb +0 -0
  254. data/lib/origen_testers/test/empty_dut.rb +12 -0
  255. data/lib/origen_testers/test/interface.rb +0 -0
  256. data/lib/origen_testers/test/nvm.rb +0 -0
  257. data/lib/origen_testers/timing.rb +108 -305
  258. data/lib/origen_testers/timing/timeset.rb +141 -0
  259. data/lib/origen_testers/timing/timing_api.rb +307 -0
  260. data/lib/origen_testers/vector.rb +0 -0
  261. data/lib/origen_testers/vector_based_tester.rb +0 -0
  262. data/lib/origen_testers/vector_generator.rb +1 -0
  263. data/lib/origen_testers/vector_pipeline.rb +0 -0
  264. data/pattern/bitmap.rb +0 -0
  265. data/pattern/dc_instr.rb +0 -0
  266. data/pattern/decompile.rb +4 -0
  267. data/pattern/delay.rb +0 -0
  268. data/pattern/freq_counter.rb +0 -0
  269. data/pattern/mem_test.rb +0 -0
  270. data/pattern/multi_vector.rb +0 -0
  271. data/pattern/multi_vector_plus1.rb +0 -0
  272. data/pattern/nvm/j750/add_late_pins.rb +0 -0
  273. data/pattern/nvm/j750/iterator_postfix_test_x_bx.rb +0 -0
  274. data/pattern/nvm/j750/iterator_test_x_bx.rb +0 -0
  275. data/pattern/nvm/j750/j750_halt.rb +0 -0
  276. data/pattern/nvm/j750/j750_workout.rb +0 -0
  277. data/pattern/nvm/j750/timing.rb +4 -4
  278. data/pattern/nvm/v93k/v93k_workout.rb +0 -0
  279. data/pattern/pin_flip.rb +9 -0
  280. data/pattern/read_write_reg.rb +0 -0
  281. data/pattern/reset.rb +0 -0
  282. data/pattern/simple.rb +4 -0
  283. data/pattern/single_overlay_store.rb +0 -0
  284. data/pattern/subroutines.rb +0 -0
  285. data/pattern/tester_overlay.rb +0 -0
  286. data/pattern/tester_store.rb +0 -0
  287. data/program/_additional_erase.rb +0 -0
  288. data/program/_efa_resources.rb +0 -0
  289. data/program/_erase.rb +0 -0
  290. data/program/_erase_vfy.rb +0 -0
  291. data/program/_iv_resources.rb +0 -0
  292. data/program/basic_interface.rb +0 -0
  293. data/program/components/_deep_nested.rb +0 -0
  294. data/program/components/_prb2_main.rb +0 -0
  295. data/program/components/_small.rb +0 -0
  296. data/program/components/_temp.rb +0 -0
  297. data/program/custom_tests.rb +0 -0
  298. data/program/flow_control.rb +0 -0
  299. data/program/prb1.rb +0 -0
  300. data/program/prb1_resources.rb +0 -0
  301. data/program/prb2.rb +0 -0
  302. data/program/test.rb +0 -0
  303. data/templates/example.txt.erb +0 -0
  304. data/templates/j750/_vt_flow.txt.erb +0 -0
  305. data/templates/j750/_vt_instances.txt.erb +0 -0
  306. data/templates/j750/program_sheet.txt.erb +0 -0
  307. data/templates/manifest/v93k.yaml.erb +0 -0
  308. data/templates/origen_guides/decompilation/decompilerapi.md.erb +192 -0
  309. data/templates/origen_guides/decompilation/overview.md.erb +214 -0
  310. data/templates/origen_guides/decompilation/platformspecifics.md.erb +291 -0
  311. data/templates/origen_guides/decompilation/universalapi.md.erb +598 -0
  312. data/templates/origen_guides/pattern/common.md.erb +0 -0
  313. data/templates/origen_guides/pattern/creating.md.erb +0 -0
  314. data/templates/origen_guides/pattern/custom.md.erb +0 -0
  315. data/templates/origen_guides/pattern/documenting.md.erb +0 -0
  316. data/templates/origen_guides/pattern/introduction.md.erb +0 -0
  317. data/templates/origen_guides/pattern/j750.md.erb +0 -0
  318. data/templates/origen_guides/pattern/name.md.erb +0 -0
  319. data/templates/origen_guides/pattern/pins.md.erb +0 -0
  320. data/templates/origen_guides/pattern/registers.md.erb +0 -0
  321. data/templates/origen_guides/pattern/running.md.erb +0 -0
  322. data/templates/origen_guides/pattern/stil.md.erb +0 -0
  323. data/templates/origen_guides/pattern/timing.md.erb +205 -2
  324. data/templates/origen_guides/pattern/ultraflex.md.erb +0 -0
  325. data/templates/origen_guides/pattern/v93k.md.erb +0 -0
  326. data/templates/origen_guides/program/code.md.erb +0 -0
  327. data/templates/origen_guides/program/custom.md.erb +0 -0
  328. data/templates/origen_guides/program/doc.md.erb +0 -0
  329. data/templates/origen_guides/program/flowapi.md.erb +0 -0
  330. data/templates/origen_guides/program/flows.md.erb +0 -0
  331. data/templates/origen_guides/program/generating.md.erb +0 -0
  332. data/templates/origen_guides/program/interface.md.erb +0 -0
  333. data/templates/origen_guides/program/introduction.md.erb +0 -0
  334. data/templates/origen_guides/program/j750.md.erb +0 -0
  335. data/templates/origen_guides/program/philosophy.md.erb +0 -0
  336. data/templates/origen_guides/program/resources.md.erb +0 -0
  337. data/templates/origen_guides/program/ultraflex.md.erb +0 -0
  338. data/templates/origen_guides/program/v93k.md.erb +0 -0
  339. data/templates/origen_guides/program/v93ksmt7.md.erb +0 -0
  340. data/templates/origen_guides/program/v93ksmt8.md.erb +0 -0
  341. data/templates/web/index.md.erb +0 -0
  342. data/templates/web/layouts/_basic.html.erb +0 -0
  343. data/templates/web/layouts/_guides.html.erb +0 -0
  344. data/templates/web/partials/_navbar.html.erb +0 -0
  345. data/templates/web/partials/_placeholder.md.erb +0 -0
  346. data/templates/web/release_notes.md.erb +0 -0
  347. metadata +61 -3
@@ -0,0 +1,28 @@
1
+ module OrigenTesters
2
+ module Decompiler
3
+ class Pattern
4
+ require_relative './base'
5
+
6
+ class CommentBlock < Base
7
+ def initialize(parent)
8
+ super(node: parent, context: parent.context)
9
+ end
10
+
11
+ def comments
12
+ processor.comments
13
+ end
14
+
15
+ def to_yaml_hash(options = {})
16
+ {
17
+ class: self.class.to_s,
18
+ index: (node.respond_to?(:index) ? node.index : nil),
19
+ type: node.type,
20
+ processor: node.class.to_s,
21
+ comments: comments,
22
+ platform_nodes: _platform_nodes_
23
+ }
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,42 @@
1
+ module OrigenTesters
2
+ module Decompiler
3
+ class Pattern
4
+ require_relative './base'
5
+
6
+ class Frontmatter < Base
7
+ def initialize(node:, context:)
8
+ @source = :frontmatter
9
+ super
10
+ end
11
+
12
+ # Returns the topmost comment block.
13
+ # @return [Array] Array representing the topmost common, split by the <code> separator</code>.
14
+ # If there is no comment header, an empty array is returned.
15
+ def pattern_header
16
+ processor.pattern_header
17
+ end
18
+
19
+ # Returns all the comments, in the order they appear.
20
+ # @return [Array] Returns an array of comment blocks, where
21
+ # a comment block is an array of strings found in that block.
22
+ # The comment block can be recontructed into raw text by joining the
23
+ # array with the <code>separator</code>.
24
+ # If no comments were found, an empty array is returned.
25
+ # @note This will <u>NOT</u> include the <code>comment_header</code>.
26
+ def comments
27
+ processor.comments
28
+ end
29
+
30
+ def to_yaml_hash
31
+ {
32
+ class: self.class.to_s,
33
+ processor: processor.class.to_s,
34
+ pattern_header: pattern_header,
35
+ comments: comments,
36
+ platform_nodes: _platform_nodes_
37
+ }
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,44 @@
1
+ module OrigenTesters
2
+ module Decompiler
3
+ class Pattern
4
+ require_relative './base'
5
+
6
+ class Pinlist < Base
7
+ def initialize(node:, context:)
8
+ @source = :pinlist
9
+ super
10
+ end
11
+
12
+ # Returns the pinlist as an ordered list.
13
+ # @return [Array] Array of strings where each array element is the
14
+ # corresponding pin in that position.
15
+ # @example Return the pinlist.
16
+ # # (Teradyne ATP format) vector ($tset, tclk, tdi, tdo, tms)
17
+ # pinlist #=> ['tclk', 'tdi', 'tdo', 'tms']
18
+ def pinlist
19
+ processor.pins
20
+ end
21
+
22
+ def pins
23
+ processor.pins
24
+ end
25
+
26
+ # Returns the size of the pinlist.
27
+ # @return [Integer] Size of the pinlist.
28
+ def pinlist_size
29
+ processor.pinlist.size
30
+ end
31
+ alias_method :size, :pinlist_size
32
+
33
+ def to_yaml_hash
34
+ {
35
+ class: self.class.to_s,
36
+ processor: processor.class.to_s,
37
+ pinlist: pinlist,
38
+ platform_nodes: _platform_nodes_
39
+ }
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,59 @@
1
+ module OrigenTesters
2
+ module Decompiler
3
+ class Pattern
4
+ require_relative './base'
5
+
6
+ # Represents a single Vector's AST.
7
+ class Vector < Base
8
+ alias_method :parent, :node
9
+
10
+ def initialize(parent, options = {})
11
+ super(node: parent, context: parent.context)
12
+ end
13
+
14
+ def timeset
15
+ processor.timeset
16
+ end
17
+
18
+ def repeat
19
+ processor.repeat
20
+ end
21
+
22
+ def pin_states
23
+ processor.pin_states
24
+ end
25
+
26
+ def comment
27
+ processor.comment
28
+ end
29
+
30
+ def vector_index
31
+ parent.vector_index
32
+ end
33
+
34
+ def to_yaml_hash(options = {})
35
+ if parent.type == :vector
36
+ {
37
+ class: self.class.to_s,
38
+ vector_index: (parent.respond_to?(:vector_index) ? parent.vector_index : nil),
39
+ type: parent.type,
40
+ processor: processor.class.to_s,
41
+ timeset: timeset,
42
+ repeat: repeat,
43
+ pin_states: pin_states,
44
+ comment: comment,
45
+ platform_nodes: _platform_nodes_
46
+ }
47
+ else
48
+ {
49
+ class: self.class.to_s,
50
+ vector_index: (parent.respond_to?(:vector_index) ? parent.vector_index : nil),
51
+ type: parent.type,
52
+ processor: processor.class.to_s
53
+ }
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,105 @@
1
+ module OrigenTesters
2
+ module Decompiler
3
+ class Pattern
4
+ require_relative './base'
5
+
6
+ class VectorBodyElement < Base
7
+ # The known vector element types, supported regardless of the tester/platform.
8
+ BASE_ELEMENTS = [:vector, :comment_block]
9
+
10
+ attr_reader :type
11
+ attr_reader :element
12
+ attr_reader :vector_index
13
+
14
+ def initialize(node:, context:, **options)
15
+ @source = :vector_body_element
16
+ super(node: node, context: context)
17
+ @type = node.type
18
+ @vector_index = options[:vector_index]
19
+
20
+ # If the processor is a :vector or a comment_block, we can deal with
21
+ # this automatically. We also know that neither of these elemnts are
22
+ # platform specific.
23
+ @element = (BASE_ELEMENTS.include?(type)) ? to_element : false
24
+ end
25
+
26
+ # Returns an element class (e.g., Vector) that casts itself to a known vector-element type.
27
+ # For example, if this element's processor is a 'vector', then it can cast itself to a Vector class,
28
+ # to expose functionality (e.g., #timeset) on the class itself. Otherwise, the functionality will remain
29
+ # on the processor and its up to the user to know what the processor has.
30
+ # @note Calling this not required, as this is just an interface to a known processor type.
31
+ def to_element
32
+ if type == :comment_block
33
+ CommentBlock.new(self)
34
+ elsif type == :vector
35
+ Vector.new(self)
36
+ else
37
+ fail "Could not cast platform-specific vector body element type :#{type} to a standalone class!"
38
+ end
39
+ end
40
+
41
+ def to_yaml_hash(options = {})
42
+ {
43
+ class: self.class.to_s,
44
+ vector_index: vector_index
45
+ }.merge(
46
+ begin
47
+ if element
48
+ element.to_yaml_hash(options)
49
+ else
50
+ # If this element couldn't be matched, provide a simple yaml hash
51
+ # including some basic elements.
52
+ {
53
+ type: type,
54
+ processor: processor.class.to_s,
55
+ platform_nodes: _platform_nodes_
56
+ }
57
+ end
58
+ end
59
+ )
60
+ end
61
+
62
+ def is_a_vector?
63
+ type == :vector
64
+ end
65
+ alias_method :is_vector?, :is_a_vector?
66
+ alias_method :vector?, :is_a_vector?
67
+
68
+ def platform
69
+ decompiled_pattern.platform
70
+ end
71
+ alias_method :tester, :platform
72
+
73
+ def platform?(p = nil)
74
+ decompiled_pattern.platform?(p)
75
+ end
76
+ alias_method :tester?, :platform?
77
+
78
+ def decompiler
79
+ decompiled_pattern.platform
80
+ end
81
+
82
+ def decompiler?(d = nil)
83
+ decompiled_pattern.decompiler?(d)
84
+ end
85
+
86
+ def is_a_comment?
87
+ type == :comment || type == :comment_block
88
+ end
89
+ alias_method :is_comment?, :is_a_comment?
90
+
91
+ def is_tester_specific?
92
+ platform_nodes.include?(type)
93
+ end
94
+ alias_method :is_tester_specific_element?, :is_tester_specific?
95
+ alias_method :is_platform_specific?, :is_tester_specific?
96
+ alias_method :is_platform_specific_element?, :is_tester_specific?
97
+ alias_method :is_decompiler_specific?, :is_tester_specific?
98
+ alias_method :is_decompiler_specific_element?, :is_tester_specific?
99
+ alias_method :is_a_tester_specific_element?, :is_tester_specific?
100
+ alias_method :is_a_platform_specific_element?, :is_tester_specific?
101
+ alias_method :is_a_decompiler_specific_element?, :is_tester_specific?
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,173 @@
1
+ module OrigenTesters
2
+ module Decompiler
3
+ class Pattern
4
+ # We can't use Ruby's enumerable mix-in directly, as our each method
5
+ # isn't a true implementation, as the mix-in expects.
6
+ # Instead, we'll provide our own enumerable methods as needed that use
7
+ # our own each method.
8
+ module EnumerableExt
9
+ # Iterate through the vectors one by one.
10
+ # We'll begin reading the file from the vector start until the regex/block
11
+ # vector_delimiter is met.
12
+ # This delimiter can include multiple lines.
13
+ # Once the delimiter finishes, those lines will be sent to the treetop
14
+ # parser for conversion to an AST.
15
+ # Lastly, the next vector will start where the previous one left off.
16
+ def each(**options, &block)
17
+ unless decompiled?
18
+ Origen.app!.fail(message: 'Pattern has not yet been decompiled! Cannot iterate through vectors or query pattern aspects!')
19
+ end
20
+ vectors_started = false
21
+ delimiter_klass = VectorDelimiterBase
22
+ v = delimiter_klass.new(self)
23
+ vector_index = 0
24
+
25
+ if direct_source?
26
+ kickoff = 'source.split("\n")'
27
+ else
28
+ kickoff = 'File.foreach(source)'
29
+ end
30
+
31
+ eval(kickoff).each_with_index do |line, index|
32
+ # Get to the point in the file where the vectors begin
33
+ if index > section_indices[:vectors_end] && section_indices[:vectors_end] != -1
34
+ break
35
+ elsif index < section_indices[:vectors_start]
36
+ next
37
+ end
38
+
39
+ v.shift(line)
40
+ if v.delimited?
41
+ # index starts at 0, but most file editors start the line numbers at 1.
42
+ yield(_parse_vector_(v.current_vector!, vector_index: vector_index, line: index + 1))
43
+ vector_index += 1
44
+
45
+ if v.include_last_line?
46
+ # The last line is included in the current vector.
47
+ v = delimiter_klass.new(self)
48
+ else
49
+ # The last line shouldn't be included in this vector.
50
+ # Shift it into a new one.
51
+ v = delimiter_klass.new(self)
52
+ v.shift(line)
53
+
54
+ # Check if this new vector is delimited before grabbing
55
+ # the next line.
56
+ if v.delimited?
57
+ yield(_parse_vector_(v.current_vector!, vector_index: vector_index))
58
+ v = delimiter_klass.new(self)
59
+ vector_index += 1
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ alias_method :each_vector, :each
66
+
67
+ def each_vector_with_index(&block)
68
+ i = 0
69
+ each_vector do |v|
70
+ yield(v, i)
71
+ i += 1
72
+ end
73
+ end
74
+
75
+ def vector_at(index, &block)
76
+ each_vector_with_index do |v, i|
77
+ if i == index
78
+ return v
79
+ end
80
+ end
81
+ nil
82
+ end
83
+
84
+ def collect(&block)
85
+ vectors = []
86
+ each_vector do |v|
87
+ if block_given?
88
+ vectors << yield(v)
89
+ else
90
+ vectors << v
91
+ end
92
+ end
93
+ vectors
94
+ end
95
+ alias_method :collect_vectors, :collect
96
+ alias_method :map, :collect
97
+ alias_method :map_vectors, :collect
98
+
99
+ def collect_with_index(&block)
100
+ vectors = []
101
+ each_vector_with_index do |v, i|
102
+ if block_given?
103
+ vectors << yield(v, i)
104
+ else
105
+ vectors << v
106
+ end
107
+ end
108
+ vectors
109
+ end
110
+ alias_method :collect_vectors_with_index, :collect_with_index
111
+
112
+ def find_all(&block)
113
+ vectors = []
114
+ if block_given?
115
+ each_vector { |v| vectors << v if yield(v) }
116
+ end
117
+ vectors
118
+ end
119
+ alias_method :select, :find_all
120
+ alias_method :filter, :find_all
121
+
122
+ def find(&block)
123
+ if block_given?
124
+ each_vector { |v| return v if yield(v) }
125
+ end
126
+ end
127
+ alias_method :detect, :find
128
+
129
+ def find_index(&block)
130
+ find(&block).vector_index
131
+ end
132
+
133
+ def count(&block)
134
+ cnt = 0
135
+ if block_given?
136
+ each_vector { |v| cnt += 1 if yield(v) }
137
+ else
138
+ each_vector { |v| cnt += 1 }
139
+ end
140
+ cnt
141
+ end
142
+ alias_method :size, :count
143
+
144
+ def reject(&block)
145
+ vectors = []
146
+ if block_given?
147
+ each_vector { |v| vectors << v unless yield(v) }
148
+ end
149
+ vectors
150
+ end
151
+
152
+ def first(n = nil)
153
+ if n
154
+ if n <= 0
155
+ return nil
156
+ end
157
+
158
+ vectors = []
159
+ each_vector_with_index do |v, i|
160
+ vectors << v
161
+ if n == (i - 1)
162
+ return vectors
163
+ end
164
+ end
165
+ vectors
166
+ else
167
+ each_vector { |v| return v }
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
173
+ end