rggen-vhdl 0.12.2 → 0.13.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: 9cbf295168e68bf08a95ae234b15414b88ab0a68eba9d8be6bfee4a494d19a11
4
- data.tar.gz: 23bd05f96bfe6f930389c11d776280f319bcc70521f659ef793b0843de051618
3
+ metadata.gz: aab2a582042ff67cb8a436badd9c9e45db892433943289caa549e72137afeb7d
4
+ data.tar.gz: 6d1a70927e02f01554d047824fcbf49111900371f438be44ae3b0e618f2bfd20
5
5
  SHA512:
6
- metadata.gz: 04d94c6cc7a8e951efeda5bb16a2a75373fddd440bc3fe072b5f14096a903992d986eaf951859ffa1ebd079e3f034db186840daaa1940b649ddc5cdd4efae028
7
- data.tar.gz: cb6a3e9eb6b96f5867fd4b9ea37ce2ac0740be9b0dc6c0117a42a61eae4e6b2e27f686264f44847782791016151d2bd13ca9809bf1ba191862834bfdf96f3230
6
+ metadata.gz: 43e9a26277a6a23701e5d7aeeccaa8842f331feb2bbe56fc70023b9139416bda3d26ed6a1310c8b24e00a75089c1df5eef139073ca0c4dd9c5174f4deed4bb1e
7
+ data.tar.gz: 0041704e5f8fb7c8124006ec529db4f63b93ff534f06e47f3662b3ed92d674feb04ca25d541b5f651f0dc12f3ebe17dca2d296178d9ea8d7416136fcfbef2d1b
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2021-2025 Taichi Ishitani
3
+ Copyright (c) 2021-2026 Taichi Ishitani
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  [![CI](https://github.com/rggen/rggen-vhdl/actions/workflows/ci.yml/badge.svg)](https://github.com/rggen/rggen-vhdl/actions/workflows/ci.yml)
3
3
  [![Maintainability](https://qlty.sh/badges/d3e167e0-16f0-4170-ae4a-10ccc3dcdcb5/maintainability.svg)](https://qlty.sh/gh/rggen/projects/rggen-vhdl)
4
4
  [![codecov](https://codecov.io/gh/rggen/rggen-vhdl/branch/master/graph/badge.svg?token=cyo9R4xCje)](https://codecov.io/gh/rggen/rggen-vhdl)
5
- [![Gitter](https://badges.gitter.im/rggen/rggen.svg)](https://gitter.im/rggen/rggen?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
5
+ [![Discord](https://img.shields.io/discord/1406572699467124806?style=flat&logo=discord)](https://discord.com/invite/KWya83ZZxr)
6
6
 
7
7
  # RgGen::VHDL
8
8
 
@@ -62,13 +62,13 @@ Feedbacks, bus reports, questions and etc. are welcome! You can post them bu usi
62
62
 
63
63
  * [GitHub Issue Tracker](https://github.com/rggen/rggen/issues)
64
64
  * [GitHub Discussions](https://github.com/rggen/rggen/discussions)
65
- * [Chat Room](https://gitter.im/rggen/rggen)
65
+ * [Discord](https://discord.com/invite/KWya83ZZxr)
66
66
  * [Mailing List](https://groups.google.com/d/forum/rggen)
67
67
  * [Mail](mailto:rggen@googlegroups.com)
68
68
 
69
69
  ## Copyright & License
70
70
 
71
- Copyright © 2021-2025 Taichi Ishitani. RgGen::VHDL is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
71
+ Copyright © 2021-2026 Taichi Ishitani. RgGen::VHDL is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
72
72
 
73
73
  ## Code of Conduct
74
74
 
@@ -0,0 +1,23 @@
1
+ u_bit_field: entity <%= library_name %>.rggen_bit_field_counter
2
+ generic map (
3
+ WIDTH => <%= width %>,
4
+ INITIAL_VALUE => <%= initial_value %>,
5
+ UP_WIDTH => <%= up_width %>,
6
+ DOWN_WIDTH => <%= down_width %>,
7
+ WRAP_AROUND => <%= wrap_around %>,
8
+ USE_CLEAR => <%= use_clear_value %>
9
+ )
10
+ port map (
11
+ i_clk => <%= clock %>,
12
+ i_rst_n => <%= reset %>,
13
+ i_sw_read_valid => <%= bit_field_read_valid %>,
14
+ i_sw_write_valid => <%= bit_field_write_valid %>,
15
+ i_sw_mask => <%= bit_field_mask %>,
16
+ i_sw_write_data => <%= bit_field_write_data %>,
17
+ o_sw_read_data => <%= bit_field_read_data %>,
18
+ o_sw_value => <%= bit_field_value %>,
19
+ i_clear => <%= clear_signal %>,
20
+ i_up => <%= up[loop_variables] %>,
21
+ i_down => <%= down[loop_variables] %>,
22
+ o_count => <%= count[loop_variables] %>
23
+ );
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, :counter) do
4
+ vhdl do
5
+ build do
6
+ generic :up_width, {
7
+ name: "#{full_name}_up_width".upcase, type: :natural, default: 1
8
+ }
9
+ generic :down_width, {
10
+ name: "#{full_name}_down_width".upcase, type: :natural, default: 1
11
+ }
12
+ generic :wrap_around, {
13
+ name: "#{full_name}_wrap_around".upcase, type: :boolean, default: false
14
+ }
15
+ if external_clear?
16
+ generic :use_clear, {
17
+ name: "#{full_name}_use_clear".upcase, type: :boolean, default: true
18
+ }
19
+ end
20
+
21
+ input :up, {
22
+ name: "i_#{full_name}_up",
23
+ width: "clip_width(#{up_width})", array_size:
24
+ }
25
+ input :down, {
26
+ name: "i_#{full_name}_down",
27
+ width: "clip_width(#{down_width})", array_size:
28
+ }
29
+ if external_clear?
30
+ input :clear, {
31
+ name: "i_#{full_name}_clear", width: 1, array_size:
32
+ }
33
+ end
34
+ output :count, {
35
+ name: "o_#{full_name}", width:, array_size:
36
+ }
37
+ end
38
+
39
+ main_code :bit_field, from_template: true
40
+
41
+ private
42
+
43
+ def external_clear?
44
+ !bit_field.reference?
45
+ end
46
+
47
+ def use_clear_value
48
+ !external_clear? || use_clear
49
+ end
50
+
51
+ def clear_signal
52
+ reference_bit_field || clear[loop_variables]
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,29 @@
1
+ u_register: entity <%= library_name %>.rggen_maskable_register
2
+ generic map (
3
+ READABLE => <%= readable? %>,
4
+ WRITABLE => <%= writable? %>,
5
+ ADDRESS_WIDTH => <%= address_width %>,
6
+ OFFSET_ADDRESS => <%= offset_address %>,
7
+ BUS_WIDTH => <%= bus_width %>,
8
+ DATA_WIDTH => <%= width %>
9
+ )
10
+ port map (
11
+ i_clk => <%= clock %>,
12
+ i_rst_n => <%= reset %>,
13
+ i_register_valid => <%= register_valid %>,
14
+ i_register_access => <%= register_access %>,
15
+ i_register_address => <%= register_address %>,
16
+ i_register_write_data => <%= register_write_data %>,
17
+ i_register_strobe => <%= register_strobe %>,
18
+ o_register_active => <%= register_active %>,
19
+ o_register_ready => <%= register_ready %>,
20
+ o_register_status => <%= register_status %>,
21
+ o_register_read_data => <%= register_read_data %>,
22
+ o_register_value => <%= register_value %>,
23
+ o_bit_field_read_valid => <%= bit_field_read_valid %>,
24
+ o_bit_field_write_valid => <%= bit_field_write_valid %>,
25
+ o_bit_field_mask => <%= bit_field_mask %>,
26
+ o_bit_field_write_data => <%= bit_field_write_data %>,
27
+ i_bit_field_read_data => <%= bit_field_read_data %>,
28
+ i_bit_field_value => <%= bit_field_value %>
29
+ );
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:register, :type, :maskable) do
4
+ vhdl do
5
+ main_code :register, from_template: true
6
+ end
7
+ end
@@ -36,7 +36,7 @@ RgGen.define_list_item_feature(:register_block, :protocol, :axi4lite) do
36
36
  private
37
37
 
38
38
  def id_width_value
39
- "clip_id_width(#{id_width})"
39
+ "clip_width(#{id_width})"
40
40
  end
41
41
  end
42
42
  end
@@ -24,13 +24,11 @@ module RgGen
24
24
  end
25
25
 
26
26
  def __array_slice__(lsb, width)
27
- msb =
28
- if integer?(width)
29
- __reduce_array__([lsb, width - 1], :+, 0)
30
- else
31
- __reduce_array__([lsb, width, -1], :+, 0)
32
- end
33
- "(#{msb} downto #{lsb})"
27
+ if integer?(width)
28
+ "(#{__reduce_array__([lsb, width - 1], :+, 0)} downto #{lsb})"
29
+ else
30
+ "(#{__reduce_array__([lsb, width], :+, 0)}-1 downto #{lsb})"
31
+ end
34
32
  end
35
33
  end
36
34
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module VHDL
5
- VERSION = '0.12.2'
5
+ VERSION = '0.13.0'
6
6
  end
7
7
  end
data/lib/rggen/vhdl.rb CHANGED
@@ -35,9 +35,11 @@ RgGen.setup_plugin :'rggen-vhdl' do |plugin|
35
35
  'vhdl/register/type',
36
36
  'vhdl/register/type/external',
37
37
  'vhdl/register/type/indirect',
38
+ 'vhdl/register/type/maskable',
38
39
  'vhdl/register/type/rw',
39
40
  'vhdl/bit_field/vhdl_top',
40
41
  'vhdl/bit_field/type',
42
+ 'vhdl/bit_field/type/counter',
41
43
  'vhdl/bit_field/type/custom',
42
44
  'vhdl/bit_field/type/rc_w0c_w1c_wc_woc',
43
45
  'vhdl/bit_field/type/ro_rotrg',
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rggen-vhdl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.2
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taichi Ishitani
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-07-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 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.35.1
18
+ version: 0.36.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.35.1
25
+ version: 0.36.0
26
26
  description: VHDL writer plugin for RgGen
27
27
  email:
28
28
  - rggen@googlegroups.com
@@ -35,6 +35,8 @@ files:
35
35
  - README.md
36
36
  - lib/rggen/vhdl.rb
37
37
  - lib/rggen/vhdl/bit_field/type.rb
38
+ - lib/rggen/vhdl/bit_field/type/counter.erb
39
+ - lib/rggen/vhdl/bit_field/type/counter.rb
38
40
  - lib/rggen/vhdl/bit_field/type/custom.erb
39
41
  - lib/rggen/vhdl/bit_field/type/custom.rb
40
42
  - lib/rggen/vhdl/bit_field/type/rc_w0c_w1c_wc_woc.erb
@@ -83,6 +85,8 @@ files:
83
85
  - lib/rggen/vhdl/register/type/external.rb
84
86
  - lib/rggen/vhdl/register/type/indirect.erb
85
87
  - lib/rggen/vhdl/register/type/indirect.rb
88
+ - lib/rggen/vhdl/register/type/maskable.erb
89
+ - lib/rggen/vhdl/register/type/maskable.rb
86
90
  - lib/rggen/vhdl/register/type/rw.erb
87
91
  - lib/rggen/vhdl/register/type/rw.rb
88
92
  - lib/rggen/vhdl/register/vhdl_top.rb
@@ -123,14 +127,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
127
  requirements:
124
128
  - - ">="
125
129
  - !ruby/object:Gem::Version
126
- version: '3.1'
130
+ version: '3.2'
127
131
  required_rubygems_version: !ruby/object:Gem::Requirement
128
132
  requirements:
129
133
  - - ">="
130
134
  - !ruby/object:Gem::Version
131
135
  version: '0'
132
136
  requirements: []
133
- rubygems_version: 3.6.2
137
+ rubygems_version: 4.0.3
134
138
  specification_version: 4
135
- summary: rggen-vhdl-0.12.2
139
+ summary: rggen-vhdl-0.13.0
136
140
  test_files: []