origen 0.25.1 → 0.26.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 +4 -4
- data/config/version.rb +2 -2
- data/lib/origen.rb +2 -0
- data/lib/origen/chip_mode.rb +15 -3
- data/lib/origen/core_ext/string.rb +1 -1
- data/lib/origen/generator/compiler.rb +3 -0
- data/lib/origen/model.rb +2 -0
- data/lib/origen/parameters/set.rb +5 -0
- data/lib/origen/power_domains.rb +23 -0
- data/lib/origen/power_domains/power_domain.rb +209 -0
- data/lib/origen/power_domains/power_domains_collection.rb +53 -0
- data/lib/origen/specs/power_supply.rb +1 -0
- data/lib/origen/sub_blocks.rb +8 -0
- data/lib/origen/tests.rb +31 -0
- data/lib/origen/tests/test.rb +55 -0
- metadata +22 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: acdfacb78dd1389f6c42d6e77b8b311f44a424c0
|
4
|
+
data.tar.gz: 91c007f2243274a27202049375088256448d9b53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29c5b7ca4267fe59b675b2250805dfeaa361601ca64f34b36ac3c68244cff7600b9e37477dd645c02f53930672ad2daf78ef648021bcb8759a1ec2a6f0e68835
|
7
|
+
data.tar.gz: 77a5dc8760bcad34b0b356796ad722269dbe4396c3e888d8f3330ef768dcf168d7fde8ccfac28fb644f896f20e977527f05dc786adbfd80d791fd727f3c2a386
|
data/config/version.rb
CHANGED
data/lib/origen.rb
CHANGED
@@ -62,6 +62,8 @@ unless defined? RGen::ORIGENTRANSITION
|
|
62
62
|
autoload :LSF, 'origen/application/lsf'
|
63
63
|
autoload :LSFManager, 'origen/application/lsf_manager'
|
64
64
|
autoload :Fuses, 'origen/fuses'
|
65
|
+
autoload :Tests, 'origen/tests'
|
66
|
+
autoload :PowerDomains, 'origen/power_domains'
|
65
67
|
|
66
68
|
attr_reader :switch_user
|
67
69
|
|
data/lib/origen/chip_mode.rb
CHANGED
@@ -17,8 +17,9 @@ module Origen
|
|
17
17
|
alias_method :typ_voltage, :typical_voltage
|
18
18
|
|
19
19
|
def initialize(name, options = {})
|
20
|
-
@name = name
|
21
20
|
options.each { |k, v| instance_variable_set("@#{k}", v) }
|
21
|
+
(block.arity < 1 ? (instance_eval(&block)) : block.call(self)) if block_given?
|
22
|
+
@name = name
|
22
23
|
validate_args
|
23
24
|
end
|
24
25
|
|
@@ -65,12 +66,23 @@ module Origen
|
|
65
66
|
# Implements methods like:
|
66
67
|
#
|
67
68
|
# if $dut.mode.rambist?
|
68
|
-
def method_missing(method_name, *arguments)
|
69
|
+
def method_missing(method_name, *arguments, &block)
|
70
|
+
ivar = "@#{method_name.to_s.gsub('=', '')}"
|
71
|
+
ivar_sym = ":#{ivar}"
|
69
72
|
if method_name[-1] == '?'
|
70
73
|
id == method_name[0..-2].to_sym
|
74
|
+
elsif method_name[-1] == '='
|
75
|
+
define_singleton_method(method_name) do |val|
|
76
|
+
instance_variable_set(ivar, val)
|
77
|
+
end
|
78
|
+
elsif instance_variables.include? ivar_sym
|
79
|
+
instance_variable_get(ivar)
|
71
80
|
else
|
72
|
-
|
81
|
+
define_singleton_method(method_name) do
|
82
|
+
instance_variable_get(ivar)
|
83
|
+
end
|
73
84
|
end
|
85
|
+
send(method_name, *arguments, &block)
|
74
86
|
end
|
75
87
|
|
76
88
|
def to_s
|
@@ -56,7 +56,7 @@ class String
|
|
56
56
|
# cased symbol version of the string
|
57
57
|
def symbolize
|
58
58
|
@@symbolize ||= {}
|
59
|
-
@@symbolize[self] ||= gsub(/(
|
59
|
+
@@symbolize[self] ||= gsub(/(\?|\!|\-|\/|\\|\n|\s|\(|\)|\.|\[|\]|-|{|})/, '_').downcase.to_sym
|
60
60
|
end
|
61
61
|
|
62
62
|
# acronyms
|
@@ -134,6 +134,9 @@ module Origen
|
|
134
134
|
def run_erb(file, opts = {}, &block)
|
135
135
|
# Refresh the target to start all settings from scratch each time
|
136
136
|
# This is an easy way to reset all registered values
|
137
|
+
if opts[:preserve_target]
|
138
|
+
options[:preserve_target] = opts.delete(:preserve_target)
|
139
|
+
end
|
137
140
|
Origen.app.reload_target! unless options[:preserve_target]
|
138
141
|
# Record the current file, this can be used to resolve any relative path
|
139
142
|
# references in the file about to be compiled
|
data/lib/origen/model.rb
CHANGED
@@ -30,6 +30,11 @@ module Origen
|
|
30
30
|
end
|
31
31
|
alias_method :current_context, :context
|
32
32
|
|
33
|
+
def available_contexts
|
34
|
+
owner._parameter_sets.keys
|
35
|
+
end
|
36
|
+
alias_method :contexts, :available_contexts
|
37
|
+
|
33
38
|
def copy_defaults_from(set)
|
34
39
|
set.each do |name, val|
|
35
40
|
if val.is_a?(Set)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'colorize'
|
2
|
+
require_relative './power_domains/power_domain'
|
3
|
+
require_relative './power_domains/power_domains_collection'
|
4
|
+
module Origen
|
5
|
+
module PowerDomains
|
6
|
+
def power_domains(expr = nil)
|
7
|
+
@_power_domains ||= PowerDomainsCollection.new
|
8
|
+
if expr.nil?
|
9
|
+
@_power_domains
|
10
|
+
else
|
11
|
+
@_power_domains.recursive_find_by_key(expr)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def add_power_domain(id, options = {}, &block)
|
16
|
+
if power_domains.include?(id)
|
17
|
+
Origen.log.error("Cannot create power domain '#{id}', it already exists!")
|
18
|
+
fail
|
19
|
+
end
|
20
|
+
power_domains[id] = PowerDomain.new(id, options, &block)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,209 @@
|
|
1
|
+
module Origen
|
2
|
+
module PowerDomains
|
3
|
+
class PowerDomain
|
4
|
+
attr_accessor :id, :description, :voltage_range, :nominal_voltage, :setpoint
|
5
|
+
|
6
|
+
# Generic Power Domain Name
|
7
|
+
# This is the power supply that can be blocked off to multiple power supplies
|
8
|
+
# For example, Power Domain for DDR blocks could be GVDD, then the actual
|
9
|
+
# power supplies can be different for each DDR block.
|
10
|
+
# DDR1 --> G1VDD
|
11
|
+
# DDR2 --> G2VDD
|
12
|
+
attr_accessor :generic_name
|
13
|
+
|
14
|
+
# Actual Power Domain Name
|
15
|
+
attr_accessor :actual_name
|
16
|
+
|
17
|
+
# Allowed Voltage Points
|
18
|
+
# Some power supplies can be at different levels, e.g. 1.8V or 3.3V
|
19
|
+
# Could be a signal voltage or an array of voltages
|
20
|
+
attr_accessor :voltages
|
21
|
+
|
22
|
+
# Display Names
|
23
|
+
# Hash of display names
|
24
|
+
# display_name = {
|
25
|
+
# input: Input voltage name, e.g. V<sub>IN</sub>
|
26
|
+
# output: Output voltage name, e.g. V<sub>OUT</sub>
|
27
|
+
# default: Regular Voltage name, e.g. V<sub>DD</sub>
|
28
|
+
attr_accessor :display_name
|
29
|
+
|
30
|
+
def initialize(id, options = {}, &block)
|
31
|
+
@id = id
|
32
|
+
@description = ''
|
33
|
+
@display_name = {}
|
34
|
+
@id = @id.symbolize unless @id.is_a? Symbol
|
35
|
+
options.each { |k, v| instance_variable_set("@#{k}", v) }
|
36
|
+
(block.arity < 1 ? (instance_eval(&block)) : block.call(self)) if block_given?
|
37
|
+
fail unless attrs_ok?
|
38
|
+
end
|
39
|
+
|
40
|
+
def name
|
41
|
+
@id
|
42
|
+
end
|
43
|
+
|
44
|
+
# Sets setpoint equal to nominal_voltage
|
45
|
+
def setpoint_to_nominal
|
46
|
+
@setpoint = @nominal_voltage
|
47
|
+
end
|
48
|
+
|
49
|
+
# Returns an Array of all pins that reference the power domain
|
50
|
+
def pins
|
51
|
+
signal_pins + ground_pins + power_pins
|
52
|
+
end
|
53
|
+
|
54
|
+
# Returns an Array of signal pin IDs that match the power domain ID
|
55
|
+
def signal_pins
|
56
|
+
Origen.top_level.pins.select { |_pin_id, p| p.supply == id }.keys
|
57
|
+
end
|
58
|
+
|
59
|
+
# Returns an Array of ground pin IDs that match the power domain ID
|
60
|
+
def ground_pins
|
61
|
+
Origen.top_level.ground_pins.select { |_pin_id, p| p.supply == id }.keys
|
62
|
+
end
|
63
|
+
|
64
|
+
# Returns an Array of ground pin IDs that match the power domain ID
|
65
|
+
def power_pins
|
66
|
+
Origen.top_level.power_pins.select { |_pin_id, p| p.supply == id }.keys
|
67
|
+
end
|
68
|
+
|
69
|
+
# Checks for the existence of a signal pin that references the power domain
|
70
|
+
def has_signal_pin?(pin)
|
71
|
+
signal_pins.include?(pin) ? true : false
|
72
|
+
end
|
73
|
+
|
74
|
+
# Checks for the existence of a signal pin that references the power domain
|
75
|
+
def has_ground_pin?(pin)
|
76
|
+
ground_pins.include?(pin) ? true : false
|
77
|
+
end
|
78
|
+
|
79
|
+
# Checks for the existence of a signal pin that references the power domain
|
80
|
+
def has_power_pin?(pin)
|
81
|
+
power_pins.include?(pin) ? true : false
|
82
|
+
end
|
83
|
+
|
84
|
+
# Checks if a pin references the power domain, regardless of type
|
85
|
+
def has_pin?(pin)
|
86
|
+
pins.include? pin
|
87
|
+
end
|
88
|
+
|
89
|
+
# Checks for a pin type, returns nil if it is not found
|
90
|
+
def pin_type(pin)
|
91
|
+
if self.has_pin?(pin) == false
|
92
|
+
nil
|
93
|
+
else
|
94
|
+
[:signal, :ground, :power].each do |pintype|
|
95
|
+
return pintype if send("has_#{pintype}_pin?", pin)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# Nominal voltage
|
101
|
+
def nominal_voltage
|
102
|
+
@nominal_voltage
|
103
|
+
end
|
104
|
+
alias_method :nominal, :nominal_voltage
|
105
|
+
alias_method :nom, :nominal_voltage
|
106
|
+
|
107
|
+
# Current setpoint, defaults top nil on init
|
108
|
+
def setpoint
|
109
|
+
@setpoint
|
110
|
+
end
|
111
|
+
alias_method :curr_value, :setpoint
|
112
|
+
alias_method :value, :setpoint
|
113
|
+
|
114
|
+
# Acceptable voltage range
|
115
|
+
def voltage_range
|
116
|
+
@voltage_range
|
117
|
+
end
|
118
|
+
alias_method :range, :voltage_range
|
119
|
+
|
120
|
+
# Setter for setpoint
|
121
|
+
def setpoint=(val)
|
122
|
+
unless setpoint_ok?(val)
|
123
|
+
Origen.log.warn("Setpoint (#{setpoint_string(val)}) for power domain '#{name}' is not within the voltage range (#{voltage_range_string})!")
|
124
|
+
end
|
125
|
+
@setpoint = val
|
126
|
+
end
|
127
|
+
|
128
|
+
# Checks if the setpoint is valid
|
129
|
+
def setpoint_ok?(val = nil)
|
130
|
+
if val.nil?
|
131
|
+
voltage_range.include?(setpoint) ? true : false
|
132
|
+
else
|
133
|
+
voltage_range.include?(val) ? true : false
|
134
|
+
end
|
135
|
+
end
|
136
|
+
alias_method :value_ok?, :setpoint_ok?
|
137
|
+
alias_method :val_ok?, :setpoint_ok?
|
138
|
+
|
139
|
+
def display_names(default_name)
|
140
|
+
@display_name[:default] = default_name
|
141
|
+
@display_name[:input] = change_subscript('IN')
|
142
|
+
@display_name[:output] = change_subscript('OUT')
|
143
|
+
end
|
144
|
+
|
145
|
+
def method_missing(m, *args, &block)
|
146
|
+
ivar = "@#{m.to_s.gsub('=', '')}"
|
147
|
+
ivar_sym = ":#{ivar}"
|
148
|
+
if m.to_s =~ /=$/
|
149
|
+
define_singleton_method(m) do |val|
|
150
|
+
instance_variable_set(ivar, val)
|
151
|
+
end
|
152
|
+
elsif instance_variables.include? ivar_sym
|
153
|
+
instance_variable_get(ivar)
|
154
|
+
else
|
155
|
+
define_singleton_method(m) do
|
156
|
+
instance_variable_get(ivar)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
send(m, *args, &block)
|
160
|
+
end
|
161
|
+
|
162
|
+
private
|
163
|
+
|
164
|
+
def attrs_ok?
|
165
|
+
return_value = true
|
166
|
+
unless description.is_a? String
|
167
|
+
Origen.log.error("Power domain attribute 'description' must be a String!")
|
168
|
+
return_value = false
|
169
|
+
end
|
170
|
+
return_value = false unless voltages_ok?
|
171
|
+
return_value
|
172
|
+
end
|
173
|
+
|
174
|
+
def setpoint_string(val = nil)
|
175
|
+
if val.nil?
|
176
|
+
setpoint.as_units('V')
|
177
|
+
else
|
178
|
+
val.as_units('V')
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
def voltages_ok?
|
183
|
+
if nominal_voltage.nil?
|
184
|
+
false
|
185
|
+
elsif voltage_range.nil?
|
186
|
+
Origen.log.error("PPEKit: Missing voltage range for power domain '#{name}'!")
|
187
|
+
false
|
188
|
+
elsif voltage_range.is_a? Range
|
189
|
+
if voltage_range.include?(nominal_voltage)
|
190
|
+
true
|
191
|
+
else
|
192
|
+
Origen.log.error("PPEKit: Nominal voltage #{nominal_voltage} is not inbetween the voltage range #{voltage_range} for power domain '#{name}'!")
|
193
|
+
false
|
194
|
+
end
|
195
|
+
else
|
196
|
+
Origen.log.error("Power domain attribute 'voltage_range' must be a Range!")
|
197
|
+
return_value = false
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
def change_subscript(new_subscript)
|
202
|
+
tmp = @display_name[:default].dup
|
203
|
+
sub_input = tmp.at_css 'sub'
|
204
|
+
sub_input.content = new_subscript unless sub_input.nil?
|
205
|
+
tmp
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Origen
|
2
|
+
module PowerDomains
|
3
|
+
class PowerDomainsCollection < Hash
|
4
|
+
def inspect(options = {})
|
5
|
+
options = {
|
6
|
+
fancy_output: true
|
7
|
+
}.update(options)
|
8
|
+
headers = []
|
9
|
+
output_power_domain_list = []
|
10
|
+
column_widths = {}.tap do |colhash|
|
11
|
+
each do |domain_name, domain|
|
12
|
+
output_attr_list = {}
|
13
|
+
domain.instance_variables.each do |attr|
|
14
|
+
attr_getter = attr.to_s[/\@(\S+)/, 1].to_sym
|
15
|
+
attr_val = domain.send attr_getter
|
16
|
+
next unless [String, Numeric, Float, Integer, Symbol, Range].include? attr_val.class
|
17
|
+
headers << attr_getter unless headers.include?(attr_getter)
|
18
|
+
str = case attr_val
|
19
|
+
when Numeric
|
20
|
+
attr_val.as_V
|
21
|
+
when Range
|
22
|
+
start_voltage = attr_val.first
|
23
|
+
end_voltage = attr_val.last
|
24
|
+
"#{start_voltage.as_V}\.\.#{end_voltage.as_V}"
|
25
|
+
else
|
26
|
+
attr_val.to_s
|
27
|
+
end
|
28
|
+
curr_longest = [attr_getter, str].max_by(&:length).size + 2 # Add 3 for the whitespace
|
29
|
+
if colhash[attr].nil? || (colhash[attr] < curr_longest)
|
30
|
+
colhash[attr] = curr_longest
|
31
|
+
end
|
32
|
+
output_attr_list[attr_getter] = str
|
33
|
+
end
|
34
|
+
output_power_domain_list << output_attr_list
|
35
|
+
end
|
36
|
+
end
|
37
|
+
if options[:fancy_output]
|
38
|
+
puts '╔' + column_widths.values.each.map { |i| '═' * i }.join('╤') + '╗'
|
39
|
+
puts '║' + headers.each_with_index.map { |col_val, i| " #{col_val} ".ljust(column_widths.values[i]) }.join('│') + '║'
|
40
|
+
puts '╟' + column_widths.values.each.map { |i| '─' * i }.join('┼') + '╢'
|
41
|
+
puts output_power_domain_list.each.map { |attributes| '║' + headers.each_with_index.map { |value, attr_idx| " #{attributes[value]} ".ljust(column_widths.values[attr_idx]) }.join('│') + '║' }
|
42
|
+
puts '╚' + column_widths.values.each.map { |i| '═' * i }.join('╧') + '╝'
|
43
|
+
else
|
44
|
+
puts '.' + column_widths.values.each.map { |i| '-' * i }.join('-') + '.'
|
45
|
+
puts '|' + headers.each_with_index.map { |col_val, i| " #{col_val} ".ljust(column_widths.values[i]) }.join('|') + '|'
|
46
|
+
puts '|' + column_widths.values.each.map { |i| '-' * i }.join('+') + '|'
|
47
|
+
puts output_power_domain_list.each.map { |attributes| '|' + headers.each_with_index.map { |value, attr_idx| " #{attributes[value]} ".ljust(column_widths.values[attr_idx]) }.join('|') + '|' }
|
48
|
+
puts '`' + column_widths.values.each.map { |i| '-' * i }.join('-') + '\''
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/origen/sub_blocks.rb
CHANGED
@@ -243,6 +243,14 @@ module Origen
|
|
243
243
|
end
|
244
244
|
alias_method :has_regs?, :owns_registers?
|
245
245
|
|
246
|
+
def has_fuses?
|
247
|
+
fuses.empty? ? false : true
|
248
|
+
end
|
249
|
+
|
250
|
+
def has_tests?
|
251
|
+
tests.empty? ? false : true
|
252
|
+
end
|
253
|
+
|
246
254
|
def sub_block(name, options = {})
|
247
255
|
if i = options.delete(:instances)
|
248
256
|
a = []
|
data/lib/origen/tests.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative './tests/test'
|
2
|
+
module Origen
|
3
|
+
module Tests
|
4
|
+
def tests(expr = nil)
|
5
|
+
if expr.nil?
|
6
|
+
if @_tests.nil?
|
7
|
+
@_tests = {}
|
8
|
+
elsif @_tests.is_a? Hash
|
9
|
+
if @_tests.empty?
|
10
|
+
@_tests
|
11
|
+
else
|
12
|
+
@_tests.ids
|
13
|
+
end
|
14
|
+
else
|
15
|
+
@_tests = {}
|
16
|
+
end
|
17
|
+
else
|
18
|
+
@_tests.recursive_find_by_key(expr)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def add_test(id, options = {}, &block)
|
23
|
+
@_tests ||= {}
|
24
|
+
if @_tests.include?(id)
|
25
|
+
Origen.log.error("Cannot create test '#{id}', it already exists!")
|
26
|
+
fail
|
27
|
+
end
|
28
|
+
@_tests[id] = Test.new(id, options, &block)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Origen
|
2
|
+
module Tests
|
3
|
+
class Test
|
4
|
+
attr_accessor :id, :owner, :description, :conditions, :platforms
|
5
|
+
|
6
|
+
def initialize(id, options = {}, &block)
|
7
|
+
@id = id
|
8
|
+
@description = ''
|
9
|
+
@conditions, @platforms = [], []
|
10
|
+
@id = @id.symbolize unless @id.is_a? Symbol
|
11
|
+
options.each { |k, v| instance_variable_set("@#{k}", v) }
|
12
|
+
(block.arity < 1 ? (instance_eval(&block)) : block.call(self)) if block_given?
|
13
|
+
fail unless attrs_ok?
|
14
|
+
end
|
15
|
+
|
16
|
+
def name
|
17
|
+
@id
|
18
|
+
end
|
19
|
+
|
20
|
+
def method_missing(m, *args, &block)
|
21
|
+
ivar = "@#{m.to_s.gsub('=', '')}"
|
22
|
+
ivar_sym = ":#{ivar}"
|
23
|
+
if m.to_s =~ /=$/
|
24
|
+
define_singleton_method(m) do |val|
|
25
|
+
instance_variable_set(ivar, val)
|
26
|
+
end
|
27
|
+
elsif instance_variables.include? ivar_sym
|
28
|
+
instance_variable_get(ivar)
|
29
|
+
else
|
30
|
+
define_singleton_method(m) do
|
31
|
+
instance_variable_get(ivar)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
send(m, *args, &block)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def attrs_ok?
|
40
|
+
return_value = true
|
41
|
+
[:conditions, :platforms].each do |attr|
|
42
|
+
unless instance_variable_get("@#{attr}").is_a? Array
|
43
|
+
Origen.log.error("Test attribute '#{attr}' should be an Array!")
|
44
|
+
return_value = false
|
45
|
+
end
|
46
|
+
end
|
47
|
+
unless @description.is_a? String
|
48
|
+
Origen.log.error("Test attribute 'description' must be a String!")
|
49
|
+
return_value = false
|
50
|
+
end
|
51
|
+
return_value
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
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.
|
4
|
+
version: 0.26.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-
|
11
|
+
date: 2017-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -352,6 +352,20 @@ dependencies:
|
|
352
352
|
- - "~>"
|
353
353
|
- !ruby/object:Gem::Version
|
354
354
|
version: '2'
|
355
|
+
- !ruby/object:Gem::Dependency
|
356
|
+
name: colorize
|
357
|
+
requirement: !ruby/object:Gem::Requirement
|
358
|
+
requirements:
|
359
|
+
- - "~>"
|
360
|
+
- !ruby/object:Gem::Version
|
361
|
+
version: 0.8.1
|
362
|
+
type: :runtime
|
363
|
+
prerelease: false
|
364
|
+
version_requirements: !ruby/object:Gem::Requirement
|
365
|
+
requirements:
|
366
|
+
- - "~>"
|
367
|
+
- !ruby/object:Gem::Version
|
368
|
+
version: 0.8.1
|
355
369
|
description:
|
356
370
|
email:
|
357
371
|
- stephen.f.mcginty@gmail.com
|
@@ -513,6 +527,9 @@ files:
|
|
513
527
|
- lib/origen/ports/port.rb
|
514
528
|
- lib/origen/ports/port_collection.rb
|
515
529
|
- lib/origen/ports/section.rb
|
530
|
+
- lib/origen/power_domains.rb
|
531
|
+
- lib/origen/power_domains/power_domain.rb
|
532
|
+
- lib/origen/power_domains/power_domains_collection.rb
|
516
533
|
- lib/origen/registers.rb
|
517
534
|
- lib/origen/registers/bit.rb
|
518
535
|
- lib/origen/registers/bit_collection.rb
|
@@ -543,6 +560,8 @@ files:
|
|
543
560
|
- lib/origen/specs/spec_features.rb
|
544
561
|
- lib/origen/specs/version_history.rb
|
545
562
|
- lib/origen/sub_blocks.rb
|
563
|
+
- lib/origen/tests.rb
|
564
|
+
- lib/origen/tests/test.rb
|
546
565
|
- lib/origen/top_level.rb
|
547
566
|
- lib/origen/undefined.rb
|
548
567
|
- lib/origen/users.rb
|
@@ -604,7 +623,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
604
623
|
version: 1.8.11
|
605
624
|
requirements: []
|
606
625
|
rubyforge_project:
|
607
|
-
rubygems_version: 2.
|
626
|
+
rubygems_version: 2.6.7
|
608
627
|
signing_key:
|
609
628
|
specification_version: 4
|
610
629
|
summary: The Semiconductor Developer's Kit
|