集创赛报了RISC-V赛道,用安路EG4S20搭了PicoRV32软核,CoreMark跑出来只有1.8,被队友吐槽还不如STM32。软核主频设的50MHz,AXI4-Lite挂了一堆外设,是不是总线仲裁把周期全吃掉了?有没有实测过国产FPGA上RISC-V跑分的同学,指点下主频和总线该怎么权衡?
2026年FPGA大赛用国产安路EG4做RISC-V软核,跑分比STM32H7还低,是软核主频没拉满还是AXI总线拖后腿?
4 个回答

先说结论:50MHz 下 CoreMark 1.8 基本正常,不用怀疑人生。PicoRV32 本身是面积优先的设计,IPC 大概 0.7 到 0.9,CoreMark/MHz 常见在 0.03 到 0.05 这个量级,你自己乘一下 50MHz 就知道还能有多少。所以第一刀不是总线,是主频和核的选型。
EG4S20 这块片子把 PicoRV32 综合到 100MHz 以上通常是有希望的,前提是别把外设全塞进同一条紧耦合路径、时序约束写清楚、别让综合器随便插大扇出。你先把主频往 75、100 试着跑,看时序余量。如果 100MHz 能收敛,跑分立刻翻倍,这比调总线划算得多。
总线那块,AXI4-Lite 确实吃周期,每次读写都是请求加响应的往返握手,挂在数据通路上很亏。方向是数据走 AXI4-Stream 或直接接核的本地总线,慢速外设降到 APB。先做这两件事,再谈别的。你现在用的是官方例程还是自己搭的 SoC?

50MHz 跑 CoreMark 1.8,先别急着骂总线,PicoRV32 本身就是面积优先的核,CoreMark/MHz 只有 0.03 到 0.05 这个量级,乘上 50MHz 差不多就是这个数,属于正常发挥。EG4S20 这片子把软核推到 100MHz 一般是能收敛的,前提是时序约束写清楚、别让综合器乱插高扇出逻辑。所以最小可行路径是先把主频往 75、100 试,看时序余量,能收敛分数直接翻倍,比调总线划算得多。总线那块 AXI4-Lite 每拍都要请求响应握手,挂数据通路确实亏,外设建议挪到 APB 上,数据流走 AXI4-Stream。你现在综合报告里 WNS 还剩多少?

先对齐一下场景:你是集创赛 RISC-V 赛道,板子是安路 EG4S20,软核 PicoRV32,50MHz 跑 CoreMark 1.8。这个分数其实不算翻车,PicoRV32 是面积优先的核,CoreMark/MHz 大概就 0.03 到 0.05,乘 50MHz 差不多就是你现在的数。所以别一上来就怀疑总线仲裁,第一步应该先把主频往上顶。EG4S20 这个规模把 PicoRV32 综合到 100MHz 一般是能收敛的,关键是时序约束写清楚、别让综合器乱插高扇出逻辑,跑个 75、100 试试看时序余量。如果 100MHz 能收敛,分数直接翻倍,这比你去调总线划算太多。总线那块,AXI4-Lite 每拍都是请求加响应的往返握手,挂数据通路确实亏;外设建议挪到 APB,数据流用 AXI4-Stream。但这是第二刀。你现在综合报告里 WNS 还剩多少?先把主频拉上去再看总线。

先说个可能不太中听的话:CoreMark 1.8 这个数,就算你把总线调到极致,也追不上 STM32H7,因为你们比的根本不是一个东西。H7 是几百 MHz 的硬核 Cortex-M7,带分支预测、双发射、指令数据缓存;PicoRV32 是个面积优先的小核,连流水线都做得很克制。所以别把目标定成「跑赢 H7」,那只会让队友一直吐槽。真正该问的是:在 EG4S20 这个资源约束下,你的软核能跑到多少 MHz,总线有没有明显浪费。
具体取舍我建议这么排。第一,主频优先,PicoRV32 拉到 100MHz 以上通常有希望,先把时序约束收紧、看看 WNS 和 TNS,能收敛分数立刻翻倍,这是性价比最高的一刀。第二,总线再优化,AXI4-Lite 的请求响应往返握手确实吃周期,如果外设全挂同一条 AXI4-Lite 上,仲裁和等待状态会把有效带宽压得很低。常见做法是外设挪到 APB,数据通路走 AXI4-Stream,或者干脆给指令和数据各留一条通道。
但这里有个风险要提醒你:换了总线结构之后,如果软件侧的地址映射、驱动、中断处理没跟着改,很容易出现「跑分高了但功能跑不通」的情况,答辩时更尴尬。所以建议先把主频顶上去,功能验证过了,再动总线,别两件事同时改。另外一个小例子:有队伍把外设从 AXI4-Lite 挪到 APB 之后,CoreMark 提升其实有限,真正拉分的是主频从 50 提到 100。所以顺序别搞反。你们现在综合出来的资源占用和时序余量大概是什么情况?这个决定了还有多少折腾空间。
发表回答
登录后可在本页底部提交回答