0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

有什么方法可以减少Quartus II的编译时间吗?

电子工程师 来源:独孤琅嬛 作者:独孤琅嬛 2021-05-18 10:27 次阅读

对于减少Quartus II的编译时间的方法,可从三个角度进行考虑。

第一,从开发所使用的计算机入手,选择合适的CPU操作系统并进行合理的设置从而提高编译速度;

第二,从Quartus II软件入手,对编译相关的选项进行合理设置,从而提高编译效率;

第三,针对具体的工程,采用增量编译的方法,合理地进行分区和设置,从而减少编译时间。

第一种方法是网友在实际的使用过程中摸索出来的,第二种和第三种方法在Quartus II的开发手册中都有迹可循。

下面进行具体的介绍:

一、开发所使用的计算机方面的考虑

要使用最快的CPU,编译程序拼的就是CPU的速度,而增加RAM没有作用。

另外,切勿使用低电压和超低电压的CPU,要使用标准电压的CPU。

若使用的是Windows操作系统,在任务管理器的进程一栏,列出了CPU当前运行的各个进程,并且给出了内存使用情况。

在任意一个进程上点击右键,可以看到一个“设置优先级”的功能。

查大部分进程的优先级,都在“标准”状态。通过把一个进程的优先级设置为“高于标准”,可以给该进程分配更多的CPU资源,相应地,其运行速度也就上去了。

Quarutus II编译过程中,通常要顺序运行quartus_map、quartus_fit、quartus_asm、quartus_tan四个进程。

其中前两个进程占用了编译时间的95%以上。

手工修改这两个进程的优先级就可以保证Quartus II的编译过程不受干扰,从而实现调整编译速度的目的。

二、Quartus II开发工具方面的考虑

Quartus II的编译过程包括分析综合、布局布线、汇编、时序分析以及生成网表,编译的过程中耗时最多的是分析综合和布局布线,所以想提高编译速度也应该从这点入手。

Quartus也有相关的自动增量编译的设置,如图1所示,

首先是可用处理器数目的设置,选择使用所有可用的处理器,这样可以提高整体的速度;

其次是采用Smart Compilation,即智能编译方式,它可以完成的功能是如果设计源文件没有改动,那Quartus II将不再进行分析综合,而直接进入布局布线阶段。

图1

有什么方法可以减少Quartus II的编译时间吗?

另外,还可用通过编写TCL脚本的方法减少Quartus II综合时间。

使用Quartus II完成建立工程、编写HDL文件、设置以及分配管脚等操作,然后将qsf文件中的内容复制到TCL文件中。

将上述的TCL文件和其他工程文件放入相同的文件夹,运行CMD,使用CD命令将目录更改到设计文件的文件夹,运行命令quartus_sh -t test_top.tcl。

查看CMD窗口的报告,看是否有错误或警告,有则更改HDL设计文件,重新运行命令quartus_sh -t test_top.tcl即可。

还可以在TCL脚本中添加查看TimeQuest的时序报告命令,在Quartus II的帮助文件中可以查到这些命令。

但是这样只减少了Quartus II的综合时间,实际上使用TCL脚本建立工程、约束等比图形化操作Quartus II更省时间。

三、增量编译方面的考虑

增量编译的原理是减少每次编译里设计已经完成的部分,进而不需要再重复编译设计者认为已经完成的工作。

具体方法为,设计者手动得将整个工程分成N个子模块(此处指的是逻辑模块),并设定各个模块的状态(已经完成了,不需要更改了,编译时就采用上一次的结果),这样编译器在分析综合的时候便可以对那些不需修改的部分直接采用上次的结果。

布局布线的时候也是一样的,如果该子模块不需要更改了就采用上次的结果,如需更改再重新进行布局布线,只不过布局布线的过程要相比分析综合复杂一些。

而上面提到的将整个工程手动分成N个模块,我们就要用到Quartus II提供的两个高级工具——Design Partitions和LogicLock Regions。

增量编译技术的另一主要优点是保持性能不变。通过只对设计中的特定分区进行编译,其他分区的时序性能保持不变。

渐进式流程适用的设计环境:当改变源文件时,缩短编译时间;在加入其他逻辑前,优化设计部分结果;采用在系统逻辑分析器进行渐进式调试;实现基于团队的设计环境和自下而上的设计流程。

增量编译流程要比固定式编译需要进行更多的前端规划。

例如,必须构造源代码或者设计层次以保证逻辑能够正确分组,进行优化。

比起在设计后期重新构造代码,更容易在设计早期实现正确的逻辑分组。

设计分区后,设计人员需要将每个分区分配到器件中的某个物理位置,以建立设计平面规划。

不好的分区或者平面规划分配会劣化设计面积利用率和性能,很难达到时序逼近。

和固定式编译相比,增量编译通常需要设计人员严格按照良好的设计习惯进行设计。

规划设计时,设计人员应记住每个分区的大小和范围,随着设计的发展,知道设计的不同部分会怎样变化。

经常变化的逻辑应和设计中的固定部分分开。

设计层次应该和一个分区中的关键时序逻辑分开,最好和寄存端口边界分开,这样,软件能够高效的优化每个独立分区。

为进行增量编译需要在Hierarchy tab of the Project Navigator中对Design partitions进行定义,在定义之前需要运行Analysis & Elaboration生成design hierarchy,定义之后会在实体名字上面出现一个 标志,如图2所示。

有什么方法可以减少Quartus II的编译时间吗?

通过设置可使Design partitions在增量编译的过程中被保留或重新编译。

使用渐进式编译时,设计层次被映射到设计分区中,在编译过程中单独处理它,以实现渐进式编译功能。

设计中的每个实体或者实例不会被自动考虑为设计分区;设计人员必须将顶层以下的一个或者多个设计层次指定为渐进式编译设计分区。

当分区被声明后,该分区中的每个层次成为同一分区的组成部分。

当为已有分区中的层次建立新分区时,新的低层分区中的逻辑不再是上层分区的组成部分。

有什么方法可以减少Quartus II的编译时间吗?

图3 所示是一个设计层次实例,其中,实例B 和F 被指定为设计分区。

分区B 包括子实例D 和E。

“顶层”默认分区含有顶层模块A 以及实例C,原因是它没有被分配到任何其他分区中。

责任编辑:lq6

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19259

    浏览量

    229647
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10854

    浏览量

    211569
  • 操作系统
    +关注

    关注

    37

    文章

    6801

    浏览量

    123280
  • QUARTUS II
    +关注

    关注

    0

    文章

    52

    浏览量

    30181

原文标题:如何减少Quartus II的编译时间

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    英特尔Quartus Prime Pro 24.3版本的全新亮点

    Quartus Prime Pro 24.3 版具有诸多强大特性和增强功能,可助力FPGA开发人员加快编译速度、提高设计效率以及缩短产品上市时间。令人振奋的是,在此次版本中,我们推出了对Agilex
    的头像 发表于 12-13 10:28 193次阅读

    时间继电器的调节方法 时间继电器与普通继电器的区别

    时间继电器的调节方法 时间继电器是一种能够按照预定时间进行操作的电气装置,其调节方法因类型不同而有所差异。以下是针对电磁式
    的头像 发表于 12-09 10:29 193次阅读

    Keil编译器优化方法

    我们都知道,代码是可以通过编译器优化的,有的时候,为了提高运行速度或者减少代码尺寸,会开启优化选项。
    的头像 发表于 10-23 16:35 499次阅读
    Keil<b class='flag-5'>编译</b>器优化<b class='flag-5'>方法</b>

    浅谈Vivado编译时间

    随着FPGA规模的增大,设计复杂度的增加,Vivado编译时间成为一个不可回避的话题。尤其是一些基于SSI芯片的设计,如VU9P/VU13P/VU19P等,布局布线时间更是显著增加。当然,对于一些设计而言,十几个小时是合理的。但
    的头像 发表于 09-18 10:43 883次阅读
    浅谈Vivado<b class='flag-5'>编译</b><b class='flag-5'>时间</b>

    java反编译的代码可以修改么

    的影响。 1. Java反编译工具 在Java反编译领域,一些知名的工具可以帮助开发者将字节码转换回源代码。这些工具包括: JD-GUI :一个图形界面的反
    的头像 发表于 09-02 11:00 635次阅读

    linux驱动程序的编译方法是什么

    Linux驱动程序的编译方法主要包括两种: 与内核一起编译编译成独立的内核模块 。以下是对这两种方法的介绍: 一、与内核一起
    的头像 发表于 08-30 14:46 535次阅读

    linux驱动程序的编译方法哪两种

    Linux驱动程序的编译方法主要可以归纳为两种: 手动编译 和 使用内核构建系统(Makefile)自动编译 。 1. 手动
    的头像 发表于 08-30 14:39 639次阅读

    如何有效减少PCBA的打样时间

    一站式PCBA智造厂家今天为大家讲讲PCBA加工如何减少打样时间?有效减少PCBA打样时间方法。 如今,国内电子加工业十分繁荣,作为专业P
    的头像 发表于 06-04 09:27 313次阅读

    鸿蒙OpenHarmony:【常见编译问题和解决方法

    常见编译问题和解决方法
    的头像 发表于 05-11 16:09 2141次阅读

    最实用的Modelsim使用教程

    Quartus II 内编写并编译 Testbench ,之后将 Testbench 和目标文件放在同一个文件夹下,按照前面的方法把 Testbench 文件和目标文件都
    发表于 03-19 16:40

    请问Touchgfx Designer4.20如何配置图片、字体不参与程序编译

    使用touchgfx desginer生成的 IDE工程,如何配置才能够将图片和字体排除掉,目前图片、字体较多,重新编译时特别耗费时间。 图片、字体均存放在总线可以访问的位置。 缓存字体可以
    发表于 03-15 06:41

    OpenHarmony 移植:build lite 编译构建过程

    配置完毕产品解决方案、芯片开发板解决方案,就可以执行 hb build 进行编译。但是产品解决方案代码是如何被调用编译的? 芯片开发板解决方案代码是如何被调用编译的?内核代码如何被调用
    的头像 发表于 02-19 16:19 941次阅读

    Makefile可以做什么?Makefile的基本格式

    Makefile可以根据指定的依赖规则和文件是否修改来执行命令。常用来编译软件源代码,只需要重新编译修改过的文件,使得编译速度大大加快。
    的头像 发表于 01-25 11:18 697次阅读

    减少串扰的方法哪些

    一些方法尽量降低串扰的影响。那么减少串扰的方法哪些呢? 检查靠近 I/O 网络的关键网络 检查与I/O线相关的关键网络的布线非常重要,因为这些线容易产生噪声,这些噪声可能会通过它们离
    的头像 发表于 01-17 15:02 1829次阅读
    <b class='flag-5'>减少</b>串扰的<b class='flag-5'>方法</b><b class='flag-5'>有</b>哪些

    什么方法可以提高晶体管的开关速度呢?

    什么方法可以提高晶体管的开关速度呢? 电子行业一直在寻求提高晶体管速度的方法,以满足高速和高性能计算需求。下面将详细介绍几种可以提高晶体管
    的头像 发表于 01-12 11:18 1257次阅读