origen 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. checksums.yaml +4 -4
  2. data/bin/ctags +0 -0
  3. data/bin/origen +165 -1
  4. data/bin/rgen +2 -0
  5. data/config/application.rb +141 -0
  6. data/config/commands.rb +72 -0
  7. data/config/development.rb +7 -0
  8. data/config/environment.rb +0 -0
  9. data/config/rgen.policy +7 -0
  10. data/config/rubocop/easy.yml +620 -0
  11. data/config/rubocop/easy_disabled.yml +271 -0
  12. data/config/rubocop/easy_enabled.yml +731 -0
  13. data/config/rubocop/strict.yml +620 -0
  14. data/config/rubocop/strict_disabled.yml +247 -0
  15. data/config/rubocop/strict_enabled.yml +755 -0
  16. data/config/users.rb +20 -0
  17. data/config/version.rb +1 -1
  18. data/helpers/url.rb +68 -0
  19. data/lib/c99/doc_interface.rb +56 -0
  20. data/lib/c99/j750_interface.rb +85 -0
  21. data/lib/c99/nvm.rb +89 -0
  22. data/lib/c99/target/mock2.rb +1 -0
  23. data/lib/c99/target/subdir/mock3.rb +1 -0
  24. data/lib/option_parser/optparse.rb +12 -0
  25. data/lib/origen/acronyms.rb +60 -0
  26. data/lib/origen/application/command_dispatcher.rb +12 -0
  27. data/lib/origen/application/configuration.rb +206 -0
  28. data/lib/origen/application/configuration_manager.rb +78 -0
  29. data/lib/origen/application/deployer.rb +367 -0
  30. data/lib/origen/application/environment.rb +186 -0
  31. data/lib/origen/application/lsf.rb +145 -0
  32. data/lib/origen/application/lsf_manager.rb +657 -0
  33. data/lib/origen/application/plugins_manager.rb +280 -0
  34. data/lib/origen/application/release.rb +359 -0
  35. data/lib/origen/application/runner.rb +246 -0
  36. data/lib/origen/application/statistics.rb +191 -0
  37. data/lib/origen/application/target.rb +374 -0
  38. data/lib/origen/application/version_tracker.rb +59 -0
  39. data/lib/origen/application/workspace_manager.rb +151 -0
  40. data/lib/origen/application.rb +746 -0
  41. data/lib/origen/bugs/bug.rb +36 -0
  42. data/lib/origen/bugs.rb +45 -0
  43. data/lib/origen/callbacks.rb +35 -0
  44. data/lib/origen/chip_mode.rb +118 -0
  45. data/lib/origen/chip_package.rb +461 -0
  46. data/lib/origen/client.rb +87 -0
  47. data/lib/origen/code_generators/actions.rb +258 -0
  48. data/lib/origen/code_generators/base.rb +57 -0
  49. data/lib/origen/code_generators/bundler.rb +17 -0
  50. data/lib/origen/code_generators/gem_setup.rb +49 -0
  51. data/lib/origen/code_generators/rake.rb +13 -0
  52. data/lib/origen/code_generators/rspec.rb +12 -0
  53. data/lib/origen/code_generators/semver.rb +39 -0
  54. data/lib/origen/code_generators/timever.rb +37 -0
  55. data/lib/origen/code_generators.rb +111 -0
  56. data/lib/origen/commands/add.rb +12 -0
  57. data/lib/origen/commands/compile.rb +62 -0
  58. data/lib/origen/commands/ctags.rb +9 -0
  59. data/lib/origen/commands/dispatch.rb +22 -0
  60. data/lib/origen/commands/environment.rb +11 -0
  61. data/lib/origen/commands/fetch.rb +63 -0
  62. data/lib/origen/commands/generate.rb +130 -0
  63. data/lib/origen/commands/interactive.rb +73 -0
  64. data/lib/origen/commands/lint.rb +82 -0
  65. data/lib/origen/commands/lsf.rb +93 -0
  66. data/lib/origen/commands/merge.rb +55 -0
  67. data/lib/origen/commands/modifications.rb +12 -0
  68. data/lib/origen/commands/new.rb +113 -0
  69. data/lib/origen/commands/plugin.rb +105 -0
  70. data/lib/origen/commands/program.rb +70 -0
  71. data/lib/origen/commands/rc.rb +442 -0
  72. data/lib/origen/commands/save.rb +56 -0
  73. data/lib/origen/commands/target.rb +27 -0
  74. data/lib/origen/commands/time.rb +127 -0
  75. data/lib/origen/commands/version.rb +17 -0
  76. data/lib/origen/commands/web.rb +221 -0
  77. data/lib/origen/commands.rb +272 -0
  78. data/lib/origen/commands_global.rb +76 -0
  79. data/lib/origen/controller.rb +94 -0
  80. data/lib/origen/core_ext/array.rb +23 -0
  81. data/lib/origen/core_ext/bignum.rb +36 -0
  82. data/lib/origen/core_ext/enumerable.rb +76 -0
  83. data/lib/origen/core_ext/fixnum.rb +46 -0
  84. data/lib/origen/core_ext/hash.rb +52 -0
  85. data/lib/origen/core_ext/module.rb +14 -0
  86. data/lib/origen/core_ext/numeric.rb +126 -0
  87. data/lib/origen/core_ext/object.rb +13 -0
  88. data/lib/origen/core_ext/range.rb +7 -0
  89. data/lib/origen/core_ext/string.rb +124 -0
  90. data/lib/origen/core_ext.rb +10 -0
  91. data/lib/origen/database/key_value_store.rb +111 -0
  92. data/lib/origen/database/key_value_stores.rb +108 -0
  93. data/lib/origen/database.rb +6 -0
  94. data/lib/origen/encodings.rb +102 -0
  95. data/lib/origen/features/feature.rb +22 -0
  96. data/lib/origen/features.rb +104 -0
  97. data/lib/origen/file_handler.rb +429 -0
  98. data/lib/origen/generator/comparator.rb +56 -0
  99. data/lib/origen/generator/compiler.rb +277 -0
  100. data/lib/origen/generator/flow.rb +49 -0
  101. data/lib/origen/generator/job.rb +131 -0
  102. data/lib/origen/generator/pattern.rb +356 -0
  103. data/lib/origen/generator/pattern_finder.rb +155 -0
  104. data/lib/origen/generator/pattern_iterator.rb +55 -0
  105. data/lib/origen/generator/renderer.rb +113 -0
  106. data/lib/origen/generator/resources.rb +40 -0
  107. data/lib/origen/generator/stage.rb +89 -0
  108. data/lib/origen/generator.rb +85 -0
  109. data/lib/origen/global_methods.rb +205 -0
  110. data/lib/origen/import_manager.rb +596 -0
  111. data/lib/origen/location/base.rb +116 -0
  112. data/lib/origen/location/map.rb +83 -0
  113. data/lib/origen/location.rb +6 -0
  114. data/lib/origen/log.rb +217 -0
  115. data/lib/origen/logger_methods.rb +56 -0
  116. data/lib/origen/mode.rb +61 -0
  117. data/lib/origen/model.rb +267 -0
  118. data/lib/origen/model_initializer.rb +45 -0
  119. data/lib/origen/nvm/block_array.rb +72 -0
  120. data/lib/origen/nvm.rb +6 -0
  121. data/lib/origen/parameters/live.rb +22 -0
  122. data/lib/origen/parameters/missing.rb +28 -0
  123. data/lib/origen/parameters/set.rb +144 -0
  124. data/lib/origen/parameters.rb +107 -0
  125. data/lib/origen/pdm.rb +218 -0
  126. data/lib/origen/pins/function_proxy.rb +36 -0
  127. data/lib/origen/pins/ground_pin.rb +6 -0
  128. data/lib/origen/pins/pin.rb +860 -0
  129. data/lib/origen/pins/pin_bank.rb +349 -0
  130. data/lib/origen/pins/pin_clock.rb +124 -0
  131. data/lib/origen/pins/pin_collection.rb +492 -0
  132. data/lib/origen/pins/pin_common.rb +206 -0
  133. data/lib/origen/pins/port.rb +268 -0
  134. data/lib/origen/pins/power_pin.rb +30 -0
  135. data/lib/origen/pins.rb +696 -0
  136. data/lib/origen/registers/bit.rb +562 -0
  137. data/lib/origen/registers/bit_collection.rb +787 -0
  138. data/lib/origen/registers/container.rb +288 -0
  139. data/lib/origen/registers/domain.rb +16 -0
  140. data/lib/origen/registers/reg.rb +1406 -0
  141. data/lib/origen/registers/reg_collection.rb +24 -0
  142. data/lib/origen/registers.rb +652 -0
  143. data/lib/origen/regression_manager.rb +251 -0
  144. data/lib/origen/remote_manager.rb +340 -0
  145. data/lib/origen/revision_control/base.rb +257 -0
  146. data/lib/origen/revision_control/design_sync.rb +276 -0
  147. data/lib/origen/revision_control/git.rb +243 -0
  148. data/lib/origen/revision_control/subversion.rb +6 -0
  149. data/lib/origen/revision_control.rb +44 -0
  150. data/lib/origen/ruby_version_check.rb +131 -0
  151. data/lib/origen/site_config.rb +61 -0
  152. data/lib/origen/specs/checkers.rb +103 -0
  153. data/lib/origen/specs/creation_info.rb +17 -0
  154. data/lib/origen/specs/doc_resource.rb +91 -0
  155. data/lib/origen/specs/exhibit.rb +17 -0
  156. data/lib/origen/specs/mode_select.rb +16 -0
  157. data/lib/origen/specs/note.rb +17 -0
  158. data/lib/origen/specs/override.rb +21 -0
  159. data/lib/origen/specs/power_supply.rb +13 -0
  160. data/lib/origen/specs/spec.rb +226 -0
  161. data/lib/origen/specs/version_history.rb +14 -0
  162. data/lib/origen/specs.rb +552 -0
  163. data/lib/origen/sub_blocks.rb +298 -0
  164. data/lib/origen/tester/api.rb +277 -0
  165. data/lib/origen/tester/bdm/bdm.rb +25 -0
  166. data/lib/origen/tester/command_based_tester.rb +46 -0
  167. data/lib/origen/tester/doc/doc.rb +226 -0
  168. data/lib/origen/tester/doc/generator/flow.rb +71 -0
  169. data/lib/origen/tester/doc/generator/flow_line.rb +203 -0
  170. data/lib/origen/tester/doc/generator/test.rb +68 -0
  171. data/lib/origen/tester/doc/generator/test_group.rb +66 -0
  172. data/lib/origen/tester/doc/generator/tests.rb +47 -0
  173. data/lib/origen/tester/doc/generator.rb +126 -0
  174. data/lib/origen/tester/doc/model.rb +162 -0
  175. data/lib/origen/tester/generator/flow_control_api.rb +606 -0
  176. data/lib/origen/tester/generator/identity_map.rb +25 -0
  177. data/lib/origen/tester/generator/placeholder.rb +13 -0
  178. data/lib/origen/tester/generator/test_numberer.rb +25 -0
  179. data/lib/origen/tester/generator.rb +271 -0
  180. data/lib/origen/tester/interface.rb +154 -0
  181. data/lib/origen/tester/j750/files.rb +45 -0
  182. data/lib/origen/tester/j750/generator/flow.rb +123 -0
  183. data/lib/origen/tester/j750/generator/flow_line.rb +288 -0
  184. data/lib/origen/tester/j750/generator/patgroup.rb +111 -0
  185. data/lib/origen/tester/j750/generator/patgroups.rb +41 -0
  186. data/lib/origen/tester/j750/generator/patset.rb +111 -0
  187. data/lib/origen/tester/j750/generator/patsets.rb +41 -0
  188. data/lib/origen/tester/j750/generator/templates/flow.txt.erb +9 -0
  189. data/lib/origen/tester/j750/generator/templates/instances.txt.erb +16 -0
  190. data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +8 -0
  191. data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +10 -0
  192. data/lib/origen/tester/j750/generator/test_instance.rb +846 -0
  193. data/lib/origen/tester/j750/generator/test_instance_group.rb +60 -0
  194. data/lib/origen/tester/j750/generator/test_instances.rb +182 -0
  195. data/lib/origen/tester/j750/generator.rb +203 -0
  196. data/lib/origen/tester/j750/j750.rb +845 -0
  197. data/lib/origen/tester/j750/j750_hpt.rb +35 -0
  198. data/lib/origen/tester/j750/parser/ac_spec.rb +11 -0
  199. data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
  200. data/lib/origen/tester/j750/parser/dc_spec.rb +36 -0
  201. data/lib/origen/tester/j750/parser/dc_specs.rb +50 -0
  202. data/lib/origen/tester/j750/parser/descriptions.rb +340 -0
  203. data/lib/origen/tester/j750/parser/flow.rb +111 -0
  204. data/lib/origen/tester/j750/parser/flow_line.rb +207 -0
  205. data/lib/origen/tester/j750/parser/flows.rb +23 -0
  206. data/lib/origen/tester/j750/parser/pattern_set.rb +94 -0
  207. data/lib/origen/tester/j750/parser/pattern_sets.rb +33 -0
  208. data/lib/origen/tester/j750/parser/test_instance.rb +322 -0
  209. data/lib/origen/tester/j750/parser/test_instances.rb +26 -0
  210. data/lib/origen/tester/j750/parser/timeset.rb +15 -0
  211. data/lib/origen/tester/j750/parser/timesets.rb +0 -0
  212. data/lib/origen/tester/j750/parser.rb +104 -0
  213. data/lib/origen/tester/jlink/jlink.rb +33 -0
  214. data/lib/origen/tester/parser/description_lookup.rb +64 -0
  215. data/lib/origen/tester/parser/searchable_array.rb +32 -0
  216. data/lib/origen/tester/parser/searchable_hash.rb +32 -0
  217. data/lib/origen/tester/parser.rb +24 -0
  218. data/lib/origen/tester/time.rb +338 -0
  219. data/lib/origen/tester/timing.rb +253 -0
  220. data/lib/origen/tester/ultraflex/files.rb +45 -0
  221. data/lib/origen/tester/ultraflex/generator/flow.rb +119 -0
  222. data/lib/origen/tester/ultraflex/generator/flow_line.rb +269 -0
  223. data/lib/origen/tester/ultraflex/generator/patgroup.rb +111 -0
  224. data/lib/origen/tester/ultraflex/generator/patgroups.rb +41 -0
  225. data/lib/origen/tester/ultraflex/generator/patset.rb +111 -0
  226. data/lib/origen/tester/ultraflex/generator/patsets.rb +41 -0
  227. data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +9 -0
  228. data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +16 -0
  229. data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +8 -0
  230. data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +10 -0
  231. data/lib/origen/tester/ultraflex/generator/test_instance.rb +622 -0
  232. data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +60 -0
  233. data/lib/origen/tester/ultraflex/generator/test_instances.rb +174 -0
  234. data/lib/origen/tester/ultraflex/generator.rb +200 -0
  235. data/lib/origen/tester/ultraflex/parser/ac_spec.rb +11 -0
  236. data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
  237. data/lib/origen/tester/ultraflex/parser/dc_spec.rb +36 -0
  238. data/lib/origen/tester/ultraflex/parser/dc_specs.rb +50 -0
  239. data/lib/origen/tester/ultraflex/parser/descriptions.rb +342 -0
  240. data/lib/origen/tester/ultraflex/parser/flow.rb +111 -0
  241. data/lib/origen/tester/ultraflex/parser/flow_line.rb +207 -0
  242. data/lib/origen/tester/ultraflex/parser/flows.rb +23 -0
  243. data/lib/origen/tester/ultraflex/parser/pattern_set.rb +94 -0
  244. data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +33 -0
  245. data/lib/origen/tester/ultraflex/parser/test_instance.rb +262 -0
  246. data/lib/origen/tester/ultraflex/parser/test_instances.rb +26 -0
  247. data/lib/origen/tester/ultraflex/parser/timeset.rb +15 -0
  248. data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
  249. data/lib/origen/tester/ultraflex/parser.rb +104 -0
  250. data/lib/origen/tester/ultraflex/ultraflex.rb +759 -0
  251. data/lib/origen/tester/v93k/generator/flow.rb +63 -0
  252. data/lib/origen/tester/v93k/generator/flow_node/print.rb +10 -0
  253. data/lib/origen/tester/v93k/generator/flow_node.rb +17 -0
  254. data/lib/origen/tester/v93k/generator/pattern.rb +16 -0
  255. data/lib/origen/tester/v93k/generator/pattern_master.rb +54 -0
  256. data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +6 -0
  257. data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +11 -0
  258. data/lib/origen/tester/v93k/generator/templates/template.flow.erb +121 -0
  259. data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +9 -0
  260. data/lib/origen/tester/v93k/generator/test_function.rb +103 -0
  261. data/lib/origen/tester/v93k/generator/test_functions.rb +79 -0
  262. data/lib/origen/tester/v93k/generator/test_method.rb +46 -0
  263. data/lib/origen/tester/v93k/generator/test_methods.rb +75 -0
  264. data/lib/origen/tester/v93k/generator/test_suite.rb +54 -0
  265. data/lib/origen/tester/v93k/generator/test_suites.rb +65 -0
  266. data/lib/origen/tester/v93k/generator.rb +80 -0
  267. data/lib/origen/tester/v93k/v93k.rb +420 -0
  268. data/lib/origen/tester/vector.rb +86 -0
  269. data/lib/origen/tester/vector_generator.rb +633 -0
  270. data/lib/origen/tester/vector_pipeline.rb +150 -0
  271. data/lib/origen/tester.rb +56 -0
  272. data/lib/origen/top_level.rb +134 -0
  273. data/lib/origen/users/ldap.rb +65 -0
  274. data/lib/origen/users/user.rb +149 -0
  275. data/lib/origen/users.rb +30 -0
  276. data/lib/origen/utility/block_args.rb +93 -0
  277. data/lib/origen/utility/csv_data.rb +110 -0
  278. data/lib/origen/utility/design_sync.rb +494 -0
  279. data/lib/origen/utility/diff.rb +158 -0
  280. data/lib/origen/utility/input_capture.rb +121 -0
  281. data/lib/origen/utility/mailer.rb +143 -0
  282. data/lib/origen/utility/s_record.rb +205 -0
  283. data/lib/origen/utility/time_and_date.rb +30 -0
  284. data/lib/origen/utility.rb +12 -0
  285. data/lib/origen/version_checker.rb +117 -0
  286. data/lib/origen/version_string.rb +356 -0
  287. data/lib/origen.rb +648 -0
  288. data/lib/tasks/gem.rake +27 -22
  289. data/origen_site_config.yml +36 -0
  290. data/source_setup +17 -0
  291. data/spec/format/rgen_formatter.rb +14 -0
  292. data/templates/api_doc/README.txt.erb +24 -0
  293. data/templates/code_generators/gemfile_app.rb +4 -0
  294. data/templates/code_generators/gemfile_plugin.rb +6 -0
  295. data/templates/code_generators/gemspec.rb +33 -0
  296. data/templates/code_generators/rakefile.rb +10 -0
  297. data/templates/code_generators/spec_helper.rb +49 -0
  298. data/templates/code_generators/version.rb +8 -0
  299. data/templates/code_generators/version_time.rb +3 -0
  300. data/templates/git/gitignore.erb +33 -0
  301. data/templates/j750/_vt_flow.txt.erb +8 -0
  302. data/templates/j750/_vt_instances.txt.erb +4 -0
  303. data/templates/j750/program_sheet.txt.erb +9 -0
  304. data/templates/nanoc/Rules +74 -0
  305. data/templates/nanoc/config.yaml +77 -0
  306. data/templates/nanoc/content/favicon.ico +0 -0
  307. data/templates/nanoc/layouts/bootstrap.html.erb +63 -0
  308. data/templates/nanoc/layouts/bootstrap3.html.erb +71 -0
  309. data/templates/nanoc/layouts/freescale.html.erb +79 -0
  310. data/templates/nanoc/lib/bootstrap_filter.rb +49 -0
  311. data/templates/nanoc/lib/codeblocks_filter.rb +41 -0
  312. data/templates/nanoc/lib/default.rb +2 -0
  313. data/templates/nanoc/lib/gzip_filter.rb +16 -0
  314. data/templates/nanoc/lib/haml_code_filter.rb +41 -0
  315. data/templates/nanoc/lib/helpers.rb +1 -0
  316. data/templates/nanoc/lib/search_filter.rb +62 -0
  317. data/templates/nanoc_dynamic/content/search.js.erb +92 -0
  318. data/templates/shared/web/_logo.html +10 -0
  319. data/templates/test/_inline_sub.txt.erb +2 -0
  320. data/templates/test/environment.txt.erb +1 -0
  321. data/templates/test/inline.txt.erb +11 -0
  322. data/templates/test/inspections.txt.erb +19 -0
  323. data/templates/test/set1/_sub1.txt.erb +12 -0
  324. data/templates/test/set1/_sub4.txt.erb +1 -0
  325. data/templates/test/set1/_sub5.txt.erb +1 -0
  326. data/templates/test/set1/main.txt.erb +53 -0
  327. data/templates/test/set1/sub_dir/_sub2.txt.erb +20 -0
  328. data/templates/test/set1/sub_dir/_sub3.txt.erb +12 -0
  329. data/templates/test/set1/sub_dir/main2.txt.erb +4 -0
  330. data/templates/test/set2/template_with_no_erb_1.txt +9 -0
  331. data/templates/test/set2/template_with_no_erb_2.txt +9 -0
  332. data/templates/test/set3/_layout.html.erb +4 -0
  333. data/templates/test/set3/content.html.erb +6 -0
  334. data/templates/time/filter.rb.erb +15 -0
  335. data/templates/time/rules.rb.erb +45 -0
  336. metadata +639 -5
@@ -0,0 +1,63 @@
1
+ module Origen
2
+ module Tester
3
+ class V93K
4
+ module Generator
5
+ class Flow
6
+ include Origen::Tester::Generator
7
+
8
+ attr_accessor :test_functions, :test_suites, :test_methods
9
+
10
+ TEMPLATE = "#{Origen.top}/lib/origen/tester/v93k/generator/templates/template.flow.erb"
11
+
12
+ def filename
13
+ super.gsub('_flow', '')
14
+ end
15
+
16
+ def run(test_suite, options = {})
17
+ add(:run, { test_suite: test_suite }.merge(options))
18
+ end
19
+
20
+ def run_and_branch(test_suite, options = {})
21
+ add(:run_and_branch, { test_suite: test_suite }.merge(options))
22
+ end
23
+
24
+ private
25
+
26
+ def add(type, options = {})
27
+ options = update_relationships(options)
28
+ ins = FlowLine.new(type, options)
29
+ collection << ins
30
+ if ins.test?
31
+ c = Origen.interface.consume_comments
32
+ Origen.interface.descriptions.add_for_test_usage(ins.parameter, Origen.interface.top_level_flow, c)
33
+ else
34
+ Origen.interface.discard_comments
35
+ end
36
+ ins
37
+ end
38
+
39
+ def update_relationships(options = {})
40
+ fail_id = options.delete(:if_failed)
41
+ pass_id = options.delete(:if_passed)
42
+ if fail_id
43
+ t = find_by_id(fail_id)
44
+ t.continue_on_fail
45
+ flag = t.set_flag_on_fail
46
+ options[:flag_true] = flag
47
+ elsif pass_id
48
+ t = find_by_id(pass_id)
49
+ t.continue_on_fail
50
+ flag = t.set_flag_on_pass
51
+ options[:flag_true] = flag
52
+ end
53
+ options
54
+ end
55
+
56
+ def find_by_id(id)
57
+ collection.find { |l| l.id == id }
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,10 @@
1
+ module Origen
2
+ module Tester
3
+ class V93K
4
+ module Generator
5
+ class Print < FlowNode
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,17 @@
1
+ module Origen
2
+ module Tester
3
+ class V93K
4
+ module Generator
5
+ class FlowNode
6
+ autoload :Run, 'origen/tester/v93k/generator/flow_node/run'
7
+ autoload :RunAndBranch, 'origen/tester/v93k/generator/flow_node/run_and_branch'
8
+ autoload :StopBin, 'origen/tester/v93k/generator/flow_node/stop_bin'
9
+
10
+ def collection
11
+ @collection ||= []
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ module Origen
2
+ module Tester
3
+ class V93K
4
+ module Generator
5
+ class Pattern
6
+ attr_accessor :name
7
+
8
+ def initialize(name, _options = {})
9
+ self.name = name
10
+ Origen.interface.referenced_patterns << name
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,54 @@
1
+ module Origen
2
+ module Tester
3
+ class V93K
4
+ module Generator
5
+ class PatternMaster
6
+ include Origen::Tester::Generator
7
+
8
+ TEMPLATE = "#{Origen.top}/lib/origen/tester/v93k/generator/templates/template.pmfl.erb"
9
+
10
+ def add(name, options = {})
11
+ check_for_duplicates(name)
12
+ record_pattern(name)
13
+ p = Pattern.new(name, options)
14
+ collection << p
15
+ p
16
+ end
17
+
18
+ # Returns true if the given pattern name has already been added to the current pattern
19
+ # master file.
20
+ #
21
+ # Pass in :global => true for all pattern sets sheets to be considered.
22
+ def duplicate?(name, options = {})
23
+ files = existing_patterns[name]
24
+ if files && !files.empty?
25
+ options[:global] || files.include?(filename)
26
+ else
27
+ false
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def check_for_duplicates(name)
34
+ if duplicate?(name)
35
+ error "Duplicate pattern #{name} generated in #{filename}"
36
+ exit 1
37
+ elsif duplicate?(name, global: true)
38
+ warning "Pattern #{name} is duplicated in: #{existing_patterns[name].join(', ')}"
39
+ end
40
+ end
41
+
42
+ def existing_patterns
43
+ @@existing_patterns ||= {}
44
+ end
45
+
46
+ def record_pattern(name)
47
+ existing_patterns[name] ||= []
48
+ existing_patterns[name] << filename
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,6 @@
1
+ % tm = options[:test_method]
2
+ <%= tm.name %>:
3
+ testmethod_class = "<%= tm.klass %>";
4
+ testmethod_name = "<%= tm.method_name %>";
5
+ testmethod_parameters = "<%= tm.parameters %>";
6
+ testmethod_limits = "<%= tm.limits %>";
@@ -0,0 +1,11 @@
1
+ % suite = options[:suite]
2
+ <%= suite.name %>:
3
+ override_tim_equ_set = <%= suite.tim_equ_set %>;
4
+ override_lev_equ_set = <%= suite.lev_equ_set %>;
5
+ override_tim_spec_set = <%= suite.tim_spec_set %>;
6
+ override_lev_spec_set = <%= suite.lev_spec_set %>;
7
+ override_timset = <%= suite.timset %>;
8
+ override_levset = <%= suite.levset %>;
9
+ override_seqlbl = "<%= suite.pattern %>";
10
+ override_testf = <%= suite.test_function %>;
11
+ override_test_number = <%= suite.test_number %>;
@@ -0,0 +1,121 @@
1
+ hp93000,testflow,0.1
2
+ language_revision = 1;
3
+
4
+ information
5
+
6
+ device_name = "Apache";
7
+
8
+ device_revision = "0";
9
+
10
+ test_revision = "<%= RGen.app.version %>";
11
+
12
+ description = "";
13
+
14
+ end
15
+ --------------------------------------------------
16
+ declarations
17
+
18
+ end
19
+ --------------------------------------------------
20
+ flags
21
+
22
+ -- System flags
23
+ report_to_file = 1;
24
+ report_to_printer = 0;
25
+ datalog_to_file = 1;
26
+ datalog_to_printer = 0;
27
+ datalog_to_report_win = 0;
28
+ datalog_formatter = 0;
29
+ datalog_sample_size = 1;
30
+ graphic_result_displa = 1;
31
+ state_display = 0;
32
+ print_wafermap = 0;
33
+ OOC_watch = 1;
34
+ OOC_sample_size = 1;
35
+ ink_wafer = 0;
36
+ max_reprobes = 1;
37
+ temp_monitor = 1;
38
+ calib_age_monitor = 1;
39
+ diag_monitor = 1;
40
+ current_monitor = 1;
41
+ -- Testflow flags
42
+ set_pass_level = 0;
43
+ set_fail_level = 0;
44
+ set_bypass_level = 0;
45
+ hold_on_fail = 0;
46
+ optimized_mode = 1;
47
+ global_hold = 0;
48
+ debug_mode = 0;
49
+ parallel_mode = 1;
50
+ global_overon = 0;
51
+
52
+ end
53
+ --------------------------------------------------
54
+ testfunctions
55
+
56
+ % test_functions.collection.each do |key, func|
57
+ % func.lines.each do |line|
58
+ <%= line %>
59
+ % end
60
+ % end
61
+
62
+ end
63
+ --------------------------------------------------
64
+ testmethods
65
+
66
+ % test_methods.collection.each do |name, method|
67
+ <%= render "#{RGen.top}/lib/rgen/tester/v93k/generator/templates/test_method.txt.erb", :test_method => method, :_inline => true %>
68
+ % end
69
+
70
+ end
71
+ --------------------------------------------------
72
+ test_suites
73
+
74
+ % test_suites.collection.each do |suite|
75
+ <%= render "#{RGen.top}/lib/rgen/tester/v93k/generator/templates/test_suite.txt.erb", :suite => suite, :_inline => true %>
76
+
77
+ % end
78
+
79
+ end
80
+ --------------------------------------------------
81
+ test_flow
82
+
83
+ run_and_branch(Continuity) then
84
+ {
85
+ }
86
+ else
87
+ {
88
+ stop_bin "AA", "Continuity failed", , bad,noreprobe,red, ,over_on;
89
+ }
90
+ run_and_branch(Basic_functional_tes) then
91
+ {
92
+ }
93
+ else
94
+ {
95
+ stop_bin "BB", "Basic functional test failed", ,bad,noreprobe,red, ,over_on;
96
+ }
97
+ stop_bin "OK", "Everything went fine", , good,noreprobe,
98
+ green, , over_on;
99
+ end
100
+ -------------------------------------------------
101
+ binning
102
+
103
+ otherwise bin = "db", "", , bad,noreprobe,red, , not_over_on;
104
+ end
105
+ -------------------------------------------------
106
+ oocrule
107
+
108
+
109
+ end
110
+ -------------------------------------------------
111
+ context
112
+
113
+ context_config_file = "74145";
114
+ context_levels_file = "LowPower";
115
+ context_timing_file = "Fast";
116
+ context_vector_file = "74145";
117
+ context_attrib_file = "";
118
+ context_mixsgl_file = "";
119
+
120
+ end
121
+ --------------------------------------------------
@@ -0,0 +1,9 @@
1
+ hp93000,pattern_master_file,0.1
2
+
3
+ path:
4
+ ../vectors/
5
+
6
+ files:
7
+ % collection.each do |pattern|
8
+ <%= pattern.name %>
9
+ % end
@@ -0,0 +1,103 @@
1
+ module Origen
2
+ module Tester
3
+ class V93K
4
+ module Generator
5
+ class TestFunction
6
+ attr_accessor :name, :type, :description
7
+
8
+ # When defining attributes of a given test function here they must be defined
9
+ # in the correct order
10
+ ATTRS = {
11
+
12
+ functional: [],
13
+
14
+ general_pmu: %w(pins force_units force clamp_units clamp precharge_units precharge
15
+ pass_min_units pass_min pass_max_units pass_max settling_time_units
16
+ settling_time test_system_state term output_string mode
17
+ )
18
+
19
+ }
20
+
21
+ ALIASES = {
22
+ desc: :description,
23
+
24
+ general_pmu: {
25
+ state: :test_system_state
26
+ }
27
+ }
28
+
29
+ DEFAULTS = {
30
+ description: 'A test function generated by Origen'
31
+ }
32
+
33
+ # Define the common aliases now, the instance type specific ones will
34
+ # be created when the instance type is known
35
+ ALIASES.each do |_alias, val|
36
+ if val.is_a? Hash
37
+ else
38
+ define_method("#{_alias}=") do |v|
39
+ send("#{val}=", v)
40
+ end
41
+ define_method("#{_alias}") do
42
+ send(val)
43
+ end
44
+ end
45
+ end
46
+
47
+ def initialize(name, type, attrs = {})
48
+ @type = type
49
+ self.name = name
50
+ # Build the type specific attribute accessors
51
+ ATTRS[@type.to_sym].each do |method|
52
+ define_singleton_method("#{method}=") do |v|
53
+ instance_variable_set("@#{method}".to_sym, v)
54
+ end
55
+ define_singleton_method("#{method}") do
56
+ instance_variable_get("@#{method}".to_sym)
57
+ end
58
+ end
59
+ # Build the type specific accessors (aliases)
60
+ if ALIASES[@type.to_sym]
61
+ ALIASES[@type.to_sym].each do |_alias, val|
62
+ define_singleton_method("#{_alias}=") do |v|
63
+ send("#{val}=", v)
64
+ end
65
+ define_singleton_method("#{_alias}") do
66
+ send(val)
67
+ end
68
+ end
69
+ end
70
+ # Set the defaults
71
+ DEFAULTS.each do |key, val|
72
+ send("#{key}=", val) unless val.is_a?(Hash)
73
+ end
74
+ if DEFAULTS[@type.to_sym]
75
+ DEFAULTS[@type.to_sym].each do |k, v|
76
+ send("#{k}=", v)
77
+ end
78
+ end
79
+ # Then the values that have been supplied
80
+ attrs.each do |k, v|
81
+ m = "#{k}="
82
+ send(m, v) if self.respond_to?(m)
83
+ end
84
+ end
85
+
86
+ # Returns the fully formatted lines (an array) that should be inserted into a flow
87
+ # sheet to include this test function
88
+ def lines
89
+ [
90
+ "#{name}:",
91
+ "testfunction_description = \"#{description}\";",
92
+ "testfunction_parameters = \"#{type};#{parameter_string}\";"
93
+ ]
94
+ end
95
+
96
+ def parameter_string
97
+ ATTRS[@type.to_sym].map { |attr| send(attr) }.compact.join(';')
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,79 @@
1
+ module Origen
2
+ module Tester
3
+ class V93K
4
+ module Generator
5
+ class TestFunctions
6
+ # Origen::Tester::Generator not included since test functions do not have their
7
+ # own top-level sheet, they will be incorporated within the flow sheet
8
+
9
+ attr_accessor :flow, :collection
10
+
11
+ def initialize(flow)
12
+ @flow = flow
13
+ @collection = {}
14
+ @ix = 0
15
+ end
16
+
17
+ def filename
18
+ flow.filename
19
+ end
20
+
21
+ def add(name, type, options = {})
22
+ check_for_duplicates(name)
23
+ record_test_function(name)
24
+ func = TestFunction.new(next_name, type, options)
25
+ @collection[name] = func
26
+ # c = Origen.interface.consume_comments
27
+ # Origen.interface.descriptions.add_for_test_definition(name, c)
28
+ func
29
+ end
30
+
31
+ def functional(name, options = {})
32
+ add(name, :functional, options)
33
+ end
34
+
35
+ def [](name)
36
+ @collection[name]
37
+ end
38
+
39
+ # Returns true if the given test function name has already been added to the current flow.
40
+ #
41
+ # Pass in :global => true for all test flows to be considered.
42
+ def duplicate?(name, options = {})
43
+ files = existing_test_functions[name]
44
+ if files && !files.empty?
45
+ options[:global] || files.include?(filename)
46
+ else
47
+ false
48
+ end
49
+ end
50
+
51
+ private
52
+
53
+ def next_name
54
+ @ix += 1
55
+ "tf_#{@ix}"
56
+ end
57
+
58
+ def check_for_duplicates(name)
59
+ if duplicate?(name)
60
+ error "Duplicate test function #{name} generated in #{filename}"
61
+ exit 1
62
+ elsif duplicate?(name, global: true)
63
+ warning "Test function #{name} is duplicated in: #{existing_test_functions[name].join(', ')}"
64
+ end
65
+ end
66
+
67
+ def existing_test_functions
68
+ @@existing_test_functions ||= {}
69
+ end
70
+
71
+ def record_test_function(name)
72
+ existing_test_functions[name] ||= []
73
+ existing_test_functions[name] << filename
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,46 @@
1
+ module Origen
2
+ module Tester
3
+ class V93K
4
+ module Generator
5
+ class TestMethod
6
+ ATTRS =
7
+ %w(name klass method_name parameters limits
8
+ )
9
+
10
+ ALIASES = {
11
+ }
12
+
13
+ DEFAULTS = {
14
+ }
15
+
16
+ # Generate accessors for all attributes and their aliases
17
+ ATTRS.each do |attr|
18
+ attr_accessor attr.to_sym
19
+ end
20
+
21
+ # Define the aliases
22
+ ALIASES.each do |_alias, val|
23
+ define_method("#{_alias}=") do |v|
24
+ send("#{val}=", v)
25
+ end
26
+ define_method("#{_alias}") do
27
+ send(val)
28
+ end
29
+ end
30
+
31
+ def initialize(name, attrs = {})
32
+ self.name = name
33
+ # Set the defaults
34
+ DEFAULTS.each do |k, v|
35
+ send("#{k}=", v)
36
+ end
37
+ # Then the values that have been supplied
38
+ attrs.each do |k, v|
39
+ send("#{k}=", v)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,75 @@
1
+ module Origen
2
+ module Tester
3
+ class V93K
4
+ module Generator
5
+ class TestMethods
6
+ # Origen::Tester::Generator not included since test methods do not have their
7
+ # own top-level sheet, they will be incorporated within the flow sheet
8
+
9
+ attr_accessor :flow, :collection
10
+
11
+ def initialize(flow)
12
+ @flow = flow
13
+ @collection = {}
14
+ @ix = 0
15
+ end
16
+
17
+ def filename
18
+ flow.filename
19
+ end
20
+
21
+ def add(name, _type, options = {})
22
+ check_for_duplicates(name)
23
+ record_test_method(name)
24
+ func = TestMethod.new(next_name, options)
25
+ @collection[name] = func
26
+ # c = Origen.interface.consume_comments
27
+ # Origen.interface.descriptions.add_for_test_definition(name, c)
28
+ func
29
+ end
30
+
31
+ def [](name)
32
+ @collection[name]
33
+ end
34
+
35
+ # Returns true if the given test method name has already been added to the current flow.
36
+ #
37
+ # Pass in :global => true for all test flows to be considered.
38
+ def duplicate?(name, options = {})
39
+ files = existing_test_methods[name]
40
+ if files && !files.empty?
41
+ options[:global] || files.include?(filename)
42
+ else
43
+ false
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def next_name
50
+ @ix += 1
51
+ "tm_#{@ix}"
52
+ end
53
+
54
+ def check_for_duplicates(name)
55
+ if duplicate?(name)
56
+ error "Duplicate test method #{name} generated in #{filename}"
57
+ exit 1
58
+ elsif duplicate?(name, global: true)
59
+ warning "Test method #{name} is duplicated in: #{existing_test_methods[name].join(', ')}"
60
+ end
61
+ end
62
+
63
+ def existing_test_methods
64
+ @@existing_test_methods ||= {}
65
+ end
66
+
67
+ def record_test_method(name)
68
+ existing_test_methods[name] ||= []
69
+ existing_test_methods[name] << filename
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,54 @@
1
+ module Origen
2
+ module Tester
3
+ class V93K
4
+ module Generator
5
+ class TestSuite
6
+ ATTRS =
7
+ %w(name tim_equ_set lev_equ_set tim_spec_set lev_spec_set timset levset
8
+ seqlbl testf test_number
9
+ )
10
+
11
+ ALIASES = {
12
+ pattern: :seqlbl,
13
+ sequence_label: :seqlbl,
14
+ test_num: :test_number,
15
+ test_function: :testf,
16
+ levels: :levset,
17
+ timeset: :timset,
18
+ time_set: :timset
19
+ }
20
+
21
+ DEFAULTS = {
22
+ }
23
+
24
+ # Generate accessors for all attributes and their aliases
25
+ ATTRS.each do |attr|
26
+ attr_accessor attr.to_sym
27
+ end
28
+
29
+ # Define the aliases
30
+ ALIASES.each do |_alias, val|
31
+ define_method("#{_alias}=") do |v|
32
+ send("#{val}=", v)
33
+ end
34
+ define_method("#{_alias}") do
35
+ send(val)
36
+ end
37
+ end
38
+
39
+ def initialize(name, attrs = {})
40
+ self.name = name
41
+ # Set the defaults
42
+ DEFAULTS.each do |k, v|
43
+ send("#{k}=", v)
44
+ end
45
+ # Then the values that have been supplied
46
+ attrs.each do |k, v|
47
+ send("#{k}=", v)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end