The following 2 weeks will be used mainly to implement details into my current pipeline class so that it could work more closely to the real pipeline process. While keep implementing, continuous code checking and debugging is necessary.
Continue from last week work where I need to figure out how to implement so that carry bit is also being taken into account when arithmetic instruction without carry bit and keeping the carry bit is executed. My last week concept on implementing carry flag on RSUB is wrong. Should be MSB of operand B is 0 whereas operand A is 1 then carry bit is set to 1 but not vice versa case. Beside this mistake, I also implement wrongly on code writing. I notified by supervisor that I should be mask out the only carry bit (MSR) but not the whole 32 bit MSR. After corrected these mistakes, I finally manage to implement them correctly in execute stage.
After these implementations, I am require to check for all the instructions work correctly for Load/Store and branches (without delay). To do this step, I need to rewrite my assembly codes with basic arithmetic operations. After some debug on minor mistakes, instruction Load/Store, Branching (without delay) together with others basic instructions are functionally working.
My current task is to implement IMM instructions in decode stage. This implementation is a little bit complicated. For Type A instruction, if this instruction is detected (by checking the opcode of instruction) before any other instruction else, flag is set to 1 and save the immediate to internal storage. If no IMM sinstruction detected, the flag is set to 0. For Type B, if flag is set to 1 (when IMM instruction is detected), the 32 bit operand B is formed by combining lower 16 bit of the immediate with lower 16 bit of the immediate that have been saved in internal storage earlier. After I implement all these, I still need to test run if my codes is working.
Still lot to do on my last week of internship. Hopefully I can make it in time.