origen 0.44.0 → 0.50.0

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 (158) hide show
  1. checksums.yaml +4 -4
  2. data/config/application.rb +2 -2
  3. data/config/boot.rb +0 -7
  4. data/config/commands.rb +3 -74
  5. data/config/rubocop/easy_disabled.yml +4 -0
  6. data/config/rubocop/easy_enabled.yml +0 -4
  7. data/config/rubocop/strict_disabled.yml +4 -0
  8. data/config/rubocop/strict_enabled.yml +0 -4
  9. data/config/version.rb +1 -2
  10. data/lib/origen/application/deployer.rb +3 -1
  11. data/lib/origen/application/release.rb +2 -2
  12. data/lib/origen/application/runner.rb +9 -2
  13. data/lib/origen/application.rb +91 -2
  14. data/lib/origen/boot/app.rb +0 -4
  15. data/lib/origen/boot.rb +2 -1
  16. data/lib/origen/code_generators/actions.rb +244 -34
  17. data/lib/origen/code_generators/base.rb +9 -2
  18. data/lib/origen/code_generators/block.rb +203 -0
  19. data/lib/origen/code_generators/block_common.rb +100 -0
  20. data/lib/origen/code_generators/dut.rb +62 -0
  21. data/lib/origen/code_generators/feature.rb +50 -0
  22. data/lib/origen/code_generators/klass.rb +41 -0
  23. data/lib/origen/code_generators/model.rb +60 -0
  24. data/lib/origen/code_generators/module.rb +92 -0
  25. data/lib/origen/code_generators.rb +30 -10
  26. data/lib/origen/commands/lint.rb +6 -1
  27. data/lib/origen/commands/new.rb +1 -1
  28. data/lib/origen/commands/new_resource.rb +41 -0
  29. data/lib/origen/commands/web.rb +11 -6
  30. data/lib/origen/commands.rb +18 -0
  31. data/lib/{option_parser → origen/core_ext/option_parser}/optparse.rb +0 -0
  32. data/lib/origen/dependencies.rb +0 -0
  33. data/lib/origen/file_handler.rb +8 -4
  34. data/lib/origen/generator/pattern_finder.rb +3 -3
  35. data/lib/origen/loader.rb +377 -0
  36. data/lib/origen/model.rb +22 -1
  37. data/lib/origen/model_initializer.rb +5 -1
  38. data/lib/origen/parameters/set.rb +2 -1
  39. data/lib/origen/parameters.rb +95 -3
  40. data/lib/origen/sub_blocks.rb +21 -7
  41. data/lib/origen/top_level.rb +11 -0
  42. data/lib/origen.rb +3 -1
  43. data/origen_app_generators/Gemfile +6 -2
  44. data/origen_app_generators/Gemfile.lock +83 -72
  45. data/origen_app_generators/bin/boot.rb +4 -2
  46. data/origen_app_generators/config/commands.rb +3 -3
  47. data/origen_app_generators/config/shared_commands.rb +11 -6
  48. data/origen_app_generators/lbin/bundle +105 -0
  49. data/origen_app_generators/lbin/byebug +29 -0
  50. data/origen_app_generators/lbin/coderay +29 -0
  51. data/origen_app_generators/lbin/htmldiff +29 -0
  52. data/origen_app_generators/lbin/httparty +29 -0
  53. data/origen_app_generators/lbin/httpclient +29 -0
  54. data/origen_app_generators/lbin/kramdown +29 -0
  55. data/origen_app_generators/lbin/ldiff +29 -0
  56. data/origen_app_generators/lbin/nanoc +29 -0
  57. data/origen_app_generators/lbin/nokogiri +29 -0
  58. data/origen_app_generators/lbin/origen +62 -0
  59. data/origen_app_generators/lbin/pry +29 -0
  60. data/origen_app_generators/lbin/rackup +29 -0
  61. data/origen_app_generators/lbin/rake +29 -0
  62. data/origen_app_generators/lbin/rspec +29 -0
  63. data/origen_app_generators/lbin/rubocop +29 -0
  64. data/origen_app_generators/lbin/ruby-parse +29 -0
  65. data/origen_app_generators/lbin/ruby-rewrite +29 -0
  66. data/origen_app_generators/lbin/thor +29 -0
  67. data/origen_app_generators/lbin/tilt +29 -0
  68. data/origen_app_generators/lbin/yard +29 -0
  69. data/origen_app_generators/lbin/yardoc +29 -0
  70. data/origen_app_generators/lbin/yri +29 -0
  71. data/origen_app_generators/lib/origen_app_generators/application.rb +12 -12
  72. data/origen_app_generators/lib/origen_app_generators/base.rb +34 -8
  73. data/origen_app_generators/lib/origen_app_generators/new.rb +17 -9
  74. data/origen_app_generators/lib/{tasks/new_app_tests.rake → origen_app_generators/new_app_tests.rb} +1 -5
  75. data/origen_app_generators/lib/origen_app_generators/origen_infrastructure/app_generator_plugin.rb +6 -8
  76. data/origen_app_generators/lib/origen_app_generators/plugin.rb +4 -7
  77. data/origen_app_generators/lib/origen_app_generators/test_engineering/common.rb +29 -0
  78. data/origen_app_generators/lib/origen_app_generators/test_engineering/stand_alone_application.rb +9 -181
  79. data/origen_app_generators/lib/origen_app_generators/test_engineering/test_block.rb +4 -105
  80. data/origen_app_generators/lib/origen_app_generators.rb +6 -4
  81. data/origen_app_generators/origen_app_generators.gemspec +7 -7
  82. data/origen_app_generators/templates/app_generators/application/Gemfile +14 -3
  83. data/origen_app_generators/templates/app_generators/application/{lib → app/blocks}/top_level.rb +1 -1
  84. data/origen_app_generators/templates/app_generators/application/app/lib/module.rb +6 -0
  85. data/origen_app_generators/templates/app_generators/application/{templates → app/templates}/web/index.md.erb +0 -0
  86. data/origen_app_generators/templates/app_generators/application/{templates → app/templates}/web/layouts/_basic.html.erb +0 -0
  87. data/origen_app_generators/templates/app_generators/application/{templates → app/templates}/web/partials/_navbar.html.erb +0 -0
  88. data/origen_app_generators/templates/app_generators/application/{templates → app/templates}/web/release_notes.md.erb +0 -0
  89. data/origen_app_generators/templates/app_generators/application/config/application.rb +51 -55
  90. data/origen_app_generators/templates/app_generators/application/{spec → test/spec}/spec_helper.rb +0 -0
  91. data/origen_app_generators/templates/app_generators/origen_infrastructure/app_generator_plugin/{lib → app/lib}/application.rb +0 -0
  92. data/origen_app_generators/templates/app_generators/origen_infrastructure/app_generator_plugin/{lib → app/lib}/base.rb +0 -0
  93. data/origen_app_generators/templates/app_generators/origen_infrastructure/app_generator_plugin/{lib → app/lib}/module.rb +0 -0
  94. data/origen_app_generators/templates/app_generators/origen_infrastructure/app_generator_plugin/{lib → app/lib}/plugin.rb +0 -0
  95. data/origen_app_generators/templates/app_generators/origen_infrastructure/app_generator_plugin/config/load_generators.rb +1 -1
  96. data/origen_app_generators/templates/app_generators/plugin/Gemfile +5 -2
  97. data/origen_app_generators/templates/app_generators/plugin/{templates → app/templates}/web/index.md.erb +0 -0
  98. data/origen_app_generators/templates/app_generators/plugin/{templates → app/templates}/web/partials/_navbar_external.html.erb +0 -0
  99. data/origen_app_generators/templates/app_generators/plugin/{templates → app/templates}/web/partials/_navbar_internal.html.erb +0 -0
  100. data/origen_app_generators/templates/app_generators/plugin/gemspec.rb +4 -3
  101. data/origen_app_generators/templates/app_generators/test_engineering/{stand_alone_application/environment → environment}/j750.rb +0 -0
  102. data/origen_app_generators/templates/app_generators/test_engineering/{stand_alone_application/environment → environment}/uflex.rb +0 -0
  103. data/origen_app_generators/templates/app_generators/test_engineering/{stand_alone_application/environment → environment}/v93k.rb +0 -0
  104. data/origen_site_config.yml +0 -7
  105. data/templates/code_generators/attributes.rb +20 -0
  106. data/templates/code_generators/class.rb +9 -0
  107. data/templates/code_generators/controller.rb +87 -0
  108. data/templates/code_generators/model.rb +21 -0
  109. data/templates/code_generators/module.rb +4 -0
  110. data/templates/code_generators/parameters.rb +19 -0
  111. data/templates/code_generators/pins.rb +28 -0
  112. data/templates/code_generators/registers.rb +20 -0
  113. data/templates/code_generators/sub_blocks.rb +24 -0
  114. data/templates/code_generators/timesets.rb +24 -0
  115. data/templates/code_generators/version.rb +0 -1
  116. metadata +66 -77
  117. data/lib/c99/ate_interface.rb +0 -77
  118. data/lib/c99/nvm.rb +0 -110
  119. data/lib/c99/target/mock2.rb +0 -1
  120. data/lib/c99/target/subdir/mock3.rb +0 -1
  121. data/lib/origen/code_generators/bundler.rb +0 -17
  122. data/lib/origen/code_generators/gem_setup.rb +0 -49
  123. data/lib/origen/code_generators/rake.rb +0 -13
  124. data/lib/origen/code_generators/rspec.rb +0 -12
  125. data/lib/origen/commands/add.rb +0 -12
  126. data/lib/tasks/private/build.rake +0 -8
  127. data/origen_app_generators/bin/fix_my_workspace +0 -100
  128. data/origen_app_generators/lib/origen_app_generators/sub_block_parser.rb +0 -81
  129. data/origen_app_generators/lib/tasks/app_generators.rake +0 -6
  130. data/origen_app_generators/spec/sub_block_spec.rb +0 -36
  131. data/origen_app_generators/templates/app_generators/application/lib/app.rake +0 -6
  132. data/origen_app_generators/templates/app_generators/application/lib/module.rb +0 -22
  133. data/origen_app_generators/templates/app_generators/plugin/lib/README +0 -4
  134. data/origen_app_generators/templates/app_generators/plugin/lib_dev/README +0 -5
  135. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/Gemfile +0 -23
  136. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/environment/jlink.rb +0 -1
  137. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/lib/ip_block.rb +0 -23
  138. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/lib/ip_block_controller.rb +0 -5
  139. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/lib/top_level.rb +0 -33
  140. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/lib/top_level_controller.rb +0 -21
  141. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/pattern/example.rb +0 -4
  142. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/target/top_level.rb +0 -4
  143. data/origen_app_generators/templates/app_generators/test_engineering/test_block/environment/j750.rb +0 -2
  144. data/origen_app_generators/templates/app_generators/test_engineering/test_block/environment/ultraflex.rb +0 -2
  145. data/origen_app_generators/templates/app_generators/test_engineering/test_block/environment/v93k.rb +0 -2
  146. data/origen_app_generators/templates/app_generators/test_engineering/test_block/lib/controller.rb +0 -12
  147. data/origen_app_generators/templates/app_generators/test_engineering/test_block/lib/interface.rb +0 -21
  148. data/origen_app_generators/templates/app_generators/test_engineering/test_block/lib/model.rb +0 -18
  149. data/origen_app_generators/templates/app_generators/test_engineering/test_block/lib_dev/dut.rb +0 -27
  150. data/origen_app_generators/templates/app_generators/test_engineering/test_block/lib_dev/dut_controller.rb +0 -26
  151. data/origen_app_generators/templates/app_generators/test_engineering/test_block/pattern/example.rb +0 -5
  152. data/origen_app_generators/templates/app_generators/test_engineering/test_block/program/prb1.rb +0 -11
  153. data/origen_app_generators/templates/app_generators/test_engineering/test_block/target/default.rb +0 -2
  154. data/templates/code_generators/gemfile_app.rb +0 -4
  155. data/templates/code_generators/gemfile_plugin.rb +0 -6
  156. data/templates/code_generators/gemspec.rb +0 -33
  157. data/templates/code_generators/rakefile.rb +0 -10
  158. data/templates/code_generators/spec_helper.rb +0 -49
@@ -1,20 +1,19 @@
1
1
  require 'origen'
2
2
  class <%= @namespace %>Application < Origen::Application
3
-
4
3
  # See http://origen-sdk.org/origen/api/Origen/Application/Configuration.html
5
4
  # for a full list of the configuration options available
6
5
 
7
6
  # These attributes should never be changed, the duplication here will be resolved in future
8
7
  # by condensing these attributes that do similar things
9
- self.name = "<%= @name %>"
10
- self.namespace = "<%= @namespace %>"
11
- config.name = "<%= @name %>"
12
- config.initials = "<%= @namespace %>"
8
+ self.name = '<%= @name %>'
9
+ self.namespace = '<%= @namespace %>'
10
+ config.name = '<%= @name %>'
11
+ config.initials = '<%= @namespace %>'
13
12
  # Change this to point to the revision control repository for this <%= @type %>
14
13
  <% if @audience == :external -%>
15
- #config.rc_url = "ssh://git@github.com:myaccount/<%= @name %>.git"
14
+ # config.rc_url = "ssh://git@github.com:myaccount/<%= @name %>.git"
16
15
  <% else -%>
17
- #config.rc_url = "ssh://git@sw-stash.mycompany.net/myproject/<%= @name %>.git"
16
+ # config.rc_url = "ssh://git@sw-stash.mycompany.net/myproject/<%= @name %>.git"
18
17
  <% end -%>
19
18
  <% if @audience == :external -%>
20
19
  config.release_externally = true
@@ -23,11 +22,11 @@ class <%= @namespace %>Application < Origen::Application
23
22
  # To enable deployment of your documentation to a web server (via the 'origen web'
24
23
  # command) fill in these attributes.
25
24
  <% if @audience == :external -%>
26
- #config.web_directory = "git@github.com:Origen-SDK/Origen-SDK.github.io.git/<%= @name %>"
27
- #config.web_domain = "http://origen-sdk.org/<%= @name %>"
25
+ # config.web_directory = 'git@github.com:Origen-SDK/Origen-SDK.github.io.git/<%= @name %>'
26
+ # config.web_domain = 'http://origen-sdk.org/<%= @name %>'
28
27
  <% else -%>
29
- #config.web_directory = "/path/to/server/<%= @name %>"
30
- #config.web_domain = "http://origen.mycompany.net/<%= @name %>"
28
+ # config.web_directory = '/path/to/server/<%= @name %>'
29
+ # config.web_domain = 'http://origen.mycompany.net/<%= @name %>'
31
30
  <% end -%>
32
31
 
33
32
  # When false Origen will be less strict about checking for some common coding errors,
@@ -38,76 +37,74 @@ class <%= @namespace %>Application < Origen::Application
38
37
  # See: http://origen-sdk.org/origen/latest/guides/utilities/lint/
39
38
  config.lint_test = {
40
39
  # Require the lint tests to pass before allowing a release to proceed
41
- run_on_tag: true,
40
+ run_on_tag: true,
42
41
  # Auto correct violations where possible whenever 'origen lint' is run
43
- auto_correct: true,
44
- # Limit the testing for large legacy applications
45
- #level: :easy,
42
+ auto_correct: true,
46
43
  # Run on these directories/files by default
47
- #files: ["lib", "config/application.rb"],
44
+ files: ['app', 'config/application.rb']
48
45
  }
49
46
 
50
47
  config.semantically_version = true
51
48
 
52
49
  # An example of how to set application specific LSF parameters
53
- #config.lsf.project = "msg.te"
54
-
50
+ # config.lsf.project = "msg.te"
51
+
55
52
  # An example of how to specify a prefix to add to all generated patterns
56
- #config.pattern_prefix = "nvm"
53
+ # config.pattern_prefix = "nvm"
57
54
 
58
55
  # An example of how to add header comments to all generated patterns
59
- #config.pattern_header do
60
- # cc "This is a pattern created by the example origen application"
61
- #end
56
+ # config.pattern_header do
57
+ # cc "This is a pattern created by the example origen application"
58
+ # end
62
59
 
63
60
  # By default all generated output will end up in ./output.
64
61
  # Here you can specify an alternative directory entirely, or make it dynamic such that
65
- # the output ends up in a setup specific directory.
66
- #config.output_directory do
67
- # "#{Origen.root}/output/#{$dut.class}"
68
- #end
62
+ # the output ends up in a setup specific directory.
63
+ # config.output_directory do
64
+ # "#{Origen.root}/output/#{$dut.class}"
65
+ # end
69
66
 
70
67
  # Similarly for the reference files, generally you want to setup the reference directory
71
68
  # structure to mirror that of your output directory structure.
72
- #config.reference_directory do
73
- # "#{Origen.root}/.ref/#{$dut.class}"
74
- #end
75
-
69
+ # config.reference_directory do
70
+ # "#{Origen.root}/.ref/#{$dut.class}"
71
+ # end
72
+
76
73
  # This will automatically deploy your documentation after every tag
77
- #def after_release_email(tag, note, type, selector, options)
78
- # command = "origen web compile --remote --api"
79
- # Dir.chdir Origen.root do
80
- # system command
81
- # end
82
- #end
83
- <% if @validate_release_tests %>
74
+ # def after_release_email(tag, note, type, selector, options)
75
+ # command = "origen web compile --remote --api"
76
+ # Dir.chdir Origen.root do
77
+ # system command
78
+ # end
79
+ # end
80
+ <% if @validate_release_tests -%>
84
81
  # Ensure that all tests pass before allowing a release to continue
85
82
  def validate_release
86
83
  if <%= Array(@validate_release_tests).map { |t| "!system('#{t}')" }.join(' || ') %>
87
84
  puts "Sorry but you can't release with failing tests, please fix them and try again."
88
85
  exit 1
89
86
  else
90
- puts "All tests passing, proceeding with release process!"
87
+ puts 'All tests passing, proceeding with release process!'
91
88
  end
92
89
  end
93
- <% else %>
90
+ <% else -%>
94
91
  # Ensure that all tests pass before allowing a release to continue
95
- #def validate_release
96
- # if !system("origen specs") || !system("origen examples")
97
- # puts "Sorry but you can't release with failing tests, please fix them and try again."
98
- # exit 1
99
- # else
100
- # puts "All tests passing, proceeding with release process!"
101
- # end
102
- #end
92
+ # def validate_release
93
+ # if !system('origen specs') || !system('origen examples')
94
+ # puts "Sorry but you can't release with failing tests, please fix them and try again."
95
+ # exit 1
96
+ # else
97
+ # puts 'All tests passing, proceeding with release process!'
98
+ # end
99
+ # end
103
100
  <% end -%>
104
101
 
105
102
  # To enabled source-less pattern generation create a class (for example PatternDispatcher)
106
103
  # to generate the pattern. This should return false if the requested pattern has been
107
104
  # dispatched, otherwise Origen will proceed with looking up a pattern source as normal.
108
- #def before_pattern_lookup(requested_pattern)
109
- # PatternDispatcher.new.dispatch_or_return(requested_pattern)
110
- #end
105
+ # def before_pattern_lookup(requested_pattern)
106
+ # PatternDispatcher.new.dispatch_or_return(requested_pattern)
107
+ # end
111
108
 
112
109
  # If you use pattern iterators you may come across the case where you request a pattern
113
110
  # like this:
@@ -115,11 +112,10 @@ class <%= @namespace %>Application < Origen::Application
115
112
  #
116
113
  # However it cannot be found by Origen since the pattern name is actually example_pat_bx.atp
117
114
  # In the case where the pattern cannot be found Origen will pass the name to this translator
118
- # if it exists, and here you can make any substitutions to help Origen find the file you
115
+ # if it exists, and here you can make any substitutions to help Origen find the file you
119
116
  # want. In this example any instances of _b\d, where \d means a number, are replaced by
120
117
  # _bx.
121
- #config.pattern_name_translator do |name|
122
- # name.gsub(/_b\d/, "_bx")
123
- #end
124
-
118
+ # config.pattern_name_translator do |name|
119
+ # name.gsub(/_b\d/, "_bx")
120
+ # end
125
121
  end
@@ -2,5 +2,5 @@
2
2
  # 'origen new' command, it must not be removed or modified
3
3
  require 'origen_app_generators'
4
4
  require "<%= @name %>"
5
- template_dir = File.expand_path('../../templates/app_generators', __FILE__)
5
+ template_dir = File.expand_path('../../app/templates/app_generators', __FILE__)
6
6
  OrigenAppGenerators.add_generators(<%= @namespace %>::AVAILABLE, template_dir: template_dir)
@@ -13,14 +13,17 @@ source 'https://rubygems.org'
13
13
  # your application's test coverage
14
14
  gem 'coveralls', require: false
15
15
  <% end -%>
16
- gem 'byebug', '<9.1.0' # This version restriction required if you need Ruby < 2.2, otherwise you can remove it
16
+ gem 'byebug', '~>8' # You can remove this version constraint if you don't care about your app
17
+ # supporting earlier versions of Ruby 2
17
18
  gem 'ripper-tags'
18
19
  gem 'origen_doc_helpers'
19
- gem 'origen_updater'
20
+
20
21
  # Uncomment these if you want to use a visual debugger (e.g. Visual Studio Code) to debug your app
21
22
  #gem 'ruby-debug-ide'
22
23
  #gem 'debase'
23
24
 
25
+ gem 'origen', git: 'https://github.com/Origen-SDK/origen.git', branch: 'app_dir'
26
+
24
27
  # Specify your gem's runtime dependencies in <%= @name %>.gemspec
25
28
  # THIS LINE SHOULD BE LEFT AT THE END
26
29
  gemspec
@@ -21,11 +21,12 @@ Gem::Specification.new do |spec|
21
21
  # packaged gem, the default should hit everything in most cases but this will
22
22
  # need to be added to if you have any custom directories
23
23
  spec.files = Dir["lib/<%= @name %>.rb", "lib/<%= @name %>/**/*.rb", "templates/**/*", "config/**/*.rb",
24
- "bin/*", "lib/tasks/**/*.rake", "pattern/**/*.rb",
25
- "program/**/*.rb"
24
+ "bin/*", "lib/tasks/**/*.rake", "pattern/**/*.rb", "program/**/*.rb",
25
+ "app/lib/**/*.rb", "app/templates/**/*",
26
+ "app/patterns/**/*.rb", "app/flows/**/*.rb", "app/blocks/**/*.rb"
26
27
  ]
27
28
  spec.executables = []
28
- spec.require_paths = ["lib"]
29
+ spec.require_paths = ["lib", "app/lib"]
29
30
 
30
31
  # Add any gems that your plugin needs to run within a host application
31
32
  spec.add_runtime_dependency "origen", ">= <%= @latest_origen_version %>"
@@ -50,13 +50,6 @@ centralized_site_config_verify_ssl: true
50
50
  # user (recommended)
51
51
  gem_manage_bundler: true
52
52
 
53
- # Use the bootsnap gem (https://github.com/Shopify/bootsnap) to speed up the boot time of
54
- # your Origen applications.
55
- # This creates an offline cache in your app's tmp/cache directory and it can also increase
56
- # the memory consumption of your app. As a reward, your app will load Ruby files significantly
57
- # faster, often taking many seconds off the time it takes your app to start up.
58
- use_bootsnap: false
59
-
60
53
  # WORKSPACE DIRECTORY SETUP
61
54
 
62
55
  # Defines where the home directory is
@@ -0,0 +1,20 @@
1
+ # ********************************************************************************
2
+ # Any attributes defined in this file be added to <%= @fullname %>
3
+ <% unless @nested -%>
4
+ # and all of its derivatives (if any).
5
+ <% end -%>
6
+ # ********************************************************************************
7
+
8
+ # To define an attribute simply declare instance variables and assign their
9
+ # values as shown below.
10
+ # Derivative classes will automatically inherit the values defined here unless
11
+ # they are overridden by a derivative attribute file.
12
+ #
13
+ # @address_width = 32
14
+ # @has_feature_x = true
15
+ #
16
+ # Accessors will automatically be created for any attributes defined in this file:
17
+ #
18
+ # dut.address_width # => 32
19
+ # dut.has_feature_x # => true
20
+ # dut.has_feature_x? # => true <attribute>? methods are also added for booleans
@@ -0,0 +1,9 @@
1
+ # If this class gets too big you may want to split it up into modules, run the following
2
+ # command to add a module to it:
3
+ #
4
+ # origen new module my_module_name <%= Pathname.new(resource_path_to_lib_file(@resource_path)).relative_path_from(Origen.root) %>
5
+ #
6
+ class <%= @namespaces.map { |n| camelcase(n[1]) }.join('::') %>::<%= camelcase(@name) %><%= @parent_class ? " < #{@parent_class}" : '' %>
7
+ def initialize(options = {})
8
+ end
9
+ end
@@ -0,0 +1,87 @@
1
+ # If this class gets too big you may want to split it up into modules, run the following
2
+ # command to add a module to it:
3
+ #
4
+ <% if @block -%>
5
+ # origen new module <%= Pathname.new(resource_path_to_blocks_dir(@resource_path)).relative_path_from(Origen.root) %>/controller.rb my_module_name
6
+ <% else -%>
7
+ # origen new module <%= Pathname.new(resource_path_to_lib_file(@resource_path)).relative_path_from(Origen.root) %> my_module_name
8
+ <% end -%>
9
+ #
10
+ class <%= @namespaces.map { |n| camelcase(n[1]) }.join('::') %>::<%= camelcase(@name) %>Controller<%= @parent_class ? " < #{@parent_class}Controller" : '' %>
11
+ <% if @root_class -%>
12
+ include Origen::Controller
13
+
14
+ <% end -%>
15
+
16
+ # If implemented, this method will be called automatically at the start of every pattern.
17
+ <% if @top_level -%>
18
+ # Since this is the top-level/DUT controller, it will be called first and it is normally used
19
+ # to define a mode entry sequence.
20
+ <% else-%>
21
+ # Since this is a sub-block controller, it will be called after the top-level/DUT controller's
22
+ # startup method, though the calling order with relation to other sub-blocks is undefined.
23
+ <% end -%>
24
+ # Any option arguments passed into Pattern.create will be passed into here.
25
+ # def startup(options = {})
26
+ # tester.set_timeset('func', 100)
27
+ # end
28
+ <% if @top_level -%>
29
+
30
+ # If implemented, this method will be called automatically at the start of every simulation.
31
+ # If the simulation run contains multiple patterns run back to back, then this method will
32
+ # be called only once at the very start, and then the startup method will be called multiple
33
+ # as it is invoked before each individual pattern.
34
+ # def simulation_startup(options = {})
35
+ # tester.set_timeset('func', 100)
36
+ # end
37
+
38
+ # If implemented, this method will be called automatically at the start of every interactive
39
+ # console session (origen i). It is commonly used to startup the simulator if the tester is
40
+ # an OrigenSim driver as shown in the example below.
41
+ # def interactive_startup(options = {})
42
+ # tester.start if tester.sim?
43
+ # end
44
+ <% end -%>
45
+
46
+ # All requests to read a register will be passed in here, this is where you define
47
+ # how registers should be read (e.g. via JTAG) for this particular DUT
48
+ def read_register(reg, options = {})
49
+ <% if @root_class -%>
50
+ <% if @top_level -%>
51
+ Origen.log.error "A request was made to read register #{reg.name}, but the controller method has not been implemented yet!"
52
+ <% else-%>
53
+ # Pass this to the DUT by default, if you need a special implementation or if you wish
54
+ # to pass some meta-data to the DUT about how to handle registers from this sub-block
55
+ # then you can do so here
56
+ dut.read_register(reg, options)
57
+ <% end -%>
58
+ <% else-%>
59
+ # super means that the read register request will get passed onto the parent class's
60
+ # read_register method - i.e. the one defined in <%= @parent_class %>Controller.
61
+ # If you want to override that and add a specific implementation for this DUT type,
62
+ # then simply delete the super below and add the code you wish to handle the request.
63
+ super
64
+ <% end -%>
65
+ end
66
+
67
+ # All requests to write a register will be passed in here, this is where you define
68
+ # how registers should be written (e.g. via JTAG) for this particular DUT
69
+ def write_register(reg, options = {})
70
+ <% if @root_class -%>
71
+ <% if @top_level -%>
72
+ Origen.log.error "A request was made to write register #{reg.name}, but the controller method has not been implemented yet!"
73
+ <% else -%>
74
+ # Pass this to the DUT by default, if you need a special implementation or if you wish
75
+ # to pass some meta-data to the DUT about how to handle registers from this sub-block
76
+ # then you can do so here
77
+ dut.write_register(reg, options)
78
+ <% end -%>
79
+ <% else-%>
80
+ # super means that the write register request will get passed onto the parent class's
81
+ # write_register method - i.e. the one defined in <%= @parent_class %>Controller.
82
+ # If you want to override that and add a specific implementation for this DUT type,
83
+ # then simply delete the super below and add the code you wish to handle the request.
84
+ super
85
+ <% end -%>
86
+ end
87
+ end
@@ -0,0 +1,21 @@
1
+ # If this class gets too big you may want to split it up into modules, run the following
2
+ # command to add a module to it:
3
+ #
4
+ <% if @block -%>
5
+ # origen new module <%= Pathname.new(resource_path_to_blocks_dir(@resource_path)).relative_path_from(Origen.root) %>/model.rb my_module_name
6
+ <% else -%>
7
+ # origen new module <%= Pathname.new(resource_path_to_lib_file(@resource_path)).relative_path_from(Origen.root) %> my_module_name
8
+ <% end -%>
9
+ #
10
+ class <%= @namespaces.map { |n| camelcase(n[1]) }.join('::') %>::<%= camelcase(@name) %><%= @parent_class ? " < #{@parent_class}" : '' %>
11
+ <% if @root_class -%>
12
+ <% if @top_level -%>
13
+ include Origen::TopLevel
14
+ <% else -%>
15
+ include Origen::Model
16
+ <% end -%>
17
+
18
+ <% end -%>
19
+ def initialize(options = {})
20
+ end
21
+ end
@@ -0,0 +1,4 @@
1
+ module <%= @namespaces.map { |n| camelcase(n[1]) }.join('::') %>::<%= camelcase(@name) %>
2
+ # def my_method
3
+ # end
4
+ end
@@ -0,0 +1,19 @@
1
+ # ********************************************************************************
2
+ # Any parameters defined in this file be added to <%= @fullname %>
3
+ # and all of its derivatives (if any).
4
+ # ********************************************************************************
5
+
6
+ # For more examples see: https://origen-sdk.org/origen/guides/models/parameters/
7
+
8
+ # Example of how to define a default parameters set
9
+ # define_params :default do |params|
10
+ # params.tread = 40.nS
11
+ # params.tprog = 20.uS
12
+ # params.terase = 100.mS
13
+ # end
14
+
15
+ # Example of how to inherit and modify the defaults to create an alternative parameters set
16
+ # define_params :probe, inherit: :default do |params, parent|
17
+ # params.tprog = parent.tprog / 2
18
+ # params.terase = 20.mS
19
+ # end
@@ -0,0 +1,28 @@
1
+ # ********************************************************************************
2
+ # Any pins defined in this file will be added to <%= @fullname %>
3
+ # and all of its derivatives (if any).
4
+ # ********************************************************************************
5
+
6
+ # For more examples see: https://origen-sdk.org/origen/guides/models/pins/
7
+
8
+ # Example of how to import a pins file extracted by 'origen sim:build' and copied to your app's
9
+ # vendor/ directory (my_file_name will be the name of the file without the .rb extension)
10
+ # import 'my_file_name', dir: "#{Origen.root!}/vendor/wherever/i/like", namespace: nil
11
+
12
+ # Examples of how to add pins
13
+ # add_pin :tck, reset: :drive_hi, meta: { max_freq: 15.Mhz }
14
+ # add_pin :tdi, direction: :input
15
+ # add_pin :tdo, direction: :output
16
+ # add_pin :tms
17
+
18
+ # Examples of how to add sized pin groups
19
+ # add_pins :porta, size: 32
20
+ # add_pins :portb, size: 16, endian: :little
21
+
22
+ # Example of how to declare ad-hoc pin groups (the pins themselves must already have been added)
23
+ # add_pin_group :jtag, :tdi, :tdo, :tck, :tms
24
+ #
25
+ # Examples of how to create pin aliases
26
+ # add_pin_alias :old_name, :new_name
27
+ # add_pin_group_alias :old_name, :new_name
28
+ # add_pin_group_alias :data_byte0, :porta, pins: [7..0]
@@ -0,0 +1,20 @@
1
+ # ********************************************************************************
2
+ # Any registers defined in this file will be added to <%= @fullname %>
3
+ <% unless @nested -%>
4
+ # and all of its derivatives (if any).
5
+ <% end -%>
6
+ # ********************************************************************************
7
+
8
+ # For more examples see: https://origen-sdk.org/origen/guides/models/registers/
9
+
10
+ # Example of basic definition of a register at address 0x1000 with all bits R/W
11
+ # add_reg :data, 0x1000 # 32-bit by default
12
+ # add_reg :data, 0x1000, size: 16
13
+
14
+ # Example of a regular definition which defines individual bits
15
+ # reg :ctrl, 0x0024, size: 16 do |reg|
16
+ # reg.bit 7, :coco, access: :ro
17
+ # reg.bit 6, :aien
18
+ # reg.bit 5, :diff
19
+ # reg.bit 4..0, :adch, reset: 0x1F
20
+ # end
@@ -0,0 +1,24 @@
1
+ # ********************************************************************************
2
+ # Any sub-blocks defined in this file will be added to <%= @fullname %>
3
+ <% unless @nested -%>
4
+ # and all of its derivatives (if any).
5
+ <% end -%>
6
+ # ********************************************************************************
7
+
8
+ # If you want to add a nested sub-block to this block then run the following command,
9
+ # replacing my_sub_block_name with the name of your sub-block:
10
+ # origen new block <%= Pathname.new(resource_path_to_blocks_dir(@resource_path)).relative_path_from(Origen.root) %> my_sub_block_name
11
+ #
12
+ # If instead you want to add a primary sub-block (one which supports derivatives and
13
+ # inheritance then create one using the following command and then instantiate it
14
+ # manually below:
15
+ # origen new block my_sub_block_type/my_sub_block_name
16
+
17
+ # For more examples see: https://origen-sdk.org/origen/guides/models/defining/#Adding_Sub_Blocks
18
+
19
+ # Examples
20
+ # sub_block :nvm # An empty sub-block
21
+ # sub_block :nvm, base_address: 0x1000_0000 # How to define the sub-block's address
22
+ # sub_block :nvm, load_block: 'features/memory' # Add the definitions from the given block(s)
23
+ # sub_block :nvm, load_block: ['features/memory', 'features/testable']
24
+ # sub_block :nvm, class_name: 'MyApp::NVM::Flash2K' # Instantiate it as an instance of the given class
@@ -0,0 +1,24 @@
1
+ # ********************************************************************************
2
+ # Any timesets defined in this file will be added to <%= @fullname %>
3
+ # and all of its derivatives (if any).
4
+ # ********************************************************************************
5
+
6
+ # For more examples see: https://origen-sdk.org/origen/guides/pattern/timing/#Complex_Timing
7
+
8
+ # By default, all pins will drive for the whole period on drive cycles and strobe at 50%
9
+ # of the period on compare cycles, this can be overridden for all or specific pins as shown
10
+ # in the examples below.
11
+
12
+ # Example definition, defines an alternative default compare wave for all pins and specific
13
+ # drive timing for :tck
14
+ # timeset :func do |t|
15
+ # t.compare_wave do |w|
16
+ # w.compare :data, at: "period / 4"
17
+ # end
18
+ #
19
+ # t.drive_wave :tck do |w|
20
+ # w.drive :data, at: 0
21
+ # w.drive 0, at: 25
22
+ # w.dont_care at: "period - 10" # Just to show that dont_care can be used
23
+ # end
24
+ # end
@@ -3,6 +3,5 @@ module <%= Origen.app.namespace %>
3
3
  MINOR = <%= @version.minor %>
4
4
  BUGFIX = <%= @version.bugfix %>
5
5
  DEV = <%= @version.pre || "nil" %>
6
-
7
6
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
8
7
  end