rggen-verilog 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/rggen/verilog/rtl/bit_field/type.rb +5 -4
- data/lib/rggen/verilog/rtl/bit_field/verilog_top.rb +10 -9
- data/lib/rggen/verilog/rtl/register_block/protocol/avalon.erb +32 -0
- data/lib/rggen/verilog/rtl/register_block/protocol/avalon.rb +34 -0
- data/lib/rggen/verilog/rtl/register_block/protocol/native.erb +1 -0
- data/lib/rggen/verilog/rtl/register_block/protocol/native.rb +3 -0
- data/lib/rggen/verilog/version.rb +1 -1
- data/lib/rggen/verilog.rb +1 -0
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17ad07e3cc71d30ed31d55a9221a7b2f9d258affbeccf2579f5edb69c8d5afae
|
4
|
+
data.tar.gz: f0be0a0ae406237db5afbd407ec5975b4d06ede79776209dd9196f8eeff64f24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1819a36b2dab2e3ed36f3fdb9da9d283518dad03f123386eb1c6621f640bfd23c3aa7c1b2608a699140dbde9fe30d7fa5144ad5961abcadc881257b40ce88d9
|
7
|
+
data.tar.gz: a49180376e08f244a4e66c77fbf03a700f6e9d4d3ce7af0147a0e2a88a95216d346359a9a151daa2fa8045bcafa33a53783ddf4484bdb8ab3eb7a5bd1dad2c0b
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
[![Gem Version](https://badge.fury.io/rb/rggen-verilog.svg)](https://badge.fury.io/rb/rggen-verilog)
|
2
2
|
[![CI](https://github.com/rggen/rggen-verilog/workflows/CI/badge.svg)](https://github.com/rggen/rggen-verilog/actions?query=workflow%3ACI)
|
3
|
-
[![Maintainability](https://
|
3
|
+
[![Maintainability](https://qlty.sh/badges/93f1f04b-d863-4f44-a968-2f2721a8f3de/maintainability.svg)](https://qlty.sh/gh/rggen/projects/rggen-verilog)
|
4
4
|
[![codecov](https://codecov.io/gh/rggen/rggen-verilog/branch/master/graph/badge.svg)](https://codecov.io/gh/rggen/rggen-verilog)
|
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
|
|
@@ -23,8 +23,8 @@ RgGen.define_list_feature(:bit_field, :type) do
|
|
23
23
|
|
24
24
|
def initial_value
|
25
25
|
if multiple_initial_values?
|
26
|
-
index = bit_field.
|
27
|
-
total_bits = width *
|
26
|
+
index = bit_field.flat_loop_index
|
27
|
+
total_bits = width * array_size.inject(:*)
|
28
28
|
macro_call('rggen_slice', [bit_field.initial_value, total_bits, width, index])
|
29
29
|
else
|
30
30
|
bit_field.initial_value
|
@@ -32,7 +32,8 @@ RgGen.define_list_feature(:bit_field, :type) do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def multiple_initial_values?
|
35
|
-
bit_field.initial_value_array? &&
|
35
|
+
bit_field.initial_value_array? &&
|
36
|
+
(array_size.size > 1 || array_size.first > 1)
|
36
37
|
end
|
37
38
|
|
38
39
|
def clock
|
@@ -75,7 +76,7 @@ RgGen.define_list_feature(:bit_field, :type) do
|
|
75
76
|
bit_field.reference? &&
|
76
77
|
bit_field
|
77
78
|
.find_reference(register_block.bit_fields)
|
78
|
-
.value(bit_field.
|
79
|
+
.value(bit_field.local_indexes, bit_field.reference_width)
|
79
80
|
end
|
80
81
|
|
81
82
|
def loop_variables
|
@@ -11,7 +11,7 @@ RgGen.define_simple_feature(:bit_field, :verilog_top) do
|
|
11
11
|
if parameterized_initial_value?
|
12
12
|
parameter :initial_value, {
|
13
13
|
name: initial_value_name, width: bit_field.width,
|
14
|
-
array_size:
|
14
|
+
array_size: initial_value_size, default: initial_value_rhs
|
15
15
|
}
|
16
16
|
else
|
17
17
|
define_accessor_for_initial_value
|
@@ -34,7 +34,7 @@ RgGen.define_simple_feature(:bit_field, :verilog_top) do
|
|
34
34
|
private
|
35
35
|
|
36
36
|
def register_value(offsets, lsb, width)
|
37
|
-
index = register.index(offsets || register.
|
37
|
+
index = register.index(offsets || register.local_indexes)
|
38
38
|
register_block.register_value[[index], lsb, width]
|
39
39
|
end
|
40
40
|
|
@@ -52,8 +52,8 @@ RgGen.define_simple_feature(:bit_field, :verilog_top) do
|
|
52
52
|
"#{bit_field.full_name('_')}_initial_value".upcase
|
53
53
|
end
|
54
54
|
|
55
|
-
def
|
56
|
-
bit_field.initial_value_array? &&
|
55
|
+
def initial_value_size
|
56
|
+
bit_field.initial_value_array? && array_size || nil
|
57
57
|
end
|
58
58
|
|
59
59
|
def initial_value_rhs
|
@@ -62,7 +62,8 @@ RgGen.define_simple_feature(:bit_field, :verilog_top) do
|
|
62
62
|
elsif bit_field.fixed_initial_value?
|
63
63
|
merged_initial_values
|
64
64
|
else
|
65
|
-
|
65
|
+
size = array_size.inject(:*)
|
66
|
+
repeat(size, sized_initial_value)
|
66
67
|
end
|
67
68
|
end
|
68
69
|
|
@@ -71,12 +72,12 @@ RgGen.define_simple_feature(:bit_field, :verilog_top) do
|
|
71
72
|
end
|
72
73
|
|
73
74
|
def merged_initial_values
|
74
|
-
|
75
|
-
|
76
|
-
|
75
|
+
initial_values = bit_field.initial_values(flatten: true)
|
76
|
+
merged_value =
|
77
|
+
initial_values
|
77
78
|
.map.with_index { |v, i| v << (i * bit_field.width) }
|
78
79
|
.inject(:|)
|
79
|
-
hex(
|
80
|
+
hex(merged_value, bit_field.width * initial_values.size)
|
80
81
|
end
|
81
82
|
|
82
83
|
def loop_size
|
@@ -0,0 +1,32 @@
|
|
1
|
+
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
|
+
) u_adapter (
|
13
|
+
.i_clk (<%= register_block.clock %>),
|
14
|
+
.i_rst_n (<%= register_block.reset %>),
|
15
|
+
.i_read (<%= read %>),
|
16
|
+
.i_write (<%= write %>),
|
17
|
+
.i_address (<%= address %>),
|
18
|
+
.i_byteenable (<%= byteenable %>),
|
19
|
+
.i_writedata (<%= writedata %>),
|
20
|
+
.o_waitrequest (<%= waitrequest %>),
|
21
|
+
.o_response (<%= response %>),
|
22
|
+
.o_readdata (<%= readdata %>),
|
23
|
+
.o_register_valid (<%= register_block.register_valid %>),
|
24
|
+
.o_register_access (<%= register_block.register_access %>),
|
25
|
+
.o_register_address (<%= register_block.register_address %>),
|
26
|
+
.o_register_write_data (<%= register_block.register_write_data %>),
|
27
|
+
.o_register_strobe (<%= register_block.register_strobe %>),
|
28
|
+
.i_register_active (<%= register_block.register_active %>),
|
29
|
+
.i_register_ready (<%= register_block.register_ready %>),
|
30
|
+
.i_register_status (<%= register_block.register_status %>),
|
31
|
+
.i_register_read_data (<%= register_block.register_read_data %>)
|
32
|
+
);
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RgGen.define_list_item_feature(:register_block, :protocol, :avalon) do
|
4
|
+
verilog_rtl do
|
5
|
+
build do
|
6
|
+
input :read, {
|
7
|
+
name: 'i_read', width: 1
|
8
|
+
}
|
9
|
+
input :write, {
|
10
|
+
name: 'i_write', width: 1
|
11
|
+
}
|
12
|
+
input :address, {
|
13
|
+
name: 'i_address', width: address_width
|
14
|
+
}
|
15
|
+
input :byteenable, {
|
16
|
+
name: 'i_byteenable', width: bus_width / 8
|
17
|
+
}
|
18
|
+
input :writedata, {
|
19
|
+
name: 'i_writedata', width: bus_width
|
20
|
+
}
|
21
|
+
output :waitrequest, {
|
22
|
+
name: 'o_waitrequest', width: 1
|
23
|
+
}
|
24
|
+
output :response, {
|
25
|
+
name: 'o_response', width: 2
|
26
|
+
}
|
27
|
+
output :readdata, {
|
28
|
+
name: 'o_readdata', width: bus_width
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
main_code :register_block, from_template: true
|
33
|
+
end
|
34
|
+
end
|
@@ -7,6 +7,7 @@ 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
|
parameter :strobe_width, {
|
7
7
|
name: 'STROBE_WIDTH', default: bus_width / 8
|
8
8
|
}
|
9
|
+
parameter :use_read_strobe, {
|
10
|
+
name: 'USE_READ_STROBE', default: 0
|
11
|
+
}
|
9
12
|
|
10
13
|
input :valid, {
|
11
14
|
name: 'i_csrbus_valid', width: 1
|
data/lib/rggen/verilog.rb
CHANGED
@@ -26,6 +26,7 @@ RgGen.setup_plugin :'rggen-verilog' do |plugin|
|
|
26
26
|
'verilog/rtl/register_block/protocol',
|
27
27
|
'verilog/rtl/register_block/protocol/apb',
|
28
28
|
'verilog/rtl/register_block/protocol/axi4lite',
|
29
|
+
'verilog/rtl/register_block/protocol/avalon',
|
29
30
|
'verilog/rtl/register_block/protocol/wishbone',
|
30
31
|
'verilog/rtl/register_block/protocol/native',
|
31
32
|
'verilog/rtl/register_file/verilog_top',
|
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.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taichi Ishitani
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
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.
|
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.
|
25
|
+
version: 0.35.0
|
26
26
|
description: Verilog write plugin for RgGen
|
27
27
|
email:
|
28
28
|
- rggen@googlegroups.com
|
@@ -89,6 +89,8 @@ files:
|
|
89
89
|
- lib/rggen/verilog/rtl/register_block/protocol.rb
|
90
90
|
- lib/rggen/verilog/rtl/register_block/protocol/apb.erb
|
91
91
|
- lib/rggen/verilog/rtl/register_block/protocol/apb.rb
|
92
|
+
- lib/rggen/verilog/rtl/register_block/protocol/avalon.erb
|
93
|
+
- lib/rggen/verilog/rtl/register_block/protocol/avalon.rb
|
92
94
|
- lib/rggen/verilog/rtl/register_block/protocol/axi4lite.erb
|
93
95
|
- lib/rggen/verilog/rtl/register_block/protocol/axi4lite.rb
|
94
96
|
- lib/rggen/verilog/rtl/register_block/protocol/native.erb
|
@@ -131,5 +133,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
133
|
requirements: []
|
132
134
|
rubygems_version: 3.6.2
|
133
135
|
specification_version: 4
|
134
|
-
summary: rggen-verilog-0.
|
136
|
+
summary: rggen-verilog-0.13.0
|
135
137
|
test_files: []
|