rggen-systemverilog 0.22.0 → 0.23.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04ab89d77ae7cb44157307093ab87d047953a8fdb1c39035447b87c56de6179e
4
- data.tar.gz: 84abe81c5b8ae34ec9bf28fbf1c35e8b1ad79cebb40a5835a1ceedac1aaaac33
3
+ metadata.gz: f00d208ebd7482486fc99dd9b7fcf787ca74b668c5a4fbbe60879cc6f497607d
4
+ data.tar.gz: af34bfc503ddaba18d7e696c14cef77f8979f53aaf05d7b6cd5a2f570dedfa33
5
5
  SHA512:
6
- metadata.gz: 97a47dd4eedce5d59607f41bfcea72c176cc1c6e2e7a04656ba387baa652ee3413a3b4c669c906c343907f97565cc7e10c194a66cc19dcc40830a00ec184b238
7
- data.tar.gz: a12ca1343735fdf819bdedf9d8a122015793177cd09d8c41764e54797c7972eadcbb4e7cc83a1429b21daddd476cf11b18d140b925338a96e763b33cf5a68117
6
+ metadata.gz: 65ab0f8c1a60dd50e7d0731491c396b9f4531ec4c1b9d1ed7d8ecebac4d8e57e4e8367763be85660d0ddb373f38371cf4ea373130514763c00e2cf6432928523
7
+ data.tar.gz: 4aafce8907c363d82c219d1aae0dbb5d43681d1fc05726e9e877a6b1ee894cbe1d63ddf5c295e152d8cdc1cd9cb2b5154fa470dbce81f75b65211dba8b635e86
@@ -13,20 +13,21 @@ module RgGen
13
13
  FEATURES = [
14
14
  'rtl/bit_field/sv_rtl_top',
15
15
  'rtl/bit_field/type',
16
- 'rtl/bit_field/type/rc_w0c_w1c',
16
+ 'rtl/bit_field/type/rc_w0c_w1c_wc_woc',
17
17
  'rtl/bit_field/type/reserved',
18
18
  'rtl/bit_field/type/ro',
19
19
  'rtl/bit_field/type/rof',
20
- 'rtl/bit_field/type/rs_w0s_w1s',
20
+ 'rtl/bit_field/type/rs_w0s_w1s_ws_wos',
21
21
  'rtl/bit_field/type/rw_w1_wo_wo1',
22
22
  'rtl/bit_field/type/rwc',
23
23
  'rtl/bit_field/type/rwe',
24
24
  'rtl/bit_field/type/rwl',
25
25
  'rtl/bit_field/type/rws',
26
- 'rtl/bit_field/type/w0crs_w1crs',
27
- 'rtl/bit_field/type/w0src_w1src',
26
+ 'rtl/bit_field/type/w0crs_w1crs_wcrs',
27
+ 'rtl/bit_field/type/w0src_w1src_wsrc',
28
28
  'rtl/bit_field/type/w0t_w1t',
29
29
  'rtl/bit_field/type/w0trg_w1trg',
30
+ 'rtl/bit_field/type/wrc_wrs',
30
31
  'rtl/global/array_port_format',
31
32
  'rtl/global/fold_sv_interface_port',
32
33
  'rtl/register/sv_rtl_top',
@@ -1,6 +1,7 @@
1
1
  <%= module_name %> #(
2
- <% if [:w0c, :w1c].include?(bit_field.type) %>
2
+ <% if bit_field.type != :rc %>
3
3
  .CLEAR_VALUE (<%= clear_value %>),
4
+ .WRITE_ONLY (<%= write_only %>),
4
5
  <% end %>
5
6
  .WIDTH (<%= width %>),
6
7
  .INITIAL_VALUE (<%= initial_value %>)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, [:rc, :w0c, :w1c]) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:rc, :w0c, :w1c, :wc, :woc]) do
4
4
  sv_rtl do
5
5
  build do
6
6
  input :set, {
@@ -24,15 +24,16 @@ RgGen.define_list_item_feature(:bit_field, :type, [:rc, :w0c, :w1c]) do
24
24
  private
25
25
 
26
26
  def module_name
27
- if bit_field.type == :rc
28
- 'rggen_bit_field_rc'
29
- else
30
- 'rggen_bit_field_w01c'
31
- end
27
+ bit_field.type == :rc && 'rggen_bit_field_rc' || 'rggen_bit_field_w01c_wc_woc'
32
28
  end
33
29
 
34
30
  def clear_value
35
- bin({ w0c: 0, w1c: 1 }[bit_field.type], 1)
31
+ value = { w0c: 0b00, w1c: 0b01, wc: 0b10, woc: 0b10 }[bit_field.type]
32
+ bin(value, 2)
33
+ end
34
+
35
+ def write_only
36
+ bit_field.write_only? && 1 || 0
36
37
  end
37
38
 
38
39
  def value_out_unmasked
@@ -1,6 +1,7 @@
1
1
  <%= module_name %> #(
2
- <% if [:w0s, :w1s].include?(bit_field.type) %>
2
+ <% if bit_field.type != :rs %>
3
3
  .SET_VALUE (<%= set_value %>),
4
+ .WRITE_ONLY (<%= write_only %>),
4
5
  <% end %>
5
6
  .WIDTH (<%= width %>),
6
7
  .INITIAL_VALUE (<%= initial_value %>)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, [:rs, :w0s, :w1s]) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:rs, :w0s, :w1s, :ws, :wos]) do
4
4
  sv_rtl do
5
5
  build do
6
6
  input :clear, {
@@ -18,15 +18,16 @@ RgGen.define_list_item_feature(:bit_field, :type, [:rs, :w0s, :w1s]) do
18
18
  private
19
19
 
20
20
  def module_name
21
- if bit_field.type == :rs
22
- 'rggen_bit_field_rs'
23
- else
24
- 'rggen_bit_field_w01s'
25
- end
21
+ bit_field.type == :rs && 'rggen_bit_field_rs' || 'rggen_bit_field_w01s_ws_wos'
26
22
  end
27
23
 
28
24
  def set_value
29
- bin({ w0s: 0, w1s: 1 }[bit_field.type], 1)
25
+ value = { w0s: 0b00, w1s: 0b01, ws: 0b10, wos: 0b10 }[bit_field.type]
26
+ bin(value, 2)
27
+ end
28
+
29
+ def write_only
30
+ bit_field.write_only? && 1 || 0
30
31
  end
31
32
  end
32
33
  end
@@ -1,4 +1,4 @@
1
- rggen_bit_field_w01crs #(
1
+ rggen_bit_field_w01crs_wcrs #(
2
2
  .CLEAR_VALUE (<%= clear_value %>),
3
3
  .WIDTH (<%= width %>),
4
4
  .INITIAL_VALUE (<%= initial_value %>)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, [:w0crs, :w1crs]) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:w0crs, :w1crs, :wcrs]) do
4
4
  sv_rtl do
5
5
  build do
6
6
  output :value_out, {
@@ -14,8 +14,8 @@ RgGen.define_list_item_feature(:bit_field, :type, [:w0crs, :w1crs]) do
14
14
  private
15
15
 
16
16
  def clear_value
17
- value = (bit_field.type == :w0crs && 0) || 1
18
- bin(value, 1)
17
+ value = { w0crs: 0b00, w1crs: 0b01, wcrs: 0b10 }[bit_field.type]
18
+ bin(value, 2)
19
19
  end
20
20
  end
21
21
  end
@@ -1,4 +1,4 @@
1
- rggen_bit_field_w01src #(
1
+ rggen_bit_field_w01src_wsrc #(
2
2
  .SET_VALUE (<%= set_value %>),
3
3
  .WIDTH (<%= width %>),
4
4
  .INITIAL_VALUE (<%= initial_value %>)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RgGen.define_list_item_feature(:bit_field, :type, [:w0src, :w1src]) do
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:w0src, :w1src, :wsrc]) do
4
4
  sv_rtl do
5
5
  build do
6
6
  output :value_out, {
@@ -14,8 +14,8 @@ RgGen.define_list_item_feature(:bit_field, :type, [:w0src, :w1src]) do
14
14
  private
15
15
 
16
16
  def set_value
17
- value = (bit_field.type == :w0src && 0) || 1
18
- bin(value, 1)
17
+ value = { w0src: 0b00, w1src: 0b01, wsrc: 0b10 }[bit_field.type]
18
+ bin(value, 2)
19
19
  end
20
20
  end
21
21
  end
@@ -0,0 +1,9 @@
1
+ rggen_bit_field_<%= bit_field.type %> #(
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
+ .o_value (<%= value_out[loop_variables] %>)
9
+ );
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, [:wrc, :wrs]) do
4
+ sv_rtl do
5
+ build do
6
+ output :value_out, {
7
+ name: "o_#{full_name}", data_type: :logic, 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
+ end
14
+ end
@@ -19,7 +19,7 @@ RgGen.define_list_item_feature(:register, :type, :indirect) do
19
19
  end
20
20
 
21
21
  def index_width
22
- @index_width ||= index_fields.map(&:width).sum
22
+ @index_width ||= index_fields.sum(&:width)
23
23
  end
24
24
 
25
25
  def index_values
@@ -23,7 +23,7 @@ RgGen.define_simple_feature(:register_block, :sv_rtl_top) do
23
23
  end
24
24
 
25
25
  def total_registers
26
- register_block.files_and_registers.map(&:count).sum
26
+ register_block.files_and_registers.sum(&:count)
27
27
  end
28
28
 
29
29
  private
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module SystemVerilog
5
- VERSION = '0.22.0'
5
+ VERSION = '0.23.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.22.0
4
+ version: 0.23.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-08-17 00:00:00.000000000 Z
11
+ date: 2020-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docile
@@ -103,16 +103,16 @@ files:
103
103
  - lib/rggen/systemverilog/rtl.rb
104
104
  - lib/rggen/systemverilog/rtl/bit_field/sv_rtl_top.rb
105
105
  - 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
106
+ - lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.erb
107
+ - lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.rb
108
108
  - lib/rggen/systemverilog/rtl/bit_field/type/reserved.erb
109
109
  - lib/rggen/systemverilog/rtl/bit_field/type/reserved.rb
110
110
  - lib/rggen/systemverilog/rtl/bit_field/type/ro.erb
111
111
  - lib/rggen/systemverilog/rtl/bit_field/type/ro.rb
112
112
  - lib/rggen/systemverilog/rtl/bit_field/type/rof.erb
113
113
  - 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
114
+ - lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.erb
115
+ - lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.rb
116
116
  - lib/rggen/systemverilog/rtl/bit_field/type/rw_w1_wo_wo1.erb
117
117
  - lib/rggen/systemverilog/rtl/bit_field/type/rw_w1_wo_wo1.rb
118
118
  - lib/rggen/systemverilog/rtl/bit_field/type/rwc.erb
@@ -123,14 +123,16 @@ files:
123
123
  - lib/rggen/systemverilog/rtl/bit_field/type/rwl.rb
124
124
  - lib/rggen/systemverilog/rtl/bit_field/type/rws.erb
125
125
  - 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
126
+ - lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w1crs_wcrs.erb
127
+ - lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w1crs_wcrs.rb
128
+ - lib/rggen/systemverilog/rtl/bit_field/type/w0src_w1src_wsrc.erb
129
+ - lib/rggen/systemverilog/rtl/bit_field/type/w0src_w1src_wsrc.rb
130
130
  - lib/rggen/systemverilog/rtl/bit_field/type/w0t_w1t.erb
131
131
  - lib/rggen/systemverilog/rtl/bit_field/type/w0t_w1t.rb
132
132
  - lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.erb
133
133
  - lib/rggen/systemverilog/rtl/bit_field/type/w0trg_w1trg.rb
134
+ - lib/rggen/systemverilog/rtl/bit_field/type/wrc_wrs.erb
135
+ - lib/rggen/systemverilog/rtl/bit_field/type/wrc_wrs.rb
134
136
  - lib/rggen/systemverilog/rtl/feature.rb
135
137
  - lib/rggen/systemverilog/rtl/global/array_port_format.rb
136
138
  - lib/rggen/systemverilog/rtl/global/fold_sv_interface_port.rb
@@ -179,5 +181,5 @@ requirements: []
179
181
  rubygems_version: 3.1.2
180
182
  signing_key:
181
183
  specification_version: 4
182
- summary: rggen-systemverilog-0.22.0
184
+ summary: rggen-systemverilog-0.23.0
183
185
  test_files: []