diff --git a/designs/vivado/scalp_firmware/2020.2/src/hdl/scalp_firmware.vhd b/designs/vivado/scalp_firmware/2020.2/src/hdl/scalp_firmware.vhd index dd1dfe39cb58c383230e78819109eb14e3bd306c..bc51fd4fedf22debe98c02f21d425fb73e206985 100644 --- a/designs/vivado/scalp_firmware/2020.2/src/hdl/scalp_firmware.vhd +++ b/designs/vivado/scalp_firmware/2020.2/src/hdl/scalp_firmware.vhd @@ -872,7 +872,7 @@ begin -- type t_write_sp_states is (E_WR_SP_IDLE, E_WR_SP_VALID, E_WR_SP_WAIT); - type t_write_sp_states is (E_WR_SP_IDLE, E_WR_SP_VALID_0, E_WR_SP_LAST, E_WR_SP_VALID_1, E_WR_SP_WAIT); + type t_write_sp_states is (E_WR_SP_IDLE, E_WR_SP_VALID_0, E_WR_SP_LAST_0, E_WR_SP_LAST_1, E_WR_SP_VALID_1, E_WR_SP_WAIT); signal ScalpRouterResetxRNA : std_ulogic := '0'; -- Scalp Packets @@ -1149,10 +1149,15 @@ begin when E_WR_SP_VALID_0 => ScalpPacketValid12xS <= '0'; - WrSPStatexDN <= E_WR_SP_LAST; + WrSPStatexDN <= E_WR_SP_LAST_0; - when E_WR_SP_LAST => + when E_WR_SP_LAST_0 => if RXAxism2sVectorxD(C_LOCAL_IF_ID).LastxS = '1' then + WrSPStatexDN <= E_WR_SP_LAST_1; + end if; + + when E_WR_SP_LAST_1 => + if RXAxism2sVectorxD(C_LOCAL_IF_ID).LastxS = '0' then ScalpPacketValid12xS <= '1'; WrSPStatexDN <= E_WR_SP_VALID_1; end if; diff --git a/ips/hw/scalp_router/src/hdl/scalp_axis_to_sp.vhd b/ips/hw/scalp_router/src/hdl/scalp_axis_to_sp.vhd index 976e7b64aebea6f66d3883299efbbe091e00e7c4..65930a5d6ff9564473fded5dc6752f4f96e11014 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_axis_to_sp.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_axis_to_sp.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: AXI Stream to Scalp Packet converter. -- --- Last update: 2021-05-10 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -27,8 +27,8 @@ use ieee.math_real.all; --use ieee.std_logic_arith.all; --use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; library work; use work.axi4_pkg.all; diff --git a/ips/hw/scalp_router/src/hdl/scalp_booking_vector.vhd b/ips/hw/scalp_router/src/hdl/scalp_booking_vector.vhd index c93f76bc8cd50aa7951b63413498c77458b1891a..a72f29473dd42615708d3be2a5ab163bd9cff846 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_booking_vector.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_booking_vector.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Manage the booking vector. -- --- Last update: 2020-02-13 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -26,8 +26,8 @@ use ieee.numeric_std.all; --use ieee.std_logic_arith.all; --use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; use work.scalp_misc.all; diff --git a/ips/hw/scalp_router/src/hdl/scalp_fifo_double_register.vhd b/ips/hw/scalp_router/src/hdl/scalp_fifo_double_register.vhd index 86b97ed0f5f0e020109d5741636fb3428bc3bc82..a384a4a5063fc6884f9e7dda877ffddb02891eb9 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_fifo_double_register.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_fifo_double_register.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Small fifo built with two registers. -- --- Last update: 2021-05-18 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -64,22 +64,6 @@ architecture behavioral of scalp_fifo_double_register is attribute mark_debug : string; attribute keep : string; -- - -- attribute mark_debug of Axism2s0xD : signal is "true"; - -- attribute keep of Axism2s0xD : signal is "true"; - -- attribute mark_debug of Axism2s1xDP : signal is "true"; - -- attribute keep of Axism2s1xDP : signal is "true"; - -- attribute mark_debug of Axism2s1xDN : signal is "true"; - -- attribute keep of Axism2s1xDN : signal is "true"; - -- attribute mark_debug of Axism2s2xDP : signal is "true"; - -- attribute keep of Axism2s2xDP : signal is "true"; - -- attribute mark_debug of Axism2s2xDN : signal is "true"; - -- attribute keep of Axism2s2xDN : signal is "true"; - -- attribute mark_debug of Axism2s3xD : signal is "true"; - -- attribute keep of Axism2s3xD : signal is "true"; - -- attribute mark_debug of Axiss2m1xDN : signal is "true"; - -- attribute keep of Axiss2m1xDN : signal is "true"; - -- attribute mark_debug of Axiss2m1xDP : signal is "true"; - -- attribute keep of Axiss2m1xDP : signal is "true"; begin -- architecture behavioral diff --git a/ips/hw/scalp_router/src/hdl/scalp_matrix_index.vhd b/ips/hw/scalp_router/src/hdl/scalp_matrix_index.vhd index 262889e3a9ed1ee8057a1769d3c27ed6374cba41..ced3c01e876369395e9adaab47f6c87b6abea757 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_matrix_index.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_matrix_index.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Determines the index of the output vector. -- --- Last update: 2020-01-19 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -26,8 +26,8 @@ use ieee.numeric_std.all; --use ieee.std_logic_arith.all; --use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; entity scalp_matrix_index is diff --git a/ips/hw/scalp_router/src/hdl/scalp_router.vhd b/ips/hw/scalp_router/src/hdl/scalp_router.vhd index 76ff8f2fb0f6e2e727b0132350392e143a2fb412..c34d1920117c21aaa7792c5c8b010b5f1d578e80 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_router.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_router.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Scalp Router (NoC). -- --- Last update: 2021-05-04 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -27,8 +27,8 @@ use ieee.math_real.all; --use ieee.std_logic_arith.all; --use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; library work; use work.axi4_pkg.all; @@ -117,19 +117,19 @@ architecture rtl of scalp_router is -- Signals -- Scalp Router -- Local Router Network Address - signal LocNetAddrxD : t_scalp_netaddr := C_3D_MIN_SCALP_NETADDR; + signal LocNetAddrxD : t_scalp_netaddr := C_3D_MIN_SCALP_NETADDR; -- Axi4 Stream Interfaces - signal RXAxism2sVectorxD : t_axi4m2s_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0) := (others => C_NO_AXI4_M2S); - signal RXAxiss2mVectorxD : t_axi4s2m_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0) := (others => C_NO_AXI4_S2M); - signal TXAxism2sVectorxD : t_axi4m2s_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0) := (others => C_NO_AXI4_M2S); - signal TXAxiss2mVectorxD : t_axi4s2m_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0) := (others => C_NO_AXI4_S2M); + signal RXAxism2sVectorxD : t_axi4m2s_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0) := (others => C_NO_AXI4_M2S); + signal RXAxiss2mVectorxD : t_axi4s2m_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0) := (others => C_NO_AXI4_S2M); + signal TXAxism2sVectorxD : t_axi4m2s_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0) := (others => C_NO_AXI4_M2S); + signal TXAxiss2mVectorxD : t_axi4s2m_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0) := (others => C_NO_AXI4_S2M); -- Scalp QoS Vectors - signal QoSVectorxD : t_scalp_qos_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0) := (others => C_SCALP_NO_QOS); + signal QoSVectorxD : t_scalp_qos_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0) := (others => C_SCALP_NO_QOS); -- Axi4 Stream Cross-Links with Neighborhood - signal RXAxi4m2sLinksxD : t_axi4m2s_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => C_NO_AXI4_M2S)); - signal RXAxi4s2mLinksxD : t_axi4s2m_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => C_NO_AXI4_S2M)); - signal TXAxi4m2sLinksxD : t_axi4m2s_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => C_NO_AXI4_M2S)); - signal TXAxi4s2mLinksxD : t_axi4s2m_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => C_NO_AXI4_S2M)); + signal RXAxi4m2sLinksxD : t_axi4m2s_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => C_NO_AXI4_M2S)); + signal RXAxi4s2mLinksxD : t_axi4s2m_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => C_NO_AXI4_S2M)); + signal TXAxi4m2sLinksxD : t_axi4m2s_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => C_NO_AXI4_M2S)); + signal TXAxi4s2mLinksxD : t_axi4s2m_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => C_NO_AXI4_S2M)); --------------------------------------------------------------------------- -- For Simulation With Vivado Only -- Axi4 Stream Cross-Links with Neighborhood @@ -139,37 +139,15 @@ architecture rtl of scalp_router is -- signal TXAxi4s2mLinksxD : t_axi4s2m_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0) := (others => C_NO_SIM_AXISS2M_VECTOR); --------------------------------------------------------------------------- -- Scalp Booking Vectors - signal BookingVectorsInxD : t_scalp_booking_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => '0')); - signal BookingVectorsOutxD : t_scalp_booking_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => '0')); + signal BookingVectorsInxD : t_scalp_booking_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => '0')); + signal BookingVectorsOutxD : t_scalp_booking_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => '0')); -- Scalp Scheduler Ack Vectors - signal SchedulerAckVectorsInxD : t_scalp_scheduler_ack_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => '0')); - signal SchedulerAckVectorsOutxD : t_scalp_scheduler_ack_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => '0')); + signal SchedulerAckVectorsInxD : t_scalp_scheduler_ack_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => '0')); + signal SchedulerAckVectorsOutxD : t_scalp_scheduler_ack_vector_vector((C_SCALP_NUMBER_OF_INTERFACE - 1) downto 0)((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => (others => '0')); -- Attributes - attribute mark_debug : string; - attribute keep : string; + attribute mark_debug : string; + attribute keep : string; -- - -- attribute mark_debug of TXAxiss2mVectorxD : signal is "true"; - -- attribute keep of TXAxiss2mVectorxD : signal is "true"; - -- attribute mark_debug of LocNetAddrxD : signal is "true"; - -- attribute keep of LocNetAddrxD : signal is "true"; - -- attribute mark_debug of RXAxism2sVectorxD : signal is "true"; - -- attribute keep of RXAxism2sVectorxD : signal is "true"; - -- attribute mark_debug of RXAxiss2mVectorxD : signal is "true"; - -- attribute keep of RXAxiss2mVectorxD : signal is "true"; - -- attribute mark_debug of TXAxism2sVectorxD : signal is "true"; - -- attribute keep of TXAxism2sVectorxD : signal is "true"; - -- attribute mark_debug of TXAxiss2mVectorxD : signal is "true"; - -- attribute keep of TXAxiss2mVectorxD : signal is "true"; - -- attribute mark_debug of QoSVectorxD : signal is "true"; - -- attribute keep of QoSVectorxD : signal is "true"; - -- attribute mark_debug of BookingVectorsInxD : signal is "true"; - -- attribute keep of BookingVectorsInxD : signal is "true"; - -- attribute mark_debug of BookingVectorsOutxD : signal is "true"; - -- attribute keep of BookingVectorsOutxD : signal is "true"; - -- attribute mark_debug of SchedulerAckVectorsInxD : signal is "true"; - -- attribute keep of SchedulerAckVectorsInxD : signal is "true"; - -- attribute mark_debug of SchedulerAckVectorsOutxD : signal is "true"; - -- attribute keep of SchedulerAckVectorsOutxD : signal is "true"; begin -- architecture rtl diff --git a/ips/hw/scalp_router/src/hdl/scalp_router_core.vhd b/ips/hw/scalp_router/src/hdl/scalp_router_core.vhd index 64c9576ae3ded63b050a88f6158908c94fbbf9b1..ddec2daf540b26e5afdbdb57bd3996391181b41e 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_router_core.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_router_core.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Scalp Router Core Algorithm -- --- Last update: 2020-01-21 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -26,8 +26,8 @@ use ieee.numeric_std.all; --use ieee.std_logic_arith.all; --use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; use work.scalp_misc.all; diff --git a/ips/hw/scalp_router/src/hdl/scalp_router_interface.vhd b/ips/hw/scalp_router/src/hdl/scalp_router_interface.vhd index 40da0be4ede265a016972156ff74999b3e907a8c..08a4f60efb0418d4f3ad5ba74f8f752f95d1d67e 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_router_interface.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_router_interface.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Scalp Router Interface. -- --- Last update: 2021-05-18 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -27,8 +27,8 @@ use ieee.math_real.all; --use ieee.std_logic_arith.all; --use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; use work.axi4_pkg.all; use work.scalp_misc.all; @@ -93,8 +93,6 @@ architecture rtl of scalp_router_interface is SysRstxRNAI : in std_ulogic; DstRouterNetAddrxDO : out t_scalp_netaddr; RouterNetAddrValidxSO : out std_ulogic; - -- BookingVectorValidxSI : in std_ulogic; - -- SchedulerAckxDI : in std_ulogic_vector((C_SCALP_SCHEDULER_ACK_VECTOR_SIZE - 1) downto 0); RXAxi4M2SLinkxDI : in t_axi4m2s; RXAxi4S2MLinkxDO : out t_axi4s2m; TXAxi4M2SLinkxDO : out t_axi4m2s; @@ -217,21 +215,9 @@ architecture rtl of scalp_router_interface is signal DTXAxi4S2MLinkxD : t_axi4s2m := C_NO_AXI4_S2M; -- Attributes - attribute mark_debug : string; - attribute keep : string; + attribute mark_debug : string; + attribute keep : string; -- - -- attribute mark_debug of RXAxi4m2sIfxD : signal is "true"; - -- attribute keep of RXAxi4m2sIfxD : signal is "true"; - -- attribute mark_debug of RXAxi4s2mIfxD : signal is "true"; - -- attribute keep of RXAxi4s2mIfxD : signal is "true"; - -- attribute mark_debug of TXAxi4M2SLinkxD : signal is "true"; - -- attribute keep of TXAxi4M2SLinkxD : signal is "true"; - -- attribute mark_debug of TXAxi4S2MLinkxD : signal is "true"; - -- attribute keep of TXAxi4S2MLinkxD : signal is "true"; - -- attribute mark_debug of TXAxi4m2sLinksxD : signal is "true"; - -- attribute keep of TXAxi4m2sLinksxD : signal is "true"; - -- attribute mark_debug of TXAxi4s2mLinksxD : signal is "true"; - -- attribute keep of TXAxi4s2mLinksxD : signal is "true"; begin -- architecture rtl @@ -261,8 +247,6 @@ begin -- architecture rtl SysRstxRNAI => SysRstxRNAI, DstRouterNetAddrxDO => DstRouterNetAddrxD, RouterNetAddrValidxSO => RouterNetAddrValidxS, - -- BookingVectorValidxSI => BookingVectorValidxS, - -- SchedulerAckxDI => SchedulerAckxD, RXAxi4M2SLinkxDI => RXAxi4m2sIfxD, RXAxi4S2MLinkxDO => RXAxi4s2mIfxD, TXAxi4M2SLinkxDO => TXAxi4M2SLinkxD, diff --git a/ips/hw/scalp_router/src/hdl/scalp_rx_side.vhd b/ips/hw/scalp_router/src/hdl/scalp_rx_side.vhd index 706c9520a94ec41db5b9dc66756fe464c94bf529..4fe94ef776d6ece2e1c246d09f1f4c1b32966a31 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_rx_side.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_rx_side.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Scalp RX side state machine. -- --- Last update: 2021-05-11 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -27,8 +27,8 @@ use ieee.math_real.all; --use ieee.std_logic_arith.all; --use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; use work.axi4_pkg.all; use work.scalp_misc.all; @@ -93,8 +93,6 @@ architecture behavioral of scalp_rx_side is -- Enity IO Signals signal SchedulerAckxD : std_ulogic_vector((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => '0'); - -- signal BookingVectorxDP : std_ulogic_vector((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => '0'); - -- signal BookingVectorxDN : std_ulogic_vector((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => '0'); signal TXAxi4M2SLinkxD : t_axi4m2s := C_NO_AXI4_M2S; signal TXAxi4S2MLinkxD : t_axi4s2m := C_NO_AXI4_S2M; signal RXAxi4M2SLinkxD : t_axi4m2s_vector((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => C_NO_AXI4_M2S); @@ -104,7 +102,6 @@ architecture behavioral of scalp_rx_side is signal RequestVectorxDP : std_ulogic_vector((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => '0'); signal RequestVectorxDN : std_ulogic_vector((C_SCALP_NEIGHBORS_VECTOR_SIZE - 1) downto 0) := (others => '0'); signal ArbitratedxS : std_ulogic := '0'; - -- signal GrantVectorxD : std_ulogic_vector((C_SCALP_PORTS - 1) downto 0) := (others => '0'); signal GrantIndexxD : std_ulogic_vector((scalp_log2ceilnz(C_SCALP_NEIGHBORS_VECTOR_SIZE) - 1) downto 0) := (others => '0'); -- Rx Side States signal RXSideStatexDP : t_scalp_rx_side_states := E_SCALP_RX_IDLE; @@ -116,45 +113,9 @@ architecture behavioral of scalp_rx_side is signal EnPopNPushxS : std_ulogic := '0'; -- Attributes - attribute mark_debug : string; - attribute keep : string; + attribute mark_debug : string; + attribute keep : string; -- - -- attribute mark_debug of TXAxi4M2SLinkxD : signal is "true"; - -- attribute keep of TXAxi4M2SLinkxD : signal is "true"; - -- attribute mark_debug of TXAxi4S2MLinkxD : signal is "true"; - -- attribute keep of TXAxi4S2MLinkxD : signal is "true"; - -- attribute mark_debug of RXAxi4M2SLinkxD : signal is "true"; - -- attribute keep of RXAxi4M2SLinkxD : signal is "true"; - -- attribute mark_debug of RXAxi4S2MLinkxD : signal is "true"; - -- attribute keep of RXAxi4S2MLinkxD : signal is "true"; - -- attribute mark_debug of BookingVectorxDP : signal is "true"; - -- attribute keep of BookingVectorxDP : signal is "true"; - -- attribute mark_debug of BookingVectorxDN : signal is "true"; - -- attribute keep of BookingVectorxDN : signal is "true"; - -- attribute mark_debug of SchedulerAckxD : signal is "true"; - -- attribute keep of SchedulerAckxD : signal is "true"; - -- attribute mark_debug of RequestVectorxDP : signal is "true"; - -- attribute keep of RequestVectorxDP : signal is "true"; - -- attribute mark_debug of RequestVectorxDN : signal is "true"; - -- attribute keep of RequestVectorxDN : signal is "true"; - -- attribute mark_debug of ArbitratexS : signal is "true"; - -- attribute keep of ArbitratexS : signal is "true"; - -- attribute mark_debug of ArbitratedxS : signal is "true"; - -- attribute keep of ArbitratedxS : signal is "true"; - -- attribute mark_debug of GrantIndexxD : signal is "true"; - -- attribute keep of GrantIndexxD : signal is "true"; - -- attribute mark_debug of RXSideStatexDP : signal is "true"; - -- attribute keep of RXSideStatexDP : signal is "true"; - -- attribute mark_debug of RXSideStatexDN : signal is "true"; - -- attribute keep of RXSideStatexDN : signal is "true"; - -- attribute mark_debug of ReadyInxD : signal is "true"; - -- attribute keep of ReadyInxD : signal is "true"; - -- attribute mark_debug of ReadyOutxD : signal is "true"; - -- attribute keep of ReadyOutxD : signal is "true"; - -- attribute mark_debug of EnPopNPushxS : signal is "true"; - -- attribute keep of EnPopNPushxS : signal is "true"; - -- attribute mark_debug of Axism2sInxD : signal is "true"; - -- attribute keep of Axism2sInxD : signal is "true"; begin -- architecture behavioral @@ -214,7 +175,7 @@ begin -- architecture behavioral RXSideStatexDP <= RXSideStatexDN; RequestVectorxDP <= RequestVectorxDN; end if; - end process UpdateRegxP; + end process UpdateRegxP; RxSideStateMachinexP : process (ArbitratedxS, BookingVectorxDI, GrantIndexxD, RXAxi4M2SLinkxD, @@ -253,17 +214,12 @@ begin -- architecture behavioral EnPopNPushxS <= '1'; if TXAxi4M2SLinkxD.LastxS = '1' then - -- RXAxi4S2MLinkxD <= (others => C_NO_AXI4_S2M); -- - RXSideStatexDN <= E_SCALP_RX_ACK; + RXSideStatexDN <= E_SCALP_RX_ACK; end if; when E_SCALP_RX_ACK => SchedulerAckxD(to_integer(unsigned(GrantIndexxD))) <= '1'; - -- if to_integer(unsigned(BookingVectorxDI)) /= 0 then - -- RXSideStatexDN <= E_SCALP_RX_ARBITRATE; - -- else RXSideStatexDN <= E_SCALP_RX_IDLE; - -- end if; when others => null; end case; diff --git a/ips/hw/scalp_router/src/hdl/scalp_scheduler.vhd b/ips/hw/scalp_router/src/hdl/scalp_scheduler.vhd index 1d9d5ff09ac1b909f6aae9975b160db63a627e02..d7b23815b4ae35499a8c96d3edbe96bbfa831470 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_scheduler.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_scheduler.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Generic Round Robin or Random Scheduler. -- --- Last update: 2020-01-17 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -26,12 +26,11 @@ use ieee.numeric_std.all; --use ieee.std_logic_arith.all; --use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; library work; use work.scalp_misc.all; --- use work.scalp_utility.all; entity scalp_scheduler is diff --git a/ips/hw/scalp_router/src/hdl/scalp_scheduler_ack.vhd b/ips/hw/scalp_router/src/hdl/scalp_scheduler_ack.vhd index c74b8726a38181d9b02268abb47032c5eda5e0b2..2199368ccf3db07f4d0c05aa2a09365cd59f7847 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_scheduler_ack.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_scheduler_ack.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Scalp Scheduler Acknowledge. -- --- Last update: 2019-11-22 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -26,8 +26,8 @@ use ieee.numeric_std.all; --use ieee.std_logic_arith.all; use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; -- use work.utility.all; diff --git a/ips/hw/scalp_router/src/hdl/scalp_sp_to_axis.vhd b/ips/hw/scalp_router/src/hdl/scalp_sp_to_axis.vhd index 4f0d7b3002ce11d4e74501f56a84f8af9ad10eff..1c1083babc417875ca67aabcefeebbfd44b0d71e 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_sp_to_axis.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_sp_to_axis.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Scalp Packet to AXI Stream converter. -- --- Last update: 2021-01-11 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -26,8 +26,8 @@ use ieee.numeric_std.all; --use ieee.std_logic_arith.all; --use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; library work; use work.axi4_pkg.all; @@ -113,29 +113,9 @@ architecture behavioral of scalp_sp_to_axis is signal ScalpRdyxS : std_ulogic := '0'; -- Attributes - attribute mark_debug : string; - attribute keep : string; + attribute mark_debug : string; + attribute keep : string; -- - -- attribute mark_debug of ScalpAxism2sxD : signal is "true"; - -- attribute keep of ScalpAxism2sxD : signal is "true"; - -- attribute mark_debug of ScalpAxiss2mxD : signal is "true"; - -- attribute keep of ScalpAxiss2mxD : signal is "true"; - -- attribute mark_debug of ScalpPacketStatexDP : signal is "true"; - -- attribute keep of ScalpPacketStatexDP : signal is "true"; - -- attribute mark_debug of ScalpPacketStatexDN : signal is "true"; - -- attribute keep of ScalpPacketStatexDN : signal is "true"; - -- attribute mark_debug of ScalpPacketCntxDP : signal is "true"; - -- attribute keep of ScalpPacketCntxDP : signal is "true"; - -- attribute mark_debug of ScalpPacketValidxS : signal is "true"; - -- attribute keep of ScalpPacketValidxS : signal is "true"; - -- attribute mark_debug of ScalpPacketxD : signal is "true"; - -- attribute keep of ScalpPacketxD : signal is "true"; - -- attribute mark_debug of DataxDP : signal is "true"; - -- attribute keep of DataxDP : signal is "true"; - -- attribute mark_debug of DataxDN : signal is "true"; - -- attribute keep of DataxDN : signal is "true"; - -- attribute mark_debug of ScalpRdyxS : signal is "true"; - -- attribute keep of ScalpRdyxS : signal is "true"; begin -- architecture behavioral diff --git a/ips/hw/scalp_router/src/hdl/scalp_tx_fanout.vhd b/ips/hw/scalp_router/src/hdl/scalp_tx_fanout.vhd index 32875001c975282af9a5dfac33ff1f4724d54a9d..4c4c1c8e36bfa928eb157dded570dbf897dfd8d2 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_tx_fanout.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_tx_fanout.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Spread of the AXI4 Stream bus. -- --- Last update: 2020-11-30 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -26,8 +26,8 @@ use ieee.numeric_std.all; --use ieee.std_logic_arith.all; --use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; -- use work.utility.all; use work.axi4_pkg.all; diff --git a/ips/hw/scalp_router/src/hdl/scalp_tx_side.vhd b/ips/hw/scalp_router/src/hdl/scalp_tx_side.vhd index ed739ec929a803a33dda31fb137e1c7bb77b5a9e..1a0d99ae2e7a215ef795bf8a40a748d1db5eb5ad 100644 --- a/ips/hw/scalp_router/src/hdl/scalp_tx_side.vhd +++ b/ips/hw/scalp_router/src/hdl/scalp_tx_side.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.1 -- Description: Scalp TX side state machine. -- --- Last update: 2021-05-18 +-- Last update: 2021-05-19 -- --------------------------------------------------------------------------------- library ieee; @@ -26,8 +26,8 @@ use ieee.numeric_std.all; --use ieee.std_logic_arith.all; --use ieee.std_logic_misc.all; ---library UNISIM; ---use UNISIM.VCOMPONENTS.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; use work.axi4_pkg.all; use work.scalp_misc.all; @@ -44,10 +44,6 @@ entity scalp_tx_side is -- Routeur Network Address DstRouterNetAddrxDO : out t_scalp_netaddr; RouterNetAddrValidxSO : out std_ulogic; - -- Indicates when the booking vector is valid. - -- BookingVectorValidxSI : in std_ulogic; - -- Scheduler Acknowledgement Vector - -- SchedulerAckxDI : in std_ulogic_vector((C_SCALP_SCHEDULER_ACK_VECTOR_SIZE - 1) downto 0); -- Axi4 Stream -- Input side RXAxi4M2SLinkxDI : in t_axi4m2s; @@ -73,51 +69,24 @@ architecture behavioral of scalp_tx_side is Axiss2mLinkxDI : in t_axi4s2m); end component scalp_fifo_double_register; - signal DstRouterNetAddrxDP : t_scalp_netaddr := C_3D_MIN_SCALP_NETADDR; - signal DstRouterNetAddrxDN : t_scalp_netaddr := C_3D_MIN_SCALP_NETADDR; - signal RouterNetAddrValidxSP : std_ulogic := '0'; - signal RouterNetAddrValidxSN : std_ulogic := '0'; - -- signal SchedulerAckxD : std_ulogic_vector((C_SCALP_SCHEDULER_ACK_VECTOR_SIZE - 1) downto 0) := (others => '0'); - signal RXAxi4M2SLinkxD : t_axi4m2s := C_NO_AXI4_M2S; - signal RXAxi4S2MLinkxD : t_axi4s2m := C_NO_AXI4_S2M; - signal TXAxi4M2SLinkxD : t_axi4m2s := C_NO_AXI4_M2S; - signal TXAxi4S2MLinkxD : t_axi4s2m := C_NO_AXI4_S2M; + signal DstRouterNetAddrxDP : t_scalp_netaddr := C_3D_MIN_SCALP_NETADDR; + signal DstRouterNetAddrxDN : t_scalp_netaddr := C_3D_MIN_SCALP_NETADDR; + signal RouterNetAddrValidxSP : std_ulogic := '0'; + signal RouterNetAddrValidxSN : std_ulogic := '0'; + signal RXAxi4M2SLinkxD : t_axi4m2s := C_NO_AXI4_M2S; + signal RXAxi4S2MLinkxD : t_axi4s2m := C_NO_AXI4_S2M; + signal TXAxi4M2SLinkxD : t_axi4m2s := C_NO_AXI4_M2S; + signal TXAxi4S2MLinkxD : t_axi4s2m := C_NO_AXI4_S2M; -- TX Side States - signal TXSideStatexDP : t_scalp_tx_side_states := E_SCALP_TX_IDLE; - signal TXSideStatexDN : t_scalp_tx_side_states := E_SCALP_TX_IDLE; + signal TXSideStatexDP : t_scalp_tx_side_states := E_SCALP_TX_IDLE; + signal TXSideStatexDN : t_scalp_tx_side_states := E_SCALP_TX_IDLE; -- Others - signal ReadyInxD : t_axi4s2m := C_NO_AXI4_S2M; - signal EnPopxS : std_ulogic := '0'; + signal ReadyInxD : t_axi4s2m := C_NO_AXI4_S2M; + signal EnPopxS : std_ulogic := '0'; - attribute mark_debug : string; - attribute keep : string; + attribute mark_debug : string; + attribute keep : string; -- - attribute mark_debug of TXAxi4M2SLinkxD : signal is "true"; - attribute keep of TXAxi4M2SLinkxD : signal is "true"; - attribute mark_debug of TXAxi4S2MLinkxD : signal is "true"; - attribute keep of TXAxi4S2MLinkxD : signal is "true"; - attribute mark_debug of ReadyInxD : signal is "true"; - attribute keep of ReadyInxD : signal is "true"; - attribute mark_debug of TXSideStatexDN : signal is "true"; - attribute keep of TXSideStatexDN : signal is "true"; - attribute mark_debug of TXSideStatexDP : signal is "true"; - attribute keep of TXSideStatexDP : signal is "true"; - attribute mark_debug of RXAxi4M2SLinkxD : signal is "true"; - attribute keep of RXAxi4M2SLinkxD : signal is "true"; - attribute mark_debug of RXAxi4S2MLinkxD : signal is "true"; - attribute keep of RXAxi4S2MLinkxD : signal is "true"; - attribute mark_debug of DstRouterNetAddrxDN : signal is "true"; - attribute keep of DstRouterNetAddrxDN : signal is "true"; - attribute mark_debug of DstRouterNetAddrxDP : signal is "true"; - attribute keep of DstRouterNetAddrxDP : signal is "true"; - attribute mark_debug of RouterNetAddrValidxSN : signal is "true"; - attribute keep of RouterNetAddrValidxSN : signal is "true"; - attribute mark_debug of RouterNetAddrValidxSP : signal is "true"; - attribute keep of RouterNetAddrValidxSP : signal is "true"; - attribute mark_debug of EnPopxS : signal is "true"; - attribute keep of EnPopxS : signal is "true"; - -- attribute mark_debug of SchedulerAckxD : signal is "true"; - -- attribute keep of SchedulerAckxD : signal is "true"; begin -- architecture behavioral @@ -127,14 +96,11 @@ begin -- architecture behavioral begin -- block EntityIOxB DstRouterNetAddrxAS : DstRouterNetAddrxDO <= DstRouterNetAddrxDP; RouterNetAddrValidxAS : RouterNetAddrValidxSO <= RouterNetAddrValidxSP; - -- SchedulerAckxAS : SchedulerAckxD <= SchedulerAckxDI; -- Ext. Side RXAxi4M2SLinkxAS : RXAxi4M2SLinkxD <= RXAxi4M2SLinkxDI; RXAxi4S2MLinkxAS : RXAxi4S2MLinkxDO <= RXAxi4S2MLinkxD; TXAxi4M2SLinkxAS : TXAxi4M2SLinkxDO <= TXAxi4M2SLinkxD; TXAxi4S2MLinkxAS : TXAxi4S2MLinkxD <= TXAxi4S2MLinkxDI; - - -- BookingVectorValidxAS : BookingVectorValidxS <= BookingVectorValidxSI; end block EntityIOxB; AsyncStatementsxB : block is