rggen-veryl 0.5.1 → 0.6.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: 9b41be6a310cc8b7aaa40c16a079f1e93e71e942598768051287d938d6e9144b
4
- data.tar.gz: 9514391db52afe5e859e40f0966d0ffe1da6fb9357e6ab40e60c2f5ccfee9e21
3
+ metadata.gz: a3d8d6de784f9f1a04c15f727a91ffadd9eba064194b95e846c0fea063d2631c
4
+ data.tar.gz: 94504804cfae6bf5e3554c0d6954beed04e14079eac9af4dd3e2eff775cb9b49
5
5
  SHA512:
6
- metadata.gz: 5dbcc7f0763533b786d15d8dd7c808d7978068ec6acdc098643d8b3bc6b81cd1bac58a2eddc3bed90620f5bdd05d181a97f577c3473919632023c609775638a4
7
- data.tar.gz: 21a8cbf18a1a2100282972936ec9ee5ac4ad9ca37e9238a851461bafc6962cb2ff8bdf12d08b23e02f7abc4bd57b0a5402aa7b5029836faff4b592e5dbfcef15
6
+ metadata.gz: 55ad1782e4c0e6f9689664635921e00c4e2e5f9cc7792ff1390ad5126762b7cf04cac4a11d25294a6638cf1d4c675e18cace2138e974e6cb5fc583bab0ce667b
7
+ data.tar.gz: 2bd8a3f510901a0caa289e9d654d2be77811f3dd3ee1af12f55ad13a4bd73a785f8bfc3730e06643b732f6bfc5742288462ac25234646da17dd748caf80a132c
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2024-2025 Taichi Ishitani
3
+ Copyright (c) 2024-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-veryl/actions/workflows/ci.yml/badge.svg)](https://github.com/rggen/rggen-veryl/actions/workflows/ci.yml)
3
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
- [![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::Veryl
8
8
 
@@ -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
- "rggen" = { github = "rggen/rggen-veryl-rtl", version = "0.5.0" }
46
+ "rggen" = { github = "rggen/rggen-veryl-rtl", version = "0.6.0" }
47
47
  ```
48
48
 
49
49
  ## Contact
@@ -52,13 +52,13 @@ Feedbacks, bus reports, questions and etc. are welcome! You can post them by usi
52
52
 
53
53
  * [GitHub Issue Tracker](https://github.com/rggen/rggen/issues)
54
54
  * [GitHub Discussions](https://github.com/rggen/rggen/discussions)
55
- * [Chat Room](https://gitter.im/rggen/rggen)
55
+ * [Discord](https://discord.com/invite/KWya83ZZxr)
56
56
  * [Mailing List](https://groups.google.com/d/forum/rggen)
57
57
  * [Mail](mailto:rggen@googlegroups.com)
58
58
 
59
59
  ## Copyright & License
60
60
 
61
- Copyright © 2024-2025 Taichi Ishitani. RgGen::Veryl is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
61
+ Copyright © 2024-2026 Taichi Ishitani. RgGen::Veryl is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
62
62
 
63
63
  ## Code of Conduct
64
64
 
@@ -0,0 +1,16 @@
1
+ inst u_bit_field: rggen::rggen_bit_field_counter #(
2
+ WIDTH : <%= width %>,
3
+ INITIAL_VALUE: <%= initial_value %>,
4
+ UP_WIDTH : <%= up_width %>,
5
+ DOWN_WIDTH : <%= down_width %>,
6
+ WRAP_AROUND : <%= wrap_around %>,
7
+ USE_CLEAR : <%= use_clear_value %>,
8
+ )(
9
+ i_clk : <%= clock %>,
10
+ i_rst : <%= reset %>,
11
+ bit_field_if: <%= bit_field_if %>,
12
+ i_clear : <%= clear_signal %>,
13
+ i_up : <%= up[loop_variables] %>,
14
+ i_down : <%= down[loop_variables] %>,
15
+ o_count : <%= count[loop_variables] %>,
16
+ );
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:bit_field, :type, :counter) do
4
+ veryl do
5
+ build do
6
+ param :up_width, {
7
+ name: "#{full_name}_up_width".upcase, type: :u32, default: 1
8
+ }
9
+ param :down_width, {
10
+ name: "#{full_name}_down_width".upcase, type: :u32, default: 1
11
+ }
12
+ param :wrap_around, {
13
+ name: "#{full_name}_wrap_around".upcase, type: :bool, default: false
14
+ }
15
+ if external_clear?
16
+ param :use_clear, {
17
+ name: "#{full_name}_use_clear".upcase, type: :bool, default: true
18
+ }
19
+ end
20
+
21
+ input :up, {
22
+ name: "i_#{full_name}_up",
23
+ width: function_call(:clip_width, [up_width]), array_size:
24
+ }
25
+ input :down, {
26
+ name: "i_#{full_name}_down",
27
+ width: function_call(: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,15 @@
1
+ inst u_register: rggen::rggen_maskable_register #(
2
+ READABLE: <%= readable? %>,
3
+ WRITABLE: <%= writable? %>,
4
+ ADDRESS_WIDTH: <%= address_width %>,
5
+ OFFSET_ADDRESS: <%= offset_address %>,
6
+ BUS_WIDTH: <%= bus_width %>,
7
+ DATA_WIDTH: <%= width %>,
8
+ VALUE_WIDTH: <%= value_width %>,
9
+ VALID_BITS: <%= valid_bits %>
10
+ )(
11
+ i_clk: <%= register_block.clock %>,
12
+ i_rst: <%= register_block.reset %>,
13
+ register_if: <%= register_if %>,
14
+ bit_field_if: <%= bit_field_if %>
15
+ );
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:register, :type, :maskable) do
4
+ veryl do
5
+ main_code :register, from_template: true
6
+ end
7
+ end
@@ -23,7 +23,9 @@ RgGen.define_simple_feature(:register_block, :veryl_top) do
23
23
  write_file '<%= register_block.name %>.veryl' do |f|
24
24
  f.body do |code|
25
25
  code << module_definition(register_block.name) do |m|
26
+ m.attributes attributes
26
27
  m.package_imports packages
28
+ m.generics generics
27
29
  m.params params
28
30
  m.ports ports
29
31
  m.variables variables
@@ -46,10 +48,18 @@ RgGen.define_simple_feature(:register_block, :veryl_top) do
46
48
  register_block.bus_width
47
49
  end
48
50
 
51
+ def attributes
52
+ { fmt: :skip }
53
+ end
54
+
49
55
  def packages
50
56
  ['rggen::rggen_rtl_pkg', *register_block.package_imports(:register_block)]
51
57
  end
52
58
 
59
+ def generics
60
+ register_block.declarations[:generic]
61
+ end
62
+
53
63
  def params
54
64
  register_block.declarations[:parameter]
55
65
  end
@@ -4,6 +4,8 @@ module RgGen
4
4
  module Veryl
5
5
  module Utility
6
6
  class Modport < SystemVerilog::Common::Utility::InterfacePort
7
+ define_attribute :generics
8
+
7
9
  def declaration
8
10
  [
9
11
  "#{name}:",
@@ -15,7 +17,13 @@ module RgGen
15
17
  private
16
18
 
17
19
  def port_type
18
- "#{@interface_type}::#{@modport_name}#{array_size_notation}"
20
+ "#{@interface_type}#{generics_notation}::#{@modport_name}#{array_size_notation}"
21
+ end
22
+
23
+ def generics_notation
24
+ return unless @generics
25
+
26
+ "::<#{@generics.join(', ')}>"
19
27
  end
20
28
 
21
29
  def array_size_notation
@@ -5,6 +5,7 @@ module RgGen
5
5
  module Utility
6
6
  class ModuleDefinition < SystemVerilog::Common::Utility::StructureDefinition
7
7
  define_attribute :name
8
+ define_attribute :attributes
8
9
  define_attribute :package_imports
9
10
  define_attribute :generics
10
11
  define_attribute :params
@@ -14,7 +15,7 @@ module RgGen
14
15
  private
15
16
 
16
17
  def header_code(code)
17
- package_import_declaration(code)
18
+ attribute_declarations(code)
18
19
  module_header_begin(code)
19
20
  generic_declarations(code)
20
21
  param_declarations(code)
@@ -22,9 +23,9 @@ module RgGen
22
23
  module_header_end(code)
23
24
  end
24
25
 
25
- def package_import_declaration(code)
26
- package_imports&.each do |package|
27
- code << "import #{package}::*;" << nl
26
+ def attribute_declarations(code)
27
+ attributes&.each do |name, value|
28
+ code << "#[#{name}(#{value})]" << nl
28
29
  end
29
30
  end
30
31
 
@@ -65,7 +66,14 @@ module RgGen
65
66
  code << '{' << nl
66
67
  end
67
68
 
69
+ def package_import_declaration(code)
70
+ package_imports&.each do |package|
71
+ code << "import #{package}::*;" << nl
72
+ end
73
+ end
74
+
68
75
  def pre_body_code(code)
76
+ package_import_declaration(code)
69
77
  add_declarations_to_body(code, Array(variables))
70
78
  end
71
79
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module Veryl
5
- VERSION = '0.5.1'
5
+ VERSION = '0.6.0'
6
6
  end
7
7
  end
data/lib/rggen/veryl.rb CHANGED
@@ -36,9 +36,11 @@ RgGen.setup_plugin :'rggen-veryl' do |plugin|
36
36
  'veryl/register/type',
37
37
  'veryl/register/type/external',
38
38
  'veryl/register/type/indirect',
39
+ 'veryl/register/type/maskable',
39
40
  'veryl/register/type/rw',
40
41
  'veryl/bit_field/veryl_top',
41
42
  'veryl/bit_field/type',
43
+ 'veryl/bit_field/type/counter',
42
44
  'veryl/bit_field/type/custom',
43
45
  'veryl/bit_field/type/rc_w0c_w1c_wc_woc',
44
46
  'veryl/bit_field/type/ro_rotrg',
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.5.1
4
+ version: 0.6.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: Veryl writer plugin for RgGen
27
27
  email:
28
28
  - rggen@googlegroups.com
@@ -36,6 +36,8 @@ files:
36
36
  - lib/rggen/veryl.rb
37
37
  - lib/rggen/veryl/bit_field/common.erb
38
38
  - lib/rggen/veryl/bit_field/type.rb
39
+ - lib/rggen/veryl/bit_field/type/counter.erb
40
+ - lib/rggen/veryl/bit_field/type/counter.rb
39
41
  - lib/rggen/veryl/bit_field/type/custom.erb
40
42
  - lib/rggen/veryl/bit_field/type/custom.rb
41
43
  - lib/rggen/veryl/bit_field/type/rc_w0c_w1c_wc_woc.erb
@@ -82,6 +84,8 @@ files:
82
84
  - lib/rggen/veryl/register/type/external.rb
83
85
  - lib/rggen/veryl/register/type/indirect.erb
84
86
  - lib/rggen/veryl/register/type/indirect.rb
87
+ - lib/rggen/veryl/register/type/maskable.erb
88
+ - lib/rggen/veryl/register/type/maskable.rb
85
89
  - lib/rggen/veryl/register/type/rw.erb
86
90
  - lib/rggen/veryl/register/type/rw.rb
87
91
  - lib/rggen/veryl/register/veryl_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-veryl-0.5.1
139
+ summary: rggen-veryl-0.6.0
136
140
  test_files: []