Palladium 事务级实战 · 04 从本地仿真接入 Palladium

按官方分离编译流程导出 task、映射硬件并绑定软件 host,逐阶段保留证据。

先修知识完成 Palladium FIFO 六章基础课程,理解同步 FIFO、非阻塞赋值与 VALID/READY。

适用环境本地 Python 3 + Icarus Verilog;目标参考 WXE 24.05 ISR5 / Xcelium 配套环境。

验证状态13 项本地 RTL 场景、6 项测量校验测试通过;Cadence 编译、Palladium 映射与设备性能尚未实测。

本文目录先读版本边界与验证范围独立构建目录与完整参考配置启动、复位与 profiling 的使用时机故障练习:找不到 task 或绑定到错误层次

先读版本边界与验证范围

以下商业工具配置依据用户提供的 WXE 24.05 ISR5 文档整理,当前没有执行 Cadence 编译或设备运行。vlan、ixcom、Xcelium 的支持组合、许可证、资源分配与站点初始化应沿用所在团队已验证环境。不要将此脚本视为所有版本通用命令,也不要把本地 Icarus 的 PASS 当作映射成功;先运行站点最小示例再接入本工程。

生成的 xc_work 配置属于本次构建,必须和硬件快照一起使用。vlan硬件源文件ixcom映射 / 生成配置xmvlog + xmelabhost / 绑定xrun资源 / 执行先明确完成条件,再跨越软硬件边界
生成的 xc_work 配置属于本次构建,必须和硬件快照一起使用。(原创示意,非器件引脚图;窄屏可横向滑动)

独立构建目录与完整参考配置

脚本拒绝复用已存在的输出目录,避免旧快照与新 host 混合。硬件编译定义 IXCOM_UXE,启用 tb_export;host 单独定义 PALLADIUM_HOST,移除本地逐拍监视器。xmvlog 使用 ixcom 生成的库映射,xmelab 和 xrun 分别使用生成的参数文件;发生层次或绑定错误时应先核对这些产物,而不是手工拼接别的构建目录。

  1. 先执行 python3 test.py

    预期与判定:本地语义与 CSV 对照全部通过

  2. 初始化站点环境,再执行 bash scripts/site_reference.sh sim build-sim

    预期与判定:预期软件仿真成功;本网站尚未执行该商业工具步骤

  3. 执行 bash scripts/site_reference.sh tba build-tba

    预期与判定:预期依次生成 vlan / ixcom / host / elaborate / run 日志

  4. 逐一核对工具退出码与设备结果

    预期与判定:真实 TBA_PASS、CSV 和构建记录齐全才算目标验收

实验包中的实际源码;本地 Icarus 已验证。商业工具脚本为待目标环境验证的参考。

bash
#!/usr/bin/env bash
# WXE 24.05 reference integration, NOT tested with Cadence tools.
# Start after the authorized site environment is initialized.
# Usage: bash scripts/site_reference.sh sim|tba NEW_BUILD_DIR
set -euo pipefail
mode=${1:?sim or tba}; out=${2:?new build directory}
case "$mode" in sim|tba);; *) echo 'mode must be sim or tba' >&2; exit 2;; esac
root=$(cd "$(dirname "$0")/.." && pwd)
if [ -e "$out" ]; then echo 'BUILD_EXISTS: use a fresh directory' >&2; exit 2; fi
mkdir -p "$out"
cd "$out"
if [ "$mode" = sim ]; then
 xrun -64 -sv -top hw_top -top tb_host -c \
  +define+PALLADIUM_HOST \
  "$root/rtl/course_fifo.sv" "$root/rtl/batch_engine.sv" \
  "$root/rtl/fifo_link.sv" "$root/rtl/clk_gen.sv" \
  "$root/rtl/hw_top.sv" "$root/tb/tb_host.sv" 2>&1 | tee compile.log
 xrun -64 -R +N=64 +BATCH=16 2>&1 | tee run.log
else
 # Separate hardware compile from host compile; keep generated library mapping.
 vlan -64 -sv -define IXCOM_UXE \
  "$root/rtl/course_fifo.sv" "$root/rtl/batch_engine.sv" \
  "$root/rtl/fifo_link.sv" "$root/rtl/clk_gen.sv" \
  "$root/rtl/hw_top.sv" 2>&1 | tee vlan.log
 ixcom -64 -top hw_top +dut+hw_top -nccompile +iscDelay+clk_gen -ua 2>&1 | tee ixcom.log
 xmvlog -64 -sv -define PALLADIUM_HOST -cdslib xc_work/cds.lib -hdlvar xc_work/hdl.var \
  "$root/tb/tb_host.sv" 2>&1 | tee host-compile.log
 xmelab -64 -f xc_work/xmelab.f tb_host -access rwc 2>&1 | tee elaborate.log
 xrun -64 hw_top -f xc_work/xrun.f +N=64 +BATCH=16 +xcprof \
  -input "$root/scripts/run_tba.tcl" 2>&1 | tee run.log
fi

启动、复位与 profiling 的使用时机

本例通过硬件导出 task 完成复位,不依赖教程其他示例中的外部 deposit 层次路径。运行 Tcl 采用 xc on -tbrun 后 run,软件 host 调用 reset_hw 再提交请求。参考脚本的 +xcprof 用来诊断启动与交互开销;正式墙钟性能比较要另开关闭 profiling 的运行,保持两种模式的测试窗口一致,不能将诊断日志直接作为基准成绩。

工程契约与验收证据
项目规定 / 观察结果
本地预期TBA_PASS,64 字节,BATCH=16,4 次调用
目标预期相同功能输出;必须现场记录,本站没有设备日志
配置产物xc_work/cds.lib、hdl.var、xmelab.f、xrun.f
版本证据WXE / Xcelium 版本、硬件资源、源码与构建标识

实验包中的实际源码;本地 Icarus 已验证。商业工具脚本为待目标环境验证的参考。

tcl
# Reference only: verify site/tool compatibility and actual swap-in logs.
# Clock/reset live under hw_top; do not reuse the SA script's software run 40ns.
xc on -tbrun
run

故障练习:找不到 task 或绑定到错误层次

本地层次调用存在,不代表商业分区后接口必然可见。若 elaboration 报无法解析 hw_top.link 或导出 task,应检查硬件顶层、接口实例名、IXCOM_UXE 宏和生成配置的归属。不要凭错误文本猜测厂商错误编号;记录真实首条诊断及完整命令,以便按照安装版本的文档定位问题。

完成检查

  • 每个商业工具步骤的验证状态如实记录。
  • 硬件和软件使用同一构建生成的配置。
  • 实际设备 PASS、CSV 与日志都保留。

延伸阅读与来源

本文为黄河电子原创教学说明。产品命令与支持范围请以实际安装版本的官方文档为准。

继续阅读

硬件仿真

首次使用前的工程检查清单

准备版本、输入和模型,减少第一次编译的无效往返。

10 分钟
硬件仿真

如何选择 SA/ICE 及交互方式

根据测试环境所在位置与目标接口要求选择运行流程。

11 分钟
硬件仿真

完成最小设计的编译运行

把第一次平台运行拆为有检查点的五个阶段。

10 分钟