next_instruction_index = temp pipeline_registers[-1].output.update(cycle_count, "WB") for register in pipeline_registers: if (register.input != None): register.input.till_dead = 1 else: next_instruction_index += 1 if pipeline_registers[-1].output is not None: ALU( pipeline_registers[-1].output ) #output is the current instruction in the wb pipreg object. Varable can chance based on chosen object varable. pipeline_registers[-1].output.update(cycle_count, "WB") pipeline_registers[-1].output = None control.checkDataHazards(pipeline_registers) for index in reversed(range(len(pipeline_registers))): if pipeline_registers[index].input: if pipeline_registers[index].input.till_dead != -1: if pipeline_registers[index].input.till_dead == 0: pipeline_registers[index].input.dead = True pipeline_registers[index].input.till_dead -= 1 #print("SAFTY:", control.DataHazardFlag, " " , not control.forwardFlag, " " , index == 1) if control.DataHazardFlag and not control.forwardFlag and index == 1: pipeline_registers[1].input.delayed = True nop = pipeline_registers[index].input.make_nop(cycle_count) pipeline_registers[index + 1].input = nop pipeline_registers[index].output = nop pipeline_registers[index].input.update(