bleh still not work
This commit is contained in:
81
hw/rtl/core/generate_ucode.py
Normal file
81
hw/rtl/core/generate_ucode.py
Normal file
@@ -0,0 +1,81 @@
|
||||
num_sets = 4
|
||||
num_steps = 4
|
||||
num_substeps = 2
|
||||
|
||||
|
||||
def set_step_substep(sequence_number):
|
||||
set_num, step = divmod(sequence_number, num_steps * num_substeps)
|
||||
step //= num_substeps
|
||||
substep = sequence_number % 2
|
||||
|
||||
return set_num, step, substep
|
||||
|
||||
# set + substep -> rs1, rs2
|
||||
rs1 = {
|
||||
(0, 0): 0,
|
||||
(0, 1): 1,
|
||||
(1, 0): 2,
|
||||
(1, 1): 3,
|
||||
(2, 0): 4,
|
||||
(2, 1): 5,
|
||||
(3, 0): 6,
|
||||
(3, 1): 7
|
||||
}
|
||||
|
||||
rs2 = {
|
||||
(0, 0): 8,
|
||||
(0, 1): 9,
|
||||
(1, 0): 10,
|
||||
(1, 1): 11,
|
||||
(2, 0): 12,
|
||||
(2, 1): 13,
|
||||
(3, 0): 14,
|
||||
(3, 1): 15
|
||||
}
|
||||
|
||||
# step + substep -> rs3, rd
|
||||
rs3_rd = {
|
||||
(0, 0): 16,
|
||||
(0, 1): 17,
|
||||
(1, 0): 18,
|
||||
(1, 1): 19,
|
||||
(2, 0): 20,
|
||||
(2, 1): 21,
|
||||
(3, 0): 22,
|
||||
(3, 1): 23
|
||||
}
|
||||
|
||||
with open('VX_tensor_ucode.vh', 'w') as f:
|
||||
for sequence_number in range(num_sets * num_steps * num_substeps):
|
||||
set_num, step, substep = set_step_substep(sequence_number)
|
||||
|
||||
|
||||
next_sequence_num = (sequence_number + 1) % (num_sets * num_steps * num_substeps)
|
||||
next_set_num, next_step, next_substep = set_step_substep(next_sequence_num)
|
||||
finish = (next_sequence_num == 0)
|
||||
|
||||
name = "HMMA_SET{}_STEP{}_{}"
|
||||
ucode = "{}, HMMA_SET{}_STEP{}_{}, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'({}), `INST_MOD_BITS'({}), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG({}), `FREG({}), `FREG({}), `FREG({})"
|
||||
|
||||
name = name.format(
|
||||
set_num, step, substep,
|
||||
)
|
||||
|
||||
ucode = ucode.format(
|
||||
"FINISH" if finish else "NEXT",
|
||||
next_set_num, next_step, next_substep,
|
||||
step,
|
||||
substep,
|
||||
rs3_rd[(step, substep)],
|
||||
rs1[(set_num, substep)],
|
||||
rs2[(set_num, substep)],
|
||||
rs3_rd[(step, substep)],
|
||||
)
|
||||
|
||||
entry = f"{name}: begin \n"
|
||||
entry += "\tuop = {"
|
||||
entry += ucode
|
||||
entry += "}; \n"
|
||||
entry += "end \n"
|
||||
|
||||
f.write(entry)
|
||||
Reference in New Issue
Block a user