3. Libero SoC开发环境与工程创建

Libero SoC 是 Microchip 为 PolarFire、PolarFire SoC、RTG4、IGLOO2 等 FPGA 器件提供的完整设计套件。它把 RTL 综合、约束管理、布局布线、时序分析、功耗估算、编程文件生成和在线调试整合在同一个图形化工程环境中,并通过 SmartDesign、SmartDebug、Identify 等工具覆盖从设计输入到板级验证的主要环节。对 PolarFire 系统级产品开发而言,Libero SoC 既是工程入口,也是后续与 SoftConsole、PolarFire SoC Configuration Wizard、FlashPro 工具衔接的枢纽。

3.1 工具链安装与目录结构

Libero SoC 的安装包通常以 Web Installer 形式提供,安装时可以选择完整安装或按器件系列安装。对于 PolarFire SoC 项目,建议至少勾选 PolarFire SoC、PolarFire、Common Files 以及 ModelSim ME 或 QuestaSim 仿真组件。安装路径中不要包含中文、空格或过长目录,例如推荐使用 C:\Microchip\Libero_SoC_v2024.1 或 /home/user/Microchip/Libero_SoC_v2024.1。安装完成后,目录中会形成几个关键子目录:Designer 存放布局布线引擎,Synthesis 存放 Synplify Pro 综合工具,ModelSim 存放仿真器,SmartDesign 存放 IP 集成环境,FlashPro 存放编程工具,License 则用于管理授权文件。

安装结束后,建议先运行 Libero SoC 启动脚本,确认工具能正常打开。如果启动时报“License not found”或“No valid license”,说明授权尚未配置,需要进入下一节处理。

3.2 License 配置与常见问题

Libero SoC 的 License 分为免费版(Silver)和付费版(Gold/Platinum)。免费版对器件规模和部分 IP 有限制,但足以完成 PolarFire SoC 的基础工程创建、综合和布局布线验证。License 文件通常由 Microchip 官网的 Licensing 页面生成,绑定网卡 MAC 地址或 USB Dongle。配置时,在 Libero 菜单中选择 Help > License Management,将 .dat 或 .lic 文件加载进去,或者设置环境变量 LM_LICENSE_FILE 指向授权文件路径。

常见问题包括:License 过期、MAC 地址不匹配、环境变量被其他工具覆盖。排查时可以先在命令行执行 lmutil lmdiag 查看授权状态,再检查 LM_LICENSE_FILE 与 MICROCHIP_LICENSE_FILE 是否冲突。如果使用浮动 License,还需要确认 License Server 的 lmgrd 进程已启动,且客户端能访问 27000@server 端口。

3.3 新建工程与器件配置

启动 Libero 后,通过 Project > New Project 进入新建工程向导。向导会依次要求填写工程名称、工程位置、器件系列、器件型号、封装、速度等级和温度等级。以 PolarFire SoC 为例,若目标器件为 MPFS250T,则器件系列选择 PolarFire SoC,型号选择 MPFS250T,封装可选 FCVG484,速度等级 -1,温度等级根据应用选择 EXT 或 IND。这些参数一旦确定,后续布局布线的时序模型和引脚资源都会随之变化,因此必须与硬件原理图保持一致。

工程创建完成后,Libero 会自动生成 .prj 工程文件、.pdc 约束文件、.sdc 时序约束文件以及 component 目录。此时可以在 Design Flow 窗口中看到完整的设计流程导航,包括 Create Design、Constrain、Implement、Verify、Program 等阶段。

Libero SoC 工程创建与设计流程导航 以 PolarFire SoC MPFS250T 为例 ① New Project 工程名 / 路径 器件系列 / 型号 / 封装 ② Create Design HDL / SmartDesign IP 集成 / 顶层模块 ③ Constrain .pdc 引脚约束 .sdc 时序约束 ④ Implement 综合 / 布局布线 时序分析 ⑤ Verify 仿真 / SmartDebug 时序报告检查 ⑥ Program 生成 .job / .stp FlashPro 烧录 License 配置 Help > License Management LM_LICENSE_FILE 环境变量 lmutil lmdiag 诊断 工具链安装 Web Installer 选择器件 路径避免中文/空格 Designer / Synthesis / ModelSim 授权就绪 安装完成 工程关键文件: .prj(工程文件) .pdc(物理约束) .sdc(时序约束) .job(编程文件) .stp(STAPL 文件) 器件参数:MPFS250T / FCVG484 / -1 / EXT 或 IND —— 必须与硬件原理图一致

3.4 设计流程导航与关键检查点

Libero 的 Design Flow 窗口把整个开发过程划分为六个阶段:New Project、Create Design、Constrain、Implement、Verify、Program。每个阶段都有对应的操作按钮和状态指示。工程创建后,首先进入 Create Design,可以选择 HDL 源码、SmartDesign 原理图或 IP 核作为设计输入。对于 PolarFire SoC,通常还需要通过 SmartDesign 集成 MSS(Microprocessor Subsystem)、DDR 控制器、PCIe 等硬核 IP,并配置时钟和复位网络。

Constrain 阶段需要完成两类约束:物理约束 .pdc 用于引脚分配和 IO 标准设置,时序约束 .sdc 用于时钟定义、输入输出延迟和虚假路径设置。以 100 MHz 系统时钟为例,在 .sdc 中应写入 create_clock -name sys_clk -period 10 [get_ports sys_clk],其中周期 10 ns 对应 100 MHz。如果时钟来自 MSS PLL,则需要根据 PLL 配置计算实际输出频率后再约束。

Implement 阶段依次执行综合(Synthesis)、布局(Place)、布线(Route)和时序分析(Timing Analysis)。综合完成后应检查 Synplify 日志中的警告和错误,尤其是未约束端口、组合环路和推断出的锁存器。布局布线完成后,打开 Timing Analyzer 查看建立时间(Setup)和保持时间(Hold)是否满足。若出现负 slack,需要回到约束或 RTL 修改,而不是盲目重新布线。

Verify 阶段可以使用 ModelSim 进行功能仿真,也可以使用 SmartDebug 通过 JTAG 对实际器件进行在线调试。SmartDebug 支持实时读取内部信号、修改寄存器值,适合排查上板后与仿真不一致的问题。最后 Program 阶段生成 .job 或 .stp 文件,通过 FlashPro 烧录到 PolarFire SoC 的 SPI Flash 或 eNVM 中。

实践建议:新建工程后先不要急于添加复杂逻辑,建议用一个简单的 LED 闪烁或计数器工程走通全流程,确认 License、综合、布局布线、时序分析和烧录都能正常完成,再逐步加入 MSS、DDR 和高速接口 IP。这样可以把工具环境问题与设计问题分开定位。
注意:器件型号、封装、速度等级和温度等级在工程创建后虽然可以修改,但修改后必须重新执行综合和布局布线,且引脚约束可能需要重新分配。建议在项目初期就与硬件工程师确认原理图上的完整器件编码,避免后期返工。

3.5 工程创建检查清单

检查项 预期状态 判断依据
Libero 启动 正常打开,无 License 报错 Help > License Management 显示有效授权
器件参数 与原理图一致 MPFS250T / FCVG484 / -1 / EXT
工程文件生成 .prj、.pdc、.sdc 存在 工程目录下可见对应文件
综合结果 无 Error,Warning 已评估 Synplify 日志末尾显示 Synthesis completed
时序收敛 Setup/Hold slack ≥ 0 Timing Analyzer 报告无负 slack 路径
编程文件 .job 或 .stp 生成成功 Program 阶段显示 Generate completed