rggen-verilog 0.13.2 → 0.14.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 +3 -3
- data/lib/rggen/verilog/rtl/bit_field/type/counter.erb +21 -0
- data/lib/rggen/verilog/rtl/bit_field/type/counter.rb +63 -0
- data/lib/rggen/verilog/rtl/register/type/maskable.erb +27 -0
- data/lib/rggen/verilog/rtl/register/type/maskable.rb +7 -0
- data/lib/rggen/verilog/rtl/register_block/protocol/axi4lite.rb +4 -10
- data/lib/rggen/verilog/utility.rb +4 -0
- data/lib/rggen/verilog/version.rb +1 -1
- data/lib/rggen/verilog.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: 0f5310ae59af4bc91fc3357c4bca794f233eddda779db0ce9508adb155c8d41d
|
|
4
|
+
data.tar.gz: f735ba4dcf866cf4b5f1879953edb02ead037017cc077edb7167df4e20794942
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f73d0171b6eda65b09ce537aa08f89ec6c8a7c3b9050b84a63fada31db0713c09d93db91c0976420c4ec901320de813916f08fc8663df10dccf40dfc3c12e9e6
|
|
7
|
+
data.tar.gz: a88359f0e2b1b472d4b6e7798b0f0a93fc5258f36e96f7241886b7011cf62054005e3348de6d6d7744f5fca0e98b8f6e9f6f41f97c4be3fb75772e48533cbab9
|
data/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2020-
|
|
3
|
+
Copyright (c) 2020-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-verilog/actions?query=workflow%3ACI)
|
|
3
3
|
[](https://qlty.sh/gh/rggen/projects/rggen-verilog)
|
|
4
4
|
[](https://codecov.io/gh/rggen/rggen-verilog)
|
|
5
|
-
[](https://discord.com/invite/KWya83ZZxr)
|
|
6
6
|
|
|
7
7
|
# RgGen::Verilog
|
|
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
|
-
* [
|
|
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 © 2020-
|
|
71
|
+
Copyright © 2020-2026 Taichi Ishitani. RgGen::Verilog 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,21 @@
|
|
|
1
|
+
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
|
+
) u_bit_field (
|
|
9
|
+
.i_clk (<%= clock %>),
|
|
10
|
+
.i_rst_n (<%= reset %>),
|
|
11
|
+
.i_sw_read_valid (<%= bit_field_read_valid %>),
|
|
12
|
+
.i_sw_write_valid (<%= bit_field_write_valid %>),
|
|
13
|
+
.i_sw_mask (<%= bit_field_mask %>),
|
|
14
|
+
.i_sw_write_data (<%= bit_field_write_data %>),
|
|
15
|
+
.o_sw_read_data (<%= bit_field_read_data %>),
|
|
16
|
+
.o_sw_value (<%= bit_field_value %>),
|
|
17
|
+
.i_clear (<%= clear_signal %>),
|
|
18
|
+
.i_up (<%= up[loop_variables] %>),
|
|
19
|
+
.i_down (<%= down[loop_variables] %>),
|
|
20
|
+
.o_count (<%= count[loop_variables] %>)
|
|
21
|
+
);
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RgGen.define_list_item_feature(:bit_field, :type, :counter) do
|
|
4
|
+
verilog_rtl do
|
|
5
|
+
build do
|
|
6
|
+
parameter :up_width, {
|
|
7
|
+
name: "#{full_name}_up_width".upcase, default: 1
|
|
8
|
+
}
|
|
9
|
+
parameter :up_port_width, {
|
|
10
|
+
name: "#{full_name}_up_port_width".upcase,
|
|
11
|
+
default: macro_call(:rggen_clip_width, up_width)
|
|
12
|
+
}
|
|
13
|
+
parameter :down_width, {
|
|
14
|
+
name: "#{full_name}_down_width".upcase, default: 1
|
|
15
|
+
}
|
|
16
|
+
parameter :down_port_width, {
|
|
17
|
+
name: "#{full_name}_down_port_width".upcase,
|
|
18
|
+
default: macro_call(:rggen_clip_width, down_width)
|
|
19
|
+
}
|
|
20
|
+
parameter :wrap_around, {
|
|
21
|
+
name: "#{full_name}_wrap_around".upcase, default: 0
|
|
22
|
+
}
|
|
23
|
+
if external_clear?
|
|
24
|
+
parameter :use_clear, {
|
|
25
|
+
name: "#{full_name}_use_clear".upcase, default: 1
|
|
26
|
+
}
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
input :up, {
|
|
30
|
+
name: "i_#{full_name}_up",
|
|
31
|
+
width: up_port_width, array_size:
|
|
32
|
+
}
|
|
33
|
+
input :down, {
|
|
34
|
+
name: "i_#{full_name}_down",
|
|
35
|
+
width: down_port_width, array_size:
|
|
36
|
+
}
|
|
37
|
+
if external_clear?
|
|
38
|
+
input :clear, {
|
|
39
|
+
name: "i_#{full_name}_clear", width: 1, array_size:
|
|
40
|
+
}
|
|
41
|
+
end
|
|
42
|
+
output :count, {
|
|
43
|
+
name: "o_#{full_name}", width:, array_size:
|
|
44
|
+
}
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
main_code :bit_field, from_template: true
|
|
48
|
+
|
|
49
|
+
private
|
|
50
|
+
|
|
51
|
+
def external_clear?
|
|
52
|
+
!bit_field.reference?
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def use_clear_value
|
|
56
|
+
external_clear? && use_clear || 1
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def clear_signal
|
|
60
|
+
reference_bit_field || clear[loop_variables]
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
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
|
+
) u_register (
|
|
9
|
+
.i_clk (<%= clock %>),
|
|
10
|
+
.i_rst_n (<%= reset %>),
|
|
11
|
+
.i_register_valid (<%= register_valid %>),
|
|
12
|
+
.i_register_access (<%= register_access %>),
|
|
13
|
+
.i_register_address (<%= register_address %>),
|
|
14
|
+
.i_register_write_data (<%= register_write_data %>),
|
|
15
|
+
.i_register_strobe (<%= register_strobe %>),
|
|
16
|
+
.o_register_active (<%= register_active %>),
|
|
17
|
+
.o_register_ready (<%= register_ready %>),
|
|
18
|
+
.o_register_status (<%= register_status %>),
|
|
19
|
+
.o_register_read_data (<%= register_read_data %>),
|
|
20
|
+
.o_register_value (<%= register_value %>),
|
|
21
|
+
.o_bit_field_read_valid (<%= bit_field_read_valid %>),
|
|
22
|
+
.o_bit_field_write_valid (<%= bit_field_write_valid %>),
|
|
23
|
+
.o_bit_field_mask (<%= bit_field_mask %>),
|
|
24
|
+
.o_bit_field_write_data (<%= bit_field_write_data %>),
|
|
25
|
+
.i_bit_field_read_data (<%= bit_field_read_data %>),
|
|
26
|
+
.i_bit_field_value (<%= bit_field_value %>)
|
|
27
|
+
);
|
|
@@ -17,7 +17,7 @@ RgGen.define_list_item_feature(:register_block, :protocol, :axi4lite) do
|
|
|
17
17
|
name: 'o_awready', width: 1
|
|
18
18
|
}
|
|
19
19
|
input :awid, {
|
|
20
|
-
name: 'i_awid', width:
|
|
20
|
+
name: 'i_awid', width: macro_call(:rggen_clip_width, id_width)
|
|
21
21
|
}
|
|
22
22
|
input :awaddr, {
|
|
23
23
|
name: 'i_awaddr', width: address_width
|
|
@@ -44,7 +44,7 @@ RgGen.define_list_item_feature(:register_block, :protocol, :axi4lite) do
|
|
|
44
44
|
name: 'i_bready', width: 1
|
|
45
45
|
}
|
|
46
46
|
output :bid, {
|
|
47
|
-
name: 'o_bid', width:
|
|
47
|
+
name: 'o_bid', width: macro_call(:rggen_clip_width, id_width)
|
|
48
48
|
}
|
|
49
49
|
output :bresp, {
|
|
50
50
|
name: 'o_bresp', width: 2
|
|
@@ -56,7 +56,7 @@ RgGen.define_list_item_feature(:register_block, :protocol, :axi4lite) do
|
|
|
56
56
|
name: 'o_arready', width: 1
|
|
57
57
|
}
|
|
58
58
|
input :arid, {
|
|
59
|
-
name: 'i_arid', width:
|
|
59
|
+
name: 'i_arid', width: macro_call(:rggen_clip_width, id_width)
|
|
60
60
|
}
|
|
61
61
|
input :araddr, {
|
|
62
62
|
name: 'i_araddr', width: address_width
|
|
@@ -71,7 +71,7 @@ RgGen.define_list_item_feature(:register_block, :protocol, :axi4lite) do
|
|
|
71
71
|
name: 'i_rready', width: 1
|
|
72
72
|
}
|
|
73
73
|
output :rid, {
|
|
74
|
-
name: 'o_rid', width:
|
|
74
|
+
name: 'o_rid', width: macro_call(:rggen_clip_width, id_width)
|
|
75
75
|
}
|
|
76
76
|
output :rdata, {
|
|
77
77
|
name: 'o_rdata', width: bus_width
|
|
@@ -82,11 +82,5 @@ RgGen.define_list_item_feature(:register_block, :protocol, :axi4lite) do
|
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
main_code :register_block, from_template: true
|
|
85
|
-
|
|
86
|
-
private
|
|
87
|
-
|
|
88
|
-
def id_width_value
|
|
89
|
-
"((#{id_width} == 0) ? 1 : #{id_width})"
|
|
90
|
-
end
|
|
91
85
|
end
|
|
92
86
|
end
|
data/lib/rggen/verilog.rb
CHANGED
|
@@ -34,9 +34,11 @@ RgGen.setup_plugin :'rggen-verilog' do |plugin|
|
|
|
34
34
|
'verilog/rtl/register/type',
|
|
35
35
|
'verilog/rtl/register/type/external',
|
|
36
36
|
'verilog/rtl/register/type/indirect',
|
|
37
|
+
'verilog/rtl/register/type/maskable',
|
|
37
38
|
'verilog/rtl/register/type/rw',
|
|
38
39
|
'verilog/rtl/bit_field/verilog_top',
|
|
39
40
|
'verilog/rtl/bit_field/type',
|
|
41
|
+
'verilog/rtl/bit_field/type/counter',
|
|
40
42
|
'verilog/rtl/bit_field/type/custom',
|
|
41
43
|
'verilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc',
|
|
42
44
|
'verilog/rtl/bit_field/type/ro_rotrg',
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rggen-verilog
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.14.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: Verilog write plugin for RgGen
|
|
27
27
|
email:
|
|
28
28
|
- rggen@googlegroups.com
|
|
@@ -38,6 +38,8 @@ files:
|
|
|
38
38
|
- lib/rggen/verilog/register_map/keyword_checker.rb
|
|
39
39
|
- lib/rggen/verilog/register_map/name.rb
|
|
40
40
|
- lib/rggen/verilog/rtl/bit_field/type.rb
|
|
41
|
+
- lib/rggen/verilog/rtl/bit_field/type/counter.erb
|
|
42
|
+
- lib/rggen/verilog/rtl/bit_field/type/counter.rb
|
|
41
43
|
- lib/rggen/verilog/rtl/bit_field/type/custom.erb
|
|
42
44
|
- lib/rggen/verilog/rtl/bit_field/type/custom.rb
|
|
43
45
|
- lib/rggen/verilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.erb
|
|
@@ -83,6 +85,8 @@ files:
|
|
|
83
85
|
- lib/rggen/verilog/rtl/register/type/external.rb
|
|
84
86
|
- lib/rggen/verilog/rtl/register/type/indirect.erb
|
|
85
87
|
- lib/rggen/verilog/rtl/register/type/indirect.rb
|
|
88
|
+
- lib/rggen/verilog/rtl/register/type/maskable.erb
|
|
89
|
+
- lib/rggen/verilog/rtl/register/type/maskable.rb
|
|
86
90
|
- lib/rggen/verilog/rtl/register/type/rw.erb
|
|
87
91
|
- lib/rggen/verilog/rtl/register/type/rw.rb
|
|
88
92
|
- lib/rggen/verilog/rtl/register/verilog_top.rb
|
|
@@ -124,14 +128,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
124
128
|
requirements:
|
|
125
129
|
- - ">="
|
|
126
130
|
- !ruby/object:Gem::Version
|
|
127
|
-
version: '3.
|
|
131
|
+
version: '3.2'
|
|
128
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
133
|
requirements:
|
|
130
134
|
- - ">="
|
|
131
135
|
- !ruby/object:Gem::Version
|
|
132
136
|
version: '0'
|
|
133
137
|
requirements: []
|
|
134
|
-
rubygems_version:
|
|
138
|
+
rubygems_version: 4.0.3
|
|
135
139
|
specification_version: 4
|
|
136
|
-
summary: rggen-verilog-0.
|
|
140
|
+
summary: rggen-verilog-0.14.0
|
|
137
141
|
test_files: []
|