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,29 @@
1
+ require 'origen/pins/timing/timeset'
2
+
3
+ module Origen
4
+ module Pins
5
+ module Timing
6
+ class Timeset
7
+ attr_reader :_timeset_
8
+
9
+ # Bind to the original initialize method in Origen and add registering
10
+ # the DUT timeset to the tester.
11
+ @orig_init = instance_method(:initialize)
12
+ define_method(:initialize) do |*args|
13
+ self.class.instance_variable_get(:@orig_init).bind(self).call(*args)
14
+ instance_variable_set(:@_timeset_, OrigenTesters::Timing.lookup_or_register_timeset(self))
15
+ end
16
+
17
+ # Defer any missing methods to the corresponding timeset object on the tester side.
18
+ # If the method isn't found their either, raise the standard NoMethod error.
19
+ def method_missing(m, *args, &block)
20
+ if _timeset_.respond_to?(m)
21
+ _timeset_.send(m, *args, &block)
22
+ else
23
+ super
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
File without changes
File without changes
@@ -9,7 +9,10 @@ module OrigenTesters
9
9
  @owner = owner
10
10
  @pins = nil
11
11
 
12
- if options && options[:pins] && options[:vps]
12
+ if options && options[:skip_setup]
13
+ @skip_setup = options[:skip_setup] # optional: force skip of AVI digcap setup
14
+ # e.g. handled by RDI
15
+ elsif options && options[:pins] && options[:vps]
13
16
  @pins = options[:pins] # required: pins to be captured
14
17
  @vps = options[:vps] # required: vecotrs per sample
15
18
  @nrf = options[:nrf] || 1 # optional: nr_frames (defaults to 1)
@@ -21,15 +24,17 @@ module OrigenTesters
21
24
 
22
25
  def render_aiv_lines
23
26
  lines = []
24
- lines << ''
25
- lines << 'AI_DIGCAP_SETTINGS {'
26
- lines << render_digcap_header
27
- avc_files.each do |f|
28
- if vec_per_frame[f.to_sym] > 0
29
- lines << render_digcap_entry(f)
27
+ unless @skip_setup
28
+ lines << ''
29
+ lines << 'AI_DIGCAP_SETTINGS {'
30
+ lines << render_digcap_header
31
+ avc_files.each do |f|
32
+ if vec_per_frame[f.to_sym] > 0
33
+ lines << render_digcap_entry(f)
34
+ end
30
35
  end
36
+ lines << '};'
31
37
  end
32
- lines << '};'
33
38
  lines
34
39
  end
35
40
 
File without changes
@@ -2,6 +2,8 @@ module OrigenTesters
2
2
  module SmartestBasedTester
3
3
  autoload :Base, 'origen_testers/smartest_based_tester/base'
4
4
  autoload :V93K, 'origen_testers/smartest_based_tester/v93k'
5
+
6
+ require 'origen_testers/smartest_based_tester/decompiler'
5
7
  end
6
8
  # Convenience/Legacy names without the SmartestBasedTester namespace
7
9
  autoload :V93K, 'origen_testers/smartest_based_tester/v93k'
@@ -411,7 +411,7 @@ module OrigenTesters
411
411
  def handshake(options = {})
412
412
  options = {
413
413
  }.merge(options)
414
- Pattern.split(options)
414
+ ::Pattern.split(options)
415
415
  end
416
416
 
417
417
  # Do a frequency measure.
@@ -421,7 +421,7 @@ module OrigenTesters
421
421
  def freq_count(_pin, options = {})
422
422
  options = {
423
423
  }.merge(options)
424
- Pattern.split(options)
424
+ ::Pattern.split(options)
425
425
  end
426
426
 
427
427
  # Generates a match loop on up to two pins.
@@ -0,0 +1,43 @@
1
+ module OrigenTesters
2
+ module SmartestBasedTester
3
+ def self.suitable_decompiler_for(pattern: nil, tester: nil, **options)
4
+ if pattern && (Pathname(pattern).extname == '.avc')
5
+ OrigenTesters::SmartestBasedTester::Pattern
6
+ elsif tester && tester == 'v93k'
7
+ OrigenTesters::SmartestBasedTester::Pattern
8
+ end
9
+ end
10
+ extend OrigenTesters::Decompiler::API
11
+ register_decompiler(self)
12
+
13
+ class Pattern < OrigenTesters::Decompiler::Pattern
14
+ require_relative './decompiler/avc'
15
+ extend Avc
16
+
17
+ @platform = 'v93k'
18
+ @splitter_config = {
19
+ pinlist_start: /^FORMAT/,
20
+
21
+ # The vectors start will be picked up right after the pinlist is parsed.
22
+ # We'll throw away any whitespace we encounter between the pinlist and
23
+ # first vector element though.
24
+ vectors_start: proc do |line:, index:, current_indices:|
25
+ # The pinlist was encountered. Start the vectors at the next line
26
+ # that's not just whitespace
27
+ if current_indices[:pinlist_start] && line !~ /^\s/
28
+ next true
29
+ end
30
+ false
31
+ end,
32
+
33
+ # V93K doesn't have any endmatter, or vector end delimiter, so just
34
+ # grab vectors until the end of the file is reached.
35
+ vectors_end: -1
36
+ }
37
+
38
+ @platform_tokens = {
39
+ comment_start: '#'
40
+ }
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,76 @@
1
+ module OrigenTesters
2
+ module SmartestBasedTester
3
+ class Pattern
4
+ require_relative './nodes'
5
+
6
+ module Avc
7
+ def nodes_namespace
8
+ OrigenTesters::SmartestBasedTester::Decompiler::Avc
9
+ end
10
+
11
+ def parse_frontmatter(raw_frontmatter:, context:)
12
+ # So far, only seen patterns that have comments and/or whitespace in
13
+ # the frontmatter. Not sure if anything else is allowed.
14
+ # For this, every comment will be considered the 'header'
15
+ header = []
16
+ raw_frontmatter.each_with_index do |l, i|
17
+ if !(l =~ Regexp.new('^\s*#')).nil?
18
+ header << l.chomp
19
+ elsif l.strip.empty?
20
+ # Whitespace. Do nothing.
21
+ else
22
+ Origen.app!.fail!("Unable to parse pattern frontmatter, at line: #{i}")
23
+ end
24
+ end
25
+ OrigenTesters::Decompiler::Nodes::Frontmatter.new(context: context,
26
+ pattern_header: header,
27
+ comments: []
28
+ )
29
+ end
30
+
31
+ def parse_pinlist(raw_pinlist:, context:)
32
+ raw_pinlist = raw_pinlist.join('')
33
+ # The pinlist can be parsed by grabbing everything between the 'format' token and the ';'
34
+ # character then splitting by whitespace. Whitespace is then stripped to clean
35
+ # up the names.
36
+ # E.g.: FORMAT TCLK TDI TDO TMS;
37
+ OrigenTesters::Decompiler::Nodes::Pinlist.new(context: context,
38
+ pins: raw_pinlist[raw_pinlist.index('FORMAT')..raw_pinlist.index(';') - 1].split(/\s+/)[1..-1].map(&:strip)
39
+ )
40
+ end
41
+
42
+ def parse_vector(raw_vector:, context:, meta:)
43
+ if raw_vector =~ Regexp.new('^\s*#')
44
+ # Comment
45
+ OrigenTesters::Decompiler::Nodes::CommentBlock.new(context: context,
46
+ comments: raw_vector.split("\n")
47
+ )
48
+ elsif raw_vector =~ Regexp.new('^R\d+\s')
49
+ # Vector
50
+ elements = raw_vector.split(/\s+/, 2 + context.pinlist.size)
51
+ elements[-1] = elements[-1].split(/\s/, 2)
52
+ elements[-1][0] = elements[-1][0].gsub(';', '').chomp
53
+ elements[-1][1] = elements[-1][1].gsub(';', '').chomp
54
+
55
+ nodes_namespace::Vector.new(context: context,
56
+ repeat: elements[0].gsub('R', '').to_i,
57
+ timeset: elements[1],
58
+ pin_states: (elements[2..-2] || []) << elements[-1][0],
59
+ comment: elements[-1][1]
60
+ )
61
+ else
62
+ # Anything that doesn't start with Rxyz where xyz is some integer
63
+ # will be considered a sequencer instruction
64
+ inst_plus_args = raw_vector.split(/\s+/)
65
+ inst_plus_args.last.gsub!(';', '').strip!
66
+
67
+ nodes_namespace::SequencerInstruction.new(context: context,
68
+ instruction: inst_plus_args[0],
69
+ arguments: inst_plus_args[1..-1]
70
+ )
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,23 @@
1
+ module OrigenTesters
2
+ module SmartestBasedTester
3
+ module Decompiler
4
+ module Avc
5
+ class SequencerInstruction < OrigenTesters::Decompiler::Nodes::Node
6
+ PLATFORM_NODES = [:instruction, :arguments]
7
+
8
+ def initialize(instruction:, arguments: [], context:)
9
+ @execute = false
10
+
11
+ @instruction = instruction
12
+ @arguments = arguments
13
+
14
+ super(context: context, type: :sequencer_instruction)
15
+ end
16
+ end
17
+
18
+ class Vector < OrigenTesters::Decompiler::Nodes::Vector
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
File without changes
@@ -105,16 +105,16 @@ module OrigenTesters
105
105
  end
106
106
  end
107
107
 
108
- def set_timeset(timeset, period_in_ns = nil)
108
+ def set_timeset(t, period_in_ns = nil)
109
109
  super
110
110
  if pattern_only
111
111
  # Why does D10 not include this?
112
- # microcode "W #{timeset};"
112
+ # microcode "W #{t};"
113
113
  else
114
114
  @wavesets ||= []
115
115
  wave_number = nil
116
116
  @wavesets.each_with_index do |w, i|
117
- if w[:name] == @timeset.name && w[:period] = @timeset.period_in_ns
117
+ if w[:name] == timeset.name && w[:period] = timeset.period_in_ns
118
118
  wave_number = i
119
119
  end
120
120
  end
@@ -123,7 +123,7 @@ module OrigenTesters
123
123
  ordered_pins.each do |pin|
124
124
  if pin.direction == :input || pin.direction == :io
125
125
  line = "#{pin.name} { 01 { "
126
- wave = pin.drive_wave
126
+ wave = pin.drive_wave if tester.timeset.dut_timeset
127
127
  (wave ? wave.evaluated_events : []).each do |t, v|
128
128
  line << "'#{t}ns' "
129
129
  if v == 0
@@ -140,7 +140,7 @@ module OrigenTesters
140
140
  end
141
141
  if pin.direction == :output || pin.direction == :io
142
142
  line = "#{pin.name} { LHX { "
143
- wave = pin.compare_wave
143
+ wave = pin.compare_wave if tester.timeset.dut_timeset
144
144
  (wave ? wave.evaluated_events : []).each_with_index do |tv, i|
145
145
  t, v = *tv
146
146
  if i == 0 && t != 0
@@ -160,7 +160,7 @@ module OrigenTesters
160
160
  lines << line
161
161
  end
162
162
  end
163
- @wavesets << { name: @timeset.name, period: @timeset.period_in_ns, lines: lines }
163
+ @wavesets << { name: timeset.name, period: timeset.period_in_ns, lines: lines }
164
164
  wave_number = @wavesets.size
165
165
  end
166
166
  microcode "W Waveset#{wave_number};"
File without changes
@@ -0,0 +1,22 @@
1
+ module OrigenTesters
2
+ module Test
3
+ class ComplexTimingDUT
4
+ include Origen::TopLevel
5
+
6
+ def initialize(options = {})
7
+ add_timeset(:complex_timing)
8
+ timeset(:complex_timing) do |t|
9
+ t.period_in_ns = 1
10
+ t.drive_wave(:tclk) do |w|
11
+ w.drive(0, at: 0)
12
+ w.drive(:data, at: 'period/2')
13
+ end
14
+ end
15
+ end
16
+
17
+ def startup
18
+ tester.set_timeset(:complex_timing)
19
+ end
20
+ end
21
+ end
22
+ end