rggen-default-register-map 0.17.0 → 0.18.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/lib/rggen/default_register_map.rb +2 -2
- data/lib/rggen/default_register_map/bit_field/bit_assignment.rb +31 -7
- data/lib/rggen/default_register_map/bit_field/type/{rw.rb → rw_w1.rb} +1 -1
- data/lib/rggen/default_register_map/bit_field/type/{wo.rb → wo_wo1.rb} +1 -1
- data/lib/rggen/default_register_map/register/offset_address.rb +11 -6
- data/lib/rggen/default_register_map/setup.rb +1 -1
- data/lib/rggen/default_register_map/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5606aceae9565f8ffa80125e9eaa9e5d4eee19296a0438e353d54a6a584600a6
|
4
|
+
data.tar.gz: 2f809d1e88bbd7acc788e2308e9b9cf56a5bd571dba191ca1d08e660f05958b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 784ee0f9741d412d636361bd0a007ab130a383063d8eddd5873cf687b675112a19718805f9d5d3e83814e0338dff7d1901429279aa79af10d26db74aa4de9e98
|
7
|
+
data.tar.gz: a44e28a91dbfcc9f9de6334d11589d6452981b4674ad2385d7cb1e3c25311b38894de607b691be9ea49c6f1528d7433c5271a40857a6070e154bfa1b6bb5d4f9
|
@@ -16,14 +16,14 @@ module RgGen
|
|
16
16
|
'default_register_map/bit_field/type/ro',
|
17
17
|
'default_register_map/bit_field/type/rof',
|
18
18
|
'default_register_map/bit_field/type/rs',
|
19
|
-
'default_register_map/bit_field/type/
|
19
|
+
'default_register_map/bit_field/type/rw_w1',
|
20
20
|
'default_register_map/bit_field/type/rwc_rws',
|
21
21
|
'default_register_map/bit_field/type/rwe_rwl',
|
22
22
|
'default_register_map/bit_field/type/w0c_w1c',
|
23
23
|
'default_register_map/bit_field/type/w0crs_w1crs_w0src_w1src',
|
24
24
|
'default_register_map/bit_field/type/w0s_w1s',
|
25
25
|
'default_register_map/bit_field/type/w0trg_w1trg',
|
26
|
-
'default_register_map/bit_field/type/
|
26
|
+
'default_register_map/bit_field/type/wo_wo1',
|
27
27
|
'default_register_map/global/address_width',
|
28
28
|
'default_register_map/global/bus_width',
|
29
29
|
'default_register_map/register/name',
|
@@ -19,13 +19,13 @@ RgGen.define_simple_feature(:bit_field, :bit_assignment) do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
verify(:feature) do
|
22
|
-
error_condition { [@
|
22
|
+
error_condition { [@lsb_base, @width, @sequence_size, @step].none? }
|
23
23
|
message { 'no bit assignment is given' }
|
24
24
|
end
|
25
25
|
|
26
26
|
verify(:feature) do
|
27
|
-
error_condition {
|
28
|
-
message { '
|
27
|
+
error_condition { [@lsb_base, @width].none? }
|
28
|
+
message { 'neither lsb nor width is given' }
|
29
29
|
end
|
30
30
|
|
31
31
|
verify(:feature) do
|
@@ -61,7 +61,11 @@ RgGen.define_simple_feature(:bit_field, :bit_assignment) do
|
|
61
61
|
|
62
62
|
private
|
63
63
|
|
64
|
-
|
64
|
+
VARIABLE_NAMES = {
|
65
|
+
lsb: :@lsb_base, width: :@width, sequence_size: :@sequence_size, step: :@step
|
66
|
+
}.freeze
|
67
|
+
|
68
|
+
KEYS = VARIABLE_NAMES.keys.freeze
|
65
69
|
|
66
70
|
def preprocess(value)
|
67
71
|
if value.is_a?(Hash)
|
@@ -83,18 +87,38 @@ RgGen.define_simple_feature(:bit_field, :bit_assignment) do
|
|
83
87
|
|
84
88
|
def parse_value(input_value, key)
|
85
89
|
input_value.key?(key) &&
|
86
|
-
instance_variable_set(
|
90
|
+
instance_variable_set(VARIABLE_NAMES[key], Integer(input_value[key]))
|
87
91
|
rescue ArgumentError, TypeError
|
88
92
|
error "cannot convert #{input_value[key].inspect} into " \
|
89
93
|
"bit assignment(#{key.to_s.tr('_', ' ')})"
|
90
94
|
end
|
91
95
|
|
96
|
+
def lsb_base
|
97
|
+
@lsb_base ||=
|
98
|
+
((bit_field.component_index.zero? && 0) || calc_next_lsb(previous_bit_field))
|
99
|
+
end
|
100
|
+
|
101
|
+
def previous_bit_field
|
102
|
+
index = bit_field.component_index - 1
|
103
|
+
register.bit_fields[index]
|
104
|
+
end
|
105
|
+
|
106
|
+
def calc_next_lsb(bit_field)
|
107
|
+
compact_sequential_bit_field?(bit_field) &&
|
108
|
+
(bit_field.lsb + bit_field.width * bit_field.sequence_size) ||
|
109
|
+
(bit_field.lsb + bit_field.width)
|
110
|
+
end
|
111
|
+
|
112
|
+
def compact_sequential_bit_field?(bit_field)
|
113
|
+
bit_field.sequential? && (bit_field.step == bit_field.width)
|
114
|
+
end
|
115
|
+
|
92
116
|
def lsb_bit(index = 0)
|
93
|
-
lsb_msb_bit(index,
|
117
|
+
lsb_msb_bit(index, lsb_base)
|
94
118
|
end
|
95
119
|
|
96
120
|
def msb_bit(index = 0)
|
97
|
-
lsb_msb_bit(index,
|
121
|
+
lsb_msb_bit(index, lsb_base + width - 1)
|
98
122
|
end
|
99
123
|
|
100
124
|
def lsb_msb_bit(index, base)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
RgGen.define_simple_feature(:register, :offset_address) do
|
4
4
|
register_map do
|
5
|
-
property :offset_address
|
5
|
+
property :offset_address, initial: -> { default_offset_address }
|
6
6
|
property :address_range, initial: -> { start_address..end_address }
|
7
7
|
property :overlap?, forward_to: :overlap_address_range?
|
8
8
|
|
@@ -15,11 +15,6 @@ RgGen.define_simple_feature(:register, :offset_address) do
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
verify(:feature) do
|
19
|
-
error_condition { !offset_address }
|
20
|
-
message { 'no offset address is given' }
|
21
|
-
end
|
22
|
-
|
23
18
|
verify(:feature) do
|
24
19
|
error_condition { offset_address.negative? }
|
25
20
|
message { "offset address is less than 0: #{offset_address}" }
|
@@ -62,6 +57,16 @@ RgGen.define_simple_feature(:register, :offset_address) do
|
|
62
57
|
|
63
58
|
private
|
64
59
|
|
60
|
+
def default_offset_address
|
61
|
+
register.component_index.zero? && 0 ||
|
62
|
+
(previous_register.offset_address + previous_register.byte_size)
|
63
|
+
end
|
64
|
+
|
65
|
+
def previous_register
|
66
|
+
index = register.component_index - 1
|
67
|
+
register_block.registers[index]
|
68
|
+
end
|
69
|
+
|
65
70
|
def bus_width
|
66
71
|
configuration.bus_width
|
67
72
|
end
|
@@ -14,6 +14,6 @@ RgGen.setup :'rggen-defualt-register-map', RgGen::DefaultRegisterMap do |builder
|
|
14
14
|
:rc, :reserved, :ro, :rof, :rs,
|
15
15
|
:rw, :rwc, :rwe, :rwl, :rws,
|
16
16
|
:w0c, :w0crs, :w0s, :w0src, :w0trg,
|
17
|
-
:w1c, :w1crs, :w1s, :w1src, :w1trg, :wo
|
17
|
+
:w1, :w1c, :w1crs, :w1s, :w1src, :w1trg, :wo, :wo1
|
18
18
|
]
|
19
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rggen-default-register-map
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taichi Ishitani
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-11-
|
11
|
+
date: 2019-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -46,14 +46,14 @@ files:
|
|
46
46
|
- lib/rggen/default_register_map/bit_field/type/ro.rb
|
47
47
|
- lib/rggen/default_register_map/bit_field/type/rof.rb
|
48
48
|
- lib/rggen/default_register_map/bit_field/type/rs.rb
|
49
|
-
- lib/rggen/default_register_map/bit_field/type/
|
49
|
+
- lib/rggen/default_register_map/bit_field/type/rw_w1.rb
|
50
50
|
- lib/rggen/default_register_map/bit_field/type/rwc_rws.rb
|
51
51
|
- lib/rggen/default_register_map/bit_field/type/rwe_rwl.rb
|
52
52
|
- lib/rggen/default_register_map/bit_field/type/w0c_w1c.rb
|
53
53
|
- lib/rggen/default_register_map/bit_field/type/w0crs_w1crs_w0src_w1src.rb
|
54
54
|
- lib/rggen/default_register_map/bit_field/type/w0s_w1s.rb
|
55
55
|
- lib/rggen/default_register_map/bit_field/type/w0trg_w1trg.rb
|
56
|
-
- lib/rggen/default_register_map/bit_field/type/
|
56
|
+
- lib/rggen/default_register_map/bit_field/type/wo_wo1.rb
|
57
57
|
- lib/rggen/default_register_map/global/address_width.rb
|
58
58
|
- lib/rggen/default_register_map/global/bus_width.rb
|
59
59
|
- lib/rggen/default_register_map/register/name.rb
|
@@ -92,5 +92,5 @@ requirements: []
|
|
92
92
|
rubygems_version: 3.0.3
|
93
93
|
signing_key:
|
94
94
|
specification_version: 4
|
95
|
-
summary: rggen-default-register-map-0.
|
95
|
+
summary: rggen-default-register-map-0.18.0
|
96
96
|
test_files: []
|