diff --git a/libraries/technology/ip_arria10/fifo/README.txt b/libraries/technology/ip_arria10/fifo/README.txt new file mode 100755 index 0000000000000000000000000000000000000000..56e232cc5220e64d7f5fb1c211e5db3c89ea8d5e --- /dev/null +++ b/libraries/technology/ip_arria10/fifo/README.txt @@ -0,0 +1,61 @@ +README.txt for $RADIOHDL/libraries/technology/ip_arria10/fifo + +Contents: + +1) FIFO components +2) Arria10 IP +3) Implementation options (LUTs or block RAM) +4) Synthesis trials + + +1) FIFO components: + + ip_arria10_fifo_sc = Single clock FIFO + ip_arria10_fifo_dc = Dual clock FIFO + ip_arria10_fifo_dc_mixed_widths = Dual clock FIFO with different read and write data widths (ratio power of 2) + + +2) Arria10 IP + + The IP was ported from Stratix IV by: + + . copy original MegaWizard <fifo_name>.vhd file + . rename <fifo_name>.vhd into ip_arria10_<fifo_name>.vhd (also replace name inside the file) + . commit the fifo/ip_arria10_<fifo_name>.vhd to preserve the MegaWizard original + . open in to Quartus 14, set device family to Arria10 and finish automatically convert to Qsys + . then generate HDL (select VHDL for both sim and synth) and finish to save it as ip_arria10_<fifo_name>.qsys + + this yields: + + ip_arria10_fifo_sc.qsys + ip_arria10_fifo_dc.qsys + ip_arria10_fifo_dc_mixed_widths.qsys + + The Arria10 FIFO IP still uses the altera_mf package (so not the altera_lnsim package as with the block RAM). The + FIFOs map to the altera_mf components to scfifo, dcfifo and dcfifo_mixed_widths. + + The IP only needs to be generated with ./generate_ip.sh if it need to be modified, because the ip_arria10_fifo_*.vhd + directly instantiates the altera_mf component. + + The instantiation is copied manually from the generated/ip_arria10_fifo_*/fifo_140/sim/ip_arria10_fifo_*.vhd and + saved in the <fifo_name>.vhd file. So then the MegaWizard vhd file is overwritten, but that is fine because it is + no longer needed, it could easily be derived from the original in $UNB and it is still as a previous verion in SVN. + + + +3) Implementation options (LUTs or block RAM) + + The IP FIFO can be set to use LUTs (MLAB) or block RAM (M20K), however this is not supported yet. This would imply + adding a generic to set the appropriate parameter in the altera_mf. + + +4) Synthesis trials + + The quartus/fifo.qpf Quartus project was used to verify that the FIFO IP actually synthesise to the appropriate FPGA resources. + Use the Quartus GUI to manually select a top level component for synthesis e.g. by right clicking the entity vhd file + in the file tab of the Quartus project navigator window. + Then check the resource usage in the synthesis and fitter reports. + +5) Issues + + No issues. \ No newline at end of file diff --git a/libraries/technology/ip_arria10/fifo/hdllib.cfg b/libraries/technology/ip_arria10/fifo/hdllib.cfg new file mode 100644 index 0000000000000000000000000000000000000000..f3c7f424ace2621ad4cca2e5abe74f86377d28df --- /dev/null +++ b/libraries/technology/ip_arria10/fifo/hdllib.cfg @@ -0,0 +1,14 @@ +hdl_lib_name = ip_arria10_fifo +hdl_library_clause_name = ip_arria10_fifo_lib +hdl_lib_uses = technology +hdl_lib_technology = ip_arria10 + +build_dir_sim = $HDL_BUILD_DIR +build_dir_synth = $HDL_BUILD_DIR + +synth_files = + ip_arria10_fifo_sc.vhd + ip_arria10_fifo_dc.vhd + ip_arria10_fifo_dc_mixed_widths.vhd + +test_bench_files = diff --git a/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc.qsys b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc.qsys new file mode 100644 index 0000000000000000000000000000000000000000..c80e9005a2f435c2711debc724f6a893a58030b1 --- /dev/null +++ b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc.qsys @@ -0,0 +1,113 @@ +<?xml version="1.0" encoding="UTF-8"?> +<system name="$${FILENAME}"> + <component + name="$${FILENAME}" + displayName="$${FILENAME}" + version="1.0" + description="" + tags="" + categories="" /> + <parameter name="bonusData"><![CDATA[bonusData +{ + element $${FILENAME} + { + } + element ip_arria10_fifo_dc + { + datum _sortIndex + { + value = "0"; + type = "int"; + } + } +} +]]></parameter> + <parameter name="clockCrossingAdapter" value="HANDSHAKE" /> + <parameter name="device" value="Unknown" /> + <parameter name="deviceFamily" value="Arria 10" /> + <parameter name="deviceSpeedGrade" value="Unknown" /> + <parameter name="fabricMode" value="QSYS" /> + <parameter name="generateLegacySim" value="false" /> + <parameter name="generationId" value="0" /> + <parameter name="globalResetBus" value="false" /> + <parameter name="hdlLanguage" value="VERILOG" /> + <parameter name="hideFromIPCatalog" value="false" /> + <parameter name="maxAdditionalLatency" value="1" /> + <parameter name="projectName" value="" /> + <parameter name="sopcBorderPoints" value="false" /> + <parameter name="systemHash" value="0" /> + <parameter name="testBenchDutName" value="" /> + <parameter name="timeStamp" value="0" /> + <parameter name="useTestBenchNamingPattern" value="false" /> + <instanceScript></instanceScript> + <interface + name="fifo_input" + internal="ip_arria10_fifo_dc.fifo_input" + type="conduit" + dir="end"> + <port name="data" internal="data" /> + <port name="wrreq" internal="wrreq" /> + <port name="rdreq" internal="rdreq" /> + <port name="wrclk" internal="wrclk" /> + <port name="rdclk" internal="rdclk" /> + <port name="aclr" internal="aclr" /> + </interface> + <interface + name="fifo_output" + internal="ip_arria10_fifo_dc.fifo_output" + type="conduit" + dir="end"> + <port name="q" internal="q" /> + <port name="rdusedw" internal="rdusedw" /> + <port name="wrusedw" internal="wrusedw" /> + <port name="rdempty" internal="rdempty" /> + <port name="wrfull" internal="wrfull" /> + </interface> + <module + kind="fifo" + version="14.0" + enabled="1" + name="ip_arria10_fifo_dc" + autoexport="1"> + <parameter name="DEVICE_FAMILY" value="Arria 10" /> + <parameter name="GUI_Clock" value="4" /> + <parameter name="GUI_CLOCKS_ARE_SYNCHRONIZED" value="0" /> + <parameter name="GUI_delaypipe" value="5" /> + <parameter name="GUI_synStage" value="3" /> + <parameter name="GUI_LegacyRREQ" value="1" /> + <parameter name="GUI_RAM_BLOCK_TYPE" value="Auto" /> + <parameter name="GUI_Optimize" value="1" /> + <parameter name="GUI_Optimize_max" value="1" /> + <parameter name="GUI_Width" value="8" /> + <parameter name="GUI_Depth" value="256" /> + <parameter name="GUI_output_width" value="8" /> + <parameter name="GUI_AlmostFullThr" value="-1" /> + <parameter name="GUI_AlmostEmptyThr" value="-1" /> + <parameter name="GUI_MAX_DEPTH" value="Auto" /> + <parameter name="GUI_diff_widths" value="false" /> + <parameter name="GUI_Full" value="true" /> + <parameter name="GUI_Empty" value="true" /> + <parameter name="GUI_UsedW" value="true" /> + <parameter name="GUI_AlmostFull" value="false" /> + <parameter name="GUI_AlmostEmpty" value="false" /> + <parameter name="GUI_sc_aclr" value="false" /> + <parameter name="GUI_sc_sclr" value="false" /> + <parameter name="GUI_rsFull" value="false" /> + <parameter name="GUI_rsEmpty" value="true" /> + <parameter name="GUI_rsUsedW" value="true" /> + <parameter name="GUI_wsFull" value="true" /> + <parameter name="GUI_wsEmpty" value="false" /> + <parameter name="GUI_wsUsedW" value="true" /> + <parameter name="GUI_msb_usedw" value="false" /> + <parameter name="GUI_dc_aclr" value="true" /> + <parameter name="GUI_write_aclr_synch" value="true" /> + <parameter name="GUI_read_aclr_synch" value="false" /> + <parameter name="GUI_OVERFLOW_CHECKING" value="false" /> + <parameter name="GUI_UNDERFLOW_CHECKING" value="false" /> + <parameter name="GUI_LE_BasedFIFO" value="false" /> + <parameter name="GUI_MAX_DEPTH_BY_9" value="false" /> + </module> + <interconnectRequirement for="$system" name="qsys_mm.clockCrossingAdapter" value="HANDSHAKE" /> + <interconnectRequirement for="$system" name="qsys_mm.maxAdditionalLatency" value="1" /> + <interconnectRequirement for="$system" name="qsys_mm.insertDefaultSlave" value="FALSE" /> +</system> diff --git a/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc.vhd b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc.vhd new file mode 100644 index 0000000000000000000000000000000000000000..b1afae234e983d30c3204d5a64a747905c9e9de7 --- /dev/null +++ b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc.vhd @@ -0,0 +1,224 @@ +-- megafunction wizard: %FIFO% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: dcfifo + +-- ============================================================ +-- File Name: ip_arria10_fifo_dc.vhd +-- Megafunction Name(s): +-- dcfifo +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 9.1 Build 350 03/24/2010 SP 2 SJ Full Version +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY common_lib; +USE common_lib.common_pkg.ALL; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY ip_arria10_fifo_dc IS + GENERIC ( + g_dat_w : NATURAL; + g_nof_words : NATURAL + ); + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0); + rdempty : OUT STD_LOGIC ; + rdusedw : OUT STD_LOGIC_VECTOR (ceil_log2(g_nof_words)-1 DOWNTO 0); + wrfull : OUT STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (ceil_log2(g_nof_words)-1 DOWNTO 0) + ); +END ip_arria10_fifo_dc; + + +ARCHITECTURE SYN OF ip_arria10_fifo_dc IS + + SIGNAL sub_wire0 : STD_LOGIC ; + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (ceil_log2(g_nof_words)-1 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (ceil_log2(g_nof_words)-1 DOWNTO 0); + + + + COMPONENT dcfifo + GENERIC ( + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + overflow_checking : STRING; + rdsync_delaypipe : NATURAL; + underflow_checking : STRING; + use_eab : STRING; + write_aclr_synch : STRING; + wrsync_delaypipe : NATURAL + ); + PORT ( + wrclk : IN STD_LOGIC ; + rdempty : OUT STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (ceil_log2(g_nof_words)-1 DOWNTO 0); + aclr : IN STD_LOGIC ; + wrfull : OUT STD_LOGIC ; + rdclk : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0); + wrreq : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0); + rdusedw : OUT STD_LOGIC_VECTOR (ceil_log2(g_nof_words)-1 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + rdempty <= sub_wire0; + wrusedw <= sub_wire1(ceil_log2(g_nof_words)-1 DOWNTO 0); + wrfull <= sub_wire2; + q <= sub_wire3(g_dat_w-1 DOWNTO 0); + rdusedw <= sub_wire4(ceil_log2(g_nof_words)-1 DOWNTO 0); + + dcfifo_component : dcfifo + GENERIC MAP ( + intended_device_family => "Stratix IV", + lpm_numwords => g_nof_words, + lpm_showahead => "OFF", + lpm_type => "dcfifo", + lpm_width => g_dat_w, + lpm_widthu => ceil_log2(g_nof_words), + overflow_checking => "ON", + rdsync_delaypipe => 5, + underflow_checking => "ON", + use_eab => "ON", + write_aclr_synch => "ON", + wrsync_delaypipe => 5 + ) + PORT MAP ( + wrclk => wrclk, + rdreq => rdreq, + aclr => aclr, + rdclk => rdclk, + wrreq => wrreq, + data => data, + rdempty => sub_wire0, + wrusedw => sub_wire1, + wrfull => sub_wire2, + q => sub_wire3, + rdusedw => sub_wire4 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "4" +-- Retrieval info: PRIVATE: Depth NUMERIC "256" +-- Retrieval info: PRIVATE: Empty NUMERIC "1" +-- Retrieval info: PRIVATE: Full NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Stratix IV" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: Optimize NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: UsedW NUMERIC "1" +-- Retrieval info: PRIVATE: Width NUMERIC "8" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "0" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "8" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "1" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "1" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Stratix IV" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "256" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "8" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "ON" +-- Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND aclr +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL q[7..0] +-- Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL rdclk +-- Retrieval info: USED_PORT: rdempty 0 0 0 0 OUTPUT NODEFVAL rdempty +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq +-- Retrieval info: USED_PORT: rdusedw 0 0 8 0 OUTPUT NODEFVAL rdusedw[7..0] +-- Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL wrclk +-- Retrieval info: USED_PORT: wrfull 0 0 0 0 OUTPUT NODEFVAL wrfull +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq +-- Retrieval info: USED_PORT: wrusedw 0 0 8 0 OUTPUT NODEFVAL wrusedw[7..0] +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +-- Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +-- Retrieval info: CONNECT: rdempty 0 0 0 0 @rdempty 0 0 0 0 +-- Retrieval info: CONNECT: rdusedw 0 0 8 0 @rdusedw 0 0 8 0 +-- Retrieval info: CONNECT: wrfull 0 0 0 0 @wrfull 0 0 0 0 +-- Retrieval info: CONNECT: wrusedw 0 0 8 0 @wrusedw 0 0 8 0 +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc_mixed_widths.qsys b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc_mixed_widths.qsys new file mode 100644 index 0000000000000000000000000000000000000000..2471308fd7968a0d8d49ac06204a7fad7b6f0b3b --- /dev/null +++ b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc_mixed_widths.qsys @@ -0,0 +1,113 @@ +<?xml version="1.0" encoding="UTF-8"?> +<system name="$${FILENAME}"> + <component + name="$${FILENAME}" + displayName="$${FILENAME}" + version="1.0" + description="" + tags="" + categories="" /> + <parameter name="bonusData"><![CDATA[bonusData +{ + element $${FILENAME} + { + } + element ip_arria10_fifo_dc_mixed_widths + { + datum _sortIndex + { + value = "0"; + type = "int"; + } + } +} +]]></parameter> + <parameter name="clockCrossingAdapter" value="HANDSHAKE" /> + <parameter name="device" value="Unknown" /> + <parameter name="deviceFamily" value="Arria 10" /> + <parameter name="deviceSpeedGrade" value="Unknown" /> + <parameter name="fabricMode" value="QSYS" /> + <parameter name="generateLegacySim" value="false" /> + <parameter name="generationId" value="0" /> + <parameter name="globalResetBus" value="false" /> + <parameter name="hdlLanguage" value="VERILOG" /> + <parameter name="hideFromIPCatalog" value="false" /> + <parameter name="maxAdditionalLatency" value="1" /> + <parameter name="projectName" value="" /> + <parameter name="sopcBorderPoints" value="false" /> + <parameter name="systemHash" value="0" /> + <parameter name="testBenchDutName" value="" /> + <parameter name="timeStamp" value="0" /> + <parameter name="useTestBenchNamingPattern" value="false" /> + <instanceScript></instanceScript> + <interface + name="fifo_input" + internal="ip_arria10_fifo_dc_mixed_widths.fifo_input" + type="conduit" + dir="end"> + <port name="data" internal="data" /> + <port name="wrreq" internal="wrreq" /> + <port name="rdreq" internal="rdreq" /> + <port name="wrclk" internal="wrclk" /> + <port name="rdclk" internal="rdclk" /> + <port name="aclr" internal="aclr" /> + </interface> + <interface + name="fifo_output" + internal="ip_arria10_fifo_dc_mixed_widths.fifo_output" + type="conduit" + dir="end"> + <port name="q" internal="q" /> + <port name="rdusedw" internal="rdusedw" /> + <port name="wrusedw" internal="wrusedw" /> + <port name="rdempty" internal="rdempty" /> + <port name="wrfull" internal="wrfull" /> + </interface> + <module + kind="fifo" + version="14.0" + enabled="1" + name="ip_arria10_fifo_dc_mixed_widths" + autoexport="1"> + <parameter name="DEVICE_FAMILY" value="Arria 10" /> + <parameter name="GUI_Clock" value="4" /> + <parameter name="GUI_CLOCKS_ARE_SYNCHRONIZED" value="0" /> + <parameter name="GUI_delaypipe" value="5" /> + <parameter name="GUI_synStage" value="3" /> + <parameter name="GUI_LegacyRREQ" value="1" /> + <parameter name="GUI_RAM_BLOCK_TYPE" value="Auto" /> + <parameter name="GUI_Optimize" value="1" /> + <parameter name="GUI_Optimize_max" value="1" /> + <parameter name="GUI_Width" value="8" /> + <parameter name="GUI_Depth" value="256" /> + <parameter name="GUI_output_width" value="16" /> + <parameter name="GUI_AlmostFullThr" value="-1" /> + <parameter name="GUI_AlmostEmptyThr" value="-1" /> + <parameter name="GUI_MAX_DEPTH" value="Auto" /> + <parameter name="GUI_diff_widths" value="true" /> + <parameter name="GUI_Full" value="true" /> + <parameter name="GUI_Empty" value="true" /> + <parameter name="GUI_UsedW" value="true" /> + <parameter name="GUI_AlmostFull" value="false" /> + <parameter name="GUI_AlmostEmpty" value="false" /> + <parameter name="GUI_sc_aclr" value="false" /> + <parameter name="GUI_sc_sclr" value="false" /> + <parameter name="GUI_rsFull" value="false" /> + <parameter name="GUI_rsEmpty" value="true" /> + <parameter name="GUI_rsUsedW" value="true" /> + <parameter name="GUI_wsFull" value="true" /> + <parameter name="GUI_wsEmpty" value="false" /> + <parameter name="GUI_wsUsedW" value="true" /> + <parameter name="GUI_msb_usedw" value="false" /> + <parameter name="GUI_dc_aclr" value="true" /> + <parameter name="GUI_write_aclr_synch" value="true" /> + <parameter name="GUI_read_aclr_synch" value="false" /> + <parameter name="GUI_OVERFLOW_CHECKING" value="false" /> + <parameter name="GUI_UNDERFLOW_CHECKING" value="false" /> + <parameter name="GUI_LE_BasedFIFO" value="false" /> + <parameter name="GUI_MAX_DEPTH_BY_9" value="false" /> + </module> + <interconnectRequirement for="$system" name="qsys_mm.clockCrossingAdapter" value="HANDSHAKE" /> + <interconnectRequirement for="$system" name="qsys_mm.maxAdditionalLatency" value="1" /> + <interconnectRequirement for="$system" name="qsys_mm.insertDefaultSlave" value="FALSE" /> +</system> diff --git a/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc_mixed_widths.vhd b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc_mixed_widths.vhd new file mode 100644 index 0000000000000000000000000000000000000000..738cc51dd3a869281e305b3747f6ba0aae6273ff --- /dev/null +++ b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_dc_mixed_widths.vhd @@ -0,0 +1,231 @@ +-- megafunction wizard: %FIFO% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: dcfifo_mixed_widths + +-- ============================================================ +-- File Name: ip_arria10_fifo_dc_mixed_widths.vhd +-- Megafunction Name(s): +-- dcfifo_mixed_widths +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 10.0 Build 218 06/27/2010 SJ Full Version +-- ************************************************************ + + +--Copyright (C) 1991-2010 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY common_lib; +USE common_lib.common_pkg.ALL; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY ip_arria10_fifo_dc_mixed_widths IS + GENERIC ( + g_nof_words : NATURAL; -- FIFO size in nof wr_dat words + g_wrdat_w : NATURAL; + g_rddat_w : NATURAL + ); + PORT + ( + aclr : IN STD_LOGIC := '0'; + data : IN STD_LOGIC_VECTOR (g_wrdat_w-1 DOWNTO 0); + rdclk : IN STD_LOGIC ; + rdreq : IN STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (g_rddat_w-1 DOWNTO 0); + rdempty : OUT STD_LOGIC ; + rdusedw : OUT STD_LOGIC_VECTOR (ceil_log2(g_nof_words*g_wrdat_w/g_rddat_w)-1 DOWNTO 0); + wrfull : OUT STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (ceil_log2(g_nof_words)-1 DOWNTO 0) + ); +END ip_arria10_ip_arria10_fifo_dc_mixed_widths; + + +ARCHITECTURE SYN OF ip_arria10_ip_arria10_fifo_dc_mixed_widths IS + + SIGNAL sub_wire0 : STD_LOGIC ; + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (q'RANGE); + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (wrusedw'RANGE); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (rdusedw'RANGE); + + + + COMPONENT dcfifo_mixed_widths + GENERIC ( + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + lpm_widthu_r : NATURAL; + lpm_width_r : NATURAL; + overflow_checking : STRING; + rdsync_delaypipe : NATURAL; + underflow_checking : STRING; + use_eab : STRING; + write_aclr_synch : STRING; + wrsync_delaypipe : NATURAL + ); + PORT ( + rdclk : IN STD_LOGIC ; + wrfull : OUT STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (q'RANGE); + rdempty : OUT STD_LOGIC ; + wrclk : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + wrusedw : OUT STD_LOGIC_VECTOR (wrusedw'RANGE); + aclr : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (data'RANGE); + rdreq : IN STD_LOGIC ; + rdusedw : OUT STD_LOGIC_VECTOR (rdusedw'RANGE) + ); + END COMPONENT; + +BEGIN + wrfull <= sub_wire0; + q <= sub_wire1(q'RANGE); + rdempty <= sub_wire2; + wrusedw <= sub_wire3(wrusedw'RANGE); + rdusedw <= sub_wire4(rdusedw'RANGE); + + dcfifo_mixed_widths_component : dcfifo_mixed_widths + GENERIC MAP ( + intended_device_family => "Stratix IV", + lpm_numwords => g_nof_words, + lpm_showahead => "OFF", + lpm_type => "dcfifo", + lpm_width => g_wrdat_w, + lpm_widthu => ceil_log2(g_nof_words), + lpm_widthu_r => ceil_log2(g_nof_words*g_wrdat_w/g_rddat_w), + lpm_width_r => g_rddat_w, + overflow_checking => "ON", + rdsync_delaypipe => 5, + underflow_checking => "ON", + use_eab => "ON", + write_aclr_synch => "ON", + wrsync_delaypipe => 5 + ) + PORT MAP ( + rdclk => rdclk, + wrclk => wrclk, + wrreq => wrreq, + aclr => aclr, + data => data, + rdreq => rdreq, + wrfull => sub_wire0, + q => sub_wire1, + rdempty => sub_wire2, + wrusedw => sub_wire3, + rdusedw => sub_wire4 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "4" +-- Retrieval info: PRIVATE: Depth NUMERIC "256" +-- Retrieval info: PRIVATE: Empty NUMERIC "1" +-- Retrieval info: PRIVATE: Full NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Stratix IV" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: Optimize NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: UsedW NUMERIC "1" +-- Retrieval info: PRIVATE: Width NUMERIC "8" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "1" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "16" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "1" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "1" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "1" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Stratix IV" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "256" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTHU_R NUMERIC "7" +-- Retrieval info: CONSTANT: LPM_WIDTH_R NUMERIC "16" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "ON" +-- Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "5" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND "aclr" +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL "data[7..0]" +-- Retrieval info: USED_PORT: q 0 0 16 0 OUTPUT NODEFVAL "q[15..0]" +-- Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL "rdclk" +-- Retrieval info: USED_PORT: rdempty 0 0 0 0 OUTPUT NODEFVAL "rdempty" +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq" +-- Retrieval info: USED_PORT: rdusedw 0 0 7 0 OUTPUT NODEFVAL "rdusedw[6..0]" +-- Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL "wrclk" +-- Retrieval info: USED_PORT: wrfull 0 0 0 0 OUTPUT NODEFVAL "wrfull" +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq" +-- Retrieval info: USED_PORT: wrusedw 0 0 8 0 OUTPUT NODEFVAL "wrusedw[7..0]" +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 16 0 @q 0 0 16 0 +-- Retrieval info: CONNECT: rdempty 0 0 0 0 @rdempty 0 0 0 0 +-- Retrieval info: CONNECT: rdusedw 0 0 7 0 @rdusedw 0 0 7 0 +-- Retrieval info: CONNECT: wrfull 0 0 0 0 @wrfull 0 0 0 0 +-- Retrieval info: CONNECT: wrusedw 0 0 8 0 @wrusedw 0 0 8 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc_mixed_widths.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc_mixed_widths.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc_mixed_widths.cmp FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc_mixed_widths.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc_mixed_widths_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc_mixed_widths_waveforms.html FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_dc_mixed_widths_wave*.jpg FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_sc.qsys b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_sc.qsys new file mode 100644 index 0000000000000000000000000000000000000000..f242da88a46821285294070116370020e93e5a30 --- /dev/null +++ b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_sc.qsys @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="UTF-8"?> +<system name="$${FILENAME}"> + <component + name="$${FILENAME}" + displayName="$${FILENAME}" + version="1.0" + description="" + tags="" + categories="" /> + <parameter name="bonusData"><![CDATA[bonusData +{ + element $${FILENAME} + { + } + element ip_arria10_fifo_sc + { + datum _sortIndex + { + value = "0"; + type = "int"; + } + } +} +]]></parameter> + <parameter name="clockCrossingAdapter" value="HANDSHAKE" /> + <parameter name="device" value="Unknown" /> + <parameter name="deviceFamily" value="Arria 10" /> + <parameter name="deviceSpeedGrade" value="Unknown" /> + <parameter name="fabricMode" value="QSYS" /> + <parameter name="generateLegacySim" value="false" /> + <parameter name="generationId" value="0" /> + <parameter name="globalResetBus" value="false" /> + <parameter name="hdlLanguage" value="VERILOG" /> + <parameter name="hideFromIPCatalog" value="false" /> + <parameter name="maxAdditionalLatency" value="1" /> + <parameter name="projectName" value="" /> + <parameter name="sopcBorderPoints" value="false" /> + <parameter name="systemHash" value="0" /> + <parameter name="testBenchDutName" value="" /> + <parameter name="timeStamp" value="0" /> + <parameter name="useTestBenchNamingPattern" value="false" /> + <instanceScript></instanceScript> + <interface + name="fifo_input" + internal="ip_arria10_fifo_sc.fifo_input" + type="conduit" + dir="end"> + <port name="data" internal="data" /> + <port name="wrreq" internal="wrreq" /> + <port name="rdreq" internal="rdreq" /> + <port name="clock" internal="clock" /> + <port name="aclr" internal="aclr" /> + </interface> + <interface + name="fifo_output" + internal="ip_arria10_fifo_sc.fifo_output" + type="conduit" + dir="end"> + <port name="q" internal="q" /> + <port name="usedw" internal="usedw" /> + <port name="full" internal="full" /> + <port name="empty" internal="empty" /> + </interface> + <module + kind="fifo" + version="14.0" + enabled="1" + name="ip_arria10_fifo_sc" + autoexport="1"> + <parameter name="DEVICE_FAMILY" value="Arria 10" /> + <parameter name="GUI_Clock" value="0" /> + <parameter name="GUI_CLOCKS_ARE_SYNCHRONIZED" value="1" /> + <parameter name="GUI_delaypipe" value="3" /> + <parameter name="GUI_synStage" value="3" /> + <parameter name="GUI_LegacyRREQ" value="1" /> + <parameter name="GUI_RAM_BLOCK_TYPE" value="Auto" /> + <parameter name="GUI_Optimize" value="1" /> + <parameter name="GUI_Optimize_max" value="1" /> + <parameter name="GUI_Width" value="8" /> + <parameter name="GUI_Depth" value="256" /> + <parameter name="GUI_output_width" value="8" /> + <parameter name="GUI_AlmostFullThr" value="-1" /> + <parameter name="GUI_AlmostEmptyThr" value="-1" /> + <parameter name="GUI_MAX_DEPTH" value="Auto" /> + <parameter name="GUI_diff_widths" value="false" /> + <parameter name="GUI_Full" value="true" /> + <parameter name="GUI_Empty" value="true" /> + <parameter name="GUI_UsedW" value="true" /> + <parameter name="GUI_AlmostFull" value="false" /> + <parameter name="GUI_AlmostEmpty" value="false" /> + <parameter name="GUI_sc_aclr" value="true" /> + <parameter name="GUI_sc_sclr" value="false" /> + <parameter name="GUI_rsFull" value="false" /> + <parameter name="GUI_rsEmpty" value="true" /> + <parameter name="GUI_rsUsedW" value="false" /> + <parameter name="GUI_wsFull" value="true" /> + <parameter name="GUI_wsEmpty" value="false" /> + <parameter name="GUI_wsUsedW" value="false" /> + <parameter name="GUI_msb_usedw" value="false" /> + <parameter name="GUI_dc_aclr" value="false" /> + <parameter name="GUI_write_aclr_synch" value="false" /> + <parameter name="GUI_read_aclr_synch" value="false" /> + <parameter name="GUI_OVERFLOW_CHECKING" value="false" /> + <parameter name="GUI_UNDERFLOW_CHECKING" value="false" /> + <parameter name="GUI_LE_BasedFIFO" value="false" /> + <parameter name="GUI_MAX_DEPTH_BY_9" value="false" /> + </module> + <interconnectRequirement for="$system" name="qsys_mm.clockCrossingAdapter" value="HANDSHAKE" /> + <interconnectRequirement for="$system" name="qsys_mm.maxAdditionalLatency" value="1" /> + <interconnectRequirement for="$system" name="qsys_mm.insertDefaultSlave" value="FALSE" /> +</system> diff --git a/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_sc.vhd b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_sc.vhd new file mode 100644 index 0000000000000000000000000000000000000000..24ab13fa7f631e8e0245445ac5fc8c2c9bf8d28e --- /dev/null +++ b/libraries/technology/ip_arria10/fifo/ip_arria10_fifo_sc.vhd @@ -0,0 +1,206 @@ +-- megafunction wizard: %FIFO% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: scfifo + +-- ============================================================ +-- File Name: ip_arria10_fifo_sc.vhd +-- Megafunction Name(s): +-- scfifo +-- +-- Simulation Library Files(s): +-- +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 10.1 Build 197 01/19/2011 SP 1 SJ Full Version +-- ************************************************************ + + +--Copyright (C) 1991-2011 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY common_lib; +USE common_lib.common_pkg.ALL; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY ip_arria10_fifo_sc IS + GENERIC ( + g_use_eab : STRING := "ON"; + g_dat_w : NATURAL; + g_nof_words : NATURAL + ); + PORT + ( + aclr : IN STD_LOGIC ; + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0); + rdreq : IN STD_LOGIC ; + wrreq : IN STD_LOGIC ; + empty : OUT STD_LOGIC ; + full : OUT STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0) ; + usedw : OUT STD_LOGIC_VECTOR (ceil_log2(g_nof_words)-1 DOWNTO 0) + ); +END ip_arria10_fifo_sc; + + +ARCHITECTURE SYN OF ip_arria10_fifo_sc IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (usedw'RANGE); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (data'RANGE); + + + + COMPONENT scfifo + GENERIC ( + add_ram_output_register : STRING; + intended_device_family : STRING; + lpm_numwords : NATURAL; + lpm_showahead : STRING; + lpm_type : STRING; + lpm_width : NATURAL; + lpm_widthu : NATURAL; + overflow_checking : STRING; + underflow_checking : STRING; + use_eab : STRING + ); + PORT ( + clock : IN STD_LOGIC ; + usedw : OUT STD_LOGIC_VECTOR (ceil_log2(g_nof_words)-1 DOWNTO 0); + empty : OUT STD_LOGIC ; + full : OUT STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0); + wrreq : IN STD_LOGIC ; + aclr : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (g_dat_w-1 DOWNTO 0); + rdreq : IN STD_LOGIC + ); + END COMPONENT; + +BEGIN + usedw <= sub_wire0; + empty <= sub_wire1; + full <= sub_wire2; + q <= sub_wire3; + + scfifo_component : scfifo + GENERIC MAP ( + add_ram_output_register => "ON", + intended_device_family => "Stratix IV", + lpm_numwords => g_nof_words, + lpm_showahead => "OFF", + lpm_type => "scfifo", + lpm_width => g_dat_w, + lpm_widthu => ceil_log2(g_nof_words), + overflow_checking => "ON", + underflow_checking => "ON", + use_eab => g_use_eab + ) + PORT MAP ( + clock => clock, + wrreq => wrreq, + aclr => aclr, + data => data, + rdreq => rdreq, + usedw => sub_wire0, + empty => sub_wire1, + full => sub_wire2, + q => sub_wire3 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +-- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +-- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +-- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "1" +-- Retrieval info: PRIVATE: Clock NUMERIC "0" +-- Retrieval info: PRIVATE: Depth NUMERIC "256" +-- Retrieval info: PRIVATE: Empty NUMERIC "1" +-- Retrieval info: PRIVATE: Full NUMERIC "1" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Stratix IV" +-- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +-- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" +-- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +-- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: Optimize NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +-- Retrieval info: PRIVATE: UsedW NUMERIC "1" +-- Retrieval info: PRIVATE: Width NUMERIC "8" +-- Retrieval info: PRIVATE: dc_aclr NUMERIC "0" +-- Retrieval info: PRIVATE: diff_widths NUMERIC "0" +-- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +-- Retrieval info: PRIVATE: output_width NUMERIC "8" +-- Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +-- Retrieval info: PRIVATE: rsFull NUMERIC "0" +-- Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +-- Retrieval info: PRIVATE: sc_aclr NUMERIC "1" +-- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +-- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +-- Retrieval info: PRIVATE: wsFull NUMERIC "1" +-- Retrieval info: PRIVATE: wsUsedW NUMERIC "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: ADD_RAM_OUTPUT_REGISTER STRING "ON" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Stratix IV" +-- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "256" +-- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "scfifo" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "8" +-- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +-- Retrieval info: CONSTANT: USE_EAB STRING "ON" +-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT NODEFVAL "aclr" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL "data[7..0]" +-- Retrieval info: USED_PORT: empty 0 0 0 0 OUTPUT NODEFVAL "empty" +-- Retrieval info: USED_PORT: full 0 0 0 0 OUTPUT NODEFVAL "full" +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]" +-- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq" +-- Retrieval info: USED_PORT: usedw 0 0 8 0 OUTPUT NODEFVAL "usedw[7..0]" +-- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq" +-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +-- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +-- Retrieval info: CONNECT: empty 0 0 0 0 @empty 0 0 0 0 +-- Retrieval info: CONNECT: full 0 0 0 0 @full 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0 +-- Retrieval info: CONNECT: usedw 0 0 8 0 @usedw 0 0 8 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_sc.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_sc.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_sc.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_sc.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_sc_inst.vhd FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_sc_waveforms.html TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_arria10_fifo_sc_wave*.jpg FALSE