-
Notifications
You must be signed in to change notification settings - Fork 93
Add Verification and Regression Tests for base/ and axi/ #1386
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
Draft
bengineerd
wants to merge
62
commits into
pre-release
Choose a base branch
from
verification
base: pre-release
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from all commits
Commits
Show all changes
62 commits
Select commit
Hold shift + click to select a range
55bb98d
Add SURF RTL Regression Documentation
bengineerd 4c5be3e
Implement initial RTL regression inventory and pilot module selection
bengineerd 44fcb52
Add local bootstrap scripts and VSCode tasks for regression setup
bengineerd 489161a
Enhance RTL regression framework with organized test structure and in…
bengineerd a42fcc3
Update RTL regression progress with HDL coverage findings and documen…
bengineerd 5908288
Enhance RTL regression framework with new test organization and docum…
bengineerd d86804d
Add pytest configuration and enhance FifoAsync regression tests
bengineerd b08ca24
Update RTL regression documentation with package coverage policy
bengineerd 6c4396b
Enhance RTL regression framework with FifoSync implementation and ins…
bengineerd 5edd87a
Add RTL instantiation graph and documentation for regression planning
bengineerd 01d1329
Implement Synchronizer regression tests and update documentation
bengineerd 6a757b2
Enhance RTL regression framework with new module implementations and …
bengineerd e6199de
Enhance RTL regression framework with new CRC modules and comprehensi…
bengineerd dc25891
Implement new regression tests for general and delay modules, enhanci…
bengineerd 4792840
Enhance test documentation and clarity in delay and general modules
bengineerd a1e787a
Implement new regression tests for DSP and FIFO modules, enhancing co…
bengineerd bf2d41c
Implement and validate additional base modules and their regression t…
bengineerd 54e1dfe
Add test utilities for dual-port RAM and enhance existing RAM tests
bengineerd a658ff0
Enhance Python regression documentation with structured commenting gu…
bengineerd 4bfffee
Add AxiStreamPipeline and AxiLiteCrossbar with validation tests
bengineerd f1578fd
Refactor RTL regression documentation and establish flat build order
bengineerd 229deb7
Add AxiStreamMuxIpIntegrator and validation tests
bengineerd 9b6ceb2
Add AxiStreamDeMuxIpIntegrator and validation tests
bengineerd eecdf10
Add new AXI Lite and AXI Stream IP Integrators with validation tests
bengineerd 4c10833
Update RTL instantiation graph and introduce phase-1 queue
bengineerd 01d754a
Add AXI Lite and AXI Stream regression benches
bengineerd 5150931
Add new AXI4 IP Integrators and validation tests
bengineerd b8214ae
Add new AXI Lite and AXI Stream IP Integrators
bengineerd c032370
Refactor CI workflow for ruckus dependency management.
bengineerd c1a3a6c
Add new AXI Stream and AXI Lite IP Integrators
bengineerd cbee5b6
Add new AXI Lite, AXI Stream, and AXI4 IP Integrators with validation…
bengineerd 8db16b1
Refactor sorting key in bottom-up layer function and clean up test im…
bengineerd ecb9074
Add legacy test files and update pytest configuration
bengineerd f5f1918
Update .gitignore and remove obsolete VSCode tasks
bengineerd 66dacb1
Enhance CI workflow with concurrency management
bengineerd 9f79a70
Refactor AXI Stream and AXI Lite IP Integrators for consistency
bengineerd d48ba03
Update CI workflow and pytest configuration
bengineerd e3eeeb3
Refactor port declarations in AXI Lite and AXI Stream IP Integrators
bengineerd 8a1e913
Add AxiRateGen IP Integrator and validation tests
bengineerd b5720f4
Update planning docs
bengineerd b6a26b1
Update plan order
bengineerd 8971eae
More plan updates.
bengineerd dae0817
Add new AXI IP Integrators for FIFO and Ring Buffer
bengineerd 5f5fae5
Add new AXI IP Integrators for Stream and DMA
bengineerd f2e45fc
Update AXI test cases to handle known RTL bugs
bengineerd 57f8c8a
Update regression environment setup to enhance pytest execution
bengineerd d75c15d
Centralize GHDL compile flags.
bengineerd 62b8376
Conda env
bengineerd 94b2542
Add new AXI IP Integrators for various components
bengineerd 69ab113
Add utility functions for AXI operations and refactor test cases
bengineerd 4b9a844
Refactor AxiRateGen test to remove unused AxiMaster import
bengineerd 76ff58d
Remove obsolete test files for AxiRingBuffer and AxiStreamBatchingFifo
bengineerd 4065b46
Refactor AXI IP Integrators for consistency and readability
bengineerd 1d78e07
Add VHDL wrappers for various components to enhance cocotb testing
bengineerd 658b2ae
Enhance AXI IP Integrators with additional signal declarations
bengineerd 5113ca8
Refactor VHDL files for improved formatting and consistency
bengineerd 5f00924
Update VHDL linting guidelines in documentation
bengineerd f74f2f8
Add new VHDL wrappers for various components to enhance cocotb testing
bengineerd 492f7e2
Add new VHDL wrappers and test cases for FIFO and SRP protocols
bengineerd f0acfef
Remove obsolete legacy test files for AXI components
bengineerd 718970b
Linting.
bengineerd 6a5d84b
Remove legacy-style testbench execution from CI workflow to streamlin…
bengineerd File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -19,3 +19,8 @@ ruckus/ | |
| build/ | ||
| sim_build/ | ||
| .coverage* | ||
|
|
||
| # Local editor/agent state | ||
| .vscode/ | ||
| .cursor/ | ||
| .claude/ | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
177 changes: 177 additions & 0 deletions
177
axi/axi-lite/ip_integrator/AxiLiteAsyncIpIntegrator.vhd
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,177 @@ | ||
| library ieee; | ||
| use ieee.std_logic_1164.all; | ||
|
|
||
| library surf; | ||
| use surf.StdRtlPkg.all; | ||
| use surf.AxiLitePkg.all; | ||
|
|
||
| entity AxiLiteAsyncIpIntegrator is | ||
| generic ( | ||
| TPD_G : time := 1 ns; | ||
| RST_POLARITY_G : sl := '1'; | ||
| RST_ASYNC_G : boolean := false; | ||
| AXI_ERROR_RESP_G : slv(1 downto 0) := AXI_RESP_SLVERR_C; | ||
| COMMON_CLK_G : boolean := false; | ||
| NUM_ADDR_BITS_G : natural := 32; | ||
| PIPE_STAGES_G : integer range 0 to 16 := 0); | ||
| port ( | ||
| sAxiClk : in sl; | ||
| sAxiClkRst : in sl; | ||
| mAxiClk : in sl; | ||
| mAxiClkRst : in sl; | ||
| S_AXI_AWADDR : in slv(NUM_ADDR_BITS_G-1 downto 0); | ||
| S_AXI_AWPROT : in slv(2 downto 0); | ||
| S_AXI_AWVALID : in sl; | ||
| S_AXI_AWREADY : out sl; | ||
| S_AXI_WDATA : in slv(31 downto 0); | ||
| S_AXI_WSTRB : in slv(3 downto 0); | ||
| S_AXI_WVALID : in sl; | ||
| S_AXI_WREADY : out sl; | ||
| S_AXI_BRESP : out slv(1 downto 0); | ||
| S_AXI_BVALID : out sl; | ||
| S_AXI_BREADY : in sl; | ||
| S_AXI_ARADDR : in slv(NUM_ADDR_BITS_G-1 downto 0); | ||
| S_AXI_ARPROT : in slv(2 downto 0); | ||
| S_AXI_ARVALID : in sl; | ||
| S_AXI_ARREADY : out sl; | ||
| S_AXI_RDATA : out slv(31 downto 0); | ||
| S_AXI_RRESP : out slv(1 downto 0); | ||
| S_AXI_RVALID : out sl; | ||
| S_AXI_RREADY : in sl; | ||
| M_AXI_AWADDR : out slv(NUM_ADDR_BITS_G-1 downto 0); | ||
| M_AXI_AWPROT : out slv(2 downto 0); | ||
| M_AXI_AWVALID : out sl; | ||
| M_AXI_AWREADY : in sl; | ||
| M_AXI_WDATA : out slv(31 downto 0); | ||
| M_AXI_WSTRB : out slv(3 downto 0); | ||
| M_AXI_WVALID : out sl; | ||
| M_AXI_WREADY : in sl; | ||
| M_AXI_BRESP : in slv(1 downto 0); | ||
| M_AXI_BVALID : in sl; | ||
| M_AXI_BREADY : out sl; | ||
| M_AXI_ARADDR : out slv(NUM_ADDR_BITS_G-1 downto 0); | ||
| M_AXI_ARPROT : out slv(2 downto 0); | ||
| M_AXI_ARVALID : out sl; | ||
| M_AXI_ARREADY : in sl; | ||
| M_AXI_RDATA : in slv(31 downto 0); | ||
| M_AXI_RRESP : in slv(1 downto 0); | ||
| M_AXI_RVALID : in sl; | ||
| M_AXI_RREADY : out sl); | ||
| end entity AxiLiteAsyncIpIntegrator; | ||
|
|
||
| architecture rtl of AxiLiteAsyncIpIntegrator is | ||
|
|
||
| signal sAxiAResetN : sl := '1'; | ||
| signal mAxiAResetN : sl := '1'; | ||
|
|
||
| signal sAxiReadMaster : AxiLiteReadMasterType := AXI_LITE_READ_MASTER_INIT_C; | ||
| signal sAxiReadSlave : AxiLiteReadSlaveType := AXI_LITE_READ_SLAVE_INIT_C; | ||
| signal sAxiWriteMaster : AxiLiteWriteMasterType := AXI_LITE_WRITE_MASTER_INIT_C; | ||
| signal sAxiWriteSlave : AxiLiteWriteSlaveType := AXI_LITE_WRITE_SLAVE_INIT_C; | ||
|
|
||
| signal mAxiReadMaster : AxiLiteReadMasterType := AXI_LITE_READ_MASTER_INIT_C; | ||
| signal mAxiReadSlave : AxiLiteReadSlaveType := AXI_LITE_READ_SLAVE_INIT_C; | ||
| signal mAxiWriteMaster : AxiLiteWriteMasterType := AXI_LITE_WRITE_MASTER_INIT_C; | ||
| signal mAxiWriteSlave : AxiLiteWriteSlaveType := AXI_LITE_WRITE_SLAVE_INIT_C; | ||
|
|
||
| begin | ||
|
|
||
| sAxiAResetN <= not sAxiClkRst when (RST_POLARITY_G = '1') else sAxiClkRst; | ||
| mAxiAResetN <= not mAxiClkRst when (RST_POLARITY_G = '1') else mAxiClkRst; | ||
|
|
||
| U_SlaveShim : entity surf.SlaveAxiLiteIpIntegrator | ||
| generic map ( | ||
| INTERFACENAME => "S_AXI", | ||
| EN_ERROR_RESP => true, | ||
| HAS_PROT => 1, | ||
| HAS_WSTRB => 1, | ||
| ADDR_WIDTH => NUM_ADDR_BITS_G) | ||
| port map ( | ||
| S_AXI_ACLK => sAxiClk, | ||
| S_AXI_ARESETN => sAxiAResetN, | ||
| S_AXI_AWADDR => S_AXI_AWADDR, | ||
| S_AXI_AWPROT => S_AXI_AWPROT, | ||
| S_AXI_AWVALID => S_AXI_AWVALID, | ||
| S_AXI_AWREADY => S_AXI_AWREADY, | ||
| S_AXI_WDATA => S_AXI_WDATA, | ||
| S_AXI_WSTRB => S_AXI_WSTRB, | ||
| S_AXI_WVALID => S_AXI_WVALID, | ||
| S_AXI_WREADY => S_AXI_WREADY, | ||
| S_AXI_BRESP => S_AXI_BRESP, | ||
| S_AXI_BVALID => S_AXI_BVALID, | ||
| S_AXI_BREADY => S_AXI_BREADY, | ||
| S_AXI_ARADDR => S_AXI_ARADDR, | ||
| S_AXI_ARPROT => S_AXI_ARPROT, | ||
| S_AXI_ARVALID => S_AXI_ARVALID, | ||
| S_AXI_ARREADY => S_AXI_ARREADY, | ||
| S_AXI_RDATA => S_AXI_RDATA, | ||
| S_AXI_RRESP => S_AXI_RRESP, | ||
| S_AXI_RVALID => S_AXI_RVALID, | ||
| S_AXI_RREADY => S_AXI_RREADY, | ||
| axilClk => open, | ||
| axilRst => open, | ||
| axilReadMaster => sAxiReadMaster, | ||
| axilReadSlave => sAxiReadSlave, | ||
| axilWriteMaster => sAxiWriteMaster, | ||
| axilWriteSlave => sAxiWriteSlave); | ||
|
|
||
| U_MasterShim : entity surf.MasterAxiLiteIpIntegrator | ||
| generic map ( | ||
| INTERFACENAME => "M_AXI", | ||
| EN_ERROR_RESP => true, | ||
| HAS_PROT => 1, | ||
| HAS_WSTRB => 1, | ||
| ADDR_WIDTH => NUM_ADDR_BITS_G) | ||
| port map ( | ||
| M_AXI_ACLK => mAxiClk, | ||
| M_AXI_ARESETN => mAxiAResetN, | ||
| M_AXI_AWADDR => M_AXI_AWADDR, | ||
| M_AXI_AWPROT => M_AXI_AWPROT, | ||
| M_AXI_AWVALID => M_AXI_AWVALID, | ||
| M_AXI_AWREADY => M_AXI_AWREADY, | ||
| M_AXI_WDATA => M_AXI_WDATA, | ||
| M_AXI_WSTRB => M_AXI_WSTRB, | ||
| M_AXI_WVALID => M_AXI_WVALID, | ||
| M_AXI_WREADY => M_AXI_WREADY, | ||
| M_AXI_BRESP => M_AXI_BRESP, | ||
| M_AXI_BVALID => M_AXI_BVALID, | ||
| M_AXI_BREADY => M_AXI_BREADY, | ||
| M_AXI_ARADDR => M_AXI_ARADDR, | ||
| M_AXI_ARPROT => M_AXI_ARPROT, | ||
| M_AXI_ARVALID => M_AXI_ARVALID, | ||
| M_AXI_ARREADY => M_AXI_ARREADY, | ||
| M_AXI_RDATA => M_AXI_RDATA, | ||
| M_AXI_RRESP => M_AXI_RRESP, | ||
| M_AXI_RVALID => M_AXI_RVALID, | ||
| M_AXI_RREADY => M_AXI_RREADY, | ||
| axilClk => open, | ||
| axilRst => open, | ||
| axilReadMaster => mAxiReadMaster, | ||
| axilReadSlave => mAxiReadSlave, | ||
| axilWriteMaster => mAxiWriteMaster, | ||
| axilWriteSlave => mAxiWriteSlave); | ||
|
|
||
| U_DUT : entity surf.AxiLiteAsync | ||
| generic map ( | ||
| TPD_G => TPD_G, | ||
| RST_POLARITY_G => RST_POLARITY_G, | ||
| RST_ASYNC_G => RST_ASYNC_G, | ||
| AXI_ERROR_RESP_G => AXI_ERROR_RESP_G, | ||
| COMMON_CLK_G => COMMON_CLK_G, | ||
| NUM_ADDR_BITS_G => NUM_ADDR_BITS_G, | ||
| PIPE_STAGES_G => PIPE_STAGES_G) | ||
| port map ( | ||
| sAxiClk => sAxiClk, | ||
| sAxiClkRst => sAxiClkRst, | ||
| sAxiReadMaster => sAxiReadMaster, | ||
| sAxiReadSlave => sAxiReadSlave, | ||
| sAxiWriteMaster => sAxiWriteMaster, | ||
| sAxiWriteSlave => sAxiWriteSlave, | ||
| mAxiClk => mAxiClk, | ||
| mAxiClkRst => mAxiClkRst, | ||
| mAxiReadMaster => mAxiReadMaster, | ||
| mAxiReadSlave => mAxiReadSlave, | ||
| mAxiWriteMaster => mAxiWriteMaster, | ||
| mAxiWriteSlave => mAxiWriteSlave); | ||
|
|
||
| end architecture rtl; | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@bengineerd Reminder that you need to add the licensing code header to all .vhd and .py files that you just created