rggen-default-register-map 0.35.1 → 0.36.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/LICENSE +1 -1
- data/README.md +3 -4
- data/lib/rggen/default_register_map/bit_field/type/counter.rb +9 -0
- data/lib/rggen/default_register_map/register/offset_address.rb +18 -11
- data/lib/rggen/default_register_map/register/type/indirect.rb +8 -5
- data/lib/rggen/default_register_map/register/type/maskable.rb +29 -0
- data/lib/rggen/default_register_map/version.rb +1 -1
- data/lib/rggen/default_register_map.rb +3 -3
- metadata +7 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ad030c257184d834491e0df892c25adecb637c48a487ca6dd30986e939ab23f8
|
|
4
|
+
data.tar.gz: 7516cc539e05d504c0459dfcbfde181edc8ed73579d6f01dfe49708c24a209ed
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 72d36ba1054cede846ff838bc7a1191361a872366305c77d9e813e7f121e139cd9184fc5a30223c1c38e7f3ee03a1b2e414d1b5501bf0120333ecf6ea702ff37
|
|
7
|
+
data.tar.gz: e6023f5812804db2e401131a45bf364f7d59e2048167ef369b3707bf3ae4f1ac5fc9877a6a3fbcbf42311ee57052397e6d314c6d8f0cbc20c5090baacde2e88b
|
data/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2019-
|
|
3
|
+
Copyright (c) 2019-2026 Taichi Ishitani
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
[](https://github.com/rggen/rggen-default-register-map/actions?query=workflow%3ACI)
|
|
3
3
|
[](https://qlty.sh/gh/rggen/projects/rggen-default-register-map)
|
|
4
4
|
[](https://codecov.io/gh/rggen/rggen-default-register-map)
|
|
5
|
-
[](https://discord.com/invite/KWya83ZZxr)
|
|
7
6
|
|
|
8
7
|
# RgGen::DefaultRegisterMap
|
|
9
8
|
|
|
@@ -32,13 +31,13 @@ Feedbacks, bug reports, questions and etc. are wellcome! You can post them by us
|
|
|
32
31
|
|
|
33
32
|
* [GitHub Issue Tracker](https://github.com/rggen/rggen/issues)
|
|
34
33
|
* [GitHub Discussions](https://github.com/rggen/rggen/discussions)
|
|
35
|
-
* [
|
|
34
|
+
* [Discord](https://discord.com/invite/KWya83ZZxr)
|
|
36
35
|
* [Mailing List](https://groups.google.com/d/forum/rggen)
|
|
37
36
|
* [Mail](mailto:rggen@googlegroups.com)
|
|
38
37
|
|
|
39
38
|
## Copyright & License
|
|
40
39
|
|
|
41
|
-
Copyright © 2019-
|
|
40
|
+
Copyright © 2019-2026 Taichi Ishitani. RgGen::DefaultRegisterMap is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
|
|
42
41
|
|
|
43
42
|
## Code of Conduct
|
|
44
43
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
RgGen.define_simple_feature(:register, :offset_address) do
|
|
4
4
|
register_map do
|
|
5
5
|
property :offset_address, initial: -> { default_offset_address }
|
|
6
|
-
property :expanded_offset_addresses,
|
|
6
|
+
property :expanded_offset_addresses, body: -> { expand_addresses }
|
|
7
7
|
property :address_range, initial: -> { start_address..end_address }
|
|
8
8
|
property :overlap?, body: ->(other) { overlap_address_range?(other, false) }
|
|
9
9
|
|
|
@@ -45,12 +45,12 @@ RgGen.define_simple_feature(:register, :offset_address) do
|
|
|
45
45
|
end
|
|
46
46
|
message do
|
|
47
47
|
'offset address range overlaps with other offset address range: ' \
|
|
48
|
-
"0x#{start_address(true).to_s(16)}-0x#{end_address(true).to_s(16)}"
|
|
48
|
+
"0x#{start_address(full: true).to_s(16)}-0x#{end_address(full: true).to_s(16)}"
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
printable(:offset_address) do
|
|
53
|
-
expand_addresses.map(&method(:format_address))
|
|
53
|
+
expand_addresses(printable_address: true).map(&method(:format_address))
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
private
|
|
@@ -60,22 +60,29 @@ RgGen.define_simple_feature(:register, :offset_address) do
|
|
|
60
60
|
(previous_component.offset_address + previous_component.total_byte_size)
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
-
def start_address(full
|
|
63
|
+
def start_address(full: false)
|
|
64
64
|
full && expand_addresses.first || offset_address
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
def end_address(full
|
|
68
|
-
start_address(full) + register.total_byte_size - 1
|
|
67
|
+
def end_address(full: false)
|
|
68
|
+
start_address(full:) + register.total_byte_size - 1
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
def expand_addresses
|
|
71
|
+
def expand_addresses(printable_address: false)
|
|
72
72
|
(register_file&.expanded_offset_addresses || [0])
|
|
73
|
-
.product(expand_local_addresses).map(&:sum)
|
|
73
|
+
.product(expand_local_addresses(printable_address)).map(&:sum)
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
def expand_local_addresses
|
|
77
|
-
width =
|
|
78
|
-
|
|
76
|
+
def expand_local_addresses(printable_address)
|
|
77
|
+
count, width =
|
|
78
|
+
if !shared_address?
|
|
79
|
+
[register.count, register.entry_byte_size]
|
|
80
|
+
elsif printable_address
|
|
81
|
+
[1, 0]
|
|
82
|
+
else
|
|
83
|
+
[register.count, 0]
|
|
84
|
+
end
|
|
85
|
+
Array.new(count) { |i| offset_address + width * i }
|
|
79
86
|
end
|
|
80
87
|
|
|
81
88
|
def previous_component
|
|
@@ -29,10 +29,6 @@ RgGen.define_list_item_feature(:register, :type, :indirect) do
|
|
|
29
29
|
def find_index_field(bit_fields)
|
|
30
30
|
bit_fields.find { |bit_field| bit_field.full_name == name }
|
|
31
31
|
end
|
|
32
|
-
|
|
33
|
-
def to_s
|
|
34
|
-
[name, value].compact.join(': ')
|
|
35
|
-
end
|
|
36
32
|
end
|
|
37
33
|
|
|
38
34
|
property :index_entries
|
|
@@ -170,7 +166,14 @@ RgGen.define_list_item_feature(:register, :type, :indirect) do
|
|
|
170
166
|
end
|
|
171
167
|
|
|
172
168
|
printable(:index_bit_fields) do
|
|
173
|
-
index_entries.map
|
|
169
|
+
index_entries.map do |index|
|
|
170
|
+
if index.array_index?
|
|
171
|
+
value = array_index_value(index)
|
|
172
|
+
"#{index.name}: [0-#{value - 1}]"
|
|
173
|
+
else
|
|
174
|
+
"#{index.name}: #{index.value}"
|
|
175
|
+
end
|
|
176
|
+
end
|
|
174
177
|
end
|
|
175
178
|
|
|
176
179
|
private
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RgGen.define_list_item_feature(:register, :type, :maskable) do
|
|
4
|
+
register_map do
|
|
5
|
+
support_array_register
|
|
6
|
+
|
|
7
|
+
verify(:component) do
|
|
8
|
+
check_error do
|
|
9
|
+
register.bit_fields.each(&method(:check_assignment))
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def check_assignment(bit_field)
|
|
14
|
+
(bit_field.sequence_size || 1).times do |i|
|
|
15
|
+
msb = bit_field.msb(i)
|
|
16
|
+
lsb = bit_field.lsb(i)
|
|
17
|
+
next unless in_mask_range?(msb, lsb)
|
|
18
|
+
|
|
19
|
+
error "bit field is assigned to upper half word: [#{msb}:#{lsb}]"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def in_mask_range?(msb, lsb)
|
|
24
|
+
width = register_block.bus_width
|
|
25
|
+
half_width = width / 2
|
|
26
|
+
(lsb..msb).any? { |bit| (bit % width) >= half_width }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'erubi'
|
|
4
|
-
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.3.0')
|
|
5
|
-
require 'facets/range/overlap'
|
|
6
|
-
end
|
|
4
|
+
require 'facets/range/overlap' if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.3.0')
|
|
7
5
|
|
|
8
6
|
require_relative 'default_register_map/version'
|
|
9
7
|
require_relative 'default_register_map/comment'
|
|
@@ -27,12 +25,14 @@ RgGen.setup_plugin :'rggen-default-register-map' do |plugin|
|
|
|
27
25
|
'default_register_map/register/type',
|
|
28
26
|
'default_register_map/register/type/external',
|
|
29
27
|
'default_register_map/register/type/indirect',
|
|
28
|
+
'default_register_map/register/type/maskable',
|
|
30
29
|
'default_register_map/register/type/reserved',
|
|
31
30
|
'default_register_map/register/type/rw',
|
|
32
31
|
'default_register_map/register/comment',
|
|
33
32
|
'default_register_map/bit_field/name',
|
|
34
33
|
'default_register_map/bit_field/bit_assignment',
|
|
35
34
|
'default_register_map/bit_field/type',
|
|
35
|
+
'default_register_map/bit_field/type/counter',
|
|
36
36
|
'default_register_map/bit_field/type/custom',
|
|
37
37
|
'default_register_map/bit_field/type/rc',
|
|
38
38
|
'default_register_map/bit_field/type/reserved',
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
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.36.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Taichi Ishitani
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: erubi
|
|
@@ -55,6 +55,7 @@ files:
|
|
|
55
55
|
- lib/rggen/default_register_map/bit_field/name.rb
|
|
56
56
|
- lib/rggen/default_register_map/bit_field/reference.rb
|
|
57
57
|
- lib/rggen/default_register_map/bit_field/type.rb
|
|
58
|
+
- lib/rggen/default_register_map/bit_field/type/counter.rb
|
|
58
59
|
- lib/rggen/default_register_map/bit_field/type/custom.rb
|
|
59
60
|
- lib/rggen/default_register_map/bit_field/type/rc.rb
|
|
60
61
|
- lib/rggen/default_register_map/bit_field/type/reserved.rb
|
|
@@ -86,6 +87,7 @@ files:
|
|
|
86
87
|
- lib/rggen/default_register_map/register/type.rb
|
|
87
88
|
- lib/rggen/default_register_map/register/type/external.rb
|
|
88
89
|
- lib/rggen/default_register_map/register/type/indirect.rb
|
|
90
|
+
- lib/rggen/default_register_map/register/type/maskable.rb
|
|
89
91
|
- lib/rggen/default_register_map/register/type/reserved.rb
|
|
90
92
|
- lib/rggen/default_register_map/register/type/rw.rb
|
|
91
93
|
- lib/rggen/default_register_map/register_block/bus_width.rb
|
|
@@ -113,14 +115,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
113
115
|
requirements:
|
|
114
116
|
- - ">="
|
|
115
117
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: '3.
|
|
118
|
+
version: '3.2'
|
|
117
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
120
|
requirements:
|
|
119
121
|
- - ">="
|
|
120
122
|
- !ruby/object:Gem::Version
|
|
121
123
|
version: '0'
|
|
122
124
|
requirements: []
|
|
123
|
-
rubygems_version:
|
|
125
|
+
rubygems_version: 4.0.3
|
|
124
126
|
specification_version: 4
|
|
125
|
-
summary: rggen-default-register-map-0.
|
|
127
|
+
summary: rggen-default-register-map-0.36.0
|
|
126
128
|
test_files: []
|