目录
芯片集成层次
Core
>主要包括AHB,APB总线以及总线上的各个模块。
Top
> CPU,clk rst产生模块,主要包括Core,pinmux模块。Macro wrapper,
Top Pad
>主要包括芯片的所有PAD,VR 以及输出buffer .
IP 集成内容:
1. IP 核的选型与配置
选择合适的 IP 模块:根据设计需求选择功能匹配的 IP 核,例如:DDR 控制器、PCIe 接口、以太网 MAC、DSP 模块、视频编解码器等。
配置参数:根据具体应用场景对 IP 模块进行参数化配置,例如数据宽度、频率、接口类型、功能模式等。
✅ 示例:Xilinx 的 Vivado 或 Intel 的 Quartus 提供了 IP Catalog 工具,用于选择和配置 IP 核。
2. IP 模块的例化(Instantiation)
将配置好的 IP 模块通过 HDL(Verilog/VHDL)或工具自动生成的代码例化到顶层设计中。
确保端口连接正确,时钟、复位、数据总线等信号一一对应。
3. 接口时序设计与连接
IP 模块通常有标准接口(如 AXI、APB、AHB、Native 接口等),需要正确连接到系统的主控模块或其它 IP 模块。
需要进行跨时钟域处理,比如 FIFO、握手信号、异步复位同步释放等。
4.时钟与复位管理
不同 IP 模块可能需要不同频率、不同相位的时钟源,需合理使用 PLL、Clock Mux、BUFG 等资源进行时钟分配。
复位信号需要统一管理,避免异步复位导致的问题。
5. 约束文件设置
添加时序约束(SDC 或 XDC 文件)以确保工具能够正确分析 IP 模块与时钟域之间的时序路径。
对某些高速接口(如 DDR、SerDes)还需添加物理约束(如引脚分配、IO 标准、驱动能力等)。
6.仿真与验证
使用仿真工具(如 ModelSim、VCS)对集成后的系统进行功能仿真,验证 IP 模块是否正常工作。
有些 IP 提供了仿真模型(如行为模型、时序模型),需正确加载。
7.综合与实现
将整个设计(含 IP 模块)进行综合、布局布线,确保满足时序要求。
查看综合报告、时序分析报告,确认 IP 模块的资源使用和性能指标是否符合预期。
8.调试与优化
在硬件上调试 IP 模块的工作状态,使用在线调试工具(如 Xilinx 的 ILA、Intel 的 SignalTap)。
根据实际运行情况优化配置参数或调整系统架构。
9.文档与版本管理
记录 IP 模块的版本、配置参数、接口定义等信息,便于后续维护和升级。
使用版本控制系统(如 Git)管理 IP 集成过程中的各种配置文件和代码。
IP Catalog 包含哪些内容?
IP Catalog(IP目录)是Intel(原Altera)和Xilinx等FPGA开发工具中的核心功能模块,用于管理、定制和集成各类IP核(知识产权核)。
常见的 IP Catalog 包含哪些内容?
类别 | 示例 IP 模块 |
---|---|
处理器类 | RISC-V Core、ARM Cortex-M 系列、MIPS Core |
接口类 | UART、SPI、I2C、USB、PCIe、Ethernet MAC |
存储类 | FIFO、RAM Controller、ROM Generator、Cache Controller |
数学运算类 | 整数乘法器、浮点运算单元(FPU)、FFT、CRC 计算器 |
安全类 | AES 加密、SHA 哈希、RSA 加速器 |
定时与控制类 | 定时器(Timer)、看门狗(Watchdog)、PWM 控制器 |
总线类 | AHB、APB、AXI、Wishbone 总线控制器 |
图形与视频类 | VGA 控制器、HDMI 接口、GPU 子系统 |
典型应用场景
- 快速集成:通过IP Catalog直接添加标准IP(如DDR控制器、PCIe接口),减少手动编码工作量。
🧩 cluster
芯片 cluster” 通常是指在 SoC(System on Chip) 或 多核处理器架构 中,多个处理单元(如 CPU、GPU 核心、NPU 等)被组织在一起,共享某些资源或协同工作的一个逻辑或物理模块组。它是现代高性能计算芯片中用于提升能效比和并行处理能力的关键设计方式。
Cluster 的定义
是一组紧密耦合的处理核心(Core),它们通常:
共享 L2/L3 缓存
运行在相同的电压/频率域(Voltage/Frequency Domain)
使用统一的互联结构(如总线、NoC 或 Crossbar)
可以作为一个整体进行电源管理(如关闭整个 cluster)
Cluster 的典型应用场景:(1)CPU 架构中,比如一个 cluster 包含高性能大核(如 Cortex-A78),另一个 cluster 包含高效能小核(如 Cortex-A55)。(2) GPU 内部将多个流处理器(Shader Cores)划分为多个 cluster,每个 cluster 处理一部分图形或计算任务。
Cluster 优点:功耗控制灵活:可以单独关闭某个 cluster 来节省能耗。可扩展性强:便于设计大规模多核系统。提高吞吐效率:通过共享缓存和互联机制减少访问延迟。异构计算支持:允许不同类型 cluster 并存(如 CPU + GPU + NPU)。
❌ 缺点:软件调度复杂:需要操作系统和调度器智能地分配任务到合适的 cluster。缓存一致性挑战:多个 cluster 之间如何维护缓存一致性是一个难题。设计成本增加:互联网络(NoC)、仲裁机制等带来额外的硬件开销。
lint 清理
在 RTL(Register Transfer Level)代码开发中,Lint 工具用于检查代码中的潜在问题,如语法错误、CDC(Clock Domain Crossing)问题、同步问题、未连接信号等。清理 Lint 报告通常涉及修改 RTL 代码或添加适当的约束/注释来抑制误报。
早期检查:在 RTL 编码阶段定期运行 Lint,避免后期大规模修复。团队中,制定统一的 Lint 规则(如 STARC
或 ASIC
标准)。常见的 Lint 工具 Synopsys SpyGlass(业界主流)
1. Lint 清理步骤
(1) 运行 Lint 工具后,通常会生成报告(如 spyglass.log
或 lint_results.rpt
),分析 Lint 报告重点关注:
Error(必须修复)Warning(可能需要修复) Info(可忽略或选择性修复)
(2) 修复常见问题
① 未驱动信号(Undriven Signal)
② 多驱动冲突(Multiple Driver)
③ 时钟域交叉(CDC, Clock Domain Crossing)
④ 组合逻辑环路(Combinational Loop)
⑤ 未使用的信号/变量(Unused Signal)
(3) 抑制误报(Waiver)
某些 Lint 警告可能是误报(如 IP 核的特定设计),可以通过以下方式抑制:
① SpyGlass 抑制方法
在 RTL 中添加 // spyglass disable_block <规则>
③ Tcl 约束文件(用于 SpyGlass)
在 spyglass.sgdc
中添加:
(4) 重新运行 Lint 验证
修复后重新运行 Lint,确保所有 Error 被清除:
SpyGlass 工具
Spyglass·软件运行流程主要分为三阶段:读入设计文件 add files,指定检查规则goal setup,分析检查结果。
1、先启动:
bash-4.2$ spyglass &
2、然后 add .v files, 和 导入 约束文件(内容是 top 模块、模块的clock、模块的reset)
3、 设置选项
4、read design。 运行成功后,会显示RTL 结构。然后再设置 运行目标 goal setup
5、勾选运行目标,常选CDC。 然后run goals。 根据界面下端的输出,修改RTL。
6、工程可以保存为 .prj,内容是Tcl 格式 = 操作命令list