| // Copyright 2020-2022 F4PGA Authors | 
 | // | 
 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
 | // you may not use this file except in compliance with the License. | 
 | // You may obtain a copy of the License at | 
 | // | 
 | //     http://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 | // | 
 | // SPDX-License-Identifier: Apache-2.0 | 
 |  | 
 | module f4096x9_1024x36 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT); | 
 |  | 
 | parameter WR_DATA_WIDTH = 9; | 
 | parameter RD_DATA_WIDTH = 36; | 
 | parameter UPAE_DBITS = 12'd10; | 
 | parameter UPAF_DBITS = 12'd10; | 
 |  | 
 | input clock0; | 
 | input PUSH,POP; | 
 | input [WR_DATA_WIDTH-1:0] DIN; | 
 | input Async_Flush; | 
 | output [RD_DATA_WIDTH-1:0] DOUT; | 
 | output Almost_Full,Almost_Empty; | 
 | output Full, Empty; | 
 | output Full_Watermark, Empty_Watermark; | 
 | output Overrun_Error, Underrun_Error; | 
 |  | 
 | SFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS) | 
 |                   ) | 
 |   FIFO_INST    ( | 
 |                 .DIN(DIN), | 
 |                 .PUSH(PUSH), | 
 |                 .POP(POP), | 
 |                 .CLK(clock0), | 
 |                 .Async_Flush(Async_Flush), | 
 |                  | 
 |                 .Overrun_Error(Overrun_Error), | 
 |                 .Full_Watermark(Full_Watermark), | 
 |                 .Almost_Full(Almost_Full), | 
 |                 .Full(Full), | 
 |                  | 
 |                 .Underrun_Error(Underrun_Error), | 
 |                 .Empty_Watermark(Empty_Watermark), | 
 |                 .Almost_Empty(Almost_Empty), | 
 |                 .Empty(Empty), | 
 |  | 
 |                 .DOUT(DOUT) | 
 |                 ); | 
 | endmodule | 
 |  | 
 | module f2048x18_1024x36 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT); | 
 |  | 
 | parameter WR_DATA_WIDTH = 18; | 
 | parameter RD_DATA_WIDTH = 36; | 
 | parameter UPAE_DBITS = 12'd10; | 
 | parameter UPAF_DBITS = 12'd10; | 
 |  | 
 | input clock0; | 
 | input PUSH,POP; | 
 | input [WR_DATA_WIDTH-1:0] DIN; | 
 | input Async_Flush; | 
 | output [RD_DATA_WIDTH-1:0] DOUT; | 
 | output Almost_Full,Almost_Empty; | 
 | output Full, Empty; | 
 | output Full_Watermark, Empty_Watermark; | 
 | output Overrun_Error, Underrun_Error; | 
 |  | 
 | SFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS) | 
 |                   ) | 
 |   FIFO_INST    ( | 
 |                 .DIN(DIN), | 
 |                 .PUSH(PUSH), | 
 |                 .POP(POP), | 
 |                 .CLK(clock0), | 
 |                 .Async_Flush(Async_Flush), | 
 |                  | 
 |                 .Overrun_Error(Overrun_Error), | 
 |                 .Full_Watermark(Full_Watermark), | 
 |                 .Almost_Full(Almost_Full), | 
 |                 .Full(Full), | 
 |                  | 
 |                 .Underrun_Error(Underrun_Error), | 
 |                 .Empty_Watermark(Empty_Watermark), | 
 |                 .Almost_Empty(Almost_Empty), | 
 |                 .Empty(Empty), | 
 |  | 
 |                 .DOUT(DOUT) | 
 |                 ); | 
 | endmodule | 
 |  | 
 | module f2048x18_4098x9 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT); | 
 |  | 
 | parameter WR_DATA_WIDTH = 18; | 
 | parameter RD_DATA_WIDTH = 9; | 
 | parameter UPAE_DBITS = 12'd10; | 
 | parameter UPAF_DBITS = 12'd10; | 
 |  | 
 | input clock0; | 
 | input PUSH,POP; | 
 | input [WR_DATA_WIDTH-1:0] DIN; | 
 | input Async_Flush; | 
 | output [RD_DATA_WIDTH-1:0] DOUT; | 
 | output Almost_Full,Almost_Empty; | 
 | output Full, Empty; | 
 | output Full_Watermark, Empty_Watermark; | 
 | output Overrun_Error, Underrun_Error; | 
 |  | 
 | SFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS) | 
 |                   ) | 
 |   FIFO_INST    ( | 
 |                 .DIN(DIN), | 
 |                 .PUSH(PUSH), | 
 |                 .POP(POP), | 
 |                 .CLK(clock0), | 
 |                 .Async_Flush(Async_Flush), | 
 |                  | 
 |                 .Overrun_Error(Overrun_Error), | 
 |                 .Full_Watermark(Full_Watermark), | 
 |                 .Almost_Full(Almost_Full), | 
 |                 .Full(Full), | 
 |                  | 
 |                 .Underrun_Error(Underrun_Error), | 
 |                 .Empty_Watermark(Empty_Watermark), | 
 |                 .Almost_Empty(Almost_Empty), | 
 |                 .Empty(Empty), | 
 |  | 
 |                 .DOUT(DOUT) | 
 |                 ); | 
 | endmodule | 
 |  | 
 | module f1024x36_2048x18 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT); | 
 |  | 
 | parameter WR_DATA_WIDTH = 36; | 
 | parameter RD_DATA_WIDTH = 18; | 
 | parameter UPAE_DBITS = 12'd10; | 
 | parameter UPAF_DBITS = 12'd10; | 
 |  | 
 | input clock0; | 
 | input PUSH,POP; | 
 | input [WR_DATA_WIDTH-1:0] DIN; | 
 | input Async_Flush; | 
 | output [RD_DATA_WIDTH-1:0] DOUT; | 
 | output Almost_Full,Almost_Empty; | 
 | output Full, Empty; | 
 | output Full_Watermark, Empty_Watermark; | 
 | output Overrun_Error, Underrun_Error; | 
 |  | 
 | SFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS) | 
 |                   ) | 
 |   FIFO_INST    ( | 
 |                 .DIN(DIN), | 
 |                 .PUSH(PUSH), | 
 |                 .POP(POP), | 
 |                 .CLK(clock0), | 
 |                 .Async_Flush(Async_Flush), | 
 |                  | 
 |                 .Overrun_Error(Overrun_Error), | 
 |                 .Full_Watermark(Full_Watermark), | 
 |                 .Almost_Full(Almost_Full), | 
 |                 .Full(Full), | 
 |                  | 
 |                 .Underrun_Error(Underrun_Error), | 
 |                 .Empty_Watermark(Empty_Watermark), | 
 |                 .Almost_Empty(Almost_Empty), | 
 |                 .Empty(Empty), | 
 |  | 
 |                 .DOUT(DOUT) | 
 |                 ); | 
 | endmodule |