rggen-systemverilog 0.26.0 → 0.27.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6093eea4b475c6dddb948d2b0bb5053705cc64f38a5603c925d0ab04029e0978
4
- data.tar.gz: e2c07ce7eb68f15c9e4d2dbd0f83d7a74dbcb92ba292ba1fae8830c4ca147cb0
3
+ metadata.gz: b163ec13c4940ca6d489739aaae909dd3d189627eff20383cef519537bade127
4
+ data.tar.gz: 6bdfd55721b6e7c1a7250eed73cb5ca6ce1a2dba28d57e134b06b601397afabe
5
5
  SHA512:
6
- metadata.gz: 2d460b5eecdc50fbae20514b7f814fd98774b6dcb05ab72df2936301a9218870609eb1236b13f9a305d1882f001360eb84537b083c5323d2fde475fe170ffaed
7
- data.tar.gz: 4ea6fb47189ec224f30701198d9a51de4ab68cbc2a601b048ad23b1edcda1308214218fd456550c2e8d085c3575ab2aeec7e58c43d6337dba81111c0e8f0b07f
6
+ metadata.gz: f8327405b12e0d43ab8801772b85efd57f0a71f856f0f07efec961d97c7b70c4bacee05968303a41178201e9b90a16b289af24b23a71cb403ed5949fbeba0251
7
+ data.tar.gz: be673375b40e9d4c8241be45a4feb8ee4a09d815bc4ecd0926759f058dea021e8588b270de22408f8a34fa8cb5f50772f51addc47b3cfa60dba0c858064bccbd
data/README.md CHANGED
@@ -27,7 +27,8 @@ $ gem isntall rggen-systemverilog
27
27
 
28
28
  Feedbacks, bug reports, questions and etc. are wellcome! You can post them by using following ways:
29
29
 
30
- * [GitHub Issue Tracker](https://github.com/rggen/rggen-systemverilog/issues)
30
+ * [GitHub Issue Tracker](https://github.com/rggen/rggen/issues)
31
+ * [GitHub Discussions](https://github.com/rggen/rggen/discussions)
31
32
  * [Chat Room](https://gitter.im/rggen/rggen)
32
33
  * [Mailing List](https://groups.google.com/d/forum/rggen)
33
34
  * [Mail](mailto:rggen@googlegroups.com)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, [:w0trg, :w1trg]) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:row0trg, :row1trg, :w0trg, :w1trg]) do
4
4
  sv_ral do
5
5
  model_name { "rggen_ral_#{bit_field.type}_field" }
6
6
  end
@@ -4,35 +4,29 @@ require_relative 'common'
4
4
  require_relative 'ral/feature'
5
5
  require_relative 'ral/register_common'
6
6
 
7
- module RgGen
8
- module SystemVerilog
9
- module RAL
10
- extend Core::Plugin
7
+ RgGen.setup_plugin :'rggen-sv-ral' do |plugin|
8
+ plugin.version RgGen::SystemVerilog::VERSION
11
9
 
12
- setup_plugin :'rggen-sv-ral' do |plugin|
13
- plugin.version SystemVerilog::VERSION
14
-
15
- plugin.register_component :sv_ral do
16
- component Common::Component, Common::ComponentFactory
17
- feature Feature, Common::FeatureFactory
18
- end
19
-
20
- plugin.files [
21
- 'ral/bit_field/type',
22
- 'ral/bit_field/type/rof',
23
- 'ral/bit_field/type/rotrg_rwtrg_wotrg',
24
- 'ral/bit_field/type/rowo_rowotrg',
25
- 'ral/bit_field/type/rwc_rws',
26
- 'ral/bit_field/type/rwe_rwl',
27
- 'ral/bit_field/type/w0trg_w1trg',
28
- 'ral/register/type',
29
- 'ral/register/type/external',
30
- 'ral/register/type/indirect',
31
- 'ral/register_block/sv_ral_model',
32
- 'ral/register_block/sv_ral_package',
33
- 'ral/register_file/sv_ral_model'
34
- ]
35
- end
36
- end
10
+ plugin.register_component :sv_ral do
11
+ component RgGen::SystemVerilog::Common::Component,
12
+ RgGen::SystemVerilog::Common::ComponentFactory
13
+ feature RgGen::SystemVerilog::RAL::Feature,
14
+ RgGen::SystemVerilog::Common::FeatureFactory
37
15
  end
16
+
17
+ plugin.files [
18
+ 'ral/register_block/sv_ral_package',
19
+ 'ral/register_block/sv_ral_model',
20
+ 'ral/register_file/sv_ral_model',
21
+ 'ral/register/type',
22
+ 'ral/register/type/external',
23
+ 'ral/register/type/indirect',
24
+ 'ral/bit_field/type',
25
+ 'ral/bit_field/type/rof',
26
+ 'ral/bit_field/type/rotrg_rwtrg_wotrg',
27
+ 'ral/bit_field/type/row0trg_row1trg_w0trg_w1trg',
28
+ 'ral/bit_field/type/rowo_rowotrg',
29
+ 'ral/bit_field/type/rwc_rws',
30
+ 'ral/bit_field/type/rwe_rwl'
31
+ ]
38
32
  end
@@ -36,10 +36,6 @@ RgGen.define_simple_feature(:bit_field, :sv_rtl_top) do
36
36
  end
37
37
  end
38
38
 
39
- pre_code :bit_field do |code|
40
- code << bit_field_if_connection << nl
41
- end
42
-
43
39
  def value(offsets = nil, width = nil)
44
40
  value_lsb = bit_field.lsb(offsets&.last || local_index)
45
41
  value_width = width || bit_field.width
@@ -113,17 +109,5 @@ RgGen.define_simple_feature(:bit_field, :sv_rtl_top) do
113
109
  def body_code(code)
114
110
  bit_field.generate_code(code, :bit_field, :top_down)
115
111
  end
116
-
117
- def bit_field_if_connection
118
- macro_call(
119
- 'rggen_connect_bit_field_if',
120
- [
121
- register.bit_field_if,
122
- bit_field.bit_field_sub_if,
123
- bit_field.lsb(local_index),
124
- bit_field.width
125
- ]
126
- )
127
- end
128
112
  end
129
113
  end
@@ -0,0 +1,10 @@
1
+ rggen_bit_field_w01trg #(
2
+ .TRIGGER_VALUE (<%= trigger_value %>),
3
+ .WIDTH (<%= width %>)
4
+ ) u_bit_field (
5
+ .i_clk (<%= clock %>),
6
+ .i_rst_n (<%= reset %>),
7
+ .bit_field_if (<%= bit_field_if %>),
8
+ .i_value (<%= reference_or_value_in %>),
9
+ .o_trigger (<%= trigger[loop_variables] %>)
10
+ );
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:row0trg, :row1trg]) do
4
+ sv_rtl do
5
+ build do
6
+ unless bit_field.reference?
7
+ input :value_in, {
8
+ name: "i_#{full_name}", width: width,
9
+ array_size: array_size, array_format: array_port_format
10
+ }
11
+ end
12
+ output :trigger, {
13
+ name: "o_#{full_name}_trigger", 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 trigger_value
23
+ bin({ row0trg: 0, row1trg: 1 }[bit_field.type], 1)
24
+ end
25
+
26
+ def reference_or_value_in
27
+ reference_bit_field || value_in[loop_variables]
28
+ end
29
+ end
30
+ end
@@ -5,5 +5,6 @@ rggen_bit_field_w01trg #(
5
5
  .i_clk (<%= clock %>),
6
6
  .i_rst_n (<%= reset %>),
7
7
  .bit_field_if (<%= bit_field_if %>),
8
+ .i_value ('0),
8
9
  .o_trigger (<%= trigger[loop_variables] %>)
9
10
  );
@@ -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 %>),
@@ -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
@@ -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,49 +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_rotrg',
29
- 'rtl/bit_field/type/rof',
30
- 'rtl/bit_field/type/rowo_rowotrg',
31
- 'rtl/bit_field/type/rs_w0s_w1s_ws_wos',
32
- 'rtl/bit_field/type/rw_rwtrg_w1',
33
- 'rtl/bit_field/type/rwc',
34
- 'rtl/bit_field/type/rwe_rwl',
35
- 'rtl/bit_field/type/rws',
36
- 'rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc',
37
- 'rtl/bit_field/type/w0t_w1t',
38
- 'rtl/bit_field/type/w0trg_w1trg',
39
- 'rtl/bit_field/type/wo_wo1_wotrg',
40
- 'rtl/bit_field/type/wrc_wrs',
41
- 'rtl/global/array_port_format',
42
- 'rtl/register/sv_rtl_top',
43
- 'rtl/register/type',
44
- 'rtl/register/type/external',
45
- 'rtl/register/type/indirect',
46
- 'rtl/register_block/protocol',
47
- 'rtl/register_block/protocol/apb',
48
- 'rtl/register_block/protocol/axi4lite',
49
- 'rtl/register_block/protocol/wishbone',
50
- 'rtl/register_block/sv_rtl_top',
51
- 'rtl/register_file/sv_rtl_top'
52
- ]
53
- end
54
- 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
55
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
+ ]
56
51
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module SystemVerilog
5
- VERSION = '0.26.0'
5
+ VERSION = '0.27.1'
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.26.0
4
+ version: 0.27.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taichi Ishitani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-25 00:00:00.000000000 Z
11
+ date: 2022-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -57,10 +57,10 @@ files:
57
57
  - lib/rggen/systemverilog/ral/bit_field/type.rb
58
58
  - lib/rggen/systemverilog/ral/bit_field/type/rof.rb
59
59
  - lib/rggen/systemverilog/ral/bit_field/type/rotrg_rwtrg_wotrg.rb
60
+ - lib/rggen/systemverilog/ral/bit_field/type/row0trg_row1trg_w0trg_w1trg.rb
60
61
  - lib/rggen/systemverilog/ral/bit_field/type/rowo_rowotrg.rb
61
62
  - lib/rggen/systemverilog/ral/bit_field/type/rwc_rws.rb
62
63
  - lib/rggen/systemverilog/ral/bit_field/type/rwe_rwl.rb
63
- - lib/rggen/systemverilog/ral/bit_field/type/w0trg_w1trg.rb
64
64
  - lib/rggen/systemverilog/ral/feature.rb
65
65
  - lib/rggen/systemverilog/ral/register/type.rb
66
66
  - lib/rggen/systemverilog/ral/register/type/default.erb
@@ -73,7 +73,6 @@ files:
73
73
  - lib/rggen/systemverilog/ral/register_common.rb
74
74
  - lib/rggen/systemverilog/ral/register_file/sv_ral_model.erb
75
75
  - lib/rggen/systemverilog/ral/register_file/sv_ral_model.rb
76
- - lib/rggen/systemverilog/ral/setup.rb
77
76
  - lib/rggen/systemverilog/rtl.rb
78
77
  - lib/rggen/systemverilog/rtl/bit_field/sv_rtl_top.rb
79
78
  - lib/rggen/systemverilog/rtl/bit_field/type.rb
@@ -83,6 +82,8 @@ files:
83
82
  - lib/rggen/systemverilog/rtl/bit_field/type/ro_rotrg.rb
84
83
  - lib/rggen/systemverilog/rtl/bit_field/type/rof.erb
85
84
  - lib/rggen/systemverilog/rtl/bit_field/type/rof.rb
85
+ - lib/rggen/systemverilog/rtl/bit_field/type/row0trg_row1trg.erb
86
+ - lib/rggen/systemverilog/rtl/bit_field/type/row0trg_row1trg.rb
86
87
  - lib/rggen/systemverilog/rtl/bit_field/type/rowo_rowotrg.erb
87
88
  - lib/rggen/systemverilog/rtl/bit_field/type/rowo_rowotrg.rb
88
89
  - lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.erb
@@ -129,13 +130,12 @@ files:
129
130
  - lib/rggen/systemverilog/rtl/register_file/sv_rtl_top.rb
130
131
  - lib/rggen/systemverilog/rtl/register_index.rb
131
132
  - lib/rggen/systemverilog/rtl/register_type.rb
132
- - lib/rggen/systemverilog/rtl/setup.rb
133
133
  - lib/rggen/systemverilog/version.rb
134
134
  homepage: https://github.com/rggen/rggen-systemverilog
135
135
  licenses:
136
136
  - MIT
137
137
  metadata:
138
- bug_tracker_uri: https://github.com/rggen/rggen-systemverilog/issues
138
+ bug_tracker_uri: https://github.com/rggen/rggen/issues
139
139
  mailing_list_uri: https://groups.google.com/d/forum/rggen
140
140
  rubygems_mfa_required: 'true'
141
141
  source_code_uri: https://github.com/rggen/rggen-systemverilog
@@ -155,8 +155,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
155
  - !ruby/object:Gem::Version
156
156
  version: '0'
157
157
  requirements: []
158
- rubygems_version: 3.3.3
158
+ rubygems_version: 3.3.7
159
159
  signing_key:
160
160
  specification_version: 4
161
- summary: rggen-systemverilog-0.26.0
161
+ summary: rggen-systemverilog-0.27.1
162
162
  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,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rggen/systemverilog/rtl'
4
-
5
- RgGen.register_plugin RgGen::SystemVerilog::RTL do |builder|
6
- builder.enable :global, [:array_port_format]
7
- builder.enable :register_block, [:sv_rtl_top, :protocol]
8
- builder.enable :register_block, :protocol, [:apb, :axi4lite, :wishbone]
9
- builder.enable :register_file, [:sv_rtl_top]
10
- builder.enable :register, [:sv_rtl_top]
11
- builder.enable :bit_field, [:sv_rtl_top]
12
- end