8000 Release Candidate v2.60.0 by ruck314 · Pull Request #1281 · slaclab/surf · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Release Candidate v2.60.0 #1281

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

Merged
merged 52 commits into from
Jun 20, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
a42987d
Use string enums for different clock frequency options
bengineerd May 16, 2025
f547af7
UDP Tx Engine: Fix inferred latch
ruck314 May 17, 2025
b6c7169
Merge pull request #1280 from slaclab/remove-udp-latch
ruck314 May 19, 2025
a2c8785
Create dummy register to trick emacs vhdl-update-sensitivity-list int…
bengineerd May 19, 2025
8645461
Merge remote-tracking branch 'origin/pre-release' into htsp-dev
bengineerd May 19, 2025
235c3a5
Fix formatting
bengineerd May 19, 2025
80dcb1e
removing AxiStreamDepacketizer2.vhd from exclude list
ruck314 May 19, 2025
2587666
Merge pull request #1282 from slaclab/sensitivity-list-fix
ruck314 May 20, 2025
f37cd8f
bug fix for cadence genus
ruck314 May 23, 2025
8315846
moving this source code to dsp/xilinx
ruck314 May 23, 2025
abb8e69
Signals floating rely on init value
lorenzrota May 25, 2025
a3516a0
removed whitespace and emac beautify
ruck314 May 25, 2025
a8ade7e
Merge pull request #1285 from slaclab/Pgp4TxLite-bugfix
ruck314 May 25, 2025
8515d67
Added function to read pixel programmed
king-pietro May 28, 2025
ea9bb78
Fixed AxiLiteToSaci2 addressing
king-pietro Jun 4, 2025
2cfe04d
Reverted address change and fixed v.chip addressing
king-pietro Jun 4, 2025
4f60799
Merge pull request #1287 from slaclab/sugoi-matrix-config-improve
ruck314 Jun 8, 2025
91daac0
Merge pull request #1286 from slaclab/axilite2saci2-fix
ruck314 Jun 8, 2025
419f0cd
Serial registers access not availible
ruck314 Jun 9, 2025
005d1a4
removing _stop() has there is a corner case bug with memBase removed …
ruck314 Jun 9, 2025
6733586
chaning DeviceDiscovery() from cmd to function with a arg for overwri…
ruck314 Jun 9, 2025
cb577af
adding FW/SW GtRstAll register
ruck314 Jun 10, 2025
7d75465
adding error handling for readBlocks() after ConnectionReset()
ruck314 Jun 10, 2025
b57dd90
TenGigEth Patch for Vivado 2025.1
ruck314 Jun 13, 2025
f50d5de
PGPv4: adding 17G support
ruck314 Jun 14, 2025
b4910ff
adding PGPv4@18G support
ruck314 Jun 14, 2025
f9730aa
adding PGPv4@20G support (but may not make timing closure)
ruck314 Jun 14, 2025
cd13732
adding PGPv4@13G support
ruck314 Jun 14, 2025
473010f
clean up assert error msg
ruck314 Jun 16, 2025
7c71176
adding ClockManagerVersal.vhd
ruck314 Jun 16, 2025
bedf568
linter fixes
ruck314 Jun 16, 2025
4e29126
reorg of UltraScale+ src code
ruck314 Jun 17, 2025
9554f5d
Merge pull request #1283 from slaclab/htsp-dev
ruck314 Jun 17, 2025
19c6df4
adding non-zero range checking
ruck314 Jun 17, 2025
f3ad997
clean up the msg
ruck314 Jun 17, 2025
78ac200
updating severity from error to failure
ruck314 Jun 17, 2025
59bed69
assert severity must be failure (instead of error) to trigger error i…
ruck314 Jun 17, 2025
f8753c4
Merge pull request #1290 from slaclab/pgp4-17G-dev
ruck314 Jun 18, 2025
96f50a4
removing unused variable in QsfpCdrDisable.vhd
ruck314 Jun 18, 2025
9e8f764
adding LeapXcvrCdrDisable.vhd
ruck314 Jun 18, 2025
421a7b5
bug fix
ruck314 Jun 18, 2025
79a89bd
Merge pull request #1293 from slaclab/leap-cdr-disable
ruck314 Jun 18, 2025
4986630
pgp3 rx/tx polarity restructuring (no change in behavior or functiona…
ruck314 Jun 18, 2025
07b6787
adding dynamic rx/tx polarity configuration support to PGP4
ruck314 Jun 18, 2025
4252b65
adding TxPolarity/RxPolarity SW registers
ruck314 Jun 18, 2025
eaf9596
Merge pull request #1284 from slaclab/digital-asic-regression-testing
ruck314 Jun 20, 2025
b70cfae
Merge pull request #1288 from slaclab/PhantomS641-patch
ruck314 Jun 20, 2025
f0cb142
Merge pull request #1291 from slaclab/Versal-dev
ruck314 Jun 20, 2025
7884df2
Merge pull request #1289 from slaclab/gth-10GbE-2025.1-patch
ruck314 Jun 20, 2025
0b804db
fix merge conflict
ruck314 Jun 20, 2025
58c9f95
Merge pull request #1292 from slaclab/AxiLiteCrossbar-patch
ruck314 Jun 20, 2025
4659426
Merge pull request #1294 from slaclab/pgp4-dynamic-polarity-config
ruck314 Jun 20, 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
15 changes: 13 additions & 2 deletions axi/axi-lite/rtl/AxiLiteCrossbar.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -123,11 +123,22 @@ architecture rtl of AxiLiteCrossbar is

begin

-- synopsys translate_off
assert (NUM_MASTER_SLOTS_G = MASTERS_CONFIG_G'length)
report "Mismatch between NUM_MASTER_SLOTS_G and MASTERS_CONFIG_G'length"
severity error;
severity failure;

noneZeroCheck : for i in MASTERS_CONFIG_G'range generate
assert (MASTERS_CONFIG_G(i).baseAddr(MASTERS_CONFIG_G(i).addrBits-1 downto 0) = 0)
report "AXI_LITE_CROSSBAR Configuration Error:" & LF &
" - Array Index : " & integer'image(i) & LF &
" - baseAddr : 0x" & hstr(MASTERS_CONFIG_G(i).baseAddr) & LF &
" - addrBits : " & str(MASTERS_CONFIG_G(i).addrBits) & LF &
" - connectivity : 0x" & hstr(MASTERS_CONFIG_G(i).connectivity) & LF &
" => baseAddr must be zero within the specified addrBits range."
severity failure;
end generate noneZeroCheck;

-- synopsys translate_off
print(DEBUG_G, "AXI_LITE_CROSSBAR: " & LF &
"NUM_SLAVE_SLOTS_G: " & integer'image(NUM_SLAVE_SLOTS_G) & LF &
"NUM_MASTER_SLOTS_G: " & integer'image(NUM_MASTER_SLOTS_G) & LF &
Expand Down
4 changes: 2 additions & 2 deletions axi/axi-lite/rtl/AxiLitePkg.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -1046,7 +1046,7 @@ package body AxiLitePkg is
& lf & "base = 0x" & hstr(base)
& lf & "baseBot = " & integer'image(baseBot)
& lf & "addrBits = " & integer'image(addrBits)
severity error;
severity failure;

-- Check that there is enough bits for the number of buses
assert (2**(baseBot-addrBits) >= num)
Expand All @@ -1055,7 +1055,7 @@ package body AxiLitePkg is
& lf & "base = 0x" & hstr(base)
& lf & "baseBot = " & integer'image(baseBot)
& lf & "addrBits = " & integer'image(addrBits)
severity error;
severity failure;

-------------------------------------------------------------------------------------------
-- Init
Expand Down
4 changes: 2 additions & 2 deletions axi/axi-stream/rtl/AxiStreamDeMux.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,12 @@ begin
assert (MODE_G /= "INDEXED" or (TDEST_HIGH_G - TDEST_LOW_G + 1 >= log2(NUM_MASTERS_G)))
report "In INDEXED mode, TDest range " & integer'image(TDEST_HIGH_G) & " downto " & integer'image(TDEST_LOW_G) &
" is too small for NUM_MASTERS_G=" & integer'image(NUM_MASTERS_G)
severity error;
severity failure;

assert (MODE_G /= "ROUTED" or (TDEST_ROUTES_G'length = NUM_MASTERS_G))
report "In ROUTED mode, length of TDEST_ROUTES_G: " & integer'image(TDEST_ROUTES_G'length) &
" must equal NUM_MASTERS_G: " & integer'image(NUM_MASTERS_G)
severity error;
severity failure;

comb : process (axisRst, dynamicRouteDests, dynamicRouteMasks,
pipeAxisSlaves, r, sAxisMaster) is
Expand Down
2 changes: 1 addition & 1 deletion axi/axi-stream/rtl/AxiStreamFifoV2.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ begin
assert (not (MASTER_AXI_CONFIG_G.TKEEP_MODE_C = TKEEP_FIXED_C and
SLAVE_AXI_CONFIG_G.TKEEP_MODE_C /= TKEEP_FIXED_C))
report "AxiStreamFifoV2: Can't have TKEEP_MODE = TKEEP_FIXED on master side if not on slave side"
severity error;
severity failure;

-------------------------
-- Slave Resize
Expand Down
2 changes: 1 addition & 1 deletion axi/axi-stream/rtl/AxiStreamGearbox.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ begin
assert (not (MASTER_AXI_CONFIG_G.TKEEP_MODE_C = TKEEP_FIXED_C and
SLAVE_AXI_CONFIG_G.TKEEP_MODE_C /= TKEEP_FIXED_C))
report "AxiStreamGearbox: Can't have TKEEP_MODE = TKEEP_FIXED on master side if not on slave side"
severity error;
severity failure;

---------------------------------------------------------
-- Use AxiStreamResize if word multiple because less LUTs
Expand Down
10 changes: 5 additions & 5 deletions axi/axi-stream/rtl/AxiStreamMux.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -115,26 +115,26 @@ begin

assert ((MODE_G = "PASSTHROUGH") or (MODE_G = "INDEXED") or (MODE_G = "ROUTED"))
report "MODE_G must be either [PASSTHROUGH,INDEXED,ROUTED]"
severity error;
severity failure;

assert ((MODE_G = "INDEXED") and (7 - TDEST_LOW_G + 1 >= log2(NUM_SLAVES_G))) or (MODE_G /= "INDEXED")
report "In INDEXED mode, TDest range 7 downto " & integer'image(TDEST_LOW_G) &
" is too small for NUM_SLAVES_G=" & integer'image(NUM_SLAVES_G)
severity error;
severity failure;

assert ((MODE_G = "ROUTED") and (TDEST_ROUTES_G'length = NUM_SLAVES_G)) or (MODE_G /= "ROUTED")
report "In ROUTED mode, length of TDEST_ROUTES_G: " & integer'image(TDEST_ROUTES_G'length) &
" must equal NUM_SLAVES_G: " & integer'image(NUM_SLAVES_G)
severity error;
severity failure;

assert ((TID_MODE_G = "PASSTHROUGH") or (TID_MODE_G = "INDEXED") or (TID_MODE_G = "ROUTED"))
report "TID_MODE_G must be either [PASSTHROUGH,INDEXED,ROUTED]"
severity error;
severity failure;

assert ((TID_MODE_G = "ROUTED") and (TID_ROUTES_G'length = NUM_SLAVES_G)) or (TID_MODE_G /= "ROUTED")
report "In ROUTED mode, length of TID_ROUTES_G: " & integer'image(TID_ROUTES_G'length) &
" must equal NUM_SLAVES_G: " & integer'image(NUM_SLAVES_G)
severity error;
severity failure;

-- Override TDESTS and TIDs according to the routing tables
ROUTE_TABLE_REMAP : process (sAxisMasters) is
Expand Down
2 changes: 1 addition & 1 deletion axi/axi-stream/rtl/AxiStreamResize.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ begin
assert (not (MASTER_AXI_CONFIG_G.TKEEP_MODE_C = TKEEP_FIXED_C and
SLAVE_AXI_CONFIG_G.TKEEP_MODE_C /= TKEEP_FIXED_C))
report "AxiStreamResize: Can't have TKEEP_MODE = TKEEP_FIXED on master side if not on slave side"
severity error;
severity failure;

comb : process (pipeAxisSlave, r, sAxisMaster, sSideBand) is
variable v : RegType;
Expand Down
2 changes: 1 addition & 1 deletion base/general/rtl/TextUtilPkg.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ package body TextUtilPkg is
assert (tmp < base and tmp >= 0) report
"TextUtilPkg::int(string, integer): Input string (" & s & ") " &
"has character (" & s(i) & ") outside of base (" & str(base) & ") character set."
severity error;
severity failure;
ret := ret * base + tmp;
end loop;
return ret;
Expand Down
217 changes: 217 additions & 0 deletions devices/Amphenol/LeapXcvr/rtl/LeapXcvrCdrDisable.vhd
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
-------------------------------------------------------------------------------
-- Company : SLAC National Accelerator Laboratory
-------------------------------------------------------------------------------
-- Description: Used to periodically write CDR disable to the QSFP modules via AXI-Lite crossbar
-------------------------------------------------------------------------------
-- 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_arith.all;
use ieee.std_logic_unsigned.all;

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

entity LeapXcvrCdrDisable is
generic (
TPD_G : time := 1 ns;
PERIODIC_UPDATE_G : positive := 30; -- Units of seconds
LEAP_BASE_ADDR_G : Slv32Array; -- List of the LEAP base address offsets
AXIL_CLK_FREQ_G : real); -- Units of Hz
port (
-- AXI-Lite Register Interface (axilClk domain)
axilClk : in sl;
axilRst : in sl;
mAxilReadMaster : out AxiLiteReadMasterType;
mAxilReadSlave : in AxiLiteReadSlaveType;
mAxilWriteMaster : out AxiLiteWriteMasterType;
mAxilWriteSlave : in AxiLiteWriteSlaveType);
end LeapXcvrCdrDisable;

architecture rtl of LeapXcvrCdrDisable is

constant TIMEOUT_1SEC_C : natural := getTimeRatio(AXIL_CLK_FREQ_G, 1.0);

constant NUM_CH_G : natural := LEAP_BASE_ADDR_G'length;

type StateType is (
IDLE_S,
REQ_S,
ACK_S);

type RegType is record
wrd : natural range 0 to 1;
ch : natural range 0 to NUM_CH_G-1;
cnt : natural range 0 to PERIODIC_UPDATE_G-1;
timer : natural range 0 to TIMEOUT_1SEC_C-1;
req : AxiLiteReqType;
state : StateType;
end record;

constant REG_INIT_C : RegType := (
wrd => 0,
ch => 0,
cnt => PERIODIC_UPDATE_G-1,
timer => TIMEOUT_1SEC_C-1,
req => AXI_LITE_REQ_INIT_C,
state => IDLE_S);

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

signal ack : AxiLiteAckType;

-- attribute dont_touch : string;
-- attribute dont_touch of r : signal is "TRUE";
-- attribute dont_touch of ack : signal is "TRUE";

begin

U_AxiLiteMaster : entity surf.AxiLiteMaster
generic map (
TPD_G => TPD_G)
port map (
req => r.req,
ack => ack,
axilClk => axilClk,
axilRst => axilRst,
axilWriteMaster => mAxilWriteMaster,
axilWriteSlave => mAxilWriteSlave,
axilReadMaster => mAxilReadMaster,
axilReadSlave => mAxilReadSlave);

---------------------
-- AXI Lite Interface
---------------------
comb : process (ack, axilRst, r) is
variable v : RegType;
begin
-- Latch the current value
v := r;

-- Decrement the timer
if (r.timer /= 0) then
v.timer := r.timer -1;
end if;

-- State Machine
case (r.state) is
----------------------------------------------------------------------
when IDLE_S =>
-- Check for timeout
if (r.timer = 0) then

-- Re-arm the timer
v.timer := TIMEOUT_1SEC_C - 1;

-- Check for timeout
if (r.cnt = 0) then

-- Re-arm the counter
v.cnt := PERIODIC_UPDATE_G - 1;

-- Next state
v.state := REQ_S;

else
-- Decrement the counter
v.cnt := r.cnt - 1;
end if;

end if;
----------------------------------------------------------------------
when REQ_S =>
-- Check if ready for next transaction
if (ack.done = '0') then

-- Setup the AXI-Lite Master request
v.req.request := '1';
v.req.rnw := '0'; -- Write operation

-- Check the word index
if (r.wrd = 0) then
v.req.address := LEAP_BASE_ADDR_G(r.ch) + x"0000_00AC"; -- RxLower.GlobalRxCdr=0x0AC
v.req.wrData := x"0000_0001"; -- Globally turn off all RX CDR channels
else
v.req.address := LEAP_BASE_ADDR_G(r.ch) + x"0000_08AC"; -- TxLower.GlobalTxCdr=0x8AC
v.req.wrData := x"0000_0001"; -- Globally turn off all TX CDR channels
end if;

-- Next state
v.state := ACK_S;

end if;
----------------------------------------------------------------------
when ACK_S =>
-- Wait for DONE to set
if (ack.done = '1') then

-- Reset the flag
v.req.request := '0';

-- Check if this was last channel
if (r.ch = NUM_CH_G-1) then

-- Reset the index
v.ch := 0;

-- Check the word index
if (r.wrd = 0) then

-- Increment the channel
v.wrd := r.wrd + 1;

-- Next state
v.state := REQ_S;

else

-- Reset the index
v.wrd := 0;

-- Next state
v.state := IDLE_S;

end if;

else

-- Increment the channel
v.ch := r.ch + 1;

-- Next state
v.state := REQ_S;

end if;

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

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

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

end process comb;

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

end rtl;
3 changes: 1 addition & 2 deletions devices/transceivers/rtl/QsfpCdrDisable.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,7 @@ begin
-- AXI Lite Interface
---------------------
comb : process (ack, axilRst, r) is
variable v : RegType;
variable regCon : AxiLiteEndPointType;
variable v : RegType;
begin
-- Latch the current value
v := r;
Expand Down
2 changes: 1 addition & 1 deletion dsp/generic/fixed/BoxcarIntegrator.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ begin
if r.rAddr = r.intCount then
v.rAddr := (others => '0');
else
v.rAddr := r.rAddr + '1';
v.rAddr := r.rAddr + 1;
end if;

-- Write lags read
Expand Down
1 change: 0 additions & 1 deletion dsp/generic/ruckus.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
source $::env(RUCKUS_PROC_TCL)

# Load Source Code
loadSource -lib surf -dir "$::DIR_PATH/core" -fileType "VHDL 2008"
loadSource -lib surf -dir "$::DIR_PATH/fixed" -fileType "VHDL 2008"

# Load Simulation
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions dsp/xilinx/ruckus.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
source $::env(RUCKUS_PROC_TCL)

# Load Source Code
loadSource -lib surf -dir "$::DIR_PATH/core" -fileType "VHDL 2008"
loadSource -lib surf -dir "$::DIR_PATH/fixed" -fileType "VHDL 2008"
loadSource -lib surf -dir "$::DIR_PATH/logic" -fileType "VHDL 2008"

Expand Down
File renamed without changes.
File renamed without changes.
Loading
0