Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
bee9b16
First draft of axi-stream frame buffer
burbschat May 2, 2026
f930d77
Add basic testbed for axiStreamFrameBuffer
burbschat May 2, 2026
7e95622
Simulate (with tb) and fix axiStreamFrameBuffer
burbschat May 2, 2026
03be05f
Simulate axiStreamFrameBuffer with async clocks
burbschat May 2, 2026
a3b3362
Allow disabling of safe buffering (less resources)
burbschat May 2, 2026
05904a7
Resolve some TODOs and add further notes
burbschat May 2, 2026
c31eece
Cleanup some comments and formatting
burbschat May 2, 2026
1096609
Fix missing dataFrameRxDone strobe reset
burbschat May 2, 2026
32f7d00
Fix not supported generate else syntax
burbschat May 2, 2026
3cb150e
Add rogue device class for axiStreamFrameBuffer
burbschat May 3, 2026
9e838c7
Switch to oneshot synchronizer for trigger
burbschat May 5, 2026
4c0f5a0
Use surf, not work library for synchronizers
burbschat May 12, 2026
6efb041
Properly resolve synchronizer issues
burbschat May 12, 2026
fc59cf9
Fix wrong clock options for AxiStreamFrameBufferTb
burbschat May 13, 2026
6f30086
Add cocotb test for AxiStreamFrameBuffer
burbschat May 13, 2026
59f5424
Remove todo comment
burbschat May 13, 2026
9b0abef
Add some more notes describing functionality
burbschat May 13, 2026
689a091
Use shiftwidth 4 -> 3 for AxiStreamFrameBufferTb
burbschat May 13, 2026
68d889d
Add comment on empty buffer edge case
burbschat May 13, 2026
4fa18d6
Remove remaining TODO comments
burbschat May 13, 2026
7aeec8b
Fix wrong clock for axil->data synchronizer
burbschat May 21, 2026
4a721b7
Fix data process returning to idle too early
burbschat May 21, 2026
c6ccde7
Fix wrong reset signal in IP integrator wrapper
burbschat May 21, 2026
eff7018
Modify tests to cover async/sync safe/unsafe buffs
burbschat May 21, 2026
c94d3ad
fix(jesd204b): correct 0x24 rxPowerDown read/write action swap in Jes…
ruck314 Jun 5, 2026
c03ceb2
fix(jesd204b): zero rdata in JesdTxReg read decode to prevent stale r…
ruck314 Jun 5, 2026
33118a0
feat(jesd204b): emit ILAS /Q/ and link-configuration octets in second…
ruck314 Jun 5, 2026
567dfe8
chore(jesd204b): remove dead jesdScrambler procedure and fix stale co…
ruck314 Jun 5, 2026
9c873b0
test(jesd204b): add cocotb test suite, simulation wrappers, and rucku…
ruck314 Jun 5, 2026
69fcca5
Merge branch 'pre-release' into axiStreamFrameBuffer
bengineerd Jun 8, 2026
07b2295
Automatically reset softTrig back to '0'
burbschat Jun 9, 2026
9194315
Apply formatting guidelines
burbschat Jun 9, 2026
fffe3e8
Add test case for the software trigger
burbschat Jun 9, 2026
51797aa
Add Flex BMR467 PMBus PoL regulator device driver
ruck314 Jun 16, 2026
43a275c
Merge pull request #1439 from slaclab/flex-BMR467
ruck314 Jun 16, 2026
83de682
Merge branch 'pre-release' into jesd-ci-testing-pr
ruck314 Jun 17, 2026
f18220b
feat(IpV4Engine/UdpEngine): runtime ECN/DSCP IP-header register
ruck314 Jun 25, 2026
256489d
feat(AxiStream): rework AxiStreamCompact and add AxiStreamMon frameUp…
ruck314 Jun 25, 2026
800ac65
feat(RoCEv2): regenerate blue-rdma transport engine for line-rate RDM…
ruck314 Jun 25, 2026
cb558fa
feat(RoCEv2): AXI-Stream RDMA datapath, engine refactor, and RoCEv2 r…
ruck314 Jun 25, 2026
052db87
feat(RoCEv2): DCQCN congestion control with runtime bypass
ruck314 Jun 25, 2026
5cf55c4
test(RoCEv2): add AxiStreamRdmaCore + Dcqcn cocotb benches, wrappers,…
ruck314 Jun 25, 2026
dcc0155
Merge branch 'pre-release' into dcqcnEn
ruck314 Jun 25, 2026
e72b06b
Use newline delimiter in Si5394/Si5345 CSV-to-MEM scripts for Vivado …
ruck314 Jun 25, 2026
e648f9b
Merge pull request #1440 from slaclab/vivado-2026.1-CsvToMem-update
ruck314 Jun 25, 2026
57fe50d
Add tUserFirst alignment checking to AxiStreamBatcherEventBuilder
ruck314 Jun 28, 2026
8d3ec22
Exclude NULL frames from EventBuilder tUserFirst alignment check
ruck314 Jun 29, 2026
b69f41d
Refactor RAM entity instantiations to unify synthesis mode handling a…
bengineerd Jul 1, 2026
d1fb791
Add inferred TrueDualPortRam implementation and update test cases for…
bengineerd Jul 1, 2026
539ead2
Add support for per-port read latency in TrueDualPortRam implementation.
bengineerd Jul 1, 2026
33c1322
Add assertions for RST_ASYNC_G and DOA_REG_G in TrueDualPortRam; enha…
bengineerd Jul 1, 2026
51c6da8
Refactor RAM instantiation in AxiLiteSequencerRam to unify read laten…
bengineerd Jul 1, 2026
8918392
Enhance AxiDualPortRam with improved read latency handling and update…
bengineerd Jul 1, 2026
da93578
Update AxiDualPortRam and README files for clarity on RAM implementat…
bengineerd Jul 1, 2026
4bda84b
Add helper function to generate simulation build suffix for parameters.
bengineerd Jul 1, 2026
36e3e0d
Address RAM selector review feedback
bengineerd Jul 1, 2026
b9a2b21
htsp: parameterize HtspRxFifo/HtspTxFifo application AXI-Stream width
ruck314 Jul 1, 2026
e610f56
fix(AxiStream/UdpEngine): address RoCEv2 PR review feedback
ruck314 Jul 1, 2026
39cd4cf
Merge branch 'pre-release' into dcqcnEn
ruck314 Jul 1, 2026
142903a
fix(UdpEngine): move ECN/DSCP out of localMac word bits
ruck314 Jul 2, 2026
c21e445
Skip EventBuilder tUserFirst alignment check when reference source is…
ruck314 Jul 2, 2026
a1e7f96
fix(jesd204b): advertise link lane count (L_G-1) in ILAS octet-3
ruck314 Jul 2, 2026
29d6ae1
test(jesd204b): validate multi-lane ILAS, fix cocotb selection, dedup…
ruck314 Jul 2, 2026
64f1b9f
Remove logic in port assignment
burbschat Jul 2, 2026
1a66184
Fix wrong reset signal used in testbed
burbschat Jul 2, 2026
98bc7df
Treat edge case trigger but still empty buffer
burbschat Jul 2, 2026
2b2d504
test(jesd204b): enable filtered loopback tests
bengineerd Jul 2, 2026
58ec4c2
test(jesd204b): rely on imported wrapper sources
bengineerd Jul 2, 2026
6383c47
Merge pull request #1443 from slaclab/ram-synth-mode
bengineerd Jul 2, 2026
37068b7
Merge branch 'pre-release' into jesd-ci-testing-pr
bengineerd Jul 2, 2026
ca4b86e
Merge branch 'jesd-ci-testing-pr' of https://github.com/slaclab/surf …
bengineerd Jul 2, 2026
b72f1e0
Remove sim_build_key from multiple test files
bengineerd Jul 2, 2026
ab5c299
Merge branch 'pre-release' into EventBuilder-tUserFirst-align-checker
ruck314 Jul 2, 2026
89428eb
Merge pull request #1432 from slaclab/jesd-ci-testing-pr
ruck314 Jul 2, 2026
6d2e938
Merge branch 'pre-release' into EventBuilder-tUserFirst-align-checker
ruck314 Jul 2, 2026
c49eee7
Merge pull request #1442 from slaclab/EventBuilder-tUserFirst-align-c…
ruck314 Jul 2, 2026
793be31
Add tDest and tId handling in AxiStreamCompact and tests
bengineerd Jul 2, 2026
1a23e74
Update GEN_SYNC_FIFO_G comment for clarity and add note on gearbox usage
bengineerd Jul 2, 2026
b8f20f2
Merge branch 'pre-release' into HtspRxFifo-HtspTxFifo
ruck314 Jul 2, 2026
de1b236
Merge pull request #1444 from slaclab/HtspRxFifo-HtspTxFifo
ruck314 Jul 2, 2026
a808693
Restrict RAM_ADDR_WIDTH_G and adjust registers
burbschat Jul 6, 2026
39048ce
Merge branch 'pre-release' into dcqcnEn
ruck314 Jul 6, 2026
754102f
Merge pull request #1430 from slaclab/dcqcnEn
ruck314 Jul 6, 2026
e942ed8
Merge branch 'pre-release' into axiStreamFrameBuffer
ruck314 Jul 6, 2026
b71021c
Merge pull request #1418 from burbschat/axiStreamFrameBuffer
ruck314 Jul 6, 2026
d713973
fix(axi-stream): drop numpy dependency from AxiStreamFrameBuffer test
ruck314 Jul 6, 2026
50caf08
Merge pull request #1451 from slaclab/test_AxiStreamFrameBuffer-fix-ci
ruck314 Jul 6, 2026
93567d6
Add comprehensive tests for RSSI functionality and enhance SSI test u…
bengineerd Jul 7, 2026
e1738a2
ci: upgrade and pin GitHub Actions to commit SHAs
ruck314 Jul 7, 2026
608f4d7
Merge pull request #1459 from slaclab/maint/repo-hygiene-2026
ruck314 Jul 7, 2026
f145a96
Merge branch 'pre-release' into rssi-regression-foundation
bengineerd Jul 7, 2026
6e3a8cf
Fix BOOTP broadcast flag in UdpEngineDhcp (0x0800 -> 0x8000)
ruck314 Jul 7, 2026
190315a
test: assert exact BOOTP flags value (0x8000) instead of bitmask
ruck314 Jul 7, 2026
c227018
Documentation enhancements.
bengineerd Jul 7, 2026
6198c3d
Documentation clarification.
bengineerd Jul 7, 2026
b6035da
Merge branch 'pre-release' into fix/dhcp-broadcast-flag
ruck314 Jul 7, 2026
911cd4c
test: add DHCP corner-case coverage (xid/chaddr rejection, option ord…
ruck314 Jul 7, 2026
fe3d9e3
Preserve XID across Discover->Request per RFC 2131 4.4.1
ruck314 Jul 7, 2026
c540eb7
ci: run UdpEngine DHCP regression tests
ruck314 Jul 7, 2026
b25d9fa
Merge pull request #1453 from slaclab/rssi-regression-foundation
bengineerd Jul 8, 2026
a51bd3e
Merge branch 'pre-release' into fix/dhcp-broadcast-flag
ruck314 Jul 13, 2026
5cfbd9c
Merge pull request #1460 from slaclab/fix/dhcp-broadcast-flag
ruck314 Jul 13, 2026
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
14 changes: 7 additions & 7 deletions .github/workflows/surf_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ jobs:
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

- uses: actions/setup-python@v5
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: 3.12

Expand Down Expand Up @@ -83,9 +83,9 @@ jobs:
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

- uses: actions/setup-python@v5
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: 3.12

Expand All @@ -107,7 +107,7 @@ jobs:
- name: Parallel Regression Tests
run: |
make MODULES=$PWD import
python -m pytest --cov -v -n auto --dist=worksteal tests/axi tests/base tests/dsp tests/protocols
python -m pytest --cov -v -n auto --dist=worksteal tests/axi tests/base tests/dsp tests/protocols tests/ethernet/RoCEv2 tests/ethernet/UdpEngine

- name: Code Coverage
run: |
Expand All @@ -121,7 +121,7 @@ jobs:
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

- name: Install documentation tools
run: |
Expand All @@ -134,7 +134,7 @@ jobs:

- name: Deploy Documentation
if: startsWith(github.ref, 'refs/tags/')
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453 # v4.1.0
with:
github_token: ${{ secrets.GH_TOKEN }}
publish_dir: doxygen/html
Expand Down
121 changes: 49 additions & 72 deletions axi/axi-lite/rtl/AxiDualPortRam.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@
-------------------------------------------------------------------------------
-- Description: A wrapper of StdLib DualPortRam that places an AxiLite
-- interface on the read/write port.
--
-- Supported RAM memory configurations:
--
-- SYNTH_MODE_G | MEMORY_TYPE_G | READ_LATENCY_G
-- "xpm", "altera_mf", "inferred" | "block" or "ultra" | 1 ~ 3
-- "xpm" | "distributed" | 0 ~ 3
-- "inferred" | "distributed" | 0 ~ 1
-------------------------------------------------------------------------------
-- 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 Expand Up @@ -82,6 +89,8 @@ architecture rtl of AxiDualPortRam is
constant RAM_WIDTH_C : natural := ADDR_AXI_WORDS_C*32;
constant STRB_WIDTH_C : natural := minimum(4, ADDR_AXI_BYTES_C);

constant RAM_READ_LATENCY_C : natural := ite(SYNTH_MODE_G = "xpm", READ_LATENCY_G, ite(READ_LATENCY_G >= 2, 2, 1));

type StateType is (
IDLE_S,
RD_S);
Expand Down Expand Up @@ -118,88 +127,55 @@ architecture rtl of AxiDualPortRam is

begin

------------------------------------------------------------
-- Supported RAM memory configurations
------------------------------------------------------------
-- SYNTH_MODE_G | MEMORY_TYPE_G | READ_LATENCY_G
------------------------------------------------------------
-- "XPM" or "inferred" | "block" or "ultra" | 1 ~ 3
------------------------------------------------------------
-- "XPM" | "distributed" | 0 ~ 3
------------------------------------------------------------
-- "inferred" | "distributed" | 0 ~ 1
------------------------------------------------------------
assert
(MEMORY_TYPE_G /= "distributed" and (READ_LATENCY_G >= 1 and READ_LATENCY_G <= 3)) or
(SYNTH_MODE_G = "xpm" and MEMORY_TYPE_G = "distributed" and (READ_LATENCY_G <= 3)) or
(SYNTH_MODE_G = "inferred" and MEMORY_TYPE_G = "distributed" and (READ_LATENCY_G <= 1))
report "RAM memory configuration not supported" severity failure;

GEN_XPM : if (SYNTH_MODE_G = "xpm") generate
U_RAM : entity surf.TrueDualPortRamXpm
GEN_VENDOR : if (SYNTH_MODE_G /= "inferred") generate
U_RAM : entity surf.TrueDualPortRam
generic map (
TPD_G => TPD_G,
RST_POLARITY_G => RST_POLARITY_G,
SYNTH_MODE_G => SYNTH_MODE_G,
COMMON_CLK_G => COMMON_CLK_G,
MEMORY_TYPE_G => MEMORY_TYPE_G,
MEMORY_INIT_FILE_G => MEMORY_INIT_FILE_G,
MEMORY_INIT_PARAM_G => MEMORY_INIT_PARAM_G,
WRITE_MODE_G => ite(MEMORY_TYPE_G = "distributed", "read_first", "no_change"),
READ_LATENCY_G => READ_LATENCY_G,
MODE_G => ite(MEMORY_TYPE_G = "distributed", "read-first", "no-change"),
READ_LATENCY_G => RAM_READ_LATENCY_C,
READ_LATENCY_A_G => RAM_READ_LATENCY_C,
READ_LATENCY_B_G => RAM_READ_LATENCY_C,
DATA_WIDTH_G => DATA_WIDTH_G,
BYTE_WR_EN_G => true,
BYTE_WIDTH_G => 8,
ADDR_WIDTH_G => ADDR_WIDTH_G)
port map (
-- Port A
clka => axiClk,
ena => '1',
wea => r.axiWrStrobe(ADDR_AXI_BYTES_C-1 downto 0),
rsta => NOT_RST_C,
addra => r.axiAddr,
dina => axiWrDataFanout(DATA_WIDTH_G-1 downto 0),
douta => axiDout(DATA_WIDTH_G-1 downto 0),
-- Port B
clkb => clk,
enb => en,
web => weByteMask,
rstb => NOT_RST_C,
addrb => addr,
dinb => din,
doutb => doutInt);
end generate;

GEN_ALTERA : if (SYNTH_MODE_G = "altera_mf") generate
U_RAM : entity surf.TrueDualPortRamAlteraMf
generic map (
TPD_G => TPD_G,
RST_POLARITY_G => RST_POLARITY_G,
COMMON_CLK_G => COMMON_CLK_G,
MEMORY_TYPE_G => MEMORY_TYPE_G,
READ_LATENCY_G => READ_LATENCY_G,
DATA_WIDTH_G => DATA_WIDTH_G,
BYTE_WR_EN_G => true,
BYTE_WIDTH_G => 8,
ADDR_WIDTH_G => ADDR_WIDTH_G)
port map (
-- Port A
clka => axiClk,
ena => '1',
wea => r.axiWrStrobe(ADDR_AXI_BYTES_C-1 downto 0),
rsta => NOT_RST_C,
addra => r.axiAddr,
dina => axiWrDataFanout(DATA_WIDTH_G-1 downto 0),
douta => axiDout(DATA_WIDTH_G-1 downto 0),
clka => axiClk,
ena => '1',
wea => '1',
weaByte => r.axiWrStrobe(ADDR_AXI_BYTES_C-1 downto 0),
rsta => NOT_RST_C,
addra => r.axiAddr,
dina => axiWrDataFanout(DATA_WIDTH_G-1 downto 0),
douta => axiDout(DATA_WIDTH_G-1 downto 0),
-- Port B
clkb => clk,
enb => en,
web => weByteMask,
rstb => NOT_RST_C,
addrb => addr,
dinb => din,
doutb => doutInt);
end generate;

clkb => clk,
enb => en,
web => we,
webByte => weByteMask,
rstb => NOT_RST_C,
addrb => addr,
dinb => din,
doutb => doutInt);
end generate GEN_VENDOR;

-- Keep the inferred read-only/simple-dual cases on DualPortRam for
-- compatibility. Those paths preserve the legacy inferred distributed RAM
-- behavior, including READ_LATENCY_G = 0 support, that the selector
-- wrappers intentionally do not imply.
GEN_INFERRED : if (SYNTH_MODE_G = "inferred") generate

-- AXI read only, sys writable or read only (rom)
Expand Down Expand Up @@ -270,16 +246,17 @@ begin
AXI_RW_SYS_RW : if (AXI_WR_EN_G and SYS_WR_EN_G) generate
U_TrueDualPortRam_1 : entity surf.TrueDualPortRam
generic map (
TPD_G => TPD_G,
RST_POLARITY_G => RST_POLARITY_G,
RST_ASYNC_G => RST_ASYNC_G,
BYTE_WR_EN_G => true,
DOA_REG_G => ite(READ_LATENCY_G >= 2, true, false),
DOB_REG_G => ite(READ_LATENCY_G >= 2, true, false),
DATA_WIDTH_G => DATA_WIDTH_G,
BYTE_WIDTH_G => 8,
ADDR_WIDTH_G => ADDR_WIDTH_G,
INIT_G => INIT_G)
TPD_G => TPD_G,
RST_POLARITY_G => RST_POLARITY_G,
RST_ASYNC_G => RST_ASYNC_G,
BYTE_WR_EN_G => true,
DATA_WIDTH_G => DATA_WIDTH_G,
BYTE_WIDTH_G => 8,
ADDR_WIDTH_G => ADDR_WIDTH_G,
INIT_G => INIT_G,
READ_LATENCY_G => RAM_READ_LATENCY_C,
READ_LATENCY_A_G => RAM_READ_LATENCY_C,
READ_LATENCY_B_G => RAM_READ_LATENCY_C)
port map (
clka => axiClk, -- [in]
ena => '1', -- [in]
Expand Down
111 changes: 34 additions & 77 deletions axi/axi-lite/rtl/AxiLiteSequencerRam.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ architecture rtl of AxiLiteSequencerRam is
constant AXI_RAM_ADDR_LOW_C : integer := AXI_DEC_ADDR_RANGE_C'high+1;
subtype AXI_RAM_ADDR_RANGE_C is integer range AXI_RAM_ADDR_HIGH_C downto AXI_RAM_ADDR_LOW_C;

constant RAM_READ_LATENCY_C : natural := ite(SYNTH_MODE_G = "inferred", ite(READ_LATENCY_G >= 2, 2, 1), READ_LATENCY_G);

type StateType is (
IDLE_S,
S_AXI_RD_S,
Expand Down Expand Up @@ -138,6 +140,10 @@ architecture rtl of AxiLiteSequencerRam is

begin

assert (SYNTH_MODE_G /= "inferred") or (READ_LATENCY_G >= 1)
report "AxiLiteSequencerRam: inferred mode requires READ_LATENCY_G >= 1"
severity failure;

U_AxiLiteMaster : entity surf.AxiLiteMaster
generic map (
TPD_G => TPD_G,
Expand All @@ -153,83 +159,34 @@ begin
axilReadMaster => mAxilReadMaster,
axilReadSlave => mAxilReadSlave);

GEN_XPM : if (SYNTH_MODE_G = "xpm") generate
U_RAM : entity surf.TrueDualPortRamXpm
generic map (
TPD_G => TPD_G,
RST_POLARITY_G => RST_POLARITY_G,
COMMON_CLK_G => true,
MEMORY_TYPE_G => MEMORY_TYPE_G,
MEMORY_INIT_FILE_G => MEMORY_INIT_FILE_G,
MEMORY_INIT_PARAM_G => MEMORY_INIT_PARAM_G,
READ_LATENCY_G => READ_LATENCY_G,
DATA_WIDTH_G => 64,
BYTE_WR_EN_G => true,
BYTE_WIDTH_G => 8,
ADDR_WIDTH_G => ADDR_WIDTH_G)
port map (
-- Port A
clka => axilClk,
wea => r.wstrb,
addra => r.addr,
dina => r.din,
douta => dout,
-- Port B
clkb => axilClk,
addrb => r.seqAddr,
doutb => seqData);
end generate;

GEN_ALTERA : if (SYNTH_MODE_G = "altera_mf") generate
U_RAM : entity surf.TrueDualPortRamAlteraMf
generic map (
TPD_G => TPD_G,
RST_POLARITY_G => RST_POLARITY_G,
COMMON_CLK_G => true,
MEMORY_TYPE_G => MEMORY_TYPE_G,
READ_LATENCY_G => READ_LATENCY_G,
DATA_WIDTH_G => 64,
BYTE_WR_EN_G => true,
BYTE_WIDTH_G => 8,
ADDR_WIDTH_G => ADDR_WIDTH_G)
port map (
-- Port A
clka => axilClk,
wea => r.wstrb,
addra => r.addr,
dina => r.din,
douta => dout,
-- Port B
clkb => axilClk,
addrb => r.seqAddr,
doutb => seqData);
end generate;

GEN_INFERRED : if (SYNTH_MODE_G = "inferred") generate
U_RAM : entity surf.TrueDualPortRam
generic map (
TPD_G => TPD_G,
RST_POLARITY_G => RST_POLARITY_G,
RST_ASYNC_G => RST_ASYNC_G,
BYTE_WR_EN_G => true,
DOA_REG_G => ite(READ_LATENCY_G >= 2, true, false),
DOB_REG_G => ite(READ_LATENCY_G >= 2, true, false),
DATA_WIDTH_G => 64,
BYTE_WIDTH_G => 8,
ADDR_WIDTH_G => ADDR_WIDTH_G)
port map (
-- Port A
clka => axilClk,
wea => '1',
weaByte => r.wstrb,
addra => r.addr,
dina => r.din,
douta => dout,
-- Port B
clkb => axilClk,
addrb => r.seqAddr,
doutb => seqData);
end generate;
U_RAM : entity surf.TrueDualPortRam
generic map (
TPD_G => TPD_G,
RST_POLARITY_G => RST_POLARITY_G,
RST_ASYNC_G => RST_ASYNC_G,
SYNTH_MODE_G => SYNTH_MODE_G,
COMMON_CLK_G => true,
MEMORY_TYPE_G => MEMORY_TYPE_G,
MEMORY_INIT_FILE_G => MEMORY_INIT_FILE_G,
MEMORY_INIT_PARAM_G => MEMORY_INIT_PARAM_G,
READ_LATENCY_G => RAM_READ_LATENCY_C,
READ_LATENCY_A_G => RAM_READ_LATENCY_C,
READ_LATENCY_B_G => RAM_READ_LATENCY_C,
BYTE_WR_EN_G => true,
DATA_WIDTH_G => 64,
BYTE_WIDTH_G => 8,
ADDR_WIDTH_G => ADDR_WIDTH_G)
port map (
-- Port A
clka => axilClk,
weaByte => r.wstrb,
addra => r.addr,
dina => r.din,
douta => dout,
-- Port B
clkb => axilClk,
addrb => r.seqAddr,
doutb => seqData);

comb : process (ack, axilRst, dout, extSize, extStart, r, sAxilReadMaster,
sAxilWriteMaster, seqData) is
Expand Down
Loading