mirror of
https://github.com/Silicon1602/srdl2sv.git
synced 2024-12-22 15:08:39 +00:00
Change way SV keyword 'else' is added to access_rtl
At this point, it is still added in an for-loop. The reason is that this code might get more extensive and become otherwise unreadable.
This commit is contained in:
parent
ea998b7db0
commit
c32bfdd8c0
@ -130,6 +130,10 @@ class Field:
|
|||||||
field_name = obj.inst_name,
|
field_name = obj.inst_name,
|
||||||
genvars = genvars_str,
|
genvars = genvars_str,
|
||||||
indent = self.indent(indent_lvl)))
|
indent = self.indent(indent_lvl)))
|
||||||
|
else:
|
||||||
|
access_rtl['hw_write'].append(
|
||||||
|
Field.templ_dict['hw_access_no_we_wel'].format(
|
||||||
|
indent = self.indent(indent_lvl)))
|
||||||
|
|
||||||
access_rtl['hw_write'].append(
|
access_rtl['hw_write'].append(
|
||||||
Field.templ_dict['hw_access_field'].format(
|
Field.templ_dict['hw_access_field'].format(
|
||||||
@ -173,18 +177,27 @@ class Field:
|
|||||||
|
|
||||||
# Check if hardware has precedence (default `precedence = sw`)
|
# Check if hardware has precedence (default `precedence = sw`)
|
||||||
if precedence == 'PrecedenceType.sw':
|
if precedence == 'PrecedenceType.sw':
|
||||||
rtl_order = ['sw_write',
|
order_list = ['sw_write',
|
||||||
'else' if len(access_rtl['hw_write']) > 0 else '',
|
|
||||||
'hw_write']
|
'hw_write']
|
||||||
else:
|
else:
|
||||||
rtl_order = ['hw_write',
|
order_list = ['hw_write',
|
||||||
'else' if len(access_rtl['sw_write']) > 0 else '',
|
|
||||||
'sw_write']
|
'sw_write']
|
||||||
|
|
||||||
# Add dictionary to main RTL list in correct order
|
# Add appropriate else
|
||||||
self.rtl = [
|
order_list_rtl = []
|
||||||
*self.rtl,
|
|
||||||
*chain.from_iterable([access_rtl[i] for i in rtl_order])]
|
for i in order_list:
|
||||||
|
# Still a loop and not a list comprehension since this might
|
||||||
|
# get longer in the future and thus become unreadable
|
||||||
|
if len(access_rtl[i]) > 0:
|
||||||
|
order_list_rtl = [*order_list_rtl, *access_rtl[i]]
|
||||||
|
order_list_rtl.append("{}else".format(self.indent(indent_lvl)))
|
||||||
|
|
||||||
|
# Remove last pop
|
||||||
|
order_list_rtl.pop()
|
||||||
|
|
||||||
|
# Chain access RTL to the rest of the RTL
|
||||||
|
self.rtl = [*self.rtl, *order_list_rtl]
|
||||||
|
|
||||||
indent_lvl -= 1
|
indent_lvl -= 1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user