origen 0.60.7 → 0.60.8

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 (127) hide show
  1. checksums.yaml +4 -4
  2. data/config/rubocop/easy.yml +4875 -308
  3. data/config/rubocop/strict.yml +4875 -308
  4. data/config/version.rb +1 -1
  5. data/lib/origen/application/configuration.rb +6 -3
  6. data/lib/origen/application/deployer.rb +4 -4
  7. data/lib/origen/application/environment.rb +4 -2
  8. data/lib/origen/application/lsf.rb +23 -4
  9. data/lib/origen/application/lsf_manager.rb +48 -52
  10. data/lib/origen/application/plugins.rb +7 -7
  11. data/lib/origen/application/release.rb +5 -3
  12. data/lib/origen/application/runner.rb +5 -6
  13. data/lib/origen/application/statistics.rb +1 -0
  14. data/lib/origen/application/target.rb +9 -6
  15. data/lib/origen/application/version_tracker.rb +4 -5
  16. data/lib/origen/application/workspace_manager.rb +5 -2
  17. data/lib/origen/application.rb +9 -9
  18. data/lib/origen/boot/api.rb +3 -0
  19. data/lib/origen/boot/app.rb +28 -30
  20. data/lib/origen/boot.rb +1 -0
  21. data/lib/origen/bugs.rb +2 -2
  22. data/lib/origen/chip_mode.rb +7 -4
  23. data/lib/origen/chip_package.rb +50 -53
  24. data/lib/origen/chips/chip.rb +8 -4
  25. data/lib/origen/chips.rb +16 -12
  26. data/lib/origen/client.rb +1 -0
  27. data/lib/origen/clocks/clock.rb +8 -7
  28. data/lib/origen/clocks/clocks_collection.rb +2 -1
  29. data/lib/origen/code_generators/actions.rb +1 -1
  30. data/lib/origen/code_generators/base.rb +1 -1
  31. data/lib/origen/code_generators.rb +3 -0
  32. data/lib/origen/commands/archive.rb +1 -1
  33. data/lib/origen/commands/compile.rb +2 -2
  34. data/lib/origen/commands/fetch.rb +1 -1
  35. data/lib/origen/commands/generate.rb +3 -3
  36. data/lib/origen/commands/interactive.rb +6 -7
  37. data/lib/origen/commands/lint.rb +1 -1
  38. data/lib/origen/commands/lsf.rb +2 -2
  39. data/lib/origen/commands/new.rb +1 -1
  40. data/lib/origen/commands/plugin.rb +2 -2
  41. data/lib/origen/commands/program.rb +3 -3
  42. data/lib/origen/commands/rc.rb +4 -4
  43. data/lib/origen/commands/save.rb +1 -1
  44. data/lib/origen/commands/time.rb +4 -6
  45. data/lib/origen/commands/web.rb +5 -2
  46. data/lib/origen/commands.rb +1 -1
  47. data/lib/origen/componentable.rb +1 -0
  48. data/lib/origen/controller.rb +11 -13
  49. data/lib/origen/core_ext/array.rb +2 -1
  50. data/lib/origen/core_ext/enumerable.rb +4 -2
  51. data/lib/origen/core_ext/hash.rb +5 -6
  52. data/lib/origen/core_ext/integer.rb +2 -4
  53. data/lib/origen/core_ext/object.rb +2 -2
  54. data/lib/origen/core_ext/option_parser/optparse.rb +1 -1
  55. data/lib/origen/core_ext/string.rb +8 -8
  56. data/lib/origen/database/key_value_store.rb +12 -14
  57. data/lib/origen/database/key_value_stores.rb +1 -0
  58. data/lib/origen/errata/hw_erratum.rb +1 -1
  59. data/lib/origen/errata.rb +7 -8
  60. data/lib/origen/features/feature.rb +1 -0
  61. data/lib/origen/features.rb +4 -6
  62. data/lib/origen/file_handler.rb +8 -7
  63. data/lib/origen/fuses/fuse_field.rb +2 -2
  64. data/lib/origen/generator/compiler.rb +2 -4
  65. data/lib/origen/generator/job.rb +3 -2
  66. data/lib/origen/generator/pattern.rb +3 -3
  67. data/lib/origen/generator/pattern_finder.rb +6 -5
  68. data/lib/origen/generator/pattern_sequence.rb +3 -0
  69. data/lib/origen/generator/renderer.rb +3 -4
  70. data/lib/origen/generator/resources.rb +1 -1
  71. data/lib/origen/generator/stage.rb +3 -0
  72. data/lib/origen/limits/limit.rb +14 -11
  73. data/lib/origen/limits/limit_set.rb +2 -1
  74. data/lib/origen/loader.rb +4 -2
  75. data/lib/origen/log.rb +3 -2
  76. data/lib/origen/memory.rb +1 -0
  77. data/lib/origen/model.rb +10 -4
  78. data/lib/origen/models.rb +2 -2
  79. data/lib/origen/netlist/list.rb +1 -0
  80. data/lib/origen/netlist.rb +5 -7
  81. data/lib/origen/org_file/interceptor.rb +1 -1
  82. data/lib/origen/org_file.rb +4 -1
  83. data/lib/origen/parameters/set.rb +1 -0
  84. data/lib/origen/parameters.rb +3 -1
  85. data/lib/origen/pins/pin.rb +18 -12
  86. data/lib/origen/pins/pin_bank.rb +3 -0
  87. data/lib/origen/pins/pin_clock.rb +3 -2
  88. data/lib/origen/pins/pin_collection.rb +3 -0
  89. data/lib/origen/pins/timing/wave.rb +5 -0
  90. data/lib/origen/pins.rb +7 -1
  91. data/lib/origen/ports.rb +1 -1
  92. data/lib/origen/power_domains/power_domain.rb +5 -2
  93. data/lib/origen/power_domains/power_domains_collection.rb +2 -1
  94. data/lib/origen/registers/bit.rb +21 -17
  95. data/lib/origen/registers/bit_collection.rb +15 -6
  96. data/lib/origen/registers/reg.rb +34 -28
  97. data/lib/origen/registers.rb +25 -24
  98. data/lib/origen/remote_manager.rb +3 -2
  99. data/lib/origen/revision_control/base.rb +1 -4
  100. data/lib/origen/revision_control/design_sync.rb +10 -10
  101. data/lib/origen/revision_control/git.rb +4 -2
  102. data/lib/origen/site_config/config.rb +3 -1
  103. data/lib/origen/site_config.rb +3 -0
  104. data/lib/origen/specs/checkers.rb +12 -8
  105. data/lib/origen/specs/doc_resource.rb +3 -4
  106. data/lib/origen/specs/spec.rb +5 -1
  107. data/lib/origen/specs/version_history.rb +1 -1
  108. data/lib/origen/specs.rb +52 -37
  109. data/lib/origen/sub_blocks.rb +20 -14
  110. data/lib/origen/top_level.rb +2 -1
  111. data/lib/origen/users/user.rb +4 -5
  112. data/lib/origen/utility/csv_data.rb +6 -4
  113. data/lib/origen/utility/diff.rb +9 -9
  114. data/lib/origen/utility/file_diff.rb +4 -0
  115. data/lib/origen/utility/input_capture.rb +6 -6
  116. data/lib/origen/utility/mailer.rb +8 -11
  117. data/lib/origen/utility/time_and_date.rb +1 -2
  118. data/lib/origen/utility.rb +2 -2
  119. data/lib/origen/value.rb +2 -1
  120. data/lib/origen/version_string.rb +33 -41
  121. data/lib/origen.rb +62 -64
  122. data/origen_app_generators/origen_app_generators.gemspec +1 -1
  123. metadata +9 -27
  124. data/config/rubocop/easy_disabled.yml +0 -275
  125. data/config/rubocop/easy_enabled.yml +0 -727
  126. data/config/rubocop/strict_disabled.yml +0 -251
  127. data/config/rubocop/strict_enabled.yml +0 -751
@@ -127,6 +127,7 @@ module Origen
127
127
  unless live_parameter.respond_to?(:is_a_live_parameter?) && live_parameter.is_a_live_parameter?
128
128
  fail 'Only live updating parameters should be bound, make sure you have not missed .live in the path to the parameter!'
129
129
  end
130
+
130
131
  @parameter_bound_bits ||= {}
131
132
  @parameter_bound_bits[bitname] = live_parameter
132
133
  end
@@ -381,7 +382,8 @@ module Origen
381
382
  # this register specifically however, use the meta method to get that.
382
383
  def default_reg_metadata
383
384
  Origen::Registers.default_reg_metadata.merge(
384
- Origen::Registers.reg_metadata[owner.class] || {})
385
+ Origen::Registers.reg_metadata[owner.class] || {}
386
+ )
385
387
  end
386
388
 
387
389
  def bit_value_descriptions(bitname, options = {})
@@ -479,6 +481,7 @@ module Origen
479
481
  unless File.exist?(define_file)
480
482
  return desc
481
483
  end
484
+
482
485
  File.readlines(define_file).each do |line|
483
486
  if line =~ /^\s*#(.*)/
484
487
  desc << Regexp.last_match[1].strip
@@ -527,7 +530,7 @@ module Origen
527
530
  bit_params[:res] = bit_params[:data] if bit_params[:data]
528
531
  bit_params[:res] = bit_params[:reset] if bit_params[:reset]
529
532
  if num_bits == 1
530
- add_bit(bit_id, position, bit_params) # and add the new one
533
+ add_bit(bit_id, position, bit_params) # and add the new one
531
534
  else
532
535
  add_bus(bit_id, position, num_bits, bit_params)
533
536
  end
@@ -975,14 +978,16 @@ module Origen
975
978
  alias_method :has_bit, :has_bit?
976
979
  alias_method :has_bits, :has_bit?
977
980
 
981
+ # rubocop:disable Layout/MultilineHashBraceLayout
982
+
978
983
  # Add a bit to the register, should only be called internally
979
984
  def add_bit(id, position, options = {}) # :nodoc:
980
- options = { data: @bits[position].data, # If undefined preserve any data/reset value that has
981
- res: @bits[position].data, # already been applied at reg level
985
+ options = { data: @bits[position].data, # If undefined preserve any data/reset value that has
986
+ res: @bits[position].data # already been applied at reg level
982
987
  }.merge(options)
983
988
 
984
989
  @lookup[id] = { pos: position, bits: 1, feature: options[:feature] }
985
- @bits.delete_at(position) # Remove the initial bit from this position
990
+ @bits.delete_at(position) # Remove the initial bit from this position
986
991
 
987
992
  @bits.insert(position, Bit.new(self, position, options))
988
993
  self
@@ -994,8 +999,8 @@ module Origen
994
999
  size.times do |n|
995
1000
  default_data |= @bits[position + n].data << n
996
1001
  end
997
- options = { data: default_data, # If undefined preserve any data/reset value that has
998
- res: default_data, # already been applied at reg level
1002
+ options = { data: default_data, # If undefined preserve any data/reset value that has
1003
+ res: default_data # already been applied at reg level
999
1004
  }.merge(options)
1000
1005
 
1001
1006
  @lookup[id] = { pos: position, bits: size }
@@ -1025,8 +1030,8 @@ module Origen
1025
1030
  size.times do |n|
1026
1031
  default_data |= @bits[position + n].data << n
1027
1032
  end
1028
- options = { data: default_data, # If undefined preserve any data/reset value that has
1029
- res: default_data, # already been applied at reg level
1033
+ options = { data: default_data, # If undefined preserve any data/reset value that has
1034
+ res: default_data # already been applied at reg level
1030
1035
  }.merge(options)
1031
1036
 
1032
1037
  @lookup[id] = [] if @lookup[id].nil?
@@ -1038,9 +1043,10 @@ module Origen
1038
1043
  @bits.delete_at(position + n)
1039
1044
  @bits.insert(position + n, Bit.new(self, position + n, bit_options))
1040
1045
  end
1041
- self
1046
+ self # rubocop:disable Lint/Void
1042
1047
  end
1043
1048
  end
1049
+ # rubocop:enable Layout/MultilineHashBraceLayout
1044
1050
 
1045
1051
  # Delete the bits in the collection from the register
1046
1052
  def delete_bit(collection)
@@ -1048,7 +1054,7 @@ module Origen
1048
1054
  @lookup.delete(name)
1049
1055
  end
1050
1056
  collection.each do |bit|
1051
- @bits.delete_at(bit.position) # Remove the bit
1057
+ @bits.delete_at(bit.position) # Remove the bit
1052
1058
  @bits.insert(bit.position, Bit.new(self, bit.position, writable: @init_as_writable))
1053
1059
  end
1054
1060
  self
@@ -1163,6 +1169,7 @@ module Origen
1163
1169
  end
1164
1170
 
1165
1171
  return nil unless @bits[number]
1172
+
1166
1173
  if (params == :default || !params) && @bits[number].enabled?
1167
1174
  @bits[number]
1168
1175
  elsif params == :none && !@bits[number].has_feature_constraint?
@@ -1174,12 +1181,13 @@ module Origen
1174
1181
  unless @bits[number].enabled_by_feature?(param)
1175
1182
  return nil
1176
1183
  end
1184
+
1177
1185
  @bits[number]
1178
1186
  end
1179
1187
  elsif @bits[number].enabled_by_feature?(params)
1180
1188
  @bits[number]
1181
1189
  else
1182
- return Bit.new(self, number, writable: false)
1190
+ Bit.new(self, number, writable: false)
1183
1191
  end
1184
1192
  end
1185
1193
 
@@ -1211,19 +1219,19 @@ module Origen
1211
1219
  return collection
1212
1220
  end
1213
1221
  end
1214
- return BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name][:pos])
1222
+ BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name][:pos])
1215
1223
  else
1216
- return []
1224
+ []
1217
1225
  end
1218
1226
 
1219
1227
  elsif split_group_reg == true # if this registers has split bits in its range
1220
1228
  if @lookup.is_a?(Hash) # && @lookup.include?(bit_name)
1221
1229
  collection = false
1222
- @lookup.each do |k, v| # k is the bitname, v is the hash of bit data
1230
+ @lookup.each do |k, v| # k is the bitname, v is the hash of bit data
1223
1231
  if k == bit_name
1224
1232
  collection ||= BitCollection.new(self, k)
1225
1233
  if v.is_a?(Array)
1226
- v.reverse_each do |pb| # loop each piece of bit group data
1234
+ v.reverse_each do |pb| # loop each piece of bit group data
1227
1235
  (pb[:bits]).times do |i|
1228
1236
  collection << @bits[pb[:pos] + i]
1229
1237
  end
@@ -1255,12 +1263,12 @@ module Origen
1255
1263
  end
1256
1264
  end
1257
1265
  if @lookup.is_a?(Hash) && @lookup[bit_name].is_a?(Array)
1258
- return BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name][0][:pos])
1266
+ BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name][0][:pos])
1259
1267
  else
1260
- return BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name[:pos]])
1268
+ BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name[:pos]])
1261
1269
  end
1262
1270
  else
1263
- return []
1271
+ []
1264
1272
  end
1265
1273
  end
1266
1274
  end
@@ -1274,9 +1282,7 @@ module Origen
1274
1282
  end
1275
1283
 
1276
1284
  if params
1277
- return params[:enabled_features] || params[:enabled_feature]
1278
- else
1279
- return nil
1285
+ params[:enabled_features] || params[:enabled_feature]
1280
1286
  end
1281
1287
  end
1282
1288
 
@@ -1401,7 +1407,7 @@ module Origen
1401
1407
  # Cleans an input value, in some cases it could be a register object, or an explicit value.
1402
1408
  # This will return an explicit value in either case.
1403
1409
  def self.clean_value(value) # :nodoc:
1404
- value = value.val if value.respond_to?('val') # Pull out the data value if a reg object has been passed in
1410
+ value = value.val if value.respond_to?('val') # Pull out the data value if a reg object has been passed in
1405
1411
  value
1406
1412
  end
1407
1413
 
@@ -1439,9 +1445,9 @@ module Origen
1439
1445
  return true
1440
1446
  end
1441
1447
  end
1442
- return false
1448
+ false
1443
1449
  else
1444
- return feature == name
1450
+ feature == name
1445
1451
  end
1446
1452
  end
1447
1453
  end
@@ -1483,7 +1489,7 @@ module Origen
1483
1489
  break # break if feature not found and return false
1484
1490
  end
1485
1491
  end # iterated through all features in array
1486
- return value
1492
+ value
1487
1493
  else # if feature.class != Array
1488
1494
  loop do
1489
1495
  if current_owner.respond_to?(:owner)
@@ -1506,10 +1512,10 @@ module Origen
1506
1512
  value = true
1507
1513
  end
1508
1514
  end
1509
- return value
1515
+ value
1510
1516
  end
1511
1517
  else
1512
- return true
1518
+ true
1513
1519
  end
1514
1520
  end
1515
1521
 
@@ -20,7 +20,7 @@ module Origen
20
20
  included do
21
21
  include Origen::ModelInitializer
22
22
  include Origen::SubBlocks
23
- include Origen::Callbacks # Required for global register reset
23
+ include Origen::Callbacks # Required for global register reset
24
24
 
25
25
  attr_accessor :owner
26
26
  attr_accessor :name
@@ -31,13 +31,11 @@ module Origen
31
31
  # not explicitly defined on this model it will be inherited from the parent
32
32
  # and will default to :lsb0 at the top-level
33
33
  def bit_order
34
- @bit_order ||= begin
35
- if parent
36
- parent.bit_order
37
- else
38
- :lsb0
39
- end
40
- end
34
+ @bit_order ||= if parent
35
+ parent.bit_order
36
+ else
37
+ :lsb0
38
+ end
41
39
  end
42
40
 
43
41
  def method_missing(method, *args, &block) # :nodoc:
@@ -189,7 +187,7 @@ module Origen
189
187
  break # break if feature not found and return false
190
188
  end
191
189
  end # iterated through all features in array
192
- return value
190
+ value
193
191
  else # if feature.class != Array
194
192
  loop do
195
193
  if current_owner.respond_to?(:owner)
@@ -212,10 +210,10 @@ module Origen
212
210
  value = true
213
211
  end
214
212
  end
215
- return value
213
+ value
216
214
  end
217
215
  else
218
- return true
216
+ true
219
217
  end
220
218
  end
221
219
 
@@ -230,9 +228,9 @@ module Origen
230
228
  return true
231
229
  end
232
230
  end
233
- return false
231
+ false
234
232
  else
235
- return feature == name
233
+ feature == name
236
234
  end
237
235
  end
238
236
  end
@@ -311,6 +309,7 @@ module Origen
311
309
  if address.is_a?(Hash)
312
310
  fail 'add_reg requires the address to be supplied as the 2nd argument, e.g. add_reg :my_reg, 0x1000'
313
311
  end
312
+
314
313
  size, bit_info = nil, size if size.is_a?(Hash)
315
314
  size ||= bit_info.delete(:size) || 32
316
315
  description = bit_info.delete(:description)
@@ -328,7 +327,7 @@ module Origen
328
327
  @max_reg_address ||= address
329
328
  # Must set an initial value, otherwise max_address_reg_size will be nil if a sub_block contains only
330
329
  # a single register.
331
- @max_address_reg_size = size unless @max_address_reg_size
330
+ @max_address_reg_size ||= size
332
331
  @min_reg_address = address if address < @min_reg_address
333
332
  if address > @max_reg_address
334
333
  @max_address_reg_size = size
@@ -409,11 +408,11 @@ module Origen
409
408
  @new_reg_attrs[name] = attrs
410
409
  else
411
410
  if @new_reg_attrs[name].is_a? Hash
412
- temparray = temparray.push(@new_reg_attrs[name])
411
+ temparray.push(@new_reg_attrs[name])
413
412
  else
414
413
  temparray = @new_reg_attrs[name]
415
414
  end
416
- temparray = temparray.push(attrs)
415
+ temparray.push(attrs)
417
416
  # added the sort so that the order the registers bits is described is not important
418
417
  @new_reg_attrs[name] = temparray.sort { |a, b| b[:pos] <=> a[:pos] }
419
418
 
@@ -449,6 +448,7 @@ module Origen
449
448
  # @api private
450
449
  def instantiate_reg(id, attrs)
451
450
  return _registers[id] unless _registers[id].is_a?(Origen::Registers::Placeholder)
451
+
452
452
  attributes = {
453
453
  define_file: attrs[:define_file],
454
454
  description: attrs[:description]
@@ -493,10 +493,10 @@ module Origen
493
493
  test_for_true_false: true
494
494
  }.update(params)
495
495
  if params.key?(:enabled_features) || params.key?(:enabled_feature)
496
- return !!get_registers(params).include?(name)
496
+ !!get_registers(params).include?(name)
497
497
  else
498
498
  params[:enabled_features] = :default
499
- return !!get_registers(params).include?(name)
499
+ !!get_registers(params).include?(name)
500
500
  end
501
501
  end
502
502
  alias_method :has_reg, :has_reg?
@@ -520,13 +520,14 @@ module Origen
520
520
  if !args.empty? && args.size == 1 && (args[0].class != Hash || (args[0].key?(:name) && args[0].size == 1))
521
521
  if args[0].class == Hash
522
522
  name = args[0][:name]
523
- else name = args.first
523
+ else
524
+ name = args.first
524
525
  end
525
526
  if has_reg(name)
526
- return _registers[name]
527
+ _registers[name]
527
528
  elsif name =~ /\/(.+)\//
528
529
  regex = Regexp.last_match(1)
529
- return match_registers(regex)
530
+ match_registers(regex)
530
531
  else
531
532
  if Origen.config.strict_errors
532
533
  puts ''
@@ -560,7 +561,7 @@ module Origen
560
561
  # Example use case:
561
562
  # reg(:enabled_features =>[:fac, fac2])
562
563
  elsif params.size == 1 && params.key?(:enabled_features)
563
- return get_registers(enabled_features: params[:enabled_features])
564
+ get_registers(enabled_features: params[:enabled_features])
564
565
  end
565
566
 
566
567
  # Example use case:
@@ -578,9 +579,9 @@ module Origen
578
579
  end
579
580
  elsif args.empty?
580
581
  if _registers.empty?
581
- return _registers
582
+ _registers
582
583
  else
583
- return get_registers(enabled_features: :default)
584
+ get_registers(enabled_features: :default)
584
585
  end
585
586
  else
586
587
  if Origen.config.strict_errors
@@ -57,6 +57,7 @@ module Origen
57
57
  if remote[:path]
58
58
  fail "The following remote is defined as a path, but that is not allowed in production: #{remote}"
59
59
  end
60
+
60
61
  version = Origen::VersionString.new(remote[:version])
61
62
  unless version.valid?
62
63
  fail "The following remote version is not in a valid format: #{remote}"
@@ -269,7 +270,7 @@ module Origen
269
270
  end
270
271
 
271
272
  def top_level_remotes
272
- Origen.app.config.remotes #+ Origen.app.config.remotes_dev (there are no core remotes at this time)
273
+ Origen.app.config.remotes #+ Origen.app.config.remotes_dev (there are no core remotes at this time)
273
274
  end
274
275
 
275
276
  def remotes
@@ -353,7 +354,7 @@ module Origen
353
354
  f.write tag
354
355
  end
355
356
  end
356
- rescue Origen::GitError, Origen::DesignSyncError, Origen::PerforceError => e
357
+ rescue Origen::GitError, Origen::DesignSyncError, Origen::PerforceError => e
357
358
  # If Git failed in the remote, its usually easy to see what the problem is, but now *where* it is.
358
359
  # This will prepend the failing remote along with the error from the revision control system,
359
360
  # then rethrow the error
@@ -19,14 +19,13 @@ module Origen
19
19
  # Method to use by Origen::RemoteManager to handle fetching a remote file
20
20
  attr_reader :remotes_method
21
21
 
22
- # rubocop:disable Lint/UnusedMethodArgument
23
-
24
22
  # All revision control instances represent a remote server mapping
25
23
  # to a local directory, :remote and :local options are required
26
24
  def initialize(options = {})
27
25
  unless options[:remote] && options[:local]
28
26
  fail ':remote and :local options must be supplied when instantiating a new RevisionControl object'
29
27
  end
28
+
30
29
  @remote = Pathname.new(options[:remote])
31
30
  @local = Pathname.new(options[:local]).expand_path
32
31
  @remotes_method = :checkout
@@ -207,8 +206,6 @@ module Origen
207
206
  end
208
207
  alias_method :subversion?, :svn?
209
208
 
210
- # rubocop:enable Lint/UnusedMethodArgument
211
-
212
209
  private
213
210
 
214
211
  def clean_path(path = nil, options = {})
@@ -24,6 +24,7 @@ module Origen
24
24
  fail "Directory does not exist: #{dir}" unless dir.exist?
25
25
  fail "Only directories are supported by remote_check_in, this is not a directory: #{dir}" unless dir.directory?
26
26
  fail 'No vault option supplied to remote_check_in!' unless options[:vault]
27
+
27
28
  scratch = Pathname.new("#{Origen.app.workspace_manager.imports_directory}/design_sync/scratch")
28
29
  FileUtils.rm_rf(scratch) if scratch.exist?
29
30
  FileUtils.mkdir_p(scratch)
@@ -77,6 +78,7 @@ module Origen
77
78
  dir = Pathname.new(dir)
78
79
  fail "Directory does not exist: #{dir}" unless dir.exist?
79
80
  fail "Only directories are supported by remove_dot_syncs, this is not a directory: #{dir}" unless dir.directory?
81
+
80
82
  Dir.glob("#{dir}/**/.SYNC").sort.each do |dot_sync|
81
83
  FileUtils.rm_rf(dot_sync)
82
84
  end
@@ -180,10 +182,10 @@ module Origen
180
182
 
181
183
  files = dssc(cmd, options).reject do |item|
182
184
  item.strip.empty? ||
183
- item =~ /^(Name|Directory|---)/
185
+ item =~ /^(Name|Directory|---)/
184
186
  end
185
187
  files.map! do |file|
186
- file.strip! # Strip off any whitespace from all objects
188
+ file.strip! # Strip off any whitespace from all objects
187
189
  file.sub!(/^#{full_path_prefix}/, '')
188
190
  file.sub('|', ':')
189
191
  file.sub!(/^/, "#{paths.first}/")
@@ -202,7 +204,7 @@ module Origen
202
204
  item =~ /^(Name|Directory|---)/ || item.strip.empty?
203
205
  end
204
206
  files.map! do |file|
205
- file.strip! # Strip off any whitespace from all objects
207
+ file.strip! # Strip off any whitespace from all objects
206
208
  file.sub!(/^#{full_path_prefix}/, '')
207
209
  file.sub('|', ':')
208
210
  end
@@ -276,13 +278,11 @@ module Origen
276
278
  private
277
279
 
278
280
  def full_path_prefix
279
- @full_path_prefix ||= begin
280
- if Origen.running_on_windows?
281
- 'file:///'
282
- else
283
- 'file://'
284
- end
285
- end
281
+ @full_path_prefix ||= if Origen.running_on_windows?
282
+ 'file:///'
283
+ else
284
+ 'file://'
285
+ end
286
286
  end
287
287
 
288
288
  def initialize_local_dir(options = {})
@@ -66,6 +66,7 @@ module Origen
66
66
  if paths.size > 1 || paths.first != local.to_s
67
67
  fail 'The Git driver does not support partial merge checkout, it has to be the whole workspace'
68
68
  end
69
+
69
70
  git 'reset HEAD'
70
71
  res = git 'stash', options
71
72
  stashed = !res.any? { |l| l =~ /^No local changes to save/ }
@@ -122,11 +123,11 @@ module Origen
122
123
  if options[:comment] && !options[:comment].strip.empty?
123
124
  cmd += " -m \"#{options[:comment].strip}\""
124
125
  else
125
- cmd += " -m \"No comment!\""
126
+ cmd += ' -m "No comment!"'
126
127
  end
127
128
  if options[:author]
128
129
  if options[:author].respond_to?(:name_and_email)
129
- author = options[:author].name_and_email
130
+ author = options[:author].name_and_email
130
131
  else
131
132
  author = "#{options[:author]} <>"
132
133
  end
@@ -346,6 +347,7 @@ module Origen
346
347
 
347
348
  def initialize_local_dir(options = {})
348
349
  return if options[:build_method] == :clone
350
+
349
351
  super
350
352
  unless initialized?(options)
351
353
  Origen.log.debug "Initializing Git workspace at #{local}"
@@ -86,7 +86,6 @@ module Origen
86
86
  File.open(cached_file, 'w+') do |f|
87
87
  f.write(text)
88
88
  end
89
-
90
89
  rescue SocketError => e
91
90
  puts red("Origen: Site Config: Unable to connect to #{path}")
92
91
  puts red('Origen: Site Config: Failed to retrieve centralized site config!')
@@ -125,6 +124,8 @@ module Origen
125
124
  ERB.new(File.read(erb), 0, '%<>')
126
125
  end
127
126
 
127
+ # YAML.safe_load is prefered
128
+ # rubocop:disable Security/YAMLLoad
128
129
  if centralized?
129
130
  if !cached?
130
131
  if fetch
@@ -147,6 +148,7 @@ module Origen
147
148
  @values = (YAML.load_file(path) || {})
148
149
  end
149
150
  end
151
+ # rubocop:enable Security/YAMLLoad
150
152
 
151
153
  unless @values.is_a?(Hash)
152
154
  puts red("Origen: Site Config: The config at #{path} was not parsed as a Hash, but as a #{@values.class}")
@@ -243,11 +243,14 @@ module Origen
243
243
  ENV.key?(val)
244
244
  end
245
245
 
246
+ # rubocop:disable Lint/DuplicateMethods
247
+
246
248
  def env(val)
247
249
  if env_contains?(val)
248
250
  ENV[val]
249
251
  end
250
252
  end
253
+ # rubocop:enable Lint/DuplicateMethods
251
254
 
252
255
  def inspect_variable(*vars)
253
256
  vars.each do |var|
@@ -5,6 +5,7 @@ module Origen
5
5
  def name_audit(name)
6
6
  return name if name.nil?
7
7
  return nil unless name.is_a?(Symbol) || name.is_a?(String)
8
+
8
9
  if name == :inspect
9
10
  Origen.log.debug ':inspect is a reserved spec name'
10
11
  return nil
@@ -28,6 +29,7 @@ module Origen
28
29
  if (@min.exp.to_s.include? '/') || (@max.exp.to_s.include? '/')
29
30
  return status
30
31
  end
32
+
31
33
  if @min.exp.nil? ^ @max.exp.nil?
32
34
  @limit_type = :single_sided
33
35
  if @typ.exp
@@ -72,6 +74,7 @@ module Origen
72
74
  def evaluate_limit(limit)
73
75
  return limit if limit.is_a?(Numeric)
74
76
  return nil if limit.nil?
77
+
75
78
  if limit.is_a? Symbol
76
79
  limit = ':' + limit.to_s
77
80
  else
@@ -129,18 +132,19 @@ module Origen
129
132
  begin
130
133
  result = eval(limit)
131
134
  return result.round(4) if result.is_a? Numeric
132
- rescue ::SyntaxError, ::NameError, ::TypeError
133
- Origen.log.debug "Limit '#{limit}' had to be rescued, storing it as a #{limit.class}"
134
- if limit.is_a? Symbol
135
- return limit
136
- else
137
- return "#{limit}"
138
- end
135
+ rescue ::SyntaxError, ::NameError, ::TypeError
136
+ Origen.log.debug "Limit '#{limit}' had to be rescued, storing it as a #{limit.class}"
137
+ if limit.is_a? Symbol
138
+ limit
139
+ else
140
+ "#{limit}"
141
+ end
139
142
  end
140
143
  else
141
- return result
144
+ result
142
145
  end
143
146
  end
147
+ # rubocop:enable Style/RescueModifier:
144
148
  end
145
149
  end
146
150
  end
@@ -62,9 +62,8 @@ module Origen
62
62
  tmp['audience'] = @audience unless @audience.nil?
63
63
  doc_resource_ml = Nokogiri::XML::Builder.new do |xml|
64
64
  xml.doc_resource(tmp.each do |t, d|
65
- "#{t}=\"#{d}\""
66
- end
67
- ) do
65
+ "#{t}=\"#{d}\"" # rubocop:disable Lint/Void
66
+ end) do
68
67
  unless @table_title.nil? && @note_refs.size == 0 && @exhibit_refs.size == 0
69
68
  unless @note_refs.first.to_s.size == 0
70
69
  unless @exhibit_refs.first.to_s.size == 0
@@ -98,7 +97,7 @@ module Origen
98
97
  end # unless @exhibit_refs.size == 0
99
98
  end # xml.title.done
100
99
  end # unless @exhibit_refs.to_s.size == 0
101
- end # unless @note_refs.to_s.size == 0
100
+ end # unless @note_refs.to_s.size == 0
102
101
  end # unless @table_title.nil? && @note_refs.size == 0 && @exhibit_refs.size == 0
103
102
  unless @before_table.nil? && @after_table.nil?
104
103
  xml.paragraphs do
@@ -83,6 +83,7 @@ module Origen
83
83
  def initialize(name, type, mode, owner_name, &block)
84
84
  @name = name_audit(name)
85
85
  fail 'Specification names must be of types Symbol or String and cannot start with a number' if @name.nil?
86
+
86
87
  @type = type
87
88
  @sub_type = nil # not necessary to be able to find a unique spec, but required for some specs
88
89
  @mode = mode
@@ -98,6 +99,7 @@ module Origen
98
99
  @guardband = nil
99
100
  (block.arity < 1 ? (instance_eval(&block)) : block.call(self)) if block_given?
100
101
  fail "Spec type must be one of #{TYPES.join(', ')}" unless TYPES.include? type
102
+
101
103
  @min = Limit.new(@min)
102
104
  @max = Limit.new(@max)
103
105
  @typ = Limit.new(@typ)
@@ -206,6 +208,7 @@ module Origen
206
208
  instance_variables.each do |ivar|
207
209
  ivar_sym = ivar.to_s.gsub('@', '').to_sym
208
210
  next if ivar_sym == :notes # temporarily disable until notes diff method written
211
+
209
212
  ivar_str = ivar.to_s.gsub('@', '')
210
213
  if compare_spec.respond_to? ivar_sym
211
214
  # Check if the instance variable is a Limit and if so then find
@@ -261,6 +264,7 @@ module Origen
261
264
  # Returns a Note object from the notes hash
262
265
  def notes(id = nil)
263
266
  return nil if @notes.nil?
267
+
264
268
  @notes.filter(id)
265
269
  end
266
270
 
@@ -310,7 +314,7 @@ module Origen
310
314
  name_set += 4 unless @type.nil?
311
315
  name_set += 2 unless @sub_type.nil?
312
316
  unless @mode.nil?
313
- unless (@mode.to_s.include? 'local') || (@mode.to_s.include? 'global')
317
+ unless (@mode.to_s.include? 'local') || (@mode.to_s.include? 'global')
314
318
  name_set += 1
315
319
  end
316
320
  end
@@ -4,7 +4,7 @@ module Origen
4
4
  class Version_History
5
5
  attr_accessor :label, :date, :author, :changes, :external_changes_internal
6
6
 
7
- def initialize(date, author, changes, label = nil, external_changes_internal = nil)
7
+ def initialize(date, author, changes, label = nil, external_changes_internal = nil)
8
8
  @date = date
9
9
  @author = author
10
10
  @changes = changes