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

Subversion Repositories altor32

[/] [altor32/] [trunk/] [rtl/] [cpu/] [altor32_dfu.v] - Diff between revs 37 and 40

Show entire file | Details | Blame | View Log

Rev 37 Rev 40
Line 62... Line 62...
    // Load pending / target
    // Load pending / target
    input               load_pending_i /*verilator public*/,
    input               load_pending_i /*verilator public*/,
    input [4:0]         rd_load_i /*verilator public*/,
    input [4:0]         rd_load_i /*verilator public*/,
 
 
    // Multiplier status
    // Multiplier status
    input               mult_lo_ex_i /*verilator public*/,
    input               mult_ex_i /*verilator public*/,
    input               mult_hi_ex_i /*verilator public*/,
 
    input               mult_lo_wb_i /*verilator public*/,
 
    input               mult_hi_wb_i /*verilator public*/,
 
 
 
    // Multiplier result
 
    input [63:0]        result_mult_i /*verilator public*/,
 
 
 
    // Result (EXEC)
    // Result (EXEC)
    input [31:0]        result_ex_i /*verilator public*/,
    input [31:0]        result_ex_i /*verilator public*/,
 
 
    // Result (WB)
    // Result (WB)
Line 122... Line 116...
       // RA from PC-4 (exec)
       // RA from PC-4 (exec)
       //---------------------------------------------------------------
       //---------------------------------------------------------------
       else if (ra_i == rd_ex_i)
       else if (ra_i == rd_ex_i)
       begin
       begin
            // Multiplier has one cycle latency, stall if needed now
            // Multiplier has one cycle latency, stall if needed now
            if (mult_lo_ex_i | mult_hi_wb_i)
            if (mult_ex_i)
                stall_o     = 1'b1;
                stall_o     = 1'b1;
            else
            else
            begin
            begin
                result_ra_o = result_ex_i;
                result_ra_o = result_ex_i;
                resolved_o  = 1'b1;
                resolved_o  = 1'b1;
Line 138... Line 132...
       //---------------------------------------------------------------
       //---------------------------------------------------------------
       // RA from PC-8 (writeback)
       // RA from PC-8 (writeback)
       //---------------------------------------------------------------
       //---------------------------------------------------------------
       else if (ra_i == rd_wb_i)
       else if (ra_i == rd_wb_i)
       begin
       begin
            if (mult_hi_wb_i)
 
                result_ra_o = result_mult_i[63:32];
 
            else if (mult_lo_wb_i)
 
                result_ra_o = result_mult_i[31:0];
 
            else
 
                result_ra_o = result_wb_i;
                result_ra_o = result_wb_i;
 
 
            resolved_o  = 1'b1;
            resolved_o  = 1'b1;
`ifdef CONF_CORE_DEBUG
`ifdef CONF_CORE_DEBUG
            $display(" rA[%d] forwarded 0x%08x (PC-8)", ra_i, result_ra_o);
            $display(" rA[%d] forwarded 0x%08x (PC-8)", ra_i, result_ra_o);
Line 177... Line 166...
       // RB from PC-4 (exec)
       // RB from PC-4 (exec)
       //---------------------------------------------------------------
       //---------------------------------------------------------------
       else if (rb_i == rd_ex_i)
       else if (rb_i == rd_ex_i)
       begin
       begin
            // Multiplier has one cycle latency, stall if needed now
            // Multiplier has one cycle latency, stall if needed now
            if (mult_lo_ex_i | mult_hi_wb_i)
            if (mult_ex_i)
                stall_o     = 1'b1;
                stall_o     = 1'b1;
            else
            else
            begin
            begin
                result_rb_o = result_ex_i;
                result_rb_o = result_ex_i;
                resolved_o  = 1'b1;
                resolved_o  = 1'b1;
Line 194... Line 183...
       //---------------------------------------------------------------
       //---------------------------------------------------------------
       // RB from PC-8 (writeback)
       // RB from PC-8 (writeback)
       //---------------------------------------------------------------
       //---------------------------------------------------------------
       else if (rb_i == rd_wb_i)
       else if (rb_i == rd_wb_i)
       begin
       begin
            if (mult_hi_wb_i)
 
                result_rb_o = result_mult_i[63:32];
 
            else if (mult_lo_wb_i)
 
                result_rb_o = result_mult_i[31:0];
 
            else
 
                result_rb_o = result_wb_i;
                result_rb_o = result_wb_i;
 
 
            resolved_o  = 1'b1;
            resolved_o  = 1'b1;
 
 
`ifdef CONF_CORE_DEBUG
`ifdef CONF_CORE_DEBUG

powered by: WebSVN 2.1.0

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