origen 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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,288 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ module Generator
5
+ class FlowLine
6
+ attr_accessor :type, :id, :cz_setup # cz_setup is a virtual attrib since it is not part of the regular flow line
7
+ # cz_setup combine with instance name when characterize opcode is used
8
+
9
+ # Attributes for each flow line, these must be declared in the order they are to be output
10
+ ATTRS = %w(label enable job part env opcode parameter tname tnum bin_pass bin_fail
11
+ sort_pass sort_fail result flag_pass flag_fail state
12
+ group_specifier group_sense group_condition group_name
13
+ device_sense device_condition device_name
14
+ debug_assume debug_sites comment
15
+ )
16
+
17
+ # Map any aliases to the official names here, multiple aliases for a given attribute
18
+ # are allowed
19
+ ALIASES = {
20
+ bin: :bin_fail,
21
+ softbin: :sort_fail,
22
+ soft_bin: :sort_fail,
23
+ name: :tname,
24
+ number: :tnum,
25
+ if_enable: :enable,
26
+ if_enabled: :enable,
27
+ enabled: :enable,
28
+ # Aliases can also be used to set defaults on multiple attributes like this,
29
+ # use :value to refer to the value passed in to the given alias
30
+ flag_false: { device_condition: 'flag-false',
31
+ device_name: :value
32
+ },
33
+ flag_true: { device_condition: 'flag-true',
34
+ device_name: :value
35
+ },
36
+ flag_false_any: { group_specifier: 'any-active',
37
+ group_condition: 'flag-false',
38
+ group_name: :value
39
+ },
40
+ flag_false_all: { group_specifier: 'all-active',
41
+ group_condition: 'flag-false',
42
+ group_name: :value
43
+ },
44
+ flag_true_any: { group_specifier: 'any-active',
45
+ group_condition: 'flag-true',
46
+ group_name: :value
47
+ },
48
+ flag_true_all: { group_specifier: 'all-active',
49
+ group_condition: 'flag-true',
50
+ group_name: :value
51
+ },
52
+ flag_clear: { device_condition: 'flag-clear',
53
+ device_name: :value
54
+ }
55
+ }
56
+
57
+ # Assign attribute defaults here, generally this should match whatever defaults
58
+ # Teradyne has set whenever you create a new test instance, etc.
59
+ DEFAULTS = {
60
+ test: {
61
+ opcode: 'Test',
62
+ result: 'Fail'
63
+ },
64
+ cz: {
65
+ opcode: 'characterize',
66
+ result: 'None'
67
+ },
68
+ goto: {
69
+ opcode: 'goto'
70
+ },
71
+ nop: {
72
+ opcode: 'nop'
73
+ },
74
+ set_device: {
75
+ opcode: 'set-device'
76
+ },
77
+ set_error_bin: {
78
+ opcode: 'set-error-bin'
79
+ },
80
+ enable_flow_word: {
81
+ opcode: 'enable-flow-word'
82
+ },
83
+ disable_flow_word: {
84
+ opcode: 'disable-flow-word'
85
+ },
86
+ logprint: {
87
+ opcode: 'logprint'
88
+ }
89
+ }
90
+
91
+ # Generate accessors for all attributes and their aliases
92
+ ATTRS.each do |attr|
93
+ attr_accessor attr.to_sym
94
+ end
95
+
96
+ ALIASES.each do |_alias, val|
97
+ if val.is_a? Hash
98
+ define_method("#{_alias}=") do |v|
99
+ val.each do |k, _v|
100
+ myval = _v == :value ? v : _v
101
+ send("#{k}=", myval)
102
+ end
103
+ end
104
+ else
105
+ define_method("#{_alias}=") do |v|
106
+ send("#{val}=", v)
107
+ end
108
+ define_method("#{_alias}") do
109
+ send(val)
110
+ end
111
+ end
112
+ end
113
+
114
+ def initialize(type, attrs = {})
115
+ @ignore_missing_instance = attrs.delete(:instance_not_available)
116
+ self.cz_setup = attrs.delete(:cz_setup)
117
+ @type = type
118
+ # Set the defaults
119
+ DEFAULTS[@type.to_sym].each do |k, v|
120
+ send("#{k}=", v) if self.respond_to?("#{k}=")
121
+ end
122
+ # Then the values that have been supplied
123
+ attrs.each do |k, v|
124
+ send("#{k}=", v) if self.respond_to?("#{k}=")
125
+ end
126
+ end
127
+
128
+ def parameter=(value)
129
+ if (@type == :test || @test == :cz) && !@ignore_missing_instance
130
+ if value.is_a?(String) || value.is_a?(Symbol)
131
+ fail "You must supply the actual test instance object for #{value} when adding it to the flow"
132
+ end
133
+ end
134
+ @parameter = value
135
+ end
136
+
137
+ def parameter
138
+ # When referring to the test instance take the opportunity to refresh the current
139
+ # version of the test instance
140
+ @parameter = Origen.interface.identity_map.current_version_of(@parameter)
141
+ end
142
+
143
+ # Returns the fully formatted flow line for insertion into a flow sheet
144
+ def to_s
145
+ l = "\t"
146
+ ATTRS.each do |attr|
147
+ if attr == 'parameter'
148
+ ins = parameter
149
+ if ins.respond_to?(:name)
150
+ l += "#{ins.name}"
151
+ else
152
+ l += "#{ins}"
153
+ end
154
+ if cz_setup
155
+ l += " #{cz_setup}\t"
156
+ else
157
+ l += "\t"
158
+ end
159
+ else
160
+ l += "#{send(attr)}\t"
161
+ end
162
+ end
163
+ "#{l}"
164
+ end
165
+
166
+ def job
167
+ if !if_jobs.empty? && !unless_jobs.empty?
168
+ fail "Both if and unless jobs have been defined for test: #{parameter}"
169
+ elsif !if_jobs.empty?
170
+ if_jobs.join(',')
171
+ elsif !unless_jobs.empty?
172
+ unless_jobs.map { |j| "!#{j}" }.join(',')
173
+ else
174
+ ''
175
+ end
176
+ end
177
+ alias_method :jobs, :job
178
+
179
+ def unless_enable=(*_args)
180
+ end
181
+ alias_method :unless_enabled=, :unless_enable=
182
+
183
+ def if_jobs
184
+ @if_jobs ||= []
185
+ end
186
+
187
+ def unless_jobs
188
+ @unless_jobs ||= []
189
+ end
190
+
191
+ def if_job=(jobs)
192
+ [jobs].flatten.compact.each do |job|
193
+ job = job.to_s.upcase
194
+ if job =~ /!/
195
+ self.unless_job = job
196
+ else
197
+ if_jobs << job unless if_jobs.include?(job)
198
+ end
199
+ end
200
+ end
201
+ alias_method :if_jobs=, :if_job=
202
+ alias_method :add_if_jobs, :if_job=
203
+ alias_method :add_if_job, :if_job=
204
+
205
+ def unless_job=(jobs)
206
+ [jobs].flatten.compact.each do |job|
207
+ job = job.to_s.upcase
208
+ job.gsub!('!', '')
209
+ unless_jobs << job unless unless_jobs.include?(job)
210
+ end
211
+ end
212
+ alias_method :unless_jobs=, :unless_job=
213
+ alias_method :add_unless_jobs, :unless_job=
214
+ alias_method :add_unless_job, :unless_job=
215
+
216
+ def continue_on_fail
217
+ self.result = 'None'
218
+ end
219
+
220
+ def continue_pass
221
+ self.result = 'Pass'
222
+ end
223
+
224
+ def debug_assume_pass
225
+ self.debug_assume = 'Pass'
226
+ end
227
+
228
+ def debug_assume_fail
229
+ self.debug_assume = 'Fail'
230
+ end
231
+
232
+ # def debug_sites
233
+ # self.debug_sites = "All"
234
+ # end
235
+
236
+ def set_flag_on_fail
237
+ self.flag_fail = "#{id}_FAILED"
238
+ end
239
+
240
+ def set_flag_on_pass
241
+ self.flag_pass = "#{id}_PASSED"
242
+ end
243
+
244
+ def set_flag_on_ran
245
+ self.flag_pass = "#{id}_RAN"
246
+ end
247
+
248
+ def run_if_any_passed(parent)
249
+ parent.continue_on_fail
250
+ self.flag_true_any = parent.set_flag_on_pass
251
+ end
252
+
253
+ def run_if_all_passed(parent)
254
+ parent.continue_on_fail
255
+ self.flag_true_all = parent.set_flag_on_pass
256
+ end
257
+
258
+ def run_if_any_failed(parent)
259
+ parent.continue_on_fail
260
+ self.flag_true_any = parent.set_flag_on_fail
261
+ end
262
+
263
+ def run_if_all_failed(parent)
264
+ parent.continue_on_fail
265
+ self.flag_true_all = parent.set_flag_on_fail
266
+ end
267
+
268
+ def id
269
+ @id || "#{parameter}_#{unique_counter}"
270
+ end
271
+
272
+ def unique_counter
273
+ @unique_counter ||= self.class.unique_counter
274
+ end
275
+
276
+ def self.unique_counter
277
+ @ix ||= -1
278
+ @ix += 1
279
+ end
280
+
281
+ def test?
282
+ @type == :test
283
+ end
284
+ end
285
+ end
286
+ end
287
+ end
288
+ end
@@ -0,0 +1,111 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ module Generator
5
+ class Patgroup
6
+ attr_accessor :index
7
+
8
+ class Pattern
9
+ ATTRS = %w(group_name pattern_file comment)
10
+
11
+ ALIASES = {
12
+ pattern: :pattern_file
13
+ }
14
+
15
+ DEFAULTS = {
16
+ }
17
+
18
+ # Generate accessors for all attributes and their aliases
19
+ ATTRS.each do |attr|
20
+ attr_accessor attr.to_sym
21
+ end
22
+
23
+ ALIASES.each do |_alias, val|
24
+ define_method("#{_alias}=") do |v|
25
+ send("#{val}=", v)
26
+ end
27
+ define_method("#{_alias}") do
28
+ send(val)
29
+ end
30
+ end
31
+
32
+ def initialize(patgroup, attrs = {})
33
+ # Set the defaults
34
+ DEFAULTS.each do |k, v|
35
+ send("#{k}=", v)
36
+ end
37
+ # Then the values that have been supplied
38
+ self.group_name = patgroup
39
+ attrs.each do |k, v|
40
+ send("#{k}=", v)
41
+ end
42
+ end
43
+
44
+ def to_s
45
+ l = "\t"
46
+ ATTRS.each do |attr|
47
+ l += "#{send(attr)}\t"
48
+ end
49
+ "#{l}"
50
+ end
51
+ end
52
+
53
+ # Specify multiple patterns by passing an array of attributes
54
+ # as the 2nd argument:
55
+ #
56
+ # Patset.new("mrd1_pgrp", :pattern => "nvm_mrd1.PAT")
57
+ #
58
+ # Patset.new("mrd1_pgrp", [{:pattern => "nvm_mrd1.PAT"},
59
+ # {:pattern => "nvm_global_subs.PAT},
60
+ # ])
61
+ def initialize(name, attrs = {})
62
+ attrs = [attrs] unless attrs.is_a? Array
63
+ attrs.each do |pattrs|
64
+ if pattrs[:pattern]
65
+ pat = Pathname.new(pattrs[:pattern].gsub('\\', '/')).basename('.*').to_s
66
+ Origen.interface.referenced_patterns << pat
67
+ end
68
+ lines << Pattern.new(name, pattrs)
69
+ end
70
+ self.name = name
71
+ end
72
+
73
+ def ==(other_patgroup)
74
+ self.class == other_patgroup.class &&
75
+ name.to_s == other_patgroup.name.to_s &&
76
+ sorted_pattern_files == other_patgroup.sorted_pattern_files
77
+ end
78
+
79
+ def name
80
+ @name
81
+ end
82
+
83
+ def name=(n)
84
+ @name = n
85
+ lines.each { |l| l.group_name = n }
86
+ n
87
+ end
88
+
89
+ # Returns all lines in the pattern set
90
+ def lines
91
+ @lines ||= []
92
+ end
93
+
94
+ # Returns all pattern files in the pattern set in alphabetical order
95
+ def sorted_pattern_files
96
+ @lines.map(&:file_name).sort
97
+ end
98
+
99
+ # Returns the fully formatted pattern group for insertion into a patgroups sheet
100
+ def to_s
101
+ l = ''
102
+ lines.each do |line|
103
+ l += "#{line}\r\n"
104
+ end
105
+ l.chomp
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,41 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ module Generator
5
+ class Patgroups
6
+ include Origen::Tester::Generator
7
+
8
+ TEMPLATE = "#{Origen.top}/lib/origen/tester/j750/generator/templates/patgroups.txt.erb"
9
+ OUTPUT_POSTFIX = 'patgroups'
10
+
11
+ def add(name, options = {})
12
+ p = Patgroup.new(name, options)
13
+ collection << p
14
+ p
15
+ end
16
+
17
+ def finalize(_options = {})
18
+ uniq!
19
+ sort!
20
+ end
21
+
22
+ # Present the patgroups in the final sheet in alphabetical order
23
+ def sort!
24
+ collection.sort_by!(&:name)
25
+ end
26
+
27
+ # Removes all duplicate patgroups
28
+ def uniq!
29
+ uniques = []
30
+ collection.each do |patgroup|
31
+ unless uniques.any? { |p| p == patgroup }
32
+ uniques << patgroup
33
+ end
34
+ end
35
+ self.collection = uniques
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,111 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ module Generator
5
+ class Patset
6
+ attr_accessor :index
7
+
8
+ class Pattern
9
+ ATTRS = %w(pattern_set file_name start_label stop_label comment)
10
+
11
+ ALIASES = {
12
+ pattern: :file_name
13
+ }
14
+
15
+ DEFAULTS = {
16
+ }
17
+
18
+ # Generate accessors for all attributes and their aliases
19
+ ATTRS.each do |attr|
20
+ attr_accessor attr.to_sym
21
+ end
22
+
23
+ ALIASES.each do |_alias, val|
24
+ define_method("#{_alias}=") do |v|
25
+ send("#{val}=", v)
26
+ end
27
+ define_method("#{_alias}") do
28
+ send(val)
29
+ end
30
+ end
31
+
32
+ def initialize(patset, attrs = {})
33
+ # Set the defaults
34
+ DEFAULTS.each do |k, v|
35
+ send("#{k}=", v)
36
+ end
37
+ # Then the values that have been supplied
38
+ self.pattern_set = patset
39
+ attrs.each do |k, v|
40
+ send("#{k}=", v)
41
+ end
42
+ end
43
+
44
+ def to_s
45
+ l = "\t"
46
+ ATTRS.each do |attr|
47
+ l += "#{send(attr)}\t"
48
+ end
49
+ "#{l}"
50
+ end
51
+ end
52
+
53
+ # Specify multiple patterns by passing an array of attributes
54
+ # as the 2nd argument:
55
+ #
56
+ # Patset.new("mrd1_pset", :pattern => "nvm_mrd1.PAT")
57
+ #
58
+ # Patset.new("mrd1_pset", [{:pattern => "nvm_mrd1.PAT"},
59
+ # {:pattern => "nvm_global_subs.PAT, :start_label => "subr"}
60
+ # ])
61
+ def initialize(name, attrs = {})
62
+ attrs = [attrs] unless attrs.is_a? Array
63
+ attrs.each do |pattrs|
64
+ if pattrs[:pattern]
65
+ pat = Pathname.new(pattrs[:pattern].gsub('\\', '/')).basename('.*').to_s
66
+ Origen.interface.referenced_patterns << pat
67
+ end
68
+ lines << Pattern.new(name, pattrs)
69
+ end
70
+ self.name = name
71
+ end
72
+
73
+ def ==(other_patset)
74
+ self.class == other_patset.class &&
75
+ name.to_s == other_patset.name.to_s &&
76
+ sorted_pattern_files == other_patset.sorted_pattern_files
77
+ end
78
+
79
+ def name
80
+ @name
81
+ end
82
+
83
+ def name=(n)
84
+ @name = n
85
+ lines.each { |l| l.pattern_set = n }
86
+ n
87
+ end
88
+
89
+ # Returns all lines in the pattern set
90
+ def lines
91
+ @lines ||= []
92
+ end
93
+
94
+ # Returns all pattern files in the pattern set in alphabetical order
95
+ def sorted_pattern_files
96
+ @lines.map(&:file_name).sort
97
+ end
98
+
99
+ # Returns the fully formatted pattern set for insertion into a patset sheet
100
+ def to_s
101
+ l = ''
102
+ lines.each do |line|
103
+ l += "#{line}\r\n"
104
+ end
105
+ l.chomp
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,41 @@
1
+ module Origen
2
+ module Tester
3
+ class J750
4
+ module Generator
5
+ class Patsets
6
+ include Origen::Tester::Generator
7
+
8
+ TEMPLATE = "#{Origen.top}/lib/origen/tester/j750/generator/templates/patsets.txt.erb"
9
+ OUTPUT_POSTFIX = 'patsets'
10
+
11
+ def add(name, options = {})
12
+ p = Patset.new(name, options)
13
+ collection << p
14
+ p
15
+ end
16
+
17
+ def finalize(_options = {})
18
+ uniq!
19
+ sort!
20
+ end
21
+
22
+ # Present the patsets in the final sheet in alphabetical order
23
+ def sort!
24
+ collection.sort_by!(&:name)
25
+ end
26
+
27
+ # Removes all duplicate patsets
28
+ def uniq!
29
+ uniques = []
30
+ collection.each do |patset|
31
+ unless uniques.any? { |p| p == patset }
32
+ uniques << patset
33
+ end
34
+ end
35
+ self.collection = uniques
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,9 @@
1
+ % unless @append
2
+ DFF 1.1 Flow Table
3
+
4
+ Gate Command Bin Number Sort Number Flag Group Device Debug
5
+ Label Enable Job Part Env Opcode Parameter TName TNum Pass Fail Pass Fail Result Pass Fail State Specifier Sense Condition Name Sense Condition Name Assume Sites Comment
6
+ % end
7
+ % collection.each do |test|
8
+ <%= test %>
9
+ % end
@@ -0,0 +1,16 @@
1
+ % unless @append
2
+ DFF 1.3 Test Instances
3
+
4
+ Test Procedure DC Specs AC Specs Sheet Parameters Other Parameters
5
+ Test Name Type Name Called As Category Selector Category Selector Time Sets Edge Sets Pin Levels Overlay Arg0 Arg1 Arg2 Arg3 Arg4 Arg5 Arg6 Arg7 Arg8 Arg9 Arg10 Arg11 Arg12 Arg13 Arg14 Arg15 Arg16 Arg17 Arg18 Arg19 Arg20 Arg21 Arg22 Arg23 Arg24 Arg25 Arg26 Arg27 Arg28 Arg29 Arg30 Arg31 Arg32 Arg33 Arg34 Arg35 Arg36 Arg37 Arg38 Arg39 Arg40 Arg41 Arg42 Arg43 Arg44 Arg45 Arg46 Arg47 Arg48 Arg49 Arg50 Arg51 Arg52 Arg53 Arg54 Arg55 Arg56 Arg57 Arg58 Arg59 Arg60 Arg61 Arg62 Arg63 Arg64 Arg65 Arg66 Arg67 Arg68 Arg69 Arg70 Arg71 Arg72 Arg73 Arg74 Arg75 Arg76 Arg77 Arg78 Arg79 Comment
6
+ % end
7
+ % collection.each do |test_instance|
8
+ % if test_instance.respond_to?("each")
9
+ %# Instance group case...
10
+ % test_instance.each do |ins|
11
+ <%= ins.to_s(test_instance.name) %>
12
+ % end
13
+ % else
14
+ <%= test_instance %>
15
+ % end
16
+ % end
@@ -0,0 +1,8 @@
1
+ % unless @append
2
+ DFF 1.0 Pattern Groups
3
+
4
+ Group Name Pattern File Comment
5
+ % end
6
+ % collection.each do |patgroup|
7
+ <%= patgroup %>
8
+ % end
@@ -0,0 +1,10 @@
1
+ % unless @append
2
+ DFF 1.1 Pattern Sets
3
+
4
+ Pattern Set File/Group Name Start Label Stop Label Comment
5
+ % end
6
+ % collection.each do |patset|
7
+ % patset.lines.each do |line|
8
+ <%= line %>
9
+ % end
10
+ % end