Hi, Last time I have spent a lot of time on development of quite complex high s peed data processing systems in FPGA. They all had pipeline architecture, a nd data were processed in parallel in multiple pipelines with different la tencies.
The worst thing was that those latencies were changing during development. For example some operations were performed by blocks with tree structure, s o the number of levels depended on number of inputs handled by each node. T he number of inputs in each node was varied to find the acceptable balance between the number of levels and maximum clock speed. I also had to add som e pipeline registers to improve timing.
Entire designs were written in pure VHDL, so I had to adjust latencies man ually, to ensure that data coming from different paths arrive in the next b lock in the same clock cycle. It was really a nightmare so I dreamed about an automated way to ensure proper equalization of latencies.
After some work I have elaborated a solution which I'd like to share with t he community. It is available under the BSD license on the OpenCores websit e
I'll appreciate any comments. I hope that the proposed method will be useful for others.
With best regards, Wojtek