blob: 03989096c3989395d04ea68551b8eef4b4be899e [file] [log] [blame]
/*
//Copyright 2021 S SIVA PRASAD ssprasad12a@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
//
// Generated by Bluespec Compiler, version 2017.07.A (build 1da80f1, 2017-07-21)
//
// On Wed Oct 13 11:06:55 IST 2021
//
//
// Ports:
// Name I/O size props
// RDY_data O 1
// RDY_deq_data O 1
// first O 32
// RDY_first O 1
// empty O 1
// RDY_empty O 1 const
// full O 1
// RDY_full O 1 const
// nempty O 1
// RDY_nempty O 1 const
// nfull O 1
// RDY_nfull O 1 const
// CLK_wr_clk I 1 clock
// RST_N_wr_rstn I 1 reset
// CLK_rd_clk I 1 clock
// data_enq_data I 32
// EN_data I 1
// EN_deq_data I 1
// EN_first I 1 unused
//
// No combinational paths from inputs to outputs
//
//
// generated by ssp for audio fifo
`ifdef BSV_ASSIGNMENT_DELAY
`else
`define BSV_ASSIGNMENT_DELAY
`endif
`ifdef BSV_POSITIVE_RESET
`define BSV_RESET_VALUE 1'b1
`define BSV_RESET_EDGE posedge
`else
`define BSV_RESET_VALUE 1'b0
`define BSV_RESET_EDGE negedge
`endif
module mkAudiofifo(CLK_wr_clk,
RST_N_wr_rstn,
CLK_rd_clk,
data_enq_data,
EN_data,
RDY_data,
EN_deq_data,
RDY_deq_data,
EN_first,
first,
RDY_first,
empty,
RDY_empty,
full,
RDY_full,
nempty,
RDY_nempty,
nfull,
RDY_nfull);
input CLK_wr_clk;
input RST_N_wr_rstn;
input CLK_rd_clk;
// action method data
input [31 : 0] data_enq_data;
input EN_data;
output RDY_data;
// action method deq_data
input EN_deq_data;
output RDY_deq_data;
// actionvalue method first
input EN_first;
output [31 : 0] first;
output RDY_first;
// value method empty
output empty;
output RDY_empty;
// value method full
output full;
output RDY_full;
// value method nempty
output nempty;
output RDY_nempty;
// value method nfull
output nfull;
output RDY_nfull;
// signals for module outputs
wire [31 : 0] first;
wire RDY_data,
RDY_deq_data,
RDY_empty,
RDY_first,
RDY_full,
RDY_nempty,
RDY_nfull,
empty,
full,
nempty,
nfull;
// ports of submodule cdcfifo
wire [31 : 0] cdcfifo_dD_OUT, cdcfifo_sD_IN;
wire cdcfifo_dDEQ, cdcfifo_dEMPTY_N, cdcfifo_sENQ, cdcfifo_sFULL_N;
// rule scheduling signals
wire CAN_FIRE_data,
CAN_FIRE_deq_data,
CAN_FIRE_first,
WILL_FIRE_data,
WILL_FIRE_deq_data,
WILL_FIRE_first;
// action method data
assign RDY_data = cdcfifo_sFULL_N ;
assign CAN_FIRE_data = cdcfifo_sFULL_N ;
assign WILL_FIRE_data = EN_data ;
// action method deq_data
assign RDY_deq_data = cdcfifo_dEMPTY_N ;
assign CAN_FIRE_deq_data = cdcfifo_dEMPTY_N ;
assign WILL_FIRE_deq_data = EN_deq_data ;
// actionvalue method first
assign first = cdcfifo_dD_OUT ;
assign RDY_first = cdcfifo_dEMPTY_N ;
assign CAN_FIRE_first = cdcfifo_dEMPTY_N ;
assign WILL_FIRE_first = EN_first ;
// value method empty
assign empty = !cdcfifo_dEMPTY_N ;
assign RDY_empty = 1'd1 ;
// value method full
assign full = !cdcfifo_sFULL_N ;
assign RDY_full = 1'd1 ;
// value method nempty
assign nempty = cdcfifo_dEMPTY_N ;
assign RDY_nempty = 1'd1 ;
// value method nfull
assign nfull = cdcfifo_sFULL_N ;
assign RDY_nfull = 1'd1 ;
// submodule cdcfifo
SyncFIFO #(.dataWidth(32'd32),
.depth(32'd16),
.indxWidth(32'd4)) cdcfifo(.sCLK(CLK_wr_clk),
.dCLK(CLK_rd_clk),
.sRST(RST_N_wr_rstn),
.sD_IN(cdcfifo_sD_IN),
.sENQ(cdcfifo_sENQ),
.dDEQ(cdcfifo_dDEQ),
.sFULL_N(cdcfifo_sFULL_N),
.dEMPTY_N(cdcfifo_dEMPTY_N),
.dD_OUT(cdcfifo_dD_OUT));
// submodule cdcfifo
assign cdcfifo_sD_IN = data_enq_data ;
assign cdcfifo_sENQ = EN_data ;
assign cdcfifo_dDEQ = EN_deq_data ;
endmodule // mkAudiofifo