I have been using Expeditions online crosstalk estimation extensively to indicate traces and areas where I may have crosstalk issues.
However, I just found out the hard way that one of the limitations of the tool is that it ignores segments shorter than 2.54mm (100th).
This may not seem like a big issue, but when routing signals with rise-times below 100ps (newest generation FPGAs) on adjacent layers in thin multi-layer boards, it can become a big issue quickly.
I use one layer for X-routing and the adjacent layer for Y-routing but then I have to tune the traces to adjust for timing and during this tuning some segments may route directly on top of one another. I noticed this and that the crosstalk estimation seemed a bit off, so I made a simple test-design to play with.
The design has 0.1mm between routing layers (normal for impedance controlled boards) and use 90ps rise-time with 1.8V swing as in the latest generation Xilinx FPGAs.
I have two identical sections with two traces each. If I route the traces directly on top of each other in one of the sections, I get a reported crosstalk of ~380mV. In the other section I also route the traces on top of each other but add a little jog-out every 2.5mm. This reports no crosstalk but things gets really crazy when I start removing these jog-outs - if I leave some of them in place with something like 11mm trace in between, the crosstalk from each section seems to add up so that I can get a total reported crosstalk of 1.3V. If I remove all jog-outs I'm back to 380mV as in the untouched section.
According to support this 2.54mm segment length is a limitation of the tool so I wonder if anyone else has encountered this behavior and maybe have a solution or a work-around for it.