当前位置: 首页 > web >正文

CPU与vivado编译速度关系

目录

CPU物理内核与逻辑处理器

Vivado编译速度

设置线程(threads)

不同线程性能对比示例

Vivado日志thread信息

1. DRC 在实现流程中的线程使用

2. Place_design 在实现流程中的线程使用

3.route_design 在实现流程中的线程使用

4.为什么DRC能用20线程,而place和route只能用8线程

设置jobs

jobs与threads关键区别:

升级VIVADO版本也可能会加快编译速度


CPU物理内核与逻辑处理器

以我的计算机为例,CPU型号是13th Gen Intel Core i7-13700H

官方规格如下

参数
物理内核总数14(6P + 8E)
逻辑线程总数20(12P + 8E)
P-Core(性能核)6 核(支持超线程 → 12 线程)
E-Core(能效核)8 核(不支持超线程 → 8 线程)
基础频率P-Core: 2.4 GHz, E-Core: 1.8 GHz
最大睿频P-Core: 5.0 GHz, E-Core: 3.7 GHz

可以看到我有14个物理内核和20个逻辑处理器,通常情况一个逻辑处理器对应一个逻辑线程 

在电脑上可以通过以下几种方法查看自己电脑的物理内核和逻辑处理器信息

一、查看系统信息

二、查看任务管理器

三、打开cmd窗口,输入wmic cpu get NumberOfCores,NumberOfLogicalProcessors

四、通过设备管理器可以看到逻辑处理器个数

Vivado编译速度

设置线程(threads)

tcl指令中可以配置线程,输入get_param general.maxThreads可以查看当前vivado设置的线程数

输入set_param general.maxThreads xx可以配置当前vivado的线程数(最大为逻辑处理器数量),软件中最大可设置为32,但我的电脑中实际生效只会有20个(最大为逻辑处理器数量)

但并不是越大越好,Deepseek给出了原因,如下;

不同线程性能对比示例

Vivado日志thread信息

在综合的log文件中找不到thread线程关键词,在实现的log文件中可以找到

1. DRC 在实现流程中的线程使用

可以看到DRC阶段使用了20个线程,拉满了

在 Vivado 的日志中,DRC Task(Design Rule Check Task) 是 设计规则检查 任务,用于在 实现阶段(Implementation) 自动检查设计是否违反 FPGA 的物理或电气约束规则。以下是详细解析:

在 Vivado 的实现流程中,会多次出现 DRC(Design Rule Check)检测 ,

Vivado 会在 关键阶段自动触发 DRC,以确保设计在后续步骤中不会因物理规则违规而失败。你的日志中多次出现 DRC 是由于以下阶段触发的检查:

2. Place_design 在实现流程中的线程使用

可以看到DRC阶段使用了8个线程,又问了一下Deepseek。

3.route_design 在实现流程中的线程使用

可以看到DRC阶段也是使用了8个线程

4.为什么DRC能用20线程,而place和route只能用8线程

任务线程数原因
DRC20(逻辑线程)规则独立,无数据依赖
Placement8(受限)布局算法串行依赖
Routing8(受限)布线算法强依赖关键路径
  • DRC 检查的是 独立规则(如时钟、电源、I/O),可以完全并行化。

  • Place & Route 涉及 全局优化,必须按一定顺序计算,无法完全并行

5.生成bit流使用线程

这里也只用了8个线程。

设置jobs

launch_runs synth_1 -jobs 20

launch_runs impl_1 -jobs 20

launch_runs impl_1 -to_step write_bitstream -jobs 20

我本以为jobs越多,编译速度越快,但我理解错了,Deepseek解释如下

在 Vivado 中,-jobs 20 并不是直接设置线程数,而是控制 同时运行的独立任务(任务级并行),与 set_param general.maxThreads(线程级并行)有本质区别。以下是详细解析:

参数控制范围适用阶段示例
-jobs任务级并行(多个独立运行)launch_runs-jobs 4 → 同时跑 4 个 impl_*
set_param general.maxThreads线程级并行(单个任务内多核)综合/布局/布线/DRCset_param general.maxThreads 16
  • jobs与threads关键区别

    • -jobs 是 横向扩展(多个任务并行),适合多设计场景。

    • maxThreads 是 纵向加速(单个任务多核优化),适合单设计大任务。

升级VIVADO版本也可能会加快编译速度

http://www.xdnf.cn/news/7502.html

相关文章:

  • C++_AVL树
  • vue2.0 的计算属性
  • 人员管理2302版本
  • 特征筛选方法总结
  • frida 配置
  • Linux基础开发工具三(git,gdb/cgdb)
  • python next 函数
  • JVM核心配置参数详解与调优指南
  • JVM之GC常见的垃圾回收器
  • 深度学习————模型保存与部署
  • pkucpc2025 L:Game on Tree
  • python学习day2(未写完,明天继续补充)
  • 洛谷B3876—— [信息与未来 2015] 中间值
  • 为 Windows 和 Ubuntu 中设定代理服务器的详细方法
  • 4款好用的备忘录记事工具分享
  • Spring boot 集成 Knife4j
  • 网络I/O学习-poll(三)
  • 范围管理的实践策略与创新应用
  • 头歌之软件工程-数据设计
  • 433. 最小基因变化
  • AcWing 223. 阿九大战朱最学——扩展欧几里得算法
  • Javascript本地存储的方式有哪些?区别及应用场景?(含Deep Seek讲解)
  • [长城杯 2024]anote
  • 怎么利用JS根据坐标判断构成单个多边形是否合法
  • HarmonyOS Next应用分层架构下组件封装开发实践
  • 子网前缀长度
  • 【General Agent Benchmark】论文分享No.12:LLF-Bench
  • Python训练第三十天
  • 新一代请求库niquests使用入门
  • 告别Spring AI!我的Java轻量AI框架实践(支持多模型接入|注解式MCP架构|附开源地址)