rggen 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,30 @@
1
+ module rggen_bit_field_rwl_rwe #(
2
+ parameter LOCK_MODE = 1,
3
+ parameter WIDTH = 1,
4
+ parameter INITIAL_VALUE = 0
5
+ )(
6
+ input clk,
7
+ input rst_n,
8
+ input i_lock_or_enable,
9
+ input i_command_valid,
10
+ input i_select,
11
+ input i_write,
12
+ input [WIDTH-1:0] i_write_data,
13
+ input [WIDTH-1:0] i_write_mask,
14
+ output [WIDTH-1:0] o_value
15
+ );
16
+ logic [WIDTH-1:0] value;
17
+ logic writable;
18
+
19
+ assign o_value = value;
20
+ assign writable = (LOCK_MODE) ? !i_lock_or_enable : i_lock_or_enable;
21
+ always_ff @(posedge clk or negedge rst_n) begin
22
+ if (!rst_n) begin
23
+ value <= INITIAL_VALUE;
24
+ end
25
+ else if (writable && i_command_valid && i_select && i_write) begin
26
+ value <= (i_write_data & ( i_write_mask))
27
+ | (value & (~i_write_mask));
28
+ end
29
+ end
30
+ endmodule
data/sample/sample.csv CHANGED
@@ -16,5 +16,7 @@
16
16
  ,,,,,,[0],bit_field_6_1,w1c,0,bit_field_2_1,
17
17
  ,0x28,register_7,,,,[8],bit_field_7_0,w0s,0,,
18
18
  ,,,,,,[0],bit_field_7_1,w1s,0,,
19
- ,0x80-0xFF,register_8,,,TRUE,,,,,,
19
+ ,0x2C,register_8,,,,[31:16],bit_field_8_0,rwl,0,bit_field_2_1,
20
+ ,,,,,,[15:0],bit_field_8_1,rwe,0,bit_field_2_1,
21
+ ,0x80-0xFF,register_9,,,TRUE,,,,,,
20
22
  ,,,,,,,,,,,
data/sample/sample.xls CHANGED
Binary file
data/sample/sample.xlsx CHANGED
Binary file
data/sample/sample_0.sv CHANGED
@@ -28,15 +28,17 @@ module sample_0 (
28
28
  input i_bit_field_7_0_clear,
29
29
  output o_bit_field_7_1,
30
30
  input i_bit_field_7_1_clear,
31
- output o_register_8_valid,
32
- output o_register_8_write,
33
- output o_register_8_read,
34
- output [6:0] o_register_8_address,
35
- output [3:0] o_register_8_strobe,
36
- output [31:0] o_register_8_write_data,
37
- input i_register_8_ready,
38
- input [1:0] i_register_8_status,
39
- input [31:0] i_register_8_read_data
31
+ output [15:0] o_bit_field_8_0,
32
+ output [15:0] o_bit_field_8_1,
33
+ output o_register_9_valid,
34
+ output o_register_9_write,
35
+ output o_register_9_read,
36
+ output [6:0] o_register_9_address,
37
+ output [3:0] o_register_9_strobe,
38
+ output [31:0] o_register_9_write_data,
39
+ input i_register_9_ready,
40
+ input [1:0] i_register_9_status,
41
+ input [31:0] i_register_9_read_data
40
42
  );
41
43
  logic command_valid;
42
44
  logic write;
@@ -48,8 +50,8 @@ module sample_0 (
48
50
  logic response_ready;
49
51
  logic [31:0] read_data;
50
52
  logic [1:0] status;
51
- logic [18:0] register_select;
52
- logic [31:0] register_read_data[19];
53
+ logic [19:0] register_select;
54
+ logic [31:0] register_read_data[20];
53
55
  logic [0:0] external_register_select;
54
56
  logic [0:0] external_register_ready;
55
57
  logic [1:0] external_register_status[1];
@@ -70,6 +72,8 @@ module sample_0 (
70
72
  logic bit_field_6_1_value;
71
73
  logic bit_field_7_0_value;
72
74
  logic bit_field_7_1_value;
75
+ logic [15:0] bit_field_8_0_value;
76
+ logic [15:0] bit_field_8_1_value;
73
77
  rggen_host_if_apb #(
74
78
  .DATA_WIDTH (32),
75
79
  .HOST_ADDRESS_WIDTH (16),
@@ -100,7 +104,7 @@ module sample_0 (
100
104
  );
101
105
  rggen_response_mux #(
102
106
  .DATA_WIDTH (32),
103
- .TOTAL_REGISTERS (19),
107
+ .TOTAL_REGISTERS (20),
104
108
  .TOTAL_EXTERNAL_REGISTERS (1)
105
109
  ) u_response_mux (
106
110
  .clk (clk),
@@ -432,8 +436,8 @@ module sample_0 (
432
436
  );
433
437
  rggen_address_decoder #(
434
438
  .ADDRESS_WIDTH (6),
435
- .START_ADDRESS (6'h20),
436
- .END_ADDRESS (6'h3f),
439
+ .START_ADDRESS (6'h0b),
440
+ .END_ADDRESS (6'h0b),
437
441
  .USE_SHADOW_INDEX (0),
438
442
  .SHADOW_INDEX_WIDTH (1),
439
443
  .SHADOW_INDEX_VALUE (1'h0)
@@ -444,33 +448,80 @@ module sample_0 (
444
448
  .i_shadow_index (1'h0),
445
449
  .o_select (register_select[18])
446
450
  );
447
- assign external_register_select[0] = register_select[18];
451
+ assign register_read_data[18] = {bit_field_8_0_value, bit_field_8_1_value};
452
+ assign o_bit_field_8_0 = bit_field_8_0_value;
453
+ rggen_bit_field_rwl_rwe #(
454
+ .LOCK_MODE (1),
455
+ .WIDTH (16),
456
+ .INITIAL_VALUE (16'h0000)
457
+ ) u_bit_field_8_0 (
458
+ .clk (clk),
459
+ .rst_n (rst_n),
460
+ .i_lock_or_enable (bit_field_2_1_value),
461
+ .i_command_valid (command_valid),
462
+ .i_select (register_select[18]),
463
+ .i_write (write),
464
+ .i_write_data (write_data[31:16]),
465
+ .i_write_mask (write_mask[31:16]),
466
+ .o_value (bit_field_8_0_value)
467
+ );
468
+ assign o_bit_field_8_1 = bit_field_8_1_value;
469
+ rggen_bit_field_rwl_rwe #(
470
+ .LOCK_MODE (0),
471
+ .WIDTH (16),
472
+ .INITIAL_VALUE (16'h0000)
473
+ ) u_bit_field_8_1 (
474
+ .clk (clk),
475
+ .rst_n (rst_n),
476
+ .i_lock_or_enable (bit_field_2_1_value),
477
+ .i_command_valid (command_valid),
478
+ .i_select (register_select[18]),
479
+ .i_write (write),
480
+ .i_write_data (write_data[15:0]),
481
+ .i_write_mask (write_mask[15:0]),
482
+ .o_value (bit_field_8_1_value)
483
+ );
484
+ rggen_address_decoder #(
485
+ .ADDRESS_WIDTH (6),
486
+ .START_ADDRESS (6'h20),
487
+ .END_ADDRESS (6'h3f),
488
+ .USE_SHADOW_INDEX (0),
489
+ .SHADOW_INDEX_WIDTH (1),
490
+ .SHADOW_INDEX_VALUE (1'h0)
491
+ ) u_register_9_address_decoder (
492
+ .i_read (read),
493
+ .i_write (write),
494
+ .i_address (address[7:2]),
495
+ .i_shadow_index (1'h0),
496
+ .o_select (register_select[19])
497
+ );
498
+ assign external_register_select[0] = register_select[19];
448
499
  rggen_bus_exporter #(
449
500
  .DATA_WIDTH (32),
450
501
  .LOCAL_ADDRESS_WIDTH (8),
451
502
  .EXTERNAL_ADDRESS_WIDTH (7),
452
503
  .START_ADDRESS (8'h80)
453
- ) u_register_8_bus_exporter (
504
+ ) u_register_9_bus_exporter (
454
505
  .clk (clk),
455
506
  .rst_n (rst_n),
456
507
  .i_valid (command_valid),
457
- .i_select (register_select[18]),
508
+ .i_select (register_select[19]),
458
509
  .i_write (write),
459
510
  .i_read (read),
460
511
  .i_address (address),
461
512
  .i_strobe (strobe),
462
513
  .i_write_data (write_data),
463
514
  .o_ready (external_register_ready[0]),
464
- .o_read_data (register_read_data[18]),
515
+ .o_read_data (register_read_data[19]),
465
516
  .o_status (external_register_status[0]),
466
- .o_valid (o_register_8_valid),
467
- .o_write (o_register_8_write),
468
- .o_read (o_register_8_read),
469
- .o_address (o_register_8_address),
470
- .o_strobe (o_register_8_strobe),
471
- .o_write_data (o_register_8_write_data),
472
- .i_ready (i_register_8_ready),
473
- .i_read_data (i_register_8_read_data),
474
- .i_status (i_register_8_status)
517
+ .o_valid (o_register_9_valid),
518
+ .o_write (o_register_9_write),
519
+ .o_read (o_register_9_read),
520
+ .o_address (o_register_9_address),
521
+ .o_strobe (o_register_9_strobe),
522
+ .o_write_data (o_register_9_write_data),
523
+ .i_ready (i_register_9_ready),
524
+ .i_read_data (i_register_9_read_data),
525
+ .i_status (i_register_9_status)
475
526
  );
476
527
  endmodule
@@ -92,8 +92,19 @@ package sample_0_ral_pkg;
92
92
  `rggen_ral_create_field_model(bit_field_7_1, "bit_field_7_1", 1, 0, "W1S", 0, 1'h0, 1, "u_bit_field_7_1.value")
93
93
  endfunction
94
94
  endclass
95
+ class register_8_reg_model extends rggen_ral_reg;
96
+ rand rggen_ral_field_rwl#("register_2", "bit_field_2_1") bit_field_8_0;
97
+ rand rggen_ral_field_rwe#("register_2", "bit_field_2_1") bit_field_8_1;
98
+ function new(string name = "register_8");
99
+ super.new(name, 32, 0);
100
+ endfunction
101
+ function void create_fields();
102
+ `rggen_ral_create_field_model(bit_field_8_0, "bit_field_8_0", 16, 16, "RWL", 0, 16'h0000, 1, "u_bit_field_8_0.value")
103
+ `rggen_ral_create_field_model(bit_field_8_1, "bit_field_8_1", 16, 0, "RWE", 0, 16'h0000, 1, "u_bit_field_8_1.value")
104
+ endfunction
105
+ endclass
95
106
  class sample_0_block_model#(
96
- type REGISTER_8 = rggen_ral_block
107
+ type REGISTER_9 = rggen_ral_block
97
108
  ) extends rggen_ral_block;
98
109
  rand register_0_reg_model register_0;
99
110
  rand register_1_reg_model register_1;
@@ -103,7 +114,8 @@ package sample_0_ral_pkg;
103
114
  rand register_5_reg_model register_5[2][4];
104
115
  rand register_6_reg_model register_6;
105
116
  rand register_7_reg_model register_7;
106
- rand REGISTER_8 register_8;
117
+ rand register_8_reg_model register_8;
118
+ rand REGISTER_9 register_9;
107
119
  function new(string name = "sample_0");
108
120
  super.new(name);
109
121
  endfunction
@@ -120,7 +132,8 @@ package sample_0_ral_pkg;
120
132
  end
121
133
  `rggen_ral_create_reg_model(register_6, "register_6", '{}, 8'h24, "RW", 0, "")
122
134
  `rggen_ral_create_reg_model(register_7, "register_7", '{}, 8'h28, "RW", 0, "")
123
- `rggen_ral_create_block_model(register_8, "register_8", 8'h80)
135
+ `rggen_ral_create_reg_model(register_8, "register_8", '{}, 8'h2c, "RW", 0, "")
136
+ `rggen_ral_create_block_model(register_9, "register_9", 8'h80)
124
137
  endfunction
125
138
  function uvm_reg_map create_default_map();
126
139
  return create_map("default_map", 0, 4, UVM_LITTLE_ENDIAN, 1);
@@ -12,7 +12,7 @@ enable :global , [:data_width, :address_width]
12
12
  enable :register_block, [:name, :base_address]
13
13
  enable :register , [:offset_address, :name, :array, :shadow, :external, :accessibility, :uniquness_validator]
14
14
  enable :bit_field , [:bit_assignment, :name, :type, :initial_value, :reference]
15
- enable :bit_field , :type, [:rw, :ro, :w0c, :w1c, :w0s, :w1s, :foo, :reserved]
15
+ enable :bit_field , :type, [:rw, :ro, :w0c, :w1c, :w0s, :w1s, :rwl, :rwe, :foo, :reserved]
16
16
  enable :register_block, [:top_module, :clock_reset, :host_if, :response_mux, :irq_controller]
17
17
  enable :register_block, :host_if, [:apb, :bar]
18
18
  enable :register , [:address_decoder, :read_data, :bus_exporter]
data/setup/default.rb CHANGED
@@ -2,7 +2,7 @@ enable :global , [:data_width, :address_width]
2
2
  enable :register_block, [:name, :byte_size]
3
3
  enable :register , [:offset_address, :name, :array, :shadow, :external, :accessibility, :uniquness_validator]
4
4
  enable :bit_field , [:bit_assignment, :name, :type, :initial_value, :reference]
5
- enable :bit_field , :type, [:rw, :ro, :w0c, :w1c, :w0s, :w1s, :reserved]
5
+ enable :bit_field , :type, [:rw, :ro, :w0c, :w1c, :w0s, :w1s, :rwl, :rwe, :reserved]
6
6
  enable :register_block, [:top_module, :clock_reset, :host_if, :response_mux, :irq_controller]
7
7
  enable :register_block, :host_if, [:apb, :axi4lite]
8
8
  enable :register , [:address_decoder, :read_data, :bus_exporter]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rggen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taichi Ishitani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-07 00:00:00.000000000 Z
11
+ date: 2016-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: baby_erubis
@@ -128,6 +128,7 @@ files:
128
128
  - lib/rggen/base/component_factory.rb
129
129
  - lib/rggen/base/hierarchical_accessors.rb
130
130
  - lib/rggen/base/hierarchical_item_accessors.rb
131
+ - lib/rggen/base/internal_struct.rb
131
132
  - lib/rggen/base/item.rb
132
133
  - lib/rggen/base/item_factory.rb
133
134
  - lib/rggen/builder/builder.rb
@@ -150,6 +151,8 @@ files:
150
151
  - lib/rggen/builtins/bit_field/ro.rb
151
152
  - lib/rggen/builtins/bit_field/rw.erb
152
153
  - lib/rggen/builtins/bit_field/rw.rb
154
+ - lib/rggen/builtins/bit_field/rwl_rwe.erb
155
+ - lib/rggen/builtins/bit_field/rwl_rwe.rb
153
156
  - lib/rggen/builtins/bit_field/type.rb
154
157
  - lib/rggen/builtins/bit_field/w0c_w1c.erb
155
158
  - lib/rggen/builtins/bit_field/w0c_w1c.rb
@@ -256,6 +259,7 @@ files:
256
259
  - ral/compile.f
257
260
  - ral/rggen_ral_block.svh
258
261
  - ral/rggen_ral_field.svh
262
+ - ral/rggen_ral_field_rwl_rwe.svh
259
263
  - ral/rggen_ral_macros.svh
260
264
  - ral/rggen_ral_map.svh
261
265
  - ral/rggen_ral_pkg.sv
@@ -263,6 +267,7 @@ files:
263
267
  - ral/rggen_ral_shadow_reg.svh
264
268
  - rtl/bit_field/rggen_bit_field_ro.sv
265
269
  - rtl/bit_field/rggen_bit_field_rw.sv
270
+ - rtl/bit_field/rggen_bit_field_rwl_rwe.sv
266
271
  - rtl/bit_field/rggen_bit_field_w0c_w1c.sv
267
272
  - rtl/bit_field/rggen_bit_field_w0s_w1s.sv
268
273
  - rtl/compile.f