90 lines
4.1 KiB
Coq
90 lines
4.1 KiB
Coq
|
//+FHDR--------------------------------------------------------------------------------------------------------
|
||
|
// Company:
|
||
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
// File Name : qbmcu_exu_alu_ext.v
|
||
|
// Department :
|
||
|
// Author : PWY
|
||
|
// Author's Tel :
|
||
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
// Relese History
|
||
|
// Version Date Author Description
|
||
|
// 0.1 2024-03-13 PWY The Write-Back module to arbitrate the write-back request to regfile
|
||
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
// Keywords :
|
||
|
//
|
||
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
// Parameter
|
||
|
//
|
||
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
// Purpose :
|
||
|
//
|
||
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
// Target Device:
|
||
|
// Tool versions:
|
||
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
// Reuse Issues
|
||
|
// Reset Strategy:
|
||
|
// Clock Domains:
|
||
|
// Critical Timing:
|
||
|
// Asynchronous I/F:
|
||
|
// Synthesizable (y/n):
|
||
|
// Other:
|
||
|
//-FHDR--------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
`include "qbmcu_defines.v"
|
||
|
|
||
|
module qbmcu_wbck(
|
||
|
//system port
|
||
|
input clk
|
||
|
,input rst_n
|
||
|
//The enable signal from the master control state machine
|
||
|
,input wbck_i_active
|
||
|
//Write-back target register index from the decoding module
|
||
|
,input [`QBMCU_RFIDX_WIDTH-1 :0] wbck_i_rdidx
|
||
|
//Write enable for the write-back target register from the decoding module
|
||
|
,input wbck_i_rdwen
|
||
|
//////////////////////////////////////////////////////////////
|
||
|
// The BJP Write-Back Interface
|
||
|
,input [`QBMCU_XLEN-1 :0] bjp_i_wbck_wdat
|
||
|
,input bjp_i_wbck_valid
|
||
|
// The AGU Write-Back Interface
|
||
|
,input [`QBMCU_XLEN-1 :0] agu_i_wbck_wdat
|
||
|
,input agu_i_wbck_valid
|
||
|
// The ALU Write-Back Interface
|
||
|
,input [`QBMCU_XLEN-1 :0] alu_i_wbck_wdat
|
||
|
,input alu_i_wbck_valid
|
||
|
// The Ext Write-Back Interface
|
||
|
,input [`QBMCU_XLEN-1 :0] ext_i_wbck_wdat
|
||
|
,input ext_i_wbck_valid
|
||
|
|
||
|
//////////////////////////////////////////////////////////////
|
||
|
// The Final arbitrated Write-Back Interface to Regfile
|
||
|
,output wbck_o_ena
|
||
|
,output [`QBMCU_XLEN-1 :0] wbck_o_wdat
|
||
|
,output [`QBMCU_RFIDX_WIDTH-1 :0] wbck_o_rdidx
|
||
|
|
||
|
);
|
||
|
|
||
|
//Write-back data multiplexer
|
||
|
wire [`QBMCU_XLEN-1:0] wbck_i_wdat = {`QBMCU_XLEN{bjp_i_wbck_valid}} & bjp_i_wbck_wdat
|
||
|
| {`QBMCU_XLEN{agu_i_wbck_valid}} & agu_i_wbck_wdat
|
||
|
| {`QBMCU_XLEN{alu_i_wbck_valid}} & alu_i_wbck_wdat
|
||
|
| {`QBMCU_XLEN{ext_i_wbck_valid}} & ext_i_wbck_wdat;
|
||
|
|
||
|
|
||
|
//Assigning Write-back module output signal values
|
||
|
wire wbck_o_ena_w = wbck_i_rdwen & wbck_i_active;
|
||
|
|
||
|
sirv_gnrl_dffr #(1)wbck_o_ena_dffr (wbck_o_ena_w, wbck_o_ena, clk, rst_n);
|
||
|
|
||
|
assign wbck_o_wdat = wbck_i_wdat[`QBMCU_XLEN-1:0];
|
||
|
//assign wbck_o_rdidx = wbck_i_rdidx;
|
||
|
|
||
|
sirv_gnrl_dfflr #(`QBMCU_RFIDX_WIDTH)wbck_o_rdidx_dfflr (wbck_i_active, wbck_i_rdidx, wbck_o_rdidx, clk, rst_n);
|
||
|
|
||
|
|
||
|
endmodule
|
||
|
|
||
|
`include "qbmcu_undefines.v"
|
||
|
|