0%

CPU时序校准与延迟优化

分析CPU和外设之间的时序关系,探讨频率差异对仿真结果的影响,以及如何通过校准系数来更准确地模拟实际芯片的性能表现。

为什么要校准

事实上, 之前的ysyxSoC环境是假设处理器和各种外设运行在同一频率下: verilator仿真的一个周期, 既是处理器中的一个周期, 也是外设中的一个周期. 但实际上并非如此: 受电气特性的影响, 外设通常只能运行在低频率, 例如SDRAM颗粒通常只能运行在100MHz左右, 过高的频率会导致时序违例, 使得SDRAM颗粒无法正确工作; 但另一方面, 使用先进工艺的处理器通常能够运行在更高的频率, 例如, yzh某个版本的多周期NPC在yosys-sta项目默认提供的nangate45工艺下频率达到约1.2GHz. 在上述配置下, SDRAM控制器中经过1个周期, NPC应该经过12个周期, 但verilator感知不到两者的频率差异, 仍然按照两者频率相同的假设进行仿真, 使得仿真结果比真实芯片乐观很多, 从而也可能会使得一些优化措施无法在真实芯片中取得预期的效果.

我的仿真频率

Endpoint Clock Group Delay Type Path Delay Path Required CPPR Slack Freq(MHz)
clint/1870:D core_clock max 1.984r 9.969 0.000 7.985 496.197
clint/1870:D core_clock max 1.966f 9.961 0.000 7.995 498.797
clint/1869:D core_clock max 1.959f 9.961 0.000 8.001 500.367
exu/u_alu/2689:D core_clock min 0.079f 0.002 0.000 0.078 NA
exu/u_alu/2689:D core_clock min 0.086r 0.006 0.000 0.080 NA
registerfile/7836:D core_clock min 0.114f 0.002 0.000 0.112 NA

校准

我的校准系数是5