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,60 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ module Generator
5
+ class TestInstanceGroup
6
+ attr_accessor :name, :version, :append_version
7
+
8
+ include Enumerable
9
+
10
+ def initialize(name, _options = {})
11
+ @name = name
12
+ @store = []
13
+ @append_version = true
14
+ end
15
+
16
+ def name
17
+ if unversioned_name
18
+ if version && @append_version
19
+ "#{unversioned_name}_v#{version}"
20
+ else
21
+ unversioned_name.to_s
22
+ end
23
+ end
24
+ end
25
+
26
+ def unversioned_name
27
+ if @name
28
+ if @name =~ /grp$/
29
+ @name
30
+ else
31
+ "#{@name}_grp"
32
+ end
33
+ end
34
+ end
35
+
36
+ def <<(instance)
37
+ @store << instance
38
+ end
39
+
40
+ def size
41
+ @store.size
42
+ end
43
+
44
+ def each
45
+ @store.each { |ins| yield ins }
46
+ end
47
+
48
+ def ==(other_instance_group)
49
+ self.class == other_instance_group.class &&
50
+ unversioned_name.to_s == other_instance_group.unversioned_name.to_s &&
51
+ size == other_instance_group.size &&
52
+ self.all? do |ins|
53
+ other_instance_group.any? { |other_ins| ins == other_ins }
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,182 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ module Generator
5
+ class TestInstances
6
+ include Origen::Tester::Generator
7
+
8
+ TEMPLATE = "#{Origen.top}/lib/origen/tester/j750/generator/templates/instances.txt.erb"
9
+ OUTPUT_POSTFIX = 'instances'
10
+
11
+ class IndexedString < ::String
12
+ attr_accessor :index
13
+
14
+ def name
15
+ self
16
+ end
17
+ end
18
+
19
+ def add(name, type, options = {})
20
+ options = {
21
+ test_instance_class: TestInstance
22
+ }.merge(options)
23
+ ins = options.delete(:test_instance_class).new(name, type, options)
24
+ if @current_group
25
+ @current_group << ins
26
+ else
27
+ collection << ins
28
+ end
29
+ c = Origen.interface.consume_comments
30
+ Origen.interface.descriptions.add_for_test_definition(name, c)
31
+ ins
32
+ end
33
+
34
+ # IG-XL doesn't have a formal instance group type and instead declares them anonymously
35
+ # whenever test instances of the same name appear consecutively in the test instance sheet.
36
+ # However when it comes to generating a test program life becomes much easier if we have
37
+ # a way to explicitly declare instances as part of a group - this makes duplicate tracking
38
+ # and sorting of the test instance sheet much easier.
39
+ #
40
+ # Use this method to generate instance groups via a block. Within the the block you should
41
+ # generate instances as normal and they will automatically be assigned to the current group.
42
+ # Note that the name of the instances generated within the group is discarded and replaced
43
+ # with the name of the group. Origen automatically appends "grp" to this name to highlight
44
+ # instances that were generated as part of the group.
45
+ #
46
+ # test_instances.group("erase_all_blocks") do |group|
47
+ # # Generate instances here as normal
48
+ # test_instances.functional("erase_blk0")
49
+ # test_instances.functional("erase_blk1")
50
+ # end
51
+ #
52
+ # The group object is passed into the block but usually you should not need to interact
53
+ # with this directly except maybe to set the name if it is not yet established at the point
54
+ # where the group is initiated:
55
+ #
56
+ # test_instances.group do |group|
57
+ # # Generate instances here as normal
58
+ # group.name = "group_blah"
59
+ # end
60
+ #
61
+ # A common way to generate groups is to create a helper method in your application which
62
+ # is responsible for creating groups as required:
63
+ #
64
+ # def group_wrapper(name, options)
65
+ # if options[:by_block]
66
+ # test_instances.group(name) do |group|
67
+ # yield group
68
+ # end
69
+ # else
70
+ # yield
71
+ # end
72
+ # end
73
+ #
74
+ # In that case the group argument becomes quite useful for branching based on whether you
75
+ # are generating a group or standalone instances:
76
+ #
77
+ # group_wrapper(name, options) do |group|
78
+ # if group
79
+ # # Generate group instances
80
+ # else
81
+ # # Generate standalone instances
82
+ # end
83
+ # end
84
+ def group(name = nil, options = {})
85
+ name, options = nil, name if name.is_a?(Hash)
86
+ @current_group = TestInstanceGroup.new(name, options)
87
+ collection << @current_group
88
+ yield @current_group
89
+ @current_group = nil
90
+ end
91
+ alias_method :add_group, :group
92
+
93
+ def finalize(_options = {}) # :nodoc:
94
+ uniq!
95
+ sort!
96
+ end
97
+
98
+ def uniq! # :nodoc:
99
+ uniques = []
100
+ versions = {}
101
+ multi_version_tests = {}
102
+ collection.each do |instance|
103
+ # If a uniquely named instance is found add it, otherwise update the version
104
+ # of the current instance to match that of the existing instance that it duplicates
105
+ unless uniques.any? do |i|
106
+ if i == instance
107
+ instance.version = i.version
108
+ true
109
+ else
110
+ false
111
+ end
112
+ end
113
+ if instance.respond_to?(:version=)
114
+ versions[instance.unversioned_name] ||= 0
115
+ versions[instance.unversioned_name] += 1
116
+ if versions[instance.unversioned_name] > 1
117
+ multi_version_tests[instance.unversioned_name] = true
118
+ end
119
+ instance.version = versions[instance.unversioned_name]
120
+ end
121
+ uniques << instance
122
+ end
123
+ end
124
+ # This final loop disables the version identifier for tests that have only a single version,
125
+ # this makes it clearer when multiple versions exist - whenever you see a v1 you know there
126
+ # is at least a v2 also.
127
+ collection.map! do |instance|
128
+ if instance.respond_to?(:version=)
129
+ unless multi_version_tests[instance.unversioned_name]
130
+ instance.append_version = false
131
+ end
132
+ end
133
+ instance
134
+ end
135
+ self.collection = uniques
136
+ end
137
+
138
+ def sort! # :nodoc:
139
+ # Present the instances in the final sheet in alphabetical order
140
+ collection.map!.with_index do |ins, _i|
141
+ if ins.is_a?(String) # Can happen if content has been rendered in from a template
142
+ ins = IndexedString.new(ins)
143
+ end
144
+ ins
145
+ end
146
+ collection.sort! { |a, b| [a.name.to_s] <=> [b.name.to_s] }
147
+ end
148
+
149
+ def bpmu(name, options = {})
150
+ add(name, :board_pmu, options)
151
+ end
152
+ alias_method :board_pmu, :bpmu
153
+
154
+ def ppmu(name, options = {})
155
+ add(name, :pin_pmu, options)
156
+ end
157
+ alias_method :pin_pmu, :ppmu
158
+
159
+ def functional(name, options = {})
160
+ add(name, :functional, options)
161
+ end
162
+
163
+ def empty(name, options = {})
164
+ add(name, :empty, options)
165
+ end
166
+
167
+ def other(name, options = {})
168
+ add(name, :other, options)
169
+ end
170
+
171
+ def apmu_powersupply(name, options = {})
172
+ add(name, :apmu_powersupply, options)
173
+ end
174
+
175
+ def mto_memory(name, options = {})
176
+ add(name, :mto_memory, options)
177
+ end
178
+ end
179
+ end
180
+ end
181
+ end
182
+ end
@@ -0,0 +1,203 @@
1
+ require 'active_support/concern'
2
+
3
+ module Origen
4
+ module Tester
5
+ class J750
6
+ module Generator
7
+ extend ActiveSupport::Concern
8
+
9
+ autoload :TestInstance, 'origen/tester/j750/generator/test_instance'
10
+ autoload :TestInstanceGroup, 'origen/tester/j750/generator/test_instance_group'
11
+ autoload :TestInstances, 'origen/tester/j750/generator/test_instances'
12
+ autoload :Patset, 'origen/tester/j750/generator/patset'
13
+ autoload :Patsets, 'origen/tester/j750/generator/patsets'
14
+ autoload :Patgroup, 'origen/tester/j750/generator/patgroup'
15
+ autoload :Patgroups, 'origen/tester/j750/generator/patgroups'
16
+ autoload :Flow, 'origen/tester/j750/generator/flow'
17
+ autoload :FlowLine, 'origen/tester/j750/generator/flow_line'
18
+ autoload :Placeholder, 'origen/tester/generator/placeholder'
19
+
20
+ included do
21
+ include Origen::Tester::Interface # adds the interface helpers/Origen hook-up
22
+ include Origen::Tester::Generator::FlowControlAPI::Interface
23
+ PLATFORM = Origen::Tester::J750
24
+ end
25
+
26
+ # @api private
27
+ def at_flow_start
28
+ @@test_instances_filename = nil
29
+ @@patsets_filename = nil
30
+ @@patgroups_filename = nil
31
+ end
32
+
33
+ # @api private
34
+ def at_run_start
35
+ flow.at_run_start
36
+ @@test_instance_sheets = nil
37
+ @@patset_sheets = nil
38
+ @@flow_sheets = nil
39
+ @@patgroup_sheets = nil
40
+ end
41
+ alias_method :reset_globals, :at_run_start
42
+
43
+ # Convenience method to allow the current name for the test instance,
44
+ # patsets and patgroups sheets to be set to the same value.
45
+ #
46
+ # # my j750 interface
47
+ #
48
+ # resources_filename = "common"
49
+ #
50
+ # # The above is equivalent to:
51
+ #
52
+ # test_instances_filename = "common"
53
+ # patsets_filename = "common"
54
+ # patgroups_filename = "common"
55
+ def resources_filename=(name)
56
+ self.test_instances_filename = name
57
+ self.patsets_filename = name
58
+ self.patgroups_filename = name
59
+ end
60
+
61
+ # Set the name of the current test instances sheet. This does not change
62
+ # the name of the current sheet, but rather sets the name of the sheet that
63
+ # will be generated the next time you access test_instances.
64
+ def test_instances_filename=(name)
65
+ @@test_instances_filename = name
66
+ end
67
+
68
+ # Set the name of the current pattern sets sheet. This does not change
69
+ # the name of the current sheet, but rather sets the name of the sheet that
70
+ # will be generated the next time you access patsets.
71
+ def patsets_filename=(name)
72
+ @@patsets_filename = name
73
+ end
74
+
75
+ # Set the name of the current pattern groups sheet. This does not change
76
+ # the name of the current sheet, but rather sets the name of the sheet that
77
+ # will be generated the next time you access patgroups.
78
+ def patgroups_filename=(name)
79
+ @@patgroups_filename = name
80
+ end
81
+
82
+ # Returns the name of the current test instances sheet
83
+ def test_instances_filename
84
+ @@test_instances_filename ||= 'global'
85
+ end
86
+
87
+ # Returns the name of the current pat sets sheet
88
+ def patsets_filename
89
+ @@patsets_filename ||= 'global'
90
+ end
91
+
92
+ # Returns the name of the current pat groups sheet
93
+ def patgroups_filename
94
+ @@patgroups_filename ||= 'global'
95
+ end
96
+
97
+ # Returns a hash containing all test instance sheets
98
+ def test_instance_sheets
99
+ @@test_instance_sheets ||= {}
100
+ end
101
+
102
+ # Returns a hash containing all pat set sheets
103
+ def patset_sheets
104
+ @@patset_sheets ||= {}
105
+ end
106
+
107
+ # Returns a hash containing all flow sheets
108
+ def flow_sheets
109
+ @@flow_sheets ||= {}
110
+ end
111
+
112
+ # Returns a hash containing all pat group sheets
113
+ def patgroup_sheets
114
+ @@patgroup_sheets ||= {}
115
+ end
116
+
117
+ # Returns an array containing all sheet generators where a sheet generator is a flow,
118
+ # test instance, patset or pat group sheet.
119
+ # All Origen program generators must implement this method
120
+ def sheet_generators # :nodoc:
121
+ g = []
122
+ [flow_sheets, test_instance_sheets, patset_sheets, patgroup_sheets].each do |sheets|
123
+ sheets.each do |_name, sheet|
124
+ g << sheet
125
+ end
126
+ end
127
+ g
128
+ end
129
+
130
+ # Returns an array containing all flow sheet generators.
131
+ # All Origen program generators must implement this method
132
+ def flow_generators
133
+ g = []
134
+ flow_sheets.each do |_name, sheet|
135
+ g << sheet
136
+ end
137
+ g
138
+ end
139
+
140
+ # Returns the current test instances sheet (as defined by the current value of
141
+ # test_instances_filename).
142
+ #
143
+ # Pass in a filename argument to have a specific sheet returned instead.
144
+ #
145
+ # If the sheet does not exist yet it will be created.
146
+ def test_instances(filename = test_instances_filename)
147
+ f = filename.to_sym
148
+ return test_instance_sheets[f] if test_instance_sheets[f]
149
+ t = TestInstances.new
150
+ t.filename = f
151
+ test_instance_sheets[f] = t
152
+ end
153
+
154
+ # Returns the current pattern sets sheet (as defined by the current value of
155
+ # patsets_filename).
156
+ #
157
+ # Pass in a filename argument to have a specific sheet returned instead.
158
+ #
159
+ # If the sheet does not exist yet it will be created.
160
+ def patsets(filename = patsets_filename)
161
+ f = filename.to_sym
162
+ return patset_sheets[f] if patset_sheets[f]
163
+ p = Patsets.new
164
+ p.filename = f
165
+ patset_sheets[f] = p
166
+ end
167
+ alias_method :pat_sets, :patsets
168
+ alias_method :pattern_sets, :patsets
169
+
170
+ # Returns the current flow sheet (as defined by the name of the current top
171
+ # level flow source file).
172
+ #
173
+ # Pass in a filename argument to have a specific sheet returned instead.
174
+ #
175
+ # If the sheet does not exist yet it will be created.
176
+ def flow(filename = Origen.file_handler.current_file.basename('.rb').to_s)
177
+ f = filename.to_sym
178
+ return flow_sheets[f] if flow_sheets[f]
179
+ p = Flow.new
180
+ p.inhibit_output if Origen.interface.resources_mode?
181
+ p.filename = f
182
+ flow_sheets[f] = p
183
+ end
184
+
185
+ # Returns the current pattern groups sheet (as defined by the current value of
186
+ # patgroups_filename).
187
+ #
188
+ # Pass in a filename argument to have a specific sheet returned instead.
189
+ #
190
+ # If the sheet does not exist yet it will be created.
191
+ def patgroups(filename = patgroups_filename)
192
+ f = filename.to_sym
193
+ return patgroup_sheets[f] if patgroup_sheets[f]
194
+ p = Patgroups.new
195
+ p.filename = f
196
+ patgroup_sheets[f] = p
197
+ end
198
+ alias_method :pat_groups, :patgroups
199
+ alias_method :pattern_groups, :patgroups
200
+ end
201
+ end
202
+ end
203
+ end