diff --git a/src/load_unit.sv b/src/load_unit.sv index 9828b9f24..6af9c8797 100644 --- a/src/load_unit.sv +++ b/src/load_unit.sv @@ -1,3 +1,21 @@ +// Author: Florian Zaruba, ETH Zurich +// Date: 22.05.2017 +// Description: Load Unit, takes care of all load requests +// +// Copyright (C) 2017 ETH Zurich, University of Bologna +// All rights reserved. +// +// This code is under development and not yet released to the public. +// Until it is released, the code is under the copyright of ETH Zurich and +// the University of Bologna, and may contain confidential and/or unpublished +// work. Any reuse/redistribution is strictly forbidden without written +// permission from ETH Zurich. +// +// Bug fixes and contributions will eventually be released under the +// SolderPad open hardware license in the context of the PULP platform +// (http://www.pulp-platform.org), under the copyright of ETH Zurich and the +// University of Bologna. +// import ariane_pkg::*; module load_unit ( diff --git a/src/lsu.sv b/src/lsu.sv index 6e76cf666..5cf766509 100644 --- a/src/lsu.sv +++ b/src/lsu.sv @@ -180,13 +180,16 @@ module lsu #( // Load Unit // ------------------ + // --------------------- + // Result Sequentialize + // --------------------- + // ------------------ - // LSU Control (FSM) + // LSU Control // ------------------ // is the operation a load or store or nothing of relevance for the LSU enum logic [1:0] { NONE, LD_OP, ST_OP } op; - // connect the load logic to the memory arbiter - // assign address_i[1] = paddr_o; + always_comb begin : lsu_control end diff --git a/src/lsu_arbiter.sv b/src/lsu_arbiter.sv index e69de29bb..af1af9894 100644 --- a/src/lsu_arbiter.sv +++ b/src/lsu_arbiter.sv @@ -0,0 +1,43 @@ +// Author: Florian Zaruba, ETH Zurich +// Date: 22.05.2017 +// Description: Arbitrates the LSU result port +// +// Copyright (C) 2017 ETH Zurich, University of Bologna +// All rights reserved. +// +// This code is under development and not yet released to the public. +// Until it is released, the code is under the copyright of ETH Zurich and +// the University of Bologna, and may contain confidential and/or unpublished +// work. Any reuse/redistribution is strictly forbidden without written +// permission from ETH Zurich. +// +// Bug fixes and contributions will eventually be released under the +// SolderPad open hardware license in the context of the PULP platform +// (http://www.pulp-platform.org), under the copyright of ETH Zurich and the +// University of Bologna. + +import ariane_pkg::*; + +module lsu_arbiter ( + input logic clk_i, // Clock + input logic rst_ni, // Asynchronous reset active low + input logic flush_i, + // Load Port + input logic ld_valid_i, + input logic ld_ready_i, + input logic [TRANS_ID_BITS-1:0] ld_trans_id_i, + input logic [63:0] ld_result_i, + // Store Port + input logic st_valid_i, + input logic st_ready_i, + input logic [TRANS_ID_BITS-1:0] st_trans_id_i, + input logic [63:0] st_result_i, + // Output Port + output logic valid_o, + output logic ready_o, + output logic [TRANS_ID_BITS-1:0] trans_id_o, + output logic [63:0] result_o +); + + +endmodule \ No newline at end of file diff --git a/src/store_unit.sv b/src/store_unit.sv index 052d895ec..96e0657f7 100644 --- a/src/store_unit.sv +++ b/src/store_unit.sv @@ -1,3 +1,21 @@ +// Author: Florian Zaruba, ETH Zurich +// Date: 22.05.2017 +// Description: Store Unit, takes care of all store requests +// +// Copyright (C) 2017 ETH Zurich, University of Bologna +// All rights reserved. +// +// This code is under development and not yet released to the public. +// Until it is released, the code is under the copyright of ETH Zurich and +// the University of Bologna, and may contain confidential and/or unpublished +// work. Any reuse/redistribution is strictly forbidden without written +// permission from ETH Zurich. +// +// Bug fixes and contributions will eventually be released under the +// SolderPad open hardware license in the context of the PULP platform +// (http://www.pulp-platform.org), under the copyright of ETH Zurich and the +// University of Bologna. + import ariane_pkg::*; module store_unit (