在大规模芯片验证项目中,仿真时间往往是瓶颈。Xcelium 提供了 Multi-Core(多核)仿真引擎,能够自动将设计拆分成独立部分,分配到服务器多核并行运行,从而大幅缩短仿真时长。本文整理了如何在实际项目中配置并使用 8 核心进行仿真的具体方法。


核心概念:ACC 与 NACC 区域

Xcelium Multi-Core 并不是把整个仿真都并行化,而是将设计分为两类区域:

  • ACC(加速区域):RTL 代码、门级代码等高活跃部分,在多核上并行执行,能获得显著加速。
  • NACC(非加速区域):SystemVerilog 行为代码(通常是 testbench),仍在单核上串行运行。

因此,Multi-Core 的加速效果主要取决于 DUT(被测设计)在仿真耗时中的占比。如果 testbench 本身就是瓶颈,多核加速收益会非常有限。


License 要求

运行 Xcelium Multi-Core 需要两个 license:

License 说明
X300 – Xcelium_Single_Core 基础仿真 license
X500 – Xcelium_MultiCore_App Multi-Core 加速 license

License 在仿真启动时检出,每次仿真检出一个,不按核心数计费。


快速上手:单步运行指定 8 核

最简单的用法,一条命令直接跑:

1
xrun -mce -mce_sim_thread_count 8 -f run.f -mce_top tb.dut
  • -mce:开启 Multi-Core 模式
  • -mce_sim_thread_count 8:仿真阶段使用 8 个线程
  • -mce_top tb.dut:指定顶层 DUT 模块(20.04 版本之前必须指定)

分别控制 Build 和 Simulation 的核数

编译(build)阶段和仿真(simulation)阶段可以独立配置核数:

1
2
3
4
xrun -mce \
  -mce_build_thread_count 8 \
  -mce_sim_thread_count 8 \
  -f run.f -mce_top tb.dut

注意:切勿使用 -mce_build_thread_count 1,这会把 build 强制限定在单核,导致编译性能严重下降。


多步编译流程(compile + elaborate + run)

如果项目使用 xrun -compile / -elaborate / -R 三步流程,各阶段分别配置如下:

1
2
3
4
5
6
7
8
9
10
11
# Step 1: 编译设计文件
xrun -compile -mce -64 -mce_build_thread_count 8 -f design_run.f -work work

# Step 2: 编译 testbench
xrun -compile -mce -64 -mce_build_thread_count 8 -f testbench.f -work work

# Step 3: Elaborate
xrun -elaborate -mce -64 -mce_build_thread_count 8 -snapshot project_snap -work work

# Step 4: 运行仿真
xrun -R -snapshot project_snap -mce_sim_thread_count 8

如果设计文件和 testbench 编译到不同的 work library,Elaborate 阶段需要通过 -work 指向包含 DUT 的那个库:

1
xrun -elaborate -mce -64 -mce_build_thread_count 8 -snapshot project_snap -work design_work

通过 LSF 队列系统使用 8 核(MCL 模式)

在有资源管理系统(如 LSF)的环境中,推荐使用 Multi-Core Lite(MCL) 模式。MCL 会配合资源管理器预先在同一节点上保留指定数量的核心,然后充分利用这些核心:

1
bsub -n 8 xrun -mcl 8 [other_options]
  • bsub -n 8:向 LSF 申请 8 个 slot
  • -mcl 8:告知 Xcelium 使用 8 核

重要bsub -n-mcl 的数字必须一致。如果 LSF 实际分配的核数少于 -mcl 指定的数量,进程可能被队列系统异常终止。


常用选项速查表

选项 作用
-mce 启用 Multi-Core 仿真
-mce_sim_thread_count <N> 仿真阶段使用 N 个线程
-mce_build_thread_count <N> Build 阶段使用 N 个线程
-mce_sim_cpu_configuration <config> 细粒度仿真 CPU 拓扑配置
-mce_build_cpu_configuration <config> 细粒度 Build CPU 拓扑配置
-mcl [N] Multi-Core Lite 模式(不指定 N 则用满整个 socket)
-mce_top <module> 指定要加速的顶层 DUT 模块
-mce_acc_estimation <file> 评估设计的 Multi-Core 加速潜力
-mce_pie 仿真结束后生成性能报告

在运行前评估加速潜力

如果不确定 Multi-Core 对当前设计是否有收益,可以先用 -mce_acc_estimation 做评估,无需等到真正跑完仿真:

1
xrun -mce_acc_estimation dut_prof.txt -f run.f

dut_prof.txt 中填写 DUT 模块信息,格式为 dut:lib.cell:view,例如:

1
dut:worklib.myDut:v

不支持的场景

以下功能目前不支持与 Multi-Core 同时使用:

  • AMS(混信号仿真)
  • Coverage 使能的设计
  • 低功耗仿真(UPF)
  • X 传播(X-Propagation)
  • 故障仿真(Fault Simulation)

小结

要在 Xcelium 中使用 8 核仿真,核心就是两个选项:

1
2
-mce_build_thread_count 8   # build 阶段 8 核
-mce_sim_thread_count 8     # sim 阶段 8 核

配合 LSF 队列则用 bsub -n 8 xrun -mcl 8。加速效果取决于 DUT 在仿真 profile 中的占比,建议先用 -mce_acc_estimation 评估后再大规模推广。