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

    文章

    18219

    浏览量

    221936
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10412

    浏览量

    206467
  • 操作系统
    +关注

    关注

    37

    文章

    6266

    浏览量

    121842
  • QUARTUS II
    +关注

    关注

    0

    文章

    52

    浏览量

    30010

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

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

收藏 人收藏

    评论

    相关推荐

    最实用的Modelsim使用教程

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

    减少静电产生和降低击穿风险的方法和材料

    介绍一些常见的方法和材料,以帮助我们更好地了解如何减少静电产生并降低击穿风险。 一、减少静电产生的方法: 要减少静电的产生,我们
    的头像 发表于 11-29 16:30 335次阅读

    焊接变形的控制方法哪些

    标准,需要采取控制焊接变形的方法。本文将介绍一些常见的焊接变形控制方法。   预热和后热处理:   预热是在进行焊接之前将工件加热到一定温度的过程。通过预热,可以减少焊接过程中的温度梯
    发表于 11-29 08:40

    this可以出现在类方法中吗

    用 this 关键字时,编译器会发出错误提示,因为类方法是静态的方法,没有与它们关联的特定对象实例。然而,在特定情况下,我们可以使用 this 关键字在类
    的头像 发表于 11-28 16:24 498次阅读

    Vivado那些事儿:节省编译时间系列文章

    虽然想必您知道,在综合或实现阶段,增量运行可以从参考文件中读取和复制信息,但仅在某些阶段中能节省时间,如果网表发生大量更改,其中引用的内容就会减少编译
    的头像 发表于 10-09 16:48 945次阅读
    Vivado那些事儿:节省<b class='flag-5'>编译</b><b class='flag-5'>时间</b>系列文章

    节省编译时间的解决方法

    影响编译时间的因素有很多,包括工具流程、工具设置选项、RTL 设计、约束编辑、目标器件以及设计实现期间各工具所面临的任何关键问题。除此之外,所使用的机器及其负载也是关键因素。在这篇博客中,我们只探讨
    的头像 发表于 09-27 09:52 369次阅读
    节省<b class='flag-5'>编译</b><b class='flag-5'>时间</b>的解决<b class='flag-5'>方法</b>

    利用Tcl脚本节省编译时间

    这篇博文介绍了多种自动生成报告的有效途径,以便您在尝试对设计中特定阶段所耗用的编译时间进行调试时使用,例如,自动报告加载设计约束的时间、每条命令的持续时间,甚至是跨多个设计的运行
    的头像 发表于 09-15 10:44 391次阅读
    利用Tcl脚本节省<b class='flag-5'>编译</b><b class='flag-5'>时间</b>

    为什么提高电路功率因素可以减少电损耗?

    随着科技的发展,电力供应和使用的效率越来越重要。提高电路功率因素是一种有效的方法,它可以减少电流损耗,提高能耗效率。那么,为什么提高电路功率因素对于减少电损耗有直接作用呢?
    的头像 发表于 09-04 16:26 1132次阅读

    节省编译时间系列-使用增量实现

    增量实现自从首次获得支持以来,不断升级演变,在此过程中已添加了多项针对性能和编译时间的增强功能。
    的头像 发表于 09-01 09:36 385次阅读
    节省<b class='flag-5'>编译</b><b class='flag-5'>时间</b>系列-使用增量实现

    FPGA设计及QUARTUS II QUARTUS II教程

    经典资料
    发表于 08-16 11:51 8次下载

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

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

    Quartus II没有对应芯片的原因及其解决办法

    Quartus II开发ALTERA的FPGA时,有时候会发现没有自己对应的芯片型号
    的头像 发表于 07-24 15:15 6412次阅读
    <b class='flag-5'>Quartus</b> <b class='flag-5'>II</b>没有对应芯片的原因及其解决办法

    易灵思IDE更新ROM可以不用全编译

    之前有人问题易灵思的BRAM是否可以修改ROM的初始化参数,像xilinx一样不需要编译,也有人问RISC 修改了bootloader有没有办法不用重新编译,在之前确实不行。不过易灵思2023.1.150软件这周发布了,增加了一
    的头像 发表于 06-30 16:05 507次阅读
    易灵思IDE更新ROM<b class='flag-5'>可以</b>不用全<b class='flag-5'>编译</b>了

    Quartus中的逻辑锁定与增量编译

    逻辑锁定功能可以将FPGA中的代码模块在固定区域实现,优化时序性能,提升设计可靠性。 增量编译功能,可以使设计更快速时序收敛,加快编译速度。
    的头像 发表于 05-25 11:22 881次阅读
    <b class='flag-5'>Quartus</b>中的逻辑锁定与增量<b class='flag-5'>编译</b>

    有没有办法减少LVDS输出的延迟时间

    有没有办法减少LVDS输出的延迟时间? (例如,通过修改视频输出驱动来缩短延迟时间。) 是否可以通过修改软件来减少延迟
    发表于 05-25 06:10