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.
- checksums.yaml +4 -4
- data/bin/ctags +0 -0
- data/bin/origen +165 -1
- data/bin/rgen +2 -0
- data/config/application.rb +141 -0
- data/config/commands.rb +72 -0
- data/config/development.rb +7 -0
- data/config/environment.rb +0 -0
- data/config/rgen.policy +7 -0
- data/config/rubocop/easy.yml +620 -0
- data/config/rubocop/easy_disabled.yml +271 -0
- data/config/rubocop/easy_enabled.yml +731 -0
- data/config/rubocop/strict.yml +620 -0
- data/config/rubocop/strict_disabled.yml +247 -0
- data/config/rubocop/strict_enabled.yml +755 -0
- data/config/users.rb +20 -0
- data/config/version.rb +1 -1
- data/helpers/url.rb +68 -0
- data/lib/c99/doc_interface.rb +56 -0
- data/lib/c99/j750_interface.rb +85 -0
- data/lib/c99/nvm.rb +89 -0
- data/lib/c99/target/mock2.rb +1 -0
- data/lib/c99/target/subdir/mock3.rb +1 -0
- data/lib/option_parser/optparse.rb +12 -0
- data/lib/origen/acronyms.rb +60 -0
- data/lib/origen/application/command_dispatcher.rb +12 -0
- data/lib/origen/application/configuration.rb +206 -0
- data/lib/origen/application/configuration_manager.rb +78 -0
- data/lib/origen/application/deployer.rb +367 -0
- data/lib/origen/application/environment.rb +186 -0
- data/lib/origen/application/lsf.rb +145 -0
- data/lib/origen/application/lsf_manager.rb +657 -0
- data/lib/origen/application/plugins_manager.rb +280 -0
- data/lib/origen/application/release.rb +359 -0
- data/lib/origen/application/runner.rb +246 -0
- data/lib/origen/application/statistics.rb +191 -0
- data/lib/origen/application/target.rb +374 -0
- data/lib/origen/application/version_tracker.rb +59 -0
- data/lib/origen/application/workspace_manager.rb +151 -0
- data/lib/origen/application.rb +746 -0
- data/lib/origen/bugs/bug.rb +36 -0
- data/lib/origen/bugs.rb +45 -0
- data/lib/origen/callbacks.rb +35 -0
- data/lib/origen/chip_mode.rb +118 -0
- data/lib/origen/chip_package.rb +461 -0
- data/lib/origen/client.rb +87 -0
- data/lib/origen/code_generators/actions.rb +258 -0
- data/lib/origen/code_generators/base.rb +57 -0
- data/lib/origen/code_generators/bundler.rb +17 -0
- data/lib/origen/code_generators/gem_setup.rb +49 -0
- data/lib/origen/code_generators/rake.rb +13 -0
- data/lib/origen/code_generators/rspec.rb +12 -0
- data/lib/origen/code_generators/semver.rb +39 -0
- data/lib/origen/code_generators/timever.rb +37 -0
- data/lib/origen/code_generators.rb +111 -0
- data/lib/origen/commands/add.rb +12 -0
- data/lib/origen/commands/compile.rb +62 -0
- data/lib/origen/commands/ctags.rb +9 -0
- data/lib/origen/commands/dispatch.rb +22 -0
- data/lib/origen/commands/environment.rb +11 -0
- data/lib/origen/commands/fetch.rb +63 -0
- data/lib/origen/commands/generate.rb +130 -0
- data/lib/origen/commands/interactive.rb +73 -0
- data/lib/origen/commands/lint.rb +82 -0
- data/lib/origen/commands/lsf.rb +93 -0
- data/lib/origen/commands/merge.rb +55 -0
- data/lib/origen/commands/modifications.rb +12 -0
- data/lib/origen/commands/new.rb +113 -0
- data/lib/origen/commands/plugin.rb +105 -0
- data/lib/origen/commands/program.rb +70 -0
- data/lib/origen/commands/rc.rb +442 -0
- data/lib/origen/commands/save.rb +56 -0
- data/lib/origen/commands/target.rb +27 -0
- data/lib/origen/commands/time.rb +127 -0
- data/lib/origen/commands/version.rb +17 -0
- data/lib/origen/commands/web.rb +221 -0
- data/lib/origen/commands.rb +272 -0
- data/lib/origen/commands_global.rb +76 -0
- data/lib/origen/controller.rb +94 -0
- data/lib/origen/core_ext/array.rb +23 -0
- data/lib/origen/core_ext/bignum.rb +36 -0
- data/lib/origen/core_ext/enumerable.rb +76 -0
- data/lib/origen/core_ext/fixnum.rb +46 -0
- data/lib/origen/core_ext/hash.rb +52 -0
- data/lib/origen/core_ext/module.rb +14 -0
- data/lib/origen/core_ext/numeric.rb +126 -0
- data/lib/origen/core_ext/object.rb +13 -0
- data/lib/origen/core_ext/range.rb +7 -0
- data/lib/origen/core_ext/string.rb +124 -0
- data/lib/origen/core_ext.rb +10 -0
- data/lib/origen/database/key_value_store.rb +111 -0
- data/lib/origen/database/key_value_stores.rb +108 -0
- data/lib/origen/database.rb +6 -0
- data/lib/origen/encodings.rb +102 -0
- data/lib/origen/features/feature.rb +22 -0
- data/lib/origen/features.rb +104 -0
- data/lib/origen/file_handler.rb +429 -0
- data/lib/origen/generator/comparator.rb +56 -0
- data/lib/origen/generator/compiler.rb +277 -0
- data/lib/origen/generator/flow.rb +49 -0
- data/lib/origen/generator/job.rb +131 -0
- data/lib/origen/generator/pattern.rb +356 -0
- data/lib/origen/generator/pattern_finder.rb +155 -0
- data/lib/origen/generator/pattern_iterator.rb +55 -0
- data/lib/origen/generator/renderer.rb +113 -0
- data/lib/origen/generator/resources.rb +40 -0
- data/lib/origen/generator/stage.rb +89 -0
- data/lib/origen/generator.rb +85 -0
- data/lib/origen/global_methods.rb +205 -0
- data/lib/origen/import_manager.rb +596 -0
- data/lib/origen/location/base.rb +116 -0
- data/lib/origen/location/map.rb +83 -0
- data/lib/origen/location.rb +6 -0
- data/lib/origen/log.rb +217 -0
- data/lib/origen/logger_methods.rb +56 -0
- data/lib/origen/mode.rb +61 -0
- data/lib/origen/model.rb +267 -0
- data/lib/origen/model_initializer.rb +45 -0
- data/lib/origen/nvm/block_array.rb +72 -0
- data/lib/origen/nvm.rb +6 -0
- data/lib/origen/parameters/live.rb +22 -0
- data/lib/origen/parameters/missing.rb +28 -0
- data/lib/origen/parameters/set.rb +144 -0
- data/lib/origen/parameters.rb +107 -0
- data/lib/origen/pdm.rb +218 -0
- data/lib/origen/pins/function_proxy.rb +36 -0
- data/lib/origen/pins/ground_pin.rb +6 -0
- data/lib/origen/pins/pin.rb +860 -0
- data/lib/origen/pins/pin_bank.rb +349 -0
- data/lib/origen/pins/pin_clock.rb +124 -0
- data/lib/origen/pins/pin_collection.rb +492 -0
- data/lib/origen/pins/pin_common.rb +206 -0
- data/lib/origen/pins/port.rb +268 -0
- data/lib/origen/pins/power_pin.rb +30 -0
- data/lib/origen/pins.rb +696 -0
- data/lib/origen/registers/bit.rb +562 -0
- data/lib/origen/registers/bit_collection.rb +787 -0
- data/lib/origen/registers/container.rb +288 -0
- data/lib/origen/registers/domain.rb +16 -0
- data/lib/origen/registers/reg.rb +1406 -0
- data/lib/origen/registers/reg_collection.rb +24 -0
- data/lib/origen/registers.rb +652 -0
- data/lib/origen/regression_manager.rb +251 -0
- data/lib/origen/remote_manager.rb +340 -0
- data/lib/origen/revision_control/base.rb +257 -0
- data/lib/origen/revision_control/design_sync.rb +276 -0
- data/lib/origen/revision_control/git.rb +243 -0
- data/lib/origen/revision_control/subversion.rb +6 -0
- data/lib/origen/revision_control.rb +44 -0
- data/lib/origen/ruby_version_check.rb +131 -0
- data/lib/origen/site_config.rb +61 -0
- data/lib/origen/specs/checkers.rb +103 -0
- data/lib/origen/specs/creation_info.rb +17 -0
- data/lib/origen/specs/doc_resource.rb +91 -0
- data/lib/origen/specs/exhibit.rb +17 -0
- data/lib/origen/specs/mode_select.rb +16 -0
- data/lib/origen/specs/note.rb +17 -0
- data/lib/origen/specs/override.rb +21 -0
- data/lib/origen/specs/power_supply.rb +13 -0
- data/lib/origen/specs/spec.rb +226 -0
- data/lib/origen/specs/version_history.rb +14 -0
- data/lib/origen/specs.rb +552 -0
- data/lib/origen/sub_blocks.rb +298 -0
- data/lib/origen/tester/api.rb +277 -0
- data/lib/origen/tester/bdm/bdm.rb +25 -0
- data/lib/origen/tester/command_based_tester.rb +46 -0
- data/lib/origen/tester/doc/doc.rb +226 -0
- data/lib/origen/tester/doc/generator/flow.rb +71 -0
- data/lib/origen/tester/doc/generator/flow_line.rb +203 -0
- data/lib/origen/tester/doc/generator/test.rb +68 -0
- data/lib/origen/tester/doc/generator/test_group.rb +66 -0
- data/lib/origen/tester/doc/generator/tests.rb +47 -0
- data/lib/origen/tester/doc/generator.rb +126 -0
- data/lib/origen/tester/doc/model.rb +162 -0
- data/lib/origen/tester/generator/flow_control_api.rb +606 -0
- data/lib/origen/tester/generator/identity_map.rb +25 -0
- data/lib/origen/tester/generator/placeholder.rb +13 -0
- data/lib/origen/tester/generator/test_numberer.rb +25 -0
- data/lib/origen/tester/generator.rb +271 -0
- data/lib/origen/tester/interface.rb +154 -0
- data/lib/origen/tester/j750/files.rb +45 -0
- data/lib/origen/tester/j750/generator/flow.rb +123 -0
- data/lib/origen/tester/j750/generator/flow_line.rb +288 -0
- data/lib/origen/tester/j750/generator/patgroup.rb +111 -0
- data/lib/origen/tester/j750/generator/patgroups.rb +41 -0
- data/lib/origen/tester/j750/generator/patset.rb +111 -0
- data/lib/origen/tester/j750/generator/patsets.rb +41 -0
- data/lib/origen/tester/j750/generator/templates/flow.txt.erb +9 -0
- data/lib/origen/tester/j750/generator/templates/instances.txt.erb +16 -0
- data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +8 -0
- data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +10 -0
- data/lib/origen/tester/j750/generator/test_instance.rb +846 -0
- data/lib/origen/tester/j750/generator/test_instance_group.rb +60 -0
- data/lib/origen/tester/j750/generator/test_instances.rb +182 -0
- data/lib/origen/tester/j750/generator.rb +203 -0
- data/lib/origen/tester/j750/j750.rb +845 -0
- data/lib/origen/tester/j750/j750_hpt.rb +35 -0
- data/lib/origen/tester/j750/parser/ac_spec.rb +11 -0
- data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/j750/parser/dc_spec.rb +36 -0
- data/lib/origen/tester/j750/parser/dc_specs.rb +50 -0
- data/lib/origen/tester/j750/parser/descriptions.rb +340 -0
- data/lib/origen/tester/j750/parser/flow.rb +111 -0
- data/lib/origen/tester/j750/parser/flow_line.rb +207 -0
- data/lib/origen/tester/j750/parser/flows.rb +23 -0
- data/lib/origen/tester/j750/parser/pattern_set.rb +94 -0
- data/lib/origen/tester/j750/parser/pattern_sets.rb +33 -0
- data/lib/origen/tester/j750/parser/test_instance.rb +322 -0
- data/lib/origen/tester/j750/parser/test_instances.rb +26 -0
- data/lib/origen/tester/j750/parser/timeset.rb +15 -0
- data/lib/origen/tester/j750/parser/timesets.rb +0 -0
- data/lib/origen/tester/j750/parser.rb +104 -0
- data/lib/origen/tester/jlink/jlink.rb +33 -0
- data/lib/origen/tester/parser/description_lookup.rb +64 -0
- data/lib/origen/tester/parser/searchable_array.rb +32 -0
- data/lib/origen/tester/parser/searchable_hash.rb +32 -0
- data/lib/origen/tester/parser.rb +24 -0
- data/lib/origen/tester/time.rb +338 -0
- data/lib/origen/tester/timing.rb +253 -0
- data/lib/origen/tester/ultraflex/files.rb +45 -0
- data/lib/origen/tester/ultraflex/generator/flow.rb +119 -0
- data/lib/origen/tester/ultraflex/generator/flow_line.rb +269 -0
- data/lib/origen/tester/ultraflex/generator/patgroup.rb +111 -0
- data/lib/origen/tester/ultraflex/generator/patgroups.rb +41 -0
- data/lib/origen/tester/ultraflex/generator/patset.rb +111 -0
- data/lib/origen/tester/ultraflex/generator/patsets.rb +41 -0
- data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +9 -0
- data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +16 -0
- data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +8 -0
- data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +10 -0
- data/lib/origen/tester/ultraflex/generator/test_instance.rb +622 -0
- data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +60 -0
- data/lib/origen/tester/ultraflex/generator/test_instances.rb +174 -0
- data/lib/origen/tester/ultraflex/generator.rb +200 -0
- data/lib/origen/tester/ultraflex/parser/ac_spec.rb +11 -0
- data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/ultraflex/parser/dc_spec.rb +36 -0
- data/lib/origen/tester/ultraflex/parser/dc_specs.rb +50 -0
- data/lib/origen/tester/ultraflex/parser/descriptions.rb +342 -0
- data/lib/origen/tester/ultraflex/parser/flow.rb +111 -0
- data/lib/origen/tester/ultraflex/parser/flow_line.rb +207 -0
- data/lib/origen/tester/ultraflex/parser/flows.rb +23 -0
- data/lib/origen/tester/ultraflex/parser/pattern_set.rb +94 -0
- data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +33 -0
- data/lib/origen/tester/ultraflex/parser/test_instance.rb +262 -0
- data/lib/origen/tester/ultraflex/parser/test_instances.rb +26 -0
- data/lib/origen/tester/ultraflex/parser/timeset.rb +15 -0
- data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
- data/lib/origen/tester/ultraflex/parser.rb +104 -0
- data/lib/origen/tester/ultraflex/ultraflex.rb +759 -0
- data/lib/origen/tester/v93k/generator/flow.rb +63 -0
- data/lib/origen/tester/v93k/generator/flow_node/print.rb +10 -0
- data/lib/origen/tester/v93k/generator/flow_node.rb +17 -0
- data/lib/origen/tester/v93k/generator/pattern.rb +16 -0
- data/lib/origen/tester/v93k/generator/pattern_master.rb +54 -0
- data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +6 -0
- data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +11 -0
- data/lib/origen/tester/v93k/generator/templates/template.flow.erb +121 -0
- data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +9 -0
- data/lib/origen/tester/v93k/generator/test_function.rb +103 -0
- data/lib/origen/tester/v93k/generator/test_functions.rb +79 -0
- data/lib/origen/tester/v93k/generator/test_method.rb +46 -0
- data/lib/origen/tester/v93k/generator/test_methods.rb +75 -0
- data/lib/origen/tester/v93k/generator/test_suite.rb +54 -0
- data/lib/origen/tester/v93k/generator/test_suites.rb +65 -0
- data/lib/origen/tester/v93k/generator.rb +80 -0
- data/lib/origen/tester/v93k/v93k.rb +420 -0
- data/lib/origen/tester/vector.rb +86 -0
- data/lib/origen/tester/vector_generator.rb +633 -0
- data/lib/origen/tester/vector_pipeline.rb +150 -0
- data/lib/origen/tester.rb +56 -0
- data/lib/origen/top_level.rb +134 -0
- data/lib/origen/users/ldap.rb +65 -0
- data/lib/origen/users/user.rb +149 -0
- data/lib/origen/users.rb +30 -0
- data/lib/origen/utility/block_args.rb +93 -0
- data/lib/origen/utility/csv_data.rb +110 -0
- data/lib/origen/utility/design_sync.rb +494 -0
- data/lib/origen/utility/diff.rb +158 -0
- data/lib/origen/utility/input_capture.rb +121 -0
- data/lib/origen/utility/mailer.rb +143 -0
- data/lib/origen/utility/s_record.rb +205 -0
- data/lib/origen/utility/time_and_date.rb +30 -0
- data/lib/origen/utility.rb +12 -0
- data/lib/origen/version_checker.rb +117 -0
- data/lib/origen/version_string.rb +356 -0
- data/lib/origen.rb +648 -0
- data/lib/tasks/gem.rake +27 -22
- data/origen_site_config.yml +36 -0
- data/source_setup +17 -0
- data/spec/format/rgen_formatter.rb +14 -0
- data/templates/api_doc/README.txt.erb +24 -0
- data/templates/code_generators/gemfile_app.rb +4 -0
- data/templates/code_generators/gemfile_plugin.rb +6 -0
- data/templates/code_generators/gemspec.rb +33 -0
- data/templates/code_generators/rakefile.rb +10 -0
- data/templates/code_generators/spec_helper.rb +49 -0
- data/templates/code_generators/version.rb +8 -0
- data/templates/code_generators/version_time.rb +3 -0
- data/templates/git/gitignore.erb +33 -0
- data/templates/j750/_vt_flow.txt.erb +8 -0
- data/templates/j750/_vt_instances.txt.erb +4 -0
- data/templates/j750/program_sheet.txt.erb +9 -0
- data/templates/nanoc/Rules +74 -0
- data/templates/nanoc/config.yaml +77 -0
- data/templates/nanoc/content/favicon.ico +0 -0
- data/templates/nanoc/layouts/bootstrap.html.erb +63 -0
- data/templates/nanoc/layouts/bootstrap3.html.erb +71 -0
- data/templates/nanoc/layouts/freescale.html.erb +79 -0
- data/templates/nanoc/lib/bootstrap_filter.rb +49 -0
- data/templates/nanoc/lib/codeblocks_filter.rb +41 -0
- data/templates/nanoc/lib/default.rb +2 -0
- data/templates/nanoc/lib/gzip_filter.rb +16 -0
- data/templates/nanoc/lib/haml_code_filter.rb +41 -0
- data/templates/nanoc/lib/helpers.rb +1 -0
- data/templates/nanoc/lib/search_filter.rb +62 -0
- data/templates/nanoc_dynamic/content/search.js.erb +92 -0
- data/templates/shared/web/_logo.html +10 -0
- data/templates/test/_inline_sub.txt.erb +2 -0
- data/templates/test/environment.txt.erb +1 -0
- data/templates/test/inline.txt.erb +11 -0
- data/templates/test/inspections.txt.erb +19 -0
- data/templates/test/set1/_sub1.txt.erb +12 -0
- data/templates/test/set1/_sub4.txt.erb +1 -0
- data/templates/test/set1/_sub5.txt.erb +1 -0
- data/templates/test/set1/main.txt.erb +53 -0
- data/templates/test/set1/sub_dir/_sub2.txt.erb +20 -0
- data/templates/test/set1/sub_dir/_sub3.txt.erb +12 -0
- data/templates/test/set1/sub_dir/main2.txt.erb +4 -0
- data/templates/test/set2/template_with_no_erb_1.txt +9 -0
- data/templates/test/set2/template_with_no_erb_2.txt +9 -0
- data/templates/test/set3/_layout.html.erb +4 -0
- data/templates/test/set3/content.html.erb +6 -0
- data/templates/time/filter.rb.erb +15 -0
- data/templates/time/rules.rb.erb +45 -0
- 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
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
|