This repository contains all the files pertaining to the assignments and project done by our group.
Group Members:
This repository contains the Verilog implementation of a pipelined, out-of-order superscalar processor datapath. The design integrates a range of components including reservation stations, reorder buffer, unified register file, ALUs, load/store units, and more.
βββ datapath.v
βββ Report
βββ ISA.pdf
βββ 1. Controller
β βββ controller.v
βββ 2. Execution Pipeline
β βββ alu.v
β βββ alu_tb.v
β βββ data_mem.v
β βββ load_buffer.v
β βββ load_buffer tb.v
β βββ Isu.v
β βββ Isu_tb.v
βββ 3. Fetch & Decode Stage
β βββ IF_ID_combined.v
β βββ a. Decode
β β βββ alu_handler.v
β β βββ branch_handler.v
β β βββ ID_Stage.v
β β βββ ID_tb.v
β β βββ jump_handler.v
β β βββ lm_sm_handler.v
β β βββ Isu_handler.v
β β βββ sign_extender_6_16.v
β βββ b. Fetch
β β βββ IF.v
β β βββ IF_tb.v
β βββ c. IF_ID Reg
β βββ IF_ID_reg.v
βββ 4. Register Files
β βββ ARF.v
β βββ ARF_tb.v
β βββ RRF.v
β βββ RRF_tb.v
β βββ combined_RF.v
βββ 5. Reorder Buffer
β βββ reorder_buffer.v
β βββ ROB_tb.v
βββ 6. Reservation Station
β βββ reservation_station.v
βββ 7. Writeback Stage
βββ wb_stage.v
The datapath is designed to:
- Support dual-issue ALU and LSU pipelines.
- Schedule and dispatch instructions via reservation stations.
- Use a unified register file for physical register management (ARF + RRF).
- Commit instructions in-order via a reorder buffer (ROB).
- Integrate broadcast forwarding for register value availability.
- Handle pipeline hazards via controller-generated stall and flush signals.
clk: System clockrst: Asynchronous resetregister_address [2:0]: Architectural register address to inspect from outside
register_data [15:0]: Value from ARF corresponding to the input address
This repository contains the VHDL implementation of an In-Order Superscalar architecture featuring instruction fetch/decode, reservation station, scoreboard-based hazard handling, and multiple execution pipelines. The design is modular and supports instruction-level parallelism, making it ideal for exploring out-of-order execution techniques.
βββ Adderl 6X3.vhdl
βββ alu handler.vhdl
βββ ALU.vhdl
βββ branch handler.vhdl
βββ Branch MUX.vhdl
βββ cpu.vhdl
βββ data_memory.vhdl
βββ datapath.vhdl
βββ Gates.vhdl
βββ ID_Stage.vhdl
βββ IF ID combined.vhdl
βββ IF_lD_reg.vhdl
βββ IF_stage.vhdl
βββ instr_memory.vhdl
βββ jump_handler.vhdl
βββ 1m sm handler.vhdl
βββ Isu handler.vhdl
βββ P3_reg.vhdl
βββ P4_reg.vhdl
βββ P5_reg.vhdl
βββ pipeline_controller.vhd
βββ Register_file.vhdl
βββ rs.vhdl
βββ scoreboard.vhdl
βββ temp_reg.vhdl
βββ testbench.vhdl