rggen-systemverilog 0.35.0 → 0.35.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: d847affbd147ff2959eb902a7faafde4e99b9612a65ea0d001508a86fcb94862
4
- data.tar.gz: 4e1a31f3c1f8fa082fed1eb115ad01f4e06f4310dd7dc99fe91ec2d66886d038
3
+ metadata.gz: 5441e91c3aba911ffc939b52377fbe897b4b6d22eae77885a2d84c9ad039f514
4
+ data.tar.gz: 0a6537fbd0bd1c6aca0bf386a01639ecaa9eb872aa7ab9a457cdf081c629b4e0
5
5
  SHA512:
6
- metadata.gz: 7c6084365cfaa7de447a6f5022646f42fa2e6e7eb7f713cd7d1ce4ed6d4b758795d4e66442c8c016ccb46d2fbbe38cb0b881068ab75d3780a4a7ac42797b91ff
7
- data.tar.gz: 140f2292d953d72185b0bf03a04b55818ca29618a3b23f8f4ed02b38ff5833b277cb06dfe89bd472722b7c930f72e43aeca7bcbb70f39506ceb8be5ebf9c5a74
6
+ metadata.gz: 2512a43cb38779c6ba0180c5aea816708f9a085d7f6cb80d6ad4b2f7f4e387aa110451aeddc47c5df9b212343caa106e23cca671b068978dd49e36ac39dbf379
7
+ data.tar.gz: c8a517c58dc5846adf3241d11abed8007e8e347ee0417a8603ff879661dfb50f5d49656130146bba2c27cd487e9a45880a98b7717b9bb0d59d7c1b5fcac19b6c
@@ -4,6 +4,7 @@ rggen_bit_field #(
4
4
  .SW_READ_ACTION (<%= sw_read_action %>),
5
5
  .SW_WRITE_ACTION (<%= sw_write_action %>),
6
6
  .SW_WRITE_ONCE (<%= write_once %>),
7
+ .HW_ACCESS (<%= hw_access %>),
7
8
  .STORAGE (<%= storage %>),
8
9
  .EXTERNAL_READ_DATA (<%= external_read_data %>),
9
10
  .TRIGGER (<%= trigger %>)
@@ -82,6 +82,15 @@ RgGen.define_list_item_feature(:bit_field, :type, :custom) do
82
82
  bit_field.sw_write_once? && 1 || 0
83
83
  end
84
84
 
85
+ def hw_access
86
+ values = [
87
+ bit_field.hw_clear? && 1 || 0,
88
+ bit_field.hw_set? && 1 || 0,
89
+ bit_field.hw_write? && 1 || 0
90
+ ]
91
+ "3'b#{values.join}"
92
+ end
93
+
85
94
  def storage
86
95
  external_read_data? && 0 || 1
87
96
  end
@@ -2,14 +2,16 @@ rggen_bit_field #(
2
2
  .WIDTH (<%= width %>),
3
3
  .INITIAL_VALUE (<%= initial_value %>),
4
4
  .SW_READ_ACTION (<%= read_action %>),
5
- .SW_WRITE_ACTION (<%= write_action %>)
5
+ .SW_WRITE_ACTION (<%= write_action %>),
6
+ .HW_ACCESS (3'b010),
7
+ .EXTERNAL_MASK (<%= external_mask %>)
6
8
  ) u_bit_field (
7
9
  .i_clk (<%= clock %>),
8
10
  .i_rst_n (<%= reset %>),
9
11
  .bit_field_if (<%= bit_field_if %>),
10
12
  .o_write_trigger (),
11
13
  .o_read_trigger (),
12
- .i_sw_write_enable (<%= write_enable %>),
14
+ .i_sw_write_enable ('1),
13
15
  .i_hw_write_enable ('0),
14
16
  .i_hw_write_data ('0),
15
17
  .i_hw_set (<%= set[loop_variables] %>),
@@ -40,12 +40,12 @@ RgGen.define_list_item_feature(:bit_field, :type, [:rc, :w0c, :w1c, :wc, :woc])
40
40
  }[bit_field.type]
41
41
  end
42
42
 
43
- def write_enable
44
- bit_field.writable? && all_bits_1 || all_bits_0
45
- end
46
-
47
43
  def value_out_unmasked
48
44
  (bit_field.reference? || nil) && value_unmasked[loop_variables]
49
45
  end
46
+
47
+ def external_mask
48
+ bit_field.reference? && 1 || 0
49
+ end
50
50
  end
51
51
  end
@@ -1,7 +1,8 @@
1
1
  rggen_bit_field #(
2
2
  .WIDTH (<%= width %>),
3
3
  .INITIAL_VALUE (<%= initial_value %>),
4
- .SW_WRITE_ACTION (RGGEN_WRITE_NONE)
4
+ .SW_WRITE_ACTION (RGGEN_WRITE_NONE),
5
+ .HW_ACCESS (3'b001)
5
6
  ) u_bit_field (
6
7
  .i_clk (<%= clock %>),
7
8
  .i_rst_n (<%= reset %>),
@@ -2,14 +2,15 @@ rggen_bit_field #(
2
2
  .WIDTH (<%= width %>),
3
3
  .INITIAL_VALUE (<%= initial_value %>),
4
4
  .SW_READ_ACTION (<%= read_action %>),
5
- .SW_WRITE_ACTION (<%= write_action %>)
5
+ .SW_WRITE_ACTION (<%= write_action %>),
6
+ .HW_ACCESS (3'b100)
6
7
  ) u_bit_field (
7
8
  .i_clk (<%= clock %>),
8
9
  .i_rst_n (<%= reset %>),
9
10
  .bit_field_if (<%= bit_field_if %>),
10
11
  .o_write_trigger (),
11
12
  .o_read_trigger (),
12
- .i_sw_write_enable (<%= write_enable %>),
13
+ .i_sw_write_enable ('1),
13
14
  .i_hw_write_enable ('0),
14
15
  .i_hw_write_data ('0),
15
16
  .i_hw_set ('0),
@@ -34,9 +34,5 @@ RgGen.define_list_item_feature(:bit_field, :type, [:rs, :w0s, :w1s, :ws, :wos])
34
34
  wos: 'RGGEN_WRITE_SET'
35
35
  }[bit_field.type]
36
36
  end
37
-
38
- def write_enable
39
- bit_field.writable? && all_bits_1 || all_bits_0
40
- end
41
37
  end
42
38
  end
@@ -1,6 +1,7 @@
1
1
  rggen_bit_field #(
2
2
  .WIDTH (<%= width %>),
3
3
  .INITIAL_VALUE (<%= initial_value %>),
4
+ .HW_ACCESS (3'b100),
4
5
  .HW_CLEAR_WIDTH (1)
5
6
  ) u_bit_field (
6
7
  .i_clk (<%= clock %>),
@@ -1,6 +1,7 @@
1
1
  rggen_bit_field #(
2
2
  .WIDTH (<%= width %>),
3
3
  .INITIAL_VALUE (<%= initial_value %>),
4
+ .SW_WRITE_CONTROL (1),
4
5
  .SW_WRITE_ENABLE_POLARITY (<%= polarity %>)
5
6
  ) u_bit_field (
6
7
  .i_clk (<%= clock %>),
@@ -1,6 +1,7 @@
1
1
  rggen_bit_field #(
2
2
  .WIDTH (<%= width %>),
3
- .INITIAL_VALUE (<%= initial_value %>)
3
+ .INITIAL_VALUE (<%= initial_value %>),
4
+ .HW_ACCESS (3'b001)
4
5
  ) u_bit_field (
5
6
  .i_clk (<%= clock %>),
6
7
  .i_rst_n (<%= reset %>),
@@ -1,6 +1,7 @@
1
1
  rggen_bit_field #(
2
2
  .WIDTH (<%= width %>),
3
3
  .INITIAL_VALUE (<%= initial_value %>),
4
+ .HW_ACCESS (3'b010),
4
5
  .HW_SET_WIDTH (1)
5
6
  ) u_bit_field (
6
7
  .i_clk (<%= clock %>),
@@ -1,11 +1,13 @@
1
1
  `ifndef rggen_connect_bit_field_if
2
2
  `define rggen_connect_bit_field_if(RIF, FIF, LSB, WIDTH) \
3
- assign FIF.valid = RIF.valid; \
4
- assign FIF.read_mask = RIF.read_mask[LSB+:WIDTH]; \
5
- assign FIF.write_mask = RIF.write_mask[LSB+:WIDTH]; \
6
- assign FIF.write_data = RIF.write_data[LSB+:WIDTH]; \
7
- assign RIF.read_data[LSB+:WIDTH] = FIF.read_data; \
8
- assign RIF.value[LSB+:WIDTH] = FIF.value;
3
+ always_comb begin \
4
+ FIF.write_valid = RIF.write_valid; \
5
+ FIF.read_valid = RIF.read_valid; \
6
+ FIF.mask = RIF.mask[LSB+:WIDTH]; \
7
+ FIF.write_data = RIF.write_data[LSB+:WIDTH]; \
8
+ RIF.read_data[LSB+:WIDTH] = FIF.read_data; \
9
+ RIF.value[LSB+:WIDTH] = FIF.value; \
10
+ end
9
11
  `endif
10
12
  `ifndef rggen_tie_off_unused_signals
11
13
  `define rggen_tie_off_unused_signals(WIDTH, VALID_BITS, RIF) \
@@ -13,8 +15,10 @@
13
15
  genvar __i; \
14
16
  for (__i = 0;__i < WIDTH;++__i) begin : g \
15
17
  if ((((VALID_BITS) >> __i) % 2) == 0) begin : g \
16
- assign RIF.read_data[__i] = 1'b0; \
17
- assign RIF.value[__i] = 1'b0; \
18
+ always_comb begin \
19
+ RIF.read_data[__i] = '0; \
20
+ RIF.value[__i] = '0; \
21
+ end \
18
22
  end \
19
23
  end \
20
24
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module SystemVerilog
5
- VERSION = '0.35.0'
5
+ VERSION = '0.35.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rggen-systemverilog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.35.0
4
+ version: 0.35.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taichi Ishitani
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-19 00:00:00.000000000 Z
10
+ date: 2025-06-01 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: 'SystemVerilog RTL and UVM RAL model generators for RgGen.
13
13
 
@@ -159,5 +159,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  requirements: []
160
160
  rubygems_version: 3.6.2
161
161
  specification_version: 4
162
- summary: rggen-systemverilog-0.35.0
162
+ summary: rggen-systemverilog-0.35.1
163
163
  test_files: []