rggen 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -2
- data/lib/rggen.rb +0 -1
- data/lib/rggen/default.rb +7 -0
- data/lib/rggen/default_setup_file.rb +1 -2
- data/lib/rggen/version.rb +1 -3
- metadata +25 -81
- data/lib/rggen/built_in.rb +0 -57
- data/lib/rggen/built_in/bit_field/bit_assignment.rb +0 -114
- data/lib/rggen/built_in/bit_field/comment.rb +0 -18
- data/lib/rggen/built_in/bit_field/initial_value.rb +0 -75
- data/lib/rggen/built_in/bit_field/name.rb +0 -41
- data/lib/rggen/built_in/bit_field/reference.rb +0 -139
- data/lib/rggen/built_in/bit_field/sv_rtl_top.rb +0 -89
- data/lib/rggen/built_in/bit_field/type.rb +0 -245
- data/lib/rggen/built_in/bit_field/type/rc_w0c_w1c.erb +0 -15
- data/lib/rggen/built_in/bit_field/type/rc_w0c_w1c.rb +0 -59
- data/lib/rggen/built_in/bit_field/type/reserved.erb +0 -3
- data/lib/rggen/built_in/bit_field/type/reserved.rb +0 -16
- data/lib/rggen/built_in/bit_field/type/ro.erb +0 -6
- data/lib/rggen/built_in/bit_field/type/ro.rb +0 -31
- data/lib/rggen/built_in/bit_field/type/rof.erb +0 -6
- data/lib/rggen/built_in/bit_field/type/rof.rb +0 -17
- data/lib/rggen/built_in/bit_field/type/rs_w0s_w1s.erb +0 -13
- data/lib/rggen/built_in/bit_field/type/rs_w0s_w1s.rb +0 -46
- data/lib/rggen/built_in/bit_field/type/rw_wo.erb +0 -9
- data/lib/rggen/built_in/bit_field/type/rw_wo.rb +0 -30
- data/lib/rggen/built_in/bit_field/type/rwc_rwe_rwl.erb +0 -16
- data/lib/rggen/built_in/bit_field/type/rwc_rwe_rwl.rb +0 -92
- data/lib/rggen/built_in/bit_field/type/w0trg_w1trg.erb +0 -9
- data/lib/rggen/built_in/bit_field/type/w0trg_w1trg.rb +0 -29
- data/lib/rggen/built_in/global/address_width.rb +0 -34
- data/lib/rggen/built_in/global/array_port_format.rb +0 -19
- data/lib/rggen/built_in/global/bus_width.rb +0 -35
- data/lib/rggen/built_in/global/fold_sv_interface_port.rb +0 -24
- data/lib/rggen/built_in/register/markdown.erb +0 -11
- data/lib/rggen/built_in/register/markdown.rb +0 -26
- data/lib/rggen/built_in/register/name.rb +0 -36
- data/lib/rggen/built_in/register/offset_address.rb +0 -106
- data/lib/rggen/built_in/register/size.rb +0 -95
- data/lib/rggen/built_in/register/sv_rtl_top.rb +0 -82
- data/lib/rggen/built_in/register/type.rb +0 -344
- data/lib/rggen/built_in/register/type/default_sv_ral.erb +0 -8
- data/lib/rggen/built_in/register/type/default_sv_rtl.erb +0 -15
- data/lib/rggen/built_in/register/type/external.erb +0 -11
- data/lib/rggen/built_in/register/type/external.rb +0 -128
- data/lib/rggen/built_in/register/type/indirect.rb +0 -327
- data/lib/rggen/built_in/register/type/indirect_sv_ral.erb +0 -13
- data/lib/rggen/built_in/register/type/indirect_sv_rtl.erb +0 -17
- data/lib/rggen/built_in/register_block/byte_size.rb +0 -61
- data/lib/rggen/built_in/register_block/markdown.erb +0 -8
- data/lib/rggen/built_in/register_block/markdown.rb +0 -36
- data/lib/rggen/built_in/register_block/name.rb +0 -38
- data/lib/rggen/built_in/register_block/protocol.rb +0 -100
- data/lib/rggen/built_in/register_block/protocol/apb.erb +0 -10
- data/lib/rggen/built_in/register_block/protocol/apb.rb +0 -89
- data/lib/rggen/built_in/register_block/protocol/axi4lite.erb +0 -11
- data/lib/rggen/built_in/register_block/protocol/axi4lite.rb +0 -125
- data/lib/rggen/built_in/register_block/sv_ral_block_model.erb +0 -11
- data/lib/rggen/built_in/register_block/sv_ral_package.rb +0 -65
- data/lib/rggen/built_in/register_block/sv_rtl_macros.erb +0 -9
- data/lib/rggen/built_in/register_block/sv_rtl_top.rb +0 -86
- data/lib/rggen/built_in/version.rb +0 -7
- data/lib/rggen/setup/default.rb +0 -30
- data/sample/block_0.md +0 -155
- data/sample/block_0.rb +0 -90
- data/sample/block_0.sv +0 -678
- data/sample/block_0.xlsx +0 -0
- data/sample/block_0.yml +0 -99
- data/sample/block_0_ral_pkg.sv +0 -184
- data/sample/block_1.md +0 -39
- data/sample/block_1.rb +0 -22
- data/sample/block_1.sv +0 -136
- data/sample/block_1.xlsx +0 -0
- data/sample/block_1.yml +0 -26
- data/sample/block_1_ral_pkg.sv +0 -68
- data/sample/config.json +0 -5
- data/sample/config.yml +0 -3
@@ -1,11 +0,0 @@
|
|
1
|
-
function new(string name);
|
2
|
-
super.new(name);
|
3
|
-
endfunction
|
4
|
-
function void build();
|
5
|
-
<% reg_model_constructors.each do |constructor| %>
|
6
|
-
<%= constructor %>
|
7
|
-
<% end %>
|
8
|
-
endfunction
|
9
|
-
function uvm_reg_map create_default_map();
|
10
|
-
return create_map("default_map", 0, <%= byte_width %>, UVM_LITTLE_ENDIAN, 1);
|
11
|
-
endfunction
|
@@ -1,65 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RgGen.define_simple_feature(:register_block, :sv_ral_package) do
|
4
|
-
sv_ral do
|
5
|
-
write_file '<%= package_name %>.sv' do |file|
|
6
|
-
file.body do
|
7
|
-
package_definition(package_name) do |package|
|
8
|
-
package.package_imports packages
|
9
|
-
package.include_files include_files
|
10
|
-
package.body do |code|
|
11
|
-
register_block.generate_code(:ral_package, :bottom_up, code)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
main_code :ral_package do
|
18
|
-
class_definition(model_name) do |sv_class|
|
19
|
-
sv_class.base 'rggen_ral_block'
|
20
|
-
sv_class.parameters parameters
|
21
|
-
sv_class.variables variables
|
22
|
-
sv_class.body do
|
23
|
-
process_template(File.join(__dir__, 'sv_ral_block_model.erb'))
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def package_name
|
31
|
-
"#{register_block.name}_ral_pkg"
|
32
|
-
end
|
33
|
-
|
34
|
-
def packages
|
35
|
-
[
|
36
|
-
'uvm_pkg', 'rggen_ral_pkg',
|
37
|
-
*register_block.package_imports(:ral_package)
|
38
|
-
]
|
39
|
-
end
|
40
|
-
|
41
|
-
def include_files
|
42
|
-
['uvm_macros.svh', 'rggen_ral_macros.svh']
|
43
|
-
end
|
44
|
-
|
45
|
-
def model_name
|
46
|
-
"#{register_block.name}_block_model"
|
47
|
-
end
|
48
|
-
|
49
|
-
def parameters
|
50
|
-
register_block.declarations(:register_block, :parameter)
|
51
|
-
end
|
52
|
-
|
53
|
-
def variables
|
54
|
-
register_block.declarations(:register_block, :variable)
|
55
|
-
end
|
56
|
-
|
57
|
-
def reg_model_constructors
|
58
|
-
register_block.registers.flat_map(&:constructors)
|
59
|
-
end
|
60
|
-
|
61
|
-
def byte_width
|
62
|
-
configuration.byte_width
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,9 +0,0 @@
|
|
1
|
-
`ifndef rggen_connect_bit_field_if
|
2
|
-
`define rggen_connect_bit_field_if(RIF, FIF, LSB, WIDTH) \
|
3
|
-
assign FIF.valid = RIF.valid; \
|
4
|
-
assign FIF.read_mask = RIF.read_mask[LSB+:WIDTH]; \
|
5
|
-
assign FIF.write_mask = RIF.write_mask[LSB+:WIDTH]; \
|
6
|
-
assign FIF.write_data = RIF.write_data[LSB+:WIDTH]; \
|
7
|
-
assign RIF.read_data[LSB+:WIDTH] = FIF.read_data; \
|
8
|
-
assign RIF.value[LSB+:WIDTH] = FIF.value;
|
9
|
-
`endif
|
@@ -1,86 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RgGen.define_simple_feature(:register_block, :sv_rtl_top) do
|
4
|
-
sv_rtl do
|
5
|
-
export :total_registers
|
6
|
-
|
7
|
-
build do
|
8
|
-
input :register_block, :clock, {
|
9
|
-
name: 'i_clk', data_type: :logic, width: 1
|
10
|
-
}
|
11
|
-
input :register_block, :reset, {
|
12
|
-
name: 'i_rst_n', data_type: :logic, width: 1
|
13
|
-
}
|
14
|
-
interface :register_block, :register_if, {
|
15
|
-
name: 'register_if', interface_type: 'rggen_register_if',
|
16
|
-
parameter_values: [address_width, bus_width, value_width],
|
17
|
-
array_size: [total_registers],
|
18
|
-
variables: ['value']
|
19
|
-
}
|
20
|
-
end
|
21
|
-
|
22
|
-
write_file '<%= register_block.name %>.sv' do |file|
|
23
|
-
file.body(&method(:body_code))
|
24
|
-
end
|
25
|
-
|
26
|
-
def total_registers
|
27
|
-
register_block
|
28
|
-
.registers
|
29
|
-
.map(&:count)
|
30
|
-
.inject(:+)
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def address_width
|
36
|
-
register_block.local_address_width
|
37
|
-
end
|
38
|
-
|
39
|
-
def bus_width
|
40
|
-
configuration.bus_width
|
41
|
-
end
|
42
|
-
|
43
|
-
def value_width
|
44
|
-
register_block.registers.map(&:width).max
|
45
|
-
end
|
46
|
-
|
47
|
-
def body_code(code)
|
48
|
-
macro_definition(code)
|
49
|
-
sv_module_definition(code)
|
50
|
-
end
|
51
|
-
|
52
|
-
def macro_definition(code)
|
53
|
-
code << process_template(File.join(__dir__, 'sv_rtl_macros.erb'))
|
54
|
-
end
|
55
|
-
|
56
|
-
def sv_module_definition(code)
|
57
|
-
code << module_definition(register_block.name) do |sv_module|
|
58
|
-
sv_module.package_imports packages
|
59
|
-
sv_module.parameters parameters
|
60
|
-
sv_module.ports ports
|
61
|
-
sv_module.variables variables
|
62
|
-
sv_module.body(&method(:sv_module_body))
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def packages
|
67
|
-
['rggen_rtl_pkg', *register_block.package_imports(:register_block)]
|
68
|
-
end
|
69
|
-
|
70
|
-
def parameters
|
71
|
-
register_block.declarations(:register_block, :parameter)
|
72
|
-
end
|
73
|
-
|
74
|
-
def ports
|
75
|
-
register_block.declarations(:register_block, :port)
|
76
|
-
end
|
77
|
-
|
78
|
-
def variables
|
79
|
-
register_block.declarations(:register_block, :variable)
|
80
|
-
end
|
81
|
-
|
82
|
-
def sv_module_body(code)
|
83
|
-
register_block.generate_code(:register_block, :top_down, code)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
data/lib/rggen/setup/default.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'rggen/built_in'
|
4
|
-
require 'rggen/spreadsheet_loader'
|
5
|
-
|
6
|
-
RgGen.enable :global, [
|
7
|
-
:bus_width, :address_width, :array_port_format, :fold_sv_interface_port
|
8
|
-
]
|
9
|
-
|
10
|
-
RgGen.enable :register_block, [:name, :byte_size]
|
11
|
-
RgGen.enable :register, [:name, :offset_address, :size, :type]
|
12
|
-
RgGen.enable :register, :type, [:external, :indirect]
|
13
|
-
RgGen.enable :bit_field, [
|
14
|
-
:name, :bit_assignment, :type, :initial_value, :reference, :comment
|
15
|
-
]
|
16
|
-
RgGen.enable :bit_field, :type, [
|
17
|
-
:rc, :reserved, :ro, :rof, :rs,
|
18
|
-
:rw, :rwc, :rwe, :rwl, :w0c, :w1c, :w0s, :w1s,
|
19
|
-
:w0trg, :w1trg, :wo
|
20
|
-
]
|
21
|
-
|
22
|
-
RgGen.enable :register_block, [:sv_rtl_top, :protocol]
|
23
|
-
RgGen.enable :register_block, :protocol, [:apb, :axi4lite]
|
24
|
-
RgGen.enable :register, [:sv_rtl_top]
|
25
|
-
RgGen.enable :bit_field, [:sv_rtl_top]
|
26
|
-
|
27
|
-
RgGen.enable :register_block, [:sv_ral_package]
|
28
|
-
|
29
|
-
RgGen.enable :register_block, [:markdown]
|
30
|
-
RgGen.enable :register, [:markdown]
|
data/sample/block_0.md
DELETED
@@ -1,155 +0,0 @@
|
|
1
|
-
## block_0
|
2
|
-
|
3
|
-
* name
|
4
|
-
* block_0
|
5
|
-
* byte_size
|
6
|
-
* 256
|
7
|
-
|
8
|
-
|name|offset_address|
|
9
|
-
|:--|:--|
|
10
|
-
|[register_0](#block_0-register_0)|0x00 - 0x03|
|
11
|
-
|[register_1](#block_0-register_1)|0x04 - 0x07|
|
12
|
-
|[register_2](#block_0-register_2)|0x04 - 0x07|
|
13
|
-
|[register_3](#block_0-register_3)|0x08 - 0x0b|
|
14
|
-
|[register_4](#block_0-register_4)|0x0c - 0x0f|
|
15
|
-
|[register_5](#block_0-register_5)|0x10 - 0x13|
|
16
|
-
|[register_6](#block_0-register_6)|0x20 - 0x3f|
|
17
|
-
|[register_7](#block_0-register_7)|0x40 - 0x47|
|
18
|
-
|[register_8](#block_0-register_8)|0x80 - 0xff|
|
19
|
-
|
20
|
-
### <div id="block_0-register_0"></div>register_0
|
21
|
-
|
22
|
-
* name
|
23
|
-
* register_0
|
24
|
-
* offset_address
|
25
|
-
* 0x00 - 0x03
|
26
|
-
* array_size
|
27
|
-
* NA
|
28
|
-
|
29
|
-
|name|bit_assignments|type|initial_value|comment|
|
30
|
-
|:--|:--|:--|:--|:--|
|
31
|
-
|bit_field_0|[3:0]|rw|0x0||
|
32
|
-
|bit_field_1|[7:4]|rw|0x0||
|
33
|
-
|bit_field_2|[8]|rw|0x0||
|
34
|
-
|
35
|
-
### <div id="block_0-register_1"></div>register_1
|
36
|
-
|
37
|
-
* name
|
38
|
-
* register_1
|
39
|
-
* offset_address
|
40
|
-
* 0x04 - 0x07
|
41
|
-
* array_size
|
42
|
-
* NA
|
43
|
-
|
44
|
-
|name|bit_assignments|type|initial_value|comment|
|
45
|
-
|:--|:--|:--|:--|:--|
|
46
|
-
|bit_field_0|[3:0]|ro|||
|
47
|
-
|bit_field_1|[11:8]|ro|||
|
48
|
-
|bit_field_2|[23:16]|rof|0xab||
|
49
|
-
|bit_field_3|[31:24]|reserved|||
|
50
|
-
|
51
|
-
### <div id="block_0-register_2"></div>register_2
|
52
|
-
|
53
|
-
* name
|
54
|
-
* register_2
|
55
|
-
* offset_address
|
56
|
-
* 0x04 - 0x07
|
57
|
-
* array_size
|
58
|
-
* NA
|
59
|
-
|
60
|
-
|name|bit_assignments|type|initial_value|comment|
|
61
|
-
|:--|:--|:--|:--|:--|
|
62
|
-
|bit_field_0|[3:0]|wo|0x0||
|
63
|
-
|bit_field_1|[11:8]|w0trg|||
|
64
|
-
|bit_field_2|[19:16]|w1trg|||
|
65
|
-
|
66
|
-
### <div id="block_0-register_3"></div>register_3
|
67
|
-
|
68
|
-
* name
|
69
|
-
* register_3
|
70
|
-
* offset_address
|
71
|
-
* 0x08 - 0x0b
|
72
|
-
* array_size
|
73
|
-
* NA
|
74
|
-
|
75
|
-
|name|bit_assignments|type|initial_value|comment|
|
76
|
-
|:--|:--|:--|:--|:--|
|
77
|
-
|bit_field_0|[3:0]|rc|0x0||
|
78
|
-
|bit_field_1|[11:8]|rc|0x0||
|
79
|
-
|bit_field_2|[15:12]|ro|||
|
80
|
-
|bit_field_3|[19:16]|rs|0x0||
|
81
|
-
|
82
|
-
### <div id="block_0-register_4"></div>register_4
|
83
|
-
|
84
|
-
* name
|
85
|
-
* register_4
|
86
|
-
* offset_address
|
87
|
-
* 0x0c - 0x0f
|
88
|
-
* array_size
|
89
|
-
* NA
|
90
|
-
|
91
|
-
|name|bit_assignments|type|initial_value|comment|
|
92
|
-
|:--|:--|:--|:--|:--|
|
93
|
-
|bit_field_0|[3:0]|rwc|0x0||
|
94
|
-
|bit_field_1|[7:4]|rwc|0x0||
|
95
|
-
|bit_field_2|[11:8]|rwe|0x0||
|
96
|
-
|bit_field_3|[15:12]|rwe|0x0||
|
97
|
-
|bit_field_4|[19:16]|rwl|0x0||
|
98
|
-
|bit_field_5|[23:20]|rwl|0x0||
|
99
|
-
|
100
|
-
### <div id="block_0-register_5"></div>register_5
|
101
|
-
|
102
|
-
* name
|
103
|
-
* register_5
|
104
|
-
* offset_address
|
105
|
-
* 0x10 - 0x13
|
106
|
-
* array_size
|
107
|
-
* NA
|
108
|
-
|
109
|
-
|name|bit_assignments|type|initial_value|comment|
|
110
|
-
|:--|:--|:--|:--|:--|
|
111
|
-
|bit_field_0|[3:0]|w0c|0x0||
|
112
|
-
|bit_field_1|[7:4]|w0c|0x0||
|
113
|
-
|bit_field_2|[11:8]|ro|||
|
114
|
-
|bit_field_3|[15:12]|w1c|0x0||
|
115
|
-
|bit_field_4|[19:16]|w1c|0x0||
|
116
|
-
|bit_field_5|[23:20]|ro|||
|
117
|
-
|bit_field_6|[27:24]|w0s|0x0||
|
118
|
-
|bit_field_7|[31:28]|w1s|0x0||
|
119
|
-
|
120
|
-
### <div id="block_0-register_6"></div>register_6
|
121
|
-
|
122
|
-
* name
|
123
|
-
* register_6
|
124
|
-
* offset_address
|
125
|
-
* 0x20 - 0x3f
|
126
|
-
* array_size
|
127
|
-
* [4]
|
128
|
-
|
129
|
-
|name|bit_assignments|type|initial_value|comment|
|
130
|
-
|:--|:--|:--|:--|:--|
|
131
|
-
|bit_field_0|[7:0]<br>[23:16]<br>[39:32]<br>[55:48]|rw|0x00||
|
132
|
-
|bit_field_1|[15:8]<br>[31:24]<br>[47:40]<br>[63:56]|rw|0x00||
|
133
|
-
|
134
|
-
### <div id="block_0-register_7"></div>register_7
|
135
|
-
|
136
|
-
* name
|
137
|
-
* register_7
|
138
|
-
* offset_address
|
139
|
-
* 0x40 - 0x47
|
140
|
-
* array_size
|
141
|
-
* [2, 4]
|
142
|
-
|
143
|
-
|name|bit_assignments|type|initial_value|comment|
|
144
|
-
|:--|:--|:--|:--|:--|
|
145
|
-
|bit_field_0|[7:0]<br>[23:16]<br>[39:32]<br>[55:48]|rw|0x00||
|
146
|
-
|bit_field_1|[15:8]<br>[31:24]<br>[47:40]<br>[63:56]|rw|0x00||
|
147
|
-
|
148
|
-
### <div id="block_0-register_8"></div>register_8
|
149
|
-
|
150
|
-
* name
|
151
|
-
* register_8
|
152
|
-
* offset_address
|
153
|
-
* 0x80 - 0xff
|
154
|
-
* array_size
|
155
|
-
* NA
|
data/sample/block_0.rb
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
register_block {
|
4
|
-
name 'block_0'
|
5
|
-
byte_size 256
|
6
|
-
|
7
|
-
register {
|
8
|
-
name 'register_0'
|
9
|
-
offset_address 0x00
|
10
|
-
bit_field { name 'bit_field_0'; bit_assignment lsb: 0 , width: 4; type :rw; initial_value 0 }
|
11
|
-
bit_field { name 'bit_field_1'; bit_assignment lsb: 4 , width: 4; type :rw; initial_value 0 }
|
12
|
-
bit_field { name 'bit_field_2'; bit_assignment lsb: 8 , width: 1; type :rw; initial_value 0 }
|
13
|
-
}
|
14
|
-
|
15
|
-
register {
|
16
|
-
name 'register_1'
|
17
|
-
offset_address 0x04
|
18
|
-
bit_field { name 'bit_field_0'; bit_assignment lsb: 0 , width: 4; type :ro }
|
19
|
-
bit_field { name 'bit_field_1'; bit_assignment lsb: 8 , width: 4; type :ro }
|
20
|
-
bit_field { name 'bit_field_2'; bit_assignment lsb: 16, width: 8; type :rof; initial_value 0xab }
|
21
|
-
bit_field { name 'bit_field_3'; bit_assignment lsb: 24, width: 8; type :reserved }
|
22
|
-
}
|
23
|
-
|
24
|
-
register {
|
25
|
-
name 'register_2'
|
26
|
-
offset_address 0x04
|
27
|
-
bit_field { name 'bit_field_0'; bit_assignment lsb: 0 , width: 4; type :wo; initial_value 0 }
|
28
|
-
bit_field { name 'bit_field_1'; bit_assignment lsb: 8 , width: 4; type :w0trg }
|
29
|
-
bit_field { name 'bit_field_2'; bit_assignment lsb: 16, width: 4; type :w1trg }
|
30
|
-
}
|
31
|
-
|
32
|
-
register {
|
33
|
-
name 'register_3'
|
34
|
-
offset_address 0x08
|
35
|
-
bit_field { name 'bit_field_0'; bit_assignment lsb: 0 , width: 4; type :rc; initial_value 0 }
|
36
|
-
bit_field { name 'bit_field_1'; bit_assignment lsb: 8 , width: 4; type :rc; initial_value 0; reference 'register_0.bit_field_0' }
|
37
|
-
bit_field { name 'bit_field_2'; bit_assignment lsb: 12, width: 4; type :ro; reference 'register_3.bit_field_1' }
|
38
|
-
bit_field { name 'bit_field_3'; bit_assignment lsb: 16, width: 4; type :rs; initial_value 0 }
|
39
|
-
}
|
40
|
-
|
41
|
-
register {
|
42
|
-
name 'register_4'
|
43
|
-
offset_address 0x0C
|
44
|
-
bit_field { name 'bit_field_0'; bit_assignment lsb: 0 , width: 4; type :rwc; initial_value 0 }
|
45
|
-
bit_field { name 'bit_field_1'; bit_assignment lsb: 4 , width: 4; type :rwc; initial_value 0; reference 'register_2.bit_field_1' }
|
46
|
-
bit_field { name 'bit_field_2'; bit_assignment lsb: 8 , width: 4; type :rwe; initial_value 0 }
|
47
|
-
bit_field { name 'bit_field_3'; bit_assignment lsb: 12, width: 4; type :rwe; initial_value 0; reference 'register_0.bit_field_2' }
|
48
|
-
bit_field { name 'bit_field_4'; bit_assignment lsb: 16, width: 4; type :rwl; initial_value 0 }
|
49
|
-
bit_field { name 'bit_field_5'; bit_assignment lsb: 20, width: 4; type :rwl; initial_value 0; reference 'register_0.bit_field_2' }
|
50
|
-
}
|
51
|
-
|
52
|
-
register {
|
53
|
-
name 'register_5'
|
54
|
-
offset_address 0x10
|
55
|
-
bit_field { name 'bit_field_0'; bit_assignment lsb: 0 , width: 4; type :w0c; initial_value 0 }
|
56
|
-
bit_field { name 'bit_field_1'; bit_assignment lsb: 4 , width: 4; type :w0c; initial_value 0; reference 'register_0.bit_field_0' }
|
57
|
-
bit_field { name 'bit_field_2'; bit_assignment lsb: 8 , width: 4; type :ro ; reference 'register_5.bit_field_1' }
|
58
|
-
bit_field { name 'bit_field_3'; bit_assignment lsb: 12, width: 4; type :w1c; initial_value 0 }
|
59
|
-
bit_field { name 'bit_field_4'; bit_assignment lsb: 16, width: 4; type :w1c; initial_value 0; reference 'register_0.bit_field_0' }
|
60
|
-
bit_field { name 'bit_field_5'; bit_assignment lsb: 20, width: 4; type :ro ; reference 'register_5.bit_field_4' }
|
61
|
-
bit_field { name 'bit_field_6'; bit_assignment lsb: 24, width: 4; type :w0s; initial_value 0 }
|
62
|
-
bit_field { name 'bit_field_7'; bit_assignment lsb: 28, width: 4; type :w1s; initial_value 0 }
|
63
|
-
}
|
64
|
-
|
65
|
-
register {
|
66
|
-
name 'register_6'
|
67
|
-
offset_address 0x20
|
68
|
-
size 4
|
69
|
-
# bit assignments: [7:0] [23:16] [39:32] [55:48]
|
70
|
-
bit_field { name 'bit_field_0'; bit_assignment lsb: 0, width: 8, sequence_size: 4, step: 16; type :rw; initial_value 0 }
|
71
|
-
# bit assignments: [15:8] [31:24] [47:40] [63:56]
|
72
|
-
bit_field { name 'bit_field_1'; bit_assignment lsb: 8, width: 8, sequence_size: 4, step: 16; type :rw; initial_value 0 }
|
73
|
-
}
|
74
|
-
|
75
|
-
register {
|
76
|
-
name 'register_7'
|
77
|
-
offset_address 0x40
|
78
|
-
size [2, 4]
|
79
|
-
type [:indirect, 'register_0.bit_field_0', 'register_0.bit_field_1', ['register_0.bit_field_2', 1]]
|
80
|
-
bit_field { name 'bit_field_0'; bit_assignment lsb: 0, width: 8, sequence_size: 4, step: 16; type :rw; initial_value 0 }
|
81
|
-
bit_field { name 'bit_field_1'; bit_assignment lsb: 8, width: 8, sequence_size: 4, step: 16; type :rw; initial_value 0 }
|
82
|
-
}
|
83
|
-
|
84
|
-
register {
|
85
|
-
name 'register_8'
|
86
|
-
offset_address 0x80
|
87
|
-
size 32
|
88
|
-
type :external
|
89
|
-
}
|
90
|
-
}
|