OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [rtl/] [src_noc/] [router_two_stage.sv] - Diff between revs 54 and 55

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 54 Rev 55
Line 549... Line 549...
        end
        end
    end
    end
         */
         */
 
 
 
 
 
//TRACE_DUMP_PER is defined in pronoc_def file
 
 
 
 
 
`ifdef TRACE_DUMP_PER_NoC
 
        pronoc_trace_dump #(
 
                .P(P),
 
                .TRACE_DUMP_PER("NOC"), //NOC, ROUTER, PORT
 
                .CYCLE_REPORT(0) // 1 : enable, 0 : disable
 
 
 
        )dump1
 
        (
 
                .current_r_id(current_r_id),
 
                .chan_in(chan_in),
 
                .chan_out(chan_out),
 
                .clk(clk)
 
        );
 
`endif
 
`ifdef TRACE_DUMP_PER_ROUTER
 
        pronoc_trace_dump #(
 
                .P(P),
 
                .TRACE_DUMP_PER("ROUTER"), //NOC, ROUTER, PORT
 
                .CYCLE_REPORT(0) // 1 : enable, 0 : disable
 
 
 
        )dump2
 
        (
 
                .current_r_id(current_r_id),
 
                .chan_in(chan_in),
 
                .chan_out(chan_out),
 
                .clk(clk)
 
        );
 
`endif
 
`ifdef TRACE_DUMP_PER_PORT
 
        pronoc_trace_dump #(
 
                .P(P),
 
                .TRACE_DUMP_PER("PORT"), //NOC, ROUTER, PORT
 
                .CYCLE_REPORT(0) // 1 : enable, 0 : disable
 
 
 
        )dump3
 
        (
 
                .current_r_id(current_r_id),
 
                .chan_in(chan_in),
 
                .chan_out(chan_out),
 
                .clk(clk)
 
        );
 
`endif
 
 
 
 
 
 
 
 
        //synopsys  translate_on
        //synopsys  translate_on
        //synthesis translate_on
        //synthesis translate_on
 
 
 
 
endmodule
endmodule
 
 
 
 
 
 
 
 
 
 
module credit_release_gen
module credit_release_gen
        import pronoc_pkg::*;
        import pronoc_pkg::*;
#(
#(
        parameter CREDIT_NUM=4
        parameter CREDIT_NUM=4
)(
)(
Line 598... Line 649...
        end
        end
 
 
 
 
endmodule
endmodule
 
 
 
 
 
 
 
 
 
//synthesis translate_off
 
module pronoc_trace_dump
 
        import pronoc_pkg::*;
 
#(
 
        parameter P = 6,
 
        parameter TRACE_DUMP_PER= "ROUTER", //NOC, ROUTER, PORT
 
        parameter CYCLE_REPORT=0 // 1 : enable, 0 : disable
 
 
 
)(
 
        current_r_id,
 
        chan_in,
 
        chan_out,
 
        clk
 
);
 
 
 
        input  [31:0] current_r_id;
 
        input   flit_chanel_t chan_in  [P-1 : 0];
 
        input   flit_chanel_t chan_out [P-1 : 0];
 
        input   clk;
 
 
 
        pronoc_trace_dump_sub #(
 
                .P(P),
 
                .TRACE_DUMP_PER(TRACE_DUMP_PER), //NOC, ROUTER, PORT
 
                .DIRECTION("in"), // in,out
 
                .CYCLE_REPORT(CYCLE_REPORT) // 1 : enable, 0 : disable
 
 
 
        )dump_in
 
        (
 
                .current_r_id(current_r_id),
 
                .chan_in(chan_in),
 
                .clk(clk)
 
        );
 
 
 
        pronoc_trace_dump_sub #(
 
                .P(P),
 
                .TRACE_DUMP_PER(TRACE_DUMP_PER), //NOC, ROUTER, PORT
 
                .DIRECTION("out"), // in,out
 
                .CYCLE_REPORT(CYCLE_REPORT) // 1 : enable, 0 : disable
 
 
 
        )dump_out
 
        (
 
                .current_r_id(current_r_id),
 
                .chan_in(chan_out),
 
                .clk(clk)
 
        );
 
endmodule
 
 
 
module pronoc_trace_dump_sub
 
        import pronoc_pkg::*;
 
#(
 
        parameter P = 6,
 
        parameter TRACE_DUMP_PER= "ROUTER", //NOC, ROUTER, PORT
 
        parameter DIRECTION="in", // in,out
 
        parameter CYCLE_REPORT=0 // 1 : enable, 0 : disable
 
 
 
)(
 
        current_r_id,
 
        chan_in,
 
        clk
 
);
 
 
 
input  [31:0] current_r_id;
 
input   flit_chanel_t chan_in  [P-1 : 0];
 
input   clk;
 
 
 
integer out;
 
string fname [P-1 : 0];
 
 
 
genvar p;
 
generate
 
for (p=0;p
 
        initial begin
 
        /* verilator lint_off WIDTH */
 
                if(TRACE_DUMP_PER == "PORT"  ) fname[p] = $sformatf("trace_dump_R%0d_P%0d.out",current_r_id,p);
 
                if(TRACE_DUMP_PER == "ROUTER") fname[p] = $sformatf("trace_dump_R%0d.out",current_r_id);
 
                if(TRACE_DUMP_PER == "NOC"   ) fname[p] = $sformatf("trace_dump.out",current_r_id,p);
 
        /* verilator lint_on WIDTH */
 
                out = $fopen(fname[p],"w");
 
                $fclose(out);
 
        end
 
 
 
 
 
        always @(posedge clk) begin
 
                if(chan_in[p].flit_wr) begin
 
                        out = $fopen(fname[p],"a");
 
                        if(CYCLE_REPORT) $fwrite(out,"%t:",$time);
 
                        $fwrite(out, "Flit %s: Port %0d, Payload: %h\n",DIRECTION, p, chan_in[p].flit);
 
                        $fclose(out);
 
                end
 
                if(chan_in[p].credit>0) begin
 
                        out = $fopen(fname[p],"a");
 
                        if(CYCLE_REPORT) $fwrite(out,"%t:",$time);
 
                        $fwrite(out, "credit %s:%h Port %0d\n",DIRECTION, chan_in[p].credit,p);
 
                        $fclose(out);
 
                end
 
        end
 
 
 
end
 
endgenerate
 
endmodule
 
//synthesis translate_on
 
 

powered by: WebSVN 2.1.0

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