origen_app_generators 1.1.4 → 2.2.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 (65) hide show
  1. checksums.yaml +5 -5
  2. data/bin/boot.rb +4 -2
  3. data/config/commands.rb +3 -3
  4. data/config/shared_commands.rb +17 -10
  5. data/config/version.rb +3 -4
  6. data/lib/origen_app_generators.rb +6 -4
  7. data/lib/origen_app_generators/application.rb +12 -12
  8. data/lib/origen_app_generators/base.rb +53 -9
  9. data/lib/origen_app_generators/new.rb +17 -9
  10. data/lib/{tasks/new_app_tests.rake → origen_app_generators/new_app_tests.rb} +1 -5
  11. data/lib/origen_app_generators/origen_infrastructure/app_generator_plugin.rb +6 -8
  12. data/lib/origen_app_generators/plugin.rb +4 -7
  13. data/lib/origen_app_generators/test_engineering/common.rb +29 -0
  14. data/lib/origen_app_generators/test_engineering/stand_alone_application.rb +9 -181
  15. data/lib/origen_app_generators/test_engineering/test_block.rb +4 -105
  16. data/templates/app_generators/application/Gemfile +17 -5
  17. data/templates/app_generators/application/{lib → app/blocks}/top_level.rb +1 -1
  18. data/templates/app_generators/application/app/lib/module.rb +6 -0
  19. data/templates/app_generators/application/{templates → app/templates}/web/index.md.erb +0 -0
  20. data/templates/app_generators/application/{templates → app/templates}/web/layouts/_basic.html.erb +0 -0
  21. data/templates/app_generators/application/{templates → app/templates}/web/partials/_navbar.html.erb +0 -0
  22. data/templates/app_generators/application/{templates → app/templates}/web/release_notes.md.erb +0 -0
  23. data/templates/app_generators/application/config/application.rb +51 -55
  24. data/templates/app_generators/origen_infrastructure/app_generator_plugin/{lib → app/lib}/application.rb +0 -0
  25. data/templates/app_generators/origen_infrastructure/app_generator_plugin/{lib → app/lib}/base.rb +0 -0
  26. data/templates/app_generators/origen_infrastructure/app_generator_plugin/{lib → app/lib}/module.rb +0 -0
  27. data/templates/app_generators/origen_infrastructure/app_generator_plugin/{lib → app/lib}/plugin.rb +0 -0
  28. data/templates/app_generators/origen_infrastructure/app_generator_plugin/config/load_generators.rb +1 -1
  29. data/templates/app_generators/plugin/Gemfile +13 -4
  30. data/templates/app_generators/plugin/{templates → app/templates}/web/index.md.erb +0 -0
  31. data/templates/app_generators/plugin/{templates → app/templates}/web/partials/_navbar_external.html.erb +0 -0
  32. data/templates/app_generators/plugin/{templates → app/templates}/web/partials/_navbar_internal.html.erb +0 -0
  33. data/templates/app_generators/plugin/gemspec.rb +4 -3
  34. data/templates/app_generators/test_engineering/{stand_alone_application/environment → environment}/j750.rb +0 -0
  35. data/templates/app_generators/test_engineering/{stand_alone_application/environment → environment}/uflex.rb +0 -0
  36. data/templates/app_generators/test_engineering/{stand_alone_application/environment → environment}/v93k.rb +0 -0
  37. data/templates/app_generators/test_engineering/stand_alone_application/.keep +0 -0
  38. data/templates/app_generators/test_engineering/test_block/.keep +0 -0
  39. metadata +25 -48
  40. data/bin/fix_my_workspace +0 -100
  41. data/lib/origen_app_generators/sub_block_parser.rb +0 -81
  42. data/lib/tasks/app_generators.rake +0 -6
  43. data/templates/app_generators/application/lib/app.rake +0 -6
  44. data/templates/app_generators/application/lib/module.rb +0 -22
  45. data/templates/app_generators/plugin/lib/README +0 -4
  46. data/templates/app_generators/plugin/lib_dev/README +0 -5
  47. data/templates/app_generators/test_engineering/stand_alone_application/Gemfile +0 -20
  48. data/templates/app_generators/test_engineering/stand_alone_application/environment/jlink.rb +0 -1
  49. data/templates/app_generators/test_engineering/stand_alone_application/lib/ip_block.rb +0 -23
  50. data/templates/app_generators/test_engineering/stand_alone_application/lib/ip_block_controller.rb +0 -5
  51. data/templates/app_generators/test_engineering/stand_alone_application/lib/top_level.rb +0 -33
  52. data/templates/app_generators/test_engineering/stand_alone_application/lib/top_level_controller.rb +0 -21
  53. data/templates/app_generators/test_engineering/stand_alone_application/pattern/example.rb +0 -4
  54. data/templates/app_generators/test_engineering/stand_alone_application/target/top_level.rb +0 -4
  55. data/templates/app_generators/test_engineering/test_block/environment/j750.rb +0 -2
  56. data/templates/app_generators/test_engineering/test_block/environment/ultraflex.rb +0 -2
  57. data/templates/app_generators/test_engineering/test_block/environment/v93k.rb +0 -2
  58. data/templates/app_generators/test_engineering/test_block/lib/controller.rb +0 -12
  59. data/templates/app_generators/test_engineering/test_block/lib/interface.rb +0 -21
  60. data/templates/app_generators/test_engineering/test_block/lib/model.rb +0 -18
  61. data/templates/app_generators/test_engineering/test_block/lib_dev/dut.rb +0 -27
  62. data/templates/app_generators/test_engineering/test_block/lib_dev/dut_controller.rb +0 -26
  63. data/templates/app_generators/test_engineering/test_block/pattern/example.rb +0 -5
  64. data/templates/app_generators/test_engineering/test_block/program/prb1.rb +0 -11
  65. data/templates/app_generators/test_engineering/test_block/target/default.rb +0 -2
@@ -1,4 +0,0 @@
1
- This directory should include all of the code that will be required by this plugin whenever
2
- it is used within a 3rd party application.
3
-
4
- Any code that is only for testing, should be placed in lib/<%= @name %>_dev instead.
@@ -1,5 +0,0 @@
1
- This directory should include any code related to testing, documentation, etc., but which
2
- will not be required whenever this plugin is actually used within a 3rd party application.
3
-
4
- Any code that will be required when used within a 3rd party application, should be placed
5
- in lib/<%= @name %> instead.
@@ -1,20 +0,0 @@
1
- source 'https://rubygems.org'
2
- <% if (@audience != :external) && Origen.site_config.gem_server -%>
3
- source '<%= Origen.site_config.gem_server %>'
4
- <% end -%>
5
-
6
- gem 'origen', '>= <%= @latest_origen_version %>'
7
-
8
- gem 'origen_testers'
9
-
10
- gem 'origen_debuggers'
11
-
12
- gem 'origen_doc_helpers'
13
-
14
- gem 'byebug'
15
-
16
- gem 'origen_updater'
17
-
18
- # Uncomment these if you want to use a visual debugger (e.g. Visual Studio Code) to debug your app
19
- #gem 'ruby-debug-ide'
20
- #gem 'debase'
@@ -1,23 +0,0 @@
1
- module <%= @namespace %>
2
- class <%= @options[:name] %>
3
- include Origen::Model
4
-
5
- def initialize(options = {})
6
- instantiate_registers(options)
7
- instantiate_sub_blocks(options)
8
- end
9
-
10
- def instantiate_registers(options = {})
11
- end
12
-
13
- def instantiate_sub_blocks(options = {})
14
- <% @options[:sub_blocks].each do |name, attrs| -%>
15
- <% if attrs[:instances] -%>
16
- sub_block :<%= name.underscore %>, instances: <%= attrs[:instances] %>, class_name: '<%= name.camelize %>'
17
- <% else -%>
18
- sub_block :<%= name.underscore %>, class_name: '<%= name.camelize %>'
19
- <% end -%>
20
- <% end -%>
21
- end
22
- end
23
- end
@@ -1,5 +0,0 @@
1
- module <%= @namespace %>
2
- class ATDController
3
- include Origen::Controller
4
- end
5
- end
@@ -1,33 +0,0 @@
1
- module <%= @namespace %>
2
- class <%= @options[:name] || 'TopLevel' %>
3
- include Origen::TopLevel
4
-
5
- def initialize(options = {})
6
- instantiate_pins(options)
7
- instantiate_registers(options)
8
- instantiate_sub_blocks(options)
9
- end
10
-
11
- def instantiate_pins(options = {})
12
- add_pin :tclk
13
- add_pin :tdi
14
- add_pin :tdo
15
- add_pin :tms
16
- add_pin :resetb
17
- add_pins :port_a, size: 8
18
- end
19
-
20
- def instantiate_registers(options = {})
21
- end
22
-
23
- def instantiate_sub_blocks(options = {})
24
- <% @options[:sub_blocks].each do |name, attrs| -%>
25
- <% if attrs[:instances] -%>
26
- sub_block :<%= name.underscore %>, instances: <%= attrs[:instances] %>, class_name: '<%= name.camelize %>'
27
- <% else -%>
28
- sub_block :<%= name.underscore %>, class_name: '<%= name.camelize %>'
29
- <% end -%>
30
- <% end -%>
31
- end
32
- end
33
- end
@@ -1,21 +0,0 @@
1
- module <%= @namespace %>
2
- class <%= @options[:name] || 'TopLevel' %>Controller
3
- include Origen::Controller
4
-
5
- def startup(options)
6
- pp 'Enter test mode' do
7
- tester.set_timeset('func_25mhz', 40) # Where 40 is the period in ns
8
- pin(:tclk).drive!(1)
9
- pin(:resetb).drive!(1)
10
- tester.wait time_in_us: 100
11
- end
12
- end
13
-
14
- def shutdown(options)
15
- pp 'Reset the device' do
16
- pin(:resetb).drive!(0)
17
- pin(:tclk).drive!(0)
18
- end
19
- end
20
- end
21
- end
@@ -1,4 +0,0 @@
1
- Pattern.create do
2
- # Call controller methods from here...
3
- # $dut.atd.convert
4
- end
@@ -1,4 +0,0 @@
1
- # The target file is run before *every* Origen operation and is used to instantiate
2
- # the runtime environment - usually this means instantiating a top-level SoC or
3
- # IP model.
4
- <%= @namespace %>::<%= @options[:name] || "TopLevel" %>.new # Instantiate a DUT instance
@@ -1,2 +0,0 @@
1
- # Instantiate a tester driver, this will be globally available as 'tester'
2
- OrigenTesters::J750.new
@@ -1,2 +0,0 @@
1
- # Instantiate a tester driver, this will be globally available as 'tester'
2
- OrigenTesters::UltraFLEX.new
@@ -1,2 +0,0 @@
1
- # Instantiate a tester driver, this will be globally available as 'tester'
2
- OrigenTesters::V93K.new
@@ -1,12 +0,0 @@
1
- module <%= @namespace %>
2
- class <%= @options[:name] %>Controller
3
- include Origen::Controller
4
-
5
- def do_something
6
- # The config register is defined in the corresponding model
7
- config.mode.write!(0x14)
8
- tester.wait(time_in_us: 100)
9
- config.secure.read!(0)
10
- end
11
- end
12
- end
@@ -1,21 +0,0 @@
1
- module <%= @namespace %>
2
- class Interface
3
- include OrigenTesters::ProgramGenerators
4
-
5
- # This will be called at the start of every flow or sub-flow (whenever Flow.create
6
- # is called).
7
- # Any options passed to Flow.create will be passed in here.
8
- # The options will contain top_level: true, whenever this is called at the start of
9
- # a new top-level flow.
10
- def startup(options = {})
11
- end
12
-
13
- # This will be called at the end of every flow or sub-flow (at the end of every
14
- # Flow.create block).
15
- # Any options passed to Flow.create will be passed in here.
16
- # The options will contain top_level: true, whenever this is called at the end of a
17
- # top-level flow file.
18
- def shutdown(options = {})
19
- end
20
- end
21
- end
@@ -1,18 +0,0 @@
1
- module <%= @namespace %>
2
- class <%= @options[:name] %>
3
- include Origen::Model
4
-
5
- def initialize(options = {})
6
- instantiate_registers(options)
7
- end
8
-
9
- def instantiate_registers(options)
10
- # Define your IP's registers here
11
- reg :config, 0x0, size: 32 do |reg|
12
- reg.bits 15..8, :mode
13
- reg.bit 1, :ext_clk, reset: 1
14
- reg.bit 0, :secure, access: :ro
15
- end
16
- end
17
- end
18
- end
@@ -1,27 +0,0 @@
1
- module <%= @namespace %>Dev
2
- # This is a dummy DUT class that should be used to test that your test module can
3
- # integrate into a top-level app
4
- class DUT
5
- include Origen::TopLevel
6
- include OrigenJTAG
7
- include OrigenARMDebug
8
-
9
- def initialize(options = {})
10
- instantiate_pins(options)
11
- instantiate_sub_blocks(options)
12
- end
13
-
14
- def instantiate_pins(options)
15
- add_pin :tclk
16
- add_pin :tdi
17
- add_pin :tdo
18
- add_pin :tms
19
- add_pin :resetb
20
- end
21
-
22
- def instantiate_sub_blocks(options)
23
- sub_block :arm_debug, class_name: 'OrigenARMDebug::DAP', mem_aps: { mem_ap: 0x0, mdmap: 0x0100_0000 }
24
- sub_block :<%= options[:sub_block_name] %>, class_name: '<%= @namespace %>::<%= options[:class_name] %>', base_address: 0x1000_0000
25
- end
26
- end
27
- end
@@ -1,26 +0,0 @@
1
- module <%= @namespace %>Dev
2
- # This is a dummy DUT controller that should be used to test that your test module can
3
- # integrate into a top-level app
4
- class DUTController
5
- def startup(options = {})
6
- tester.set_timeset('func_25', 40)
7
- ss 'Startup the SoC'
8
- pin(:resetb).drive!(0)
9
- 100.cycles
10
- pin(:resetb).dont_care
11
- end
12
-
13
- def shutdown(options = {})
14
- ss 'Shutdown the SoC'
15
- pin(:resetb).drive!(0)
16
- end
17
-
18
- def write_register(reg, options = {})
19
- arm_debug.mem_ap.write_register(reg, options)
20
- end
21
-
22
- def read_register(reg, options = {})
23
- arm_debug.mem_ap.read_register(reg, options)
24
- end
25
- end
26
- end
@@ -1,5 +0,0 @@
1
- Pattern.create do
2
- # Registers should never be written directly from here, always call API methods
3
- # that are defined by your controllers
4
- dut.<%= options[:sub_block_name] %>.do_something
5
- end
@@ -1,11 +0,0 @@
1
- Flow.create interface: '<%= @namespace %>::Interface' do
2
-
3
- if_job :p1 do
4
- test :test1, bin: 10, id: :t1
5
-
6
- test :test2, bin: 15, if_failed: :t1
7
- end
8
-
9
- pass 1, softbin: 55
10
-
11
- end
@@ -1,2 +0,0 @@
1
- # Instantiate a DUT instance, this will be globally available as 'dut'
2
- <%= @namespace %>Dev::DUT.new