rggen-veryl 0.5.2 → 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 +4 -4
- data/LICENSE +1 -1
- data/README.md +4 -4
- data/lib/rggen/veryl/bit_field/type/counter.erb +16 -0
- data/lib/rggen/veryl/bit_field/type/counter.rb +55 -0
- data/lib/rggen/veryl/register/type/maskable.erb +15 -0
- data/lib/rggen/veryl/register/type/maskable.rb +7 -0
- data/lib/rggen/veryl/register_block/veryl_top.rb +5 -0
- data/lib/rggen/veryl/utility/modport.rb +9 -1
- data/lib/rggen/veryl/version.rb +1 -1
- data/lib/rggen/veryl.rb +2 -0
- metadata +11 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a3d8d6de784f9f1a04c15f727a91ffadd9eba064194b95e846c0fea063d2631c
|
|
4
|
+
data.tar.gz: 94504804cfae6bf5e3554c0d6954beed04e14079eac9af4dd3e2eff775cb9b49
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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-
|
|
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
|
[](https://github.com/rggen/rggen-veryl/actions/workflows/ci.yml)
|
|
3
3
|
[](https://qlty.sh/gh/rggen/projects/rggen-veryl)
|
|
4
4
|
[](https://codecov.io/gh/rggen/rggen-veryl)
|
|
5
|
-
[](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.
|
|
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
|
-
* [
|
|
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-
|
|
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
|
+
);
|
|
@@ -25,6 +25,7 @@ RgGen.define_simple_feature(:register_block, :veryl_top) do
|
|
|
25
25
|
code << module_definition(register_block.name) do |m|
|
|
26
26
|
m.attributes attributes
|
|
27
27
|
m.package_imports packages
|
|
28
|
+
m.generics generics
|
|
28
29
|
m.params params
|
|
29
30
|
m.ports ports
|
|
30
31
|
m.variables variables
|
|
@@ -55,6 +56,10 @@ RgGen.define_simple_feature(:register_block, :veryl_top) do
|
|
|
55
56
|
['rggen::rggen_rtl_pkg', *register_block.package_imports(:register_block)]
|
|
56
57
|
end
|
|
57
58
|
|
|
59
|
+
def generics
|
|
60
|
+
register_block.declarations[:generic]
|
|
61
|
+
end
|
|
62
|
+
|
|
58
63
|
def params
|
|
59
64
|
register_block.declarations[:parameter]
|
|
60
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
|
data/lib/rggen/veryl/version.rb
CHANGED
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.
|
|
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:
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|
|
137
|
+
rubygems_version: 4.0.3
|
|
134
138
|
specification_version: 4
|
|
135
|
-
summary: rggen-veryl-0.
|
|
139
|
+
summary: rggen-veryl-0.6.0
|
|
136
140
|
test_files: []
|