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,207 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ class Parser
5
+ class FlowLine
6
+ attr_accessor :parser, :flow, :line
7
+
8
+ TYPES = %w(
9
+ Test characterize defaults enable-flow-word disable-flow-word error-print goto
10
+ goto-on-all-done goto-on-all-lastfail goto-on-all-lastfaildoall logprint modify
11
+ nop print reset set-device set-device-new set-error-bin set-retest-bin skip
12
+ stop assign-integer create-integer delete-integer create-site-var assign-site-var
13
+ flag-clear flag-clear-all flag-false flag-false-all flag-true flag-true-all
14
+ state-clear-all state-false-all state-true-all
15
+ )
16
+
17
+ ATTRS = %w(
18
+ label enable job part env opcode parameter
19
+ tname tnum bin_pass bin_fail sort_pass sort_fail result flag_pass
20
+ flag_fail state group_specifier group_sense group_condition group_name
21
+ device_sense device_condition device_name debug_assume debug_sites
22
+ comment
23
+ )
24
+
25
+ ALIASES = {
26
+ bin: :bin_fail,
27
+ softbin: :sort_fail,
28
+ soft_bin: :sort_fail,
29
+ name: :tname,
30
+ number: :tnum,
31
+ test_number: :tnum,
32
+ test_num: :tnum,
33
+ type: :opcode
34
+ }
35
+
36
+ # Make readers for each low level attribute
37
+ ATTRS.each do |attr|
38
+ attr_reader attr
39
+ end
40
+
41
+ # And the aliases
42
+ ALIASES.each do |_alias, attr|
43
+ define_method("#{_alias}") do
44
+ send(attr)
45
+ end
46
+ end
47
+
48
+ # Returns the test instance called by the given line or nil
49
+ def self.extract_test(line)
50
+ l = new(line)
51
+ if l.valid? && l.test?
52
+ l.test_instance_name
53
+ end
54
+ end
55
+
56
+ def initialize(line, options = {})
57
+ @parser = options[:parser]
58
+ @flow = options[:flow]
59
+ @line = line
60
+ parse
61
+ if valid?
62
+ ATTRS.each_with_index do |attr, i|
63
+ instance_variable_set("@#{attr}", components[i + 1])
64
+ end
65
+ end
66
+ end
67
+
68
+ def inspect # :nodoc:
69
+ "<FlowLine: #{type}, Parameter: #{parameter}>"
70
+ end
71
+
72
+ def description
73
+ from_instance = test_instance ? test_instance.description : ''
74
+ from_flow = parser.descriptions.flow_line(name: test_instance_name, flow: flow.file)
75
+ if !from_instance.empty? && !from_flow.empty?
76
+ [from_instance, "\n", from_flow].flatten
77
+ elsif from_instance.empty?
78
+ from_flow
79
+ else
80
+ from_instance
81
+ end
82
+ end
83
+
84
+ def parse
85
+ @components = @line.split("\t") unless @line.strip.empty?
86
+ end
87
+
88
+ def valid?
89
+ components[6] && TYPES.include?(components[6])
90
+ end
91
+
92
+ def components
93
+ @components ||= []
94
+ end
95
+
96
+ def test?
97
+ %w(Test characterize).include? opcode
98
+ end
99
+
100
+ def executes_under_context?(context)
101
+ enable_conditions_met?(context) &&
102
+ job_conditions_met?(context) &&
103
+ part_conditions_met?(context) &&
104
+ env_conditions_met?(context)
105
+ end
106
+
107
+ def enable_conditions_met?(context)
108
+ conditions_met?(enable, context[:enable])
109
+ end
110
+
111
+ def job_conditions_met?(context)
112
+ conditions_met?(job, context[:job])
113
+ end
114
+
115
+ def part_conditions_met?(context)
116
+ conditions_met?(part, context[:part])
117
+ end
118
+
119
+ def env_conditions_met?(context)
120
+ conditions_met?(env, context[:env])
121
+ end
122
+
123
+ def conditions_met?(conditions, values)
124
+ if conditions.empty?
125
+ true
126
+ else
127
+ values = [values].flatten
128
+ conditions = conditions.split(',').map(&:strip)
129
+ not_conditions = conditions.select { |c| c =~ /^!/ }
130
+ conditions = conditions - not_conditions
131
+ # Make sure all -ve conditions are not met
132
+ if not_conditions.all? do |c|
133
+ c =~ /^!(.*)/
134
+ c = Regexp.last_match[1]
135
+ !values.include?(c)
136
+ end
137
+ # And then any +ve conditions
138
+ if conditions.empty?
139
+ true
140
+ else
141
+ values.any? { |v| conditions.include?(v) }
142
+ end
143
+ else
144
+ false
145
+ end
146
+ end
147
+ end
148
+
149
+ def test_instance_name
150
+ parameter
151
+ end
152
+ alias_method :instance_name, :test_instance_name
153
+
154
+ def test_instance
155
+ instances = parser.test_instances.where(name: parameter, exact: true)
156
+ if instances.size > 1
157
+ puts "Warning multiple instances of #{name} found, using the first one"
158
+ end
159
+ if instances.size == 0
160
+ nil
161
+ else
162
+ instances.first
163
+ end
164
+ end
165
+ alias_method :instance, :test_instance
166
+
167
+ # Returns an array of patterns used by the given test, if there are none
168
+ # an empty array is returned.
169
+ # Optionally supply patterns to exclude if you want to ignore common subroutine
170
+ # patterns for example.
171
+ def patterns(options = {})
172
+ i = test_instance
173
+ if i
174
+ pats = i.patterns
175
+ if options[:ignore] && pats
176
+ pats.reject { |p| [options[:ignore]].flatten.include?(p) }
177
+ else
178
+ []
179
+ end
180
+ else
181
+ []
182
+ end
183
+ end
184
+ alias_method :pattern, :patterns
185
+
186
+ # Returns a string summarizing any conditions (enable words, jobs, etc.) that
187
+ # gate the execution of this line
188
+ def conditions
189
+ c = []
190
+ c << "Enable: #{enable}" unless enable.empty?
191
+ c << "Job: #{job}" unless job.empty?
192
+ c << "Part: #{part}" unless part.empty?
193
+ c << "Env: #{env}" unless env.empty?
194
+ c.join('; ')
195
+ end
196
+
197
+ def vdd
198
+ i = test_instance
199
+ if i
200
+ i.vdd
201
+ end
202
+ end
203
+ end
204
+ end
205
+ end
206
+ end
207
+ end
@@ -0,0 +1,23 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ class Parser
5
+ class Flows < Origen::Tester::Parser::SearchableArray
6
+ attr_accessor :parser
7
+
8
+ def initialize(options = {})
9
+ @parser = options[:parser]
10
+ end
11
+
12
+ def import(file)
13
+ self << Flow.new(file, parser: parser)
14
+ end
15
+
16
+ def inspect
17
+ "<TestFlows: #{size}>"
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,94 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ class Parser
5
+ class PatternSet
6
+ class Pattern
7
+ attr_accessor :parser
8
+
9
+ ATTRS = %w(pattern_set file_name start_label stop_label comment)
10
+
11
+ ALIASES = {
12
+ pattern: :file_name,
13
+ file: :file_name,
14
+ name: :file_name
15
+ }
16
+
17
+ # Generate readers for all attributes and their aliases
18
+ ATTRS.each do |attr|
19
+ attr_reader attr.to_sym
20
+ end
21
+
22
+ ALIASES.each do |_alias, attr|
23
+ define_method("#{_alias}") do
24
+ send(attr)
25
+ end
26
+ end
27
+
28
+ def initialize(line)
29
+ @line = line
30
+ parse
31
+ if valid?
32
+ ATTRS.each_with_index do |attr, i|
33
+ instance_variable_set("@#{attr}", components[i + 1])
34
+ end
35
+ end
36
+ end
37
+
38
+ def parse
39
+ @components = @line.split("\t") unless @line.strip.empty?
40
+ end
41
+
42
+ def valid?
43
+ components[1] && !components[1].empty? && components[1] != 'Pattern Set' &&
44
+ components[2] && !components[2].empty?
45
+ end
46
+
47
+ def components
48
+ @components ||= []
49
+ end
50
+ end
51
+
52
+ def initialize(line, options = {})
53
+ @parser = options[:parser]
54
+ p = add_pattern_line(line)
55
+ @name = p.pattern_set if p.valid?
56
+ end
57
+
58
+ def inspect # :nodoc:
59
+ "<PatternSet: #{name}>"
60
+ end
61
+
62
+ def name
63
+ @name
64
+ end
65
+
66
+ def patterns
67
+ @patterns ||= []
68
+ end
69
+
70
+ def self.extract_name(line)
71
+ new(line).name
72
+ end
73
+
74
+ def add_pattern_line(line)
75
+ p = Pattern.new(line)
76
+ patterns << Pattern.new(line) if p.valid?
77
+ p
78
+ end
79
+
80
+ def valid?
81
+ patterns.all?(&:valid?)
82
+ end
83
+
84
+ # Returns an array containing all pattern names contained in this
85
+ # pattern set
86
+ def pattern_names
87
+ # This removes the path and extensions
88
+ patterns.map { |pat| pat.name.gsub(/.*[\\\/]/, '').gsub(/\..*/, '') }
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,33 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ class Parser
5
+ class PatternSets < Origen::Tester::Parser::SearchableHash
6
+ attr_accessor :parser
7
+
8
+ def initialize(options = {})
9
+ @parser = options[:parser]
10
+ end
11
+
12
+ def import(file)
13
+ File.readlines(file).each do |line|
14
+ name = PatternSet.extract_name(line)
15
+ if name
16
+ if self[name]
17
+ self[name].add_pattern_line(line)
18
+ else
19
+ l = PatternSet.new(line, parser: parser)
20
+ self[l.name] = l if l.valid?
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ def inspect
27
+ "<Patsets: #{size}>"
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,322 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ class Parser
5
+ class TestInstance
6
+ attr_accessor :parser
7
+
8
+ TYPES = %w(
9
+ functional board_pmu empty pin_pmu power_supply mto_memory
10
+ )
11
+
12
+ TYPE_ALIASES = {
13
+ functional_t: :functional,
14
+ boardpmu_t: :board_pmu,
15
+ nvmboardpmucal_t: :board_pmu,
16
+ nvmboardpmumeasure_t: :board_pmu,
17
+ empty_t: :empty,
18
+ pinpmu_t: :pin_pmu,
19
+ nvmpinpmucal_t: :pin_pmu,
20
+ nvmpinpmumeas_t: :pin_pmu,
21
+ powersupply_t: :power_supply,
22
+ mtomemory_t: :mto_memory
23
+ }
24
+
25
+ attributes = %w(
26
+ test_name proc_type proc_name proc_called_as dc_category dc_selector ac_category ac_selector
27
+ time_sets edge_sets pin_levels overlay
28
+ )
29
+ 80.times do |i|
30
+ attributes << "arg#{i}"
31
+ end
32
+ attributes << 'comment'
33
+
34
+ ATTRS = attributes
35
+
36
+ ALIASES = {
37
+ name: :test_name,
38
+
39
+ functional: {
40
+ pattern: :arg0,
41
+ start_func: :arg1,
42
+ pre_pat_func: :arg2,
43
+ pre_test_func: :arg3,
44
+ post_test_func: :arg4,
45
+ post_pat_func: :arg5,
46
+ end_func: :arg6,
47
+ set_pass_fail: :arg7,
48
+ start_func_args: :arg13,
49
+ pre_pat_func_args: :arg14,
50
+ pre_test_func_args: :arg15,
51
+ post_test_func_args: :arg16,
52
+ post_pat_func_args: :arg17,
53
+ end_func_args: :arg18,
54
+ wait_flags: :arg21,
55
+ wait_time: :arg22,
56
+ pat_flag_func: :arg23,
57
+ pat_flag_func_args: :arg24,
58
+ relay_mode: :arg25,
59
+ threading: :arg26,
60
+ match_all_sites: :arg27,
61
+ capture_mode: :arg30,
62
+ capture_what: :arg31,
63
+ capture_memory: :arg32,
64
+ capture_size: :arg33,
65
+ datalog_mode: :arg34,
66
+ data_type: :arg35
67
+ },
68
+
69
+ board_pmu: {
70
+ hsp_start: :arg0,
71
+ start_func: :arg1,
72
+ pre_pat_func: :arg2,
73
+ pre_test_func: :arg3,
74
+ post_test_func: :arg4,
75
+ post_pat_func: :arg5,
76
+ end_func: :arg6,
77
+ precond_pat: :arg7,
78
+ hold_state_pat: :arg8,
79
+ holdstate_pat: :arg8,
80
+ pattern: :arg8,
81
+ pcp_stop: :arg9,
82
+ wait_flags: :arg10,
83
+ start_lo: :arg11,
84
+ init_lo: :arg11,
85
+ start_hi: :arg12,
86
+ init_hi: :arg12,
87
+ start_hiz: :arg13,
88
+ init_hiz: :arg13,
89
+ float_pins: :arg14,
90
+ pinlist: :arg15,
91
+ measure_mode: :arg16,
92
+ irange: :arg17,
93
+ clamp: :arg18,
94
+ vrange: :arg19,
95
+ sampling_time: :arg20,
96
+ samples: :arg21,
97
+ setting_time: :arg22,
98
+ hi_lo_lim_valid: :arg23,
99
+ hi_limit: :arg24,
100
+ lo_limit: :arg25,
101
+ force_cond_1: :arg26,
102
+ force_cond_2: :arg27,
103
+ gang_pins_tested: :arg28,
104
+ relay_mode: :arg29,
105
+ wait_time_out: :arg30,
106
+ start_func_args: :arg31,
107
+ pre_pat_func_args: :arg32,
108
+ pre_test_func_args: :arg33,
109
+ post_test_func_args: :arg34,
110
+ post_pat_func_args: :arg35,
111
+ end_func_args: :arg36,
112
+ pcp_start: :arg37,
113
+ pcp_check_pg: :arg38,
114
+ hsp_stop: :arg39,
115
+ hsp_check_pg: :arg40,
116
+ resume_pat: :arg41,
117
+ utility_pins_1: :arg42,
118
+ utility_pins_0: :arg43,
119
+ pre_charge_enable: :arg44,
120
+ pre_charge: :arg45,
121
+ threading: :arg46
122
+ },
123
+
124
+ pin_pmu: {
125
+ hsp_start: :arg0,
126
+ start_func: :arg1,
127
+ pre_pat_func: :arg2,
128
+ pre_test_func: :arg3,
129
+ post_test_func: :arg4,
130
+ post_pat_func: :arg5,
131
+ end_func: :arg6,
132
+ precond_pat: :arg7,
133
+ hold_state_pat: :arg8,
134
+ holdstate_pat: :arg8,
135
+ pattern: :arg8,
136
+ pcp_stop: :arg9,
137
+ wait_flags: :arg10,
138
+ start_lo: :arg11,
139
+ init_lo: :arg11,
140
+ start_hi: :arg12,
141
+ init_hi: :arg12,
142
+ start_hiz: :arg13,
143
+ init_hiz: :arg13,
144
+ float_pins: :arg14,
145
+ pinlist: :arg15,
146
+ measure_mode: :arg16,
147
+ irange: :arg17,
148
+ setting_time: :arg18,
149
+ hi_lo_lim_valid: :arg19,
150
+ hi_limit: :arg20,
151
+ lo_limit: :arg21,
152
+ force_cond_1: :arg22,
153
+ force_cond_2: :arg23,
154
+ fload: :arg24,
155
+ f_load: :arg24,
156
+ relay_mode: :arg25,
157
+ wait_time_out: :arg26,
158
+ start_func_args: :arg27,
159
+ pre_pat_func_args: :arg28,
160
+ pre_test_func_args: :arg29,
161
+ post_test_func_args: :arg30,
162
+ post_pat_func_args: :arg31,
163
+ end_func_args: :arg32,
164
+ pcp_start: :arg33,
165
+ pcp_check_pg: :arg34,
166
+ hsp_stop: :arg35,
167
+ hsp_check_pg: :arg36,
168
+ sampling_time: :arg37,
169
+ samples: :arg38,
170
+ resume_pat: :arg39,
171
+ vcl: :arg40,
172
+ vch: :arg41,
173
+ utility_pins_1: :arg42,
174
+ utility_pins_0: :arg43,
175
+ pre_charge_enable: :arg44,
176
+ pre_charge: :arg45,
177
+ threading: :arg46
178
+ },
179
+ mto_memory: {
180
+ pattern: :arg0,
181
+ start_func: :arg1,
182
+ pre_pat_func: :arg2,
183
+ pre_test_func: :arg3,
184
+ post_test_func: :arg4,
185
+ post_pat_func: :arg5,
186
+ end_of_body_func: :arg6,
187
+ set_pass_fail: :arg7,
188
+ float_pins: :arg11,
189
+ start_of_body_func_args: :arg12,
190
+ pre_pat_func_args: :arg13,
191
+ pre_test_func_args: :arg14,
192
+ post_test_func_args: :arg15,
193
+ post_pat_func_args: :arg16,
194
+ end_of_body_func_args: :arg17,
195
+ utility_pins_1: :arg18,
196
+ utility_pins_0: :arg19,
197
+ wait_flags: :arg20,
198
+ wait_time_out: :arg21,
199
+ pat_flag_f: :arg22,
200
+ pat_flag_func_args: :arg23,
201
+ relay_mode: :arg24,
202
+ x_enable_mask: :arg29,
203
+ x_shift_direction: :arg30,
204
+ x_shift_input: :arg31,
205
+ y_enable_mask: :arg36,
206
+ y_shift_direction: :arg37,
207
+ y_shift_input: :arg38,
208
+ dga: :arg39,
209
+ dgb: :arg40,
210
+ dgc: :arg41,
211
+ dgd: :arg42,
212
+ dg_enable_mask: :arg43,
213
+ dg_shift_direction: :arg44,
214
+ dg_shift_input: :arg45,
215
+ x_coincidence_enable_mask: :arg46,
216
+ y_coincidence_enable_mask: :arg47,
217
+ two_bit_dg_setup: :arg48,
218
+ x_scramble_algorithm: :arg49,
219
+ y_scramble_algorithm: :arg50,
220
+ topo_inversion_algorithm: :arg51,
221
+ utility_counter_a: :arg52,
222
+ utility_counter_b: :arg53,
223
+ utility_counter_c: :arg54,
224
+ dut_data_source: :arg55,
225
+ scramble_addr: :arg56,
226
+ speed_mode: :arg57,
227
+ resource_map: :arg58,
228
+ receive_data: :arg59,
229
+ data_to_capture: :arg60,
230
+ capture_marker: :arg61,
231
+ enable_wrapping: :arg62,
232
+ capture_scrambled_address: :arg63,
233
+ mapmem_0_input_set: :arg64,
234
+ mapmem_1_input_set: :arg65,
235
+ threading: :arg69,
236
+ match_all_sites: :arg70
237
+ }
238
+ }
239
+
240
+ # Make readers for each low level attribute
241
+ ATTRS.each do |attr|
242
+ attr_reader attr
243
+ end
244
+
245
+ # And the aliases
246
+ ALIASES.each do |_alias, attr|
247
+ define_method("#{_alias}") do
248
+ send(attr)
249
+ end
250
+ end
251
+
252
+ def initialize(line, options = {})
253
+ @parser = options[:parser]
254
+ @line = line
255
+ parse
256
+ if valid?
257
+ ATTRS.each_with_index do |attr, i|
258
+ instance_variable_set("@#{attr}", components[i + 1])
259
+ end
260
+ if ALIASES[type]
261
+ ALIASES[type].each do |_alias, attr|
262
+ define_singleton_method("#{_alias}") do
263
+ send(attr)
264
+ end
265
+ end
266
+ end
267
+ end
268
+ end
269
+
270
+ def inspect # :nodoc:
271
+ "<TestInstance: #{name}, Type: #{type}>"
272
+ end
273
+
274
+ def description
275
+ parser.descriptions.test_instance(name: name)
276
+ end
277
+
278
+ def type
279
+ TYPE_ALIASES[proc_name.downcase.to_sym] || :unsupported
280
+ end
281
+
282
+ def parse
283
+ @components = @line.split("\t") unless @line.strip.empty?
284
+ end
285
+
286
+ def valid?
287
+ components[4] && ['Excel Macro', 'VB DLL'].include?(components[4])
288
+ end
289
+
290
+ def components
291
+ @components ||= []
292
+ end
293
+
294
+ # Returns an array of all pattern names referenced in this test instance
295
+ def patterns
296
+ if self.respond_to?(:pattern)
297
+ pattern.split(',').map do |pat|
298
+ extract_pattern_from_patset(pat)
299
+ end.flatten.map { |pat| pat.gsub(/.*[\\\/]/, '').gsub(/\..*/, '') }
300
+ end
301
+ end
302
+
303
+ def extract_pattern_from_patset(patset)
304
+ pset = parser.pattern_sets.where(name: patset, exact: true)
305
+ if pset.size > 1
306
+ puts "Warning multiple pattern sets called #{patset} found, using the first one"
307
+ end
308
+ if pset.size == 0
309
+ patset
310
+ else
311
+ pset.first.pattern_names
312
+ end
313
+ end
314
+
315
+ def vdd
316
+ parser.dc_specs.where(name: 'VDD', exact: true).first.lookup(dc_category, dc_selector)
317
+ end
318
+ end
319
+ end
320
+ end
321
+ end
322
+ end
@@ -0,0 +1,26 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ class Parser
5
+ class TestInstances < Origen::Tester::Parser::SearchableHash
6
+ attr_accessor :parser
7
+
8
+ def initialize(options = {})
9
+ @parser = options[:parser]
10
+ end
11
+
12
+ def import(file)
13
+ File.readlines(file).each do |line|
14
+ l = TestInstance.new(line, parser: parser)
15
+ self[l.name] = l if l.valid?
16
+ end
17
+ end
18
+
19
+ def inspect
20
+ "<TestInstances: #{size}>"
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end