rggen-vhdl 0.11.0 → 0.12.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: abc5a2ebbca59bbc2bb69a1419edfebf28f65c8649bf51a855fc1131cb211aaf
4
- data.tar.gz: '07536832610babc6a8e5dabb3112d452fa9f3e55195e13a618b2ba34cda8880e'
3
+ metadata.gz: edbd44db38f168ab2cd534bc30faa2293d6bb8dbcd7a7487dc6ce3cbecd2c7b0
4
+ data.tar.gz: 25e25403b17fc5e0b6e5e496d2b0f8ddd2f98bac26a309b9c1e92b5c13a3e24c
5
5
  SHA512:
6
- metadata.gz: 72d0c5ce29e1b5b3f0e4ca26dd6ed6b0b3d5eabab011c2b9cf5e4fb56b96def26383f079a187a4a5c3035c2f12d3d717396a9790b7539ec20ccbb757231550b5
7
- data.tar.gz: f572366eca82a4b4ed2390cf3253bb037f752e90294ffbda4098dcd06c2334611ce23c51e7e91958b0ccff0e1efad78dfb44c625bbf1e348c3941d2a4603a3c2
6
+ metadata.gz: 7c5f7516558ff09c5f6bd0420a1c6f2cc0403020a50546c57a40714266d287949b0ce00f4c41ef4dc1963c5e40916dd2f00b3a79792f5d7d99b8aceaf4b1f97e
7
+ data.tar.gz: 60a4f71b679d097e29458435c5ebeedd45938a89bb8cdbf67d80937324f63aad3d0470800352af9eb9659e35be20ad0b72d2ffdec7a67f39ab35b56efcaad78c
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/rggen-vhdl.svg)](https://badge.fury.io/rb/rggen-vhdl)
2
2
  [![CI](https://github.com/rggen/rggen-vhdl/actions/workflows/ci.yml/badge.svg)](https://github.com/rggen/rggen-vhdl/actions/workflows/ci.yml)
3
- [![Maintainability](https://api.codeclimate.com/v1/badges/d30b2c06ae3d7c0f254a/maintainability)](https://codeclimate.com/github/rggen/rggen-vhdl/maintainability)
3
+ [![Maintainability](https://qlty.sh/badges/d3e167e0-16f0-4170-ae4a-10ccc3dcdcb5/maintainability.svg)](https://qlty.sh/gh/rggen/projects/rggen-vhdl)
4
4
  [![codecov](https://codecov.io/gh/rggen/rggen-vhdl/branch/master/graph/badge.svg?token=cyo9R4xCje)](https://codecov.io/gh/rggen/rggen-vhdl)
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
 
@@ -26,7 +26,7 @@ RgGen.define_list_feature(:bit_field, :type) do
26
26
  end
27
27
 
28
28
  def initial_value
29
- index = bit_field.initial_value_array? && bit_field.local_index || 0
29
+ index = bit_field.initial_value_array? && bit_field.flat_loop_index || 0
30
30
  "slice(#{bit_field.initial_value}, #{width}, #{index})"
31
31
  end
32
32
 
@@ -70,7 +70,7 @@ RgGen.define_list_feature(:bit_field, :type) do
70
70
  bit_field.reference? &&
71
71
  bit_field
72
72
  .find_reference(register_block.bit_fields)
73
- .value(bit_field.local_indices, bit_field.reference_width)
73
+ .value(bit_field.local_indexes, bit_field.reference_width)
74
74
  end
75
75
 
76
76
  def loop_variables
@@ -43,15 +43,17 @@ RgGen.define_simple_feature(:bit_field, :vhdl_top) do
43
43
 
44
44
  def initial_value_width
45
45
  width = bit_field.width
46
- repeat_size = bit_field.sequence_size || 1
47
- width * repeat_size
46
+ width * initial_value_repeat_size
48
47
  end
49
48
 
50
49
  def default_initial_value
51
50
  width = bit_field.width
52
- repeat_size = bit_field.sequence_size || 1
53
51
  value = initial_value_rhs_default
54
- "repeat(#{value}, #{width}, #{repeat_size})"
52
+ "repeat(#{value}, #{width}, #{initial_value_repeat_size})"
53
+ end
54
+
55
+ def initial_value_repeat_size
56
+ array_size&.inject(:*) || 1
55
57
  end
56
58
 
57
59
  def define_accessor_for_initial_value
@@ -70,14 +72,15 @@ RgGen.define_simple_feature(:bit_field, :vhdl_top) do
70
72
 
71
73
  def array_initial_value_rhs
72
74
  value =
73
- bit_field.initial_values
75
+ bit_field
76
+ .initial_values(flatten: true)
74
77
  .map.with_index { |v, i| v << bit_field.width * i }
75
78
  .inject(:|)
76
- hex(value, bit_field.sequence_size * bit_field.width)
79
+ hex(value, initial_value_width)
77
80
  end
78
81
 
79
82
  def register_value(offsets, lsb, width)
80
- index = register.index(offsets || register.local_indices)
83
+ index = register.index(offsets || register.local_indexes)
81
84
  register_block.register_value[[index], lsb, width]
82
85
  end
83
86
 
@@ -0,0 +1,33 @@
1
+ u_adapter: entity <%= library_name %>.rggen_avalon_adapter
2
+ generic map (
3
+ ADDRESS_WIDTH => <%= address_width %>,
4
+ LOCAL_ADDRESS_WIDTH => <%= local_address_width %>,
5
+ BUS_WIDTH => <%= bus_width %>,
6
+ REGISTERS => <%= total_registers %>,
7
+ PRE_DECODE => <%= pre_decode %>,
8
+ BASE_ADDRESS => <%= base_address %>,
9
+ BYTE_SIZE => <%= byte_size %>,
10
+ ERROR_STATUS => <%= error_status %>,
11
+ INSERT_SLICER => <%= insert_slicer %>
12
+ )
13
+ port map (
14
+ i_clk => <%= register_block.clock %>,
15
+ i_rst_n => <%= register_block.reset %>,
16
+ i_read => <%= read %>,
17
+ i_write => <%= write %>,
18
+ i_address => <%= address %>,
19
+ i_byteenable => <%= byteenable %>,
20
+ i_writedata => <%= writedata %>,
21
+ o_waitrequest => <%= waitrequest %>,
22
+ o_response => <%= response %>,
23
+ o_readdata => <%= readdata %>,
24
+ o_register_valid => <%= register_block.register_valid %>,
25
+ o_register_access => <%= register_block.register_access %>,
26
+ o_register_address => <%= register_block.register_address %>,
27
+ o_register_write_data => <%= register_block.register_write_data %>,
28
+ o_register_strobe => <%= register_block.register_strobe %>,
29
+ i_register_active => <%= register_block.register_active %>,
30
+ i_register_ready => <%= register_block.register_ready %>,
31
+ i_register_status => <%= register_block.register_status %>,
32
+ i_register_read_data => <%= register_block.register_read_data %>
33
+ );
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ RgGen.define_list_item_feature(:register_block, :protocol, :avalon) do
4
+ vhdl do
5
+ build do
6
+ input :read, {
7
+ name: 'i_read'
8
+ }
9
+ input :write, {
10
+ name: 'i_write'
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'
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
@@ -8,6 +8,7 @@ u_adapter: entity <%= library_name %>.rggen_native_adapter
8
8
  PRE_DECODE => <%= pre_decode %>,
9
9
  BASE_ADDRESS => <%= base_address %>,
10
10
  BYTE_SIZE => <%= byte_size %>,
11
+ USE_READ_STROBE => <%= use_read_strobe %>,
11
12
  ERROR_STATUS => <%= error_status %>,
12
13
  INSERT_SLICER => <%= insert_slicer %>
13
14
  )
@@ -6,6 +6,9 @@ RgGen.define_list_item_feature(:register_block, :protocol, :native) do
6
6
  generic :strobe_width, {
7
7
  name: 'STROBE_WIDTH', type: :positive, default: bus_width / 8
8
8
  }
9
+ generic :use_read_strobe, {
10
+ name: 'USE_READ_STROBE', type: :boolean, default: false
11
+ }
9
12
 
10
13
  input :valid, { name: 'i_csrbus_valid' }
11
14
  input :access, { name: 'i_csrbus_access', width: 2 }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RgGen
4
4
  module VHDL
5
- VERSION = '0.11.0'
5
+ VERSION = '0.12.0'
6
6
  end
7
7
  end
data/lib/rggen/vhdl.rb CHANGED
@@ -27,6 +27,7 @@ RgGen.setup_plugin :'rggen-vhdl' do |plugin|
27
27
  'vhdl/register_block/protocol',
28
28
  'vhdl/register_block/protocol/apb',
29
29
  'vhdl/register_block/protocol/axi4lite',
30
+ 'vhdl/register_block/protocol/avalon',
30
31
  'vhdl/register_block/protocol/wishbone',
31
32
  'vhdl/register_block/protocol/native',
32
33
  'vhdl/register_file/vhdl_top',
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rggen-vhdl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.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: VHDL writer plugin for RgGen
27
27
  email:
28
28
  - rggen@googlegroups.com
@@ -89,6 +89,8 @@ files:
89
89
  - lib/rggen/vhdl/register_block/protocol.rb
90
90
  - lib/rggen/vhdl/register_block/protocol/apb.erb
91
91
  - lib/rggen/vhdl/register_block/protocol/apb.rb
92
+ - lib/rggen/vhdl/register_block/protocol/avalon.erb
93
+ - lib/rggen/vhdl/register_block/protocol/avalon.rb
92
94
  - lib/rggen/vhdl/register_block/protocol/axi4lite.erb
93
95
  - lib/rggen/vhdl/register_block/protocol/axi4lite.rb
94
96
  - lib/rggen/vhdl/register_block/protocol/native.erb
@@ -130,5 +132,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
132
  requirements: []
131
133
  rubygems_version: 3.6.2
132
134
  specification_version: 4
133
- summary: rggen-vhdl-0.11.0
135
+ summary: rggen-vhdl-0.12.0
134
136
  test_files: []