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,141 @@
1
+ module OrigenTesters
2
+ module Decompiler
3
+ module Nodes
4
+ class Node
5
+ attr_reader :context
6
+ attr_reader :type
7
+
8
+ def self.inherited(subclass)
9
+ if subclass.const_defined?(:PLATFORM_NODES)
10
+ subclass.const_get(:PLATFORM_NODES).each do |n|
11
+ subclass.define_instance_method(n) do
12
+ instance_variable_get(":@#{n}")
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ def initialize(context:, type:, **nodes)
19
+ @context = context
20
+ if type
21
+ @type = type
22
+ elsif @type.nil?
23
+ type = self.class.underscore
24
+ end
25
+
26
+ unless platform_nodes.empty?
27
+ platform_nodes.each do |n|
28
+ define_singleton_method(n) do
29
+ instance_variable_get("@#{n}".to_sym)
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ def execute?
36
+ @execute
37
+ end
38
+
39
+ def platform_nodes
40
+ self.class.const_defined?(:PLATFORM_NODES) ? self.class.const_get(:PLATFORM_NODES) : []
41
+ end
42
+ end
43
+
44
+ class CommentBlock < OrigenTesters::Decompiler::Nodes::Node
45
+ attr_reader :comments
46
+
47
+ def initialize(comments:, context:)
48
+ @comments = comments
49
+ super(context: context, type: :comment_block)
50
+ end
51
+
52
+ def execute?
53
+ true
54
+ end
55
+
56
+ def execute!(context)
57
+ @comments.each { |c| cc(c) }
58
+ end
59
+ end
60
+
61
+ class Vector < OrigenTesters::Decompiler::Nodes::Node
62
+ attr_reader :repeat
63
+ attr_reader :timeset
64
+ attr_reader :pin_states
65
+ attr_reader :comment
66
+
67
+ # rubocop:disable Metrics/ParameterLists
68
+ def initialize(repeat:, timeset:, pin_states:, comment:, context:, **nodes)
69
+ @execute = true
70
+
71
+ @repeat = repeat
72
+ @timeset = timeset
73
+ @pin_states = pin_states
74
+ @comment = comment
75
+
76
+ super(context: context, type: :vector)
77
+ end
78
+ # rubocop:enable Metrics/ParameterLists
79
+
80
+ def execute!(context)
81
+ # Apply a timeset switch, if needed.
82
+ unless Origen.tester.timeset.name == timeset
83
+ Origen.tester.set_timeset(timeset)
84
+ end
85
+
86
+ # Apply the comment
87
+ unless comment.empty?
88
+ cc(comment)
89
+ end
90
+
91
+ # Apply the pin states
92
+ context.pinlist.each_with_index do |pin, i|
93
+ dut.pins(pin).vector_formatted_value = pin_states[i]
94
+ end
95
+
96
+ # Cycle the tester
97
+ repeat.cycles
98
+ end
99
+ end
100
+
101
+ class Pinlist < OrigenTesters::Decompiler::Nodes::Node
102
+ attr_reader :pins
103
+ alias_method :pinlist, :pins
104
+
105
+ def initialize(pins:, context:)
106
+ @pins = pins.map(&:to_sym)
107
+ super(context: context, type: :pinlist)
108
+ end
109
+ end
110
+
111
+ class Frontmatter < OrigenTesters::Decompiler::Nodes::Node
112
+ attr_reader :comments
113
+ attr_reader :pattern_header
114
+
115
+ alias_method :header, :pattern_header
116
+ alias_method :comment_header, :pattern_header
117
+
118
+ def initialize(pattern_header: nil, comments: nil, context:)
119
+ @pattern_header = pattern_header
120
+ @comments = comments || []
121
+
122
+ super(context: context, type: :frontmatter)
123
+ end
124
+
125
+ def execute!(context)
126
+ pattern_header.each do |c|
127
+ cc(c)
128
+ end
129
+
130
+ comments.each do |c|
131
+ cc(c)
132
+ end
133
+ end
134
+
135
+ def execute?
136
+ true
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,304 @@
1
+ module OrigenTesters
2
+ module Decompiler
3
+ require_relative './pattern/elements/base'
4
+ require_relative './pattern/elements/comment_block'
5
+ require_relative './pattern/elements/frontmatter'
6
+ require_relative './pattern/elements/pinlist'
7
+ require_relative './pattern/elements/vector_body_element'
8
+ require_relative './pattern/elements/vector'
9
+ require_relative './pattern/vector_delimiter_base'
10
+ require_relative './pattern/enumerable_ext'
11
+ require_relative './pattern/parsers'
12
+ require_relative './pattern/splitter'
13
+ require_relative './pattern/spec_helpers'
14
+
15
+ class ParseError < Origen::OrigenError
16
+ end
17
+
18
+ class SubclassError < Origen::OrigenError
19
+ end
20
+
21
+ class NoFirstVectorAvailable < Origen::OrigenError
22
+ end
23
+
24
+ class NoSuchSource < Origen::OrigenError
25
+ end
26
+
27
+ class NoSuitableDecompiler < Origen::OrigenError
28
+ end
29
+
30
+ class NoMethodError < Origen::OrigenError
31
+ end
32
+
33
+ class NoAvailableProcessor < Origen::OrigenError
34
+ end
35
+
36
+ class Pattern
37
+ class << self
38
+ attr_reader :splitter_config
39
+ attr_reader :parser_config
40
+ attr_reader :platform_tokens
41
+ attr_reader :platform
42
+ attr_reader :no_verify
43
+ end
44
+
45
+ attr_reader :source
46
+ attr_reader :decompiled
47
+ attr_reader :direct_source
48
+
49
+ include Splitter
50
+ include Parsers
51
+ include EnumerableExt
52
+ include SpecHelpers
53
+
54
+ def initialize(source, direct_source: false, no_verify: false)
55
+ if source.is_a?(File)
56
+ source = source.path
57
+ end
58
+
59
+ if direct_source
60
+ @source = source
61
+ @direct_source = true
62
+ else
63
+ @source = Pathname(source)
64
+ unless @source.exist?
65
+ message = "Cannot find pattern source '#{@source}'"
66
+ Origen.log.error(message)
67
+ Origen.app!.fail(exception_class: OrigenTesters::Decompiler::NoSuchSource, message: message)
68
+ end
69
+ @direct_source = false
70
+ end
71
+ @decompiled = false
72
+
73
+ unless no_verify || self.class.no_verify
74
+ verify_subclass_configuration
75
+ end
76
+ end
77
+
78
+ def platform
79
+ self.class.platform
80
+ end
81
+ alias_method :tester, :platform
82
+
83
+ def platform?(p = nil)
84
+ if p
85
+ platform == p
86
+ else
87
+ platform == tester.name.to_s
88
+ end
89
+ end
90
+ alias_method :tester?, :platform?
91
+
92
+ def decompiler
93
+ self.class
94
+ end
95
+
96
+ def decompiler?(d)
97
+ decompiler == d
98
+ end
99
+
100
+ def parser_config
101
+ self.class.parser_config || {}
102
+ end
103
+
104
+ def platform_tokens
105
+ self.class.platform_tokens
106
+ end
107
+ alias_method :decompiler_tokens, :platform_tokens
108
+
109
+ def comment_start
110
+ self.class.platform_tokens[:comment_start]
111
+ end
112
+ alias_method :comment_token, :comment_start
113
+
114
+ def splitter_config
115
+ self.class.splitter_config
116
+ end
117
+
118
+ def method_parse_frontmatter
119
+ if self.class.respond_to?(:parse_frontmatter)
120
+ self.class.method(:parse_frontmatter)
121
+ end
122
+ end
123
+
124
+ def method_parse_pinlist
125
+ if self.class.respond_to?(:parse_pinlist)
126
+ self.class.method(:parse_pinlist)
127
+ end
128
+ end
129
+
130
+ def method_parse_vector
131
+ if self.class.respond_to?(:parse_vector)
132
+ self.class.method(:parse_vector)
133
+ end
134
+ end
135
+
136
+ def verify_subclass_configuration
137
+ if method_parse_frontmatter.nil?
138
+ subclass_error('Missing class method #parse_frontmatter')
139
+ elsif method_parse_pinlist.nil?
140
+ subclass_error('Missing class method #parse_pinlist')
141
+ elsif method_parse_vector.nil?
142
+ subclass_error('Missing class method #parse_vector')
143
+ elsif splitter_config.nil?
144
+ subclass_error('Missing class variable :splitter_config')
145
+ elsif !(Splitter::REQUIRED_KEYS - splitter_config.keys).empty?
146
+ subclass_error("Splitter config is missing required keys: #{(Splitter::REQUIRED_KEYS - splitter_config.keys).map { |k| ':' + k.to_s }.join(', ')}")
147
+ elsif !(splitter_config.keys - Splitter::REQUIRED_KEYS - Splitter::OPTIONAL_KEYS).empty?
148
+ subclass_error("Splitter config contains extra keys: #{(splitter_config.keys - Splitter::REQUIRED_KEYS - Splitter::OPTIONAL_KEYS).map { |k| ':' + k.to_s }.join(', ')}")
149
+ end
150
+ end
151
+
152
+ def subclass_error(message)
153
+ Origen.log.error("#{self.class.name} failed to subclasss OrigenTesters::DecompilerPattern: #{message}")
154
+ fail(SubclassError, "#{self.class.name} failed to subclasss OrigenTesters::DecompilerPattern: #{message}")
155
+ end
156
+
157
+ def decompiled?
158
+ @decompiled
159
+ end
160
+
161
+ def direct_source?
162
+ @direct_source
163
+ end
164
+
165
+ def first_vector
166
+ @first_vector || begin
167
+ each_vector do |v|
168
+ if v.vector?
169
+ @first_vector = v.element
170
+ break
171
+ end
172
+ end
173
+ if @first_vector.nil?
174
+ fail OrigenTesters::Decompiler::ParseError, "Could not locate the first vector in pattern #{@source}"
175
+ end
176
+ @first_vector
177
+ end
178
+ end
179
+
180
+ def first_timeset
181
+ first_vector.timeset
182
+ end
183
+ alias_method :initial_timeset, :first_timeset
184
+
185
+ def first_pin_states_mapped
186
+ pins.each.with_index.with_object({}) do |(pin, i), hash|
187
+ hash[pin] = initial_pin_states[i]
188
+ end
189
+ end
190
+ alias_method :initial_pin_states_mapped, :first_pin_states_mapped
191
+
192
+ def first_pin_states
193
+ first_vector.pin_states
194
+ end
195
+ alias_method :initial_pin_states, :first_pin_states
196
+
197
+ def pinlist_size
198
+ pinlist.pins.size
199
+ end
200
+ alias_method :num_pins, :pinlist_size
201
+ alias_method :number_of_pins, :pinlist_size
202
+
203
+ def pins
204
+ pinlist.pins
205
+ end
206
+
207
+ def decompile(options = {})
208
+ # Read the pattern and split it into sections then parse and store the
209
+ # frontmatter and pinlist models
210
+ split!
211
+ @frontmatter = _parse_frontmatter_
212
+ @pinlist = _parse_pinlist_
213
+
214
+ @decompiled = true
215
+ self
216
+ end
217
+
218
+ def frontmatter
219
+ @frontmatter
220
+ end
221
+
222
+ def pinlist
223
+ @pinlist
224
+ end
225
+
226
+ def vectors
227
+ @vector_handler ||= vector_start
228
+ end
229
+
230
+ def current_vector_index
231
+ @current_vector_index
232
+ end
233
+
234
+ # Resolves the size of each pin in the pinlist using the initial pin states.
235
+ # @return [Hash] Hash wherein the keys are the pin names and each value is
236
+ # the corresponding size.
237
+ def pin_sizes
238
+ # initial_pin_states.map { |pin, state| state.size }
239
+ initial_pin_states_mapped.map { |pin, state| [pin, state.size] }.to_h
240
+ # pins.each.with_index.with_object({}) do |(pin, i), hash|
241
+ # hash[pin] = initial_pin_states[i].size
242
+ # end
243
+ end
244
+
245
+ def first_vector?
246
+ first_vector
247
+ rescue OrigenTesters::Decompiler::ParseError
248
+ return false
249
+ end
250
+
251
+ # Adds any pins in the decompiled pattern to the DUT which are not already present.
252
+ # @return [Array] Any pin names that were added to the DUT.
253
+ def add_pins
254
+ # pin_sizes = pat_model.pattern_model.pin_sizes
255
+ # pat_model.pinlist.each_with_index do |(name, pin), i|
256
+ # dut.add_pin(name, size: pin_sizes[i]) unless dut.has_pin?(name)
257
+ # end
258
+ retn = []
259
+ if first_vector?
260
+ pin_sizes.each do |pin, size|
261
+ unless dut.has_pin?(pin)
262
+ dut.add_pin(pin, size: size)
263
+ retn << pin
264
+ end
265
+ end
266
+ else
267
+ fail(NoFirstVectorAvailable, "No first vector available for pattern '#{source}'. Cannot add pins to the DUT '#{dut.class.name}'")
268
+ end
269
+ retn
270
+ end
271
+
272
+ # @note <code>line</code> is this context is delimited by the given separator.
273
+ # This may or may not be a true newline-delimited, line.
274
+ # def number_of_lines
275
+ # fail
276
+ # end
277
+
278
+ # Executing a pattern consist of:
279
+ # 1. Doing some initial setup (timesets, initial pin states, etc.)
280
+ # 2. Executing anything that can be executed in the frontmatter
281
+ # 3. Executing the vectors 1-by-1.
282
+ def execute(options = {})
283
+ if Origen.tester.timeset.nil?
284
+ if first_vector?
285
+ Origen.tester.set_timeset(first_timeset, 40)
286
+ else
287
+ Origen.log.error 'No first vector available and the timeset has not already been set!'
288
+ Origen.log.error 'Please set the timeset yourself prior to calling #execute! in a pattern that does not contain a first vector.'
289
+ fail(NoFirstVectorAvailable, "No first vector available for pattern '#{source}'. Cannot set a timeset to execute the pattern.")
290
+ end
291
+ end
292
+ frontmatter.execute!
293
+ each_vector_with_index do |vec, i|
294
+ if Origen.debug?
295
+ Origen.log.info("OrigenTesters: Executing Vector #{i}")
296
+ end
297
+ vec.execute!
298
+ end
299
+
300
+ self
301
+ end
302
+ end
303
+ end
304
+ end
@@ -0,0 +1,44 @@
1
+ module OrigenTesters
2
+ module Decompiler
3
+ class Pattern
4
+ class Base
5
+ attr_reader :context
6
+ alias_method :decompiled_pattern, :context
7
+
8
+ attr_reader :node
9
+ alias_method :processor, :node
10
+
11
+ def initialize(node:, context:, **options)
12
+ @context = context
13
+ @node = node
14
+ end
15
+
16
+ def [](node)
17
+ node.find(node)
18
+ end
19
+
20
+ def platform_nodes
21
+ node.platform_nodes
22
+ end
23
+
24
+ def method_missing(m, *args, &block)
25
+ if platform_nodes.include?(m) || node.respond_to?(m)
26
+ node.send(m)
27
+ else
28
+ super
29
+ end
30
+ end
31
+
32
+ def execute!
33
+ if node.execute?
34
+ node.execute!(self)
35
+ end
36
+ end
37
+
38
+ def pinlist
39
+ decompiled_pattern.pinlist.pinlist
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end