origen_testers 0.41.0 → 0.42.0

Sign up to get free protection for your applications and to get access to all the features.
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