origen 0.41.2 → 0.42.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e1571654b1fb8ce9f36cd1566c0a5b2a7869fb0e21993071eafbf229a1638067
4
- data.tar.gz: e7902193820b6e205ead59092809c1c8652561486dff0a6e65a23fe32b23960a
3
+ metadata.gz: b916938b9392e5b4be6121f06ee887c292813306e90a6d9418ecc48f3133bb4d
4
+ data.tar.gz: 706c9e176befbd2eca212cc6f95a55f3e0dfc61d7fa844007a5a507019b256a5
5
5
  SHA512:
6
- metadata.gz: 6538ba086f9417aeef6bbb4e509dde390c8197834853a6accec86e56e9c511e01b9daa332590c8a10f55f2555331c229b8a5b75d1ccf228107d28002e5c84a90
7
- data.tar.gz: 7e697e7e4b29f0fe7200c45f7f1771eaedc184ffc753c1ec9e279534be00dc20dd09f166308e9bdee0dd1c326fe36e19b6a5f04e3f2453cc48554e13f9e0091c
6
+ metadata.gz: 7395218ebd774335a39540fe27d19710269b94f2fb2d2d6746638f148d32e255f16d43d17ea72e533f988fd35e109a888ac519107386dadd93c950370e0c3153
7
+ data.tar.gz: 4fee8e8fc1083e90165283cb6e08cb8bafab60a41b2e202bf32d1a5712a39ec3ccf83fe0cba7540076832176586817dc9c42bb83d626a7c79ada5a4043155517
@@ -1,7 +1,7 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
- MINOR = 41
4
- BUGFIX = 2
3
+ MINOR = 42
4
+ BUGFIX = 0
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
@@ -65,7 +65,7 @@ module Origen
65
65
  puts 'The current target has not instantiated a tester and pattern generation cannot run.'
66
66
  puts 'Add something like this to your target file:'
67
67
  puts ''
68
- puts ' $tester = Origen::Tester::J750.new'
68
+ puts ' $tester = OrigenTesters::J750.new'
69
69
  puts ''
70
70
  exit 1
71
71
  end
@@ -1,6 +1,16 @@
1
1
  module Origen
2
2
  module Model
3
3
  module Exporter
4
+ # Export the model
5
+ #
6
+ # Options defaults:
7
+ # include_pins: true
8
+ # include_registers: true
9
+ # include_sub_blocks: true
10
+ # include_timestamp: true
11
+ # rm_rb_only: nil # delete only .rb files, default is rm -rf * Origen.root/vendor/lib/models/name
12
+ #
13
+ # Use the rm_rb_only option if the export dir is under revision control and the dir contains revision control metadata
4
14
  def export(name, options = {})
5
15
  options = {
6
16
  include_pins: true,
@@ -14,7 +24,13 @@ module Origen
14
24
  file = options[:file_path] || export_path(name, options)
15
25
  dir = options[:dir_path] || export_dir(options)
16
26
  path_to_file = Pathname.new(File.join(dir, file))
17
- FileUtils.rm_rf(path_to_file.sub_ext('').to_s) if File.exist?(path_to_file.sub_ext('').to_s)
27
+ if File.exist?(path_to_file.sub_ext('').to_s)
28
+ if options[:rm_rb_only]
29
+ Dir.glob(path_to_file.sub_ext('').to_s + '/**/*.rb').each { |f| FileUtils.rm_f(f) }
30
+ else
31
+ FileUtils.rm_rf(path_to_file.sub_ext('').to_s)
32
+ end
33
+ end
18
34
  FileUtils.rm_rf(path_to_file.to_s) if File.exist?(path_to_file.to_s)
19
35
  FileUtils.mkdir_p(path_to_file.dirname)
20
36
  File.open(path_to_file, 'w') do |f|
@@ -224,7 +240,7 @@ module Origen
224
240
  indent = ' ' * (options[:indent] || 0)
225
241
  file_path = File.join(Pathname.new(options[:file_path]).sub_ext(''), "#{id}.rb")
226
242
  dir_path = options[:dir_path]
227
- line = indent + "model.sub_block :#{id}, file: '#{file_path}', dir: '#{dir_path}', lazy: true"
243
+ line = indent + "model.sub_block :#{id}, file: '#{file_path}', dir: \"#{dir_path.gsub(Origen.root.to_s, '#{Origen.root!}')}\", lazy: true"
228
244
  unless block.base_address == 0
229
245
  line << ", base_address: #{block.base_address.to_hex}"
230
246
  end
@@ -148,7 +148,8 @@ module Origen
148
148
  # Returns true if the current user can checkin to the given repo (means has permission
149
149
  # to push in Git terms)
150
150
  def can_checkin?
151
- git('push --dry-run', verbose: false)
151
+ # dry run attempting to create a new remote branch named OrigenWritePermissionsTest
152
+ git('push --dry-run origin origin:refs/heads/OrigenWritePermissionsTest', verbose: false)
152
153
  true
153
154
  rescue
154
155
  false
@@ -17,7 +17,7 @@ module Origen
17
17
  # address API, but will accept any of these
18
18
  @reg_base_address = options.delete(:reg_base_address) ||
19
19
  options.delete(:base_address) || options.delete(:base) || 0
20
- if options[:_instance]
20
+ if options[:_instance] # to be deprecated as part of multi-instance removal below
21
21
  if @reg_base_address.is_a?(Array)
22
22
  @reg_base_address = @reg_base_address[options[:_instance]]
23
23
  elsif options[:base_address_step]
@@ -273,34 +273,40 @@ module Origen
273
273
 
274
274
  def sub_block(name, options = {})
275
275
  if i = options.delete(:instances)
276
- a = []
277
- options[:_instance] = i
278
- i.times do |j|
279
- o = options.dup
280
- o[:_instance] = j
281
- a << sub_block("#{name}#{j}", o)
282
- end
283
- define_singleton_method "#{name}s" do
284
- a
276
+ # permit creating multiple instances of a particular sub_block class
277
+ # can pass array for base_address, which will be processed above
278
+ Origen.deprecate 'instances: option to sub_block is deprecated, use sub_block_groups instead'
279
+ group_name = name =~ /s$/ ? name : "#{name}s" # take care if name already with 's' is passed
280
+ unless respond_to?(group_name)
281
+ sub_block_groups group_name do
282
+ i.times do |j|
283
+ o = options.dup
284
+ o[:_instance] = j
285
+ sub_block("#{name}#{j}", o)
286
+ end
287
+ end
285
288
  end
286
- a
287
289
  else
288
290
  block = Placeholder.new(self, name, options)
289
- if sub_blocks[name]
290
- # Allow additional attributes to be added to an existing sub-block if it hasn't
291
- # been instantiated yet. This is not supported yet for instantiated sub-blocks since
292
- # there are probably a lot more corner-cases to consider, and hopefully no one will
293
- # really need this anyway.
294
- if sub_blocks[name].is_a?(Placeholder)
295
- sub_blocks[name].add_attributes(options)
296
- else
297
- fail "You have already defined a sub-block named #{name} within class #{self.class}"
291
+ # Allow additional attributes to be added to an existing sub-block if it hasn't
292
+ # been instantiated yet. This is not supported yet for instantiated sub-blocks since
293
+ # there are probably a lot more corner-cases to consider, and hopefully no one will
294
+ # really need this anyway.
295
+ if sub_blocks[name] && !sub_blocks[name].is_a?(Placeholder)
296
+ fail "You have already defined a sub-block named #{name} within class #{self.class}"
297
+ end
298
+ unless respond_to?(name)
299
+ define_singleton_method name do
300
+ get_sub_block(name)
298
301
  end
302
+ end
303
+ if sub_blocks[name] && sub_blocks[name].is_a?(Placeholder)
304
+ sub_blocks[name].add_attributes(options)
299
305
  else
300
306
  sub_blocks[name] = block
301
307
  end
302
- define_singleton_method name do
303
- get_sub_block(name)
308
+ unless @current_group.nil? # a group is currently open, store sub_block id only
309
+ @current_group << name
304
310
  end
305
311
  if options.key?(:lazy)
306
312
  lazy = options[:lazy]
@@ -311,6 +317,53 @@ module Origen
311
317
  end
312
318
  end
313
319
 
320
+ # Create a group of associated sub_blocks under a group name
321
+ # permits each sub_block to be of a different class
322
+ # e.g.
323
+ # sub_block_group :my_ip_group do
324
+ # sub_block :ip0, class_name: 'IP0', base_address: 0x000000
325
+ # sub_block :ip1, class_name: 'IP1', base_address: 0x000200
326
+ # sub_block :ip2, class_name: 'IP2', base_address: 0x000400
327
+ # sub_block :ip3, class_name: 'IP3', base_address: 0x000600
328
+ # end
329
+ #
330
+ # creates an array referenced by method called 'my_ip_group'
331
+ # which contains the sub_blocks 'ip0', 'ip1', 'ip2', 'ip3'.
332
+ #
333
+ # Can also indicate a custom class container to hold these.
334
+ # This custom class container MUST support a '<<' method in
335
+ # order to add new sub_blocks to the container instance.
336
+ #
337
+ # e.g.
338
+ # sub_block_group :my_ip_group, class_name: 'MYGRP' do
339
+ # sub_block :ip0, class_name: 'IP0', base_address: 0x000000
340
+ # sub_block :ip1, class_name: 'IP1', base_address: 0x000200
341
+ # sub_block :ip2, class_name: 'IP2', base_address: 0x000400
342
+ # sub_block :ip3, class_name: 'IP3', base_address: 0x000600
343
+ # end
344
+ #
345
+ #
346
+ def sub_block_group(id, options = {})
347
+ @current_group = [] # open group
348
+ yield # any sub_block calls within this block will have their ID added to @current_group
349
+ my_group = @current_group.dup
350
+ define_singleton_method "#{id}" do
351
+ if options[:class_name]
352
+ b = Object.const_get(options[:class_name]).new
353
+ else
354
+ b = []
355
+ end
356
+ my_group.each do |group_id|
357
+ b << send(group_id)
358
+ end
359
+ b # return array inside new singleton method
360
+ end
361
+ @current_group = nil # close group
362
+ end
363
+ alias_method :sub_block_groups, :sub_block_group
364
+ alias_method :sub_blocks_groups, :sub_block_group
365
+ alias_method :sub_blocks_group, :sub_block_group
366
+
314
367
  def namespace
315
368
  self.class.to_s.sub(/::[^:]*$/, '')
316
369
  end
@@ -8,16 +8,16 @@ Gem::Specification.new do |s|
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 1.8.11".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Stephen McGinty".freeze]
11
- s.date = "2018-12-13"
11
+ s.date = "2019-01-22"
12
12
  s.email = ["stephen.f.mcginty@gmail.com".freeze]
13
13
  s.files = ["bin/boot.rb".freeze, "bin/fix_my_workspace".freeze, "config/application.rb".freeze, "config/boot.rb".freeze, "config/commands.rb".freeze, "config/shared_commands.rb".freeze, "config/version.rb".freeze, "lib/origen_app_generators.rb".freeze, "lib/origen_app_generators/application.rb".freeze, "lib/origen_app_generators/base.rb".freeze, "lib/origen_app_generators/empty_application.rb".freeze, "lib/origen_app_generators/empty_plugin.rb".freeze, "lib/origen_app_generators/new.rb".freeze, "lib/origen_app_generators/origen_infrastructure/app_generator_plugin.rb".freeze, "lib/origen_app_generators/plugin.rb".freeze, "lib/origen_app_generators/sub_block_parser.rb".freeze, "lib/origen_app_generators/test_engineering/stand_alone_application.rb".freeze, "lib/origen_app_generators/test_engineering/test_block.rb".freeze, "lib/tasks/app_generators.rake".freeze, "lib/tasks/new_app_tests.rake".freeze, "templates/app_generators".freeze, "templates/app_generators/application".freeze, "templates/app_generators/application/.gitignore".freeze, "templates/app_generators/application/.irbrc".freeze, "templates/app_generators/application/.rspec".freeze, "templates/app_generators/application/.travis.yml".freeze, "templates/app_generators/application/Gemfile".freeze, "templates/app_generators/application/Rakefile".freeze, "templates/app_generators/application/config".freeze, "templates/app_generators/application/config/application.rb".freeze, "templates/app_generators/application/config/boot.rb".freeze, "templates/app_generators/application/config/commands.rb".freeze, "templates/app_generators/application/config/maillist_dev.txt".freeze, "templates/app_generators/application/config/maillist_prod.txt".freeze, "templates/app_generators/application/config/version.rb".freeze, "templates/app_generators/application/doc".freeze, "templates/app_generators/application/doc/history".freeze, "templates/app_generators/application/dot_keep".freeze, "templates/app_generators/application/lib".freeze, "templates/app_generators/application/lib/app.rake".freeze, "templates/app_generators/application/lib/module.rb".freeze, "templates/app_generators/application/lib/top_level.rb".freeze, "templates/app_generators/application/origen_core_session".freeze, "templates/app_generators/application/spec".freeze, "templates/app_generators/application/spec/spec_helper.rb".freeze, "templates/app_generators/application/target".freeze, "templates/app_generators/application/target/debug.rb".freeze, "templates/app_generators/application/target/default.rb".freeze, "templates/app_generators/application/target/production.rb".freeze, "templates/app_generators/application/templates".freeze, "templates/app_generators/application/templates/web".freeze, "templates/app_generators/application/templates/web/index.md.erb".freeze, "templates/app_generators/application/templates/web/layouts".freeze, "templates/app_generators/application/templates/web/layouts/_basic.html.erb".freeze, "templates/app_generators/application/templates/web/partials".freeze, "templates/app_generators/application/templates/web/partials/_navbar.html.erb".freeze, "templates/app_generators/application/templates/web/release_notes.md.erb".freeze, "templates/app_generators/new".freeze, "templates/app_generators/new/generator.rb".freeze, "templates/app_generators/new/info.md.erb".freeze, "templates/app_generators/origen_infrastructure".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/config".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/config/load_generators.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/lib".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/lib/application.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/lib/base.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/lib/module.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/lib/plugin.rb".freeze, "templates/app_generators/plugin".freeze, "templates/app_generators/plugin/Gemfile".freeze, "templates/app_generators/plugin/Rakefile".freeze, "templates/app_generators/plugin/config".freeze, "templates/app_generators/plugin/config/boot.rb".freeze, "templates/app_generators/plugin/gemspec.rb".freeze, "templates/app_generators/plugin/lib".freeze, "templates/app_generators/plugin/lib/README".freeze, "templates/app_generators/plugin/lib_dev".freeze, "templates/app_generators/plugin/lib_dev/README".freeze, "templates/app_generators/plugin/templates".freeze, "templates/app_generators/plugin/templates/web".freeze, "templates/app_generators/plugin/templates/web/index.md.erb".freeze, "templates/app_generators/plugin/templates/web/partials".freeze, "templates/app_generators/plugin/templates/web/partials/_navbar_external.html.erb".freeze, "templates/app_generators/plugin/templates/web/partials/_navbar_internal.html.erb".freeze, "templates/app_generators/test_engineering".freeze, "templates/app_generators/test_engineering/stand_alone_application".freeze, "templates/app_generators/test_engineering/stand_alone_application/Gemfile".freeze, "templates/app_generators/test_engineering/stand_alone_application/environment".freeze, "templates/app_generators/test_engineering/stand_alone_application/environment/j750.rb".freeze, "templates/app_generators/test_engineering/stand_alone_application/environment/jlink.rb".freeze, "templates/app_generators/test_engineering/stand_alone_application/environment/uflex.rb".freeze, "templates/app_generators/test_engineering/stand_alone_application/environment/v93k.rb".freeze, "templates/app_generators/test_engineering/stand_alone_application/lib".freeze, "templates/app_generators/test_engineering/stand_alone_application/lib/ip_block.rb".freeze, "templates/app_generators/test_engineering/stand_alone_application/lib/ip_block_controller.rb".freeze, "templates/app_generators/test_engineering/stand_alone_application/lib/top_level.rb".freeze, "templates/app_generators/test_engineering/stand_alone_application/lib/top_level_controller.rb".freeze, "templates/app_generators/test_engineering/stand_alone_application/pattern".freeze, "templates/app_generators/test_engineering/stand_alone_application/pattern/example.rb".freeze, "templates/app_generators/test_engineering/stand_alone_application/target".freeze, "templates/app_generators/test_engineering/stand_alone_application/target/top_level.rb".freeze, "templates/app_generators/test_engineering/test_block".freeze, "templates/app_generators/test_engineering/test_block/environment".freeze, "templates/app_generators/test_engineering/test_block/environment/j750.rb".freeze, "templates/app_generators/test_engineering/test_block/environment/ultraflex.rb".freeze, "templates/app_generators/test_engineering/test_block/environment/v93k.rb".freeze, "templates/app_generators/test_engineering/test_block/lib".freeze, "templates/app_generators/test_engineering/test_block/lib/controller.rb".freeze, "templates/app_generators/test_engineering/test_block/lib/interface.rb".freeze, "templates/app_generators/test_engineering/test_block/lib/model.rb".freeze, "templates/app_generators/test_engineering/test_block/lib_dev".freeze, "templates/app_generators/test_engineering/test_block/lib_dev/dut.rb".freeze, "templates/app_generators/test_engineering/test_block/lib_dev/dut_controller.rb".freeze, "templates/app_generators/test_engineering/test_block/pattern".freeze, "templates/app_generators/test_engineering/test_block/pattern/example.rb".freeze, "templates/app_generators/test_engineering/test_block/program".freeze, "templates/app_generators/test_engineering/test_block/program/prb1.rb".freeze, "templates/app_generators/test_engineering/test_block/target".freeze, "templates/app_generators/test_engineering/test_block/target/default.rb".freeze]
14
14
  s.homepage = "http://origen-sdk.org/origen_app_generators".freeze
15
15
  s.licenses = ["MIT".freeze]
16
16
  s.required_ruby_version = Gem::Requirement.new(">= 1.9.3".freeze)
17
- s.rubygems_version = "2.7.7".freeze
17
+ s.rubygems_version = "2.7.6".freeze
18
18
  s.summary = "Origen application generators".freeze
19
19
 
20
- s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version
20
+ s.installed_by_version = "2.7.6" if s.respond_to? :installed_by_version
21
21
 
22
22
  if s.respond_to? :specification_version then
23
23
  s.specification_version = 4
@@ -69,7 +69,7 @@ module Origen
69
69
  model.add_virtual_pin :relay1
70
70
  model.add_virtual_pin :relay2, packages: { bga: {} }
71
71
 
72
- model.sub_block :block1, file: 'origen/export1/block1.rb', dir: '/home/origen/users/pderouen/origen/vendor/lib/models', lazy: true
72
+ model.sub_block :block1, file: 'origen/export1/block1.rb', dir: "#{Origen.root!}/vendor/lib/models", lazy: true
73
73
 
74
74
  end
75
75
  end
@@ -4,7 +4,7 @@ module Origen
4
4
  module Export1
5
5
  module Block1
6
6
  def self.extended(model)
7
- model.sub_block :x, file: 'origen/export1/block1/x.rb', dir: '/home/origen/users/pderouen/origen/vendor/lib/models', lazy: true, base_address: 0x40000000
7
+ model.sub_block :x, file: 'origen/export1/block1/x.rb', dir: "#{Origen.root!}/vendor/lib/models", lazy: true, base_address: 0x40000000
8
8
 
9
9
  end
10
10
  end
@@ -0,0 +1 @@
1
+ pretend metadata file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.41.2
4
+ version: 0.42.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-18 00:00:00.000000000 Z
11
+ date: 2019-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -731,6 +731,7 @@ files:
731
731
  - vendor/lib/models/origen/export1.rb
732
732
  - vendor/lib/models/origen/export1/block1.rb
733
733
  - vendor/lib/models/origen/export1/block1/x.rb
734
+ - vendor/lib/models/origen/non_origen_meta_data.md
734
735
  homepage: http://origen-sdk.org
735
736
  licenses:
736
737
  - MIT
@@ -751,7 +752,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
751
752
  version: 1.8.11
752
753
  requirements: []
753
754
  rubyforge_project:
754
- rubygems_version: 2.7.7
755
+ rubygems_version: 2.7.6
755
756
  signing_key:
756
757
  specification_version: 4
757
758
  summary: The Semiconductor Developer's Kit