rggen-systemverilog 0.21.0 → 0.24.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 +2 -2
- data/lib/rggen/systemverilog/common.rb +0 -22
- data/lib/rggen/systemverilog/common/feature.rb +2 -2
- data/lib/rggen/systemverilog/common/utility.rb +4 -0
- data/lib/rggen/systemverilog/common/utility/identifier.rb +19 -15
- data/lib/rggen/systemverilog/ral.rb +20 -26
- data/lib/rggen/systemverilog/ral/bit_field/type.rb +1 -1
- data/lib/rggen/systemverilog/ral/setup.rb +1 -1
- data/lib/rggen/systemverilog/rtl.rb +39 -41
- data/lib/rggen/systemverilog/rtl/bit_field/sv_rtl_top.rb +10 -46
- data/lib/rggen/systemverilog/rtl/bit_field/type.rb +1 -2
- data/lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c_wc_woc.erb +19 -0
- data/lib/rggen/systemverilog/rtl/bit_field/type/{rc_w0c_w1c.rb → rc_w0c_w1c_wc_woc.rb} +22 -11
- data/lib/rggen/systemverilog/rtl/bit_field/type/reserved.erb +17 -2
- data/lib/rggen/systemverilog/rtl/bit_field/type/ro.erb +15 -4
- data/lib/rggen/systemverilog/rtl/bit_field/type/rof.erb +15 -4
- data/lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s_ws_wos.erb +19 -0
- data/lib/rggen/systemverilog/rtl/bit_field/type/{rs_w0s_w1s.rb → rs_w0s_w1s_ws_wos.rb} +21 -9
- data/lib/rggen/systemverilog/rtl/bit_field/type/rw_w1_wo_wo1.erb +15 -7
- data/lib/rggen/systemverilog/rtl/bit_field/type/rw_w1_wo_wo1.rb +2 -2
- data/lib/rggen/systemverilog/rtl/bit_field/type/rwc.erb +15 -7
- data/lib/rggen/systemverilog/rtl/bit_field/type/rwe.erb +16 -8
- data/lib/rggen/systemverilog/rtl/bit_field/type/rwl.erb +16 -8
- data/lib/rggen/systemverilog/rtl/bit_field/type/rws.erb +13 -7
- data/lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.erb +19 -0
- data/lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc.rb +37 -0
- data/lib/rggen/systemverilog/rtl/bit_field/type/w0t_w1t.erb +18 -0
- data/lib/rggen/systemverilog/rtl/bit_field/type/{w0src_w1src.rb → w0t_w1t.rb} +6 -4
- data/lib/rggen/systemverilog/rtl/bit_field/type/wrc_wrs.erb +18 -0
- data/lib/rggen/systemverilog/rtl/bit_field/type/{w0crs_w1crs.rb → wrc_wrs.rb} +6 -4
- data/lib/rggen/systemverilog/rtl/bit_field_index.rb +53 -0
- data/lib/rggen/systemverilog/rtl/indirect_index.rb +35 -0
- data/lib/rggen/systemverilog/rtl/register/type.rb +1 -56
- data/lib/rggen/systemverilog/rtl/register/type/external.rb +0 -4
- data/lib/rggen/systemverilog/rtl/register/type/indirect.rb +2 -26
- data/lib/rggen/systemverilog/rtl/register_block/protocol.rb +14 -8
- data/lib/rggen/systemverilog/rtl/register_block/protocol/axi4lite.erb +1 -0
- data/lib/rggen/systemverilog/rtl/register_block/protocol/axi4lite.rb +55 -28
- data/lib/rggen/systemverilog/rtl/register_block/sv_rtl_top.rb +1 -1
- data/lib/rggen/systemverilog/rtl/register_index.rb +4 -4
- data/lib/rggen/systemverilog/rtl/register_type.rb +68 -0
- data/lib/rggen/systemverilog/rtl/setup.rb +1 -1
- data/lib/rggen/systemverilog/version.rb +1 -1
- metadata +17 -26
- data/lib/rggen/systemverilog/rtl/bit_field/type/rc_w0c_w1c.erb +0 -15
- data/lib/rggen/systemverilog/rtl/bit_field/type/rs_w0s_w1s.erb +0 -13
- data/lib/rggen/systemverilog/rtl/bit_field/type/w0crs_w1crs.erb +0 -10
- data/lib/rggen/systemverilog/rtl/bit_field/type/w0src_w1src.erb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2cfff9e2a346d5c02dc5a6401e8b36fdd15d20b9d4d4030b5fcc56880521ccd4
|
4
|
+
data.tar.gz: 75bd4c611fa964f30df059fe39d547daf688322ed1076654744381dc38a67068
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c5e0b0b5c3352532161411d2ce6e8ca8728231377c7453953a1c1804b8c08bd134ba487264d7a63c192744278184de7923f598dfbde80096a41b6040467af45
|
7
|
+
data.tar.gz: 37a27563ccee405d16d2778728e186331bdb9a7711b73d017eb1bf3fd4479000c2bf54621dbab43b903897755a05026a3c7ae25cb68b1624cef63a250bf3eda0
|
data/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2019-
|
3
|
+
Copyright (c) 2019-2021 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
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
# RgGen::SystemVerilog
|
9
9
|
|
10
|
-
RgGen::SystemVerilog
|
10
|
+
RgGen::SystemVerilog provides SystemVerilog RTL and UVM register model (UVM RAL) generators for RgGen.
|
11
11
|
|
12
12
|
## Installation
|
13
13
|
|
@@ -34,7 +34,7 @@ Feedbacks, bug reports, questions and etc. are wellcome! You can post them by us
|
|
34
34
|
|
35
35
|
## Copyright & License
|
36
36
|
|
37
|
-
Copyright © 2019-
|
37
|
+
Copyright © 2019-2021 Taichi Ishitani. RgGen::SystemVerilog is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
|
38
38
|
|
39
39
|
## Code of Conduct
|
40
40
|
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'docile'
|
4
3
|
require 'facets/kernel/attr_singleton'
|
5
4
|
|
6
5
|
require_relative 'version'
|
@@ -21,24 +20,3 @@ require_relative 'common/utility'
|
|
21
20
|
require_relative 'common/component'
|
22
21
|
require_relative 'common/feature'
|
23
22
|
require_relative 'common/factories'
|
24
|
-
|
25
|
-
module RgGen
|
26
|
-
module SystemVerilog
|
27
|
-
module Common
|
28
|
-
def self.register_component(builder, name, feature_class)
|
29
|
-
builder.output_component_registry(name) do
|
30
|
-
register_component [
|
31
|
-
:root, :register_block, :register_file, :register, :bit_field
|
32
|
-
] do |category|
|
33
|
-
component Component, ComponentFactory
|
34
|
-
feature feature_class, FeatureFactory if category != :root
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.load_features(features, root)
|
40
|
-
features.each { |feature| require File.join(root, feature) }
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -8,7 +8,7 @@ module RgGen
|
|
8
8
|
template_engine Core::OutputBase::ERBEngine
|
9
9
|
|
10
10
|
EntityContext =
|
11
|
-
Struct.new(:entity_type, :
|
11
|
+
Struct.new(:entity_type, :method_name, :declaration_type, :default_layer)
|
12
12
|
|
13
13
|
class << self
|
14
14
|
private
|
@@ -58,7 +58,7 @@ module RgGen
|
|
58
58
|
|
59
59
|
def create_entity(context, name, attributes, &block)
|
60
60
|
merged_attributes = { name: name }.merge(Hash(attributes))
|
61
|
-
__send__(context.
|
61
|
+
__send__(context.method_name, context.entity_type, merged_attributes, &block)
|
62
62
|
end
|
63
63
|
|
64
64
|
def add_entity(context, entity, name, layer)
|
@@ -35,9 +35,9 @@ module RgGen
|
|
35
35
|
@name.to_s
|
36
36
|
end
|
37
37
|
|
38
|
-
def [](array_index_or_lsb, width = nil)
|
38
|
+
def [](array_index_or_lsb, lsb_or_width = nil, width = nil)
|
39
39
|
if array_index_or_lsb
|
40
|
-
__create_new_identifier__(array_index_or_lsb, width)
|
40
|
+
__create_new_identifier__(array_index_or_lsb, lsb_or_width, width)
|
41
41
|
else
|
42
42
|
self
|
43
43
|
end
|
@@ -45,35 +45,38 @@ module RgGen
|
|
45
45
|
|
46
46
|
private
|
47
47
|
|
48
|
-
def __create_new_identifier__(array_index_or_lsb, width)
|
49
|
-
select = __create_select__(array_index_or_lsb, width)
|
48
|
+
def __create_new_identifier__(array_index_or_lsb, lsb_or_width, width)
|
49
|
+
select = __create_select__(array_index_or_lsb, lsb_or_width, width)
|
50
50
|
Identifier.new("#{@name}#{select}") do |identifier|
|
51
51
|
identifier.__sub_identifiers__(@sub_identifiers)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
def __create_select__(array_index_or_lsb, width)
|
55
|
+
def __create_select__(array_index_or_lsb, lsb_or_width, width)
|
56
56
|
if array_index_or_lsb.is_a?(::Array)
|
57
|
-
__array_select__(array_index_or_lsb)
|
58
|
-
elsif
|
59
|
-
"[#{array_index_or_lsb}+:#{
|
57
|
+
__array_select__(array_index_or_lsb, lsb_or_width, width)
|
58
|
+
elsif lsb_or_width
|
59
|
+
"[#{array_index_or_lsb}+:#{lsb_or_width}]"
|
60
60
|
else
|
61
61
|
"[#{array_index_or_lsb}]"
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
def __array_select__(array_index)
|
65
|
+
def __array_select__(array_index, lsb, width)
|
66
66
|
if @array_format == :serialized
|
67
|
-
"[#{__serialized_lsb__(array_index)}+:#{@width}]"
|
67
|
+
"[#{__serialized_lsb__(array_index, lsb)}+:#{width || @width}]"
|
68
68
|
else
|
69
|
-
|
70
|
-
.map { |index| "[#{index}]" }
|
71
|
-
|
69
|
+
[
|
70
|
+
*array_index.map { |index| "[#{index}]" },
|
71
|
+
lsb && __create_select__(lsb, width, nil)
|
72
|
+
].compact.join
|
72
73
|
end
|
73
74
|
end
|
74
75
|
|
75
|
-
def __serialized_lsb__(array_index)
|
76
|
-
|
76
|
+
def __serialized_lsb__(array_index, lsb)
|
77
|
+
serialized_index = __serialized_index__(array_index)
|
78
|
+
array_lsb = __reduce_array__([@width, serialized_index], :*, 1)
|
79
|
+
__reduce_array__([array_lsb, lsb], :+, 0)
|
77
80
|
end
|
78
81
|
|
79
82
|
def __serialized_index__(array_index)
|
@@ -97,6 +100,7 @@ module RgGen
|
|
97
100
|
end
|
98
101
|
|
99
102
|
def __reduce_array__(array, operator, initial_value)
|
103
|
+
array = array.compact
|
100
104
|
if array.all?(&method(:integer?))
|
101
105
|
array.reduce(initial_value, &operator)
|
102
106
|
else
|
@@ -7,35 +7,29 @@ require_relative 'ral/register_common'
|
|
7
7
|
module RgGen
|
8
8
|
module SystemVerilog
|
9
9
|
module RAL
|
10
|
-
|
11
|
-
'ral/bit_field/type',
|
12
|
-
'ral/bit_field/type/reserved_rof',
|
13
|
-
'ral/bit_field/type/rwc_rws',
|
14
|
-
'ral/bit_field/type/rwe_rwl',
|
15
|
-
'ral/bit_field/type/w0trg_w1trg',
|
16
|
-
'ral/register/type',
|
17
|
-
'ral/register/type/external',
|
18
|
-
'ral/register/type/indirect',
|
19
|
-
'ral/register_block/sv_ral_model',
|
20
|
-
'ral/register_block/sv_ral_package',
|
21
|
-
'ral/register_file/sv_ral_model'
|
22
|
-
].freeze
|
10
|
+
extend Core::Plugin
|
23
11
|
|
24
|
-
|
25
|
-
SystemVerilog::VERSION
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.register_component(builder)
|
29
|
-
Common.register_component(builder, :sv_ral, Feature)
|
30
|
-
end
|
12
|
+
setup_plugin :'rggen-sv-ral' do |plugin|
|
13
|
+
plugin.version SystemVerilog::VERSION
|
31
14
|
|
32
|
-
|
33
|
-
|
34
|
-
|
15
|
+
plugin.register_component :sv_ral do
|
16
|
+
component Common::Component, Common::ComponentFactory
|
17
|
+
feature Feature, Common::FeatureFactory
|
18
|
+
end
|
35
19
|
|
36
|
-
|
37
|
-
|
38
|
-
|
20
|
+
plugin.files [
|
21
|
+
'ral/bit_field/type',
|
22
|
+
'ral/bit_field/type/reserved_rof',
|
23
|
+
'ral/bit_field/type/rwc_rws',
|
24
|
+
'ral/bit_field/type/rwe_rwl',
|
25
|
+
'ral/bit_field/type/w0trg_w1trg',
|
26
|
+
'ral/register/type',
|
27
|
+
'ral/register/type/external',
|
28
|
+
'ral/register/type/indirect',
|
29
|
+
'ral/register_block/sv_ral_model',
|
30
|
+
'ral/register_block/sv_ral_package',
|
31
|
+
'ral/register_file/sv_ral_model'
|
32
|
+
]
|
39
33
|
end
|
40
34
|
end
|
41
35
|
end
|
@@ -29,7 +29,7 @@ RgGen.define_list_feature(:bit_field, :type) do
|
|
29
29
|
|
30
30
|
def model_name
|
31
31
|
name = helper.model_name
|
32
|
-
name
|
32
|
+
name.is_a?(Proc) && instance_eval(&name) || name || :rggen_ral_field
|
33
33
|
end
|
34
34
|
|
35
35
|
def constructors
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'rggen/systemverilog/ral'
|
4
4
|
|
5
|
-
RgGen.
|
5
|
+
RgGen.register_plugin RgGen::SystemVerilog::RAL do |builder|
|
6
6
|
builder.enable :register_block, [:sv_ral_model, :sv_ral_package]
|
7
7
|
builder.enable :register_file, [:sv_ral_model]
|
8
8
|
end
|
@@ -4,54 +4,52 @@ require_relative 'common'
|
|
4
4
|
require_relative 'rtl/feature'
|
5
5
|
require_relative 'rtl/partial_sum'
|
6
6
|
require_relative 'rtl/register_index'
|
7
|
+
require_relative 'rtl/register_type'
|
8
|
+
require_relative 'rtl/indirect_index'
|
9
|
+
require_relative 'rtl/bit_field_index'
|
7
10
|
|
8
11
|
module RgGen
|
9
12
|
module SystemVerilog
|
10
13
|
module RTL
|
11
|
-
|
12
|
-
'rtl/bit_field/sv_rtl_top',
|
13
|
-
'rtl/bit_field/type',
|
14
|
-
'rtl/bit_field/type/rc_w0c_w1c',
|
15
|
-
'rtl/bit_field/type/reserved',
|
16
|
-
'rtl/bit_field/type/ro',
|
17
|
-
'rtl/bit_field/type/rof',
|
18
|
-
'rtl/bit_field/type/rs_w0s_w1s',
|
19
|
-
'rtl/bit_field/type/rw_w1_wo_wo1',
|
20
|
-
'rtl/bit_field/type/rwc',
|
21
|
-
'rtl/bit_field/type/rwe',
|
22
|
-
'rtl/bit_field/type/rwl',
|
23
|
-
'rtl/bit_field/type/rws',
|
24
|
-
'rtl/bit_field/type/w0crs_w1crs',
|
25
|
-
'rtl/bit_field/type/w0src_w1src',
|
26
|
-
'rtl/bit_field/type/w0trg_w1trg',
|
27
|
-
'rtl/global/array_port_format',
|
28
|
-
'rtl/global/fold_sv_interface_port',
|
29
|
-
'rtl/register/sv_rtl_top',
|
30
|
-
'rtl/register/type',
|
31
|
-
'rtl/register/type/external',
|
32
|
-
'rtl/register/type/indirect',
|
33
|
-
'rtl/register_block/protocol',
|
34
|
-
'rtl/register_block/protocol/apb',
|
35
|
-
'rtl/register_block/protocol/axi4lite',
|
36
|
-
'rtl/register_block/sv_rtl_top',
|
37
|
-
'rtl/register_file/sv_rtl_top'
|
38
|
-
].freeze
|
14
|
+
extend Core::Plugin
|
39
15
|
|
40
|
-
|
41
|
-
SystemVerilog::VERSION
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.register_component(builder)
|
45
|
-
Common.register_component(builder, :sv_rtl, Feature)
|
46
|
-
end
|
16
|
+
setup_plugin :'rggen-sv-rtl' do |plugin|
|
17
|
+
plugin.version SystemVerilog::VERSION
|
47
18
|
|
48
|
-
|
49
|
-
|
50
|
-
|
19
|
+
plugin.register_component :sv_rtl do
|
20
|
+
component Common::Component, Common::ComponentFactory
|
21
|
+
feature Feature, Common::FeatureFactory
|
22
|
+
end
|
51
23
|
|
52
|
-
|
53
|
-
|
54
|
-
|
24
|
+
plugin.files [
|
25
|
+
'rtl/bit_field/sv_rtl_top',
|
26
|
+
'rtl/bit_field/type',
|
27
|
+
'rtl/bit_field/type/rc_w0c_w1c_wc_woc',
|
28
|
+
'rtl/bit_field/type/reserved',
|
29
|
+
'rtl/bit_field/type/ro',
|
30
|
+
'rtl/bit_field/type/rof',
|
31
|
+
'rtl/bit_field/type/rs_w0s_w1s_ws_wos',
|
32
|
+
'rtl/bit_field/type/rw_w1_wo_wo1',
|
33
|
+
'rtl/bit_field/type/rwc',
|
34
|
+
'rtl/bit_field/type/rwe',
|
35
|
+
'rtl/bit_field/type/rwl',
|
36
|
+
'rtl/bit_field/type/rws',
|
37
|
+
'rtl/bit_field/type/w0crs_w0src_w1crs_w1src_wcrs_wsrc',
|
38
|
+
'rtl/bit_field/type/w0t_w1t',
|
39
|
+
'rtl/bit_field/type/w0trg_w1trg',
|
40
|
+
'rtl/bit_field/type/wrc_wrs',
|
41
|
+
'rtl/global/array_port_format',
|
42
|
+
'rtl/global/fold_sv_interface_port',
|
43
|
+
'rtl/register/sv_rtl_top',
|
44
|
+
'rtl/register/type',
|
45
|
+
'rtl/register/type/external',
|
46
|
+
'rtl/register/type/indirect',
|
47
|
+
'rtl/register_block/protocol',
|
48
|
+
'rtl/register_block/protocol/apb',
|
49
|
+
'rtl/register_block/protocol/axi4lite',
|
50
|
+
'rtl/register_block/sv_rtl_top',
|
51
|
+
'rtl/register_file/sv_rtl_top'
|
52
|
+
]
|
55
53
|
end
|
56
54
|
end
|
57
55
|
end
|
@@ -2,10 +2,8 @@
|
|
2
2
|
|
3
3
|
RgGen.define_simple_feature(:bit_field, :sv_rtl_top) do
|
4
4
|
sv_rtl do
|
5
|
-
|
6
|
-
|
7
|
-
export :loop_variables
|
8
|
-
export :array_size
|
5
|
+
include RgGen::SystemVerilog::RTL::BitFieldIndex
|
6
|
+
|
9
7
|
export :value
|
10
8
|
|
11
9
|
build do
|
@@ -13,13 +11,13 @@ RgGen.define_simple_feature(:bit_field, :sv_rtl_top) do
|
|
13
11
|
localparam :initial_value, {
|
14
12
|
name: initial_value_name, data_type: :bit, width: bit_field.width,
|
15
13
|
array_size: initial_value_size, array_format: initial_value_format,
|
16
|
-
default:
|
14
|
+
default: initial_value_rhs
|
17
15
|
}
|
18
16
|
elsif initial_value?
|
19
17
|
parameter :initial_value, {
|
20
18
|
name: initial_value_name, data_type: :bit, width: bit_field.width,
|
21
19
|
array_size: initial_value_size, array_format: initial_value_format,
|
22
|
-
default:
|
20
|
+
default: initial_value_rhs
|
23
21
|
}
|
24
22
|
end
|
25
23
|
interface :bit_field_sub_if, {
|
@@ -42,31 +40,8 @@ RgGen.define_simple_feature(:bit_field, :sv_rtl_top) do
|
|
42
40
|
code << bit_field_if_connection << nl
|
43
41
|
end
|
44
42
|
|
45
|
-
def local_index
|
46
|
-
(index_name = local_index_name) &&
|
47
|
-
create_identifier(index_name)
|
48
|
-
end
|
49
|
-
|
50
|
-
def local_indices
|
51
|
-
[*register.local_indices, local_index_name]
|
52
|
-
end
|
53
|
-
|
54
|
-
def loop_variables
|
55
|
-
(inside_loop? || nil) &&
|
56
|
-
[*register.loop_variables, local_index].compact
|
57
|
-
end
|
58
|
-
|
59
|
-
def array_size
|
60
|
-
(inside_loop? || nil) &&
|
61
|
-
[
|
62
|
-
*register_files.flat_map(&:array_size),
|
63
|
-
*register.array_size,
|
64
|
-
*bit_field.sequence_size
|
65
|
-
].compact
|
66
|
-
end
|
67
|
-
|
68
43
|
def value(offsets = nil, width = nil)
|
69
|
-
value_lsb = bit_field.lsb(offsets&.last ||
|
44
|
+
value_lsb = bit_field.lsb(offsets&.last || local_index)
|
70
45
|
value_width = width || bit_field.width
|
71
46
|
register_if(offsets&.slice(0..-2)).value[value_lsb, value_width]
|
72
47
|
end
|
@@ -77,14 +52,6 @@ RgGen.define_simple_feature(:bit_field, :sv_rtl_top) do
|
|
77
52
|
define_method(m) { bit_field.__send__(__method__) }
|
78
53
|
end
|
79
54
|
|
80
|
-
def local_index_name
|
81
|
-
(bit_field.sequential? || nil) &&
|
82
|
-
begin
|
83
|
-
depth = (register.loop_variables&.size || 0) + 1
|
84
|
-
loop_index(depth)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
55
|
def register_if(offsets)
|
89
56
|
index = register.index(offsets || register.local_indices)
|
90
57
|
register_block.register_if[index]
|
@@ -106,11 +73,11 @@ RgGen.define_simple_feature(:bit_field, :sv_rtl_top) do
|
|
106
73
|
configuration.array_port_format
|
107
74
|
end
|
108
75
|
|
109
|
-
def
|
110
|
-
initial_value_array? &&
|
76
|
+
def initial_value_rhs
|
77
|
+
initial_value_array? && initial_value_array_rhs || sized_initial_value
|
111
78
|
end
|
112
79
|
|
113
|
-
def
|
80
|
+
def initial_value_array_rhs
|
114
81
|
if fixed_initial_value?
|
115
82
|
array(sized_initial_values)
|
116
83
|
elsif initial_value_format == :unpacked
|
@@ -129,12 +96,9 @@ RgGen.define_simple_feature(:bit_field, :sv_rtl_top) do
|
|
129
96
|
bit_field.initial_values&.map { |v| hex(v, bit_field.width) }
|
130
97
|
end
|
131
98
|
|
132
|
-
def inside_loop?
|
133
|
-
register.array? || bit_field.sequential?
|
134
|
-
end
|
135
|
-
|
136
99
|
def loop_size
|
137
|
-
|
100
|
+
loop_variable = local_index
|
101
|
+
loop_variable &&
|
138
102
|
{ loop_variable => bit_field.sequence_size }
|
139
103
|
end
|
140
104
|
|