69 lines
2.9 KiB
Coq
69 lines
2.9 KiB
Coq
|
//+FHDR--------------------------------------------------------------------------------------------------------
|
||
|
// Company:
|
||
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
// File Name : qbmcu_datalatch.v
|
||
|
// Department :
|
||
|
// Author : PWY
|
||
|
// Author's Tel :
|
||
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
// Relese History
|
||
|
// Version Date Author Description
|
||
|
// 0.1 2024-03-13 PWY The operation of latch and hold, eliminating invalid toggling to
|
||
|
// reduce dynamic power consumption.
|
||
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
// 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_datalatch #(
|
||
|
parameter DECINFO_GRP_OP = `QBMCU_DECINFO_GRP_AGU )
|
||
|
(
|
||
|
input [`QBMCU_XLEN-1 :0] i_rs1
|
||
|
,input [`QBMCU_XLEN-1 :0] i_rs2
|
||
|
,input [`QBMCU_XLEN-1 :0] i_imm
|
||
|
,input [`QBMCU_DECINFO_WIDTH-1 :0] i_info
|
||
|
,input [`QBMCU_PC_SIZE-1 :0] i_pc
|
||
|
,input i_ilegl
|
||
|
|
||
|
,output [`QBMCU_XLEN-1 :0] o_rs1
|
||
|
,output [`QBMCU_XLEN-1 :0] o_rs2
|
||
|
,output [`QBMCU_XLEN-1 :0] o_imm
|
||
|
,output [`QBMCU_DECINFO_WIDTH-1 :0] o_info
|
||
|
,output [`QBMCU_PC_SIZE-1 :0] o_pc
|
||
|
,output o_op
|
||
|
);
|
||
|
|
||
|
|
||
|
wire op = (~i_ilegl) & (i_info[`QBMCU_DECINFO_GRP] == DECINFO_GRP_OP);
|
||
|
|
||
|
|
||
|
assign o_rs1 = {`QBMCU_XLEN {op}} & i_rs1 ;
|
||
|
assign o_rs2 = {`QBMCU_XLEN {op}} & i_rs2 ;
|
||
|
assign o_imm = {`QBMCU_XLEN {op}} & i_imm ;
|
||
|
assign o_info = {`QBMCU_DECINFO_WIDTH{op}} & i_info ;
|
||
|
assign o_pc = {`QBMCU_PC_SIZE {op}} & i_pc ;
|
||
|
|
||
|
assign o_op = op;
|
||
|
|
||
|
endmodule
|
||
|
`include "qbmcu_undefines.v"
|