rggen-default-register-map 0.13.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 (36) hide show
  1. checksums.yaml +7 -0
  2. data/CODE_OF_CONDUCT.md +74 -0
  3. data/LICENSE +21 -0
  4. data/README.md +45 -0
  5. data/lib/rggen/default_register_map.rb +46 -0
  6. data/lib/rggen/default_register_map/bit_field/bit_assignment.rb +122 -0
  7. data/lib/rggen/default_register_map/bit_field/comment.rb +18 -0
  8. data/lib/rggen/default_register_map/bit_field/initial_value.rb +75 -0
  9. data/lib/rggen/default_register_map/bit_field/name.rb +37 -0
  10. data/lib/rggen/default_register_map/bit_field/reference.rb +142 -0
  11. data/lib/rggen/default_register_map/bit_field/type.rb +117 -0
  12. data/lib/rggen/default_register_map/bit_field/type/rc.rb +9 -0
  13. data/lib/rggen/default_register_map/bit_field/type/reserved.rb +8 -0
  14. data/lib/rggen/default_register_map/bit_field/type/ro.rb +8 -0
  15. data/lib/rggen/default_register_map/bit_field/type/rof.rb +9 -0
  16. data/lib/rggen/default_register_map/bit_field/type/rs.rb +8 -0
  17. data/lib/rggen/default_register_map/bit_field/type/rw.rb +9 -0
  18. data/lib/rggen/default_register_map/bit_field/type/rwc.rb +9 -0
  19. data/lib/rggen/default_register_map/bit_field/type/rwe_rwl.rb +10 -0
  20. data/lib/rggen/default_register_map/bit_field/type/w0c_w1c.rb +9 -0
  21. data/lib/rggen/default_register_map/bit_field/type/w0s_w1s.rb +8 -0
  22. data/lib/rggen/default_register_map/bit_field/type/w0trg_w1trg.rb +8 -0
  23. data/lib/rggen/default_register_map/bit_field/type/wo.rb +9 -0
  24. data/lib/rggen/default_register_map/global/address_width.rb +34 -0
  25. data/lib/rggen/default_register_map/global/bus_width.rb +35 -0
  26. data/lib/rggen/default_register_map/register/name.rb +36 -0
  27. data/lib/rggen/default_register_map/register/offset_address.rb +106 -0
  28. data/lib/rggen/default_register_map/register/size.rb +95 -0
  29. data/lib/rggen/default_register_map/register/type.rb +135 -0
  30. data/lib/rggen/default_register_map/register/type/external.rb +16 -0
  31. data/lib/rggen/default_register_map/register/type/indirect.rb +256 -0
  32. data/lib/rggen/default_register_map/register_block/byte_size.rb +61 -0
  33. data/lib/rggen/default_register_map/register_block/name.rb +38 -0
  34. data/lib/rggen/default_register_map/setup.rb +18 -0
  35. data/lib/rggen/default_register_map/version.rb +7 -0
  36. metadata +95 -0
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_simple_feature(:register_block, :byte_size) do
4
+ register_map do
5
+ property :byte_size
6
+ property :local_address_width
7
+
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
15
+ @local_address_width = (@byte_size - 1).bit_length
16
+ end
17
+
18
+ verify(:feature) do
19
+ error_condition { !byte_size }
20
+ message { 'no byte size is given' }
21
+ end
22
+
23
+ verify(:feature) do
24
+ error_condition { !byte_size.positive? }
25
+ message do
26
+ "non positive value is not allowed for byte size: #{byte_size}"
27
+ end
28
+ end
29
+
30
+ verify(:feature) do
31
+ error_condition { byte_size > max_byte_size }
32
+ message do
33
+ 'input byte size is greater than maximum byte size: ' \
34
+ "input byte size #{byte_size} maximum byte size #{max_byte_size}"
35
+ end
36
+ end
37
+
38
+ verify(:feature) do
39
+ error_condition { (byte_size % byte_width).positive? }
40
+ message do
41
+ "byte size is not aligned with bus width(#{bus_width}): #{byte_size}"
42
+ end
43
+ end
44
+
45
+ printable :byte_size
46
+
47
+ private
48
+
49
+ def max_byte_size
50
+ 2**configuration.address_width
51
+ end
52
+
53
+ def byte_width
54
+ configuration.byte_width
55
+ end
56
+
57
+ def bus_width
58
+ configuration.bus_width
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_simple_feature(:register_block, :name) do
4
+ register_map do
5
+ property :name
6
+
7
+ input_pattern variable_name
8
+
9
+ build do |value|
10
+ @name =
11
+ if pattern_matched?
12
+ match_data.to_s
13
+ else
14
+ error "illegal input value for register block name: #{value.inspect}"
15
+ end
16
+ end
17
+
18
+ verify(:feature) do
19
+ error_condition { !name }
20
+ message { 'no register block name is given' }
21
+ end
22
+
23
+ verify(:feature) do
24
+ error_condition { duplicated_name? }
25
+ message { "duplicated register block name: #{name}" }
26
+ end
27
+
28
+ printable :name
29
+
30
+ private
31
+
32
+ def duplicated_name?
33
+ register_map
34
+ .register_blocks
35
+ .any? { |register_block| register_block.name == name }
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rggen/default_register_map'
4
+
5
+ RgGen.setup :'defualt-register-map', RgGen::DefaultRegisterMap do |builder|
6
+ builder.enable :global, [:bus_width, :address_width]
7
+ builder.enable :register_block, [:name, :byte_size]
8
+ builder.enable :register, [:name, :offset_address, :size, :type]
9
+ builder.enable :register, :type, [:external, :indirect]
10
+ builder.enable :bit_field, [
11
+ :name, :bit_assignment, :type, :initial_value, :reference, :comment
12
+ ]
13
+ builder.enable :bit_field, :type, [
14
+ :rc, :reserved, :ro, :rof, :rs,
15
+ :rw, :rwc, :rwe, :rwl, :w0c, :w0s, :w0trg,
16
+ :w1c, :w1s, :w1trg, :wo
17
+ ]
18
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgGen
4
+ module DefaultRegisterMap
5
+ VERSION = '0.13.0'
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rggen-default-register-map
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.13.0
5
+ platform: ruby
6
+ authors:
7
+ - Taichi Ishitani
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-08-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Default register map implementation for RgGen
28
+ email:
29
+ - rggen@googlegroups.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - CODE_OF_CONDUCT.md
35
+ - LICENSE
36
+ - README.md
37
+ - lib/rggen/default_register_map.rb
38
+ - lib/rggen/default_register_map/bit_field/bit_assignment.rb
39
+ - lib/rggen/default_register_map/bit_field/comment.rb
40
+ - lib/rggen/default_register_map/bit_field/initial_value.rb
41
+ - lib/rggen/default_register_map/bit_field/name.rb
42
+ - lib/rggen/default_register_map/bit_field/reference.rb
43
+ - lib/rggen/default_register_map/bit_field/type.rb
44
+ - lib/rggen/default_register_map/bit_field/type/rc.rb
45
+ - lib/rggen/default_register_map/bit_field/type/reserved.rb
46
+ - lib/rggen/default_register_map/bit_field/type/ro.rb
47
+ - lib/rggen/default_register_map/bit_field/type/rof.rb
48
+ - lib/rggen/default_register_map/bit_field/type/rs.rb
49
+ - lib/rggen/default_register_map/bit_field/type/rw.rb
50
+ - lib/rggen/default_register_map/bit_field/type/rwc.rb
51
+ - 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/w0s_w1s.rb
54
+ - lib/rggen/default_register_map/bit_field/type/w0trg_w1trg.rb
55
+ - lib/rggen/default_register_map/bit_field/type/wo.rb
56
+ - lib/rggen/default_register_map/global/address_width.rb
57
+ - lib/rggen/default_register_map/global/bus_width.rb
58
+ - lib/rggen/default_register_map/register/name.rb
59
+ - lib/rggen/default_register_map/register/offset_address.rb
60
+ - lib/rggen/default_register_map/register/size.rb
61
+ - lib/rggen/default_register_map/register/type.rb
62
+ - lib/rggen/default_register_map/register/type/external.rb
63
+ - lib/rggen/default_register_map/register/type/indirect.rb
64
+ - lib/rggen/default_register_map/register_block/byte_size.rb
65
+ - lib/rggen/default_register_map/register_block/name.rb
66
+ - lib/rggen/default_register_map/setup.rb
67
+ - lib/rggen/default_register_map/version.rb
68
+ homepage: https://github.com/rggen/rggen-default-register-map
69
+ licenses:
70
+ - MIT
71
+ metadata:
72
+ bug_tracker_uri: https://github.com/rggen/rggen-default-register-map/issues
73
+ mailing_list_uri: https://groups.google.com/d/forum/rggen
74
+ source_code_uri: https://github.com/rggen/rggen-default-register-map
75
+ wiki_uri: https://github.com/rggen/rggen/wiki
76
+ post_install_message:
77
+ rdoc_options: []
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '2.3'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ requirements: []
91
+ rubygems_version: 3.0.3
92
+ signing_key:
93
+ specification_version: 4
94
+ summary: rggen-default-register-map-0.13.0
95
+ test_files: []