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_emulate/] [rtl/] [noc_emulator.sv] - Diff between revs 54 and 56

Show entire file | Details | Blame | View Log

Rev 54 Rev 56
Line 3... Line 3...
* Date:2017-01-20
* Date:2017-01-20
* Author: alireza
* Author: alireza
*
*
* Description:
* Description:
***************************************/
***************************************/
 
`include "pronoc_def.v"
 
 
module  noc_emulator
module  noc_emulator
        import pronoc_pkg::*;
 
 #(
 #(
 
    parameter NOC_ID=0,
    // simulation
    // simulation
    parameter PATTERN_VJTAG_INDEX=125,
    parameter PATTERN_VJTAG_INDEX=125,
    parameter STATISTIC_VJTAG_INDEX=124
    parameter STATISTIC_VJTAG_INDEX=124
)(
)(
    jtag_ctrl_reset,
    jtag_ctrl_reset,
Line 20... Line 19...
    reset,
    reset,
    clk,
    clk,
    done
    done
);
);
 
 
 
    `NOC_CONF
 
 
        parameter MAX_RATIO = 100;
        parameter MAX_RATIO = 100;
    parameter RAM_Aw=7;
    parameter RAM_Aw=7;
    parameter STATISTIC_NUM=8;
    parameter STATISTIC_NUM=8;
 
 
 
 
    input reset,jtag_ctrl_reset,clk;
    input reset,jtag_ctrl_reset,clk;
    output done;
    output done;
    output start_o;
    output start_o;
 
 
 
 
 
 
 
 
 
 
    localparam
    localparam
        PCK_CNTw =30,  // 1 G packets
        PCK_CNTw =30,  // 1 G packets
        PCK_SIZw =14,   // 16 K flit
        PCK_SIZw =14,   // 16 K flit
        MAX_EAw  =8,
        MAX_EAw  =8,
        MAX_Cw   =4;   // 16 message classes
        MAX_Cw   =4;   // 16 message classes
 
 
 
 
   //localparam  MAX_SIM_CLKs  = 1_000_000_000;
   //localparam  MAX_SIM_CLKs  = 1_000_000_000;
 
 
 
 
 
 
 
 
    reg start_i;
    reg start_i;
    reg [10:0] cnt;
    reg [10:0] cnt;
 
 
   assign start_o=start_i;
   assign start_o=start_i;
 
 
 
 
    //noc connection channels
    //noc connection channels
    smartflit_chanel_t chan_in_all  [NE-1 : 0];
    smartflit_chanel_t chan_in_all  [NE-1 : 0];
        smartflit_chanel_t chan_out_all [NE-1 : 0];
        smartflit_chanel_t chan_out_all [NE-1 : 0];
 
 
        noc_top the_top(
        noc_top  # (
 
                .NOC_ID(NOC_ID)
 
        ) the_top (
                .reset(reset),
                .reset(reset),
                .clk(clk),
                .clk(clk),
                .chan_in_all(chan_in_all),
                .chan_in_all(chan_in_all),
                .chan_out_all(chan_out_all),
                .chan_out_all(chan_out_all),
                .router_event()
                .router_event()
        );
        );
 
 
 
 
 
 
   Jtag_traffic_gen #(
   Jtag_traffic_gen #(
 
        .NOC_ID(NOC_ID),
        .PATTERN_VJTAG_INDEX(PATTERN_VJTAG_INDEX),
        .PATTERN_VJTAG_INDEX(PATTERN_VJTAG_INDEX),
        .STATISTIC_VJTAG_INDEX(STATISTIC_VJTAG_INDEX),
        .STATISTIC_VJTAG_INDEX(STATISTIC_VJTAG_INDEX),
                .MAX_RATIO(MAX_RATIO),
                .MAX_RATIO(MAX_RATIO),
        .RAM_Aw(RAM_Aw),
        .RAM_Aw(RAM_Aw),
        .STATISTIC_NUM(STATISTIC_NUM),  // the last 8 rows of RAM is reserved for collecting statistic values;
        .STATISTIC_NUM(STATISTIC_NUM),  // the last 8 rows of RAM is reserved for collecting statistic values;
Line 115... Line 108...
    A traffic generator which can be programed using JTAG port
    A traffic generator which can be programed using JTAG port
 
 
****************/
****************/
 
 
module  Jtag_traffic_gen
module  Jtag_traffic_gen
        import pronoc_pkg::*;
 
#(
#(
 
    parameter NOC_ID = 0,
    parameter PATTERN_VJTAG_INDEX=125,
    parameter PATTERN_VJTAG_INDEX=125,
    parameter STATISTIC_VJTAG_INDEX=124,
    parameter STATISTIC_VJTAG_INDEX=124,
    parameter RAM_Aw=7,
    parameter RAM_Aw=7,
    parameter STATISTIC_NUM=8,
    parameter STATISTIC_NUM=8,
    parameter MAX_RATIO = 100,
    parameter MAX_RATIO = 100,
Line 138... Line 131...
    jtag_ctrl_reset,
    jtag_ctrl_reset,
    reset,
    reset,
    clk
    clk
);
);
 
 
 
`NOC_CONF
 
 
 
 
 
 
    input  reset,jtag_ctrl_reset, clk;
    input  reset,jtag_ctrl_reset, clk;
    input  start_i;
    input  start_i;
Line 273... Line 267...
 
 
        // seperate interfaces per router
        // seperate interfaces per router
        assign jtag_we_sep[i] = (jtag_RAM_select == i) ? jtag_we :1'b0;
        assign jtag_we_sep[i] = (jtag_RAM_select == i) ? jtag_we :1'b0;
 
 
        traffic_gen_ram #(
        traffic_gen_ram #(
 
            .NOC_ID(NOC_ID),
                .RAM_Aw(RAM_Aw),
                .RAM_Aw(RAM_Aw),
            .STATISTIC_NUM(STATISTIC_NUM),
            .STATISTIC_NUM(STATISTIC_NUM),
                .MAX_RATIO(MAX_RATIO),
                .MAX_RATIO(MAX_RATIO),
                .PCK_CNTw(PCK_CNTw),  // 1 G packets
                .PCK_CNTw(PCK_CNTw),  // 1 G packets
            .PCK_SIZw(PCK_SIZw),   // 16 K flit
            .PCK_SIZw(PCK_SIZw),   // 16 K flit
Line 316... Line 311...
*   traffic_gen_ram
*   traffic_gen_ram
*
*
*********************/
*********************/
 
 
module  traffic_gen_ram
module  traffic_gen_ram
        import pronoc_pkg::*;
 
#(
#(
 
    parameter NOC_ID=0,
    parameter RAM_Aw=7,
    parameter RAM_Aw=7,
    parameter STATISTIC_NUM=8,  // the last 8 rows of RAM is reserved for collecting statistic values;
    parameter STATISTIC_NUM=8,  // the last 8 rows of RAM is reserved for collecting statistic values;
    parameter MAX_RATIO=100,
    parameter MAX_RATIO=100,
    parameter PCK_CNTw =30,  // 1 G packets
    parameter PCK_CNTw =30,  // 1 G packets
    parameter PCK_SIZw =14,   // 16 K flit
    parameter PCK_SIZw =14,   // 16 K flit
Line 352... Line 347...
 
 
    reset,
    reset,
    clk
    clk
);
);
 
 
 
    `NOC_CONF
 
 
    function integer log2;
 
      input integer number; begin
 
         log2=0;
 
         while(2**log2
 
            log2=log2+1;
 
         end
 
      end
 
    endfunction // log2
 
 
 
 
 
  //  localparam   MAX_PATTERN =  (2**RAM_Aw)-1;   // support up to MAX_PATTERN different injections pattern
  //  localparam   MAX_PATTERN =  (2**RAM_Aw)-1;   // support up to MAX_PATTERN different injections pattern
 
 
 
 
Line 503... Line 491...
 
 
 assign start_traffic = counter == 4'b1100; // delaied for 12 clock cycles
 assign start_traffic = counter == 4'b1100; // delaied for 12 clock cycles
 
 
 
 
  traffic_gen_top #(
  traffic_gen_top #(
 
        .NOC_ID(NOC_ID),
        .MAX_RATIO(MAX_RATIO)
        .MAX_RATIO(MAX_RATIO)
    )
    )
    the_traffic_gen
    the_traffic_gen
    (
    (
 
 

powered by: WebSVN 2.1.0

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