// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: niu_txc_portRequest.v
// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// For the avoidance of doubt, and except that if any non-GPL license
// choice is available it will apply instead, Sun elects to use only
// the General Public License version 2 (GPLv2) at this time for any
// software where a choice of GPL license versions is made
// available with the language indicating that GPLv2 or any later version
// may be used, or where a choice of which version of the GPL is applied is
// otherwise unspecified.
// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
// CA 95054 USA or visit www.sun.com if you need additional information or
// ========== Copyright Header End ============================================
/*********************************************************************
* Orignal Author(s): Rahoul Puri
* Copyright (c) 2004 Sun Microsystems, Inc.
* This verilog model is the confidential and proprietary property of
* Sun Microsystems, Inc., and the possession or use of this model
* requires a written license from Sun Microsystems, Inc.
**********************************************************************/
module niu_txc_portRequest (
output [23:0] DMA_Pkt_Size_Err;
output [43:0] Pkt_Size_Err_Addr;
reg [23:0] DMA_Pkt_Size_Err;
reg [43:0] Pkt_Size_Err_Addr;
input [1:0] DMA0_Func_Num;
input [3:0] DMA0_DescList;
input [12:0] DMA0_Length;
input [19:0] DMA0_PageHandle;
input [43:0] DMA0_Address;
output SetGetNextDescDMA0;
input [1:0] DMA1_Func_Num;
input [3:0] DMA1_DescList;
input [12:0] DMA1_Length;
input [19:0] DMA1_PageHandle;
input [43:0] DMA1_Address;
output SetGetNextDescDMA1;
input [1:0] DMA2_Func_Num;
input [3:0] DMA2_DescList;
input [12:0] DMA2_Length;
input [19:0] DMA2_PageHandle;
input [43:0] DMA2_Address;
output SetGetNextDescDMA2;
input [1:0] DMA3_Func_Num;
input [3:0] DMA3_DescList;
input [12:0] DMA3_Length;
input [19:0] DMA3_PageHandle;
input [43:0] DMA3_Address;
output SetGetNextDescDMA3;
input [1:0] DMA4_Func_Num;
input [3:0] DMA4_DescList;
input [12:0] DMA4_Length;
input [19:0] DMA4_PageHandle;
input [43:0] DMA4_Address;
output SetGetNextDescDMA4;
input [1:0] DMA5_Func_Num;
input [3:0] DMA5_DescList;
input [12:0] DMA5_Length;
input [19:0] DMA5_PageHandle;
input [43:0] DMA5_Address;
output SetGetNextDescDMA5;
input [1:0] DMA6_Func_Num;
input [3:0] DMA6_DescList;
input [12:0] DMA6_Length;
input [19:0] DMA6_PageHandle;
input [43:0] DMA6_Address;
output SetGetNextDescDMA6;
input [1:0] DMA7_Func_Num;
input [3:0] DMA7_DescList;
input [12:0] DMA7_Length;
input [19:0] DMA7_PageHandle;
input [43:0] DMA7_Address;
output SetGetNextDescDMA7;
input [1:0] DMA8_Func_Num;
input [3:0] DMA8_DescList;
input [12:0] DMA8_Length;
input [19:0] DMA8_PageHandle;
input [43:0] DMA8_Address;
output SetGetNextDescDMA8;
input [1:0] DMA9_Func_Num;
input [3:0] DMA9_DescList;
input [12:0] DMA9_Length;
input [19:0] DMA9_PageHandle;
input [43:0] DMA9_Address;
output SetGetNextDescDMA9;
input [1:0] DMA10_Func_Num;
input [3:0] DMA10_DescList;
input [12:0] DMA10_Length;
input [19:0] DMA10_PageHandle;
input [43:0] DMA10_Address;
output SetGetNextDescDMA10;
input [1:0] DMA11_Func_Num;
input [3:0] DMA11_DescList;
input [12:0] DMA11_Length;
input [19:0] DMA11_PageHandle;
input [43:0] DMA11_Address;
output SetGetNextDescDMA11;
input [1:0] DMA12_Func_Num;
input [3:0] DMA12_DescList;
input [12:0] DMA12_Length;
input [19:0] DMA12_PageHandle;
input [43:0] DMA12_Address;
output SetGetNextDescDMA12;
input [1:0] DMA13_Func_Num;
input [3:0] DMA13_DescList;
input [12:0] DMA13_Length;
input [19:0] DMA13_PageHandle;
input [43:0] DMA13_Address;
output SetGetNextDescDMA13;
input [1:0] DMA14_Func_Num;
input [3:0] DMA14_DescList;
input [12:0] DMA14_Length;
input [19:0] DMA14_PageHandle;
input [43:0] DMA14_Address;
output SetGetNextDescDMA14;
input [1:0] DMA15_Func_Num;
input [3:0] DMA15_DescList;
input [12:0] DMA15_Length;
input [19:0] DMA15_PageHandle;
input [43:0] DMA15_Address;
output SetGetNextDescDMA15;
input [1:0] DMA16_Func_Num;
input [3:0] DMA16_DescList;
input [12:0] DMA16_Length;
input [19:0] DMA16_PageHandle;
input [43:0] DMA16_Address;
output SetGetNextDescDMA16;
input [1:0] DMA17_Func_Num;
input [3:0] DMA17_DescList;
input [12:0] DMA17_Length;
input [19:0] DMA17_PageHandle;
input [43:0] DMA17_Address;
output SetGetNextDescDMA17;
input [1:0] DMA18_Func_Num;
input [3:0] DMA18_DescList;
input [12:0] DMA18_Length;
input [19:0] DMA18_PageHandle;
input [43:0] DMA18_Address;
output SetGetNextDescDMA18;
input [1:0] DMA19_Func_Num;
input [3:0] DMA19_DescList;
input [12:0] DMA19_Length;
input [19:0] DMA19_PageHandle;
input [43:0] DMA19_Address;
output SetGetNextDescDMA19;
input [1:0] DMA20_Func_Num;
input [3:0] DMA20_DescList;
input [12:0] DMA20_Length;
input [19:0] DMA20_PageHandle;
input [43:0] DMA20_Address;
output SetGetNextDescDMA20;
input [1:0] DMA21_Func_Num;
input [3:0] DMA21_DescList;
input [12:0] DMA21_Length;
input [19:0] DMA21_PageHandle;
input [43:0] DMA21_Address;
output SetGetNextDescDMA21;
input [1:0] DMA22_Func_Num;
input [3:0] DMA22_DescList;
input [12:0] DMA22_Length;
input [19:0] DMA22_PageHandle;
input [43:0] DMA22_Address;
output SetGetNextDescDMA22;
input [1:0] DMA23_Func_Num;
input [3:0] DMA23_DescList;
input [12:0] DMA23_Length;
input [19:0] DMA23_PageHandle;
input [43:0] DMA23_Address;
output SetGetNextDescDMA23;
input [4:0] DRR_NextDMAChannel;
output [15:0] PacketByteCount;
reg [15:0] PacketByteCount;
output Anchor_GatherLast;
output [5:0] Anchor_TransID;
output [12:0] Anchor_Length;
output [63:0] Anchor_Address;
reg [5:0] Anchor_TransID;
reg [12:0] Anchor_Length;
reg [63:0] Anchor_Address;
input [5:0] DMC_TXC_Req_TransID;
output [1:0] Port_Request_Func_Num;
output [4:0] Port_Request_DMA_Num;
output [12:0] Port_Request_Length;
output [63:0] Port_Request_Address;
reg [1:0] Port_Request_Func_Num;
reg [4:0] Port_Request_DMA_Num;
reg [12:0] Port_Request_Length;
reg [63:0] Port_Request_Address;
output [3:0] DataPortReq_State;
reg [3:0] DataPortReq_State;
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
wire [63:0] requestAddress;
reg setGetNextDescriptor;
reg [1:0] dmaFunctionNumber;
reg [3:0] nextPortReqState;
reg [3:0] descriptorList;
reg [3:0] anchorDescList;
reg [12:0] anchorLengthD1;
reg [23:0] currentDMAChannel;
reg [43:0] anchorAddress;
/*--------------------------------------------------------------*/
// Parameters and Defines
/*--------------------------------------------------------------*/
parameter PORT_REQUEST_IDLE = 4'h0,
CHECK_FOR_DESCRIPTOR = 4'h1,
WAIT_FOR_REQ_ACCEPT = 4'h5,
WAIT_FOR_NEXT_DESC = 4'h6,
CHECK_PACKET_SIZE = 4'h7,
WAIT_FOR_DRR_UPDATE = 4'h8,
// synopsys translate_off
reg [192:1] PORT_REQUEST_STATE;
always @(DataPortReq_State)
PORT_REQUEST_IDLE : PORT_REQUEST_STATE = "PORT_REQUEST_IDLE";
CHECK_FOR_DESCRIPTOR : PORT_REQUEST_STATE = "CHECK_FOR_DESCRIPTOR";
REQ_ANCHOR : PORT_REQUEST_STATE = "REQ_ANCHOR";
WAIT_FOR_ANCHOR : PORT_REQUEST_STATE = "WAIT_FOR_ANCHOR";
PORT_REQUEST: PORT_REQUEST_STATE = "PORT_REQUEST";
WAIT_FOR_REQ_ACCEPT : PORT_REQUEST_STATE = "WAIT_FOR_REQ_ACCEPT";
WAIT_FOR_NEXT_DESC : PORT_REQUEST_STATE = "WAIT_FOR_NEXT_DESC";
CHECK_PACKET_SIZE : PORT_REQUEST_STATE = "CHECK_PACKET_SIZE";
WAIT_FOR_DRR_UPDATE : PORT_REQUEST_STATE = "WAIT_FOR_DRR_UPDATE";
ERROR_STATE : PORT_REQUEST_STATE = "ERROR_STATE";
default : PORT_REQUEST_STATE = "UNKNOWN";
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
assign sopBitNotSet = ~sopBitSet;
/*--------------------------------------------------------------*/
// DRR_NextDMAChannel to one hot encoding
/*--------------------------------------------------------------*/
always @(DRR_NextDMAChannel
case(DRR_NextDMAChannel) // synopsys full_case parallel_case
`DMA_CHANNEL_ZERO: currentDMAChannel = 24'h000001;
`DMA_CHANNEL_ONE: currentDMAChannel = 24'h000002;
`DMA_CHANNEL_TWO: currentDMAChannel = 24'h000004;
`DMA_CHANNEL_THREE: currentDMAChannel = 24'h000008;
`DMA_CHANNEL_FOUR: currentDMAChannel = 24'h000010;
`DMA_CHANNEL_FIVE: currentDMAChannel = 24'h000020;
`DMA_CHANNEL_SIX: currentDMAChannel = 24'h000040;
`DMA_CHANNEL_SEVEN: currentDMAChannel = 24'h000080;
`DMA_CHANNEL_EIGHT: currentDMAChannel = 24'h000100;
`DMA_CHANNEL_NINE: currentDMAChannel = 24'h000200;
`DMA_CHANNEL_TEN: currentDMAChannel = 24'h000400;
`DMA_CHANNEL_ELEVEN: currentDMAChannel = 24'h000800;
`DMA_CHANNEL_TWELVE: currentDMAChannel = 24'h001000;
`DMA_CHANNEL_THIRTEEN: currentDMAChannel = 24'h002000;
`DMA_CHANNEL_FOURTEEN: currentDMAChannel = 24'h004000;
`DMA_CHANNEL_FIFTEEN: currentDMAChannel = 24'h008000;
`DMA_CHANNEL_SIXTEEN: currentDMAChannel = 24'h010000;
`DMA_CHANNEL_SEVENTEEN: currentDMAChannel = 24'h020000;
`DMA_CHANNEL_EIGHTEEN: currentDMAChannel = 24'h040000;
`DMA_CHANNEL_NINETEEN: currentDMAChannel = 24'h080000;
`DMA_CHANNEL_TWENTY: currentDMAChannel = 24'h100000;
`DMA_CHANNEL_TWENTYONE: currentDMAChannel = 24'h200000;
`DMA_CHANNEL_TWENTYTWO: currentDMAChannel = 24'h400000;
`DMA_CHANNEL_TWENTYTHREE: currentDMAChannel = 24'h800000;
default: currentDMAChannel = 24'hx;
/*--------------------------------------------------------------*/
// Request State Variables
/*--------------------------------------------------------------*/
if (!Reset_L) portRequestDone <= #`SD 1'b0;
else portRequestDone <= #`SD (DMC_TXC_Req_Ack & Port_Selected);
/*--------------------------------------------------------------*/
// Anchor Request State Variables
/*--------------------------------------------------------------*/
assign requestAddress = {pageHandle, anchorAddress};
if (!Reset_L) Req_Anchor <= #`SD 1'b0;
else if (anchorRequest) Req_Anchor <= #`SD 1'b1;
else if (Anchor_Done) Req_Anchor <= #`SD 1'b0;
if (!Reset_L) Anchor_Length <= #`SD 13'h0;
else Anchor_Length <= #`SD anchorLength;
if (!Reset_L) Anchor_Address <= #`SD 64'h0;
else Anchor_Address <= #`SD requestAddress;
if (!Reset_L) Anchor_MarkBit <= #`SD 1'b0;
else Anchor_MarkBit <= #`SD markBitSet;
if (!Reset_L) Anchor_SopBit <= #`SD 1'b0;
else Anchor_SopBit <= #`SD sopBitSet;
if (!Reset_L) Anchor_GatherLast <= #`SD 1'b0;
else Anchor_GatherLast <= #`SD singleDescriptor;
if (!Reset_L) Anchor_DMA <= #`SD 5'h0;
else Anchor_DMA <= #`SD DRR_NextDMAChannel;
if (!Reset_L) Anchor_TransID <= #`SD 6'h0;
else if (Port_Selected) Anchor_TransID <= #`SD DMC_TXC_Req_TransID;
else Anchor_TransID <= #`SD 6'h0;
if (!Reset_L) Anchor_LoadTID <= #`SD 1'b0;
else if (Port_Selected) Anchor_LoadTID <= #`SD DMC_TXC_Req_Ack;
else Anchor_LoadTID <= #`SD 1'b0;
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
if (!Reset_L) Port_Request <= #`SD 1'b0;
else if (setPortRequest) Port_Request <= #`SD 1'b1;
else if (DMC_TXC_Req_Ack & Port_Selected) Port_Request <= #`SD 1'b0;
if (!Reset_L) Port_Request_Func_Num <= #`SD 2'h0;
else if (setPortRequest) Port_Request_Func_Num <= #`SD dmaFunctionNumber;
if (!Reset_L) Port_Request_DMA_Num <= #`SD 5'h0;
else if (setPortRequest) Port_Request_DMA_Num <= #`SD DRR_NextDMAChannel;
if (!Reset_L) Port_Request_Length <= #`SD 13'h0;
else if (setPortRequest) Port_Request_Length <= #`SD anchorLength;
if (!Reset_L) Port_Request_Address <= #`SD 64'h0;
else if (setPortRequest) Port_Request_Address <= #`SD requestAddress;
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
always @(/*AUTOSENSE*/DRR_NextDMAChannel
or DMA23_Func_Num or DMA22_Func_Num or DMA21_Func_Num
or DMA20_Func_Num or DMA19_Func_Num or DMA18_Func_Num
or DMA17_Func_Num or DMA16_Func_Num or DMA15_Func_Num
or DMA14_Func_Num or DMA13_Func_Num or DMA12_Func_Num
or DMA11_Func_Num or DMA10_Func_Num or DMA9_Func_Num
or DMA8_Func_Num or DMA7_Func_Num or DMA6_Func_Num
or DMA5_Func_Num or DMA4_Func_Num or DMA3_Func_Num
or DMA2_Func_Num or DMA1_Func_Num or DMA0_Func_Num
case(DRR_NextDMAChannel) // synopsys full_case parallel_case
`DMA_CHANNEL_ZERO: dmaFunctionNumber = DMA0_Func_Num;
`DMA_CHANNEL_ONE: dmaFunctionNumber = DMA1_Func_Num;
`DMA_CHANNEL_TWO: dmaFunctionNumber = DMA2_Func_Num;
`DMA_CHANNEL_THREE: dmaFunctionNumber = DMA3_Func_Num;
`DMA_CHANNEL_FOUR: dmaFunctionNumber = DMA4_Func_Num;
`DMA_CHANNEL_FIVE: dmaFunctionNumber = DMA5_Func_Num;
`DMA_CHANNEL_SIX: dmaFunctionNumber = DMA6_Func_Num;
`DMA_CHANNEL_SEVEN: dmaFunctionNumber = DMA7_Func_Num;
`DMA_CHANNEL_EIGHT: dmaFunctionNumber = DMA8_Func_Num;
`DMA_CHANNEL_NINE: dmaFunctionNumber = DMA9_Func_Num;
`DMA_CHANNEL_TEN: dmaFunctionNumber = DMA10_Func_Num;
`DMA_CHANNEL_ELEVEN: dmaFunctionNumber = DMA11_Func_Num;
`DMA_CHANNEL_TWELVE: dmaFunctionNumber = DMA12_Func_Num;
`DMA_CHANNEL_THIRTEEN: dmaFunctionNumber = DMA13_Func_Num;
`DMA_CHANNEL_FOURTEEN: dmaFunctionNumber = DMA14_Func_Num;
`DMA_CHANNEL_FIFTEEN: dmaFunctionNumber = DMA15_Func_Num;
`DMA_CHANNEL_SIXTEEN: dmaFunctionNumber = DMA16_Func_Num;
`DMA_CHANNEL_SEVENTEEN: dmaFunctionNumber = DMA17_Func_Num;
`DMA_CHANNEL_EIGHTEEN: dmaFunctionNumber = DMA18_Func_Num;
`DMA_CHANNEL_NINETEEN: dmaFunctionNumber = DMA19_Func_Num;
`DMA_CHANNEL_TWENTY: dmaFunctionNumber = DMA20_Func_Num;
`DMA_CHANNEL_TWENTYONE: dmaFunctionNumber = DMA21_Func_Num;
`DMA_CHANNEL_TWENTYTWO: dmaFunctionNumber = DMA22_Func_Num;
`DMA_CHANNEL_TWENTYTHREE: dmaFunctionNumber = DMA23_Func_Num;
default: dmaFunctionNumber = 2'hx;
always @(/*AUTOSENSE*/DRR_NextDMAChannel
or DMA23_SOP or DMA22_SOP or DMA21_SOP or DMA20_SOP
or DMA19_SOP or DMA18_SOP or DMA17_SOP or DMA16_SOP
or DMA15_SOP or DMA14_SOP or DMA13_SOP or DMA12_SOP
or DMA11_SOP or DMA10_SOP or DMA9_SOP or DMA8_SOP
or DMA7_SOP or DMA6_SOP or DMA5_SOP or DMA4_SOP
or DMA3_SOP or DMA2_SOP or DMA1_SOP or DMA0_SOP
case(DRR_NextDMAChannel) // synopsys full_case parallel_case
`DMA_CHANNEL_ZERO: sopBitSet = DMA0_SOP;
`DMA_CHANNEL_ONE: sopBitSet = DMA1_SOP;
`DMA_CHANNEL_TWO: sopBitSet = DMA2_SOP;
`DMA_CHANNEL_THREE: sopBitSet = DMA3_SOP;
`DMA_CHANNEL_FOUR: sopBitSet = DMA4_SOP;
`DMA_CHANNEL_FIVE: sopBitSet = DMA5_SOP;
`DMA_CHANNEL_SIX: sopBitSet = DMA6_SOP;
`DMA_CHANNEL_SEVEN: sopBitSet = DMA7_SOP;
`DMA_CHANNEL_EIGHT: sopBitSet = DMA8_SOP;
`DMA_CHANNEL_NINE: sopBitSet = DMA9_SOP;
`DMA_CHANNEL_TEN: sopBitSet = DMA10_SOP;
`DMA_CHANNEL_ELEVEN: sopBitSet = DMA11_SOP;
`DMA_CHANNEL_TWELVE: sopBitSet = DMA12_SOP;
`DMA_CHANNEL_THIRTEEN: sopBitSet = DMA13_SOP;
`DMA_CHANNEL_FOURTEEN: sopBitSet = DMA14_SOP;
`DMA_CHANNEL_FIFTEEN: sopBitSet = DMA15_SOP;
`DMA_CHANNEL_SIXTEEN: sopBitSet = DMA16_SOP;
`DMA_CHANNEL_SEVENTEEN: sopBitSet = DMA17_SOP;
`DMA_CHANNEL_EIGHTEEN: sopBitSet = DMA18_SOP;
`DMA_CHANNEL_NINETEEN: sopBitSet = DMA19_SOP;
`DMA_CHANNEL_TWENTY: sopBitSet = DMA20_SOP;
`DMA_CHANNEL_TWENTYONE: sopBitSet = DMA21_SOP;
`DMA_CHANNEL_TWENTYTWO: sopBitSet = DMA22_SOP;
`DMA_CHANNEL_TWENTYTHREE: sopBitSet = DMA23_SOP;
default: sopBitSet = 1'bx;
always @(/*AUTOSENSE*/DRR_NextDMAChannel
or DMA23_EofList or DMA22_EofList or DMA21_EofList or DMA20_EofList
or DMA19_EofList or DMA18_EofList or DMA17_EofList or DMA16_EofList
or DMA15_EofList or DMA14_EofList or DMA13_EofList or DMA12_EofList
or DMA11_EofList or DMA10_EofList or DMA9_EofList or DMA8_EofList
or DMA7_EofList or DMA6_EofList or DMA5_EofList or DMA4_EofList
or DMA3_EofList or DMA2_EofList or DMA1_EofList or DMA0_EofList
case(DRR_NextDMAChannel) // synopsys full_case parallel_case
`DMA_CHANNEL_ZERO: eofListBitSet = DMA0_EofList;
`DMA_CHANNEL_ONE: eofListBitSet = DMA1_EofList;
`DMA_CHANNEL_TWO: eofListBitSet = DMA2_EofList;
`DMA_CHANNEL_THREE: eofListBitSet = DMA3_EofList;
`DMA_CHANNEL_FOUR: eofListBitSet = DMA4_EofList;
`DMA_CHANNEL_FIVE: eofListBitSet = DMA5_EofList;
`DMA_CHANNEL_SIX: eofListBitSet = DMA6_EofList;
`DMA_CHANNEL_SEVEN: eofListBitSet = DMA7_EofList;
`DMA_CHANNEL_EIGHT: eofListBitSet = DMA8_EofList;
`DMA_CHANNEL_NINE: eofListBitSet = DMA9_EofList;
`DMA_CHANNEL_TEN: eofListBitSet = DMA10_EofList;
`DMA_CHANNEL_ELEVEN: eofListBitSet = DMA11_EofList;
`DMA_CHANNEL_TWELVE: eofListBitSet = DMA12_EofList;
`DMA_CHANNEL_THIRTEEN: eofListBitSet = DMA13_EofList;
`DMA_CHANNEL_FOURTEEN: eofListBitSet = DMA14_EofList;
`DMA_CHANNEL_FIFTEEN: eofListBitSet = DMA15_EofList;
`DMA_CHANNEL_SIXTEEN: eofListBitSet = DMA16_EofList;
`DMA_CHANNEL_SEVENTEEN: eofListBitSet = DMA17_EofList;
`DMA_CHANNEL_EIGHTEEN: eofListBitSet = DMA18_EofList;
`DMA_CHANNEL_NINETEEN: eofListBitSet = DMA19_EofList;
`DMA_CHANNEL_TWENTY: eofListBitSet = DMA20_EofList;
`DMA_CHANNEL_TWENTYONE: eofListBitSet = DMA21_EofList;
`DMA_CHANNEL_TWENTYTWO: eofListBitSet = DMA22_EofList;
`DMA_CHANNEL_TWENTYTHREE: eofListBitSet = DMA23_EofList;
default: eofListBitSet = 1'bx;
always @(/*AUTOSENSE*/DRR_NextDMAChannel
or DMA23_Error or DMA22_Error or DMA21_Error or DMA20_Error
or DMA19_Error or DMA18_Error or DMA17_Error or DMA16_Error
or DMA15_Error or DMA14_Error or DMA13_Error or DMA12_Error
or DMA11_Error or DMA10_Error or DMA9_Error or DMA8_Error
or DMA7_Error or DMA6_Error or DMA5_Error or DMA4_Error
or DMA3_Error or DMA2_Error or DMA1_Error or DMA0_Error
case(DRR_NextDMAChannel) // synopsys full_case parallel_case
`DMA_CHANNEL_ZERO: errorBitSet = DMA0_Error;
`DMA_CHANNEL_ONE: errorBitSet = DMA1_Error;
`DMA_CHANNEL_TWO: errorBitSet = DMA2_Error;
`DMA_CHANNEL_THREE: errorBitSet = DMA3_Error;
`DMA_CHANNEL_FOUR: errorBitSet = DMA4_Error;
`DMA_CHANNEL_FIVE: errorBitSet = DMA5_Error;
`DMA_CHANNEL_SIX: errorBitSet = DMA6_Error;
`DMA_CHANNEL_SEVEN: errorBitSet = DMA7_Error;
`DMA_CHANNEL_EIGHT: errorBitSet = DMA8_Error;
`DMA_CHANNEL_NINE: errorBitSet = DMA9_Error;
`DMA_CHANNEL_TEN: errorBitSet = DMA10_Error;
`DMA_CHANNEL_ELEVEN: errorBitSet = DMA11_Error;
`DMA_CHANNEL_TWELVE: errorBitSet = DMA12_Error;
`DMA_CHANNEL_THIRTEEN: errorBitSet = DMA13_Error;
`DMA_CHANNEL_FOURTEEN: errorBitSet = DMA14_Error;
`DMA_CHANNEL_FIFTEEN: errorBitSet = DMA15_Error;
`DMA_CHANNEL_SIXTEEN: errorBitSet = DMA16_Error;
`DMA_CHANNEL_SEVENTEEN: errorBitSet = DMA17_Error;
`DMA_CHANNEL_EIGHTEEN: errorBitSet = DMA18_Error;
`DMA_CHANNEL_NINETEEN: errorBitSet = DMA19_Error;
`DMA_CHANNEL_TWENTY: errorBitSet = DMA20_Error;
`DMA_CHANNEL_TWENTYONE: errorBitSet = DMA21_Error;
`DMA_CHANNEL_TWENTYTWO: errorBitSet = DMA22_Error;
`DMA_CHANNEL_TWENTYTHREE: errorBitSet = DMA23_Error;
default: errorBitSet = 1'bx;
always @(/*AUTOSENSE*/DRR_NextDMAChannel
or DMA23_Mark or DMA22_Mark or DMA21_Mark or DMA20_Mark
or DMA19_Mark or DMA18_Mark or DMA17_Mark or DMA16_Mark
or DMA15_Mark or DMA14_Mark or DMA13_Mark or DMA12_Mark
or DMA11_Mark or DMA10_Mark or DMA9_Mark or DMA8_Mark
or DMA7_Mark or DMA6_Mark or DMA5_Mark or DMA4_Mark
or DMA3_Mark or DMA2_Mark or DMA1_Mark or DMA0_Mark
case(DRR_NextDMAChannel) // synopsys full_case parallel_case
`DMA_CHANNEL_ZERO: markBitSet = DMA0_Mark;
`DMA_CHANNEL_ONE: markBitSet = DMA1_Mark;
`DMA_CHANNEL_TWO: markBitSet = DMA2_Mark;
`DMA_CHANNEL_THREE: markBitSet = DMA3_Mark;
`DMA_CHANNEL_FOUR: markBitSet = DMA4_Mark;
`DMA_CHANNEL_FIVE: markBitSet = DMA5_Mark;
`DMA_CHANNEL_SIX: markBitSet = DMA6_Mark;
`DMA_CHANNEL_SEVEN: markBitSet = DMA7_Mark;
`DMA_CHANNEL_EIGHT: markBitSet = DMA8_Mark;
`DMA_CHANNEL_NINE: markBitSet = DMA9_Mark;
`DMA_CHANNEL_TEN: markBitSet = DMA10_Mark;
`DMA_CHANNEL_ELEVEN: markBitSet = DMA11_Mark;
`DMA_CHANNEL_TWELVE: markBitSet = DMA12_Mark;
`DMA_CHANNEL_THIRTEEN: markBitSet = DMA13_Mark;
`DMA_CHANNEL_FOURTEEN: markBitSet = DMA14_Mark;
`DMA_CHANNEL_FIFTEEN: markBitSet = DMA15_Mark;
`DMA_CHANNEL_SIXTEEN: markBitSet = DMA16_Mark;
`DMA_CHANNEL_SEVENTEEN: markBitSet = DMA17_Mark;
`DMA_CHANNEL_EIGHTEEN: markBitSet = DMA18_Mark;
`DMA_CHANNEL_NINETEEN: markBitSet = DMA19_Mark;
`DMA_CHANNEL_TWENTY: markBitSet = DMA20_Mark;
`DMA_CHANNEL_TWENTYONE: markBitSet = DMA21_Mark;
`DMA_CHANNEL_TWENTYTWO: markBitSet = DMA22_Mark;
`DMA_CHANNEL_TWENTYTHREE: markBitSet = DMA23_Mark;
default: markBitSet = 1'bx;
always @(/*AUTOSENSE*/DRR_NextDMAChannel
or DMA23_Length or DMA22_Length or DMA21_Length or DMA20_Length
or DMA19_Length or DMA18_Length or DMA17_Length or DMA16_Length
or DMA15_Length or DMA14_Length or DMA13_Length or DMA12_Length
or DMA11_Length or DMA10_Length or DMA9_Length or DMA8_Length
or DMA7_Length or DMA6_Length or DMA5_Length or DMA4_Length
or DMA3_Length or DMA2_Length or DMA1_Length or DMA0_Length
case(DRR_NextDMAChannel) // synopsys full_case parallel_case
`DMA_CHANNEL_ZERO: anchorLength = DMA0_Length;
`DMA_CHANNEL_ONE: anchorLength = DMA1_Length;
`DMA_CHANNEL_TWO: anchorLength = DMA2_Length;
`DMA_CHANNEL_THREE: anchorLength = DMA3_Length;
`DMA_CHANNEL_FOUR: anchorLength = DMA4_Length;
`DMA_CHANNEL_FIVE: anchorLength = DMA5_Length;
`DMA_CHANNEL_SIX: anchorLength = DMA6_Length;
`DMA_CHANNEL_SEVEN: anchorLength = DMA7_Length;
`DMA_CHANNEL_EIGHT: anchorLength = DMA8_Length;
`DMA_CHANNEL_NINE: anchorLength = DMA9_Length;
`DMA_CHANNEL_TEN: anchorLength = DMA10_Length;
`DMA_CHANNEL_ELEVEN: anchorLength = DMA11_Length;
`DMA_CHANNEL_TWELVE: anchorLength = DMA12_Length;
`DMA_CHANNEL_THIRTEEN: anchorLength = DMA13_Length;
`DMA_CHANNEL_FOURTEEN: anchorLength = DMA14_Length;
`DMA_CHANNEL_FIFTEEN: anchorLength = DMA15_Length;
`DMA_CHANNEL_SIXTEEN: anchorLength = DMA16_Length;
`DMA_CHANNEL_SEVENTEEN: anchorLength = DMA17_Length;
`DMA_CHANNEL_EIGHTEEN: anchorLength = DMA18_Length;
`DMA_CHANNEL_NINETEEN: anchorLength = DMA19_Length;
`DMA_CHANNEL_TWENTY: anchorLength = DMA20_Length;
`DMA_CHANNEL_TWENTYONE: anchorLength = DMA21_Length;
`DMA_CHANNEL_TWENTYTWO: anchorLength = DMA22_Length;
`DMA_CHANNEL_TWENTYTHREE: anchorLength = DMA23_Length;
default: anchorLength = 13'hx;
always @(/*AUTOSENSE*/DRR_NextDMAChannel
or DMA22_PageHandle or DMA21_PageHandle or DMA20_PageHandle
or DMA19_PageHandle or DMA18_PageHandle or DMA17_PageHandle
or DMA16_PageHandle or DMA15_PageHandle or DMA14_PageHandle
or DMA13_PageHandle or DMA12_PageHandle or DMA11_PageHandle
or DMA10_PageHandle or DMA9_PageHandle or DMA8_PageHandle
or DMA7_PageHandle or DMA6_PageHandle or DMA5_PageHandle
or DMA4_PageHandle or DMA3_PageHandle or DMA2_PageHandle
or DMA1_PageHandle or DMA0_PageHandle
case(DRR_NextDMAChannel) // synopsys full_case parallel_case
`DMA_CHANNEL_ZERO: pageHandle = DMA0_PageHandle;
`DMA_CHANNEL_ONE: pageHandle = DMA1_PageHandle;
`DMA_CHANNEL_TWO: pageHandle = DMA2_PageHandle;
`DMA_CHANNEL_THREE: pageHandle = DMA3_PageHandle;
`DMA_CHANNEL_FOUR: pageHandle = DMA4_PageHandle;
`DMA_CHANNEL_FIVE: pageHandle = DMA5_PageHandle;
`DMA_CHANNEL_SIX: pageHandle = DMA6_PageHandle;
`DMA_CHANNEL_SEVEN: pageHandle = DMA7_PageHandle;
`DMA_CHANNEL_EIGHT: pageHandle = DMA8_PageHandle;
`DMA_CHANNEL_NINE: pageHandle = DMA9_PageHandle;
`DMA_CHANNEL_TEN: pageHandle = DMA10_PageHandle;
`DMA_CHANNEL_ELEVEN: pageHandle = DMA11_PageHandle;
`DMA_CHANNEL_TWELVE: pageHandle = DMA12_PageHandle;
`DMA_CHANNEL_THIRTEEN: pageHandle = DMA13_PageHandle;
`DMA_CHANNEL_FOURTEEN: pageHandle = DMA14_PageHandle;
`DMA_CHANNEL_FIFTEEN: pageHandle = DMA15_PageHandle;
`DMA_CHANNEL_SIXTEEN: pageHandle = DMA16_PageHandle;
`DMA_CHANNEL_SEVENTEEN: pageHandle = DMA17_PageHandle;
`DMA_CHANNEL_EIGHTEEN: pageHandle = DMA18_PageHandle;
`DMA_CHANNEL_NINETEEN: pageHandle = DMA19_PageHandle;
`DMA_CHANNEL_TWENTY: pageHandle = DMA20_PageHandle;
`DMA_CHANNEL_TWENTYONE: pageHandle = DMA21_PageHandle;
`DMA_CHANNEL_TWENTYTWO: pageHandle = DMA22_PageHandle;
`DMA_CHANNEL_TWENTYTHREE: pageHandle = DMA23_PageHandle;
default: pageHandle = 20'hx;
// synopsys infer_mux "AnchorAddress_Mux"
always @(/*AUTOSENSE*/DRR_NextDMAChannel
or DMA23_Address or DMA22_Address or DMA21_Address or DMA20_Address
or DMA19_Address or DMA18_Address or DMA17_Address or DMA16_Address
or DMA15_Address or DMA14_Address or DMA13_Address or DMA12_Address
or DMA11_Address or DMA10_Address or DMA9_Address or DMA8_Address
or DMA7_Address or DMA6_Address or DMA5_Address or DMA4_Address
or DMA3_Address or DMA2_Address or DMA1_Address or DMA0_Address
case(DRR_NextDMAChannel) // synopsys full_case parallel_case
`DMA_CHANNEL_ZERO: anchorAddress = DMA0_Address;
`DMA_CHANNEL_ONE: anchorAddress = DMA1_Address;
`DMA_CHANNEL_TWO: anchorAddress = DMA2_Address;
`DMA_CHANNEL_THREE: anchorAddress = DMA3_Address;
`DMA_CHANNEL_FOUR: anchorAddress = DMA4_Address;
`DMA_CHANNEL_FIVE: anchorAddress = DMA5_Address;
`DMA_CHANNEL_SIX: anchorAddress = DMA6_Address;
`DMA_CHANNEL_SEVEN: anchorAddress = DMA7_Address;
`DMA_CHANNEL_EIGHT: anchorAddress = DMA8_Address;
`DMA_CHANNEL_NINE: anchorAddress = DMA9_Address;
`DMA_CHANNEL_TEN: anchorAddress = DMA10_Address;
`DMA_CHANNEL_ELEVEN: anchorAddress = DMA11_Address;
`DMA_CHANNEL_TWELVE: anchorAddress = DMA12_Address;
`DMA_CHANNEL_THIRTEEN: anchorAddress = DMA13_Address;
`DMA_CHANNEL_FOURTEEN: anchorAddress = DMA14_Address;
`DMA_CHANNEL_FIFTEEN: anchorAddress = DMA15_Address;
`DMA_CHANNEL_SIXTEEN: anchorAddress = DMA16_Address;
`DMA_CHANNEL_SEVENTEEN: anchorAddress = DMA17_Address;
`DMA_CHANNEL_EIGHTEEN: anchorAddress = DMA18_Address;
`DMA_CHANNEL_NINETEEN: anchorAddress = DMA19_Address;
`DMA_CHANNEL_TWENTY: anchorAddress = DMA20_Address;
`DMA_CHANNEL_TWENTYONE: anchorAddress = DMA21_Address;
`DMA_CHANNEL_TWENTYTWO: anchorAddress = DMA22_Address;
`DMA_CHANNEL_TWENTYTHREE: anchorAddress = DMA23_Address;
default: anchorAddress = 44'hx;
always @(/*AUTOSENSE*/DRR_NextDMAChannel
or DMA22_DescList or DMA21_DescList or DMA20_DescList
or DMA19_DescList or DMA18_DescList or DMA17_DescList
or DMA16_DescList or DMA15_DescList or DMA14_DescList
or DMA13_DescList or DMA12_DescList or DMA11_DescList
or DMA10_DescList or DMA9_DescList or DMA8_DescList
or DMA7_DescList or DMA6_DescList or DMA5_DescList
or DMA4_DescList or DMA3_DescList or DMA2_DescList
or DMA1_DescList or DMA0_DescList
case(DRR_NextDMAChannel) // synopsys full_case parallel_case
`DMA_CHANNEL_ZERO: anchorDescList = DMA0_DescList;
`DMA_CHANNEL_ONE: anchorDescList = DMA1_DescList;
`DMA_CHANNEL_TWO: anchorDescList = DMA2_DescList;
`DMA_CHANNEL_THREE: anchorDescList = DMA3_DescList;
`DMA_CHANNEL_FOUR: anchorDescList = DMA4_DescList;
`DMA_CHANNEL_FIVE: anchorDescList = DMA5_DescList;
`DMA_CHANNEL_SIX: anchorDescList = DMA6_DescList;
`DMA_CHANNEL_SEVEN: anchorDescList = DMA7_DescList;
`DMA_CHANNEL_EIGHT: anchorDescList = DMA8_DescList;
`DMA_CHANNEL_NINE: anchorDescList = DMA9_DescList;
`DMA_CHANNEL_TEN: anchorDescList = DMA10_DescList;
`DMA_CHANNEL_ELEVEN: anchorDescList = DMA11_DescList;
`DMA_CHANNEL_TWELVE: anchorDescList = DMA12_DescList;
`DMA_CHANNEL_THIRTEEN: anchorDescList = DMA13_DescList;
`DMA_CHANNEL_FOURTEEN: anchorDescList = DMA14_DescList;
`DMA_CHANNEL_FIFTEEN: anchorDescList = DMA15_DescList;
`DMA_CHANNEL_SIXTEEN: anchorDescList = DMA16_DescList;
`DMA_CHANNEL_SEVENTEEN: anchorDescList = DMA17_DescList;
`DMA_CHANNEL_EIGHTEEN: anchorDescList = DMA18_DescList;
`DMA_CHANNEL_NINETEEN: anchorDescList = DMA19_DescList;
`DMA_CHANNEL_TWENTY: anchorDescList = DMA20_DescList;
`DMA_CHANNEL_TWENTYONE: anchorDescList = DMA21_DescList;
`DMA_CHANNEL_TWENTYTWO: anchorDescList = DMA22_DescList;
`DMA_CHANNEL_TWENTYTHREE: anchorDescList = DMA23_DescList;
default: anchorDescList = 4'hx;
always @(/*AUTOSENSE*/DRR_NextDMAChannel
or DMA22_GotNxtDesc or DMA21_GotNxtDesc or DMA20_GotNxtDesc
or DMA19_GotNxtDesc or DMA18_GotNxtDesc or DMA17_GotNxtDesc
or DMA16_GotNxtDesc or DMA15_GotNxtDesc or DMA14_GotNxtDesc
or DMA13_GotNxtDesc or DMA12_GotNxtDesc or DMA11_GotNxtDesc
or DMA10_GotNxtDesc or DMA9_GotNxtDesc or DMA8_GotNxtDesc
or DMA7_GotNxtDesc or DMA6_GotNxtDesc or DMA5_GotNxtDesc
or DMA4_GotNxtDesc or DMA3_GotNxtDesc or DMA2_GotNxtDesc
or DMA1_GotNxtDesc or DMA0_GotNxtDesc
case(DRR_NextDMAChannel) // synopsys full_case parallel_case
`DMA_CHANNEL_ZERO: gotNextDescriptor = DMA0_GotNxtDesc;
`DMA_CHANNEL_ONE: gotNextDescriptor = DMA1_GotNxtDesc;
`DMA_CHANNEL_TWO: gotNextDescriptor = DMA2_GotNxtDesc;
`DMA_CHANNEL_THREE: gotNextDescriptor = DMA3_GotNxtDesc;
`DMA_CHANNEL_FOUR: gotNextDescriptor = DMA4_GotNxtDesc;
`DMA_CHANNEL_FIVE: gotNextDescriptor = DMA5_GotNxtDesc;
`DMA_CHANNEL_SIX: gotNextDescriptor = DMA6_GotNxtDesc;
`DMA_CHANNEL_SEVEN: gotNextDescriptor = DMA7_GotNxtDesc;
`DMA_CHANNEL_EIGHT: gotNextDescriptor = DMA8_GotNxtDesc;
`DMA_CHANNEL_NINE: gotNextDescriptor = DMA9_GotNxtDesc;
`DMA_CHANNEL_TEN: gotNextDescriptor = DMA10_GotNxtDesc;
`DMA_CHANNEL_ELEVEN: gotNextDescriptor = DMA11_GotNxtDesc;
`DMA_CHANNEL_TWELVE: gotNextDescriptor = DMA12_GotNxtDesc;
`DMA_CHANNEL_THIRTEEN: gotNextDescriptor = DMA13_GotNxtDesc;
`DMA_CHANNEL_FOURTEEN: gotNextDescriptor = DMA14_GotNxtDesc;
`DMA_CHANNEL_FIFTEEN: gotNextDescriptor = DMA15_GotNxtDesc;
`DMA_CHANNEL_SIXTEEN: gotNextDescriptor = DMA16_GotNxtDesc;
`DMA_CHANNEL_SEVENTEEN: gotNextDescriptor = DMA17_GotNxtDesc;
`DMA_CHANNEL_EIGHTEEN: gotNextDescriptor = DMA18_GotNxtDesc;
`DMA_CHANNEL_NINETEEN: gotNextDescriptor = DMA19_GotNxtDesc;
`DMA_CHANNEL_TWENTY: gotNextDescriptor = DMA20_GotNxtDesc;
`DMA_CHANNEL_TWENTYONE: gotNextDescriptor = DMA21_GotNxtDesc;
`DMA_CHANNEL_TWENTYTWO: gotNextDescriptor = DMA22_GotNxtDesc;
`DMA_CHANNEL_TWENTYTHREE: gotNextDescriptor = DMA23_GotNxtDesc;
default: gotNextDescriptor = 1'b0;
/*--------------------------------------------------------------*/
// Make sure that packetbytecount works when we abort the data request
/*--------------------------------------------------------------*/
if (!Reset_L) DRR_PacketDone <= #`SD 1'b0;
else DRR_PacketDone <= #`SD drrPacketDone;
if (!Reset_L) PacketByteCount <= #`SD 16'h0;
else if (Anchor_Done) PacketByteCount <= #`SD PacketByteCount
else if (DRR_PacketDone) PacketByteCount <= #`SD 16'h0;
/*--------------------------------------------------------------*/
// Set Get Next Descriptor Logic
/*--------------------------------------------------------------*/
assign SetGetNextDescDMA0 = currentDMAChannel[0] & setGetNextDescriptor;
assign SetGetNextDescDMA1 = currentDMAChannel[1] & setGetNextDescriptor;
assign SetGetNextDescDMA2 = currentDMAChannel[2] & setGetNextDescriptor;
assign SetGetNextDescDMA3 = currentDMAChannel[3] & setGetNextDescriptor;
assign SetGetNextDescDMA4 = currentDMAChannel[4] & setGetNextDescriptor;
assign SetGetNextDescDMA5 = currentDMAChannel[5] & setGetNextDescriptor;
assign SetGetNextDescDMA6 = currentDMAChannel[6] & setGetNextDescriptor;
assign SetGetNextDescDMA7 = currentDMAChannel[7] & setGetNextDescriptor;
assign SetGetNextDescDMA8 = currentDMAChannel[8] & setGetNextDescriptor;
assign SetGetNextDescDMA9 = currentDMAChannel[9] & setGetNextDescriptor;
assign SetGetNextDescDMA10 = currentDMAChannel[10] & setGetNextDescriptor;
assign SetGetNextDescDMA11 = currentDMAChannel[11] & setGetNextDescriptor;
assign SetGetNextDescDMA12 = currentDMAChannel[12] & setGetNextDescriptor;
assign SetGetNextDescDMA13 = currentDMAChannel[13] & setGetNextDescriptor;
assign SetGetNextDescDMA14 = currentDMAChannel[14] & setGetNextDescriptor;
assign SetGetNextDescDMA15 = currentDMAChannel[15] & setGetNextDescriptor;
assign SetGetNextDescDMA16 = currentDMAChannel[16] & setGetNextDescriptor;
assign SetGetNextDescDMA17 = currentDMAChannel[17] & setGetNextDescriptor;
assign SetGetNextDescDMA18 = currentDMAChannel[18] & setGetNextDescriptor;
assign SetGetNextDescDMA19 = currentDMAChannel[19] & setGetNextDescriptor;
assign SetGetNextDescDMA20 = currentDMAChannel[20] & setGetNextDescriptor;
assign SetGetNextDescDMA21 = currentDMAChannel[21] & setGetNextDescriptor;
assign SetGetNextDescDMA22 = currentDMAChannel[22] & setGetNextDescriptor;
assign SetGetNextDescDMA23 = currentDMAChannel[23] & setGetNextDescriptor;
/*--------------------------------------------------------------*/
// Descriptor Gather logic
/*--------------------------------------------------------------*/
if (!Reset_L) descriptorList <= #`SD 4'h0;
else if (ldDescList) descriptorList <= #`SD anchorDescList;
else if (decrementDescList) descriptorList <= #`SD descriptorList - 4'h1;
assign decrementDescList = ((descriptorList != 4'h0) && portRequestDone);
assign nullDescriptor = (descriptorList == 4'h0);
assign singleDescriptor = (descriptorList == 4'h1);
assign multiDescriptor = (descriptorList >= 4'h2);
/*--------------------------------------------------------------*/
// Packet Size Error Logic
/*--------------------------------------------------------------*/
assign setPacketSizeErr = enableSizeCheck
? (pktSizeCheck + {3'h0, anchorLengthD1}) > 16'd9600
if (!Reset_L) enableSizeCheck <= #`SD 1'b0;
else if (setEnableSizeCheck) enableSizeCheck <= #`SD 1'b1;
else if (anchorRequest) enableSizeCheck <= #`SD 1'b0;
else if (clrEnableSizeCheck) enableSizeCheck <= #`SD 1'b0;
if (!Reset_L) anchorLengthD1 <= #`SD 13'h0;
else anchorLengthD1 <= #`SD anchorLength;
if (!Reset_L) pktSizeCheck <= #`SD 16'h0;
else if (anchorRequest) pktSizeCheck <= #`SD pktSizeCheck
else if (DRR_PacketDone) pktSizeCheck <= #`SD 16'b0;
if (!Reset_L) Pkt_Size_Err <= #`SD 1'b0;
else if (setPacketSizeErr) Pkt_Size_Err <= #`SD 1'b1;
else if (DRR_PacketDone) Pkt_Size_Err <= #`SD 1'b0;
if (!Reset_L) DMA_Pkt_Size_Err <= #`SD 24'h0;
else if (setPacketSizeErr) DMA_Pkt_Size_Err <= #`SD currentDMAChannel;
else if (DRR_PacketDone) DMA_Pkt_Size_Err <= #`SD 24'h0;
if (!Reset_L) Pkt_Size_Err_Addr <= #`SD 44'h0;
else if (setPacketSizeErr) Pkt_Size_Err_Addr <= #`SD anchorAddress;
else if (DRR_PacketDone) Pkt_Size_Err_Addr <= #`SD 44'h0;
/*--------------------------------------------------------------*/
// Port Select, Data PortReq & Data Write State Vector
/*--------------------------------------------------------------*/
if (!Reset_L) DataPortReq_State <= #`SD PORT_REQUEST_IDLE;
else DataPortReq_State <= #`SD nextPortReqState;
/*--------------------------------------------------------------*/
// Data PortReq State Machine
/*--------------------------------------------------------------*/
function [3:0] PortReqDefaults;
input [3:0] currentState;
PortReqDefaults = currentState;
setGetNextDescriptor = 1'b0;
setEnableSizeCheck = 1'b0;
clrEnableSizeCheck = 1'b0;
always @(/*AUTOSENSE*/DataPortReq_State or Txc_Enabled
or Port_Enabled or DRR_Arb_Valid
or Anchor_Done or portRequestDone
or gotNextDescriptor or multiDescriptor or nullDescriptor
or sopBitNotSet or eofListBitSet or errorBitSet
case(DataPortReq_State) // synopsys full_case parallel_case
/* 0in < case -full -parallel */
nextPortReqState = PortReqDefaults(DataPortReq_State);
nextPortReqState = CHECK_FOR_DESCRIPTOR;
nextPortReqState = PortReqDefaults(DataPortReq_State);
nextPortReqState = ERROR_STATE;
else if (gotNextDescriptor)
setEnableSizeCheck = 1'b1;
nextPortReqState = REQ_ANCHOR;
nextPortReqState = PortReqDefaults(DataPortReq_State);
if (setPacketSizeErr | eofListBitSet | errorBitSet | sopBitNotSet)
clrEnableSizeCheck = 1'b1;
nextPortReqState = ERROR_STATE;
nextPortReqState = WAIT_FOR_ANCHOR;
nextPortReqState = PortReqDefaults(DataPortReq_State);
nextPortReqState = PORT_REQUEST;
nextPortReqState = PortReqDefaults(DataPortReq_State);
setGetNextDescriptor = 1'b1;
nextPortReqState = WAIT_FOR_REQ_ACCEPT;
nextPortReqState = PortReqDefaults(DataPortReq_State);
nextPortReqState = WAIT_FOR_NEXT_DESC;
nextPortReqState = WAIT_FOR_DRR_UPDATE;
nextPortReqState = PortReqDefaults(DataPortReq_State);
nextPortReqState = ERROR_STATE;
else if (gotNextDescriptor)
setEnableSizeCheck = 1'b1;
nextPortReqState = CHECK_PACKET_SIZE;
nextPortReqState = PortReqDefaults(DataPortReq_State);
if (setPacketSizeErr | eofListBitSet | errorBitSet)
clrEnableSizeCheck = 1'b1;
nextPortReqState = ERROR_STATE;
nextPortReqState = WAIT_FOR_ANCHOR;
nextPortReqState = PortReqDefaults(DataPortReq_State);
nextPortReqState = PORT_REQUEST_IDLE;
nextPortReqState = PortReqDefaults(DataPortReq_State);
nextPortReqState = WAIT_FOR_DRR_UPDATE;