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
data/config/users.rb ADDED
@@ -0,0 +1,20 @@
1
+ # This file defines the users associated with your project, it is basically the
2
+ # mailing list for release notes.
3
+ # This module must define a method named "users" which returns an array of user
4
+ # objects.
5
+ # You can split your users into "admin" and "user" groups, the main difference
6
+ # between the two is that admin users will get all tag emails, users will get
7
+ # emails on external/official releases only.
8
+ # Users are also prohibited from running the tag_project script, but this is
9
+ # really just to prevent a casual user from executing it inadvertently and it is
10
+ # not intended to be a serious security gate.
11
+ module Origen
12
+ module Users
13
+ def users
14
+ @users ||= [
15
+ # Admins
16
+ User.new('Stephen McGinty', 'stephen.f.mcginty@gmail.com', :admin),
17
+ ]
18
+ end
19
+ end
20
+ end
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
3
  MINOR = 0
4
- BUGFIX = 1
4
+ BUGFIX = 2
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
data/helpers/url.rb ADDED
@@ -0,0 +1,68 @@
1
+ module Origen
2
+ class Generator
3
+ class Compiler # :nodoc: all
4
+ # Helper methods that are available to all templates
5
+ module Helpers
6
+
7
+ def current_path
8
+ path(options[:top_level_file].to_s.sub(/^.*\/templates\/web/, '').sub(/\..*$/, ''))
9
+ end
10
+
11
+ def current_url
12
+ "#{domain_minus_root_path}#{current_path}"
13
+ end
14
+
15
+ # Like current_url except always returns the latest version of the url and
16
+ # not one with an embedded production version
17
+ def current_latest_url
18
+ current_url.sub(_version, 'latest')
19
+ end
20
+
21
+ def path(p)
22
+ p = "/#{p}" unless p =~ /^\//
23
+
24
+ if Origen.development?
25
+ "#{p}" # dev mode used for local website generation
26
+ else
27
+ "#{root_path}/#{_version}#{p}"
28
+ end
29
+ end
30
+
31
+ def url(p)
32
+ "#{domain_minus_root_path}#{path(p)}"
33
+ end
34
+
35
+ def domain
36
+ Origen.config.web_domain
37
+ end
38
+
39
+ def domain_minus_root_path
40
+ domain.sub /#{root_path}$/, ''
41
+ end
42
+
43
+ def _version
44
+ # Special case for Origen core..
45
+ if Origen.top == Origen.root
46
+ version = Origen.version
47
+ else
48
+ version = Origen.app.version
49
+ end
50
+ if version.development?
51
+ 'latest'
52
+ else
53
+ version.to_s.gsub(".", "_")
54
+ end
55
+ end
56
+
57
+ # Returns any path attached to the domain, for example will return "/tfs"
58
+ # for "http://origen.freescale.net/tfs"
59
+ def root_path # :nodoc:
60
+ if domain =~ /\/\/[^\/]*(\/.*)/ # http://rubular.com/r/UY06Z6DXUS
61
+ $1
62
+ end
63
+ end
64
+
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,56 @@
1
+ module C99
2
+ class DocInterface
3
+ include Origen::Tester::Doc::Generator
4
+
5
+ # Options passed to Flow.create and Library.create will be passed in here, use as
6
+ # desired to configure your interface
7
+ def initialize(_options = {})
8
+ end
9
+
10
+ def resources_filename=(*_args)
11
+ end
12
+
13
+ def log(_msg)
14
+ end
15
+
16
+ def func(name, options = {})
17
+ options = {
18
+ duration: :static
19
+ }.merge(options)
20
+
21
+ block_loop(name, options) do |_block, i, group|
22
+ ins = tests.add(name, options)
23
+ if group
24
+ flow.test(group, options) if i == 0
25
+ else
26
+ flow.test(ins, options)
27
+ end
28
+ end
29
+ end
30
+
31
+ def block_loop(name, options)
32
+ if options[:by_block]
33
+ tests.group do |group|
34
+ group.name = name
35
+ $nvm.blocks.each_with_index do |block, i|
36
+ yield block, i, group
37
+ end
38
+ end
39
+ else
40
+ yield
41
+ end
42
+ end
43
+
44
+ def por(_options = {})
45
+ end
46
+
47
+ def para(name, options = {})
48
+ options = {
49
+ high_voltage: false
50
+ }.merge(options)
51
+ ins = tests.add(name, options)
52
+ ins.dc_category = 'NVM_PARA'
53
+ flow.test(ins, options)
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,85 @@
1
+ module C99
2
+ module J750BaseInterface
3
+ # Options passed to Flow.create and Library.create will be passed in here, use as
4
+ # desired to configure your interface
5
+ def initialize(_options = {})
6
+ end
7
+
8
+ def log(msg)
9
+ flow.logprint(msg)
10
+ end
11
+
12
+ def func(name, options = {})
13
+ options = {
14
+ duration: :static
15
+ }.merge(options)
16
+
17
+ block_loop(name, options) do |_block, i, group|
18
+ ins = test_instances.functional(name)
19
+ ins.set_wait_flags(:a) if options[:duration] == :dynamic
20
+ ins.pin_levels = options.delete(:pin_levels) if options[:pin_levels]
21
+ if group
22
+ pname = "#{name}_b#{i}_pset"
23
+ patsets.add(pname, [{ pattern: "#{name}_b#{i}.PAT" },
24
+ { pattern: 'nvm_global_subs.PAT', start_label: 'subr' }])
25
+ ins.pattern = pname
26
+ flow.test(group, options) if i == 0
27
+ else
28
+ pname = "#{name}_pset"
29
+ patsets.add(pname, [{ pattern: "#{name}.PAT" },
30
+ { pattern: 'nvm_global_subs.PAT', start_label: 'subr' }])
31
+ ins.pattern = pname
32
+ if options[:cz_setup]
33
+ flow.cz(ins, options[:cz_setup], options)
34
+ else
35
+ flow.test(ins, options)
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ def block_loop(name, options)
42
+ if options[:by_block]
43
+ test_instances.group do |group|
44
+ group.name = name
45
+ $nvm.blocks.each_with_index do |block, i|
46
+ yield block, i, group
47
+ end
48
+ end
49
+ else
50
+ yield
51
+ end
52
+ end
53
+
54
+ def por(options = {})
55
+ options = {
56
+ instance_not_available: true
57
+ }.merge(options)
58
+ flow.test('por_ins', options)
59
+ end
60
+
61
+ def para(name, options = {})
62
+ options = {
63
+ high_voltage: false
64
+ }.merge(options)
65
+ if options.delete(:high_voltage)
66
+ ins = test_instances.bpmu(name)
67
+ else
68
+ ins = test_instances.ppmu(name)
69
+ end
70
+ ins.dc_category = 'NVM_PARA'
71
+ flow.test(ins, options)
72
+ patsets.add("#{name}_pset", pattern: "#{name}.PAT")
73
+ end
74
+ end
75
+
76
+ class J750Interface
77
+ include J750BaseInterface
78
+ include Origen::Tester::J750::Generator
79
+ end
80
+
81
+ # class TestersJ750Interface
82
+ # include J750BaseInterface
83
+ # include Testers::J750::Generator
84
+ # end
85
+ end
data/lib/c99/nvm.rb ADDED
@@ -0,0 +1,89 @@
1
+ module C99
2
+ # Most of the definition for this lives in core_support
3
+ class NVM
4
+ attr_accessor :attribute_x
5
+
6
+ def override_method
7
+ :overridden
8
+ end
9
+
10
+ def added_method
11
+ :added
12
+ end
13
+
14
+ def add_multi_split_reg
15
+ reg :multi_group, 0x0070, size: 16 do |reg|
16
+ reg.bits 15, :mike, reset: 1
17
+ reg.bits 14, :bill, reset: 0
18
+ reg.bits 13, :robert, reset: 1
19
+ reg.bits 12, :james, reset: 0
20
+ reg.bits 11, :james, reset: 1
21
+ reg.bits 10, :james, reset: 0
22
+ reg.bits 9, :paul, reset: 1
23
+ reg.bits 8, :peter, reset: 0
24
+ reg.bits 7, :mike, reset: 1
25
+ reg.bits 6, :mike, reset: 0
26
+ reg.bits 5, :paul, reset: 1
27
+ reg.bits 4, :paul, reset: 0
28
+ reg.bits 3, :mike, reset: 1
29
+ reg.bits 2, :robert, reset: 0
30
+ reg.bits 1, :bill, reset: 0
31
+ reg.bits 0, :ian, reset: 1
32
+ end
33
+ end
34
+
35
+ def add_proth_reg
36
+ reg :proth, 0x0024, size: 32 do |reg|
37
+ reg.bits 31..24, :fprot7, reset: 0xFF
38
+ reg.bits 23..16, :fprot6, reset: 0xEE
39
+ reg.bits 15..8, :fprot5, reset: 0xDD
40
+ reg.bits 7..0, :fprot4, reset: 0x11
41
+ end
42
+ end
43
+ end
44
+
45
+ class NVMSub < NVM
46
+ def redefine_data_reg
47
+ add_reg :data, 0x40, 16, d: { pos: 0, bits: 16 }
48
+ end
49
+
50
+ # Tests that the block format for defining registers works
51
+ def add_reg_with_block_format
52
+ # ** Data Register 3 **
53
+ # This is dreg
54
+ add_reg :dreg, 0x1000, size: 16 do |reg|
55
+ # This is dreg bit 15
56
+ reg.bit 15, :bit15, reset: 1
57
+ # **Bit 14** - This does something cool
58
+ #
59
+ # 0 | Coolness is disabled
60
+ # 1 | Coolness is enabled
61
+ reg.bits 14, :bit14
62
+ # This is dreg bit upper
63
+ reg.bits 13..8, :upper
64
+ # This is dreg bit lower
65
+ # This is dreg bit lower line 2
66
+ reg.bit 7..0, :lower, writable: false, reset: 0x55
67
+ end
68
+
69
+ # This is dreg2
70
+ reg :dreg2, 0x1000, size: 16 do
71
+ # This is dreg2 bit 15
72
+ bit 15, :bit15, reset: 1
73
+ # This is dreg2 bit upper
74
+ bits 14..8, :upper
75
+ # This is dreg2 bit lower
76
+ # This is dreg2 bit lower line 2
77
+ bit 7..0, :lower, writable: false, reset: 0x55
78
+ end
79
+
80
+ # Finally a test that descriptions can be supplied via the API
81
+ reg :dreg3, 0x1000, size: 16, description: "** Data Register 3 **\nThis is dreg3" do
82
+ bit 15, :bit15, reset: 1, description: 'This is dreg3 bit 15'
83
+ bit 14, :bit14, description: "**Bit 14** - This does something cool\n\n0 | Coolness is disabled\n1 | Coolness is enabled"
84
+ bits 13..8, :upper, description: 'This is dreg3 bit upper'
85
+ bit 7..0, :lower, writable: false, reset: 0x55, description: "This is dreg3 bit lower\nThis is dreg3 bit lower line 2"
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1 @@
1
+ $tester = 'found in symlinked subdir'
@@ -0,0 +1 @@
1
+ $tester = 'found in subdir of a symlinked subdir!'
@@ -0,0 +1,12 @@
1
+ require 'optparse'
2
+ class OptionParser
3
+ alias_method :orig_parse!, :parse!
4
+ # Extend this method to save all original options so that they can
5
+ # be later appended to any LSF submissions
6
+ def parse!(*args)
7
+ lsf_options = ARGV.dup
8
+ orig_parse!(*args)
9
+ lsf_options -= ARGV # Now contains all original options
10
+ Origen.app.lsf_manager.command_options = lsf_options
11
+ end
12
+ end
@@ -0,0 +1,60 @@
1
+ require 'active_support/core_ext/string/inflections'
2
+ # This helps the String inflection methods work correctly with our acronyms
3
+ #
4
+ # "MPGBOMApp".underscore # => "mpg_bom_app"
5
+ # "mpg_bom_app".camelcase # => "MPGBOMApp"
6
+ ActiveSupport::Inflector.inflections(:en) do |inflect|
7
+ inflect.acronym 'Origen'
8
+ inflect.acronym 'SVN'
9
+
10
+ inflect.acronym 'MPG'
11
+ inflect.acronym 'AMPG'
12
+ inflect.acronym 'DNG' # Digital Networking Group
13
+ inflect.acronym 'NVM'
14
+
15
+ inflect.acronym 'C90TFS'
16
+ inflect.acronym 'C40TFS'
17
+ inflect.acronym 'C28TFS'
18
+ inflect.acronym 'C90'
19
+ inflect.acronym 'C40'
20
+ inflect.acronym 'C28'
21
+
22
+ inflect.acronym 'TFS'
23
+ inflect.acronym 'SGF'
24
+
25
+ inflect.acronym 'BOM' # Bill of Materials
26
+ inflect.acronym 'CATI'
27
+ inflect.acronym 'RTL'
28
+ inflect.acronym 'FSL' # Freescale
29
+ inflect.acronym 'PDM'
30
+
31
+ inflect.acronym 'IP' # Intellectual Property
32
+ inflect.acronym 'SoC' # System on Chip
33
+ inflect.acronym 'SOC' # System on Chip
34
+ inflect.acronym 'DUT' # Device Under Test
35
+ inflect.acronym 'ADC'
36
+ inflect.acronym 'ATD'
37
+ inflect.acronym 'RAM'
38
+ inflect.acronym 'PLL' # Phase Locked Loop
39
+ inflect.acronym 'ATX'
40
+ inflect.acronym 'BIST' # Built-In Self Test
41
+ inflect.acronym 'FSLBIST' # Freescale Built-In Self Test
42
+ inflect.acronym 'MBIST' # Memory BIST
43
+ inflect.acronym 'ARM'
44
+ inflect.acronym 'DFT' # Design for Test
45
+ inflect.acronym 'VCO'
46
+ inflect.acronym 'DDR'
47
+ inflect.acronym 'JTAG'
48
+ inflect.acronym 'LTG' # Lynx Test Guide
49
+ inflect.acronym 'DTG' # DDR Test Guide
50
+ inflect.acronym 'DIB' # Device Interface Board
51
+
52
+ inflect.acronym 'S08'
53
+ inflect.acronym 'LAU' # Least Addressible Unit
54
+ inflect.acronym 'LSB0' # Least Significant Bit 0
55
+ inflect.acronym 'MSB0' # Most Significant Bit 0
56
+ inflect.acronym 'PDE' # Product Development Engineering
57
+ inflect.acronym 'NPI' # New Product Introduction
58
+
59
+ inflect.acronym 'ML' # Markup Language
60
+ end
@@ -0,0 +1,12 @@
1
+ module Origen
2
+ class Application
3
+ class CommandDispatcher
4
+ # Returns true if some pre-built workspace snaphots
5
+ # exist. The location of these is defined by the configuration
6
+ # attribute config.snapshots_directory
7
+ def snapshots_exist?
8
+ File.exist?(Origen.config.snapshots_directory)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,206 @@
1
+ module Origen
2
+ class Application
3
+ class Configuration
4
+ require 'pathname'
5
+
6
+ # Returns the configuration's application instance
7
+ attr_reader :app
8
+
9
+ attr_accessor :name, :initials, :instructions, :required_origen_version,
10
+ :min_required_origen_version, :max_required_origen_version,
11
+ :history_file, :release_directory, :release_email_subject,
12
+ :production_targets, :mode,
13
+ :vault, :output_directory, :reference_directory,
14
+ :semantically_version, :log_directory, :pattern_name_translator,
15
+ :pattern_directory, :pattern_output_directory, :pattern_prefix, :pattern_postfix,
16
+ :pattern_header, :default_lsf_action, :release_instructions, :proceed_with_pattern,
17
+ :test_program_output_directory, :erb_trim_mode, :test_program_source_directory,
18
+ :test_program_template_directory, :referenced_pattern_list, :program_prefix,
19
+ :copy_command, :diff_command, :compile_only_dot_erb_files, :web_directory,
20
+ :web_domain, :imports, :imports_dev,
21
+ :strict_errors, :unmanaged_dirs, :unmanaged_files, :remotes,
22
+ :external_app_dirs, :lint_test, :shared, :yammer_group, :rc_url, :rc_workflow,
23
+ :user_aliases, :release_externally, :gem_name
24
+
25
+ # Mark any attributes that are likely to depend on properties of the target here,
26
+ # this will raise an error if they are ever accessed before the target has been
27
+ # instantiated (a concern for Origen core developers only).
28
+ #
29
+ # These attributes will also receive an enhanced accessor that accepts a block, see
30
+ # below for more details on this.
31
+ ATTRS_THAT_DEPEND_ON_TARGET = [
32
+ :output_directory, :reference_directory, :pattern_postfix, :pattern_prefix,
33
+ :pattern_header, :release_directory, :pattern_name_translator, :pattern_directory, :pattern_output_directory,
34
+ :proceed_with_pattern, :test_program_output_directory, :test_program_source_directory,
35
+ :test_program_template_directory, :referenced_pattern_list, :program_prefix, :web_directory,
36
+ :web_domain
37
+ ]
38
+
39
+ # Any attributes that want to accept a block, but not necessarily require the target
40
+ # can be added here
41
+ ATTRS_THAT_ACCEPT_A_BLOCK = ATTRS_THAT_DEPEND_ON_TARGET +
42
+ [:release_instructions, :history_file, :log_directory, :copy_command,
43
+ :diff_command, :imports, :imports_dev, :remotes,
44
+ :external_app_dirs
45
+ ]
46
+
47
+ # If a current plugin is present then its value for these attributes will be
48
+ # used instead of that from the current application
49
+ ATTRS_THAT_CURRENT_PLUGIN_CAN_OVERRIDE = [
50
+ :pattern_prefix, :pattern_postfix, :program_prefix, :pattern_header, :pattern_output_directory,
51
+ :output_directory, :reference_directory, :test_program_output_directory,
52
+ :test_program_template_directory, :referenced_pattern_list
53
+ ]
54
+
55
+ def log_deprecations
56
+ unless imports.empty?
57
+ Origen.deprecate "App #{app.name} uses config.imports this will be removed in Origen V3 and a Gemfile/.gemspec should be used instead"
58
+ end
59
+ unless imports_dev.empty?
60
+ Origen.deprecate "App #{app.name} uses config.imports_dev this will be removed in Origen V3 and a Gemfile/.gemspec should be used instead"
61
+ end
62
+ if required_origen_version
63
+ Origen.deprecate "App #{app.name} uses config.required_origen_version this will be removed in Origen V3 and a Gemfile/.gemspec should be used instead"
64
+ end
65
+ if min_required_origen_version
66
+ Origen.deprecate "App #{app.name} uses config.min_required_origen_version this will be removed in Origen V3 and a Gemfile/.gemspec should be used instead"
67
+ end
68
+ if max_required_origen_version
69
+ Origen.deprecate "App #{app.name} uses config.max_required_origen_version this will be removed in Origen V3 and a Gemfile/.gemspec should be used instead"
70
+ end
71
+ end
72
+
73
+ def initialize(app)
74
+ @app = app
75
+ @mode = Origen::Mode.new
76
+ @name = 'Unknown'
77
+ @initials = 'NA'
78
+ @semantically_version = false
79
+ @compile_only_dot_erb_files = true
80
+ # Functions used here since Origen.root is not available when this is first instantiated
81
+ @output_directory = -> { "#{Origen.root}/output" }
82
+ @reference_directory = -> { "#{Origen.root}/.ref" }
83
+ @release_directory = -> { Origen.root }
84
+ @release_email_subject = false
85
+ @log_directory = -> { "#{Origen.root}/log" }
86
+ @pattern_name_translator = ->(name) { name }
87
+ @pattern_directory = -> { "#{Origen.root}/pattern" }
88
+ @pattern_output_directory = -> { "#{Origen.root}/output/patterns" }
89
+ @history_file = -> { "#{Origen.root}/doc/history" }
90
+ @default_lsf_action = :clear
91
+ @proceed_with_pattern = ->(_name) { true }
92
+ @erb_trim_mode = '%'
93
+ @referenced_pattern_list = -> { "#{Origen.root}/list/referenced.list" }
94
+ @copy_command = -> { Origen.running_on_windows? ? 'copy' : 'cp' }
95
+ @diff_command = -> { Origen.running_on_windows? ? 'start winmerge' : 'tkdiff' }
96
+ @imports = []
97
+ @imports_dev = []
98
+ @external_app_dirs = []
99
+ @unmanaged_dirs = []
100
+ @unmanaged_files = []
101
+ @remotes = []
102
+ @lint_test = {}
103
+ @user_aliases = {}
104
+ end
105
+
106
+ # This defines an enhanced accessor for these attributes that allows them to be assigned
107
+ # to an annonymous function to calculate the value based on some property of the target
108
+ # objects.
109
+ #
110
+ # Without this the objects frome the target could not be referenced in config/application.rb
111
+ # because they don't exist yet, for example this will not work because $dut has not yet
112
+ # been instantiated:
113
+ # # config/application.rb
114
+ #
115
+ # config.output_directory = "#{Origen.root}/output/#{$dut.class}"
116
+ #
117
+ # However this accessor provides a way to do that via the following syntax:
118
+ # # config/application.rb
119
+ #
120
+ # config.output_directory do
121
+ # "#{Origen.root}/output/#{$dut.class}"
122
+ # end
123
+ #
124
+ # Or on one line:
125
+ # # config/application.rb
126
+ #
127
+ # config.output_directory { "#{Origen.root}/output/#{$dut.class}" }
128
+ #
129
+ # Or if you prefer the more explicit:
130
+ # # config/application.rb
131
+ #
132
+ # config.output_directory = ->{ "#{Origen.root}/output/#{$dut.class}" }
133
+ ATTRS_THAT_ACCEPT_A_BLOCK.each do |name|
134
+ define_method name do |override = true, &block|
135
+ if block # _given?
136
+ instance_variable_set("@#{name}".to_sym, block)
137
+ else
138
+ if override && ATTRS_THAT_CURRENT_PLUGIN_CAN_OVERRIDE.include?(name) &&
139
+ app.current? && Origen.current_plugin.name
140
+ var = Origen.current_plugin.instance.config.send(name, override: false)
141
+ end
142
+ var ||= instance_variable_get("@#{name}".to_sym)
143
+ if var.respond_to?('call')
144
+ if ATTRS_THAT_DEPEND_ON_TARGET.include?(name)
145
+ # If an attempt has been made to access this attribute before the target has
146
+ # been instantiated raise an error
147
+ # Note Origen.app here instead of just app to ensure we are talking to the top level application,
148
+ # that is the only one that has a target
149
+ unless Origen.app.target_instantiated?
150
+ fail "You have attempted to access Origen.config.#{name} before instantiating the target"
151
+ end
152
+ end
153
+ var.call
154
+ else
155
+ var
156
+ end
157
+ end
158
+ end
159
+ end
160
+
161
+ (ATTRS_THAT_CURRENT_PLUGIN_CAN_OVERRIDE - ATTRS_THAT_ACCEPT_A_BLOCK).each do |name|
162
+ if override && ATTRS_THAT_CURRENT_PLUGIN_CAN_OVERRIDE.include?(name) &&
163
+ app.current? && Origen.current_plugin.name
164
+ var = Origen.current_plugin.instance.config.send(name, override: false)
165
+ end
166
+ var || instance_variable_get("@#{name}".to_sym)
167
+ end
168
+
169
+ def pattern_name_translator(name = nil, &block)
170
+ if block
171
+ @pattern_name_translator = block
172
+ else
173
+ @pattern_name_translator.call(name)
174
+ end
175
+ end
176
+
177
+ def proceed_with_pattern(name = nil, &block)
178
+ if block
179
+ @proceed_with_pattern = block
180
+ else
181
+ @proceed_with_pattern.call(name)
182
+ end
183
+ end
184
+
185
+ # Add a new pattern iterator
186
+ def pattern_iterator
187
+ yield Origen.generator.create_iterator
188
+ end
189
+
190
+ def mode=(val)
191
+ @mode.set(val)
192
+ end
193
+
194
+ def lsf
195
+ app.lsf.configuration
196
+ end
197
+
198
+ # Prevent a new attribute from a future version of Origen from dying before the
199
+ # user can be prompted to upgrade
200
+ def method_missing(method, *_args, &_block)
201
+ method = method.to_s.sub('=', '')
202
+ puts "WARNING - unknown configuration attribute: #{method}"
203
+ end
204
+ end
205
+ end
206
+ end