2. 开发环境搭建与首个工程创建

要让 CertusPro-NX 真正跑起来,第一步不是写代码,而是把工具链、授权、器件型号和约束文件这四件事对齐。本节以 Lattice Radiant 为工具,以一款典型 CertusPro-NX 器件(示例选用 LFCPNX-100,FcCSP 封装,速度等级 8)为对象,完整走一遍从安装到首次综合实现的过程。所有参数均为教学示例,实际项目请以官方数据手册和板卡原理图为准。

一、安装 Radiant 与 License 配置

Radiant 是 Lattice 面向 Nexus 与 CertusPro-NX 系列的官方集成开发环境,安装包通常为 Windows/Linux 版本,体积在数 GB 级别。安装时建议选择默认路径,避免中文目录和空格,否则后续综合脚本调用容易出现路径解析问题。安装完成后,首次启动会弹出 License 配置向导。

License 有三种常见形态:Node-Locked(绑定网卡 MAC)、Floating(服务器分发)和订阅式(Lattice 账户在线激活)。对于个人学习或单机开发,最常用的是 Node-Locked。配置时需要提供主机 ID(即网卡物理地址),在 Lattice 官网生成 license.dat 后,通过 Help → License 导入。判断 License 是否生效,可以看启动界面是否显示“Licensed”状态,或在命令行执行 radiant -version 查看授权信息。若提示“License not found”,优先检查环境变量 LM_LICENSE_FILE 是否指向正确的 .dat 文件。

建议把 license.dat 放在固定目录(如 C:\Lattice\license),不要放在桌面或临时文件夹,避免系统清理后失效。

二、器件选型与新建工程

CertusPro-NX 家族包含多个密度等级,从 LFCPNX-50 到 LFCPNX-100 不等,封装有 QFN、FcCSP、caBGA 等。选型时主要看三点:逻辑单元数量、封装引脚数和可用 SerDes/PCIe 资源。例如 LFCPNX-100 提供约 100K 逻辑单元,适合中等规模接口桥接和图像处理;若只是做简单的 GPIO 扩展,LFCPNX-50 更经济。

新建工程时,Radiant 会要求填写工程名、路径、器件型号、封装、速度等级和综合工具。这里的关键是器件型号必须与板卡实际焊接的芯片一致,否则引脚约束会报错。工程创建后,目录结构会自动生成 src、constraint、impl 等文件夹。建议在 src 下新建一个顶层 Verilog 文件,例如 top.v,先写一个最简单的 LED 闪烁逻辑作为验证。

module top(
    input  wire clk_50m,
    input  wire rst_n,
    output reg  led
);
    reg [24:0] cnt;
    always @(posedge clk_50m or negedge rst_n) begin
        if (!rst_n) begin
            cnt <= 25'd0;
            led <= 1'b0;
        end else if (cnt == 25'd24_999_999) begin
            cnt <= 25'd0;
            led <= ~led;
        end else begin
            cnt <= cnt + 1'b1;
        end
    end
endmodule

这段代码用 50 MHz 时钟分频,每 0.5 秒翻转一次 LED,便于肉眼观察。注意复位信号低有效,与大多数开发板按键一致。

三、引脚约束与首次综合实现

引脚约束是新手最容易出错的地方。Radiant 使用 .lpf 文件(Lattice Preference File)描述引脚位置、电平和时序。例如把 clk_50m 绑定到引脚 A1,led 绑定到 B2,rst_n 绑定到 C3,写法如下:

ldc_set_location -site {A1} [get_ports clk_50m]
ldc_set_location -site {B2} [get_ports led]
ldc_set_location -site {C3} [get_ports rst_n]
ldc_set_port -iobuf {IO_TYPE=LVCMOS33} [get_ports {clk_50m led rst_n}]

其中 LVCMOS33 表示 3.3V 电平标准,必须与板卡供电一致。若引脚分配错误,综合阶段可能通过,但实现阶段会报“IO placement conflict”。

完成约束后,依次执行综合(Synthesis)和实现(Place & Route)。综合把 Verilog 映射为门级网表,实现则完成布局布线并生成比特流。首次运行建议勾选“Generate Bitstream”和“Timing Report”。判断是否成功,看三个指标:综合无 error、实现无 critical warning、时序报告中建立时间(Setup)和保持时间(Hold)均为正裕量。若时序为负,可以尝试降低时钟频率或优化逻辑层级。

CertusPro-NX 首个工程创建与首次实现流程 ① 安装 Radiant 默认路径 / 无中文 版本与器件匹配 ② License 配置 Node-Locked / MAC 导入 license.dat ③ 器件选型 LFCPNX-100 FcCSP / 速度等级 8 ④ 新建工程 top.v LED 闪烁验证 ⑤ 引脚约束 (.lpf) clk_50m → A1 led → B2 / rst_n → C3 IO_TYPE = LVCMOS33 ⑥ 综合 Synthesis Verilog → 门级网表 检查 error / warning 资源占用报告 ⑦ 实现 P&R 布局布线 生成比特流 时序报告 结果判读与常见问题 ✓ 成功标志 无 error / Setup & Hold 正裕量 ✗ 常见报错 IO conflict / License not found → 排查方向 核对原理图 / 检查环境变量