rggen-default-register-map 0.20.0 → 0.25.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.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +1 -1
  4. data/lib/rggen/default_register_map.rb +41 -40
  5. data/lib/rggen/default_register_map/bit_field/bit_assignment.rb +37 -9
  6. data/lib/rggen/default_register_map/bit_field/initial_value.rb +3 -2
  7. data/lib/rggen/default_register_map/bit_field/type.rb +5 -0
  8. data/lib/rggen/default_register_map/bit_field/type/rw_w1_wrc_wrs.rb +9 -0
  9. data/lib/rggen/default_register_map/bit_field/type/{w0c_w1c.rb → w0c_w1c_wc.rb} +1 -1
  10. data/lib/rggen/default_register_map/bit_field/type/{w0crs_w1crs_w0src_w1src.rb → w0crs_w1crs_wcrs.rb} +1 -1
  11. data/lib/rggen/default_register_map/bit_field/type/{w0s_w1s.rb → w0s_w1s_ws.rb} +1 -1
  12. data/lib/rggen/default_register_map/bit_field/type/w0src_w1src_wsrc.rb +9 -0
  13. data/lib/rggen/default_register_map/bit_field/type/{rw_w1.rb → w0t_w1t.rb} +1 -1
  14. data/lib/rggen/default_register_map/bit_field/type/woc.rb +9 -0
  15. data/lib/rggen/default_register_map/bit_field/type/wos.rb +8 -0
  16. data/lib/rggen/default_register_map/common/comment.rb +18 -0
  17. data/lib/rggen/default_register_map/global/address_width.rb +3 -6
  18. data/lib/rggen/default_register_map/global/bus_width.rb +3 -6
  19. data/lib/rggen/default_register_map/register/offset_address.rb +16 -14
  20. data/lib/rggen/default_register_map/register/type.rb +9 -13
  21. data/lib/rggen/default_register_map/register/type/indirect.rb +4 -4
  22. data/lib/rggen/default_register_map/register/type/reserved.rb +10 -0
  23. data/lib/rggen/default_register_map/register_block/byte_size.rb +3 -6
  24. data/lib/rggen/default_register_map/register_file/offset_address.rb +3 -6
  25. data/lib/rggen/default_register_map/setup.rb +14 -7
  26. data/lib/rggen/default_register_map/version.rb +1 -1
  27. metadata +15 -10
  28. data/lib/rggen/default_register_map/bit_field/comment.rb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b0bae9efe6712231b3219daa71f3941af91a4c2249ec645c60a30e287e4eb7f
4
- data.tar.gz: 0af85b7cb0d5bd5d84aef39efbbce6d6d547c8b5ef4f10d9f1dd346a3a7916fd
3
+ metadata.gz: 4a0b6e48b3b6da6739cbe958694f2a1cf45f22532b41fcc47f7d1eb6cc10869e
4
+ data.tar.gz: 3eaf3ebd9bd36133bd024cf65858fee3349322c65a43071bfd8b0dd390e4b067
5
5
  SHA512:
6
- metadata.gz: dc201ab3794f9be0370ab5e5ac6553ff468f6f32dc012364f0a99c82ccd07cda27789ea66e53031b24f199a60a0dfc06c3d82dbc3f828168c4cae862a86b0db5
7
- data.tar.gz: d7a5c1ef1abdcfc2941b513291ce9ff8d7be34958534b850fe95eabc13f5e10b1bf3dfb7047e9652e65fd02ab2aa7e31b8530557a3ac8b95c3d1daf37bcd5b27
6
+ metadata.gz: e76010e8a516197774b91c23a738c4c7b510e351d083a4bdb9c4b2e6455037e801f451ffdfc2bb58f45a23cb3904ddd25995f8c2eddb40da4e1dde396c82f208
7
+ data.tar.gz: 33edbad2da7140c757901aa8bebdae1b17fbe81209e51864fde2ef7be7d41d8fd971ad7e861fa60075eeb27ab76a97347d6080e387811343fc72713e8932a17c
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2019-2020 Taichi Ishitani
3
+ Copyright (c) 2019-2021 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
@@ -38,7 +38,7 @@ Feedbacks, bug reports, questions and etc. are wellcome! You can post them by us
38
38
 
39
39
  ## Copyright & License
40
40
 
41
- Copyright © 2019-2020 Taichi Ishitani. RgGen::DefaultRegisterMap is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
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
42
 
43
43
  ## Code of Conduct
44
44
 
@@ -4,47 +4,48 @@ require_relative 'default_register_map/version'
4
4
 
5
5
  module RgGen
6
6
  module DefaultRegisterMap
7
- FEATURES = [
8
- 'default_register_map/bit_field/bit_assignment',
9
- 'default_register_map/bit_field/comment',
10
- 'default_register_map/bit_field/initial_value',
11
- 'default_register_map/bit_field/name',
12
- 'default_register_map/bit_field/reference',
13
- 'default_register_map/bit_field/type',
14
- 'default_register_map/bit_field/type/rc',
15
- 'default_register_map/bit_field/type/reserved',
16
- 'default_register_map/bit_field/type/ro',
17
- 'default_register_map/bit_field/type/rof',
18
- 'default_register_map/bit_field/type/rs',
19
- 'default_register_map/bit_field/type/rw_w1',
20
- 'default_register_map/bit_field/type/rwc_rws',
21
- 'default_register_map/bit_field/type/rwe_rwl',
22
- 'default_register_map/bit_field/type/w0c_w1c',
23
- 'default_register_map/bit_field/type/w0crs_w1crs_w0src_w1src',
24
- 'default_register_map/bit_field/type/w0s_w1s',
25
- 'default_register_map/bit_field/type/w0trg_w1trg',
26
- 'default_register_map/bit_field/type/wo_wo1',
27
- 'default_register_map/global/address_width',
28
- 'default_register_map/global/bus_width',
29
- 'default_register_map/register/name',
30
- 'default_register_map/register/offset_address',
31
- 'default_register_map/register/size',
32
- 'default_register_map/register/type',
33
- 'default_register_map/register/type/external',
34
- 'default_register_map/register/type/indirect',
35
- 'default_register_map/register_block/byte_size',
36
- 'default_register_map/register_block/name',
37
- 'default_register_map/register_file/name',
38
- 'default_register_map/register_file/offset_address',
39
- 'default_register_map/register_file/size'
40
- ].freeze
7
+ extend Core::Plugin
41
8
 
42
- def self.load_features
43
- FEATURES.each { |file| require_relative file }
44
- end
45
-
46
- def self.default_setup(_builder)
47
- load_features
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
+ ]
48
49
  end
49
50
  end
50
51
  end
@@ -1,6 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RgGen.define_simple_feature(:bit_field, :bit_assignment) do
4
+ configuration do
5
+ property :bit_assignment, default: :width_first
6
+
7
+ input_pattern [width_first: /width_first/i, lsb_first: /lsb_first/i]
8
+ ignore_empty_value false
9
+
10
+ build do |value|
11
+ pattern_matched? ||
12
+ (error "illegal input value for bit assignment: #{value.inspect}")
13
+ @bit_assignment = match_index
14
+ end
15
+ end
16
+
4
17
  register_map do
5
18
  property :lsb, forward_to: :lsb_bit
6
19
  property :msb, forward_to: :msb_bit
@@ -15,7 +28,9 @@ RgGen.define_simple_feature(:bit_field, :bit_assignment) do
15
28
 
16
29
  build do |value|
17
30
  input_value = preprocess(value)
18
- KEYS.each { |key| parse_value(input_value, key) }
31
+ helper.variable_names.each do |key, variable_name|
32
+ parse_value(input_value, key, variable_name)
33
+ end
19
34
  end
20
35
 
21
36
  verify(:feature) do
@@ -61,11 +76,13 @@ RgGen.define_simple_feature(:bit_field, :bit_assignment) do
61
76
 
62
77
  private
63
78
 
64
- VARIABLE_NAMES = {
65
- lsb: :@lsb_base, width: :@width, sequence_size: :@sequence_size, step: :@step
66
- }.freeze
67
-
68
- KEYS = VARIABLE_NAMES.keys.freeze
79
+ define_helpers do
80
+ def variable_names
81
+ @variable_names ||= {
82
+ width: :@width, lsb: :@lsb_base, sequence_size: :@sequence_size, step: :@step
83
+ }.freeze
84
+ end
85
+ end
69
86
 
70
87
  def preprocess(value)
71
88
  if value.is_a?(Hash)
@@ -81,13 +98,24 @@ RgGen.define_simple_feature(:bit_field, :bit_assignment) do
81
98
  match_data
82
99
  .to_s
83
100
  .split(':')
84
- .map.with_index { |value, i| [KEYS[i], value] }
101
+ .map.with_index { |value, i| [variable_key(i), value] }
85
102
  .to_h
86
103
  end
87
104
 
88
- def parse_value(input_value, key)
105
+ def variable_key(index)
106
+ @keys ||=
107
+ if configuration.bit_assignment == :width_first
108
+ helper.variable_names.keys
109
+ else
110
+ keys = helper.variable_names.keys
111
+ [keys[1], keys[0], *keys[2..-1]]
112
+ end
113
+ @keys[index]
114
+ end
115
+
116
+ def parse_value(input_value, key, variable_name)
89
117
  input_value.key?(key) &&
90
- instance_variable_set(VARIABLE_NAMES[key], Integer(input_value[key]))
118
+ instance_variable_set(variable_name, Integer(input_value[key]))
91
119
  rescue ArgumentError, TypeError
92
120
  error "cannot convert #{input_value[key].inspect} into " \
93
121
  "bit assignment(#{key.to_s.tr('_', ' ')})"
@@ -121,9 +121,10 @@ RgGen.define_simple_feature(:bit_field, :initial_value) do
121
121
  end
122
122
 
123
123
  def parse_initial_value(input_value)
124
- if @input_format == :parameterized
124
+ case @input_format
125
+ when :parameterized
125
126
  [parse_parameterized_initial_value(input_value), nil]
126
- elsif @input_format == :array
127
+ when :array
127
128
  [nil, parse_arrayed_initial_value(input_value)]
128
129
  else
129
130
  [parse_value(input_value), nil]
@@ -82,6 +82,11 @@ RgGen.define_list_feature(:bit_field, :type) do
82
82
 
83
83
  build { |value| @type = value }
84
84
 
85
+ build do |value|
86
+ @type = value
87
+ helper.reserved? && bit_field.document_only
88
+ end
89
+
85
90
  printable :type
86
91
 
87
92
  private
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:rw, :w1, :wrc, :wrs]) do
4
+ register_map do
5
+ read_write
6
+ non_volatile
7
+ initial_value require: true
8
+ end
9
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, [:w0c, :w1c]) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:w0c, :w1c, :wc]) do
4
4
  register_map do
5
5
  read_write
6
6
  reference use: true
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, [:w0crs, :w1crs, :w0src, :w1src]) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:w0crs, :w1crs, :wcrs]) 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, [:w0s, :w1s]) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:w0s, :w1s, :ws]) do
4
4
  register_map do
5
5
  read_write
6
6
  initial_value require: true
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:w0src, :w1src, :wsrc]) do
4
+ register_map do
5
+ read_write
6
+ non_volatile
7
+ initial_value require: true
8
+ end
9
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, [:rw, :w1]) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:w0t, :w1t]) do
4
4
  register_map do
5
5
  read_write
6
6
  non_volatile
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, :woc) do
4
+ register_map do
5
+ write_only
6
+ reference use: true
7
+ initial_value require: true
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, :wos) do
4
+ register_map do
5
+ write_only
6
+ initial_value require: true
7
+ end
8
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ [:register_block, :register_file, :register, :bit_field].each do |layer|
4
+ RgGen.define_simple_feature(layer, :comment) do
5
+ register_map do
6
+ property :comment, initial: -> { '' }
7
+
8
+ build do |value|
9
+ @comment =
10
+ (value.is_a?(Array) && value.join("\n") || value.to_s).chomp
11
+ end
12
+
13
+ printable :comment do
14
+ comment.empty? ? nil : comment
15
+ end
16
+ end
17
+ end
18
+ end
@@ -5,12 +5,9 @@ RgGen.define_simple_feature(:global, :address_width) do
5
5
  property :address_width, default: 32
6
6
 
7
7
  build do |value|
8
- @address_width =
9
- begin
10
- Integer(value)
11
- rescue ArgumentError, TypeError
12
- error "cannot convert #{value.inspect} into address width"
13
- end
8
+ @address_width = Integer(value)
9
+ rescue ArgumentError, TypeError
10
+ error "cannot convert #{value.inspect} into address width"
14
11
  end
15
12
 
16
13
  verify(:component) do
@@ -6,12 +6,9 @@ RgGen.define_simple_feature(:global, :bus_width) do
6
6
  property :byte_width, initial: -> { bus_width / 8 }
7
7
 
8
8
  build do |value|
9
- @bus_width =
10
- begin
11
- Integer(value)
12
- rescue ArgumentError, TypeError
13
- error "cannot convert #{value.inspect} into bus width"
14
- end
9
+ @bus_width = Integer(value)
10
+ rescue ArgumentError, TypeError
11
+ error "cannot convert #{value.inspect} into bus width"
15
12
  end
16
13
 
17
14
  verify(:feature) do
@@ -5,15 +5,12 @@ RgGen.define_simple_feature(:register, :offset_address) do
5
5
  property :offset_address, initial: -> { default_offset_address }
6
6
  property :expanded_offset_addresses, forward_to: :expand_addresses
7
7
  property :address_range, initial: -> { start_address..end_address }
8
- property :overlap?, forward_to: :overlap_address_range?
8
+ property :overlap?, body: ->(other) { overlap_address_range?(other, false) }
9
9
 
10
10
  build do |value|
11
- @offset_address =
12
- begin
13
- Integer(value)
14
- rescue ArgumentError, TypeError
15
- error "cannot convert #{value.inspect} into offset address"
16
- end
11
+ @offset_address = Integer(value)
12
+ rescue ArgumentError, TypeError
13
+ error "cannot convert #{value.inspect} into offset address"
17
14
  end
18
15
 
19
16
  verify(:feature) do
@@ -44,7 +41,7 @@ RgGen.define_simple_feature(:register, :offset_address) do
44
41
  verify(:component) do
45
42
  error_condition do
46
43
  files_and_registers.any? do |other|
47
- overlap_address_range?(other) && exclusive_range?(other)
44
+ overlap_address_range?(other, true)
48
45
  end
49
46
  end
50
47
  message do
@@ -96,8 +93,9 @@ RgGen.define_simple_feature(:register, :offset_address) do
96
93
  configuration.byte_width
97
94
  end
98
95
 
99
- def overlap_address_range?(other)
100
- overlap_range?(other) && competitive_access?(other)
96
+ def overlap_address_range?(other, sharable)
97
+ overlap_range?(other) &&
98
+ (exclusive_range?(other) || competitive_access?(other, sharable))
101
99
  end
102
100
 
103
101
  def overlap_range?(other)
@@ -106,13 +104,17 @@ RgGen.define_simple_feature(:register, :offset_address) do
106
104
  self_range.include?(othre_range.first) || othre_range.include?(self_range.first)
107
105
  end
108
106
 
109
- def competitive_access?(other)
110
- other.register_file? ||
107
+ def exclusive_range?(other)
108
+ other.register_file? || other.reserved? || register.reserved?
109
+ end
110
+
111
+ def competitive_access?(other, sharable)
112
+ !sharable_range?(other, sharable) &&
111
113
  [:writable?, :readable?].any? { |access| [register, other].all?(&access) }
112
114
  end
113
115
 
114
- def exclusive_range?(other)
115
- other.register_file? || !(shared_address? && register.match_type?(other))
116
+ def sharable_range?(other, sharable)
117
+ sharable && shared_address? && register.match_type?(other)
116
118
  end
117
119
 
118
120
  def shared_address?
@@ -40,6 +40,7 @@ RgGen.define_list_feature(:register, :type) do
40
40
  property :match_type?, body: ->(register) { register.type == type }
41
41
  property :writable?, initial: -> { writability }
42
42
  property :readable?, initial: -> { readability }
43
+ property :reserved?, initial: -> { !(writable? || readable?) }
43
44
  property :settings, forward_to_helper: true
44
45
 
45
46
  build do |value|
@@ -48,6 +49,10 @@ RgGen.define_list_feature(:register, :type) do
48
49
  helper.need_bit_fields? || register.need_no_children
49
50
  end
50
51
 
52
+ post_build do
53
+ reserved? && register.document_only
54
+ end
55
+
51
56
  verify(:component) do
52
57
  error_condition do
53
58
  helper.need_bit_fields? && register.bit_fields.empty?
@@ -62,22 +67,13 @@ RgGen.define_list_feature(:register, :type) do
62
67
  attr_reader :options
63
68
 
64
69
  def writability
65
- instance_exec(&(helper.writability || default_writability))
66
- end
67
-
68
- def default_writability
69
- -> { register.bit_fields.any?(&:writable?) }
70
+ block = helper.writability || -> { register.bit_fields.any?(&:writable?) }
71
+ instance_exec(&block)
70
72
  end
71
73
 
72
74
  def readability
73
- instance_exec(&(helper.readability || default_readability))
74
- end
75
-
76
- def default_readability
77
- lambda do
78
- block = ->(bit_field) { bit_field.readable? || bit_field.reserved? }
79
- register.bit_fields.any?(&block)
80
- end
75
+ block = helper.readability || -> { register.bit_fields.any?(&:readable?) }
76
+ instance_exec(&block)
81
77
  end
82
78
  end
83
79
 
@@ -180,13 +180,13 @@ RgGen.define_list_item_feature(:register, :type, :indirect) do
180
180
 
181
181
  def create_index_entry(value)
182
182
  input_values = split_value(value)
183
- if input_values.size == 2
183
+ case input_values.size
184
+ when 2
184
185
  index_entry.new(input_values[0], convert_index_value(input_values[1]))
185
- elsif input_values.size == 1
186
+ when 1
186
187
  index_entry.new(input_values[0])
187
188
  else
188
- error 'too many arguments for indirect index ' \
189
- "are given: #{value.inspect}"
189
+ error "too many arguments for indirect index are given: #{value.inspect}"
190
190
  end
191
191
  end
192
192
 
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:register, :type, :reserved) do
4
+ register_map do
5
+ writable? { false }
6
+ readable? { false }
7
+ no_bit_fields
8
+ support_array_register
9
+ end
10
+ end
@@ -6,13 +6,10 @@ RgGen.define_simple_feature(:register_block, :byte_size) do
6
6
  property :local_address_width
7
7
 
8
8
  build do |value|
9
- @byte_size =
10
- begin
11
- Integer(value)
12
- rescue ArgumentError, TypeError
13
- error "cannot convert #{value.inspect} into byte size"
14
- end
9
+ @byte_size = Integer(value)
15
10
  @local_address_width = (@byte_size - 1).bit_length
11
+ rescue ArgumentError, TypeError
12
+ error "cannot convert #{value.inspect} into byte size"
16
13
  end
17
14
 
18
15
  verify(:feature) do
@@ -7,12 +7,9 @@ RgGen.define_simple_feature(:register_file, :offset_address) do
7
7
  property :address_range, initial: -> { start_address..end_address }
8
8
 
9
9
  build do |value|
10
- @offset_address =
11
- begin
12
- Integer(value)
13
- rescue ArgumentError, TypeError
14
- error "cannot convert #{value.inspect} into offset address"
15
- end
10
+ @offset_address = Integer(value)
11
+ rescue ArgumentError, TypeError
12
+ error "cannot convert #{value.inspect} into offset address"
16
13
  end
17
14
 
18
15
  verify(:feature) do
@@ -2,19 +2,26 @@
2
2
 
3
3
  require 'rggen/default_register_map'
4
4
 
5
- RgGen.setup :'rggen-defualt-register-map', RgGen::DefaultRegisterMap do |builder|
5
+ RgGen.register_plugin RgGen::DefaultRegisterMap do |builder|
6
6
  builder.enable :global, [:bus_width, :address_width]
7
- builder.enable :register_block, [:name, :byte_size]
8
- builder.enable :register_file, [:name, :offset_address, :size]
9
- builder.enable :register, [:name, :offset_address, :size, :type]
10
- builder.enable :register, :type, [:external, :indirect]
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]
11
17
  builder.enable :bit_field, [
12
18
  :name, :bit_assignment, :type, :initial_value, :reference, :comment
13
19
  ]
14
20
  builder.enable :bit_field, :type, [
15
21
  :rc, :reserved, :ro, :rof, :rs,
16
22
  :rw, :rwc, :rwe, :rwl, :rws,
17
- :w0c, :w0crs, :w0s, :w0src, :w0trg,
18
- :w1, :w1c, :w1crs, :w1s, :w1src, :w1trg, :wo, :wo1
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
19
26
  ]
20
27
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module DefaultRegisterMap
5
- VERSION = '0.20.0'
5
+ VERSION = '0.25.0'
6
6
  end
7
7
  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.20.0
4
+ version: 0.25.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: 2020-07-06 00:00:00.000000000 Z
11
+ date: 2021-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -36,7 +36,6 @@ 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
40
39
  - lib/rggen/default_register_map/bit_field/initial_value.rb
41
40
  - lib/rggen/default_register_map/bit_field/name.rb
42
41
  - lib/rggen/default_register_map/bit_field/reference.rb
@@ -46,14 +45,19 @@ files:
46
45
  - lib/rggen/default_register_map/bit_field/type/ro.rb
47
46
  - lib/rggen/default_register_map/bit_field/type/rof.rb
48
47
  - lib/rggen/default_register_map/bit_field/type/rs.rb
49
- - lib/rggen/default_register_map/bit_field/type/rw_w1.rb
48
+ - lib/rggen/default_register_map/bit_field/type/rw_w1_wrc_wrs.rb
50
49
  - lib/rggen/default_register_map/bit_field/type/rwc_rws.rb
51
50
  - lib/rggen/default_register_map/bit_field/type/rwe_rwl.rb
52
- - lib/rggen/default_register_map/bit_field/type/w0c_w1c.rb
53
- - lib/rggen/default_register_map/bit_field/type/w0crs_w1crs_w0src_w1src.rb
54
- - lib/rggen/default_register_map/bit_field/type/w0s_w1s.rb
51
+ - lib/rggen/default_register_map/bit_field/type/w0c_w1c_wc.rb
52
+ - lib/rggen/default_register_map/bit_field/type/w0crs_w1crs_wcrs.rb
53
+ - lib/rggen/default_register_map/bit_field/type/w0s_w1s_ws.rb
54
+ - lib/rggen/default_register_map/bit_field/type/w0src_w1src_wsrc.rb
55
+ - lib/rggen/default_register_map/bit_field/type/w0t_w1t.rb
55
56
  - lib/rggen/default_register_map/bit_field/type/w0trg_w1trg.rb
56
57
  - lib/rggen/default_register_map/bit_field/type/wo_wo1.rb
58
+ - lib/rggen/default_register_map/bit_field/type/woc.rb
59
+ - lib/rggen/default_register_map/bit_field/type/wos.rb
60
+ - lib/rggen/default_register_map/common/comment.rb
57
61
  - lib/rggen/default_register_map/global/address_width.rb
58
62
  - lib/rggen/default_register_map/global/bus_width.rb
59
63
  - lib/rggen/default_register_map/register/name.rb
@@ -62,6 +66,7 @@ files:
62
66
  - lib/rggen/default_register_map/register/type.rb
63
67
  - lib/rggen/default_register_map/register/type/external.rb
64
68
  - lib/rggen/default_register_map/register/type/indirect.rb
69
+ - lib/rggen/default_register_map/register/type/reserved.rb
65
70
  - lib/rggen/default_register_map/register_block/byte_size.rb
66
71
  - lib/rggen/default_register_map/register_block/name.rb
67
72
  - lib/rggen/default_register_map/register_file/name.rb
@@ -85,15 +90,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
85
90
  requirements:
86
91
  - - ">="
87
92
  - !ruby/object:Gem::Version
88
- version: '2.4'
93
+ version: '2.5'
89
94
  required_rubygems_version: !ruby/object:Gem::Requirement
90
95
  requirements:
91
96
  - - ">="
92
97
  - !ruby/object:Gem::Version
93
98
  version: '0'
94
99
  requirements: []
95
- rubygems_version: 3.1.2
100
+ rubygems_version: 3.2.3
96
101
  signing_key:
97
102
  specification_version: 4
98
- summary: rggen-default-register-map-0.20.0
103
+ summary: rggen-default-register-map-0.25.0
99
104
  test_files: []
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RgGen.define_simple_feature(:bit_field, :comment) do
4
- register_map do
5
- property :comment, body: -> { @comment ||= '' }
6
-
7
- build do |value|
8
- @comment =
9
- if value.is_a?(Array)
10
- value.join("\n")
11
- else
12
- value.to_s
13
- end
14
- end
15
-
16
- printable :comment
17
- end
18
- end