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,622 @@
1
+ module Origen
2
+ module Tester
3
+ class Ultraflex
4
+ module Generator
5
+ class TestInstance
6
+ attr_accessor :type, :index, :version, :append_version
7
+
8
+ attrs = %w(
9
+ test_name proc_type proc_name proc_called_as dc_category
10
+ dc_selector ac_category ac_selector
11
+ time_sets edge_sets pin_levels overlay
12
+ )
13
+
14
+ 80.times do |i|
15
+ attrs << "arg#{i}"
16
+ end
17
+ attrs << 'comment'
18
+
19
+ ATTRS = attrs
20
+
21
+ ALIASES = {
22
+ name: :test_name,
23
+ time_set: :time_sets,
24
+ timeset: :time_sets,
25
+ timesets: :time_sets,
26
+
27
+ other: {
28
+ },
29
+
30
+ empty: {
31
+ start_func: :arg0,
32
+ start_of_body_f: :arg0,
33
+ pre_pat_func: :arg1,
34
+ pre_pat_f: :arg1,
35
+ pre_test_func: :arg2,
36
+ pre_test_f: :arg2,
37
+ post_test_func: :arg3,
38
+ post_test_f: :arg3,
39
+ post_pat_func: :arg4,
40
+ post_pat_f: :arg4,
41
+ end_func: :arg5,
42
+ end_of_body_f: :arg5,
43
+ start_func_args: :arg6,
44
+ start_of_body_f_args: :arg6,
45
+ pre_pat_func_args: :arg7,
46
+ pre_pat_f_args: :arg7,
47
+ pre_test_func_args: :arg8,
48
+ pre_test_f_args: :arg8,
49
+ post_test_func_args: :arg9,
50
+ post_test_f_args: :arg9,
51
+ post_pat_func_args: :arg10,
52
+ post_pat_f_args: :arg10,
53
+ end_func_args: :arg11,
54
+ end_of_body_f_args: :arg11,
55
+ utility_pins_1: :arg12,
56
+ utility_pins_0: :arg13,
57
+ init_lo: :arg14,
58
+ start_lo: :arg14,
59
+ init_hi: :arg15,
60
+ start_hi: :arg15,
61
+ init_hiz: :arg16,
62
+ start_hiz: :arg16,
63
+ float_pins: :arg17
64
+ },
65
+
66
+ # Functional test instances
67
+ functional: {
68
+ pattern: :arg0,
69
+ patterns: :arg0,
70
+ start_func: :arg1,
71
+ start_of_body_f: :arg1,
72
+ pre_pat_func: :arg2,
73
+ pre_pat_f: :arg2,
74
+ pre_test_func: :arg3,
75
+ pre_test_f: :arg3,
76
+ post_test_func: :arg4,
77
+ post_test_f: :arg4,
78
+ post_pat_func: :arg5,
79
+ post_pat_f: :arg5,
80
+ end_func: :arg6,
81
+ end_of_body_f: :arg6,
82
+ set_pass_fail: :arg7,
83
+ init_lo: :arg8,
84
+ start_lo: :arg8,
85
+ init_hi: :arg9,
86
+ start_hi: :arg9,
87
+ init_hiz: :arg10,
88
+ start_hiz: :arg10,
89
+ float_pins: :arg11,
90
+ start_func_args: :arg13,
91
+ start_of_body_f_args: :arg13,
92
+ pre_pat_func_args: :arg14,
93
+ pre_pat_f_args: :arg14,
94
+ pre_test_func_args: :arg15,
95
+ pre_test_f_args: :arg15,
96
+ post_test_func_args: :arg16,
97
+ post_test_f_args: :arg16,
98
+ post_pat_func_args: :arg17,
99
+ post_pat_f_args: :arg17,
100
+ end_func_args: :arg18,
101
+ end_of_body_f_args: :arg18,
102
+ wait_flags: :arg21,
103
+ wait_time: :arg22,
104
+ pat_flag_func: :arg23,
105
+ pat_flag_f: :arg23,
106
+ PatFlagF: :arg23,
107
+ pat_flag_func_args: :arg24,
108
+ pat_flag_f_args: :arg24,
109
+ relay_mode: :arg25,
110
+ threading: :arg26,
111
+ match_all_sites: :arg27,
112
+ capture_mode: :arg30,
113
+ capture_what: :arg31,
114
+ capture_memory: :arg32,
115
+ capture_size: :arg33,
116
+ datalog_mode: :arg34,
117
+ data_type: :arg35
118
+ },
119
+
120
+ board_pmu: {
121
+ hsp_start: :arg0,
122
+ start_func: :arg1,
123
+ start_of_body_f: :arg1,
124
+ pre_pat_func: :arg2,
125
+ pre_pat_f: :arg2,
126
+ pre_test_func: :arg3,
127
+ pre_test_f: :arg3,
128
+ post_test_func: :arg4,
129
+ post_test_f: :arg4,
130
+ post_pat_func: :arg5,
131
+ post_pat_f: :arg5,
132
+ end_func: :arg6,
133
+ end_of_body_f: :arg6,
134
+ precond_pat: :arg7,
135
+ hold_state_pat: :arg8,
136
+ holdstate_pat: :arg8,
137
+ pattern: :arg8,
138
+ pcp_stop: :arg9,
139
+ wait_flags: :arg10,
140
+ start_lo: :arg11,
141
+ init_lo: :arg11,
142
+ start_hi: :arg12,
143
+ init_hi: :arg12,
144
+ start_hiz: :arg13,
145
+ init_hiz: :arg13,
146
+ float_pins: :arg14,
147
+ pinlist: :arg15,
148
+ pin: :arg15,
149
+ pin_list: :arg15,
150
+ measure_mode: :arg16,
151
+ irange: :arg17,
152
+ clamp: :arg18,
153
+ vrange: :arg19,
154
+ sampling_time: :arg20,
155
+ samples: :arg21,
156
+ settling_time: :arg22,
157
+ hi_lo_lim_valid: :arg23,
158
+ hi_lo_limit_valid: :arg23,
159
+ hi_limit: :arg24,
160
+ lo_limit: :arg25,
161
+ force_cond_1: :arg26,
162
+ force_cond: :arg26,
163
+ force_condition: :arg26,
164
+ force_cond_2: :arg27,
165
+ gang_pins_tested: :arg28,
166
+ relay_mode: :arg29,
167
+ wait_time_out: :arg30,
168
+ start_func_args: :arg31,
169
+ start_of_body_f_args: :arg31,
170
+ pre_pat_func_args: :arg32,
171
+ pre_pat_f_args: :arg32,
172
+ pre_test_func_args: :arg33,
173
+ pre_test_f_args: :arg33,
174
+ post_test_func_args: :arg34,
175
+ post_test_f_args: :arg34,
176
+ post_pat_func_args: :arg35,
177
+ post_pat_f_args: :arg35,
178
+ end_func_args: :arg36,
179
+ end_of_body_f_args: :arg36,
180
+ pcp_start: :arg37,
181
+ pcp_check_pg: :arg38,
182
+ hsp_stop: :arg39,
183
+ hsp_check_pg: :arg40,
184
+ resume_pat: :arg41,
185
+ utility_pins_1: :arg42,
186
+ utility_pins_0: :arg43,
187
+ pre_charge_enable: :arg44,
188
+ pre_charge: :arg45,
189
+ threading: :arg46
190
+ },
191
+
192
+ pin_pmu: {
193
+ hsp_start: :arg0,
194
+ start_func: :arg1,
195
+ start_of_body_f: :arg1,
196
+ pre_pat_func: :arg2,
197
+ pre_pat_f: :arg2,
198
+ pre_test_func: :arg3,
199
+ pre_test_f: :arg3,
200
+ post_test_func: :arg4,
201
+ post_test_f: :arg4,
202
+ post_pat_func: :arg5,
203
+ post_pat_f: :arg5,
204
+ end_func: :arg6,
205
+ end_of_body_f: :arg6,
206
+ precond_pat: :arg7,
207
+ hold_state_pat: :arg8,
208
+ holdstate_pat: :arg8,
209
+ pattern: :arg8,
210
+ pcp_stop: :arg9,
211
+ wait_flags: :arg10,
212
+ start_lo: :arg11,
213
+ init_lo: :arg11,
214
+ start_hi: :arg12,
215
+ init_hi: :arg12,
216
+ start_hiz: :arg13,
217
+ init_hiz: :arg13,
218
+ float_pins: :arg14,
219
+ pinlist: :arg15,
220
+ pin: :arg15,
221
+ pin_list: :arg15,
222
+ measure_mode: :arg16,
223
+ irange: :arg17,
224
+ settling_time: :arg18,
225
+ hi_lo_lim_valid: :arg19,
226
+ hi_lo_limit_valid: :arg19,
227
+ hi_limit: :arg20,
228
+ lo_limit: :arg21,
229
+ force_cond_1: :arg22,
230
+ force_cond: :arg22,
231
+ force_condition: :arg22,
232
+ force_cond_2: :arg23,
233
+ fload: :arg24,
234
+ relay_mode: :arg25,
235
+ wait_time_out: :arg26,
236
+ start_func_args: :arg27,
237
+ start_of_body_f_args: :arg27,
238
+ pre_pat_func_args: :arg28,
239
+ pre_pat_f_args: :arg28,
240
+ pre_test_func_args: :arg29,
241
+ pre_test_f_args: :arg29,
242
+ post_test_func_args: :arg30,
243
+ post_test_f_args: :arg30,
244
+ post_pat_func_args: :arg31,
245
+ post_pat_f_args: :arg31,
246
+ end_func_args: :arg32,
247
+ end_of_body_f_args: :arg32,
248
+ pcp_start: :arg33,
249
+ pcp_check_pg: :arg34,
250
+ hsp_stop: :arg35,
251
+ hsp_check_pg: :arg36,
252
+ sampling_time: :arg37,
253
+ samples: :arg38,
254
+ resume_pat: :arg39,
255
+ vcl: :arg40,
256
+ vch: :arg41,
257
+ utility_pins_1: :arg42,
258
+ utility_pins_0: :arg43,
259
+ pre_charge_enable: :arg44,
260
+ pre_charge: :arg45,
261
+ threading: :arg46
262
+ }
263
+ }
264
+
265
+ DEFAULTS = {
266
+ empty: {
267
+ proc_type: 'IG-XL Template',
268
+ proc_name: 'Empty_T',
269
+ proc_called_as: 'Excel Macro'
270
+ },
271
+ other: {
272
+ proc_type: 'Other',
273
+ proc_called_as: 'Excel Macro'
274
+ },
275
+ functional: {
276
+ proc_type: 'IG-XL Template',
277
+ proc_name: 'Functional_T',
278
+ proc_called_as: 'VB DLL',
279
+ set_pass_fail: 1,
280
+ wait_flags: 'XXXX',
281
+ wait_time: 30,
282
+ relay_mode: 1,
283
+ threading: 0,
284
+ match_all_sites: 0,
285
+ capture_mode: 0,
286
+ capture_what: 0,
287
+ capture_memory: 0,
288
+ capture_size: 256,
289
+ datalog_mode: 0,
290
+ data_type: 0
291
+ },
292
+ board_pmu: {
293
+ proc_type: 'IG-XL Template',
294
+ proc_name: 'BoardPmu_T',
295
+ proc_called_as: 'VB DLL',
296
+ wait_flags: 'XXXX',
297
+ measure_mode: 1,
298
+ irange: 5,
299
+ vrange: 3,
300
+ settling_time: 0,
301
+ hi_lo_lim_valid: 3,
302
+ gang_pins_tested: 0,
303
+ relay_mode: 0,
304
+ wait_time_out: 30,
305
+ pcp_check_pg: 1,
306
+ hsp_check_pg: 1,
307
+ resume_pat: 0,
308
+ threading: 0
309
+ },
310
+ pin_pmu: {
311
+ proc_type: 'IG-XL Template',
312
+ proc_name: 'PinPmu_T',
313
+ proc_called_as: 'VB DLL',
314
+ wait_flags: 'XXXX',
315
+ measure_mode: 1,
316
+ irange: 2,
317
+ settling_time: 0,
318
+ hi_lo_lim_valid: 3,
319
+ fload: 0,
320
+ relay_mode: 0,
321
+ wait_time_out: 30,
322
+ pcp_check_pg: 1,
323
+ hsp_check_pg: 1,
324
+ resume_pat: 0,
325
+ threading: 0
326
+ }
327
+ }
328
+
329
+ # Generate accessors for all attributes and their aliases
330
+ ATTRS.each do |attr|
331
+ attr_accessor attr.to_sym
332
+ end
333
+
334
+ # Define the common aliases now, the instance type specific ones will
335
+ # be created when the instance type is known
336
+ ALIASES.each do |_alias, val|
337
+ if val.is_a? Hash
338
+ else
339
+ define_method("#{_alias}=") do |v|
340
+ send("#{val}=", v)
341
+ end
342
+ define_method("#{_alias}") do
343
+ send(val)
344
+ end
345
+ end
346
+ end
347
+
348
+ def initialize(name, type, attrs = {})
349
+ @type = type
350
+ @append_version = true
351
+ self.name = name
352
+ # Build the type specific accessors (aliases)
353
+ ALIASES[@type.to_sym].each do |_alias, val|
354
+ define_singleton_method("#{_alias}=") do |v|
355
+ send("#{val}=", v) if self.respond_to?("#{val}=", v)
356
+ end
357
+ define_singleton_method("#{_alias}") do
358
+ send(val) if self.respond_to?(val)
359
+ end
360
+ end
361
+ # Set the defaults
362
+ DEFAULTS[@type.to_sym].each do |k, v|
363
+ send("#{k}=", v) if self.respond_to?("#{k}=", v)
364
+ end
365
+ # Then the values that have been supplied
366
+ attrs.each do |k, v|
367
+ send("#{k}=", v) if self.respond_to?("#{k}=", v)
368
+ end
369
+ end
370
+
371
+ def ==(other_instance)
372
+ self.class == other_instance.class &&
373
+ unversioned_name.to_s == other_instance.unversioned_name.to_s &&
374
+ ATTRS.all? do |attr|
375
+ # Exclude test name, already examined above and don't want to include
376
+ # the version in the comparison
377
+ if attr == 'test_name'
378
+ true
379
+ else
380
+ send(attr) == other_instance.send(attr)
381
+ end
382
+ end
383
+ end
384
+
385
+ def self.new_empty(name, attrs = {})
386
+ new(name, :empty, attrs)
387
+ end
388
+
389
+ def self.new_functional(name, attrs = {})
390
+ new(name, :functional, attrs)
391
+ end
392
+
393
+ def self.new_board_pmu(name, attrs = {})
394
+ new(name, :board_pmu, attrs)
395
+ end
396
+
397
+ def self.new_pin_pmu(name, attrs = {})
398
+ new(name, :pin_pmu, attrs)
399
+ end
400
+
401
+ # Returns the fully formatted test instance for insertion into an instance sheet
402
+ def to_s(override_name = nil)
403
+ l = "\t"
404
+ ATTRS.each do |attr|
405
+ if attr == 'test_name' && override_name
406
+ l += "#{override_name}\t"
407
+ else
408
+ l += "#{send(attr)}\t"
409
+ end
410
+ end
411
+ "#{l}"
412
+ end
413
+
414
+ def name
415
+ if version && @append_version
416
+ "#{@test_name}_v#{version}"
417
+ else
418
+ @test_name.to_s
419
+ end
420
+ end
421
+ alias_method :test_name, :name
422
+
423
+ def unversioned_name
424
+ @test_name.to_s
425
+ end
426
+
427
+ # Set the cpu wait flags for the given test instance
428
+ # instance.set_wait_flags(:a)
429
+ # instance.set_wait_flags(:a, :c)
430
+ def set_wait_flags(*flags)
431
+ a = (flags.include?(:a) || flags.include?(:a)) ? '1' : 'X'
432
+ b = (flags.include?(:b) || flags.include?(:b)) ? '1' : 'X'
433
+ c = (flags.include?(:c) || flags.include?(:c)) ? '1' : 'X'
434
+ d = (flags.include?(:d) || flags.include?(:d)) ? '1' : 'X'
435
+ self.wait_flags = d + c + b + a
436
+ self
437
+ end
438
+
439
+ # Set and enable the pre-charge voltage of a parametric test instance.
440
+ def set_pre_charge(val)
441
+ if val
442
+ self.pre_charge_enable = 1
443
+ self.pre_charge = val
444
+ else
445
+ self.pre_charge_enable = 0
446
+ end
447
+ self
448
+ end
449
+ alias_method :set_precharge, :set_pre_charge
450
+
451
+ # Set and enable the hi limit of a parametric test instance, passing in
452
+ # nil or false as the lim parameter will disable the hi limit.
453
+ def set_hi_limit(lim)
454
+ if lim
455
+ self.hi_lo_limit_valid = hi_lo_limit_valid | 2
456
+ self.hi_limit = lim
457
+ else
458
+ self.hi_lo_limit_valid = hi_lo_limit_valid & 1
459
+ end
460
+ self
461
+ end
462
+
463
+ # Set and enable the hi limit of a parametric test instance, passing in
464
+ # nil or false as the lim parameter will disable the hi limit.
465
+ def set_lo_limit(lim)
466
+ if lim
467
+ self.hi_lo_limit_valid = hi_lo_limit_valid | 1
468
+ self.lo_limit = lim
469
+ else
470
+ self.hi_lo_limit_valid = hi_lo_limit_valid & 2
471
+ end
472
+ self
473
+ end
474
+
475
+ # Set the current range of the test instance, the following are valid:
476
+ #
477
+ # Board PMU
478
+ # * 2uA
479
+ # * 20uA
480
+ # * 200uA
481
+ # * 2mA
482
+ # * 20mA
483
+ # * 200mA
484
+ # * :smart
485
+ #
486
+ # Pin PMU
487
+ # * 200nA
488
+ # * 2uA
489
+ # * 20uA
490
+ # * 200uA
491
+ # * 2mA
492
+ # * :auto
493
+ # * :smart
494
+ #
495
+ # Examples
496
+ # instance.set_irange(:smart)
497
+ # instance.set_irange(:ua => 2)
498
+ # instance.set_irange(2.uA) # Same as above
499
+ # instance.set_irange(:ma => 200)
500
+ # instance.set_irange(0.2) # Same as above
501
+ # instance.set_irange(:a => 0.2) # Same as above
502
+ def set_irange(r = nil, options = {})
503
+ r, options = nil, r if r.is_a?(Hash)
504
+ unless r
505
+ # rubocop:disable AssignmentInCondition
506
+ if r = options.delete(:na) || options.delete(:nA)
507
+ r = r / 1_000_000_000
508
+ elsif r = options.delete(:ua) || options.delete(:uA)
509
+ r = r / 1_000_000.0
510
+ elsif r = options.delete(:ma) || options.delete(:mA)
511
+ r = r / 1000.0
512
+ elsif r = options.delete(:a) || options.delete(:A)
513
+ else
514
+ fail "Can't determine requested irange!"
515
+ end
516
+ # rubocop:enable AssignmentInCondition
517
+ end
518
+
519
+ if @type == :board_pmu
520
+ if r == :smart
521
+ self.irange = 6
522
+ else
523
+ self.irange = case
524
+ when r > 0.02 then 5
525
+ when r > 0.002 then 4
526
+ when r > 0.0002 then 3
527
+ when r > 0.00002 then 2
528
+ when r > 0.000002 then 1
529
+ else 0
530
+ end
531
+ end
532
+
533
+ else # :pin_pmu
534
+ if r == :smart
535
+ self.irange = 5
536
+ elsif r == :auto
537
+ fail 'Auto range not available in FIMV mode!' if self.fimv?
538
+ self.irange = 6
539
+ else
540
+ if fimv?
541
+ self.irange = case
542
+ when r > 0.0002 then 2
543
+ else 4
544
+ end
545
+ else
546
+ self.irange = case
547
+ when r > 0.0002 then 2
548
+ when r > 0.00002 then 4
549
+ when r > 0.000002 then 0
550
+ when r > 0.0000002 then 1
551
+ else 3
552
+ end
553
+ end
554
+ end
555
+ end
556
+
557
+ self
558
+ end
559
+
560
+ # Set the voltage range of the test instance, the following are valid:
561
+ #
562
+ # Board PMU
563
+ # * 2V
564
+ # * 5V
565
+ # * 10V
566
+ # * 24V
567
+ # * :auto
568
+ # * :smart
569
+ #
570
+ # Examples
571
+ # instance.set_vrange(:auto)
572
+ # instance.set_vrange(:v => 5)
573
+ # instance.set_vrange(5) # Same as above
574
+ def set_vrange(r = nil, options = {})
575
+ r, options = nil, r if r.is_a?(Hash)
576
+ if r == :smart
577
+ self.vrange = 4
578
+ elsif r == :auto
579
+ self.vrange = 5
580
+ elsif !r
581
+ r = options.delete(:v) || options.delete(:V)
582
+ if r
583
+ else
584
+ fail "Can't determine requested vrange!"
585
+ end
586
+ end
587
+ self.vrange = case
588
+ when r > 10 then 3
589
+ when r > 5 then 2
590
+ when r > 2 then 1
591
+ else 0
592
+ end
593
+ self
594
+ end
595
+
596
+ # Set the meaure mode of a parametric test instance, either:
597
+ # * :voltage / :fimv
598
+ # * :current / :fvmi
599
+ def set_measure_mode(mode)
600
+ if mode == :current || mode == :fvmi
601
+ self.measure_mode = 0
602
+ elsif mode == :voltage || mode == :fimv
603
+ self.measure_mode = 1
604
+ else
605
+ fail "Unknown measure mode: #{mode}"
606
+ end
607
+ end
608
+
609
+ # Returns true if instance configured for force current, measure voltage
610
+ def fimv?
611
+ measure_mode == 1
612
+ end
613
+
614
+ # Returns true if instance configured for force voltage, measure current
615
+ def fvmi?
616
+ measure_mode == 0
617
+ end
618
+ end
619
+ end
620
+ end
621
+ end
622
+ end
@@ -0,0 +1,60 @@
1
+ module Origen
2
+ module Tester
3
+ class Ultraflex
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