{"id":21297981,"url":"https://github.com/amamory/axis-skidbuffer-lfsr","last_synced_at":"2026-03-19T19:45:57.957Z","repository":{"id":168583298,"uuid":"286243895","full_name":"amamory/axis-skidbuffer-lfsr","owner":"amamory","description":"An IP used for testing AXI stream protocols. It uses a LFSR to generate ready and valid signals ","archived":false,"fork":false,"pushed_at":"2020-08-10T11:57:59.000Z","size":104,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-22T07:33:26.978Z","etag":null,"topics":["axi-stream","lfsr","skidbuffer","vivado"],"latest_commit_sha":null,"homepage":"","language":"Tcl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amamory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-09T13:36:25.000Z","updated_at":"2023-11-16T02:22:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"0c3af1c1-4f30-45bf-b442-875b4fb7dae1","html_url":"https://github.com/amamory/axis-skidbuffer-lfsr","commit_stats":null,"previous_names":["amamory/axis-skidbuffer-lfsr"],"tags_count":1,"template":false,"template_full_name":"amamory/vivado-base-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amamory%2Faxis-skidbuffer-lfsr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amamory%2Faxis-skidbuffer-lfsr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amamory%2Faxis-skidbuffer-lfsr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amamory%2Faxis-skidbuffer-lfsr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amamory","download_url":"https://codeload.github.com/amamory/axis-skidbuffer-lfsr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243769946,"owners_count":20345215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axi-stream","lfsr","skidbuffer","vivado"],"created_at":"2024-11-21T14:42:59.401Z","updated_at":"2026-02-10T09:43:50.538Z","avatar_url":"https://github.com/amamory.png","language":"Tcl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vivado skidbuffer LFSR IP\n\nSkidbuffer with LFSR is a design that inserts pseudo random timing interruptions in a AXI streaming data flow. This is usefull test the AXIS interfaces of new blocks. \nThe [skidbuffer-tester](https://github.com/amamory/skidbuffer-testing) repo demonstrates how skidbuffer LFSR in a Zynq DMA transfer.\nThe project is setup for Zedboard, although it would be easy to change to other boards assuming you have some basic TCL skills.\n\n# Module/IP design\n\nHere is an example were 400 intergers are sent via DMA. Normally you dont see any contention.\n\n![continuous waveform](wave-continuous.png)\n\nHowever, without contention it is not possible to really test an AXIS interface. \nSkidbuffer + LFSR inserts these short contentions in the dataflow, testing the interface protocol of a block with AXIS. This is what happens to the same data transfer after Skidbuffer + LFSR block. Every time you run, the timing is a bit different thanks to the LFSR.\n\n![waveform with random interruptions](wave-messy-timing.png)\n\nThis IP interface consists of a AXIS slave and a AXIS master ports. \n\n![continuous waveform](skid-block.png)\n\nIt has parameter to adjust the data width, the LFSR seed, and if the LFSR is used. The mode without register is not working yet. Dont disable it.\n\n![continuous waveform](skid-param.png)\n\n# How to download it\n\nThis repository might have custom IPs included as git submodules. Thus, the following command is required to download all its dependencies.\n\n```\ngit clone --recursive https://github.com/amamory/\u003crepo-name\u003e.git\n```\n\nIf you already cloned the repository without `--recursive`, then run the following command to download all the submodules.\n\n```\ngit submodule update --init --recursive\n```\n\nRefer to this [tutorial](https://www.vogella.com/tutorials/GitSubmodules/article.html) to learn how to manage submodules.\n\n\n# How to run it\n\nThese scripts are assuming Linux operation system (Ubuntu 18.04) and Vivado 2018.2.\n\nFollow these instructions to recreate the Vivado and SDK projects:\n - Open the **build.sh** script and edit the first lines to setup these environment variables:\n    - **VIVADO**: path to the Vivado install dir;\n    - **VIVADO_DESIGN_NAME**: mandatory name of the design;\n    - **XIL_APP_NAME**: used only in projects with software;\n    - **VIVADO_TOP_NAME**: set the top name (optional).  \n - run *build.sh*\n\nThese scripts will recreate the entire Vivado project, compile the design, generate the bitstream, export the hardware to SDK, create the SDK projects, import the source files, build all projects, and finally download both the bitstream and the elf application. Hopefully, all these steps will be executed automatically.\n\n# How to update the scripts\n\nThese scripts come from a template repository and they get updated and improved over time. If you wish to get the latest script version, then follow these steps:\n\n```\ngit remote add template https://github.com/amamory/vivado-base-project.git\ngit fetch --all\ngit merge --no-commit --no-ff template/master --allow-unrelated-histories\n```\n\nSolve any conflict manually and then commit.\n\n# Future work\n\n - update the scripts to Vitis\n - support or test with Windows (help required !!! :D )\n\n# Credits\n\nThe scripts are based on the excellent scripts from [fpgadesigner](https://github.com/fpgadeveloper/zedboard-axi-dma) plus few increments from my own such as project generalization, support to SDK project creation and compilation and other minor improvements. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famamory%2Faxis-skidbuffer-lfsr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famamory%2Faxis-skidbuffer-lfsr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famamory%2Faxis-skidbuffer-lfsr/lists"}