DesignWare IP使用——层次化综合加快总体综合速度

news/2025/1/7 14:01:33/文章来源:https://www.cnblogs.com/sasasatori/p/18650849

记录一下目前综合时遇到的一点小问题。

目前的设计的计算模块里大量使用了DW IP,包括浮点除法器,浮点加减法器,浮点乘法器,浮点求根器,浮点比较器等每个各32个,直接综合的话会发现这些大的计算单元每个都需要进行mapping,会导致综合的总时长长的难以想象(可能需要数天的时间)。

分析其原因,主要就是尽管对DW IP进行了重复例化,但在综合时实际上由于每个的env被视作不同,所以都会被独立进行mapping和optimization,导致总时间变得离谱。所以解决思路也很简单,进行层次化的综合,先把要用到的DW IP给单独综合为网表,在整体大模块中直接调用已经综合好的网表进行再综合(同时要注意对模块设置set_dont_touch属性,避免工具再去优化已经综合好的网表,经过实践发现,如果不加的话时间一样会长的离谱)。

对DW IP进行独立综合时,可以在其外部包裹wrapper提升设计时调用的便捷性,在约束时给一个相对而言比较紧的时序约束,来确保后续的综合可以通过。

以我这里的一个浮点除法器为例:

// float point divider
module fp_div (input  wire [31:0] i1,input  wire [31:0] i2,output wire [31:0] o
);parameter sig_width = 23;
parameter exp_width = 8;
parameter ieee_compliance = 0;DW_fp_div # (sig_width,exp_width,ieee_compliance
) u_DW_fp_div (.a(i1),.b(i2),.rnd(3'b000),.z(o),.status()
);endmodule

目标是跑上400MHz,对应2.5ns周期,在约束时适当加紧,最后达到了1.37ns的最大组合传播延时。

随后综合产生网表:

image

在顶层模块综合时,直接读入该文件即可。

此外需要对该模块进行set_dont_touch,我将其写到了sdc中,通过set_dont_touch [get_references u_xxxx/u_xxxx/fp_div*]完成约束,这里需要注意get_references命令在执行时必须要符合设计的层次,确保能够找到所有的fp_div的例化模块。

至此层次化综合的设置全部完成,再次运行综合之后,发现综合速度极大提升,从原来的可能需要数天时间,直接加快到二十分钟左右就结束。

该思路对于其他需要以网表的形式做集成的IP也都是适用的,层次化的综合也有利于减小整体的综合时间以及减小机器的资源需求,是个挺有用的trick。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/863569.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 长数据转宽数据

import pandas as pd# 长格式数据 df_long = pd.DataFrame({id: [A, A, B, B, C, C],year: [2020, 2021, 2020, 2021, 2020, 2021],value: [10, 15, 20, 25, 30, 35] })print(df_long) df_wide = df_long.pivot(index=id, columns=year, values=value) print(df_wide)

第十八次作业

1、sql注入漏洞中,常见的防护方案有哪些?请简述原理和用法 类型转换: 将输⼊强制转换为整数/浮点 ⽤于整数/浮点类型的输⼊参数处理,可防⽌SQL注⼊。 intval($input) floatval() floor() (int)$input $input + 0 特殊字符转义: addslashes 在单引号()、双引号(")、反…

【自动化测试】Pytest之conftest详解

conftest介绍 pytest中定义个conftest.py来实现数据,参数,方法、函数的共享。 conftest.py 的文件名称是固定的, pytest 会自动识别该文件,可以理解成一个专门存放 fixture 的配置文件。一个工程下可以建多个 conftest.py 文件,一般我们都是在工程根目录下设置的 conftest…

【Spring开发】 老板爱瞎改权限怎么办:注解+AOP 打造复杂权限体系

引言一、权限控制的基本概念二、系统需求分析三、库表设计四、权限控制的注解设计五、切面实现六、权限控制的业务逻辑实现七、结论引言 在软件开发的世界里,权限控制是确保数据安全和业务流程合规性的关键。然而,当老板或管理层频繁地调整权限设置时,这不仅会打乱开发节奏,…

01.03 CW 模拟赛 T2. game

思路 先把赛时的思路搬一下你发现确定两个人的起始点, 其实是可以确定 \(\rm{Alice}\) 的选点可能的, 考虑写个代码验证一下 具体的, 就是分成两个弧, \(\rm{Alice}\) 可以选择一个弧的优势(过半), 然后其他的劣势 感觉现在是猜结论, 全靠感性, 我也不知道怎么解释这个问题 那么…

1.3 可压缩流:喷管和机翼

1.3 可压缩流:喷管和机翼 前言 劳张、劳江必看,劳高请随缘。 超音速喷嘴 基本 对于等熵流动,给出速度变化和管道截面面积变化的关系式: \[\begin{equation}(M^2-1)\frac{dV}{V}=\frac{dA}{A} \end{equation} \]对该公式分3种情况讨论:低速、亚音速,M<1:此时\(M^2-1&l…

C++程序运行的三种方式

1、源代码的注释,2、c++运行方式一、例程 编一个程序,计算机随机产生一个整数(1至5),自己输入一个整数,若两数相同,则输出“恭喜你,中奖了!奖金10元”,否则输出“没中奖,请付费2元”;同时公布中奖号码。 #include <iostream> #include <cstdlib> …

25.01.03

-1喜欢我 \(O(n^2 \log^2 n)\) 过 \(2e5\) 吗😋_ _ _ _ _ _ Ciallo~(∠・ω< )⌒★A 有解的一个必要不充分条件是: 设 \(L_i\) 表示 \(l \le i\) 的左端点数量,\(R_i\) 表示 \(r < i\) 的右端点数量,对于每个位置 \(i\) 满足 \(L_i \ge i \wedge R_i < i\)。 意…

MES 包装 称重 测试备忘

称的功能都差不多,需要MES适配不同品牌的称。 串口输出2中模式:可以调节 精度:精度0.1g 精度是0.001kg 第一种(默认):不停的串口输出。 输出速度很快,容易导致程序死掉。 第二种模式:重量稳定输出。 下面是重量稳定输出模式截图: ------ erwa.cn 二娃测试备忘

深度学习基础理论————训练加速(单/半/混合精度训练)/显存优化(gradient-checkpoint)

主要介绍单精度/半精度/混合精度训练,以及部分框架(DeepSpeed/Apex) 不同精度训练 单精度训练(single-precision)指的是用32位浮点数(FP32)表示所有的参数、激活值和梯度 半精度训练(half-precision)指的是用16位浮点数(FP16 或 BF16)表示数据。(FP16 是 IEEE 标准…

使用学生优惠创建 Azure Database for MySQL 数据库

文章首先强调了需要一个已通过学生认证的 Azure 账户,然后详细讲解了从登录 Azure 门户页面、选择免费服务、配置服务器和网络等步骤,最终成功创建并部署 Azure Database for MySQL。前言 在此之前,你需要拥有一个已通过学生认证的 Azure 账户。关于通过 Azure 学生认证,网…

【Windows】修改虚拟内存位置

这篇文章详细介绍了如何在 Windows 系统中将虚拟内存文件(pagefile.sys)从 C 盘移动到其他盘。步骤包括查看文件位置、检查和关闭 C 盘加密、修改注册表、设置新的虚拟内存位置并重启电脑,最终实现文件转移。问题:系统优化中,希望将pagefile.sys文件(即虚拟内存)移动到其…