rggen 0.4.4 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +3 -2
- data/c/rggen.h +17 -0
- data/lib/rggen.rb +7 -16
- data/lib/rggen/base/item_factory.rb +2 -0
- data/lib/rggen/builtins.rb +15 -13
- data/lib/rggen/builtins/bit_field/{reserved.rb → types/reserved.rb} +0 -0
- data/lib/rggen/builtins/bit_field/{ro.erb → types/ro.erb} +0 -0
- data/lib/rggen/builtins/bit_field/{ro.rb → types/ro.rb} +0 -0
- data/lib/rggen/builtins/bit_field/{rw.erb → types/rw.erb} +0 -0
- data/lib/rggen/builtins/bit_field/{rw.rb → types/rw.rb} +0 -0
- data/lib/rggen/builtins/bit_field/{rwl_rwe.erb → types/rwl_rwe.erb} +0 -0
- data/lib/rggen/builtins/bit_field/{rwl_rwe.rb → types/rwl_rwe.rb} +0 -0
- data/lib/rggen/builtins/bit_field/{w0c_w1c.erb → types/w0c_w1c.erb} +0 -0
- data/lib/rggen/builtins/bit_field/{w0c_w1c.rb → types/w0c_w1c.rb} +0 -0
- data/lib/rggen/builtins/bit_field/{w0s_w1s.erb → types/w0s_w1s.erb} +0 -0
- data/lib/rggen/builtins/bit_field/{w0s_w1s.rb → types/w0s_w1s.rb} +0 -0
- data/lib/rggen/builtins/bit_field/{wo.rb → types/wo.rb} +0 -0
- data/lib/rggen/builtins/register/address_decoder.erb +9 -9
- data/lib/rggen/builtins/register/address_decoder.rb +24 -24
- data/lib/rggen/builtins/register/array.rb +0 -22
- data/lib/rggen/builtins/register/bus_exporter.rb +10 -2
- data/lib/rggen/builtins/register/indirect_index_configurator.rb +54 -0
- data/lib/rggen/builtins/register/offset_address.rb +21 -15
- data/lib/rggen/builtins/register/read_data.rb +1 -1
- data/lib/rggen/builtins/register/reg_model.rb +5 -5
- data/lib/rggen/builtins/register/sub_block_model.rb +1 -1
- data/lib/rggen/builtins/register/type.rb +207 -0
- data/lib/rggen/builtins/register/types/external.rb +15 -0
- data/lib/rggen/builtins/register/types/indirect.rb +134 -0
- data/lib/rggen/builtins/register/uniqueness_validator.rb +10 -7
- data/lib/rggen/builtins/register_block/address_struct.rb +56 -0
- data/lib/rggen/builtins/register_block/c_header_file.rb +15 -0
- data/lib/rggen/builtins/register_block/{apb.erb → host_ifs/apb.erb} +0 -0
- data/lib/rggen/builtins/register_block/{apb.rb → host_ifs/apb.rb} +0 -0
- data/lib/rggen/builtins/register_block/{axi4lite.erb → host_ifs/axi4lite.erb} +0 -0
- data/lib/rggen/builtins/register_block/{axi4lite.rb → host_ifs/axi4lite.rb} +0 -0
- data/lib/rggen/builtins/register_block/ral_package.rb +6 -1
- data/lib/rggen/builtins/register_block/response_mux.rb +2 -2
- data/lib/rggen/builtins/register_block/top_module.rb +5 -1
- data/lib/rggen/core_components.rb +25 -0
- data/lib/rggen/core_components/c_header/item.rb +8 -0
- data/lib/rggen/core_components/c_header/setup.rb +19 -0
- data/lib/rggen/core_components/c_utility.rb +19 -0
- data/lib/rggen/core_components/c_utility/data_structure_definition.rb +62 -0
- data/lib/rggen/core_components/c_utility/source_file.rb +10 -0
- data/lib/rggen/core_components/c_utility/variable_declaration.rb +35 -0
- data/lib/rggen/core_components/code_utility.rb +56 -0
- data/lib/rggen/{output_base → core_components/code_utility}/code_block.rb +1 -1
- data/lib/rggen/{output_base → core_components/code_utility}/line.rb +1 -1
- data/lib/rggen/core_components/code_utility/source_file.rb +97 -0
- data/lib/rggen/core_components/erb_engine.rb +15 -0
- data/lib/rggen/core_components/ral/item.rb +2 -1
- data/lib/rggen/core_components/register_map/generic_map.rb +3 -1
- data/lib/rggen/core_components/rtl/item.rb +2 -1
- data/lib/rggen/core_components/verilog_utility.rb +69 -0
- data/lib/rggen/core_components/verilog_utility/class_definition.rb +56 -0
- data/lib/rggen/core_components/verilog_utility/declaration.rb +66 -0
- data/lib/rggen/core_components/verilog_utility/identifier.rb +27 -0
- data/lib/rggen/core_components/verilog_utility/module_definition.rb +71 -0
- data/lib/rggen/core_components/verilog_utility/package_definition.rb +65 -0
- data/lib/rggen/core_components/verilog_utility/source_file.rb +10 -0
- data/lib/rggen/core_components/verilog_utility/structure_definition.rb +50 -0
- data/lib/rggen/core_components/verilog_utility/subroutine_definition.rb +41 -0
- data/lib/rggen/core_extensions/facets.rb +5 -0
- data/lib/rggen/generator.rb +19 -5
- data/lib/rggen/input_base/item.rb +6 -6
- data/lib/rggen/output_base/code_generator.rb +36 -0
- data/lib/rggen/output_base/component.rb +27 -41
- data/lib/rggen/output_base/file_writer.rb +36 -0
- data/lib/rggen/output_base/item.rb +34 -100
- data/lib/rggen/output_base/template_engine.rb +24 -0
- data/lib/rggen/rggen_home.rb +3 -0
- data/lib/rggen/version.rb +2 -2
- data/ral/rggen_ral_block.svh +1 -1
- data/ral/rggen_ral_indirect_reg.svh +193 -0
- data/ral/rggen_ral_map.svh +20 -20
- data/ral/rggen_ral_pkg.sv +1 -1
- data/rtl/register/rggen_address_decoder.sv +14 -14
- data/sample/sample.csv +21 -22
- data/sample/sample.xls +0 -0
- data/sample/sample.xlsx +0 -0
- data/sample/sample_0.h +17 -0
- data/sample/sample_0.sv +92 -92
- data/sample/sample_0_ral_pkg.sv +8 -5
- data/sample/sample_1.h +9 -0
- data/sample/sample_1.sv +27 -27
- data/sample/sample_1_ral_pkg.sv +3 -0
- data/sample/sample_setup.rb +4 -2
- data/setup/default.rb +4 -2
- metadata +53 -36
- data/lib/rggen/builtins/register/accessibility.rb +0 -23
- data/lib/rggen/builtins/register/external.rb +0 -42
- data/lib/rggen/builtins/register/shadow.rb +0 -130
- data/lib/rggen/builtins/register/shadow_index_configurator.rb +0 -56
- data/lib/rggen/output_base/code_utility.rb +0 -50
- data/lib/rggen/output_base/template_utility.rb +0 -29
- data/lib/rggen/output_base/verilog_utility.rb +0 -69
- data/lib/rggen/output_base/verilog_utility/class_definition.rb +0 -58
- data/lib/rggen/output_base/verilog_utility/declaration.rb +0 -68
- data/lib/rggen/output_base/verilog_utility/identifier.rb +0 -29
- data/lib/rggen/output_base/verilog_utility/module_definition.rb +0 -73
- data/lib/rggen/output_base/verilog_utility/package_definition.rb +0 -67
- data/lib/rggen/output_base/verilog_utility/structure_definition.rb +0 -52
- data/lib/rggen/output_base/verilog_utility/subroutine_definition.rb +0 -43
- data/ral/rggen_ral_shadow_reg.svh +0 -193
data/sample/sample.xls
CHANGED
Binary file
|
data/sample/sample.xlsx
CHANGED
Binary file
|
data/sample/sample_0.h
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#ifndef SAMPLE_0_H
|
2
|
+
#define SAMPLE_0_H
|
3
|
+
#include "rggen.h"
|
4
|
+
typedef struct {
|
5
|
+
rggen_uint32 register_0;
|
6
|
+
rggen_uint32 register_1;
|
7
|
+
rggen_uint32 register_2;
|
8
|
+
rggen_uint32 register_3;
|
9
|
+
rggen_uint32 register_4[4];
|
10
|
+
rggen_uint32 register_5;
|
11
|
+
rggen_uint32 register_6;
|
12
|
+
rggen_uint32 register_7;
|
13
|
+
rggen_uint32 register_8;
|
14
|
+
rggen_uint32 __dummy_0[20];
|
15
|
+
RGGEN_EXTERNAL_REGISTERS(128, REGISTER_9) register_9;
|
16
|
+
} s_sample_0_address_struct;
|
17
|
+
#endif
|
data/sample/sample_0.sv
CHANGED
@@ -65,7 +65,7 @@ module sample_0 (
|
|
65
65
|
logic [31:0] bit_field_3_0_value;
|
66
66
|
logic [15:0] bit_field_4_0_value[4];
|
67
67
|
logic [15:0] bit_field_4_1_value[4];
|
68
|
-
logic [32:0]
|
68
|
+
logic [32:0] register_5_indirect_index[2][4];
|
69
69
|
logic [15:0] bit_field_5_0_value[2][4];
|
70
70
|
logic [15:0] bit_field_5_1_value[2][4];
|
71
71
|
logic bit_field_6_0_value;
|
@@ -132,16 +132,16 @@ module sample_0 (
|
|
132
132
|
.o_irq (o_irq)
|
133
133
|
);
|
134
134
|
rggen_address_decoder #(
|
135
|
-
.ADDRESS_WIDTH
|
136
|
-
.START_ADDRESS
|
137
|
-
.END_ADDRESS
|
138
|
-
.
|
139
|
-
.
|
140
|
-
.
|
135
|
+
.ADDRESS_WIDTH (6),
|
136
|
+
.START_ADDRESS (6'h00),
|
137
|
+
.END_ADDRESS (6'h00),
|
138
|
+
.INDIRECT_REGISTER (0),
|
139
|
+
.INDIRECT_INDEX_WIDTH (1),
|
140
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
141
141
|
) u_register_0_address_decoder (
|
142
|
-
.i_address
|
143
|
-
.
|
144
|
-
.o_select
|
142
|
+
.i_address (address[7:2]),
|
143
|
+
.i_indirect_index (1'h0),
|
144
|
+
.o_select (register_select[0])
|
145
145
|
);
|
146
146
|
assign register_read_data[0] = {bit_field_0_0_value, bit_field_0_1_value};
|
147
147
|
assign o_bit_field_0_0 = bit_field_0_0_value;
|
@@ -173,16 +173,16 @@ module sample_0 (
|
|
173
173
|
.o_value (bit_field_0_1_value)
|
174
174
|
);
|
175
175
|
rggen_address_decoder #(
|
176
|
-
.ADDRESS_WIDTH
|
177
|
-
.START_ADDRESS
|
178
|
-
.END_ADDRESS
|
179
|
-
.
|
180
|
-
.
|
181
|
-
.
|
176
|
+
.ADDRESS_WIDTH (6),
|
177
|
+
.START_ADDRESS (6'h01),
|
178
|
+
.END_ADDRESS (6'h01),
|
179
|
+
.INDIRECT_REGISTER (0),
|
180
|
+
.INDIRECT_INDEX_WIDTH (1),
|
181
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
182
182
|
) u_register_1_address_decoder (
|
183
|
-
.i_address
|
184
|
-
.
|
185
|
-
.o_select
|
183
|
+
.i_address (address[7:2]),
|
184
|
+
.i_indirect_index (1'h0),
|
185
|
+
.o_select (register_select[1])
|
186
186
|
);
|
187
187
|
assign register_read_data[1] = {bit_field_1_0_value};
|
188
188
|
assign o_bit_field_1_0 = bit_field_1_0_value;
|
@@ -200,16 +200,16 @@ module sample_0 (
|
|
200
200
|
.o_value (bit_field_1_0_value)
|
201
201
|
);
|
202
202
|
rggen_address_decoder #(
|
203
|
-
.ADDRESS_WIDTH
|
204
|
-
.START_ADDRESS
|
205
|
-
.END_ADDRESS
|
206
|
-
.
|
207
|
-
.
|
208
|
-
.
|
203
|
+
.ADDRESS_WIDTH (6),
|
204
|
+
.START_ADDRESS (6'h02),
|
205
|
+
.END_ADDRESS (6'h02),
|
206
|
+
.INDIRECT_REGISTER (0),
|
207
|
+
.INDIRECT_INDEX_WIDTH (1),
|
208
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
209
209
|
) u_register_2_address_decoder (
|
210
|
-
.i_address
|
211
|
-
.
|
212
|
-
.o_select
|
210
|
+
.i_address (address[7:2]),
|
211
|
+
.i_indirect_index (1'h0),
|
212
|
+
.o_select (register_select[2])
|
213
213
|
);
|
214
214
|
assign register_read_data[2] = {15'h0000, bit_field_2_0_value, 15'h0000, bit_field_2_1_value};
|
215
215
|
rggen_bit_field_ro #(
|
@@ -233,16 +233,16 @@ module sample_0 (
|
|
233
233
|
.o_value (bit_field_2_1_value)
|
234
234
|
);
|
235
235
|
rggen_address_decoder #(
|
236
|
-
.ADDRESS_WIDTH
|
237
|
-
.START_ADDRESS
|
238
|
-
.END_ADDRESS
|
239
|
-
.
|
240
|
-
.
|
241
|
-
.
|
236
|
+
.ADDRESS_WIDTH (6),
|
237
|
+
.START_ADDRESS (6'h03),
|
238
|
+
.END_ADDRESS (6'h03),
|
239
|
+
.INDIRECT_REGISTER (0),
|
240
|
+
.INDIRECT_INDEX_WIDTH (1),
|
241
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
242
242
|
) u_register_3_address_decoder (
|
243
|
-
.i_address
|
244
|
-
.
|
245
|
-
.o_select
|
243
|
+
.i_address (address[7:2]),
|
244
|
+
.i_indirect_index (1'h0),
|
245
|
+
.o_select (register_select[3])
|
246
246
|
);
|
247
247
|
assign register_read_data[3] = {bit_field_3_0_value};
|
248
248
|
rggen_bit_field_ro #(
|
@@ -255,16 +255,16 @@ module sample_0 (
|
|
255
255
|
genvar g_i;
|
256
256
|
for (g_i = 0;g_i < 4;g_i++) begin : g
|
257
257
|
rggen_address_decoder #(
|
258
|
-
.ADDRESS_WIDTH
|
259
|
-
.START_ADDRESS
|
260
|
-
.END_ADDRESS
|
261
|
-
.
|
262
|
-
.
|
263
|
-
.
|
258
|
+
.ADDRESS_WIDTH (6),
|
259
|
+
.START_ADDRESS (6'h04 + g_i),
|
260
|
+
.END_ADDRESS (6'h04 + g_i),
|
261
|
+
.INDIRECT_REGISTER (0),
|
262
|
+
.INDIRECT_INDEX_WIDTH (1),
|
263
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
264
264
|
) u_register_4_address_decoder (
|
265
|
-
.i_address
|
266
|
-
.
|
267
|
-
.o_select
|
265
|
+
.i_address (address[7:2]),
|
266
|
+
.i_indirect_index (1'h0),
|
267
|
+
.o_select (register_select[4+g_i])
|
268
268
|
);
|
269
269
|
assign register_read_data[4+g_i] = {bit_field_4_0_value[g_i], bit_field_4_1_value[g_i]};
|
270
270
|
rggen_bit_field_ro #(
|
@@ -293,18 +293,18 @@ module sample_0 (
|
|
293
293
|
genvar g_i, g_j;
|
294
294
|
for (g_i = 0;g_i < 2;g_i++) begin : g
|
295
295
|
for (g_j = 0;g_j < 4;g_j++) begin : g
|
296
|
-
assign
|
296
|
+
assign register_5_indirect_index[g_i][g_j] = {bit_field_2_1_value, bit_field_0_0_value, bit_field_0_1_value};
|
297
297
|
rggen_address_decoder #(
|
298
|
-
.ADDRESS_WIDTH
|
299
|
-
.START_ADDRESS
|
300
|
-
.END_ADDRESS
|
301
|
-
.
|
302
|
-
.
|
303
|
-
.
|
298
|
+
.ADDRESS_WIDTH (6),
|
299
|
+
.START_ADDRESS (6'h08),
|
300
|
+
.END_ADDRESS (6'h08),
|
301
|
+
.INDIRECT_REGISTER (1),
|
302
|
+
.INDIRECT_INDEX_WIDTH (33),
|
303
|
+
.INDIRECT_INDEX_VALUE ({1'h1, g_i[15:0], g_j[15:0]})
|
304
304
|
) u_register_5_address_decoder (
|
305
|
-
.i_address
|
306
|
-
.
|
307
|
-
.o_select
|
305
|
+
.i_address (address[7:2]),
|
306
|
+
.i_indirect_index (register_5_indirect_index[g_i][g_j]),
|
307
|
+
.o_select (register_select[8+4*g_i+g_j])
|
308
308
|
);
|
309
309
|
assign register_read_data[8+4*g_i+g_j] = {bit_field_5_0_value[g_i][g_j], bit_field_5_1_value[g_i][g_j]};
|
310
310
|
rggen_bit_field_ro #(
|
@@ -331,16 +331,16 @@ module sample_0 (
|
|
331
331
|
end
|
332
332
|
end endgenerate
|
333
333
|
rggen_address_decoder #(
|
334
|
-
.ADDRESS_WIDTH
|
335
|
-
.START_ADDRESS
|
336
|
-
.END_ADDRESS
|
337
|
-
.
|
338
|
-
.
|
339
|
-
.
|
334
|
+
.ADDRESS_WIDTH (6),
|
335
|
+
.START_ADDRESS (6'h09),
|
336
|
+
.END_ADDRESS (6'h09),
|
337
|
+
.INDIRECT_REGISTER (0),
|
338
|
+
.INDIRECT_INDEX_WIDTH (1),
|
339
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
340
340
|
) u_register_6_address_decoder (
|
341
|
-
.i_address
|
342
|
-
.
|
343
|
-
.o_select
|
341
|
+
.i_address (address[7:2]),
|
342
|
+
.i_indirect_index (1'h0),
|
343
|
+
.o_select (register_select[16])
|
344
344
|
);
|
345
345
|
assign register_read_data[16] = {23'h000000, bit_field_6_0_value, 7'h00, bit_field_6_1_value};
|
346
346
|
rggen_bit_field_w01s_w01c #(
|
@@ -376,16 +376,16 @@ module sample_0 (
|
|
376
376
|
.o_value (bit_field_6_1_value)
|
377
377
|
);
|
378
378
|
rggen_address_decoder #(
|
379
|
-
.ADDRESS_WIDTH
|
380
|
-
.START_ADDRESS
|
381
|
-
.END_ADDRESS
|
382
|
-
.
|
383
|
-
.
|
384
|
-
.
|
379
|
+
.ADDRESS_WIDTH (6),
|
380
|
+
.START_ADDRESS (6'h0a),
|
381
|
+
.END_ADDRESS (6'h0a),
|
382
|
+
.INDIRECT_REGISTER (0),
|
383
|
+
.INDIRECT_INDEX_WIDTH (1),
|
384
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
385
385
|
) u_register_7_address_decoder (
|
386
|
-
.i_address
|
387
|
-
.
|
388
|
-
.o_select
|
386
|
+
.i_address (address[7:2]),
|
387
|
+
.i_indirect_index (1'h0),
|
388
|
+
.o_select (register_select[17])
|
389
389
|
);
|
390
390
|
assign register_read_data[17] = {23'h000000, bit_field_7_0_value, 7'h00, bit_field_7_1_value};
|
391
391
|
assign o_bit_field_7_0 = bit_field_7_0_value;
|
@@ -423,16 +423,16 @@ module sample_0 (
|
|
423
423
|
.o_value (bit_field_7_1_value)
|
424
424
|
);
|
425
425
|
rggen_address_decoder #(
|
426
|
-
.ADDRESS_WIDTH
|
427
|
-
.START_ADDRESS
|
428
|
-
.END_ADDRESS
|
429
|
-
.
|
430
|
-
.
|
431
|
-
.
|
426
|
+
.ADDRESS_WIDTH (6),
|
427
|
+
.START_ADDRESS (6'h0b),
|
428
|
+
.END_ADDRESS (6'h0b),
|
429
|
+
.INDIRECT_REGISTER (0),
|
430
|
+
.INDIRECT_INDEX_WIDTH (1),
|
431
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
432
432
|
) u_register_8_address_decoder (
|
433
|
-
.i_address
|
434
|
-
.
|
435
|
-
.o_select
|
433
|
+
.i_address (address[7:2]),
|
434
|
+
.i_indirect_index (1'h0),
|
435
|
+
.o_select (register_select[18])
|
436
436
|
);
|
437
437
|
assign register_read_data[18] = {bit_field_8_0_value, bit_field_8_1_value};
|
438
438
|
assign o_bit_field_8_0 = bit_field_8_0_value;
|
@@ -468,16 +468,16 @@ module sample_0 (
|
|
468
468
|
.o_value (bit_field_8_1_value)
|
469
469
|
);
|
470
470
|
rggen_address_decoder #(
|
471
|
-
.ADDRESS_WIDTH
|
472
|
-
.START_ADDRESS
|
473
|
-
.END_ADDRESS
|
474
|
-
.
|
475
|
-
.
|
476
|
-
.
|
471
|
+
.ADDRESS_WIDTH (6),
|
472
|
+
.START_ADDRESS (6'h20),
|
473
|
+
.END_ADDRESS (6'h3f),
|
474
|
+
.INDIRECT_REGISTER (0),
|
475
|
+
.INDIRECT_INDEX_WIDTH (1),
|
476
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
477
477
|
) u_register_9_address_decoder (
|
478
|
-
.i_address
|
479
|
-
.
|
480
|
-
.o_select
|
478
|
+
.i_address (address[7:2]),
|
479
|
+
.i_indirect_index (1'h0),
|
480
|
+
.o_select (register_select[19])
|
481
481
|
);
|
482
482
|
assign external_register_select[0] = register_select[19];
|
483
483
|
rggen_bus_exporter #(
|
data/sample/sample_0_ral_pkg.sv
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
`ifndef SAMPLE_0_RAL_PKG_SV
|
2
|
+
`define SAMPLE_0_RAL_PKG_SV
|
1
3
|
package sample_0_ral_pkg;
|
2
4
|
import uvm_pkg::*;
|
3
5
|
import rggen_ral_pkg::*;
|
@@ -54,7 +56,7 @@ package sample_0_ral_pkg;
|
|
54
56
|
`rggen_ral_create_field_model(bit_field_4_1, "bit_field_4_1", 16, 0, "RW", 0, 16'h0000, 1, "u_bit_field_4_1.value")
|
55
57
|
endfunction
|
56
58
|
endclass
|
57
|
-
class register_5_reg_model extends
|
59
|
+
class register_5_reg_model extends rggen_ral_indirect_reg;
|
58
60
|
rand rggen_ral_field bit_field_5_0;
|
59
61
|
rand rggen_ral_field bit_field_5_1;
|
60
62
|
function new(string name = "register_5");
|
@@ -64,10 +66,10 @@ package sample_0_ral_pkg;
|
|
64
66
|
`rggen_ral_create_field_model(bit_field_5_0, "bit_field_5_0", 16, 16, "RO", 0, 16'h0000, 0, "u_bit_field_5_0.i_value")
|
65
67
|
`rggen_ral_create_field_model(bit_field_5_1, "bit_field_5_1", 16, 0, "RW", 0, 16'h0000, 1, "u_bit_field_5_1.value")
|
66
68
|
endfunction
|
67
|
-
function void
|
68
|
-
|
69
|
-
|
70
|
-
|
69
|
+
function void configure_indirect_indexes();
|
70
|
+
set_indirect_index("register_2", "bit_field_2_1", 1);
|
71
|
+
set_indirect_index("register_0", "bit_field_0_0", indexes[0]);
|
72
|
+
set_indirect_index("register_0", "bit_field_0_1", indexes[1]);
|
71
73
|
endfunction
|
72
74
|
endclass
|
73
75
|
class register_6_reg_model extends rggen_ral_reg;
|
@@ -140,3 +142,4 @@ package sample_0_ral_pkg;
|
|
140
142
|
endfunction
|
141
143
|
endclass
|
142
144
|
endpackage
|
145
|
+
`endif
|
data/sample/sample_1.h
ADDED
data/sample/sample_1.sv
CHANGED
@@ -81,16 +81,16 @@ module sample_1 (
|
|
81
81
|
.i_external_register_status ('{2'b00})
|
82
82
|
);
|
83
83
|
rggen_address_decoder #(
|
84
|
-
.ADDRESS_WIDTH
|
85
|
-
.START_ADDRESS
|
86
|
-
.END_ADDRESS
|
87
|
-
.
|
88
|
-
.
|
89
|
-
.
|
84
|
+
.ADDRESS_WIDTH (5),
|
85
|
+
.START_ADDRESS (5'h00),
|
86
|
+
.END_ADDRESS (5'h00),
|
87
|
+
.INDIRECT_REGISTER (0),
|
88
|
+
.INDIRECT_INDEX_WIDTH (1),
|
89
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
90
90
|
) u_register_0_address_decoder (
|
91
|
-
.i_address
|
92
|
-
.
|
93
|
-
.o_select
|
91
|
+
.i_address (address[6:2]),
|
92
|
+
.i_indirect_index (1'h0),
|
93
|
+
.o_select (register_select[0])
|
94
94
|
);
|
95
95
|
assign register_read_data[0] = {bit_field_0_0_value, bit_field_0_1_value};
|
96
96
|
assign o_bit_field_0_0 = bit_field_0_0_value;
|
@@ -114,16 +114,16 @@ module sample_1 (
|
|
114
114
|
.o_value (bit_field_0_1_value)
|
115
115
|
);
|
116
116
|
rggen_address_decoder #(
|
117
|
-
.ADDRESS_WIDTH
|
118
|
-
.START_ADDRESS
|
119
|
-
.END_ADDRESS
|
120
|
-
.
|
121
|
-
.
|
122
|
-
.
|
117
|
+
.ADDRESS_WIDTH (5),
|
118
|
+
.START_ADDRESS (5'h01),
|
119
|
+
.END_ADDRESS (5'h01),
|
120
|
+
.INDIRECT_REGISTER (0),
|
121
|
+
.INDIRECT_INDEX_WIDTH (1),
|
122
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
123
123
|
) u_register_1_address_decoder (
|
124
|
-
.i_address
|
125
|
-
.
|
126
|
-
.o_select
|
124
|
+
.i_address (address[6:2]),
|
125
|
+
.i_indirect_index (1'h0),
|
126
|
+
.o_select (register_select[1])
|
127
127
|
);
|
128
128
|
assign register_read_data[1] = {bit_field_1_0_value};
|
129
129
|
assign o_bit_field_1_0 = bit_field_1_0_value;
|
@@ -141,16 +141,16 @@ module sample_1 (
|
|
141
141
|
.o_value (bit_field_1_0_value)
|
142
142
|
);
|
143
143
|
rggen_address_decoder #(
|
144
|
-
.ADDRESS_WIDTH
|
145
|
-
.START_ADDRESS
|
146
|
-
.END_ADDRESS
|
147
|
-
.
|
148
|
-
.
|
149
|
-
.
|
144
|
+
.ADDRESS_WIDTH (5),
|
145
|
+
.START_ADDRESS (5'h02),
|
146
|
+
.END_ADDRESS (5'h02),
|
147
|
+
.INDIRECT_REGISTER (0),
|
148
|
+
.INDIRECT_INDEX_WIDTH (1),
|
149
|
+
.INDIRECT_INDEX_VALUE (1'h0)
|
150
150
|
) u_register_2_address_decoder (
|
151
|
-
.i_address
|
152
|
-
.
|
153
|
-
.o_select
|
151
|
+
.i_address (address[6:2]),
|
152
|
+
.i_indirect_index (1'h0),
|
153
|
+
.o_select (register_select[2])
|
154
154
|
);
|
155
155
|
assign register_read_data[2] = {15'h0000, bit_field_2_0_value, 15'h0000, bit_field_2_1_value};
|
156
156
|
rggen_bit_field_ro #(
|
data/sample/sample_1_ral_pkg.sv
CHANGED
data/sample/sample_setup.rb
CHANGED
@@ -10,12 +10,14 @@ end
|
|
10
10
|
|
11
11
|
enable :global , [:data_width, :address_width]
|
12
12
|
enable :register_block, [:name, :base_address]
|
13
|
-
enable :register , [:offset_address, :name, :array, :
|
13
|
+
enable :register , [:offset_address, :name, :array, :type, :uniquness_validator]
|
14
|
+
enable :register , :type, [:indirect, :external]
|
14
15
|
enable :bit_field , [:bit_assignment, :name, :type, :initial_value, :reference]
|
15
16
|
enable :bit_field , :type, [:rw, :ro, :w0c, :w1c, :w0s, :w1s, :rwl, :rwe, :foo, :reserved]
|
16
17
|
enable :register_block, [:top_module, :clock_reset, :host_if, :response_mux, :irq_controller]
|
17
18
|
enable :register_block, :host_if, [:apb, :bar]
|
18
19
|
enable :register , [:address_decoder, :read_data, :bus_exporter]
|
19
20
|
enable :register_block, [:ral_package, :block_model, :constructor, :sub_model_creator, :default_map_creator]
|
20
|
-
enable :register , [:reg_model, :constructor, :field_model_creator, :
|
21
|
+
enable :register , [:reg_model, :constructor, :field_model_creator, :indirect_index_configurator, :sub_block_model]
|
21
22
|
enable :bit_field , :field_model
|
23
|
+
enable :register_block, [:c_header_file, :address_struct]
|
data/setup/default.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
enable :global , [:data_width, :address_width]
|
2
2
|
enable :register_block, [:name, :byte_size]
|
3
|
-
enable :register , [:offset_address, :name, :array, :
|
3
|
+
enable :register , [:offset_address, :name, :array, :type, :uniquness_validator]
|
4
|
+
enable :register , :type, [:indirect, :external]
|
4
5
|
enable :bit_field , [:bit_assignment, :name, :type, :initial_value, :reference]
|
5
6
|
enable :bit_field , :type, [:rw, :ro, :w0c, :w1c, :w0s, :w1s, :rwl, :rwe, :reserved]
|
6
7
|
enable :register_block, [:top_module, :clock_reset, :host_if, :response_mux, :irq_controller]
|
7
8
|
enable :register_block, :host_if, [:apb, :axi4lite]
|
8
9
|
enable :register , [:address_decoder, :read_data, :bus_exporter]
|
9
10
|
enable :register_block, [:ral_package, :block_model, :constructor, :sub_model_creator, :default_map_creator]
|
10
|
-
enable :register , [:reg_model, :constructor, :field_model_creator, :
|
11
|
+
enable :register , [:reg_model, :constructor, :field_model_creator, :indirect_index_configurator, :sub_block_model]
|
11
12
|
enable :bit_field , :field_model
|
13
|
+
enable :register_block, [:c_header_file, :address_struct]
|