origen 0.22.0 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c220c4b98134c25059399a9c5f8f9719ad39a6d0
4
- data.tar.gz: 1faed96ffe8651f6d49f8e3932a3ab17b0d28e38
3
+ metadata.gz: d127d3c6a39b412a8556608b10b6ec2ef9a1ccaa
4
+ data.tar.gz: fa1b288892a6654704aed6a79ae29cb7c4f3af83
5
5
  SHA512:
6
- metadata.gz: '01218847dde5ecd45712e55138007b7d2157e6390445f308759be1a0d53d2adbec7167394cbd4cc34efabcf674d42c43e08695140b91b582436fe2a557a1525b'
7
- data.tar.gz: 93747cc9c2559141f4c4d8cf3378a715a0874db7928093973eeb070c1a1354b62ddd6f15b7e91a5828794d03a1953ae8c47ea5426ef293176265040e0bcd9d8d
6
+ metadata.gz: edae522a13effe32a3fa24b6f28c85587cd108f24d63f7f3543221e5c656dc227e77500d632e25559e87fb76cf7166737a502aa7e2500601538d95cb07051564
7
+ data.tar.gz: 0431396fa522702e504b037a11aeec790cc7500d1853366e8be3e8e27a56f5642bd0bbf98b8f0b0c11050786831872a7253577e7d4de5cc534dd9cc68a307ef8
data/bin/origen CHANGED
@@ -178,7 +178,9 @@ rescue Exception => e
178
178
  # case the application code is responsible for printing a helpful error message.
179
179
  # This will intercept all other exits, e.g. via 'fail "Something has done wrong"', and split the stack
180
180
  # dump to separate all in-application references from Origen core/plugin references.
181
- unless e.is_a?(SystemExit)
181
+ if e.is_a?(SystemExit)
182
+ exit e.status
183
+ else
182
184
  puts
183
185
  if Origen.app_loaded?
184
186
  puts 'COMPLETE CALL STACK'
@@ -26,6 +26,14 @@ class OrigenCoreApplication < Origen::Application
26
26
  #:files => ["lib", "config/application.rb"],
27
27
  }
28
28
 
29
+ config.remotes = [
30
+ {
31
+ dir: "origen_app_generators",
32
+ rc_url: "https://github.com/Origen-SDK/origen_app_generators.git",
33
+ version: "1006fe8",
34
+ }
35
+ ]
36
+
29
37
  #config.lsf.project = "origen core"
30
38
 
31
39
  config.web_directory = "git@github.com:Origen-SDK/Origen-SDK.github.io.git/origen"
data/config/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
- MINOR = 22
3
+ MINOR = 23
4
4
  BUGFIX = 0
5
5
  DEV = nil
6
6
 
data/lib/c99/nvm.rb CHANGED
@@ -101,6 +101,10 @@ module C99
101
101
  bits 13..8, :upper, description: 'This is dreg3 bit upper'
102
102
  bit 7..0, :lower, writable: false, reset: 0x55, description: "This is dreg3 bit lower\nThis is dreg3 bit lower line 2"
103
103
  end
104
+
105
+ reg :dreg4, 0x1000, size: 8, description: "** Data Register 4 **\nThis is dreg4" do
106
+ bit 7..0, :busy, reset: 0x55, description: "**Busy Bits** - These do something super cool\n\n0 | Job0\n1 | Job1\n10 | Job2\n11 | Job3\n100 | Job4\n101 | Job5\n110 | Job6\n111 | Job7\n1000 | Job8\n1001 | Job9\n1010 | Job10\n1011 | Job11\n1100 | Job12\n1101 | Job13\n1110 | Job14\n1111 | Job15\n10000 | Job16\n10001 | Job17\n10010 | Job18"
107
+ end
104
108
  end
105
109
  end
106
110
  end
data/lib/origen.rb CHANGED
@@ -4,6 +4,10 @@ unless defined? RGen::ORIGENTRANSITION
4
4
  require 'English'
5
5
  require 'pathname'
6
6
  require 'pry'
7
+ # require these here to make required files consistent between global commands invoke globally and global commands
8
+ # invoked from an application workspace
9
+ require 'colored'
10
+ require 'fileutils'
7
11
  # Keep a note of the pwd at the time when Origen was first loaded, this is initially used
8
12
  # by the site_config lookup.
9
13
  $_origen_invocation_pwd ||= Pathname.pwd
@@ -587,12 +591,13 @@ unless defined? RGen::ORIGENTRANSITION
587
591
  # Use User.current to retrieve the current user, this is an internal API that will
588
592
  # be cleaned up (removed) in future
589
593
  # @api private
590
- def current_user
594
+ def current_user(options = {})
595
+ @current_user = nil if options[:refresh]
591
596
  if app_loaded? || in_app_workspace?
592
597
  return @switch_user unless @switch_user.nil?
593
- application.current_user
598
+ @current_user ||= application.current_user
594
599
  else
595
- User.new(User.current_user_id)
600
+ @current_user ||= User.new(User.current_user_id)
596
601
  end
597
602
  end
598
603
 
@@ -135,13 +135,14 @@ The following options are available:
135
135
  when 'new'
136
136
  _build_web_dir
137
137
  when 'compile'
138
- Origen.app.load_target!
139
138
  if options[:remote]
139
+ Origen.app.load_target!
140
140
  _require_web_directory
141
141
  _deployer.prepare!(options)
142
142
  # If the whole site has been requested that start from a clean slate
143
143
  _build_web_dir if ARGV.empty?
144
144
  else
145
+ Origen.app.load_target!(force_debug: true)
145
146
  Origen.set_development_mode
146
147
  end
147
148
  options[:files] = ARGV.dup
@@ -29,6 +29,40 @@ class Numeric
29
29
  result
30
30
  end
31
31
 
32
+ def as_units(units)
33
+ if self >= 1_000_000_000_000_000
34
+ "#{self / 1_000_000_000_000_000.0}P#{units}"
35
+ elsif self >= 1_000_000_000_000
36
+ "#{self / 1_000_000_000_000.0}T#{units}"
37
+ elsif self >= 1_000_000_000
38
+ "#{self / 1_000_000_000.0}G#{units}"
39
+ elsif self >= 1_000_000
40
+ "#{self / 1_000_000.0}M#{units}"
41
+ elsif self >= 1_000
42
+ "#{self / 1_000.0}k#{units}"
43
+ elsif self >= 1
44
+ "#{self}#{units}"
45
+ elsif self >= 1e-3
46
+ "#{self * 1_000}m#{units}"
47
+ elsif self >= 1e-6
48
+ "#{self * 1_000_000}u#{units}"
49
+ elsif self >= 1e-9
50
+ "#{self * 1_000_000_000}n#{units}"
51
+ elsif self >= 1e-12
52
+ "#{self * 1_000_000_000_000}p#{units}"
53
+ elsif self >= 1e-15
54
+ "#{self * 1_000_000_000_000_000}a#{units}"
55
+ else
56
+ "%.3e#{units}" % self
57
+ end
58
+ end
59
+
60
+ %w(Hz hz Ts ts bps sps ohm Ohm a A v V s S).each do |m|
61
+ define_method "as_#{m}" do
62
+ as_units(m)
63
+ end
64
+ end
65
+
32
66
  # Msps ==> Mega samples per second
33
67
 
34
68
  %w(GHz Ghz GTs Gts Gsps).each do |m|
@@ -507,8 +507,10 @@ module Origen
507
507
  end
508
508
  alias_method :has_reg, :has_reg?
509
509
 
510
- # Returns the register object matching the given name, or a hash of all registers,
511
- # associated with a feature,if no name is specified.
510
+ # Returns
511
+ # -the register object matching the given name
512
+ # -or a hash of all registes matching a given regular expression
513
+ # -or a hash of all registers, associated with a feature, if no name is specified.
512
514
  #
513
515
  # Can also be used to define a new register if a block is supplied in which case
514
516
  # it is equivalent to calling add_reg with a block.
@@ -520,6 +522,7 @@ module Origen
520
522
  # Example use cases:
521
523
  # reg(:reg2)
522
524
  # reg(:name => :reg2)
525
+ # reg('/reg2/')
523
526
  if !args.empty? && args.size == 1 && (args[0].class != Hash || (args[0].key?(:name) && args[0].size == 1))
524
527
  if args[0].class == Hash
525
528
  name = args[0][:name]
@@ -527,6 +530,9 @@ module Origen
527
530
  end
528
531
  if has_reg(name)
529
532
  return _registers[name]
533
+ elsif name =~ /\/(.+)\//
534
+ regex = Regexp.last_match(1)
535
+ return match_registers(regex)
530
536
  else
531
537
  if Origen.config.strict_errors
532
538
  puts ''
@@ -593,6 +599,15 @@ module Origen
593
599
 
594
600
  private
595
601
 
602
+ def match_registers(regex)
603
+ regs_to_return = RegCollection.new(self)
604
+ _registers.each do |k, v|
605
+ regs_to_return[k] = v if k.to_s.match(/#{regex}/)
606
+ end
607
+ regs_to_return
608
+ end
609
+ alias_method :regs_match, :match_registers
610
+
596
611
  def reg_missing_error(params)
597
612
  if Origen.config.strict_errors
598
613
  puts ''
@@ -225,10 +225,11 @@ module Origen
225
225
  end
226
226
 
227
227
  def bit_value_descriptions(_bitname = nil)
228
+ options = _bitname.is_a?(Hash) ? _bitname : {}
228
229
  if name == :unknown
229
230
  []
230
231
  else
231
- @reg.bit_value_descriptions(name)
232
+ @reg.bit_value_descriptions(name, options)
232
233
  end
233
234
  end
234
235
 
@@ -216,9 +216,7 @@ module Origen
216
216
  @remotes = {}
217
217
  top_level_remotes
218
218
  top_level_remotes.each do |remote|
219
- traverse_remotes(remote) do |remote|
220
- add_remote(remote)
221
- end
219
+ add_remote(remote)
222
220
  end
223
221
  # Add remotes from imports
224
222
  Origen.app.plugins.each do |plugin|
@@ -233,31 +231,10 @@ module Origen
233
231
  Origen.app.config.remotes #+ Origen.app.config.remotes_dev (there are no core remotes at this time)
234
232
  end
235
233
 
236
- # Walks down an import tree recursively yielding all nested imports, if
237
- # the imported application has not been populated yet then it will
238
- # not return any nested imports.
239
- #
240
- # This will also update the required origen version if a app
241
- # instance is encountered that requires a newer version than the current
242
- # version.
243
- def traverse_remotes(remote, &block)
244
- yield remote
245
- if remote_present?(remote)
246
- app = Origen.application_instance(origen_root_for(remote), reload: true)
247
- app.config.remotes.each do |remote|
248
- traverse_remotes(remote, &block)
249
- end
250
- end
251
- end
252
-
253
234
  def remotes
254
235
  @remotes ||= resolve_remotes
255
236
  end
256
237
 
257
- def remote_present?(remote)
258
- !!origen_root_for(remote, accept_missing: true)
259
- end
260
-
261
238
  # Conflicts are resolved by the following rules:
262
239
  # * A path reference always wins.
263
240
  # * If two different paths are found an errors will be raised.
@@ -316,6 +316,7 @@ module Origen
316
316
  # Screen out common redundant output
317
317
  unless line =~ /^Logging/ || line == '' ||
318
318
  line =~ /V(\d+\.\d+-\d+|\d.\d+)/ || # Screen out something like "V5.1-1205" or "V6R2010"
319
+ line =~ /^3DEXPERIENCER\d+x$/ || # Screen out something like '3DEXPERIENCER2016x'
319
320
  line.strip.empty?
320
321
  output << line.strip
321
322
  end
@@ -241,6 +241,7 @@ module Origen
241
241
  false
242
242
  end
243
243
  end
244
+ alias_method :has_regs?, :owns_registers?
244
245
 
245
246
  def sub_block(name, options = {})
246
247
  if i = options.delete(:instances)
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.22.0
4
+ version: 0.23.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: 2017-08-16 00:00:00.000000000 Z
11
+ date: 2017-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -603,7 +603,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
603
603
  version: 1.8.11
604
604
  requirements: []
605
605
  rubyforge_project:
606
- rubygems_version: 2.5.2
606
+ rubygems_version: 2.5.1
607
607
  signing_key:
608
608
  specification_version: 4
609
609
  summary: The Semiconductor Developer's Kit