Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release Candidate v2.55.0 #1232

Merged
merged 42 commits into from
Feb 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
35e59ed
Fix link variable call
agustiner Jan 25, 2024
bf7f3b2
Fix offset error in channel
agustiner Apr 4, 2024
4436cc9
Merge branch 'smurf_fixes', remote-tracking branch 'origin' into smur…
agustiner Apr 4, 2024
c337915
Fix block size
agustiner Apr 17, 2024
948842f
first version of multi-arp
FilMarini Sep 13, 2024
cdfb73e
to check for ip address with tDest
FilMarini Sep 16, 2024
1bf842c
Merge branch 'slaclab:main' into multi-arp
FilMarini Sep 16, 2024
4fde3c4
Seems like tDest is working
FilMarini Sep 16, 2024
fc0d5ea
Adding assertion if position is out of bounds
FilMarini Sep 17, 2024
b50bab8
fixed oversight on comment
FilMarini Sep 17, 2024
49ef66b
slac beautification
FilMarini Sep 25, 2024
9bf72f5
added coding header
FilMarini Sep 26, 2024
8eca410
base code to add expiration
FilMarini Oct 2, 2024
d0034c3
basic expire table added
FilMarini Oct 3, 2024
9082ea3
arpIpTable with expiration entries
FilMarini Oct 4, 2024
3d6b71f
first version of multi-arp with expiring entries
FilMarini Oct 4, 2024
610fb38
Merge branch 'multi-arpv2' into multi-arp
FilMarini Oct 4, 2024
ea4f066
fixed way to get rx ip address
FilMarini Oct 9, 2024
8e8c341
added possibility of tagging rx ip in tUser field
FilMarini Oct 9, 2024
28f9393
fixed bugs
FilMarini Oct 11, 2024
300a5ae
fixed tb leftovers
FilMarini Oct 11, 2024
ca4c136
removing obsolete RSSI v1b
ruck314 Oct 22, 2024
a55ff2c
adding FSM states to AXI-Lite for debugging
ruck314 Oct 22, 2024
3acd592
adding ackN/seqN to AXI-Lite for debugging
ruck314 Oct 22, 2024
99fdc08
check if is server in UdpEngineTx
FilMarini Jan 17, 2025
80ecb8e
Merge branch 'multi-arp' into multi-arpv2
FilMarini Jan 17, 2025
eb99646
cleaned up code comments for sy56040
ruck314 Jan 24, 2025
fa8251f
adding sy89297 to SURF
ruck314 Jan 24, 2025
6ffcca6
Merge pull request #1191 from FilMarini/multi-arp
ruck314 Jan 27, 2025
a6a5187
updated FSM to latch meta data
mmishra9 Jan 28, 2025
5ab61e1
Merge pull request #1229 from slaclab/Sy89297
ruck314 Jan 28, 2025
7c929ad
git hash leading zero bug fix
ruck314 Jan 30, 2025
9d4be22
Merge pull request #1234 from slaclab/githash-leading-zero
ruck314 Feb 4, 2025
a44b94a
Merge pull request #1231 from slaclab/smurf_v6
ruck314 Feb 5, 2025
8b511e6
Merge pull request #1230 from slaclab/SmurfC1100FebEmu
ruck314 Feb 5, 2025
9d30a30
bug fix
mmishra9 Feb 10, 2025
7a47525
bug fix
mmishra9 Feb 10, 2025
2e689b8
white space removal
mmishra9 Feb 10, 2025
2a7f737
Merge pull request #1233 from slaclab/mishra_dev43
ruck314 Feb 10, 2025
390ce1a
adding whitespace checking to CI
ruck314 Feb 10, 2025
d088c0d
whitespace removal
ruck314 Feb 10, 2025
ae8d97f
Merge pull request #1235 from slaclab/ci-whitespace-checker
ruck314 Feb 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/surf_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ jobs:
git clone https://github.com/slaclab/ruckus.git
pip install -r ruckus/scripts/pip_requirements.txt

- name: Check for trailing whitespace
run: |
if grep -rnI '[[:blank:]]$' --include=\*.{vhd,v,tcl,py} .; then
echo "Error: Trailing whitespace found in the repository!"
exit 1
fi

- name: Python Syntax and Linter Checking
run: |
python -m compileall -f python/ scripts/ tests/
Expand Down
6 changes: 5 additions & 1 deletion axi/dma/rtl/v2/AxiStreamDmaV2Write.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -500,7 +500,11 @@ begin
-- -- Check for last AXIS word
if intAxisMaster.tLast = '1' then
v.dmaWrTrack.inUse := '0';
v.state := RETURN_S;
if r.dmaWrTrack.metaEnable = '1' then
v.state := META_S;
else
v.state := RETURN_S;
end if;
end if;
end if;
end if;
Expand Down
1 change: 1 addition & 0 deletions devices/Microchip/ruckus.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ source $::env(RUCKUS_PROC_TCL)

# Load ruckus files
loadRuckusTcl "$::DIR_PATH/sy56040"
loadRuckusTcl "$::DIR_PATH/sy89297"
2 changes: 1 addition & 1 deletion devices/Microchip/sy56040/rtl/AxiSy56040Core.vhd
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
-------------------------------------------------------------------------------
-- Company : SLAC National Accelerator Laboratory
-------------------------------------------------------------------------------
-- Description: AXI-Lite interface to Clock Crossbar
-- Description: Wrapper for the AxiSy56040Reg module
-------------------------------------------------------------------------------
-- This file is part of 'SLAC Firmware Standard Library'.
-- It is subject to the license terms in the LICENSE.txt file found in the
Expand Down
2 changes: 1 addition & 1 deletion devices/Microchip/sy56040/rtl/AxiSy56040Reg.vhd
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
-------------------------------------------------------------------------------
-- Company : SLAC National Accelerator Laboratory
-------------------------------------------------------------------------------
-- Description: This controller is designed around the Micrel SY56040AR.
-- Description: This controller is designed around the Microchip SY56040AR
-------------------------------------------------------------------------------
-- This file is part of 'SLAC Firmware Standard Library'.
-- It is subject to the license terms in the LICENSE.txt file found in the
Expand Down
285 changes: 285 additions & 0 deletions devices/Microchip/sy89297/rtl/Sy89297.vhd
Original file line number Diff line number Diff line change
@@ -0,0 +1,285 @@
-------------------------------------------------------------------------------
-- Company : SLAC National Accelerator Laboratory
-------------------------------------------------------------------------------
-- Description: This controller is designed around the Microchip SY89297UMH
-------------------------------------------------------------------------------
-- This file is part of 'SLAC Firmware Standard Library'.
-- It is subject to the license terms in the LICENSE.txt file found in the
-- top-level directory of this distribution and at:
-- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html.
-- No part of 'SLAC Firmware Standard Library', including this file,
-- may be copied, modified, propagated, or distributed except according to
-- the terms contained in the LICENSE.txt file.
-------------------------------------------------------------------------------

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;

library surf;
use surf.StdRtlPkg.all;
use surf.AxiStreamPkg.all;
use surf.AxiLitePkg.all;

entity Sy89297 is
generic (
TPD_G : time := 1 ns;
SIMULATION_G : boolean := false);
port (
-- Delay control signals
enableL : out sl;
enaL : out sl;
enbL : out sl;
sdata : out sl;
sclk : out sl;
sload : out sl;
-- AXI-Lite Interface
axilClk : in sl;
axilRst : in sl;
axilReadMaster : in AxiLiteReadMasterType;
axilReadSlave : out AxiLiteReadSlaveType;
axilWriteMaster : in AxiLiteWriteMasterType;
axilWriteSlave : out AxiLiteWriteSlaveType);
end Sy89297;

architecture rtl of Sy89297 is

type StateType is (
IDLE_S,
SEND_DATA_S,
SLOAD_S);

type RegType is record
delayA : slv(9 downto 0);
delayB : slv(9 downto 0);
busy : sl;
cnt : natural range 0 to 20;
shiftReg : slv(19 downto 0);
-- Serial Clock Generation
sclkEn : sl;
sclkCnt : slv(7 downto 0);
sckHalfCycle : slv(7 downto 0);
-- I/O Signals
sclk : sl;
sload : sl;
-- AXIL and state machine
axilReadSlave : AxiLiteReadSlaveType;
axilWriteSlave : AxiLiteWriteSlaveType;
state : StateType;
end record RegType;

constant REG_INIT_C : RegType := (
delayA => (others => '0'),
delayB => (others => '0'),
busy => '0',
cnt => 0,
shiftReg => (others => '0'),
-- Serial Clock Generation
sclkEn => '0',
sclkCnt => (others => '0'),
sckHalfCycle => ite(SIMULATION_G, x"00", x"0F"),
-- I/O Signals
sclk => '0',
sload => '1',
-- AXIL and state machine
axilReadSlave => AXI_LITE_READ_SLAVE_INIT_C,
axilWriteSlave => AXI_LITE_WRITE_SLAVE_INIT_C,
state => IDLE_S);

signal r : RegType := REG_INIT_C;
signal rin : RegType;

begin

comb : process (axilReadMaster, axilRst, axilWriteMaster, r) is
variable v : RegType;
variable axilStatus : AxiLiteStatusType;
variable axilWriteResp : slv(1 downto 0);
variable axilReadResp : slv(1 downto 0);
begin
-- Latch the current value
v := r;

-- Reset strobes
axilWriteResp := AXI_RESP_OK_C;
axilReadResp := AXI_RESP_OK_C;

-- Check for timeout
if r.sclkCnt = 0 then

-- Check if enabled
if (r.sclkEn = '1') then
-- Set the flag
v.sclk := not(r.sclk);
end if;

-- Preset counter
v.sclkCnt := r.sckHalfCycle;

else
-- Decreament counter
v.sclkCnt := r.sclkCnt - 1;
end if;

-- Determine the transaction type
axiSlaveWaitTxn(axilWriteMaster, axilReadMaster, v.axilWriteSlave, v.axilReadSlave, axilStatus);

case r.state is
----------------------------------------------------------------------
when IDLE_S =>
-- Reset the signals in IDLE state
v.busy := '0';
v.sload := '1';
v.sclk := '0';
v.sclkEn := '0';
v.sclkCnt := r.sckHalfCycle;
v.cnt := 0;

-- Check for a write request
if (axilStatus.writeEnable = '1') then

-- Decode address and perform write
case (axilWriteMaster.awaddr(3 downto 0)) is
--------------------------------------------------------
when x"0" =>
-- Set the value
v.delayA := axilWriteMaster.wdata(9 downto 0);
-- Set the flags
v.busy := '1';
v.sload := '0';
v.sclkEn := '1';
-- Next state
v.state := SEND_DATA_S;
--------------------------------------------------------
when x"4" =>
-- Set the value
v.delayB := axilWriteMaster.wdata(9 downto 0);
-- Set the flags
v.busy := '1';
v.sload := '0';
v.sclkEn := '1';
-- Next state
v.state := SEND_DATA_S;
--------------------------------------------------------
when x"C" =>
-- Set the value
v.sckHalfCycle := axilWriteMaster.wdata(7 downto 0);
-- Send AXI-Lite response
axiSlaveWriteResponse(v.axilWriteSlave, axilWriteResp);
--------------------------------------------------------
when others =>
axilWriteResp := AXI_RESP_DECERR_C;
-- Send AXI-Lite response
axiSlaveWriteResponse(v.axilWriteSlave, AXI_RESP_DECERR_C);
--------------------------------------------------------
end case;

-- Check for a read request
elsif (axilStatus.readEnable = '1') then
case (axilReadMaster.araddr(3 downto 0)) is
--------------------------------------------------------
when x"0" =>
v.axilReadSlave.rdata(9 downto 0) := r.delayA;
--------------------------------------------------------
when x"4" =>
v.axilReadSlave.rdata(9 downto 0) := r.delayB;
--------------------------------------------------------
when x"C" =>
v.axilReadSlave.rdata(7 downto 0) := r.sckHalfCycle;
--------------------------------------------------------
when others =>
axilReadResp := AXI_RESP_DECERR_C;
--------------------------------------------------------
end case;
-- Send AXI-Lite Response
axiSlaveReadResponse(v.axilReadSlave, axilReadResp);
end if;

-- Update the shift Register value
v.shiftReg := v.delayB & v.delayA;
-------------------------------------------------
when SEND_DATA_S =>
-- Check for SCLK fallling edge
if (r.sclk = '1') and (v.sclk = '0') then

-- Update the shift register
v.shiftReg := '0' & r.shiftReg(19 downto 1);

-- Increment the counter
v.cnt := r.cnt + 1;

end if;

-- Check for SCLK rising edge
if (r.sclk = '0') and (v.sclk = '1') then

-- Check for last serial bit
if r.cnt = 19 then

-- Reset counter
v.cnt := 0;

-- Next state
v.state := SLOAD_S;

end if;

end if;
-------------------------------------------------
when SLOAD_S =>
-- Check for timeout
if r.sclkCnt = 0 then

-- Increment the counter
v.cnt := r.cnt + 1;

if (r.cnt = 0) then
-- Reset flag
v.sclkEn := '0';

elsif (r.cnt = 1) then
-- Set flag
v.sload := '1';

else

-- Send AXI-Lite response
axiSlaveWriteResponse(v.axilWriteSlave, axilWriteResp);

-- Next state
v.state := IDLE_S;

end if;

end if;
-------------------------------------------------
end case;

-- Outputs
axilWriteSlave <= r.axilWriteSlave;
axilReadSlave <= r.axilReadSlave;
enableL <= r.busy; -- Active LOW
enaL <= r.busy; -- Active LOW
enbL <= r.busy; -- Active LOW
sdata <= r.shiftReg(0);
sclk <= r.sclk;
sload <= r.sload;

-- Reset
if (axilRst = '1') then
v := REG_INIT_C;
end if;

-- Register the variable for next clock cycle
rin <= v;
end process;

seq : process (axilClk) is
begin
if rising_edge(axilClk) then
r <= rin after TPD_G;
end if;
end process seq;

end rtl;
3 changes: 0 additions & 3 deletions protocols/rssi/v1b/ruckus.tcl → devices/Microchip/sy89297/ruckus.tcl
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,3 @@ source $::env(RUCKUS_PROC_TCL)

# Load Source Code
loadSource -lib surf -dir "$::DIR_PATH/rtl"

# Load Simulation
loadSource -lib surf -sim_only -dir "$::DIR_PATH/tb"
4 changes: 2 additions & 2 deletions ethernet/RoCEv2/blue-lib/BypassWire.v
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

module BypassWire(WGET, WVAL);


parameter width = 1;

input [width - 1 : 0] WVAL;

output [width - 1 : 0] WGET;
Expand Down
4 changes: 2 additions & 2 deletions ethernet/RoCEv2/blue-lib/CRegN5.v
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,13 @@ module CRegN5
wire [width - 1 : 0] Q_OUT_3 ;
wire [width - 1 : 0] Q_OUT_4 ;
wire [width - 1 : 0] Q_OUT_5 ;

assign Q_OUT_1 = EN_0 ? D_IN_0 : Q_OUT_0 ;
assign Q_OUT_2 = EN_1 ? D_IN_1 : Q_OUT_1 ;
assign Q_OUT_3 = EN_2 ? D_IN_2 : Q_OUT_2 ;
assign Q_OUT_4 = EN_3 ? D_IN_3 : Q_OUT_3 ;
assign Q_OUT_5 = EN_4 ? D_IN_4 : Q_OUT_4 ;

always@(posedge CLK)
begin
if (RST == `BSV_RESET_VALUE)
Expand Down
4 changes: 2 additions & 2 deletions ethernet/RoCEv2/blue-lib/CRegUN5.v
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,13 @@ module CRegUN5
wire [width - 1 : 0] Q_OUT_3 ;
wire [width - 1 : 0] Q_OUT_4 ;
wire [width - 1 : 0] Q_OUT_5 ;

assign Q_OUT_1 = EN_0 ? D_IN_0 : Q_OUT_0 ;
assign Q_OUT_2 = EN_1 ? D_IN_1 : Q_OUT_1 ;
assign Q_OUT_3 = EN_2 ? D_IN_2 : Q_OUT_2 ;
assign Q_OUT_4 = EN_3 ? D_IN_3 : Q_OUT_3 ;
assign Q_OUT_5 = EN_4 ? D_IN_4 : Q_OUT_4 ;

always@(posedge CLK)
begin
Q_OUT_0 <= `BSV_ASSIGNMENT_DELAY Q_OUT_5 ;
Expand Down
2 changes: 1 addition & 1 deletion ethernet/RoCEv2/blue-lib/RegUN.v
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ module RegUN(CLK, EN, D_IN, Q_OUT);
// synopsys translate_on
`endif // BSV_NO_INITIAL_BLOCKS


always@(posedge CLK)
begin
if (EN)
Expand Down
Loading