rggen-systemverilog 0.21.1 → 0.25.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +2 -2
  4. data/lib/rggen/systemverilog/common.rb +0 -24
  5. data/lib/rggen/systemverilog/common/factories.rb +1 -1
  6. data/lib/rggen/systemverilog/common/feature.rb +3 -3
  7. data/lib/rggen/systemverilog/common/utility.rb +5 -1
  8. data/lib/rggen/systemverilog/common/utility/class_definition.rb +12 -4
  9. data/lib/rggen/systemverilog/common/utility/data_object.rb +1 -2
  10. data/lib/rggen/systemverilog/common/utility/function_definition.rb +16 -4
  11. data/lib/rggen/systemverilog/common/utility/identifier.rb +25 -22
  12. data/lib/rggen/systemverilog/common/utility/local_scope.rb +9 -7
  13. data/lib/rggen/systemverilog/common/utility/module_definition.rb +12 -4
  14. data/lib/rggen/systemverilog/common/utility/package_definition.rb +4 -4
  15. data/lib/rggen/systemverilog/ral.rb +20 -26
  16. data/lib/rggen/systemverilog/ral/bit_field/type.rb +2 -2
  17. data/lib/rggen/systemverilog/ral/bit_field/type/rof.rb +5 -0
  18. data/lib/rggen/systemverilog/ral/setup.rb +1 -1
  19. data/lib/rggen/systemverilog/rtl.rb +37 -41
  20. data/lib/rggen/systemverilog/rtl/bit_field/sv_rtl_top.rb +11 -47
  21. data/lib/rggen/systemverilog/rtl/bit_field/type.rb +1 -2
  22. data/lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.erb +19 -0
  23. data/lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.rb +54 -0
  24. data/lib/rggen/systemverilog/rtl/bit_field/type/ro.erb +15 -4
  25. data/lib/rggen/systemverilog/rtl/bit_field/type/ro.rb +1 -1
  26. data/lib/rggen/systemverilog/rtl/bit_field/type/rof.erb +15 -4
  27. data/lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.erb +19 -0
  28. data/lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.rb +44 -0
  29. data/lib/rggen/systemverilog/rtl/bit_field/type/rw_w1_wo_wo1.erb +15 -7
  30. data/lib/rggen/systemverilog/rtl/bit_field/type/rw_w1_wo_wo1.rb +3 -3
  31. data/lib/rggen/systemverilog/rtl/bit_field/type/rwc.erb +15 -7
  32. data/lib/rggen/systemverilog/rtl/bit_field/type/rwc.rb +2 -2
  33. data/lib/rggen/systemverilog/rtl/bit_field/type/rwe_rwl.erb +18 -0
  34. data/lib/rggen/systemverilog/rtl/bit_field/type/rwe_rwl.rb +34 -0
  35. data/lib/rggen/systemverilog/rtl/bit_field/type/rws.erb +13 -7
  36. data/lib/rggen/systemverilog/rtl/bit_field/type/rws.rb +3 -3
  37. data/lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.erb +19 -0
  38. data/lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.rb +37 -0
  39. data/lib/rggen/systemverilog/rtl/bit_field/type/w0t_w1t.erb +18 -0
  40. data/lib/rggen/systemverilog/rtl/bit_field/type/{w0crs_w1crs.rb → w0t_w1t.rb} +7 -5
  41. data/lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.rb +1 -1
  42. data/lib/rggen/systemverilog/rtl/bit_field/type/wrc_wrs.erb +18 -0
  43. data/lib/rggen/systemverilog/rtl/bit_field/type/{w0src_w1src.rb → wrc_wrs.rb} +7 -5
  44. data/lib/rggen/systemverilog/rtl/bit_field_index.rb +52 -0
  45. data/lib/rggen/systemverilog/rtl/feature.rb +8 -6
  46. data/lib/rggen/systemverilog/rtl/indirect_index.rb +35 -0
  47. data/lib/rggen/systemverilog/rtl/partial_sum.rb +5 -6
  48. data/lib/rggen/systemverilog/rtl/register/type.rb +1 -56
  49. data/lib/rggen/systemverilog/rtl/register/type/external.rb +8 -20
  50. data/lib/rggen/systemverilog/rtl/register/type/indirect.rb +2 -26
  51. data/lib/rggen/systemverilog/rtl/register_block/protocol.rb +14 -8
  52. data/lib/rggen/systemverilog/rtl/register_block/protocol/apb.rb +10 -10
  53. data/lib/rggen/systemverilog/rtl/register_block/protocol/axi4lite.rb +52 -50
  54. data/lib/rggen/systemverilog/rtl/register_block/sv_rtl_top.rb +3 -7
  55. data/lib/rggen/systemverilog/rtl/register_index.rb +17 -15
  56. data/lib/rggen/systemverilog/rtl/register_type.rb +69 -0
  57. data/lib/rggen/systemverilog/rtl/setup.rb +1 -1
  58. data/lib/rggen/systemverilog/version.rb +1 -1
  59. metadata +21 -48
  60. data/lib/rggen/systemverilog/ral/bit_field/type/reserved_rof.rb +0 -5
  61. data/lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c.erb +0 -15
  62. data/lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c.rb +0 -43
  63. data/lib/rggen/systemverilog/rtl/bit_field/type/reserved.erb +0 -3
  64. data/lib/rggen/systemverilog/rtl/bit_field/type/reserved.rb +0 -7
  65. data/lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s.erb +0 -13
  66. data/lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s.rb +0 -32
  67. data/lib/rggen/systemverilog/rtl/bit_field/type/rwe.erb +0 -10
  68. data/lib/rggen/systemverilog/rtl/bit_field/type/rwe.rb +0 -26
  69. data/lib/rggen/systemverilog/rtl/bit_field/type/rwl.erb +0 -10
  70. data/lib/rggen/systemverilog/rtl/bit_field/type/rwl.rb +0 -26
  71. data/lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w1crs.erb +0 -10
  72. data/lib/rggen/systemverilog/rtl/bit_field/type/w0src_w1src.erb +0 -10
@@ -9,7 +9,7 @@ module RgGen
9
9
  EXPORTED_METHODS = [
10
10
  :loop_variables, :local_loop_variables,
11
11
  :local_index, :local_indices,
12
- :index, :inside_roop?
12
+ :index, :inside_loop?
13
13
  ].freeze
14
14
 
15
15
  def self.included(feature)
@@ -23,7 +23,7 @@ module RgGen
23
23
  end
24
24
 
25
25
  def loop_variables
26
- (inside_roop? || nil) &&
26
+ (inside_loop? || nil) &&
27
27
  [*upper_register_file&.loop_variables, *local_loop_variables]
28
28
  end
29
29
 
@@ -50,17 +50,14 @@ module RgGen
50
50
  end
51
51
 
52
52
  def index(offset_or_offsets = nil)
53
- operands = index_operands(offset_or_offsets)
54
- partial_indices = partial_sums(operands)
55
- if partial_indices.empty? || partial_indices.all?(&method(:integer?))
56
- partial_indices.sum
57
- else
58
- partial_indices.join('+')
59
- end
53
+ offset_or_offsets
54
+ .yield_self(&method(:index_operands))
55
+ .yield_self(&method(:partial_sums))
56
+ .yield_self(&method(:reduce_indices))
60
57
  end
61
58
 
62
- def inside_roop?
63
- component.array? || upper_register_file&.inside_roop? || false
59
+ def inside_loop?
60
+ component.array? || upper_register_file&.inside_loop? || false
64
61
  end
65
62
 
66
63
  private
@@ -87,12 +84,17 @@ module RgGen
87
84
  ]
88
85
  end
89
86
 
87
+ def reduce_indices(indices)
88
+ if indices.empty? || indices.all?(&method(:integer?))
89
+ indices.sum
90
+ else
91
+ indices.join('+')
92
+ end
93
+ end
94
+
90
95
  def local_register_index(offset)
91
96
  (component.array? || nil) &&
92
- begin
93
- operands = [component.count(false), offset || local_index]
94
- product(operands, true)
95
- end
97
+ product([component.count(false), offset || local_index], true)
96
98
  end
97
99
 
98
100
  def product(operands, need_bracket)
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgGen
4
+ module SystemVerilog
5
+ module RTL
6
+ module RegisterType
7
+ include PartialSum
8
+
9
+ private
10
+
11
+ def readable
12
+ register.readable? && 1 || 0
13
+ end
14
+
15
+ def writable
16
+ register.writable? && 1 || 0
17
+ end
18
+
19
+ def bus_width
20
+ configuration.bus_width
21
+ end
22
+
23
+ def address_width
24
+ register_block.local_address_width
25
+ end
26
+
27
+ def offset_address
28
+ [*register_files, register]
29
+ .flat_map(&method(:collect_offsets))
30
+ .yield_self(&method(:partial_sums))
31
+ .yield_self(&method(:format_offsets))
32
+ end
33
+
34
+ def collect_offsets(component)
35
+ if component.register_file? && component.array?
36
+ [component.offset_address, byte_offset(component)]
37
+ else
38
+ component.offset_address
39
+ end
40
+ end
41
+
42
+ def byte_offset(component)
43
+ "#{component.byte_size(false)}*(#{component.local_index})"
44
+ end
45
+
46
+ def format_offsets(offsets)
47
+ offsets.map(&method(:format_offset)).join('+')
48
+ end
49
+
50
+ def format_offset(offset)
51
+ offset.is_a?(Integer) ? hex(offset, address_width) : offset
52
+ end
53
+
54
+ def width
55
+ register.width
56
+ end
57
+
58
+ def valid_bits
59
+ bits = register.bit_fields.map(&:bit_map).inject(:|)
60
+ hex(bits, register.width)
61
+ end
62
+
63
+ def register_index
64
+ register.local_index || 0
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'rggen/systemverilog/rtl'
4
4
 
5
- RgGen.setup :'rggen-sv-rtl', RgGen::SystemVerilog::RTL do |builder|
5
+ RgGen.register_plugin RgGen::SystemVerilog::RTL do |builder|
6
6
  builder.enable :global, [
7
7
  :array_port_format, :fold_sv_interface_port
8
8
  ]
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module SystemVerilog
5
- VERSION = '0.21.1'
5
+ VERSION = '0.25.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,43 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rggen-systemverilog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.1
4
+ version: 0.25.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: 2020-07-24 00:00:00.000000000 Z
11
+ date: 2021-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: docile
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 1.1.5
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 1.1.5
27
- - !ruby/object:Gem::Dependency
28
- name: facets
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '3.0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '3.0'
41
13
  - !ruby/object:Gem::Dependency
42
14
  name: bundler
43
15
  requirement: !ruby/object:Gem::Requirement
@@ -83,7 +55,7 @@ files:
83
55
  - lib/rggen/systemverilog/common/utility/structure_definition.rb
84
56
  - lib/rggen/systemverilog/ral.rb
85
57
  - lib/rggen/systemverilog/ral/bit_field/type.rb
86
- - lib/rggen/systemverilog/ral/bit_field/type/reserved_rof.rb
58
+ - lib/rggen/systemverilog/ral/bit_field/type/rof.rb
87
59
  - lib/rggen/systemverilog/ral/bit_field/type/rwc_rws.rb
88
60
  - lib/rggen/systemverilog/ral/bit_field/type/rwe_rwl.rb
89
61
  - lib/rggen/systemverilog/ral/bit_field/type/w0trg_w1trg.rb
@@ -103,35 +75,35 @@ files:
103
75
  - lib/rggen/systemverilog/rtl.rb
104
76
  - lib/rggen/systemverilog/rtl/bit_field/sv_rtl_top.rb
105
77
  - lib/rggen/systemverilog/rtl/bit_field/type.rb
106
- - lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c.erb
107
- - lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c.rb
108
- - lib/rggen/systemverilog/rtl/bit_field/type/reserved.erb
109
- - lib/rggen/systemverilog/rtl/bit_field/type/reserved.rb
78
+ - lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.erb
79
+ - lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.rb
110
80
  - lib/rggen/systemverilog/rtl/bit_field/type/ro.erb
111
81
  - lib/rggen/systemverilog/rtl/bit_field/type/ro.rb
112
82
  - lib/rggen/systemverilog/rtl/bit_field/type/rof.erb
113
83
  - lib/rggen/systemverilog/rtl/bit_field/type/rof.rb
114
- - lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s.erb
115
- - lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s.rb
84
+ - lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.erb
85
+ - lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.rb
116
86
  - lib/rggen/systemverilog/rtl/bit_field/type/rw_w1_wo_wo1.erb
117
87
  - lib/rggen/systemverilog/rtl/bit_field/type/rw_w1_wo_wo1.rb
118
88
  - lib/rggen/systemverilog/rtl/bit_field/type/rwc.erb
119
89
  - lib/rggen/systemverilog/rtl/bit_field/type/rwc.rb
120
- - lib/rggen/systemverilog/rtl/bit_field/type/rwe.erb
121
- - lib/rggen/systemverilog/rtl/bit_field/type/rwe.rb
122
- - lib/rggen/systemverilog/rtl/bit_field/type/rwl.erb
123
- - lib/rggen/systemverilog/rtl/bit_field/type/rwl.rb
90
+ - lib/rggen/systemverilog/rtl/bit_field/type/rwe_rwl.erb
91
+ - lib/rggen/systemverilog/rtl/bit_field/type/rwe_rwl.rb
124
92
  - lib/rggen/systemverilog/rtl/bit_field/type/rws.erb
125
93
  - lib/rggen/systemverilog/rtl/bit_field/type/rws.rb
126
- - lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w1crs.erb
127
- - lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w1crs.rb
128
- - lib/rggen/systemverilog/rtl/bit_field/type/w0src_w1src.erb
129
- - lib/rggen/systemverilog/rtl/bit_field/type/w0src_w1src.rb
94
+ - lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.erb
95
+ - lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.rb
96
+ - lib/rggen/systemverilog/rtl/bit_field/type/w0t_w1t.erb
97
+ - lib/rggen/systemverilog/rtl/bit_field/type/w0t_w1t.rb
130
98
  - lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.erb
131
99
  - lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.rb
100
+ - lib/rggen/systemverilog/rtl/bit_field/type/wrc_wrs.erb
101
+ - lib/rggen/systemverilog/rtl/bit_field/type/wrc_wrs.rb
102
+ - lib/rggen/systemverilog/rtl/bit_field_index.rb
132
103
  - lib/rggen/systemverilog/rtl/feature.rb
133
104
  - lib/rggen/systemverilog/rtl/global/array_port_format.rb
134
105
  - lib/rggen/systemverilog/rtl/global/fold_sv_interface_port.rb
106
+ - lib/rggen/systemverilog/rtl/indirect_index.rb
135
107
  - lib/rggen/systemverilog/rtl/partial_sum.rb
136
108
  - lib/rggen/systemverilog/rtl/register/sv_rtl_top.rb
137
109
  - lib/rggen/systemverilog/rtl/register/type.rb
@@ -149,6 +121,7 @@ files:
149
121
  - lib/rggen/systemverilog/rtl/register_block/sv_rtl_top.rb
150
122
  - lib/rggen/systemverilog/rtl/register_file/sv_rtl_top.rb
151
123
  - lib/rggen/systemverilog/rtl/register_index.rb
124
+ - lib/rggen/systemverilog/rtl/register_type.rb
152
125
  - lib/rggen/systemverilog/rtl/setup.rb
153
126
  - lib/rggen/systemverilog/version.rb
154
127
  homepage: https://github.com/rggen/rggen-systemverilog
@@ -167,15 +140,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
140
  requirements:
168
141
  - - ">="
169
142
  - !ruby/object:Gem::Version
170
- version: '2.4'
143
+ version: '2.5'
171
144
  required_rubygems_version: !ruby/object:Gem::Requirement
172
145
  requirements:
173
146
  - - ">="
174
147
  - !ruby/object:Gem::Version
175
148
  version: '0'
176
149
  requirements: []
177
- rubygems_version: 3.1.2
150
+ rubygems_version: 3.2.3
178
151
  signing_key:
179
152
  specification_version: 4
180
- summary: rggen-systemverilog-0.21.1
153
+ summary: rggen-systemverilog-0.25.0
181
154
  test_files: []
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RgGen.define_list_item_feature(:bit_field, :type, [:reserved, :rof]) do
4
- sv_ral { access 'RO' }
5
- end
@@ -1,15 +0,0 @@
1
- <%= module_name %> #(
2
- <% if [:w0c, :w1c].include?(bit_field.type) %>
3
- .CLEAR_VALUE (<%= clear_value %>),
4
- <% end %>
5
- .WIDTH (<%= width %>),
6
- .INITIAL_VALUE (<%= initial_value %>)
7
- ) u_bit_field (
8
- .i_clk (<%= clock %>),
9
- .i_rst_n (<%= reset%>),
10
- .bit_field_if (<%= bit_field_if %>),
11
- .i_set (<%= set[loop_variables] %>),
12
- .i_mask (<%= mask %>),
13
- .o_value (<%= value_out[loop_variables] %>),
14
- .o_value_unmasked (<%= value_out_unmasked %>)
15
- );
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RgGen.define_list_item_feature(:bit_field, :type, [:rc, :w0c, :w1c]) do
4
- sv_rtl do
5
- build do
6
- input :set, {
7
- name: "i_#{full_name}_set", data_type: :logic, width: width,
8
- array_size: array_size, array_format: array_port_format
9
- }
10
- output :value_out, {
11
- name: "o_#{full_name}", data_type: :logic, width: width,
12
- array_size: array_size, array_format: array_port_format
13
- }
14
- if bit_field.reference?
15
- output :value_unmasked, {
16
- name: "o_#{full_name}_unmasked", data_type: :logic, width: width,
17
- array_size: array_size, array_format: array_port_format
18
- }
19
- end
20
- end
21
-
22
- main_code :bit_field, from_template: true
23
-
24
- private
25
-
26
- def module_name
27
- if bit_field.type == :rc
28
- 'rggen_bit_field_rc'
29
- else
30
- 'rggen_bit_field_w01c'
31
- end
32
- end
33
-
34
- def clear_value
35
- bin({ w0c: 0, w1c: 1 }[bit_field.type], 1)
36
- end
37
-
38
- def value_out_unmasked
39
- (bit_field.reference? || nil) &&
40
- value_unmasked[loop_variables]
41
- end
42
- end
43
- end
@@ -1,3 +0,0 @@
1
- rggen_bit_field_reserved u_bit_field (
2
- .bit_field_if (<%= bit_field_if %>)
3
- );
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RgGen.define_list_item_feature(:bit_field, :type, :reserved) do
4
- sv_rtl do
5
- main_code :bit_field, from_template: true
6
- end
7
- end
@@ -1,13 +0,0 @@
1
- <%= module_name %> #(
2
- <% if [:w0s, :w1s].include?(bit_field.type) %>
3
- .SET_VALUE (<%= set_value %>),
4
- <% end %>
5
- .WIDTH (<%= width %>),
6
- .INITIAL_VALUE (<%= initial_value %>)
7
- ) u_bit_field (
8
- .i_clk (<%= clock %>),
9
- .i_rst_n (<%= reset %>),
10
- .bit_field_if (<%= bit_field_if %>),
11
- .i_clear (<%= clear[loop_variables] %>),
12
- .o_value (<%= value_out[loop_variables] %>)
13
- );
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RgGen.define_list_item_feature(:bit_field, :type, [:rs, :w0s, :w1s]) do
4
- sv_rtl do
5
- build do
6
- input :clear, {
7
- name: "i_#{full_name}_clear", data_type: :logic, width: width,
8
- array_size: array_size, array_format: array_port_format
9
- }
10
- output :value_out, {
11
- name: "o_#{full_name}", data_type: :logic, width: width,
12
- array_size: array_size, array_format: array_port_format
13
- }
14
- end
15
-
16
- main_code :bit_field, from_template: true
17
-
18
- private
19
-
20
- def module_name
21
- if bit_field.type == :rs
22
- 'rggen_bit_field_rs'
23
- else
24
- 'rggen_bit_field_w01s'
25
- end
26
- end
27
-
28
- def set_value
29
- bin({ w0s: 0, w1s: 1 }[bit_field.type], 1)
30
- end
31
- end
32
- end
@@ -1,10 +0,0 @@
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
- );
@@ -1,26 +0,0 @@
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 :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 :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