我的串行ATA控制器设计可用于几乎所有种类的Xilinx 7系列设备,但Artix-7设备除外,这让我头疼。
纯设计(SATA 6.0Gb / s,150 MHz设计时钟)可以在我的Artix-7 200T上实现。如果添加ILA内核(以前称为ChipScope),则无法满足时间要求。
我该怎么做才能缓解这种情况:-在每个ILA内核中增加了2个流水线级-在GTP收发器和逻辑之间增加了1个流水线级-使用重定时,重映射和广泛放置作为替代实施策略
此图像显示了正常的设计流程。ILA内核远离SATAController(SATAC)和8位CPU(SoFPGA),但是控制器仍然具有故障路径(这是唯一具有故障路径的区域)。
感觉Artix-7在某些区域没有路由资源。我如何获得表明这种怀疑的报告?
我还尝试了重新计时,重新映射和更广泛的放置策略。结果是这样的:
计时失败几乎是相同的...
PS该设计仅使用178个> 300 BlockRAM。我使用Xilinx ISE在其他设计中几乎使用了每个BlockRAM,但是我从未遇到过这种行为。
编辑:
3
在Altera Quartus中,有一个称为LogicLock的区域,它使您可以将逻辑分区或逻辑块约束到特定区域。我认为Xilinx会有类似的东西(尽管不确定它会被称为什么)。如果可以这样做,则应将ILA限制在逻辑之外的区域(以防止其替换重要的内容),并添加额外的流水线(不受该区域限制)以帮助安排时间。
—
汤姆·卡彭特
也可能是ILA的时钟域与任何其他时钟域之间的路径错误,导致路径错误,从而导致钳工付出额外的努力(导致对真实路径的优先级降低,导致计时失败)
—
Tom Carpenter
我在SignalTap上也遇到过类似的问题(再次与Altera等效,相当于ILA),原因是失败的路径是因为抽头逻辑希望将更灵敏的路径分开,希望更接近被抽头的信号。这主要发生在高BRAM密度的地方,因为SignalTap BRAM迫使其他BRAM进一步分开。一旦SignalTap被限制在一个临界填充程度较低的区域,问题就消失了。
—
汤姆·卡彭特
@TomCarpenter放置约束称为PBlock :)。据我所知,在SoFPGA或SATAC区域中没有ILA单元,它们在151个跟踪信号中的每一个上通过3个FF级被分离。探测的设计与ILA(150 MHz)在相同的时钟域中运行。所有路径均受约束(无约束,无故障时钟间路径)。提到的故障路径都在SATAC或ILA本身的同一时钟域中。我发现了一条路由拥塞报告,其中说约有54%的使用情况(水平和垂直)。请看我的阴性。松弛的热图增加了我的问题。
—
Paebbels,2016年
我发现了两个问题:首先,Artix-7比Kintex-7慢15%至50%。如果我将默认速度等级从-2更改为-3,一切都很好(安全余量为200 ps,而负余量为670 ps,因此,速度等级-3将6.600 ns的路径改善了近0.970 ns!似乎纯粹是由于跟踪信号的附加会导致较高的扇出,从而导致时序问题;此外,跟踪路由会通过8位CPU的100 MHz时钟域,这又会导致(5次运行中的1次) 。在时钟域问题,只要线/航线得来的其他线路造成的问题。
—
Paebbels