rggen-systemverilog 0.25.1 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +3 -2
  4. data/lib/rggen/systemverilog/common/utility/identifier.rb +1 -1
  5. data/lib/rggen/systemverilog/ral/bit_field/type/rotrg_rwtrg_wotrg.rb +9 -0
  6. data/lib/rggen/systemverilog/ral/bit_field/type/row0trg_row1trg.rb +5 -0
  7. data/lib/rggen/systemverilog/ral/bit_field/type/rowo_rowotrg.rb +8 -0
  8. data/lib/rggen/systemverilog/ral/bit_field/type.rb +19 -6
  9. data/lib/rggen/systemverilog/ral/register_common.rb +1 -1
  10. data/lib/rggen/systemverilog/ral.rb +24 -27
  11. data/lib/rggen/systemverilog/rtl/bit_field/sv_rtl_top.rb +0 -16
  12. data/lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.erb +2 -0
  13. data/lib/rggen/systemverilog/rtl/bit_field/type/{ro.erb → ro_rotrg.erb} +8 -4
  14. data/lib/rggen/systemverilog/rtl/bit_field/type/ro_rotrg.rb +40 -0
  15. data/lib/rggen/systemverilog/rtl/bit_field/type/rof.erb +5 -2
  16. data/lib/rggen/systemverilog/rtl/bit_field/type/row0trg_row1trg.erb +10 -0
  17. data/lib/rggen/systemverilog/rtl/bit_field/type/{ro.rb → row0trg_row1trg.rb} +10 -2
  18. data/lib/rggen/systemverilog/rtl/bit_field/type/rowo_rowotrg.erb +21 -0
  19. data/lib/rggen/systemverilog/rtl/bit_field/type/rowo_rowotrg.rb +52 -0
  20. data/lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.erb +2 -0
  21. data/lib/rggen/systemverilog/rtl/bit_field/type/{rw_w1_wo_wo1.erb → rw_rwtrg_w1.erb} +4 -2
  22. data/lib/rggen/systemverilog/rtl/bit_field/type/rw_rwtrg_w1.rb +46 -0
  23. data/lib/rggen/systemverilog/rtl/bit_field/type/rwc.erb +2 -0
  24. data/lib/rggen/systemverilog/rtl/bit_field/type/rwe_rwl.erb +2 -0
  25. data/lib/rggen/systemverilog/rtl/bit_field/type/rws.erb +2 -0
  26. data/lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.erb +2 -0
  27. data/lib/rggen/systemverilog/rtl/bit_field/type/w0t_w1t.erb +2 -0
  28. data/lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.erb +1 -0
  29. data/lib/rggen/systemverilog/rtl/bit_field/type/wo_wo1_wotrg.erb +22 -0
  30. data/lib/rggen/systemverilog/rtl/bit_field/type/wo_wo1_wotrg.rb +38 -0
  31. data/lib/rggen/systemverilog/rtl/bit_field/type/wrc_wrs.erb +2 -0
  32. data/lib/rggen/systemverilog/rtl/bit_field/type.rb +15 -0
  33. data/lib/rggen/systemverilog/rtl/register/type/default.erb +0 -1
  34. data/lib/rggen/systemverilog/rtl/register/type/external.rb +5 -54
  35. data/lib/rggen/systemverilog/rtl/register/type/indirect.erb +0 -1
  36. data/lib/rggen/systemverilog/rtl/register/type.rb +12 -0
  37. data/lib/rggen/systemverilog/rtl/register_block/protocol/apb.rb +3 -60
  38. data/lib/rggen/systemverilog/rtl/register_block/protocol/axi4lite.rb +4 -118
  39. data/lib/rggen/systemverilog/rtl/register_block/protocol/wishbone.erb +17 -0
  40. data/lib/rggen/systemverilog/rtl/register_block/protocol/wishbone.rb +26 -0
  41. data/lib/rggen/systemverilog/rtl/register_block/protocol.rb +2 -1
  42. data/lib/rggen/systemverilog/rtl/register_block/sv_rtl_macros.erb +12 -0
  43. data/lib/rggen/systemverilog/rtl.rb +38 -41
  44. data/lib/rggen/systemverilog/version.rb +1 -1
  45. metadata +22 -13
  46. data/lib/rggen/systemverilog/ral/setup.rb +0 -8
  47. data/lib/rggen/systemverilog/rtl/bit_field/type/rw_w1_wo_wo1.rb +0 -24
  48. data/lib/rggen/systemverilog/rtl/global/fold_sv_interface_port.rb +0 -28
  49. data/lib/rggen/systemverilog/rtl/setup.rb +0 -14
@@ -3,6 +3,10 @@
3
3
  RgGen.define_list_feature(:bit_field, :type) do
4
4
  sv_rtl do
5
5
  base_feature do
6
+ pre_code :bit_field do |code|
7
+ code << bit_field_if_connection << nl
8
+ end
9
+
6
10
  private
7
11
 
8
12
  def array_port_format
@@ -17,6 +21,10 @@ RgGen.define_list_feature(:bit_field, :type) do
17
21
  bit_field.width
18
22
  end
19
23
 
24
+ def lsb
25
+ bit_field.lsb(bit_field.local_index)
26
+ end
27
+
20
28
  def clock
21
29
  register_block.clock
22
30
  end
@@ -52,6 +60,13 @@ RgGen.define_list_feature(:bit_field, :type) do
52
60
  def loop_variables
53
61
  bit_field.loop_variables
54
62
  end
63
+
64
+ def bit_field_if_connection
65
+ macro_call(
66
+ 'rggen_connect_bit_field_if',
67
+ [register.bit_field_if, bit_field_if, lsb, width]
68
+ )
69
+ end
55
70
  end
56
71
 
57
72
  factory do
@@ -5,7 +5,6 @@ rggen_default_register #(
5
5
  .OFFSET_ADDRESS (<%= offset_address %>),
6
6
  .BUS_WIDTH (<%= bus_width %>),
7
7
  .DATA_WIDTH (<%= width %>),
8
- .VALID_BITS (<%= valid_bits %>),
9
8
  .REGISTER_INDEX (<%= register_index %>)
10
9
  ) u_register (
11
10
  .i_clk (<%= register_block.clock %>),
@@ -3,63 +3,14 @@
3
3
  RgGen.define_list_item_feature(:register, :type, :external) do
4
4
  sv_rtl do
5
5
  build do
6
- if configuration.fold_sv_interface_port?
7
- interface_port :bus_if, {
8
- name: "#{register.name}_bus_if",
9
- interface_type: 'rggen_bus_if',
10
- modport: 'master'
11
- }
12
- else
13
- output :valid, {
14
- name: "o_#{register.name}_valid", width: 1
15
- }
16
- output :access, {
17
- name: "o_#{register.name}_access", width: '$bits(rggen_access)'
18
- }
19
- output :address, {
20
- name: "o_#{register.name}_address", width: address_width
21
- }
22
- output :write_data, {
23
- name: "o_#{register.name}_data", width: bus_width
24
- }
25
- output :strobe, {
26
- name: "o_#{register.name}_strobe", width: byte_width
27
- }
28
- input :ready, {
29
- name: "i_#{register.name}_ready", width: 1
30
- }
31
- input :status, {
32
- name: "i_#{register.name}_status", width: 2
33
- }
34
- input :read_data, {
35
- name: "i_#{register.name}_data", width: bus_width
36
- }
37
- interface :bus_if, {
38
- name: 'bus_if', interface_type: 'rggen_bus_if',
39
- parameter_values: [address_width, bus_width],
40
- variables: [
41
- 'valid', 'access', 'address', 'write_data', 'strobe',
42
- 'ready', 'status', 'read_data'
43
- ]
44
- }
45
- end
6
+ interface_port :bus_if, {
7
+ name: "#{register.name}_bus_if",
8
+ interface_type: 'rggen_bus_if',
9
+ modport: 'master'
10
+ }
46
11
  end
47
12
 
48
13
  main_code :register, from_template: true
49
- main_code :register do |code|
50
- unless configuration.fold_sv_interface_port?
51
- [
52
- [valid, bus_if.valid],
53
- [access, bus_if.access],
54
- [address, bus_if.address],
55
- [write_data, bus_if.write_data],
56
- [strobe, bus_if.strobe],
57
- [bus_if.ready, ready],
58
- [bus_if.status, "rggen_status'(#{status})"],
59
- [bus_if.read_data, read_data]
60
- ].map { |lhs, rhs| code << assign(lhs, rhs) << nl }
61
- end
62
- end
63
14
 
64
15
  private
65
16
 
@@ -5,7 +5,6 @@ rggen_indirect_register #(
5
5
  .OFFSET_ADDRESS (<%= offset_address %>),
6
6
  .BUS_WIDTH (<%= bus_width %>),
7
7
  .DATA_WIDTH (<%= width %>),
8
- .VALID_BITS (<%= valid_bits %>),
9
8
  .INDIRECT_INDEX_WIDTH (<%= index_width %>),
10
9
  .INDIRECT_INDEX_VALUE (<%= concat(index_values) %>)
11
10
  ) u_register (
@@ -5,6 +5,11 @@ RgGen.define_list_feature(:register, :type) do
5
5
  base_feature do
6
6
  include RgGen::SystemVerilog::RTL::RegisterType
7
7
 
8
+ pre_code :register do |code|
9
+ register.bit_fields.empty? ||
10
+ (code << tie_off_unused_signals << nl)
11
+ end
12
+
8
13
  private
9
14
 
10
15
  def register_if
@@ -14,6 +19,13 @@ RgGen.define_list_feature(:register, :type) do
14
19
  def bit_field_if
15
20
  register.bit_field_if
16
21
  end
22
+
23
+ def tie_off_unused_signals
24
+ macro_call(
25
+ 'rggen_tie_off_unused_signals',
26
+ [width, valid_bits, bit_field_if]
27
+ )
28
+ end
17
29
  end
18
30
 
19
31
  default_feature do
@@ -21,68 +21,11 @@ RgGen.define_list_item_feature(:register_block, :protocol, :apb) do
21
21
 
22
22
  sv_rtl do
23
23
  build do
24
- if configuration.fold_sv_interface_port?
25
- interface_port :apb_if, {
26
- name: 'apb_if', interface_type: 'rggen_apb_if', modport: 'slave'
27
- }
28
- else
29
- input :psel, {
30
- name: 'i_psel', width: 1
31
- }
32
- input :penable, {
33
- name: 'i_penable', width: 1
34
- }
35
- input :paddr, {
36
- name: 'i_paddr', width: address_width
37
- }
38
- input :pprot, {
39
- name: 'i_pprot', width: 3
40
- }
41
- input :pwrite, {
42
- name: 'i_pwrite', width: 1
43
- }
44
- input :pstrb, {
45
- name: 'i_pstrb', width: byte_width
46
- }
47
- input :pwdata, {
48
- name: 'i_pwdata', width: bus_width
49
- }
50
- output :pready, {
51
- name: 'o_pready', width: 1
52
- }
53
- output :prdata, {
54
- name: 'o_prdata', width: bus_width
55
- }
56
- output :pslverr, {
57
- name: 'o_pslverr', width: 1
58
- }
59
- interface :apb_if, {
60
- name: 'apb_if', interface_type: 'rggen_apb_if',
61
- parameter_values: [address_width, bus_width],
62
- variables: [
63
- 'psel', 'penable', 'paddr', 'pprot', 'pwrite', 'pstrb', 'pwdata',
64
- 'pready', 'prdata', 'pslverr'
65
- ]
66
- }
67
- end
24
+ interface_port :apb_if, {
25
+ name: 'apb_if', interface_type: 'rggen_apb_if', modport: 'slave'
26
+ }
68
27
  end
69
28
 
70
29
  main_code :register_block, from_template: true
71
- main_code :register_block do |code|
72
- unless configuration.fold_sv_interface_port?
73
- [
74
- [apb_if.psel, psel],
75
- [apb_if.penable, penable],
76
- [apb_if.paddr, paddr],
77
- [apb_if.pprot, pprot],
78
- [apb_if.pwrite, pwrite],
79
- [apb_if.pstrb, pstrb],
80
- [apb_if.pwdata, pwdata],
81
- [pready, apb_if.pready],
82
- [prdata, apb_if.prdata],
83
- [pslverr, apb_if.pslverr]
84
- ].each { |lhs, rhs| code << assign(lhs, rhs) << nl }
85
- end
86
- end
87
30
  end
88
31
  end
@@ -19,132 +19,18 @@ RgGen.define_list_item_feature(:register_block, :protocol, :axi4lite) do
19
19
  parameter :write_first, {
20
20
  name: 'WRITE_FIRST', data_type: :bit, default: 1
21
21
  }
22
- if configuration.fold_sv_interface_port?
23
- interface_port :axi4lite_if, {
24
- name: 'axi4lite_if',
25
- interface_type: 'rggen_axi4lite_if', modport: 'slave'
26
- }
27
- else
28
- input :awvalid, {
29
- name: 'i_awvalid', width: 1
30
- }
31
- output :awready, {
32
- name: 'o_awready', width: 1
33
- }
34
- input :awid, {
35
- name: 'i_awid', width: id_port_width
36
- }
37
- input :awaddr, {
38
- name: 'i_awaddr', width: address_width
39
- }
40
- input :awprot, {
41
- name: 'i_awprot', width: 3
42
- }
43
- input :wvalid, {
44
- name: 'i_wvalid', width: 1
45
- }
46
- output :wready, {
47
- name: 'o_wready', width: 1
48
- }
49
- input :wdata, {
50
- name: 'i_wdata', width: bus_width
51
- }
52
- input :wstrb, {
53
- name: 'i_wstrb', width: byte_width
54
- }
55
- output :bvalid, {
56
- name: 'o_bvalid', width: 1
57
- }
58
- output :bid, {
59
- name: 'o_bid', width: id_port_width
60
- }
61
- input :bready, {
62
- name: 'i_bready', width: 1
63
- }
64
- output :bresp, {
65
- name: 'o_bresp', width: 2
66
- }
67
- input :arvalid, {
68
- name: 'i_arvalid', width: 1
69
- }
70
- output :arready, {
71
- name: 'o_arready', width: 1
72
- }
73
- input :arid, {
74
- name: 'i_arid', width: id_port_width
75
- }
76
- input :araddr, {
77
- name: 'i_araddr', width: address_width
78
- }
79
- input :arprot, {
80
- name: 'i_arprot', width: 3
81
- }
82
- output :rvalid, {
83
- name: 'o_rvalid', width: 1
84
- }
85
- input :rready, {
86
- name: 'i_rready', width: 1
87
- }
88
- output :rid, {
89
- name: 'o_rid', width: id_port_width
90
- }
91
- output :rdata, {
92
- name: 'o_rdata', width: bus_width
93
- }
94
- output :rresp, {
95
- name: 'o_rresp', width: 2
96
- }
97
- interface :axi4lite_if, {
98
- name: 'axi4lite_if', interface_type: 'rggen_axi4lite_if',
99
- parameter_values: [id_width, address_width, bus_width],
100
- variables: [
101
- 'awvalid', 'awready', 'awid', 'awaddr', 'awprot',
102
- 'wvalid', 'wready', 'wdata', 'wstrb',
103
- 'bvalid', 'bready', 'bid', 'bresp',
104
- 'arvalid', 'arready', 'arid', 'araddr', 'arprot',
105
- 'rvalid', 'rready', 'rid', 'rdata', 'rresp'
106
- ]
107
- }
108
- end
22
+ interface_port :axi4lite_if, {
23
+ name: 'axi4lite_if',
24
+ interface_type: 'rggen_axi4lite_if', modport: 'slave'
25
+ }
109
26
  end
110
27
 
111
28
  main_code :register_block, from_template: true
112
- main_code :register_block do |code|
113
- configuration.fold_sv_interface_port? || assign_axi4lite_signals(code)
114
- end
115
29
 
116
30
  private
117
31
 
118
32
  def id_port_width
119
33
  "((#{id_width}>0)?#{id_width}:1)"
120
34
  end
121
-
122
- def assign_axi4lite_signals(code)
123
- [
124
- [axi4lite_if.awvalid, awvalid],
125
- [awready, axi4lite_if.awready],
126
- [axi4lite_if.awid, awid],
127
- [axi4lite_if.awaddr, awaddr],
128
- [axi4lite_if.awprot, awprot],
129
- [axi4lite_if.wvalid, wvalid],
130
- [wready, axi4lite_if.wready],
131
- [axi4lite_if.wdata, wdata],
132
- [axi4lite_if.wstrb, wstrb],
133
- [bvalid, axi4lite_if.bvalid],
134
- [axi4lite_if.bready, bready],
135
- [bid, axi4lite_if.bid],
136
- [bresp, axi4lite_if.bresp],
137
- [axi4lite_if.arvalid, arvalid],
138
- [arready, axi4lite_if.arready],
139
- [axi4lite_if.arid, arid],
140
- [axi4lite_if.araddr, araddr],
141
- [axi4lite_if.arprot, arprot],
142
- [rvalid, axi4lite_if.rvalid],
143
- [axi4lite_if.rready, rready],
144
- [rid, axi4lite_if.rid],
145
- [rdata, axi4lite_if.rdata],
146
- [rresp, axi4lite_if.rresp]
147
- ].each { |lhs, rhs| code << assign(lhs, rhs) << nl }
148
- end
149
35
  end
150
36
  end
@@ -0,0 +1,17 @@
1
+ rggen_wishbone_adapter #(
2
+ .ADDRESS_WIDTH (<%= address_width %>),
3
+ .LOCAL_ADDRESS_WIDTH (<%= local_address_width %>),
4
+ .BUS_WIDTH (<%= bus_width %>),
5
+ .REGISTERS (<%= total_registers %>),
6
+ .PRE_DECODE (<%= pre_decode %>),
7
+ .BASE_ADDRESS (<%= base_address %>),
8
+ .BYTE_SIZE (<%= byte_size %>),
9
+ .ERROR_STATUS (<%= error_status %>),
10
+ .DEFAULT_READ_DATA (<%= default_read_data %>),
11
+ .USE_STALL (<%= use_stall %>)
12
+ ) u_adapter (
13
+ .i_clk (<%= clock %>),
14
+ .i_rst_n (<%= reset %>),
15
+ .wishbone_if (<%= wishbone_if %>),
16
+ .register_if (<%= register_if %>)
17
+ );
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:register_block, :protocol, :wishbone) do
4
+ configuration do
5
+ verify(:component) do
6
+ error_condition { configuration.bus_width > 64 }
7
+ message do
8
+ 'bus width over 64 bit is not supported: ' \
9
+ "#{configuration.bus_width}"
10
+ end
11
+ end
12
+ end
13
+
14
+ sv_rtl do
15
+ build do
16
+ parameter :use_stall, {
17
+ name: 'USE_STALL', data_type: :bit, default: 1
18
+ }
19
+ interface_port :wishbone_if, {
20
+ name: 'wishbone_if', interface_type: 'rggen_wishbone_if', modport: 'slave'
21
+ }
22
+ end
23
+
24
+ main_code :register_block, from_template: true
25
+ end
26
+ end
@@ -8,7 +8,8 @@ RgGen.define_list_feature(:register_block, :protocol) do
8
8
 
9
9
  def available_protocols
10
10
  feature_registries
11
- .map(&method(:collect_available_protocols)).inject(:&)
11
+ .map { |registry| registry.enabled_features(:protocol) }
12
+ .inject(:&)
12
13
  end
13
14
 
14
15
  private
@@ -7,3 +7,15 @@
7
7
  assign RIF.read_data[LSB+:WIDTH] = FIF.read_data; \
8
8
  assign RIF.value[LSB+:WIDTH] = FIF.value;
9
9
  `endif
10
+ `ifndef rggen_tie_off_unused_signals
11
+ `define rggen_tie_off_unused_signals(WIDTH, VALID_BITS, RIF) \
12
+ if (1) begin : __g_tie_off \
13
+ genvar __i; \
14
+ for (__i = 0;__i < WIDTH;++__i) begin : g \
15
+ if (!(((VALID_BITS) >> __i) & 1'b1)) begin : g \
16
+ assign RIF.read_data[__i] = 1'b0; \
17
+ assign RIF.value[__i] = 1'b0; \
18
+ end \
19
+ end \
20
+ end
21
+ `endif
@@ -8,47 +8,44 @@ require_relative 'rtl/register_type'
8
8
  require_relative 'rtl/indirect_index'
9
9
  require_relative 'rtl/bit_field_index'
10
10
 
11
- module RgGen
12
- module SystemVerilog
13
- module RTL
14
- extend Core::Plugin
11
+ RgGen.setup_plugin :'rggen-sv-rtl' do |plugin|
12
+ plugin.version RgGen::SystemVerilog::VERSION
15
13
 
16
- setup_plugin :'rggen-sv-rtl' do |plugin|
17
- plugin.version SystemVerilog::VERSION
18
-
19
- plugin.register_component :sv_rtl do
20
- component Common::Component, Common::ComponentFactory
21
- feature Feature, Common::FeatureFactory
22
- end
23
-
24
- plugin.files [
25
- 'rtl/bit_field/sv_rtl_top',
26
- 'rtl/bit_field/type',
27
- 'rtl/bit_field/type/rc_w0c_w1c_wc_woc',
28
- 'rtl/bit_field/type/ro',
29
- 'rtl/bit_field/type/rof',
30
- 'rtl/bit_field/type/rs_w0s_w1s_ws_wos',
31
- 'rtl/bit_field/type/rw_w1_wo_wo1',
32
- 'rtl/bit_field/type/rwc',
33
- 'rtl/bit_field/type/rwe_rwl',
34
- 'rtl/bit_field/type/rws',
35
- 'rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc',
36
- 'rtl/bit_field/type/w0t_w1t',
37
- 'rtl/bit_field/type/w0trg_w1trg',
38
- 'rtl/bit_field/type/wrc_wrs',
39
- 'rtl/global/array_port_format',
40
- 'rtl/global/fold_sv_interface_port',
41
- 'rtl/register/sv_rtl_top',
42
- 'rtl/register/type',
43
- 'rtl/register/type/external',
44
- 'rtl/register/type/indirect',
45
- 'rtl/register_block/protocol',
46
- 'rtl/register_block/protocol/apb',
47
- 'rtl/register_block/protocol/axi4lite',
48
- 'rtl/register_block/sv_rtl_top',
49
- 'rtl/register_file/sv_rtl_top'
50
- ]
51
- end
52
- end
14
+ plugin.register_component :sv_rtl do
15
+ component RgGen::SystemVerilog::Common::Component,
16
+ RgGen::SystemVerilog::Common::ComponentFactory
17
+ feature RgGen::SystemVerilog::RTL::Feature,
18
+ RgGen::SystemVerilog::Common::FeatureFactory
53
19
  end
20
+
21
+ plugin.files [
22
+ 'rtl/global/array_port_format',
23
+ 'rtl/register_block/sv_rtl_top',
24
+ 'rtl/register_block/protocol',
25
+ 'rtl/register_block/protocol/apb',
26
+ 'rtl/register_block/protocol/axi4lite',
27
+ 'rtl/register_block/protocol/wishbone',
28
+ 'rtl/register_file/sv_rtl_top',
29
+ 'rtl/register/sv_rtl_top',
30
+ 'rtl/register/type',
31
+ 'rtl/register/type/external',
32
+ 'rtl/register/type/indirect',
33
+ 'rtl/bit_field/sv_rtl_top',
34
+ 'rtl/bit_field/type',
35
+ 'rtl/bit_field/type/rc_w0c_w1c_wc_woc',
36
+ 'rtl/bit_field/type/ro_rotrg',
37
+ 'rtl/bit_field/type/rof',
38
+ 'rtl/bit_field/type/row0trg_row1trg',
39
+ 'rtl/bit_field/type/rowo_rowotrg',
40
+ 'rtl/bit_field/type/rs_w0s_w1s_ws_wos',
41
+ 'rtl/bit_field/type/rw_rwtrg_w1',
42
+ 'rtl/bit_field/type/rwc',
43
+ 'rtl/bit_field/type/rwe_rwl',
44
+ 'rtl/bit_field/type/rws',
45
+ 'rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc',
46
+ 'rtl/bit_field/type/w0t_w1t',
47
+ 'rtl/bit_field/type/w0trg_w1trg',
48
+ 'rtl/bit_field/type/wo_wo1_wotrg',
49
+ 'rtl/bit_field/type/wrc_wrs'
50
+ ]
54
51
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module SystemVerilog
5
- VERSION = '0.25.1'
5
+ VERSION = '0.27.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.25.1
4
+ version: 0.27.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: 2021-05-16 00:00:00.000000000 Z
11
+ date: 2022-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -56,6 +56,9 @@ files:
56
56
  - lib/rggen/systemverilog/ral.rb
57
57
  - lib/rggen/systemverilog/ral/bit_field/type.rb
58
58
  - lib/rggen/systemverilog/ral/bit_field/type/rof.rb
59
+ - lib/rggen/systemverilog/ral/bit_field/type/rotrg_rwtrg_wotrg.rb
60
+ - lib/rggen/systemverilog/ral/bit_field/type/row0trg_row1trg.rb
61
+ - lib/rggen/systemverilog/ral/bit_field/type/rowo_rowotrg.rb
59
62
  - lib/rggen/systemverilog/ral/bit_field/type/rwc_rws.rb
60
63
  - lib/rggen/systemverilog/ral/bit_field/type/rwe_rwl.rb
61
64
  - lib/rggen/systemverilog/ral/bit_field/type/w0trg_w1trg.rb
@@ -71,20 +74,23 @@ files:
71
74
  - lib/rggen/systemverilog/ral/register_common.rb
72
75
  - lib/rggen/systemverilog/ral/register_file/sv_ral_model.erb
73
76
  - lib/rggen/systemverilog/ral/register_file/sv_ral_model.rb
74
- - lib/rggen/systemverilog/ral/setup.rb
75
77
  - lib/rggen/systemverilog/rtl.rb
76
78
  - lib/rggen/systemverilog/rtl/bit_field/sv_rtl_top.rb
77
79
  - lib/rggen/systemverilog/rtl/bit_field/type.rb
78
80
  - lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.erb
79
81
  - lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.rb
80
- - lib/rggen/systemverilog/rtl/bit_field/type/ro.erb
81
- - lib/rggen/systemverilog/rtl/bit_field/type/ro.rb
82
+ - lib/rggen/systemverilog/rtl/bit_field/type/ro_rotrg.erb
83
+ - lib/rggen/systemverilog/rtl/bit_field/type/ro_rotrg.rb
82
84
  - lib/rggen/systemverilog/rtl/bit_field/type/rof.erb
83
85
  - lib/rggen/systemverilog/rtl/bit_field/type/rof.rb
86
+ - lib/rggen/systemverilog/rtl/bit_field/type/row0trg_row1trg.erb
87
+ - lib/rggen/systemverilog/rtl/bit_field/type/row0trg_row1trg.rb
88
+ - lib/rggen/systemverilog/rtl/bit_field/type/rowo_rowotrg.erb
89
+ - lib/rggen/systemverilog/rtl/bit_field/type/rowo_rowotrg.rb
84
90
  - lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.erb
85
91
  - lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.rb
86
- - lib/rggen/systemverilog/rtl/bit_field/type/rw_w1_wo_wo1.erb
87
- - lib/rggen/systemverilog/rtl/bit_field/type/rw_w1_wo_wo1.rb
92
+ - lib/rggen/systemverilog/rtl/bit_field/type/rw_rwtrg_w1.erb
93
+ - lib/rggen/systemverilog/rtl/bit_field/type/rw_rwtrg_w1.rb
88
94
  - lib/rggen/systemverilog/rtl/bit_field/type/rwc.erb
89
95
  - lib/rggen/systemverilog/rtl/bit_field/type/rwc.rb
90
96
  - lib/rggen/systemverilog/rtl/bit_field/type/rwe_rwl.erb
@@ -97,12 +103,13 @@ files:
97
103
  - lib/rggen/systemverilog/rtl/bit_field/type/w0t_w1t.rb
98
104
  - lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.erb
99
105
  - lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.rb
106
+ - lib/rggen/systemverilog/rtl/bit_field/type/wo_wo1_wotrg.erb
107
+ - lib/rggen/systemverilog/rtl/bit_field/type/wo_wo1_wotrg.rb
100
108
  - lib/rggen/systemverilog/rtl/bit_field/type/wrc_wrs.erb
101
109
  - lib/rggen/systemverilog/rtl/bit_field/type/wrc_wrs.rb
102
110
  - lib/rggen/systemverilog/rtl/bit_field_index.rb
103
111
  - lib/rggen/systemverilog/rtl/feature.rb
104
112
  - lib/rggen/systemverilog/rtl/global/array_port_format.rb
105
- - lib/rggen/systemverilog/rtl/global/fold_sv_interface_port.rb
106
113
  - lib/rggen/systemverilog/rtl/indirect_index.rb
107
114
  - lib/rggen/systemverilog/rtl/partial_sum.rb
108
115
  - lib/rggen/systemverilog/rtl/register/sv_rtl_top.rb
@@ -117,19 +124,21 @@ files:
117
124
  - lib/rggen/systemverilog/rtl/register_block/protocol/apb.rb
118
125
  - lib/rggen/systemverilog/rtl/register_block/protocol/axi4lite.erb
119
126
  - lib/rggen/systemverilog/rtl/register_block/protocol/axi4lite.rb
127
+ - lib/rggen/systemverilog/rtl/register_block/protocol/wishbone.erb
128
+ - lib/rggen/systemverilog/rtl/register_block/protocol/wishbone.rb
120
129
  - lib/rggen/systemverilog/rtl/register_block/sv_rtl_macros.erb
121
130
  - lib/rggen/systemverilog/rtl/register_block/sv_rtl_top.rb
122
131
  - lib/rggen/systemverilog/rtl/register_file/sv_rtl_top.rb
123
132
  - lib/rggen/systemverilog/rtl/register_index.rb
124
133
  - lib/rggen/systemverilog/rtl/register_type.rb
125
- - lib/rggen/systemverilog/rtl/setup.rb
126
134
  - lib/rggen/systemverilog/version.rb
127
135
  homepage: https://github.com/rggen/rggen-systemverilog
128
136
  licenses:
129
137
  - MIT
130
138
  metadata:
131
- bug_tracker_uri: https://github.com/rggen/rggen-systemverilog/issues
139
+ bug_tracker_uri: https://github.com/rggen/rggen/issues
132
140
  mailing_list_uri: https://groups.google.com/d/forum/rggen
141
+ rubygems_mfa_required: 'true'
133
142
  source_code_uri: https://github.com/rggen/rggen-systemverilog
134
143
  wiki_uri: https://github.com/rggen/rggen/wiki
135
144
  post_install_message:
@@ -140,15 +149,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
149
  requirements:
141
150
  - - ">="
142
151
  - !ruby/object:Gem::Version
143
- version: '2.5'
152
+ version: '2.6'
144
153
  required_rubygems_version: !ruby/object:Gem::Requirement
145
154
  requirements:
146
155
  - - ">="
147
156
  - !ruby/object:Gem::Version
148
157
  version: '0'
149
158
  requirements: []
150
- rubygems_version: 3.2.3
159
+ rubygems_version: 3.3.3
151
160
  signing_key:
152
161
  specification_version: 4
153
- summary: rggen-systemverilog-0.25.1
162
+ summary: rggen-systemverilog-0.27.0
154
163
  test_files: []
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rggen/systemverilog/ral'
4
-
5
- RgGen.register_plugin RgGen::SystemVerilog::RAL do |builder|
6
- builder.enable :register_block, [:sv_ral_model, :sv_ral_package]
7
- builder.enable :register_file, [:sv_ral_model]
8
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RgGen.define_list_item_feature(:bit_field, :type, [:rw, :w1, :wo, :wo1]) do
4
- sv_rtl do
5
- build do
6
- output :value_out, {
7
- name: "o_#{full_name}", width: width,
8
- array_size: array_size, array_format: array_port_format
9
- }
10
- end
11
-
12
- main_code :bit_field, from_template: true
13
-
14
- private
15
-
16
- def read_action
17
- bit_field.readable? && 'RGGEN_READ_DEFAULT' || 'RGGEN_READ_NONE'
18
- end
19
-
20
- def write_once
21
- [:w1, :wo1].include?(bit_field.type) && 1 || 0
22
- end
23
- end
24
- end