OpenCores
URL https://opencores.org/ocsvn/fluid_core_2/fluid_core_2/trunk

Subversion Repositories fluid_core_2

[/] [fluid_core_2/] [trunk/] [xilinx14.5 project/] [Reg_Hist.v] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 azmathmoos
`timescale 1ns / 1ps
2
`include "Configuration.v"
3
module Reg_Hist(
4
//      input Clk, RST,
5
        input [0:`reg_sel_w] ID_EX_reg, EX_MEM_reg,
6
        input [0:`reg_sel_w] nxt_reg_A, nxt_reg_B, st_reg,
7
        output [0:1] reg_src_A, reg_src_B, st_src,
8
        output [0:2] load_hazard_abs,
9
        output load_hazard,
10
        input rrr_adm, rri_adm, ID_EX_load, fw_c_1, fw_c_2
11
        );
12
 
13
 
14
//      //pure combinational
15
        wire reg_src_a_1, reg_src_a_2, reg_src_b_1, reg_src_b_2;
16
        //store hazards
17
        wire st_src_1, st_src_2;
18
 
19
        //assign rrr_adm = (~(|(adm ^ `RRR)));
20
//      assign not_branch = (|(type ^ `type_branch));
21
//      assign not_ID_EX_branch = (|(ID_EX_type ^ `type_branch));
22
//      assign not_EX_MEM_branch = (|(EX_MEM_type ^ `type_branch));
23
        assign load_hazard = (reg_src_a_1 | reg_src_b_1 | st_src_1) & ID_EX_load;//~(|(ID_EX_type ^ `type_load));
24
        //WORK HERE  WORK HERE --- below --- below
25
        assign reg_src_a_1 =  (rrr_adm & fw_c_1 & (~(|(nxt_reg_A ^ ID_EX_reg))));//
26
        assign reg_src_a_2 =  (rrr_adm & fw_c_2 &  (~(|(nxt_reg_A ^ EX_MEM_reg))));//
27
        assign reg_src_b_1 = ((rrr_adm | rri_adm) & fw_c_1 & (~(|(nxt_reg_B ^ ID_EX_reg))));
28
        assign reg_src_b_2 = ((rrr_adm | rri_adm) & fw_c_2 & (~(|(nxt_reg_B ^ EX_MEM_reg))));
29
        assign st_src_1 = (fw_c_1 & (~(|(st_reg ^ ID_EX_reg))));
30
        assign st_src_2 = (fw_c_2 & (~(|(st_reg ^ EX_MEM_reg))));
31
 
32
        assign reg_src_A = {reg_src_a_1,reg_src_a_2};//load_hazard_abs[0] ? 2'b01 : 
33
        assign reg_src_B = {reg_src_b_1,reg_src_b_2};//load_hazard_abs[1] ? 2'b01 : 
34
        assign st_src = load_hazard_abs[2] ? 2'b01 : {st_src_1,st_src_2};
35
        assign load_hazard_abs = {load_hazard & reg_src_a_1,load_hazard & reg_src_b_1,load_hazard & st_src_1};
36
 
37
//      always@(Clk) begin
38
//      if (|(type ^ `type_branch)) begin
39
//              if ((|(ID_EX_type ^ `type_branch))&(~(|(nxt_reg_A ^ ID_EX_reg)))) reg_src_A <= 2'b01;
40
//              else if ((|(ID_EX_type ^ `type_branch))&(~(|(nxt_reg_A ^ EX_MEM_reg)))) reg_src_A <= 2'b10;
41
//              else reg_src_A <= 2'b00;
42
//              
43
//              if ((|(EX_MEM_type ^ `type_branch))&(~(|(nxt_reg_B ^ ID_EX_reg)))) reg_src_B <= 2'b01;
44
//              else if ((|(EX_MEM_type ^ `type_branch))&(~(|(nxt_reg_B ^ EX_MEM_reg)))) reg_src_B <= 2'b10;
45
//              else reg_src_B <= 2'b00;
46
//      end else begin
47
//              reg_src_A <= 2'b00;
48
//              reg_src_B <= 2'b00;
49
//      end
50
//      end
51
 
52
 
53
//      wire Clk_RST;
54
//      assign Clk_RST = Clk || RST;
55
//      reg stall_reg;
56
//      
57
//              initial begin
58
//                      stall_reg <= 0;
59
//              end
60
//      always@(posedge Clk_RST) begin
61
//              if (RST) begin
62
//                      bubble_reg <= 9'b111100000;
63
//              end else begin
64
//                if (bubble) begin
65
//                      bubble_reg <= 9'b111100000;
66
//                end else begin
67
//                      bubble_reg <= {1,bubble_reg[0:7]};
68
//                end
69
//                
70
//                if (~stall_reg) begin
71
//                      if (load_hazard) begin
72
//                              stall_reg <= 1;
73
//                      end else begin
74
//                              stall_reg <= 0;
75
//                      end
76
//                 end else begin
77
//                              stall_reg <= 0;
78
//                      end
79
//              end
80
//      
81
//      assign stall = stall_reg;
82
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.