diff --git a/unoptimized_lr/simple_lr_tables.py b/unoptimized_lr/simple_lr_tables.py index 30319a80537e078458428a6719e0c83e1c0948eb..6fbb423feb162fef1b4985829f876e545f718caf 100644 --- a/unoptimized_lr/simple_lr_tables.py +++ b/unoptimized_lr/simple_lr_tables.py @@ -24,7 +24,7 @@ from functools import reduce -class TableBusLayout(Layout): +class ShiftReduceTableBusLayout(Layout): def __init__(self, *, row_input_width, column_input_width, output_width): super().__init__([ # INPUTS @@ -40,7 +40,7 @@ class TableBusLayout(Layout): ]) -class TableBus(Record): +class ShiftReduceTableBus(Record): def __init__(self, *, row_input_width, column_input_width, output_width): super().__init__(TableBusLayout(row_input_width=row_input_width, column_input_width=column_input_width, output_width=output_width)) @@ -116,6 +116,25 @@ class LRTable(Elaboratable): return m +class GOTOTableBusLayout(Layout): + def __init__(self, *, row_input_width, column_input_width, output_width): + super().__init__([ + # INPUTS + ("row_idx", unsigned(row_input_width)), # FROM SOURCE + ("col_idx", unsigned(column_input_width)), # FROM SOURCE + ("valid_in", 1), # FROM SOURCE + ("ready_in", 1), # FROM DEST + + # OUTPUTS + ("output_data", unsigned(output_width)), # TO DEST + ("valid_out", 1), # TO DEST + ("ready_out", 1), # TO SOURCE + + ]) + +class GOTOTableBus(Record): + def __init__(self, *, row_input_width, column_input_width, output_width): + super().__init__(TableBusLayout(row_input_width=row_input_width, column_input_width=column_input_width, output_width=output_width)) class GOTOtable(Elaboratable): def __init__(self, *, lang_params, input_array):