rggen-default-register-map 0.25.0 → 0.27.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
  SHA256:
3
- metadata.gz: 4a0b6e48b3b6da6739cbe958694f2a1cf45f22532b41fcc47f7d1eb6cc10869e
4
- data.tar.gz: 3eaf3ebd9bd36133bd024cf65858fee3349322c65a43071bfd8b0dd390e4b067
3
+ metadata.gz: 2e1b5c8952df6d5cf956a991019f222ff1fa5789316a37b2f82b0c204fe7a30a
4
+ data.tar.gz: a2740678c7e416b435f294652fafa074b7a4090656f9c52ba8487a9866a6362c
5
5
  SHA512:
6
- metadata.gz: e76010e8a516197774b91c23a738c4c7b510e351d083a4bdb9c4b2e6455037e801f451ffdfc2bb58f45a23cb3904ddd25995f8c2eddb40da4e1dde396c82f208
7
- data.tar.gz: 33edbad2da7140c757901aa8bebdae1b17fbe81209e51864fde2ef7be7d41d8fd971ad7e861fa60075eeb27ab76a97347d6080e387811343fc72713e8932a17c
6
+ metadata.gz: 4b562f3dda473595d8b96ab350da36654e5c75a78cd56afb25dfc4b0a45666dbf77185aa85261938cda985d72b7878b346c7b5331c8e837155a2310ebba83c0d
7
+ data.tar.gz: '09288fa36647791243feb903e3752350b66197111ac960223be51e7766af0be2848fbcd086a2035e600dce2af8ea399940e528d9ed743bd8b739a05dd2b19601'
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2019-2021 Taichi Ishitani
3
+ Copyright (c) 2019-2022 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
@@ -21,7 +21,7 @@ During RgGen installation, RgGen::DefaultRegisterMap will also be installed auto
21
21
  $ gem install rggen
22
22
  ```
23
23
 
24
- If you to install RgGen::DefaultRegisterMap only, use the command below:
24
+ If you want to install RgGen::DefaultRegisterMap only, use the command below:
25
25
 
26
26
  ```
27
27
  $ gem install rggen-default-register-map
@@ -31,14 +31,15 @@ $ gem install rggen-default-register-map
31
31
 
32
32
  Feedbacks, bug reports, questions and etc. are wellcome! You can post them by using following ways:
33
33
 
34
- * [GitHub Issue Tracker](https://github.com/rggen/rggen-default-register-map/issues)
34
+ * [GitHub Issue Tracker](https://github.com/rggen/rggen/issues)
35
+ * [GitHub Discussions](https://github.com/rggen/rggen/discussions)
35
36
  * [Chat Room](https://gitter.im/rggen/rggen)
36
37
  * [Mailing List](https://groups.google.com/d/forum/rggen)
37
38
  * [Mail](mailto:rggen@googlegroups.com)
38
39
 
39
40
  ## Copyright & License
40
41
 
41
- Copyright © 2019-2021 Taichi Ishitani. RgGen::DefaultRegisterMap is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
42
+ Copyright © 2019-2022 Taichi Ishitani. RgGen::DefaultRegisterMap is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
42
43
 
43
44
  ## Code of Conduct
44
45
 
@@ -59,8 +59,8 @@ RgGen.define_simple_feature(:bit_field, :bit_assignment) do
59
59
  end
60
60
 
61
61
  verify(:feature) do
62
- error_condition { sequential? && step < 1 }
63
- message { "step is less than 1: #{step}" }
62
+ error_condition { sequential? && step < width }
63
+ message { "step is less than width: step #{step} width #{width}" }
64
64
  end
65
65
 
66
66
  verify(:feature) do
@@ -108,7 +108,7 @@ RgGen.define_simple_feature(:bit_field, :bit_assignment) do
108
108
  helper.variable_names.keys
109
109
  else
110
110
  keys = helper.variable_names.keys
111
- [keys[1], keys[0], *keys[2..-1]]
111
+ [keys[1], keys[0], *keys[2..]]
112
112
  end
113
113
  @keys[index]
114
114
  end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_simple_feature(:bit_field, :comment) do
4
+ register_map(&RgGen::DefaultRegisterMap::COMMENT)
5
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, :ro) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:ro, :rotrg]) do
4
4
  register_map do
5
5
  read_only
6
6
  reference use: true
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:row0trg, :row1trg]) do
4
+ register_map do
5
+ read_write
6
+ reference use: true
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:rowo, :rowotrg]) do
4
+ register_map do
5
+ read_write
6
+ volatile
7
+ initial_value require: true
8
+ reference use: true
9
+ end
10
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, [:rw, :w1, :wrc, :wrs]) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:rw, :rwtrg, :w1, :wrc, :wrs]) do
4
4
  register_map do
5
5
  read_write
6
6
  non_volatile
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, [:wo, :wo1]) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:wo, :wo1, :wotrg]) do
4
4
  register_map do
5
5
  write_only
6
6
  non_volatile
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- [:register_block, :register_file, :register, :bit_field].each do |layer|
4
- RgGen.define_simple_feature(layer, :comment) do
5
- register_map do
3
+ module RgGen
4
+ module DefaultRegisterMap
5
+ COMMENT = proc do
6
6
  property :comment, initial: -> { '' }
7
7
 
8
8
  build do |value|
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_simple_feature(:global, :enable_wide_register) do
4
+ configuration do
5
+ property :enable_wide_register?, default: false
6
+
7
+ input_pattern [/true|on|yes/i, /false|off|no/i],
8
+ match_automatically: false
9
+
10
+ ignore_empty_value false
11
+
12
+ build do |value|
13
+ @enable_wide_register =
14
+ if [true, false].include?(value)
15
+ value
16
+ elsif match_pattern(value)
17
+ [true, false][match_index]
18
+ else
19
+ error "cannot convert #{value.inspect} into boolean"
20
+ end
21
+ end
22
+
23
+ printable :enable_wide_register do
24
+ enable_wide_register?
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_simple_feature(:register, :comment) do
4
+ register_map(&RgGen::DefaultRegisterMap::COMMENT)
5
+ end
@@ -93,9 +93,9 @@ RgGen.define_simple_feature(:register, :offset_address) do
93
93
  configuration.byte_width
94
94
  end
95
95
 
96
- def overlap_address_range?(other, sharable)
96
+ def overlap_address_range?(other, shareable)
97
97
  overlap_range?(other) &&
98
- (exclusive_range?(other) || competitive_access?(other, sharable))
98
+ (exclusive_range?(other) || !shareable_access?(other, shareable))
99
99
  end
100
100
 
101
101
  def overlap_range?(other)
@@ -108,13 +108,21 @@ RgGen.define_simple_feature(:register, :offset_address) do
108
108
  other.register_file? || other.reserved? || register.reserved?
109
109
  end
110
110
 
111
- def competitive_access?(other, sharable)
112
- !sharable_range?(other, sharable) &&
113
- [:writable?, :readable?].any? { |access| [register, other].all?(&access) }
111
+ def shareable_access?(other, shareable)
112
+ match_range?(other) &&
113
+ (alternate_access?(other) || shareable_range?(other, shareable))
114
114
  end
115
115
 
116
- def sharable_range?(other, sharable)
117
- sharable && shared_address? && register.match_type?(other)
116
+ def match_range?(other)
117
+ address_range == other.address_range
118
+ end
119
+
120
+ def alternate_access?(other)
121
+ [:writable?, :readable?].all? { |access| [register, other].one?(&access) }
122
+ end
123
+
124
+ def shareable_range?(other, shareable)
125
+ shareable && shared_address? && register.match_type?(other)
118
126
  end
119
127
 
120
128
  def shared_address?
@@ -26,6 +26,15 @@ RgGen.define_simple_feature(:register, :size) do
26
26
  end
27
27
  end
28
28
 
29
+ verify(:component) do
30
+ error_condition do
31
+ !configuration.enable_wide_register? && byte_width > 8
32
+ end
33
+ message do
34
+ "register width wider than 8 bytes is not allowed: #{byte_width} bytes"
35
+ end
36
+ end
37
+
29
38
  private
30
39
 
31
40
  def parse_values(values)
@@ -194,7 +194,7 @@ RgGen.define_list_item_feature(:register, :type, :indirect) do
194
194
  input_value = Array(value)
195
195
  field_name = input_value.first
196
196
  if sting_or_symbol?(field_name) && match_pattern(field_name)
197
- [*match_data.captures, *input_value[1..-1]]
197
+ [*match_data.captures, *input_value[1..]]
198
198
  else
199
199
  error "illegal input value for indirect index: #{value.inspect}"
200
200
  end
@@ -103,7 +103,7 @@ RgGen.define_list_feature(:register, :type) do
103
103
  split_string_value(value)
104
104
  else
105
105
  input_value = Array(value)
106
- [input_value[0], input_value[1..-1]]
106
+ [input_value[0], input_value[1..]]
107
107
  end
108
108
  end
109
109
 
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_simple_feature(:register_block, :comment) do
4
+ register_map(&RgGen::DefaultRegisterMap::COMMENT)
5
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_simple_feature(:register_file, :comment) do
4
+ register_map(&RgGen::DefaultRegisterMap::COMMENT)
5
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module DefaultRegisterMap
5
- VERSION = '0.25.0'
5
+ VERSION = '0.27.0'
6
6
  end
7
7
  end
@@ -1,51 +1,53 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'default_register_map/version'
4
+ require_relative 'default_register_map/comment'
4
5
 
5
- module RgGen
6
- module DefaultRegisterMap
7
- extend Core::Plugin
8
-
9
- setup_plugin :'rggen-default-register-map' do |plugin|
10
- plugin.files [
11
- 'default_register_map/bit_field/bit_assignment',
12
- 'default_register_map/bit_field/initial_value',
13
- 'default_register_map/bit_field/name',
14
- 'default_register_map/bit_field/reference',
15
- 'default_register_map/bit_field/type',
16
- 'default_register_map/bit_field/type/rc',
17
- 'default_register_map/bit_field/type/reserved',
18
- 'default_register_map/bit_field/type/ro',
19
- 'default_register_map/bit_field/type/rof',
20
- 'default_register_map/bit_field/type/rs',
21
- 'default_register_map/bit_field/type/rw_w1_wrc_wrs',
22
- 'default_register_map/bit_field/type/rwc_rws',
23
- 'default_register_map/bit_field/type/rwe_rwl',
24
- 'default_register_map/bit_field/type/w0c_w1c_wc',
25
- 'default_register_map/bit_field/type/w0crs_w1crs_wcrs',
26
- 'default_register_map/bit_field/type/w0s_w1s_ws',
27
- 'default_register_map/bit_field/type/w0src_w1src_wsrc',
28
- 'default_register_map/bit_field/type/w0t_w1t',
29
- 'default_register_map/bit_field/type/w0trg_w1trg',
30
- 'default_register_map/bit_field/type/wo_wo1',
31
- 'default_register_map/bit_field/type/woc',
32
- 'default_register_map/bit_field/type/wos',
33
- 'default_register_map/common/comment',
34
- 'default_register_map/global/address_width',
35
- 'default_register_map/global/bus_width',
36
- 'default_register_map/register/name',
37
- 'default_register_map/register/offset_address',
38
- 'default_register_map/register/size',
39
- 'default_register_map/register/type',
40
- 'default_register_map/register/type/external',
41
- 'default_register_map/register/type/indirect',
42
- 'default_register_map/register/type/reserved',
43
- 'default_register_map/register_block/byte_size',
44
- 'default_register_map/register_block/name',
45
- 'default_register_map/register_file/name',
46
- 'default_register_map/register_file/offset_address',
47
- 'default_register_map/register_file/size'
48
- ]
49
- end
50
- end
6
+ RgGen.setup_plugin :'rggen-default-register-map' do |plugin|
7
+ plugin.version RgGen::DefaultRegisterMap::VERSION
8
+ plugin.files [
9
+ 'default_register_map/global/address_width',
10
+ 'default_register_map/global/bus_width',
11
+ 'default_register_map/global/enable_wide_register',
12
+ 'default_register_map/register_block/name',
13
+ 'default_register_map/register_block/byte_size',
14
+ 'default_register_map/register_block/comment',
15
+ 'default_register_map/register_file/name',
16
+ 'default_register_map/register_file/offset_address',
17
+ 'default_register_map/register_file/size',
18
+ 'default_register_map/register_file/comment',
19
+ 'default_register_map/register/name',
20
+ 'default_register_map/register/offset_address',
21
+ 'default_register_map/register/size',
22
+ 'default_register_map/register/type',
23
+ 'default_register_map/register/type/external',
24
+ 'default_register_map/register/type/indirect',
25
+ 'default_register_map/register/type/reserved',
26
+ 'default_register_map/register/comment',
27
+ 'default_register_map/bit_field/name',
28
+ 'default_register_map/bit_field/bit_assignment',
29
+ 'default_register_map/bit_field/type',
30
+ 'default_register_map/bit_field/type/rc',
31
+ 'default_register_map/bit_field/type/reserved',
32
+ 'default_register_map/bit_field/type/ro_rotrg',
33
+ 'default_register_map/bit_field/type/rof',
34
+ 'default_register_map/bit_field/type/row0trg_row1trg',
35
+ 'default_register_map/bit_field/type/rowo_rowotrg',
36
+ 'default_register_map/bit_field/type/rs',
37
+ 'default_register_map/bit_field/type/rw_rwtrg_w1_wrc_wrs',
38
+ 'default_register_map/bit_field/type/rwc_rws',
39
+ 'default_register_map/bit_field/type/rwe_rwl',
40
+ 'default_register_map/bit_field/type/w0c_w1c_wc',
41
+ 'default_register_map/bit_field/type/w0crs_w1crs_wcrs',
42
+ 'default_register_map/bit_field/type/w0s_w1s_ws',
43
+ 'default_register_map/bit_field/type/w0src_w1src_wsrc',
44
+ 'default_register_map/bit_field/type/w0t_w1t',
45
+ 'default_register_map/bit_field/type/w0trg_w1trg',
46
+ 'default_register_map/bit_field/type/wo_wo1_wotrg',
47
+ 'default_register_map/bit_field/type/woc',
48
+ 'default_register_map/bit_field/type/wos',
49
+ 'default_register_map/bit_field/initial_value',
50
+ 'default_register_map/bit_field/reference',
51
+ 'default_register_map/bit_field/comment'
52
+ ]
51
53
  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.25.0
4
+ version: 0.27.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: 2021-02-28 00:00:00.000000000 Z
11
+ date: 2022-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -36,16 +36,19 @@ files:
36
36
  - README.md
37
37
  - lib/rggen/default_register_map.rb
38
38
  - lib/rggen/default_register_map/bit_field/bit_assignment.rb
39
+ - lib/rggen/default_register_map/bit_field/comment.rb
39
40
  - lib/rggen/default_register_map/bit_field/initial_value.rb
40
41
  - lib/rggen/default_register_map/bit_field/name.rb
41
42
  - lib/rggen/default_register_map/bit_field/reference.rb
42
43
  - lib/rggen/default_register_map/bit_field/type.rb
43
44
  - lib/rggen/default_register_map/bit_field/type/rc.rb
44
45
  - lib/rggen/default_register_map/bit_field/type/reserved.rb
45
- - lib/rggen/default_register_map/bit_field/type/ro.rb
46
+ - lib/rggen/default_register_map/bit_field/type/ro_rotrg.rb
46
47
  - lib/rggen/default_register_map/bit_field/type/rof.rb
48
+ - lib/rggen/default_register_map/bit_field/type/row0trg_row1trg.rb
49
+ - lib/rggen/default_register_map/bit_field/type/rowo_rowotrg.rb
47
50
  - lib/rggen/default_register_map/bit_field/type/rs.rb
48
- - lib/rggen/default_register_map/bit_field/type/rw_w1_wrc_wrs.rb
51
+ - lib/rggen/default_register_map/bit_field/type/rw_rwtrg_w1_wrc_wrs.rb
49
52
  - lib/rggen/default_register_map/bit_field/type/rwc_rws.rb
50
53
  - lib/rggen/default_register_map/bit_field/type/rwe_rwl.rb
51
54
  - lib/rggen/default_register_map/bit_field/type/w0c_w1c_wc.rb
@@ -54,12 +57,14 @@ files:
54
57
  - lib/rggen/default_register_map/bit_field/type/w0src_w1src_wsrc.rb
55
58
  - lib/rggen/default_register_map/bit_field/type/w0t_w1t.rb
56
59
  - lib/rggen/default_register_map/bit_field/type/w0trg_w1trg.rb
57
- - lib/rggen/default_register_map/bit_field/type/wo_wo1.rb
60
+ - lib/rggen/default_register_map/bit_field/type/wo_wo1_wotrg.rb
58
61
  - lib/rggen/default_register_map/bit_field/type/woc.rb
59
62
  - lib/rggen/default_register_map/bit_field/type/wos.rb
60
- - lib/rggen/default_register_map/common/comment.rb
63
+ - lib/rggen/default_register_map/comment.rb
61
64
  - lib/rggen/default_register_map/global/address_width.rb
62
65
  - lib/rggen/default_register_map/global/bus_width.rb
66
+ - lib/rggen/default_register_map/global/enable_wide_register.rb
67
+ - lib/rggen/default_register_map/register/comment.rb
63
68
  - lib/rggen/default_register_map/register/name.rb
64
69
  - lib/rggen/default_register_map/register/offset_address.rb
65
70
  - lib/rggen/default_register_map/register/size.rb
@@ -68,18 +73,20 @@ files:
68
73
  - lib/rggen/default_register_map/register/type/indirect.rb
69
74
  - lib/rggen/default_register_map/register/type/reserved.rb
70
75
  - lib/rggen/default_register_map/register_block/byte_size.rb
76
+ - lib/rggen/default_register_map/register_block/comment.rb
71
77
  - lib/rggen/default_register_map/register_block/name.rb
78
+ - lib/rggen/default_register_map/register_file/comment.rb
72
79
  - lib/rggen/default_register_map/register_file/name.rb
73
80
  - lib/rggen/default_register_map/register_file/offset_address.rb
74
81
  - lib/rggen/default_register_map/register_file/size.rb
75
- - lib/rggen/default_register_map/setup.rb
76
82
  - lib/rggen/default_register_map/version.rb
77
83
  homepage: https://github.com/rggen/rggen-default-register-map
78
84
  licenses:
79
85
  - MIT
80
86
  metadata:
81
- bug_tracker_uri: https://github.com/rggen/rggen-default-register-map/issues
87
+ bug_tracker_uri: https://github.com/rggen/rggen/issues
82
88
  mailing_list_uri: https://groups.google.com/d/forum/rggen
89
+ rubygems_mfa_required: 'true'
83
90
  source_code_uri: https://github.com/rggen/rggen-default-register-map
84
91
  wiki_uri: https://github.com/rggen/rggen/wiki
85
92
  post_install_message:
@@ -90,15 +97,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
97
  requirements:
91
98
  - - ">="
92
99
  - !ruby/object:Gem::Version
93
- version: '2.5'
100
+ version: '2.6'
94
101
  required_rubygems_version: !ruby/object:Gem::Requirement
95
102
  requirements:
96
103
  - - ">="
97
104
  - !ruby/object:Gem::Version
98
105
  version: '0'
99
106
  requirements: []
100
- rubygems_version: 3.2.3
107
+ rubygems_version: 3.3.3
101
108
  signing_key:
102
109
  specification_version: 4
103
- summary: rggen-default-register-map-0.25.0
110
+ summary: rggen-default-register-map-0.27.0
104
111
  test_files: []
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rggen/default_register_map'
4
-
5
- RgGen.register_plugin RgGen::DefaultRegisterMap do |builder|
6
- builder.enable :global, [:bus_width, :address_width]
7
- builder.enable :register_block, [
8
- :name, :byte_size, :comment
9
- ]
10
- builder.enable :register_file, [
11
- :name, :offset_address, :size, :comment
12
- ]
13
- builder.enable :register, [
14
- :name, :offset_address, :size, :type, :comment
15
- ]
16
- builder.enable :register, :type, [:external, :indirect, :reserved]
17
- builder.enable :bit_field, [
18
- :name, :bit_assignment, :type, :initial_value, :reference, :comment
19
- ]
20
- builder.enable :bit_field, :type, [
21
- :rc, :reserved, :ro, :rof, :rs,
22
- :rw, :rwc, :rwe, :rwl, :rws,
23
- :w0c, :w0crs, :w0s, :w0src, :w0t, :w0trg,
24
- :w1, :w1c, :w1crs, :w1s, :w1src, :w1t, :w1trg, :wo, :wo1,
25
- :woc, :wos, :wc, :wcrs, :wrc, :wrs, :ws, :wsrc
26
- ]
27
- end