mirror of
https://github.com/Silicon1602/srdl2sv.git
synced 2024-12-22 06:58:41 +00:00
Removed genvars in case only 1 dimension with 1 entry is used
This commit is contained in:
parent
203f1e1b36
commit
c5755bf104
@ -8,7 +8,6 @@ from systemrdl.node import FieldNode
|
|||||||
# Local packages
|
# Local packages
|
||||||
from components.component import Component
|
from components.component import Component
|
||||||
from components.register import Register
|
from components.register import Register
|
||||||
from log.log import create_logger
|
|
||||||
from . import templates
|
from . import templates
|
||||||
|
|
||||||
|
|
||||||
@ -64,14 +63,21 @@ class AddrMap(Component):
|
|||||||
AddrMap.templ_dict['input_port'].format(
|
AddrMap.templ_dict['input_port'].format(
|
||||||
name = x.name,
|
name = x.name,
|
||||||
packed_dim = x.packed_dim,
|
packed_dim = x.packed_dim,
|
||||||
unpacked_dim = '[{}]'.format(']['.join([str(y) for y in x.unpacked_dim])))
|
unpacked_dim = '[{}]'.format(
|
||||||
|
']['.join(
|
||||||
|
[str(y) for y in x.unpacked_dim]))
|
||||||
|
if x.unpacked_dim else '')
|
||||||
for x in self.get_ports('input')]
|
for x in self.get_ports('input')]
|
||||||
|
|
||||||
# Output ports
|
# Output ports
|
||||||
output_ports_rtl = [
|
output_ports_rtl = [
|
||||||
AddrMap.templ_dict['output_port'].format(
|
AddrMap.templ_dict['output_port'].format(
|
||||||
name = x.name,
|
name = x.name,
|
||||||
packed_dim = x.packed_dim,
|
packed_dim = x.packed_dim,
|
||||||
unpacked_dim = '[{}]'.format(']['.join([str(y) for y in x.unpacked_dim])))
|
unpacked_dim = '[{}]'.format(
|
||||||
|
']['.join(
|
||||||
|
[str(y) for y in x.unpacked_dim]))
|
||||||
|
if x.unpacked_dim else '')
|
||||||
for x in self.get_ports('output')]
|
for x in self.get_ports('output')]
|
||||||
|
|
||||||
# Remove comma from last port entry
|
# Remove comma from last port entry
|
||||||
|
@ -124,9 +124,3 @@ class Component():
|
|||||||
name.append(split_name[1])
|
name.append(split_name[1])
|
||||||
|
|
||||||
return ''.join(name)
|
return ''.join(name)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,13 +66,18 @@ class Register(Component):
|
|||||||
# Assign variables from bus
|
# Assign variables from bus
|
||||||
self.obj.current_idx = [0]
|
self.obj.current_idx = [0]
|
||||||
|
|
||||||
|
if self.dimensions:
|
||||||
|
rw_wire_assign_field = 'rw_wire_assign_multi_dim'
|
||||||
|
else:
|
||||||
|
rw_wire_assign_field = 'rw_wire_assign_1_dim'
|
||||||
|
|
||||||
self.rtl_header.append(
|
self.rtl_header.append(
|
||||||
Register.templ_dict['rw_wire_assign'].format(
|
Register.templ_dict[rw_wire_assign_field].format(
|
||||||
path = self.path,
|
path = self.path,
|
||||||
addr = self.obj.absolute_address,
|
addr = self.obj.absolute_address,
|
||||||
genvars = self.genvars_str,
|
genvars = self.genvars_str,
|
||||||
genvars_sum =self.genvars_sum_str,
|
genvars_sum =self.genvars_sum_str,
|
||||||
stride = self.obj.array_stride if self.obj.array_stride else '0',
|
stride = self.obj.array_stride,
|
||||||
depth = self.depth))
|
depth = self.depth))
|
||||||
|
|
||||||
def __process_variables(self, obj: node.RootNode):
|
def __process_variables(self, obj: node.RootNode):
|
||||||
@ -96,7 +101,7 @@ class Register(Component):
|
|||||||
self.array_dimensions = self.obj.array_dimensions
|
self.array_dimensions = self.obj.array_dimensions
|
||||||
else:
|
else:
|
||||||
self.sel_arr = 'single'
|
self.sel_arr = 'single'
|
||||||
self.array_dimensions = [1]
|
self.array_dimensions = []
|
||||||
|
|
||||||
self.depth = '[{}]'.format(']['.join(f"{i}" for i in self.array_dimensions))
|
self.depth = '[{}]'.format(']['.join(f"{i}" for i in self.array_dimensions))
|
||||||
self.dimensions = len(self.array_dimensions)
|
self.dimensions = len(self.array_dimensions)
|
||||||
|
@ -95,5 +95,5 @@ singlepulse: |-
|
|||||||
out_port_assign: |-
|
out_port_assign: |-
|
||||||
|
|
||||||
// Connect register to hardware output port
|
// Connect register to hardware output port
|
||||||
assign {path}_r{genvars} <= {path}_q{genvars};
|
assign {path}_r{genvars} = {path}_q{genvars};
|
||||||
|
|
||||||
|
@ -2,7 +2,10 @@
|
|||||||
rw_wire_declare: |
|
rw_wire_declare: |
|
||||||
logic {path}_sw_wr {depth};
|
logic {path}_sw_wr {depth};
|
||||||
logic {path}_sw_rd {depth};
|
logic {path}_sw_rd {depth};
|
||||||
rw_wire_assign: |
|
rw_wire_assign_1_dim: |
|
||||||
|
assign {path}_sw_wr{genvars} = addr == {addr} && r_vld;
|
||||||
|
assign {path}_sw_rd{genvars} = addr == {addr} && w_vld;
|
||||||
|
rw_wire_assign_multi_dim: |
|
||||||
assign {path}_sw_wr{genvars} = addr == ({addr}+({genvars_sum})*{stride}) && r_vld;
|
assign {path}_sw_wr{genvars} = addr == ({addr}+({genvars_sum})*{stride}) && r_vld;
|
||||||
assign {path}_sw_rd{genvars} = addr == ({addr}+({genvars_sum})*{stride}) && w_vld;
|
assign {path}_sw_rd{genvars} = addr == ({addr}+({genvars_sum})*{stride}) && w_vld;
|
||||||
reg_comment: |-
|
reg_comment: |-
|
||||||
|
Loading…
Reference in New Issue
Block a user