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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e943d5242234510ca7dc87524a58c472927d1ab4e5d83daffec31e8e9a9e7185
4
- data.tar.gz: 97b1e8b731062151dea45aaf5877cf2093afff07adbb8ee72b6b552962791752
3
+ metadata.gz: 17ad07e3cc71d30ed31d55a9221a7b2f9d258affbeccf2579f5edb69c8d5afae
4
+ data.tar.gz: f0be0a0ae406237db5afbd407ec5975b4d06ede79776209dd9196f8eeff64f24
5
5
  SHA512:
6
- metadata.gz: aea251fb925158f763608cf7a006f91a5d3a1c3325ac9400f8d88a2598cd21de1985207abf92a06bf1aa15cbb6828b1949bd8e5aef65dee30fd8a0a65ba00f0e
7
- data.tar.gz: 9af48ab996bb6adeb5535ebdb85dced46e85dd84df7cbf0b73fe582ad46fe5b028eaf1ba05e50b6d024962208ef3ba8d5d5dbe1151aea1d21f84a3353d694f20
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://api.codeclimate.com/v1/badges/7a4090f4a7c21d29036c/maintainability)](https://codeclimate.com/github/rggen/rggen-verilog/maintainability)
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.local_index
27
- total_bits = width * bit_field.sequence_size
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? && bit_field.sequence_size > 1
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.local_indices, bit_field.reference_width)
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: initial_value_array_size, default: initial_value_rhs
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.local_indices)
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 initial_value_array_size
56
- bit_field.initial_value_array? && [bit_field.sequence_size] || nil
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
- repeat(bit_field.sequence_size, sized_initial_value)
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
- value =
75
- bit_field
76
- .initial_values
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(value, bit_field.width * bit_field.sequence_size)
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module Verilog
5
- VERSION = '0.12.0'
5
+ VERSION = '0.13.0'
6
6
  end
7
7
  end
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.12.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-01-23 00:00:00.000000000 Z
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.34.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.34.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.12.0
136
+ summary: rggen-verilog-0.13.0
135
137
  test_files: []