rggen-systemverilog 0.13.0 → 0.14.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 (26) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rggen/systemverilog/ral.rb +2 -1
  3. data/lib/rggen/systemverilog/ral/bit_field/type/rwc_rws.rb +5 -0
  4. data/lib/rggen/systemverilog/ral/bit_field/type/{rwc_rwe_rwl.rb → rwe_rwl.rb} +0 -4
  5. data/lib/rggen/systemverilog/rtl.rb +4 -1
  6. data/lib/rggen/systemverilog/rtl/bit_field/type.rb +8 -0
  7. data/lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c.erb +2 -2
  8. data/lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c.rb +0 -16
  9. data/lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s.erb +2 -2
  10. data/lib/rggen/systemverilog/rtl/bit_field/type/rw_wo.erb +2 -2
  11. data/lib/rggen/systemverilog/rtl/bit_field/type/rwc.erb +10 -0
  12. data/lib/rggen/systemverilog/rtl/bit_field/type/rwc.rb +26 -0
  13. data/lib/rggen/systemverilog/rtl/bit_field/type/rwe.erb +10 -0
  14. data/lib/rggen/systemverilog/rtl/bit_field/type/rwe.rb +26 -0
  15. data/lib/rggen/systemverilog/rtl/bit_field/type/rwl.erb +10 -0
  16. data/lib/rggen/systemverilog/rtl/bit_field/type/rwl.rb +26 -0
  17. data/lib/rggen/systemverilog/rtl/bit_field/type/rws.erb +11 -0
  18. data/lib/rggen/systemverilog/rtl/bit_field/type/rws.rb +30 -0
  19. data/lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.erb +2 -2
  20. data/lib/rggen/systemverilog/rtl/register_block/protocol.rb +8 -0
  21. data/lib/rggen/systemverilog/rtl/register_block/protocol/apb.erb +2 -2
  22. data/lib/rggen/systemverilog/rtl/register_block/protocol/axi4lite.erb +2 -2
  23. data/lib/rggen/systemverilog/version.rb +1 -1
  24. metadata +14 -7
  25. data/lib/rggen/systemverilog/rtl/bit_field/type/rwc_rwe_rwl.erb +0 -16
  26. data/lib/rggen/systemverilog/rtl/bit_field/type/rwc_rwe_rwl.rb +0 -61
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a3623823355599396aefd51ff1e23199edeadb01ec6a9c5a41e4c96795bd415
4
- data.tar.gz: 9d64e7ed55d00af43bec20af3277fbc4236bb8c3a4839291de9c2e4ded5657ba
3
+ metadata.gz: 19dd7072e4a6d974adff622812b8687a3f9d4124b28fed40ca2f4e6f4c7c0a60
4
+ data.tar.gz: e36c2c9907a4da9c7ff5cf38bbdbc76427a3a409be7b430d54064ffd51ae610f
5
5
  SHA512:
6
- metadata.gz: c4c9f664b3d0232e088126bc6d5a564cae08526960fa0c2ce53fea558487695e0585d9339548c22a2842d14b1caf1148f8a99c2bc069e1ffa0a817b81adaa765
7
- data.tar.gz: aab9d80c62650db7bbae7ffe799aa3330cae974be7adecad9615e400576d472aa9e89ba043c653baa5c1d4aceb4d38b5677d8f996adbd6d1b191956f282ede6c
6
+ metadata.gz: 1b0585c58678e7e2826d8a8d933a8d74167d9118c969134057f61cd018035875d83df3e6a709e58c32f9df8ceb8b3474c022a2674d01a5aa3225e13c82ca6e71
7
+ data.tar.gz: 31fc31da516047f204f385e7fbb22316ad7edeb4252eebba47d0c571df77e5ec5078af1b9729248f784297a8f3bea1e5d654ce582b05c03535441f649ad713ec
@@ -9,7 +9,8 @@ module RgGen
9
9
  FEATURES = [
10
10
  'ral/bit_field/type',
11
11
  'ral/bit_field/type/reserved_rof',
12
- 'ral/bit_field/type/rwc_rwe_rwl',
12
+ 'ral/bit_field/type/rwc_rws',
13
+ 'ral/bit_field/type/rwe_rwl',
13
14
  'ral/bit_field/type/w0trg_w1trg',
14
15
  'ral/register/type',
15
16
  'ral/register/type/external',
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:rwc, :rws]) do
4
+ sv_ral { access 'RW' }
5
+ end
@@ -1,9 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, :rwc) do
4
- sv_ral { access 'RW' }
5
- end
6
-
7
3
  RgGen.define_list_item_feature(:bit_field, :type, [:rwe, :rwl]) do
8
4
  sv_ral do
9
5
  model_name do
@@ -15,7 +15,10 @@ module RgGen
15
15
  'rtl/bit_field/type/rof',
16
16
  'rtl/bit_field/type/rs_w0s_w1s',
17
17
  'rtl/bit_field/type/rw_wo',
18
- 'rtl/bit_field/type/rwc_rwe_rwl',
18
+ 'rtl/bit_field/type/rwc',
19
+ 'rtl/bit_field/type/rwe',
20
+ 'rtl/bit_field/type/rwl',
21
+ 'rtl/bit_field/type/rws',
19
22
  'rtl/bit_field/type/w0trg_w1trg',
20
23
  'rtl/global/array_port_format',
21
24
  'rtl/global/fold_sv_interface_port',
@@ -17,6 +17,14 @@ RgGen.define_list_feature(:bit_field, :type) do
17
17
  bit_field.width
18
18
  end
19
19
 
20
+ def clock
21
+ register_block.clock
22
+ end
23
+
24
+ def reset
25
+ register_block.reset
26
+ end
27
+
20
28
  def array_size
21
29
  bit_field.array_size
22
30
  end
@@ -5,8 +5,8 @@
5
5
  .WIDTH (<%= width %>),
6
6
  .INITIAL_VALUE (<%= initial_value %>)
7
7
  ) u_bit_field (
8
- .i_clk (<%= register_block.clock %>),
9
- .i_rst_n (<%= register_block.reset%>),
8
+ .i_clk (<%= clock %>),
9
+ .i_rst_n (<%= reset%>),
10
10
  .bit_field_if (<%= bit_field_if %>),
11
11
  .i_set (<%= set[loop_variables] %>),
12
12
  .i_mask (<%= mask %>),
@@ -1,21 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, :rc) do
4
- register_map do
5
- read_only
6
- reference use: true
7
- initial_value require: true
8
- end
9
- end
10
-
11
- RgGen.define_list_item_feature(:bit_field, :type, [:w0c, :w1c]) do
12
- register_map do
13
- read_write
14
- reference use: true
15
- initial_value require: true
16
- end
17
- end
18
-
19
3
  RgGen.define_list_item_feature(:bit_field, :type, [:rc, :w0c, :w1c]) do
20
4
  sv_rtl do
21
5
  build do
@@ -5,8 +5,8 @@
5
5
  .WIDTH (<%= width %>),
6
6
  .INITIAL_VALUE (<%= initial_value %>)
7
7
  ) u_bit_field (
8
- .i_clk (<%= register_block.clock %>),
9
- .i_rst_n (<%= register_block.reset %>),
8
+ .i_clk (<%= clock %>),
9
+ .i_rst_n (<%= reset %>),
10
10
  .bit_field_if (<%= bit_field_if %>),
11
11
  .i_clear (<%= clear[loop_variables] %>),
12
12
  .o_value (<%= value_out[loop_variables] %>)
@@ -2,8 +2,8 @@ rggen_bit_field_<%= bit_field.type %> #(
2
2
  .WIDTH (<%= width %>),
3
3
  .INITIAL_VALUE (<%= initial_value %>)
4
4
  ) u_bit_field (
5
- .i_clk (<%= register_block.clock %>),
6
- .i_rst_n (<%= register_block.reset %>),
5
+ .i_clk (<%= clock %>),
6
+ .i_rst_n (<%= reset %>),
7
7
  .bit_field_if (<%= bit_field_if %>),
8
8
  .o_value (<%= value_out[loop_variables] %>)
9
9
  );
@@ -0,0 +1,10 @@
1
+ rggen_bit_field_rwc #(
2
+ .WIDTH (<%= width %>),
3
+ .INITIAL_VALUE (<%= initial_value %>)
4
+ ) u_bit_field (
5
+ .i_clk (<%= clock %>),
6
+ .i_rst_n (<%= reset %>),
7
+ .bit_field_if (<%= bit_field_if %>),
8
+ .i_clear (<%= clear_signal %>),
9
+ .o_value (<%= value_out[loop_variables] %>)
10
+ );
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, :rwc) do
4
+ sv_rtl do
5
+ build do
6
+ unless bit_field.reference?
7
+ input :register_block, :clear, {
8
+ name: "i_#{full_name}_clear", data_type: :logic, width: 1,
9
+ array_size: array_size, array_format: array_port_format
10
+ }
11
+ end
12
+ output :register_block, :value_out, {
13
+ name: "o_#{full_name}", data_type: :logic, width: width,
14
+ array_size: array_size, array_format: array_port_format
15
+ }
16
+ end
17
+
18
+ main_code :bit_field, from_template: true
19
+
20
+ private
21
+
22
+ def clear_signal
23
+ reference_bit_field || clear[loop_variables]
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,10 @@
1
+ rggen_bit_field_rwe #(
2
+ .WIDTH (<%= width %>),
3
+ .INITIAL_VALUE (<%= initial_value %>)
4
+ ) u_bit_field (
5
+ .i_clk (<%= clock %>),
6
+ .i_rst_n (<%= reset %>),
7
+ .bit_field_if (<%= bit_field_if %>),
8
+ .i_enable (<%= enable_signal %>),
9
+ .o_value (<%= value_out[loop_variables] %>)
10
+ );
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, :rwe) do
4
+ sv_rtl do
5
+ build do
6
+ unless bit_field.reference?
7
+ input :register_block, :enable, {
8
+ name: "i_#{full_name}_enable", data_type: :logic, width: 1,
9
+ array_size: array_size, array_format: array_port_format
10
+ }
11
+ end
12
+ output :register_block, :value_out, {
13
+ name: "o_#{full_name}", data_type: :logic, width: width,
14
+ array_size: array_size, array_format: array_port_format
15
+ }
16
+ end
17
+
18
+ main_code :bit_field, from_template: true
19
+
20
+ private
21
+
22
+ def enable_signal
23
+ reference_bit_field || enable[loop_variables]
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,10 @@
1
+ rggen_bit_field_rwl #(
2
+ .WIDTH (<%= width %>),
3
+ .INITIAL_VALUE (<%= initial_value %>)
4
+ ) u_bit_field (
5
+ .i_clk (<%= clock %>),
6
+ .i_rst_n (<%= reset %>),
7
+ .bit_field_if (<%= bit_field_if %>),
8
+ .i_lock (<%= lock_signal %>),
9
+ .o_value (<%= value_out[loop_variables] %>)
10
+ );
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, :rwl) do
4
+ sv_rtl do
5
+ build do
6
+ unless bit_field.reference?
7
+ input :register_block, :lock, {
8
+ name: "i_#{full_name}_lock", data_type: :logic, width: 1,
9
+ array_size: array_size, array_format: array_port_format
10
+ }
11
+ end
12
+ output :register_block, :value_out, {
13
+ name: "o_#{full_name}", data_type: :logic, width: width,
14
+ array_size: array_size, array_format: array_port_format
15
+ }
16
+ end
17
+
18
+ main_code :bit_field, from_template: true
19
+
20
+ private
21
+
22
+ def lock_signal
23
+ reference_bit_field || lock[loop_variables]
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ rggen_bit_field_rws #(
2
+ .WIDTH (<%= width %>),
3
+ .INITIAL_VALUE (<%= initial_value %>)
4
+ ) u_bit_field (
5
+ .i_clk (<%= clock %>),
6
+ .i_rst_n (<%= reset %>),
7
+ .bit_field_if (<%= bit_field_if %>),
8
+ .i_set (<%= set_signal %>),
9
+ .i_value (<%= value_in[loop_variables] %>),
10
+ .o_value (<%= value_out[loop_variables] %>)
11
+ );
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, :rws) do
4
+ sv_rtl do
5
+ build do
6
+ unless bit_field.reference?
7
+ input :register_block, :set, {
8
+ name: "i_#{full_name}_set", data_type: :logic, width: 1,
9
+ array_size: array_size, array_format: array_port_format
10
+ }
11
+ end
12
+ input :register_block, :value_in, {
13
+ name: "i_#{full_name}", data_type: :logic, width: width,
14
+ array_size: array_size, array_format: array_port_format
15
+ }
16
+ output :register_block, :value_out, {
17
+ name: "o_#{full_name}", data_type: :logic, width: width,
18
+ array_size: array_size, array_format: array_port_format
19
+ }
20
+ end
21
+
22
+ main_code :bit_field, from_template: true
23
+
24
+ private
25
+
26
+ def set_signal
27
+ reference_bit_field || set[loop_variables]
28
+ end
29
+ end
30
+ end
@@ -2,8 +2,8 @@ rggen_bit_field_w01trg #(
2
2
  .TRIGGER_VALUE (<%= trigger_value %>),
3
3
  .WIDTH (<%= width %>)
4
4
  ) u_bit_field (
5
- .i_clk (<%= register_block.clock %>),
6
- .i_rst_n (<%= register_block.reset %>),
5
+ .i_clk (<%= clock %>),
6
+ .i_rst_n (<%= reset %>),
7
7
  .bit_field_if (<%= bit_field_if %>),
8
8
  .o_trigger (<%= trigger[loop_variables] %>)
9
9
  );
@@ -86,6 +86,14 @@ RgGen.define_list_feature(:register_block, :protocol) do
86
86
  register_block.total_registers
87
87
  end
88
88
 
89
+ def clock
90
+ register_block.clock
91
+ end
92
+
93
+ def reset
94
+ register_block.reset
95
+ end
96
+
89
97
  def register_if
90
98
  register_block.register_if
91
99
  end
@@ -3,8 +3,8 @@ rggen_apb_adapter #(
3
3
  .BUS_WIDTH (<%= bus_width %>),
4
4
  .REGISTERS (<%= total_registers %>)
5
5
  ) u_adapter (
6
- .i_clk (<%= register_block.clock %>),
7
- .i_rst_n (<%= register_block.reset %>),
6
+ .i_clk (<%= clock %>),
7
+ .i_rst_n (<%= reset %>),
8
8
  .apb_if (<%= apb_if %>),
9
9
  .register_if (<%= register_if %>)
10
10
  );
@@ -4,8 +4,8 @@ rggen_axi4lite_adapter #(
4
4
  .REGISTERS (<%= total_registers %>),
5
5
  .WRITE_FIRST (<%= write_first %>)
6
6
  ) u_adapter (
7
- .i_clk (<%= register_block.clock %>),
8
- .i_rst_n (<%= register_block.reset %>),
7
+ .i_clk (<%= clock %>),
8
+ .i_rst_n (<%= reset %>),
9
9
  .axi4lite_if (<%= axi4lite_if %>),
10
10
  .register_if (<%= register_if %>)
11
11
  );
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module SystemVerilog
5
- VERSION = '0.13.0'
5
+ VERSION = '0.14.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rggen-systemverilog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.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: 2019-08-28 00:00:00.000000000 Z
11
+ date: 2019-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docile
@@ -52,7 +52,7 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- description: 'Structure of SystemVerilog RTL and UVM RAL model writers for Rggen.
55
+ description: 'SystemVerilog RTL and UVM RAL model generators for RgGen.
56
56
 
57
57
  '
58
58
  email:
@@ -84,7 +84,8 @@ files:
84
84
  - lib/rggen/systemverilog/ral.rb
85
85
  - lib/rggen/systemverilog/ral/bit_field/type.rb
86
86
  - lib/rggen/systemverilog/ral/bit_field/type/reserved_rof.rb
87
- - lib/rggen/systemverilog/ral/bit_field/type/rwc_rwe_rwl.rb
87
+ - lib/rggen/systemverilog/ral/bit_field/type/rwc_rws.rb
88
+ - lib/rggen/systemverilog/ral/bit_field/type/rwe_rwl.rb
88
89
  - lib/rggen/systemverilog/ral/bit_field/type/w0trg_w1trg.rb
89
90
  - lib/rggen/systemverilog/ral/feature.rb
90
91
  - lib/rggen/systemverilog/ral/register/type.rb
@@ -110,8 +111,14 @@ files:
110
111
  - lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s.rb
111
112
  - lib/rggen/systemverilog/rtl/bit_field/type/rw_wo.erb
112
113
  - lib/rggen/systemverilog/rtl/bit_field/type/rw_wo.rb
113
- - lib/rggen/systemverilog/rtl/bit_field/type/rwc_rwe_rwl.erb
114
- - lib/rggen/systemverilog/rtl/bit_field/type/rwc_rwe_rwl.rb
114
+ - lib/rggen/systemverilog/rtl/bit_field/type/rwc.erb
115
+ - lib/rggen/systemverilog/rtl/bit_field/type/rwc.rb
116
+ - lib/rggen/systemverilog/rtl/bit_field/type/rwe.erb
117
+ - lib/rggen/systemverilog/rtl/bit_field/type/rwe.rb
118
+ - lib/rggen/systemverilog/rtl/bit_field/type/rwl.erb
119
+ - lib/rggen/systemverilog/rtl/bit_field/type/rwl.rb
120
+ - lib/rggen/systemverilog/rtl/bit_field/type/rws.erb
121
+ - lib/rggen/systemverilog/rtl/bit_field/type/rws.rb
115
122
  - lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.erb
116
123
  - lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.rb
117
124
  - lib/rggen/systemverilog/rtl/feature.rb
@@ -159,5 +166,5 @@ requirements: []
159
166
  rubygems_version: 3.0.3
160
167
  signing_key:
161
168
  specification_version: 4
162
- summary: rggen-systemverilog-0.13.0
169
+ summary: rggen-systemverilog-0.14.0
163
170
  test_files: []
@@ -1,16 +0,0 @@
1
- rggen_bit_field_<%= bit_field.type %> #(
2
- .WIDTH (<%= width %>),
3
- .INITIAL_VALUE (<%= initial_value %>)
4
- ) u_bit_field (
5
- .i_clk (<%= register_block.clock %>),
6
- .i_rst_n (<%= register_block.reset %>),
7
- .bit_field_if (<%= bit_field_if %>),
8
- <% if bit_field.type == :rwc %>
9
- .i_clear (<%= control_signal %>),
10
- <% elsif bit_field.type == :rwe %>
11
- .i_enable (<%= control_signal %>),
12
- <% else %>
13
- .i_lock (<%= control_signal %>),
14
- <% end %>
15
- .o_value (<%= value_out[loop_variables] %>)
16
- );
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RgGen.define_list_item_feature(:bit_field, :type, [:rwc, :rwe, :rwl]) do
4
- sv_rtl do
5
- build do
6
- if clear_port?
7
- input :register_block, :clear, {
8
- name: "i_#{full_name}_clear", data_type: :logic, width: 1,
9
- array_size: array_size, array_format: array_port_format
10
- }
11
- end
12
- if enable_port?
13
- input :register_block, :enable, {
14
- name: "i_#{full_name}_enable", data_type: :logic, width: 1,
15
- array_size: array_size, array_format: array_port_format
16
- }
17
- end
18
- if lock_port?
19
- input :register_block, :lock, {
20
- name: "i_#{full_name}_lock", data_type: :logic, width: 1,
21
- array_size: array_size, array_format: array_port_format
22
- }
23
- end
24
- output :register_block, :value_out, {
25
- name: "o_#{full_name}", data_type: :logic, width: width,
26
- array_size: array_size, array_format: array_port_format
27
- }
28
- end
29
-
30
- main_code :bit_field, from_template: true
31
-
32
- private
33
-
34
- def clear_port?
35
- bit_field.type == :rwc && !bit_field.reference?
36
- end
37
-
38
- def enable_port?
39
- bit_field.type == :rwe && !bit_field.reference?
40
- end
41
-
42
- def lock_port?
43
- bit_field.type == :rwl && !bit_field.reference?
44
- end
45
-
46
- def control_signal
47
- reference_bit_field || control_port[loop_variables]
48
- end
49
-
50
- def control_port
51
- case bit_field.type
52
- when :rwc
53
- clear
54
- when :rwe
55
- enable
56
- when :rwl
57
- lock
58
- end
59
- end
60
- end
61
- end