summaryrefslogtreecommitdiff
path: root/uarch/fetch.h
blob: 452b207cac0575c26ad1faf33bd11bdbf81bf4ca (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once

#include <memory>

#include "aisa/aisa.h"
#include "aisa/simple-models.h"
#include "sim/sim.h"
#include "sim/queue.h"
#include "uarch/types.h"

namespace uarch {

    struct FetchStage : public sim::Schedulable, aisa::TaskStack, aisa::VectorRF {
        sim::Queue<FillReq> &fillreqq;
        sim::Queue<Fill> &fillq;
        sim::Queue<Uop> &uopq;

        std::unique_ptr<const aisa::Step> step;
        aisa::Wires wires;
        bool outstanding_fill = false;
        bool fill_complete = false;

        FetchStage(sim::Scheduler &scheduler, const aisa::ISA &isa, sim::Queue<FillReq> &fillreqq, sim::Queue<Fill> &fillq, sim::Queue<Uop> &uopq);

        void clock() override;
    };

}