Vivado综合的教训

这篇博客记录了一次大规模FPGA设计的综合过程,综合时间长达20分钟,远超以往。设计在综合后资源利用率较低,如Slice LUTs和Registers只占了极小比例,Block RAM Tile和DSP资源未被使用。由于某些部分的乘法结果未连接输出,导致被综合器删除。此外,设计被识别为空,可能因缺少输出接口。由于内存问题导致设计过程中电脑四次死机,解决方案是重构代码。
部署运行你感兴趣的模型镜像

前记

很长时间以来,我写的工程都是小规模的,综合时间大约5min以内(r7000p 2021),这次综合的时间是20min中,这是史无前例的,虽然我知道,综合时间这么长是因为我的HDL有问题。但是, 这个过程值得记录,用来后续的查阅。

综合后的资源利用率

看起来波澜不惊,实际暗流涌动,因为乘法部分的结果没有连接输出,都被综合掉了。
在这里插入图片描述

synth_1_synth_report_utilization_0

Copyright 1986-2018 Xilinx, Inc. All Rights Reserved.
-------------------------------------------------------------------------------------------------
| Tool Version : Vivado v.2018.3 (win64) Build 2405991 Thu Dec  6 23:38:27 MST 2018
| Date         : Sat Apr 30 08:46:36 2022
| Host         : DESKTOP-FUK97V0 running 64-bit major release  (build 9200)
| Command      : report_utilization -file top_utilization_synth.rpt -pb top_utilization_synth.pb
| Design       : top
| Device       : 7z020clg400-1
| Design State : Synthesized
-------------------------------------------------------------------------------------------------

Utilization Design Information

Table of Contents
-----------------
1. Slice Logic
1.1 Summary of Registers by Type
2. Memory
3. DSP
4. IO and GT Specific
5. Clocking
6. Specific Feature
7. Primitives
8. Black Boxes
9. Instantiated Netlists

1. Slice Logic
--------------

+-------------------------+------+-------+-----------+-------+
|        Site Type        | Used | Fixed | Available | Util% |
+-------------------------+------+-------+-----------+-------+
| Slice LUTs*             |   88 |     0 |     53200 |  0.17 |
|   LUT as Logic          |   88 |     0 |     53200 |  0.17 |
|   LUT as Memory         |    0 |     0 |     17400 |  0.00 |
| Slice Registers         |   60 |     0 |    106400 |  0.06 |
|   Register as Flip Flop |   60 |     0 |    106400 |  0.06 |
|   Register as Latch     |    0 |     0 |    106400 |  0.00 |
| F7 Muxes                |    0 |     0 |     26600 |  0.00 |
| F8 Muxes                |    0 |     0 |     13300 |  0.00 |
+-------------------------+------+-------+-----------+-------+
* Warning! The Final LUT count, after physical optimizations and full implementation, is typically lower. Run opt_design after synthesis, if not already completed, for a more realistic count.


1.1 Summary of Registers by Type
--------------------------------

+-------+--------------+-------------+--------------+
| Total | Clock Enable | Synchronous | Asynchronous |
+-------+--------------+-------------+--------------+
| 0     |            _ |           - |            - |
| 0     |            _ |           - |          Set |
| 0     |            _ |           - |        Reset |
| 0     |            _ |         Set |            - |
| 0     |            _ |       Reset |            - |
| 0     |          Yes |           - |            - |
| 0     |          Yes |           - |          Set |
| 0     |          Yes |           - |        Reset |
| 0     |          Yes |         Set |            - |
| 60    |          Yes |       Reset |            - |
+-------+--------------+-------------+--------------+


2. Memory
---------

+----------------+------+-------+-----------+-------+
|    Site Type   | Used | Fixed | Available | Util% |
+----------------+------+-------+-----------+-------+
| Block RAM Tile |    0 |     0 |       140 |  0.00 |
|   RAMB36/FIFO* |    0 |     0 |       140 |  0.00 |
|   RAMB18       |    0 |     0 |       280 |  0.00 |
+----------------+------+-------+-----------+-------+
* Note: Each Block RAM Tile only has one FIFO logic available and therefore can accommodate only one FIFO36E1 or one FIFO18E1. However, if a FIFO18E1 occupies a Block RAM Tile, that tile can still accommodate a RAMB18E1


3. DSP
------

+-----------+------+-------+-----------+-------+
| Site Type | Used | Fixed | Available | Util% |
+-----------+------+-------+-----------+-------+
| DSPs      |    0 |     0 |       220 |  0.00 |
+-----------+------+-------+-----------+-------+


4. IO and GT Specific
---------------------

+-----------------------------+------+-------+-----------+-------+
|          Site Type          | Used | Fixed | Available | Util% |
+-----------------------------+------+-------+-----------+-------+
| Bonded IOB                  |    2 |     0 |       125 |  1.60 |
| Bonded IPADs                |    0 |     0 |         2 |  0.00 |
| Bonded IOPADs               |    0 |     0 |       130 |  0.00 |
| PHY_CONTROL                 |    0 |     0 |         4 |  0.00 |
| PHASER_REF                  |    0 |     0 |         4 |  0.00 |
| OUT_FIFO                    |    0 |     0 |        16 |  0.00 |
| IN_FIFO                     |    0 |     0 |        16 |  0.00 |
| IDELAYCTRL                  |    0 |     0 |         4 |  0.00 |
| IBUFDS                      |    0 |     0 |       121 |  0.00 |
| PHASER_OUT/PHASER_OUT_PHY   |    0 |     0 |        16 |  0.00 |
| PHASER_IN/PHASER_IN_PHY     |    0 |     0 |        16 |  0.00 |
| IDELAYE2/IDELAYE2_FINEDELAY |    0 |     0 |       200 |  0.00 |
| ILOGIC                      |    0 |     0 |       125 |  0.00 |
| OLOGIC                      |    0 |     0 |       125 |  0.00 |
+-----------------------------+------+-------+-----------+-------+


5. Clocking
-----------

+------------+------+-------+-----------+-------+
|  Site Type | Used | Fixed | Available | Util% |
+------------+------+-------+-----------+-------+
| BUFGCTRL   |    1 |     0 |        32 |  3.13 |
| BUFIO      |    0 |     0 |        16 |  0.00 |
| MMCME2_ADV |    0 |     0 |         4 |  0.00 |
| PLLE2_ADV  |    0 |     0 |         4 |  0.00 |
| BUFMRCE    |    0 |     0 |         8 |  0.00 |
| BUFHCE     |    0 |     0 |        72 |  0.00 |
| BUFR       |    0 |     0 |        16 |  0.00 |
+------------+------+-------+-----------+-------+


6. Specific Feature
-------------------

+-------------+------+-------+-----------+-------+
|  Site Type  | Used | Fixed | Available | Util% |
+-------------+------+-------+-----------+-------+
| BSCANE2     |    0 |     0 |         4 |  0.00 |
| CAPTUREE2   |    0 |     0 |         1 |  0.00 |
| DNA_PORT    |    0 |     0 |         1 |  0.00 |
| EFUSE_USR   |    0 |     0 |         1 |  0.00 |
| FRAME_ECCE2 |    0 |     0 |         1 |  0.00 |
| ICAPE2      |    0 |     0 |         2 |  0.00 |
| STARTUPE2   |    0 |     0 |         1 |  0.00 |
| XADC        |    0 |     0 |         1 |  0.00 |
+-------------+------+-------+-----------+-------+


7. Primitives
-------------

+----------+------+---------------------+
| Ref Name | Used | Functional Category |
+----------+------+---------------------+
| LUT2     |   61 |                 LUT |
| FDRE     |   60 |        Flop & Latch |
| LUT4     |   21 |                 LUT |
| CARRY4   |   20 |          CarryLogic |
| LUT3     |   18 |                 LUT |
| LUT6     |   12 |                 LUT |
| LUT1     |   11 |                 LUT |
| LUT5     |   10 |                 LUT |
| IBUF     |    2 |                  IO |
| BUFG     |    1 |               Clock |
+----------+------+---------------------+


8. Black Boxes
--------------

+-----------+------+
|  Ref Name | Used |
+-----------+------+
| ROM3_exp  |    1 |
| ROM2_VqIQ |    1 |
| ROM1_VpIQ |    1 |
+-----------+------+


9. Instantiated Netlists
------------------------

+----------+------+
| Ref Name | Used |
+----------+------+

[Common 17-1649]

[Common 17-1649] The Vivado message database 'F:/MyTest/FPGA/Correlation/Correlation.runs/synth_1/vivado.pb' contains 20871 messages. 
Restoring all messages from this message database will impact Vivado performance, so only WARNING, CRITICAL WARNING, and ERROR messages will be restored. 
To restore all messages from this file use the tcl command 'set_param messaging.loadPbLimit 20872' and re-open the project.

这里没显示的内容,应该可以到systhesized Design中的report找到

[Place 30-494] The design is empty

[Place 30-494] The design is empty
Resolution: Check if opt_design has removed all the leaf cells of your design.  Check whether you have instantiated and connected all of the top level ports.
[Common 17-69] Command failed: Placer could not place all instances

原因:顶层文件没有输出接口

因为内存爆掉死机了四次

解决方案,代码重写。


都看到这儿了,点个赞呗
||
\/

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### Vivado 中 `psincdec` 的使用教程及常见问题 #### 一、`psincdec` 功能概述 在 FPGA 设计中,`psincdec` 是用于处理相位累加器的操作指令。该操作通常应用于数字信号处理 (DSP) 和通信系统等领域,在这些应用中,频率合成和调制解调是常见的需求。 #### 二、创建包含 `psincdec` 的 IP 核心 为了简化设计过程并提高效率,推荐通过 IP Integrator 创建包含 `psincdec` 功能的 IP 核心: 1. 打开 Vivado 软件[^3]; 2. 新建或打开现有项目; 3. 进入 IP Integrator 环境,点击 “Create Interface” 添加 AXI4-Lite 接口或其他所需接口; 4. 利用 Xilinx 提供的标准库组件构建逻辑结构,其中包括 Phase Increment/Decrement 单元即 `psincdec` 实现部分; ```tcl # Tcl script example to create a block design with psincdec component set bd_name my_psincdec_design create_bd_design $bd_name source ./path_to_your_tcl_script_for_ip.tcl ;# This file should contain commands for adding and configuring IPs including psincdec. ``` #### 三、配置参数与连接设置 当完成上述步骤之后,则需进一步调整各个模块之间的具体链接关系以及设定必要的属性值,比如时钟频率、数据宽度等重要参数。 对于 `psincdec` 来说,主要涉及以下几个方面: - 输入时钟的选择及其分频系数; - 增量(Increment Value)或减量(Decrement Value)寄存器初始化数值; - 输出范围控制机制的设计考虑; #### 四、综合编译与验证测试 编写好 RTL 描述文件后应当及时保存更改以便让工具能够执行初步的语法检测[^2]。随后可以利用仿真平台对整个系统的运行状况展开全面评估,确保其行为符合预期目标之前再进行后续阶段的工作如布局布线等实际物理实现环节。 #### 五、调试技巧与注意事项 如果遇到任何关于 `psincdec` 组件的问题,建议采取如下措施来进行排查分析: - 查看官方文档获取更多细节说明和技术支持资源; - 参考论坛帖子了解其他开发者分享的经验教训- 尝试修改相关配置项重新尝试直至找到合适解决方案为止;
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值