rggen-veryl 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/lib/rggen/veryl/bit_field/type/custom.erb +1 -4
  4. data/lib/rggen/veryl/bit_field/type/rc_w0c_w1c_wc_woc.erb +7 -14
  5. data/lib/rggen/veryl/bit_field/type/rc_w0c_w1c_wc_woc.rb +0 -4
  6. data/lib/rggen/veryl/bit_field/type/ro_rotrg.erb +6 -14
  7. data/lib/rggen/veryl/bit_field/type/rof.erb +5 -14
  8. data/lib/rggen/veryl/bit_field/type/rohw.erb +1 -9
  9. data/lib/rggen/veryl/bit_field/type/rowo_rowotrg.erb +7 -14
  10. data/lib/rggen/veryl/bit_field/type/rs_w0s_w1s_ws_wos.erb +5 -14
  11. data/lib/rggen/veryl/bit_field/type/rs_w0s_w1s_ws_wos.rb +0 -4
  12. data/lib/rggen/veryl/bit_field/type/rw_rwtrg_w1.erb +6 -14
  13. data/lib/rggen/veryl/bit_field/type/rwc.erb +5 -14
  14. data/lib/rggen/veryl/bit_field/type/rwe_rwl.erb +1 -10
  15. data/lib/rggen/veryl/bit_field/type/rwhw.erb +1 -9
  16. data/lib/rggen/veryl/bit_field/type/rws.erb +5 -14
  17. data/lib/rggen/veryl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.erb +4 -14
  18. data/lib/rggen/veryl/bit_field/type/w0t_w1t.erb +4 -14
  19. data/lib/rggen/veryl/bit_field/type/w0trg_w1trg.erb +0 -1
  20. data/lib/rggen/veryl/bit_field/type/wo_wo1_wotrg.erb +5 -14
  21. data/lib/rggen/veryl/bit_field/type/wrc_wrs.erb +4 -14
  22. data/lib/rggen/veryl/bit_field/type.rb +2 -3
  23. data/lib/rggen/veryl/bit_field/veryl_top.rb +9 -7
  24. data/lib/rggen/veryl/register_block/protocol/avalon.erb +17 -0
  25. data/lib/rggen/veryl/register_block/protocol/avalon.rb +14 -0
  26. data/lib/rggen/veryl/register_block/protocol/native.erb +1 -0
  27. data/lib/rggen/veryl/register_block/protocol/native.rb +3 -0
  28. data/lib/rggen/veryl/version.rb +1 -1
  29. data/lib/rggen/veryl.rb +1 -0
  30. metadata +7 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eb3a5d509437cc431d3eff41138ff6869d2728548e295c60e1124bf808fcacaf
4
- data.tar.gz: ae23f0f755feec61cc0b737f64d421bb0a7e33cbf1121cbba6b1672127ae816d
3
+ metadata.gz: 921880c7d144cdd7dbb3c2cc585dc1e4c1bf31031b361708e841ba4865b8f71c
4
+ data.tar.gz: '06838b3a4664045b2a8a9e2cd03f18aac6abfa587f383b02eb99c77566ec2bd5'
5
5
  SHA512:
6
- metadata.gz: 2d2f08301a71dd2d708ea2055cf5cee06d0d250877f6b1d1f3c50bf848e607e3571471a23da885a87c6fa856b172f51b4580be4a3ed6e375086a8f618047327e
7
- data.tar.gz: f38176b195d36a6ff56b01db642ceede79579a24dd7e9c8a5721d66f438c326bc5706b0e37465e21252d0238e0190f03fdeae1e26b3ba335827f252179f310fd
6
+ metadata.gz: 535eb8b33c42bbe55d3b1823bcab2828f1c2fe5d1254cde7c3fe665b515efe4a3ecc35d319ecd90baa1f5488e29aa8450ad31de2111ddf664aa6b12458106f5e
7
+ data.tar.gz: 2787dba578e8fbefd0f92f9c340720a5b138b4164dee4d544deca4ef14415ff40e503e65829a794c73b1b12322468541341afe292d8f38f1c266273fb92de1ca
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/rggen-veryl.svg)](https://badge.fury.io/rb/rggen-veryl)
2
2
  [![CI](https://github.com/rggen/rggen-veryl/actions/workflows/ci.yml/badge.svg)](https://github.com/rggen/rggen-veryl/actions/workflows/ci.yml)
3
- [![Maintainability](https://api.codeclimate.com/v1/badges/6f93e66d558f43d0693e/maintainability)](https://codeclimate.com/github/rggen/rggen-veryl/maintainability)
3
+ [![Maintainability](https://qlty.sh/badges/7537364e-4631-4c9a-b873-5bceb9418ed0/maintainability.svg)](https://qlty.sh/gh/rggen/projects/rggen-veryl)
4
4
  [![codecov](https://codecov.io/gh/rggen/rggen-veryl/graph/badge.svg?token=iYlaqhSjat)](https://codecov.io/gh/rggen/rggen-veryl)
5
5
  [![Gitter](https://badges.gitter.im/rggen/rggen.svg)](https://gitter.im/rggen/rggen?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
6
6
 
@@ -43,7 +43,7 @@ You need to add this repository to the `[dependencies]` section in your `Veryl.t
43
43
 
44
44
  ```toml
45
45
  [dependencies]
46
- "https://github.com/rggen/rggen-veryl-rtl" = "0.2.0"
46
+ "https://github.com/rggen/rggen-veryl-rtl" = "0.3.0"
47
47
  ```
48
48
 
49
49
  ## Contact
@@ -13,13 +13,10 @@ inst u_bit_field: rggen::rggen_bit_field #(
13
13
  bit_field_if: bit_field_sub_if,
14
14
  o_write_trigger: <%= output_port(:write_trigger) %>,
15
15
  o_read_trigger: <%= output_port(:read_trigger) %>,
16
- i_sw_write_enable: '1,
17
16
  i_hw_write_enable: <%= input_port(:hw_write_enable) %>,
18
17
  i_hw_write_data: <%= input_port(:hw_write_data) %>,
19
18
  i_hw_set: <%= input_port(:hw_set) %>,
20
19
  i_hw_clear: <%= input_port(:hw_clear) %>,
21
20
  i_value: <%= input_port(:value_in) %>,
22
- i_mask: '1,
23
- o_value: <%= output_port(:value_out) %>,
24
- o_value_unmasked: _
21
+ o_value: <%= output_port(:value_out) %>
25
22
  );
@@ -4,18 +4,11 @@ inst u_bit_field: rggen::rggen_bit_field #(
4
4
  SW_READ_ACTION: rggen_sw_action::<%= read_action %>,
5
5
  SW_WRITE_ACTION: rggen_sw_action::<%= write_action %>
6
6
  )(
7
- i_clk: <%= clock %>,
8
- i_rst: <%= reset %>,
9
- bit_field_if: <%= bit_field_if %>,
10
- o_write_trigger: _,
11
- o_read_trigger: _,
12
- i_sw_write_enable: <%= sw_write_enable %>,
13
- i_hw_write_enable: '0,
14
- i_hw_write_data: '0,
15
- i_hw_set: <%= set[loop_variables] %>,
16
- i_hw_clear: '0,
17
- i_value: '0,
18
- i_mask: <%= mask %>,
19
- o_value: <%= value_out[loop_variables] %>,
20
- o_value_unmasked: <%= value_out_unmasked_singal %>
7
+ i_clk: <%= clock %>,
8
+ i_rst: <%= reset %>,
9
+ bit_field_if: <%= bit_field_if %>,
10
+ i_hw_set: <%= set[loop_variables] %>,
11
+ i_mask: <%= mask %>,
12
+ o_value: <%= value_out[loop_variables] %>,
13
+ o_value_unmasked: <%= value_out_unmasked_singal %>
21
14
  );
@@ -32,10 +32,6 @@ RgGen.define_list_item_feature(:bit_field, :type, [:rc, :w0c, :w1c, :wc, :woc])
32
32
  }.fetch(bit_field.type, 'WRITE_CLEAR')
33
33
  end
34
34
 
35
- def sw_write_enable
36
- bit_field.type == :rc && all_bits_0 || all_bits_1
37
- end
38
-
39
35
  def value_out_unmasked_singal
40
36
  bit_field.reference? && value_unmasked[loop_variables] || unused
41
37
  end
@@ -1,21 +1,13 @@
1
1
  inst u_bit_field: rggen::rggen_bit_field #(
2
2
  WIDTH: <%= width %>,
3
+ SW_WRITE_ACTION: rggen_sw_action::WRITE_NONE,
3
4
  STORAGE: 0,
4
5
  EXTERNAL_READ_DATA: 1,
5
6
  TRIGGER: <%= trigger %>
6
7
  )(
7
- i_clk: <%= clock %>,
8
- i_rst: <%= reset %>,
9
- bit_field_if: <%= bit_field_if %>,
10
- o_write_trigger: _,
11
- o_read_trigger: <%= read_trigger_signal %>,
12
- i_sw_write_enable: '0,
13
- i_hw_write_enable: '0,
14
- i_hw_write_data: '0,
15
- i_hw_set: '0,
16
- i_hw_clear: '0,
17
- i_value: <%= value_in_signal %>,
18
- i_mask: '1,
19
- o_value: _,
20
- o_value_unmasked: _
8
+ i_clk: <%= clock %>,
9
+ i_rst: <%= reset %>,
10
+ bit_field_if: <%= bit_field_if %>,
11
+ o_read_trigger: <%= read_trigger_signal %>,
12
+ i_value: <%= value_in_signal %>
21
13
  );
@@ -1,20 +1,11 @@
1
1
  inst u_bit_field: rggen::rggen_bit_field #(
2
2
  WIDTH: <%= width %>,
3
+ SW_WRITE_ACTION: rggen_sw_action::WRITE_NONE,
3
4
  STORAGE: 0,
4
5
  EXTERNAL_READ_DATA: 1
5
6
  )(
6
- i_clk: '0,
7
- i_rst: '0,
8
- bit_field_if: <%= bit_field_if %>,
9
- o_write_trigger: _,
10
- o_read_trigger: _,
11
- i_sw_write_enable: '0,
12
- i_hw_write_enable: '0,
13
- i_hw_write_data: '0,
14
- i_hw_set: '0,
15
- i_hw_clear: '0,
16
- i_value: <%= initial_value %>,
17
- i_mask: '1,
18
- o_value: _,
19
- o_value_unmasked: _
7
+ i_clk: '0,
8
+ i_rst: '0,
9
+ bit_field_if: <%= bit_field_if %>,
10
+ i_value: <%= initial_value %>
20
11
  );
@@ -6,15 +6,7 @@ inst u_bit_field: rggen::rggen_bit_field #(
6
6
  i_clk: <%= clock %>,
7
7
  i_rst: <%= reset %>,
8
8
  bit_field_if: <%= bit_field_if %>,
9
- o_write_trigger: _,
10
- o_read_trigger: _,
11
- i_sw_write_enable: '0,
12
9
  i_hw_write_enable: <%= valid_signal %>,
13
10
  i_hw_write_data: <%= value_in[loop_variables] %>,
14
- i_hw_set: '0,
15
- i_hw_clear: '0,
16
- i_value: '0,
17
- i_mask: '1,
18
- o_value: <%= value_out[loop_variables] %>,
19
- o_value_unmasked: _
11
+ o_value: <%= value_out[loop_variables] %>
20
12
  );
@@ -4,18 +4,11 @@ inst u_bit_field: rggen::rggen_bit_field #(
4
4
  EXTERNAL_READ_DATA: 1,
5
5
  TRIGGER: <%= trigger %>
6
6
  )(
7
- i_clk: <%= clock %>,
8
- i_rst: <%= reset %>,
9
- bit_field_if: <%= bit_field_if %>,
10
- o_write_trigger: <%= write_trigger_signal %>,
11
- o_read_trigger: <%= read_trigger_signal %>,
12
- i_sw_write_enable: '1,
13
- i_hw_write_enable: '0,
14
- i_hw_write_data: '0,
15
- i_hw_set: '0,
16
- i_hw_clear: '0,
17
- i_value: <%= value_in_signal %>,
18
- i_mask: '1,
19
- o_value: <%= value_out[loop_variables] %>,
20
- o_value_unmasked: _
7
+ i_clk: <%= clock %>,
8
+ i_rst: <%= reset %>,
9
+ bit_field_if: <%= bit_field_if %>,
10
+ o_write_trigger: <%= write_trigger_signal %>,
11
+ o_read_trigger: <%= read_trigger_signal %>,
12
+ i_value: <%= value_in_signal %>,
13
+ o_value: <%= value_out[loop_variables] %>
21
14
  );
@@ -4,18 +4,9 @@ inst u_bit_field: rggen::rggen_bit_field #(
4
4
  SW_READ_ACTION: rggen_sw_action::<%= read_action %>,
5
5
  SW_WRITE_ACTION: rggen_sw_action::<%= write_action %>
6
6
  )(
7
- i_clk: <%= clock %>,
8
- i_rst: <%= reset %>,
9
- bit_field_if: <%= bit_field_if %>,
10
- o_write_trigger: _,
11
- o_read_trigger: _,
12
- i_sw_write_enable: <%= sw_write_enable %>,
13
- i_hw_write_enable: '0,
14
- i_hw_write_data: '0,
15
- i_hw_set: '0,
16
- i_hw_clear: <%= clear[loop_variables] %>,
17
- i_value: '0,
18
- i_mask: '1,
19
- o_value: <%= value_out[loop_variables] %>,
20
- o_value_unmasked: _
7
+ i_clk: <%= clock %>,
8
+ i_rst: <%= reset %>,
9
+ bit_field_if: <%= bit_field_if %>,
10
+ i_hw_clear: <%= clear[loop_variables] %>,
11
+ o_value: <%= value_out[loop_variables] %>
21
12
  );
@@ -26,9 +26,5 @@ RgGen.define_list_item_feature(:bit_field, :type, [:rs, :w0s, :w1s, :ws, :wos])
26
26
  rs: 'WRITE_NONE', w0s: 'WRITE_0_SET', w1s: 'WRITE_1_SET'
27
27
  }.fetch(bit_field.type, 'WRITE_SET')
28
28
  end
29
-
30
- def sw_write_enable
31
- bit_field.writable? && all_bits_1 || all_bits_0
32
- end
33
29
  end
34
30
  end
@@ -4,18 +4,10 @@ inst u_bit_field: rggen::rggen_bit_field #(
4
4
  SW_WRITE_ONCE: <%= write_once %>,
5
5
  TRIGGER: <%= trigger %>
6
6
  )(
7
- i_clk: <%= clock %>,
8
- i_rst: <%= reset %>,
9
- bit_field_if: <%= bit_field_if %>,
10
- o_write_trigger: <%= write_trigger_signal %>,
11
- o_read_trigger: <%= read_trigger_signal %>,
12
- i_sw_write_enable: '1,
13
- i_hw_write_enable: '0,
14
- i_hw_write_data: '0,
15
- i_hw_set: '0,
16
- i_hw_clear: '0,
17
- i_value: '0,
18
- i_mask: '1,
19
- o_value: <%= value_out[loop_variables] %>,
20
- o_value_unmasked: _
7
+ i_clk: <%= clock %>,
8
+ i_rst: <%= reset %>,
9
+ bit_field_if: <%= bit_field_if %>,
10
+ o_write_trigger: <%= write_trigger_signal %>,
11
+ o_read_trigger: <%= read_trigger_signal %>,
12
+ o_value: <%= value_out[loop_variables] %>
21
13
  );
@@ -3,18 +3,9 @@ inst u_bit_field: rggen::rggen_bit_field #(
3
3
  INITIAL_VALUE: <%= initial_value %>,
4
4
  HW_CLEAR_WIDTH: 1
5
5
  )(
6
- i_clk: <%= clock %>,
7
- i_rst: <%= reset %>,
8
- bit_field_if: <%= bit_field_if %>,
9
- o_write_trigger: _,
10
- o_read_trigger: _,
11
- i_sw_write_enable: '1,
12
- i_hw_write_enable: '0,
13
- i_hw_write_data: '0,
14
- i_hw_set: '0,
15
- i_hw_clear: <%= clear_signal %>,
16
- i_value: '0,
17
- i_mask: '1,
18
- o_value: <%= value_out[loop_variables] %>,
19
- o_value_unmasked: _
6
+ i_clk: <%= clock %>,
7
+ i_rst: <%= reset %>,
8
+ bit_field_if: <%= bit_field_if %>,
9
+ i_hw_clear: <%= clear_signal %>,
10
+ o_value: <%= value_out[loop_variables] %>
20
11
  );
@@ -6,15 +6,6 @@ inst u_bit_field: rggen::rggen_bit_field #(
6
6
  i_clk: <%= clock %>,
7
7
  i_rst: <%= reset %>,
8
8
  bit_field_if: <%= bit_field_if %>,
9
- o_write_trigger: _,
10
- o_read_trigger: _,
11
9
  i_sw_write_enable: <%= control_signal %>,
12
- i_hw_write_enable: '0,
13
- i_hw_write_data: '0,
14
- i_hw_set: '0,
15
- i_hw_clear: '0,
16
- i_value: '0,
17
- i_mask: '1,
18
- o_value: <%= value_out[loop_variables] %>,
19
- o_value_unmasked: _
10
+ o_value: <%= value_out[loop_variables] %>
20
11
  );
@@ -5,15 +5,7 @@ inst u_bit_field: rggen::rggen_bit_field #(
5
5
  i_clk: <%= clock %>,
6
6
  i_rst: <%= reset %>,
7
7
  bit_field_if: <%= bit_field_if %>,
8
- o_write_trigger: _,
9
- o_read_trigger: _,
10
- i_sw_write_enable: '1,
11
8
  i_hw_write_enable: <%= valid_signal %>,
12
9
  i_hw_write_data: <%= value_in[loop_variables] %>,
13
- i_hw_set: '0,
14
- i_hw_clear: '0,
15
- i_value: '0,
16
- i_mask: '1,
17
- o_value: <%= value_out[loop_variables] %>,
18
- o_value_unmasked: _
10
+ o_value: <%= value_out[loop_variables] %>
19
11
  );
@@ -3,18 +3,9 @@ inst u_bit_field: rggen::rggen_bit_field #(
3
3
  INITIAL_VALUE: <%= initial_value %>,
4
4
  HW_SET_WIDTH: 1
5
5
  )(
6
- i_clk: <%= clock %>,
7
- i_rst: <%= reset %>,
8
- bit_field_if: <%= bit_field_if %>,
9
- o_write_trigger: _,
10
- o_read_trigger: _,
11
- i_sw_write_enable: '1,
12
- i_hw_write_enable: '0,
13
- i_hw_write_data: '0,
14
- i_hw_set: <%= set_signal %>,
15
- i_hw_clear: '0,
16
- i_value: '0,
17
- i_mask: '1,
18
- o_value: <%= value_out[loop_variables] %>,
19
- o_value_unmasked: _
6
+ i_clk: <%= clock %>,
7
+ i_rst: <%= reset %>,
8
+ bit_field_if: <%= bit_field_if %>,
9
+ i_hw_set: <%= set_signal %>,
10
+ o_value: <%= value_out[loop_variables] %>
20
11
  );
@@ -4,18 +4,8 @@ inst u_bit_field: rggen::rggen_bit_field #(
4
4
  SW_READ_ACTION: rggen_sw_action::<%= read_action %>,
5
5
  SW_WRITE_ACTION: rggen_sw_action::<%= write_action %>
6
6
  )(
7
- i_clk: <%= clock %>,
8
- i_rst: <%= reset %>,
9
- bit_field_if: <%= bit_field_if %>,
10
- o_write_trigger: _,
11
- o_read_trigger: _,
12
- i_sw_write_enable: '1,
13
- i_hw_write_enable: '0,
14
- i_hw_write_data: '0,
15
- i_hw_set: '0,
16
- i_hw_clear: '0,
17
- i_value: '0,
18
- i_mask: '1,
19
- o_value: <%= value_out[loop_variables] %>,
20
- o_value_unmasked: _
7
+ i_clk: <%= clock %>,
8
+ i_rst: <%= reset %>,
9
+ bit_field_if: <%= bit_field_if %>,
10
+ o_value: <%= value_out[loop_variables] %>
21
11
  );
@@ -3,18 +3,8 @@ inst u_bit_field: rggen::rggen_bit_field #(
3
3
  INITIAL_VALUE: <%= initial_value %>,
4
4
  SW_WRITE_ACTION: rggen_sw_action::<%= write_action %>
5
5
  )(
6
- i_clk: <%= clock %>,
7
- i_rst: <%= reset %>,
8
- bit_field_if: <%= bit_field_if %>,
9
- o_write_trigger: _,
10
- o_read_trigger: _,
11
- i_sw_write_enable: '1,
12
- i_hw_write_enable: '0,
13
- i_hw_write_data: '0,
14
- i_hw_set: '0,
15
- i_hw_clear: '0,
16
- i_value: '0,
17
- i_mask: '1,
18
- o_value: <%= value_out[loop_variables] %>,
19
- o_value_unmasked: _
6
+ i_clk: <%= clock %>,
7
+ i_rst: <%= reset %>,
8
+ bit_field_if: <%= bit_field_if %>,
9
+ o_value: <%= value_out[loop_variables] %>
20
10
  );
@@ -5,6 +5,5 @@ inst u_bit_field: rggen::rggen_bit_field_w01trg #(
5
5
  i_clk: <%= clock %>,
6
6
  i_rst: <%= reset %>,
7
7
  bit_field_if: <%= bit_field_if %>,
8
- i_value: '0,
9
8
  o_trigger: <%= trigger[loop_variables] %>
10
9
  );
@@ -5,18 +5,9 @@ inst u_bit_field: rggen::rggen_bit_field #(
5
5
  SW_WRITE_ONCE: <%= write_once %>,
6
6
  TRIGGER: <%= trigger %>
7
7
  )(
8
- i_clk: <%= clock %>,
9
- i_rst: <%= reset %>,
10
- bit_field_if: <%= bit_field_if %>,
11
- o_write_trigger: <%= write_trigger_signal %>,
12
- o_read_trigger: _,
13
- i_sw_write_enable: '1,
14
- i_hw_write_enable: '0,
15
- i_hw_write_data: '0,
16
- i_hw_set: '0,
17
- i_hw_clear: '0,
18
- i_value: '0,
19
- i_mask: '1,
20
- o_value: <%= value_out[loop_variables] %>,
21
- o_value_unmasked: _
8
+ i_clk: <%= clock %>,
9
+ i_rst: <%= reset %>,
10
+ bit_field_if: <%= bit_field_if %>,
11
+ o_write_trigger: <%= write_trigger_signal %>,
12
+ o_value: <%= value_out[loop_variables] %>
22
13
  );
@@ -3,18 +3,8 @@ inst u_bit_field: rggen::rggen_bit_field #(
3
3
  INITIAL_VALUE: <%= initial_value %>,
4
4
  SW_READ_ACTION: rggen_sw_action::<%= read_action %>
5
5
  )(
6
- i_clk: <%= clock %>,
7
- i_rst: <%= reset %>,
8
- bit_field_if: <%= bit_field_if %>,
9
- o_write_trigger: _,
10
- o_read_trigger: _,
11
- i_sw_write_enable: '1,
12
- i_hw_write_enable: '0,
13
- i_hw_write_data: '0,
14
- i_hw_set: '0,
15
- i_hw_clear: '0,
16
- i_value: '0,
17
- i_mask: '1,
18
- o_value: <%= value_out[loop_variables] %>,
19
- o_value_unmasked: _
6
+ i_clk: <%= clock %>,
7
+ i_rst: <%= reset %>,
8
+ bit_field_if: <%= bit_field_if %>,
9
+ o_value: <%= value_out[loop_variables] %>
20
10
  );
@@ -32,8 +32,7 @@ RgGen.define_list_feature(:bit_field, :type) do
32
32
  end
33
33
 
34
34
  def initial_value
35
- index =
36
- bit_field.initial_value_array? && bit_field.local_index || nil
35
+ index = bit_field.initial_value_array? && loop_variables || nil
37
36
  bit_field.initial_value[index]
38
37
  end
39
38
 
@@ -46,7 +45,7 @@ RgGen.define_list_feature(:bit_field, :type) do
46
45
 
47
46
  bit_field
48
47
  .find_reference(register_block.bit_fields)
49
- .value(bit_field.local_indices, bit_field.reference_width)
48
+ .value(bit_field.local_indexes, bit_field.reference_width)
50
49
  end
51
50
 
52
51
  def mask
@@ -52,18 +52,17 @@ RgGen.define_simple_feature(:bit_field, :veryl_top) do
52
52
  end
53
53
 
54
54
  def initial_value_size
55
- return unless bit_field.initial_value_array?
56
-
57
- [bit_field.sequence_size]
55
+ bit_field.initial_value_array? && array_size || nil
58
56
  end
59
57
 
60
58
  def initial_value_rhs
61
59
  if !bit_field.initial_value_array?
62
60
  sized_initial_value
63
61
  elsif bit_field.fixed_initial_value?
64
- array(sized_initial_values)
62
+ concat(sized_initial_values)
65
63
  else
66
- repeat(bit_field.sequence_size, sized_initial_value)
64
+ size = array_size.inject(:*)
65
+ repeat(size, sized_initial_value)
67
66
  end
68
67
  end
69
68
 
@@ -72,11 +71,14 @@ RgGen.define_simple_feature(:bit_field, :veryl_top) do
72
71
  end
73
72
 
74
73
  def sized_initial_values
75
- bit_field.initial_values.map { |v| hex(v, bit_field.width) }
74
+ bit_field
75
+ .initial_values(flatten: true)
76
+ .map { |v| hex(v, bit_field.width) }
77
+ .reverse
76
78
  end
77
79
 
78
80
  def register_if(offsets)
79
- index = register.index(offsets || register.local_indices)
81
+ index = register.index(offsets || register.local_indexes)
80
82
  register_block.register_if[index]
81
83
  end
82
84
 
@@ -0,0 +1,17 @@
1
+ inst u_adapter: rggen::rggen_avalon_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
+ INSERT_SLICER: <%= insert_slicer %>
12
+ )(
13
+ i_clk: <%= register_block.clock %>,
14
+ i_rst: <%= register_block.reset %>,
15
+ avalon_if: <%= avalon_if %>,
16
+ register_if: <%= register_block.register_if %>
17
+ );
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:register_block, :protocol, :avalon) do
4
+ veryl do
5
+ build do
6
+ modport :avalon_if, {
7
+ name: 'avalon_if',
8
+ interface_type: 'rggen::rggen_avalon_if', modport: 'agent'
9
+ }
10
+ end
11
+
12
+ main_code :register_block, from_template: true
13
+ end
14
+ end
@@ -7,6 +7,7 @@ inst u_adapter: rggen::rggen_native_adapter #(
7
7
  PRE_DECODE: <%= pre_decode %>,
8
8
  BASE_ADDRESS: <%= base_address %>,
9
9
  BYTE_SIZE: <%= byte_size %>,
10
+ USE_READ_STROBE: <%= use_read_strobe %>,
10
11
  ERROR_STATUS: <%= error_status %>,
11
12
  DEFAULT_READ_DATA: <%= default_read_data %>,
12
13
  INSERT_SLICER: <%= insert_slicer %>
@@ -6,6 +6,9 @@ RgGen.define_list_item_feature(:register_block, :protocol, :native) do
6
6
  param :strobe_width, {
7
7
  name: 'STROBE_WIDTH', type: :u32, default: bus_width / 8
8
8
  }
9
+ param :use_read_strobe, {
10
+ name: 'USE_READ_STROBE', type: :bit, default: 0
11
+ }
9
12
  modport :csrbus_if, {
10
13
  name: 'csrbus_if',
11
14
  interface_type: 'rggen::rggen_bus_if', modport: 'slave'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module Veryl
5
- VERSION = '0.2.0'
5
+ VERSION = '0.3.0'
6
6
  end
7
7
  end
data/lib/rggen/veryl.rb CHANGED
@@ -28,6 +28,7 @@ RgGen.setup_plugin :'rggen-veryl' do |plugin|
28
28
  'veryl/register_block/protocol',
29
29
  'veryl/register_block/protocol/apb',
30
30
  'veryl/register_block/protocol/axi4lite',
31
+ 'veryl/register_block/protocol/avalon',
31
32
  'veryl/register_block/protocol/wishbone',
32
33
  'veryl/register_block/protocol/native',
33
34
  'veryl/register_file/veryl_top',
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rggen-veryl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taichi Ishitani
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-01-23 00:00:00.000000000 Z
10
+ date: 2025-02-19 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rggen-systemverilog
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 0.34.0
18
+ version: 0.35.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: 0.34.0
25
+ version: 0.35.0
26
26
  description: Veryl writer plugin for RgGen
27
27
  email:
28
28
  - rggen@googlegroups.com
@@ -88,6 +88,8 @@ files:
88
88
  - lib/rggen/veryl/register_block/protocol.rb
89
89
  - lib/rggen/veryl/register_block/protocol/apb.erb
90
90
  - lib/rggen/veryl/register_block/protocol/apb.rb
91
+ - lib/rggen/veryl/register_block/protocol/avalon.erb
92
+ - lib/rggen/veryl/register_block/protocol/avalon.rb
91
93
  - lib/rggen/veryl/register_block/protocol/axi4lite.erb
92
94
  - lib/rggen/veryl/register_block/protocol/axi4lite.rb
93
95
  - lib/rggen/veryl/register_block/protocol/native.erb
@@ -130,5 +132,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
132
  requirements: []
131
133
  rubygems_version: 3.6.2
132
134
  specification_version: 4
133
- summary: rggen-veryl-0.2.0
135
+ summary: rggen-veryl-0.3.0
134
136
  test_files: []