数字部分 1 环境讲解和 PC Ie Ip配置

PCIe SerDes 全流程实战

数字部分——环境讲解和PCIE IP配置


1 环境介绍

1.1 参考文档

  • Synopsys PCIe IP Controller User Guide(PCIe 控制器 IP 用户手册)
  • Synopsys PCIe IP EP Databook(Endpoint 手册,内容较用户手册更为详尽)
  • Synopsys PCIe IP EP Registers(寄存器手册,供驱动开发使用)
  • PCI Express Base Specification Revision 4.0, Version 1.0(PCIe 标准文档)
  • PCIe SVT Doc(PCIe VIP UVM 验证文档)
  • PCIe AMBA Doc(AMBA VIP UVM 验证文档)
  • Synopsys VCS 工具文档
  • Synopsys Verdi 工具文档

1.2 工具说明

  1. PyCharm 编辑器
    由于虚拟机环境为 CentOS 7,不便使用新版 VS Code,因此选用 PyCharm。
    安装 System Verilog Studio 插件后,新账号可免费试用 30 天。

    cd /home/jjt/Downloads/pycharm-2025.1.1.1/bin
    sudo ./pycharm
  2. VMware 虚拟机
    可从官网下载最新版,个人使用免费。

  3. Synopsys coreConsultant — 用于配置 Synopsys PCIe Controller IP

    export DESIGNWARE_HOME=/home/jjt/Downloads/pcie_iip
    /home/jjt/Downloads/coretools/T-2022.06/bin/coreConsultant
  4. Synopsys VCS — 高速 SV/Verilog 仿真调试平台,支持覆盖率分析与并行仿真

    vcs -l compil.log -lca -ntb_opts uvm-1.2 \
        +incdir+/home/jjt/pcie_gen6_cxl_proj/designware_home/pcie_dev/include/verilog \
        +incdir+/home/jjt/pcie_gen6_cxl_proj/designware_home/pcie_dev/include/sverilog \
        +incdir+/home/jjt/pcie_gen6_cxl_proj/designware_home/pcie_dev/src/verilog/vcs \
        +incdir+/home/jjt/pcie_gen6_cxl_proj/designware_home/pcie_dev/src/sverilog/vcs \
        -y /home/jjt/pcie_gen6_cxl_proj/designware_home/pcie_dev/src/verilog/vcs \
        -y /home/jjt/pcie_gen6_cxl_proj/designware_home/pcie_dev/src/sverilog/vcs \
        +define+UVM_PACKER_MAX_BYTES=8192 +define+SYNOPSYS_SV +define+SYNOPSYS_TIMESCALE \
        -Mupdate -sverilog -full64 -debug_access+all -top tb_top \
        +warn=RT-NCMUCS +warn=UII-L +warn=TFIPC -timescale=1ns/1ps \
        +libext+.v+.sv +define+RAM_INIT=0 \
        +incdir+../rtl +incdir+../rtl/src +incdir+../rtl/src/include \
        +incdir+../rtl/src/Phy/generic -f ../rtl/pcie_rtl.f \
        +incdir+.. +incdir+../tb ../tb/tb_top.sv
    
    ./simv -l sim.log +ntb_random_seed=0710070742 \
           +warn=noRT-NCMUCS +warn=noUII-L +warn=noTFIPC \
           +UVM_VERBOSITY=UVM_LOW +UVM_TESTNAME=pcie_mem_pkg_test \
           +UVM_TIMEOUT='8000,YES'
  5. Synopsys Verdi — SoC 设计调试及波形查看平台

    verdi -sv -nologo \
          +incdir+../rtl +incdir+../rtl/src +incdir+../rtl/src/include \
          +incdir+../rtl/src/Phy/generic -f ../rtl/pcie_rtl.f \
          +incdir+.. +incdir+../tb ../tb/tb_top.sv \
          -top tb_top -ssf pcie.fsdb &
  6. Synopsys waveutils — 波形格式转换工具,可配合 Python 等工具分析波形

    waveutils --tool=2vcd extractSignal.fsdb -o extractSignal.vcd
  7. Make / Makefile — 构建工具,避免每次手动输入长命令


2 Synopsys PCIe IP 配置

为缩短仿真调试时间并减少后续 FPGA 时序风险,本项目采用简化配置。

2.1 Design Prefix

为全部代码与配置增设统一前缀,对功能影响较小。

2.2 Synopsys PHY

若使用配套 Synopsys PHY,可启用;亦可选择外部 PHY。

2.3 Main Features

  • Core Type
    本项目定位为 Endpoint(EP):

    • device type = EP
    • PCIe EP Device Type = PCIE_EP
    • PCIe Modes Supported = Single Conventional PCIe
  • AXI Bridge:选择 AXI4

  • Embedded DMA:不使用

  • Multifunction:数量设为 1,其余选项不启用

2.4 PCIe Basic Features

  • PHY Type:Custom PHY
  • PHY / Core Config:PCIE GEN1 ×1,参考时钟 125 MHz
  • PIPE Spec:PIPE 4.3
  • PCIe 4.0 / 5.0 Features:本项目暂不涉及

2.5 Common Basic Features

  • PCIe Max Payload:选 256 B(项目无需大数据包)
  • Address Translation:不使用 PCIe IP 自带地址转换
  • Technology
    • FPGA 实现需联系 Synopsys 支持,ASIC 后端暂不使用
    • Use External RAMs:勾选,将 RAM 接口暴露至 Top Module,提升灵活性
    • Technology Speed:如目标为 FPGA,选择 slow
  • 其余未列项保持默认或不勾选

2.6 Basic AXI Config

  • Address / Data Width:32 bit(与 BAR0 一致)
  • AXI Clock:全部采用 PHY 提供的 125 MHz,禁用异步时钟域
  • AXI DBI:不使用
  • AXI Master IDs:保留默认 32;注意与 AXI Slave 侧匹配
  • 未提及项保持默认或取消勾选

2.7 Device-Wide Non-PCIe Config

多数配置无需启用;关闭 ASPM 以降低调试复杂度。

2.8 Advanced AXI Config

一般保持默认;与 AXI Slave 连接时须确保参数一致。

2.9 Device-Wide PCIe Features

  • MSI / MSI-X
    本项目关注高速串行通信本身,不涉及中断;故不启用。
  • PCIe Capability
    大部分选项无需开启;关闭 ASPM。
  • VC(Virtual Channel):不使用
  • AtomicOp:不使用
  • 其他未列项保持默认或不勾选

2.10 Per-Function PCIe 与 BAR 配置

  • Advanced Error Register:ECRC 可开启亦可关闭;需与 VIP 保持一致
  • Power Management:不使用低功耗特性
  • PCI Register Configuration
    • Device ID / Vendor ID 等影响 Linux 驱动匹配,保持默认即可
    • Include ROM BAR:不勾选
  • BAR Setup(仅使用 BAR0)
    • Include BAR_0:勾选
    • BAR0 Type:Memory
    • BAR0 Bit Size:32-bit
    • BAR0 Sizing Scheme:Fixed Mask
    • BAR0 Mask:0x3fff(64 KB,避免过大)
    • Specify Target Interface For BAR0:Target_1(关键;Target_0 走 LBC,仅用于配置)
    • VF Sizing Scheme:Fixed Mask
    • 其余 BAR 不启用

2.11 Advanced RAM Config

保持默认;Latency 设为 1 cycle。综合到 FPGA 时将自动映射至 BRAM。

2.12 Advanced PHY Config

保持默认设置。

2.13 其余未列配置

可全部保留默认或不勾选。

2.14 Create Gate-Level Netlist

后续将在 FPGA 上与 Xilinx PCIe PHY 联合仿真,不涉及 ASIC 后端。

2.15 代码生成

点击 Apply 后,配置工具将在项目 src 目录生成所需代码。

PCIe IP配置和编辑器截图

本地图片 本地图片