12-18-2018 02:34 AM
I am packaging a custom AXI Stream IP which I need to connect to AXI DMA through AXI4-Stream Data FIFO. I notice that there is a tkeep [3:0] in S_AXIS_S2MM and M_AXIS_MM2S ports of AXI DMA. However in the custom AXI Stream IP there is tstrb [3:0] instead of tkeep [3:0]. I am wondering what is the difference between these two signals. Is that Ok to connect tstrb [3:0] to tkeep [3:0] ? The other signals (tdata, tready, tvalid, and tlast) are the same in AXI DMA and also in Custom AXI Stream IP.
12-19-2018 10:04 AM
TKEEP and TSTRB aren't the same signal. Their importance depends on the context of their use. If you're simply looking to move all the bytes between two IP modules, just connect the AXIS ports together. The tool should not connect the signals together, and will resolve the missing connections based on AXIS spec rules:
12-29-2018 04:48 AM
Yes, when I connect the AXI master port to AXI slave port, the tool does not connect tkeep signal and tstrb signals. Should I connect tkeep to 1 in AXI streaming ?
12-30-2018 05:24 PM
I assume you're asking if you should drive TKEEP to 1, inside your AXIS Master...?
You could do that--if your intent is to qualify every byte as relevant. Or you can simply ignore TKEEP, and let tool assume that TKEEP = 1 for all bytes. See the first Default Rule, above.
Once again, the distinction between TSTRB and TKEEP depends on your context. TKEEP is more controlling, as a (logical) byte valid. TSTRB is subordinate, as a (positional/timing) byte valid. It's possible that whoever originally crafted your IP may have misunderstood the proper use of these qualifiers--and TKEEP should have been used instead of TSTRB. Regardless, if you don't understand them, it's better to let the tool resolve them for you.
12-31-2018 01:00 AM - edited 01-01-2019 12:54 PM
Hi, I am having a custom AXI Stream whose M_AXIS is connected to S_AXIS S2MM of AXI DMA. The signals TSTRB M_AXIS and TKEEP in S_AXIS S2MM are not connected by the tool.
In this application all the bytes from custom AXI Stream are valid and there is no need of data alignment/positioning. In this case should I safely ignore these both signals and leave them un-connected by assuming that the default value of S_AXIS S2MM_TKEEP is 1 ?