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

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

3天内不再提示

使用Genus retime技术的实现原理

星星科技指导员 来源:eetop 作者:eetop 2023-12-14 14:47 次阅读

设计中经常会碰到一些非常复杂的逻辑,组合逻辑层数非常多,往往造成无法满足设计的时钟频率要求。

Cadence综合工具Genus支持retime技术。

Retime技术的原理非常简单。例如下图,两级flop之间的组合逻辑太大,限制了时钟频率。

1629743781690020.png

Retime技术类似pipeline。Retime技术在两级flop之间插入retime stage flop,把复杂的组合逻辑分割成里几个部分,每个部分的组合逻辑层数都相对较小,使得每一级都能工作在较高的频率,从而满足整个设计的时钟要求。

1629743804300031.png

当然,retime技术不是“免费”的。

-插入了中间级,latency增加了。上图中latency增加了3个cycle。

-插入了中间级flop,面积功耗都会大一些。

下面是一个实例。这个设计实现乘+加(multiply-add)运算。这类运算在DSP中很常见。这里的乘法器是16位输入乘16位输入,得到32位结果,再和符号扩展(sign extended)后的第三个输入相加。

综合用Genus,target 65nm的库。顺便插一句,很多朋友总以为只要上了先进工艺,timing的问题就解决了。做产品与做科研不同。做产品是要讲成本的。上了先进工艺只能说明你资金充裕。使用成熟工艺,虽然慢很多却能实现一样的performance,这才是真正的设计能力。

首先来看看最直接的实现方案。这里输入锁存后再运算,运算结果锁存后再输出。这样做屏蔽了input delay,output delay对运算逻辑timing的影响,可以更好地评测运算逻辑的速度。

1629744439915496.png

这里也可以看到,手动插入pipeline stages很难,尤其是乘法运算。这是一个整体,无法手动切割。当然有朋友可能会说,例化Synopsys DesignWare里的multi-stage multiplier。那样当然也是可以的,优缺点你也知道了,这里就不赘述了。

Genus综合后最差的路径如下。

1629743903414043.png

1629743922162974.png

时钟周期为9ns,positive slack 26ps,能满足。也就是说这个实现方案最多也就是只能跑110MHz左右。如果系统的要求是400MHz,这个最直白的实现方案显示是不行的。

下面再来看看使用Genus retime技术的实现方法。在这个实现中把multiply-add放到了一个独立的module中,这样做是为了在Genus综合中单独将这个module的retime打开。

1629743959178023.png

1629743987633402.png

Genus综合时在syn_generic之前关闭整个设计地retime,打开multiply_add_pipeline模块地retime。

1629744656572174.png

Genus综合结果如下。

1629744011672480.png

可以看到,时钟提高到了2.5ns (400MHz),依然能满足,slack为0。

这里还要提一下,Genus retime的算法非常聪明。RTL里我们给了中间三级32*3=96个DFF,实际上最后Genus并没有全部用掉96个DFF,只用了2+9+31个DFF置换为retime中间级flop,其余的都优化掉了。可以说Genus retime真的很“省”。

总结一下,Genus retime技术通过移动pipeline flop的位置将复杂组合逻辑分割成几级,可以大大提高电路的速度。

审核编辑:黄飞

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

    关注

    64

    文章

    909

    浏览量

    141740
  • 时钟设计
    +关注

    关注

    0

    文章

    27

    浏览量

    10900
  • Retimer
    +关注

    关注

    2

    文章

    9

    浏览量

    7281
收藏 人收藏

    评论

    相关推荐

    PWM技术实现方法原理详解

    立即学习>>>【史上最全半桥LLC谐振式开关电源视频教程】每天学习1小时 张飞带你两个月精通半桥LLC开关电源!PWM技术实现方法原理详解总结了PWM技术问世至今各种主要的实现方法
    发表于 01-10 12:14

    什么是红外对频技术,具体怎么实现的?

    江湖救急!急急如律令,号召各路大神。什么是红外对频技术,具体怎么实现的?红外对频与2.4G如何配合使用?求大神解答,不胜感激!
    发表于 10-21 09:47

    RFID技术怎么实现药品管理?

    我国运用RFID技术实现药品管理的市场具有很大的市场空间。RFID在药物防伪与追踪及供应链管理中具有很大的应用潜力,采用RFID技术后,由于药品在销售的每个环节都被跟踪,其电子履历被实时记录在电子
    发表于 09-20 08:15

    如何为管道设计插入寄存器并进行重定时?

    大家好,我需要为管道设计插入寄存器并进行重定时以改善负面松弛。在vivado中是否有内置的方法来执行此操作。我尝试了phys_opt_design -retime,但它没有改善松弛。此外,还有一种方法可以通过vivado在生成的网表中插入寄存器。谢谢Ausaf
    发表于 05-01 14:51

    怎么实现基于FPGA技术的智能导盲犬设计?

    怎么实现基于FPGA技术的智能导盲犬设计?
    发表于 05-08 07:37

    如何实现蓝牙技术的低功耗?

    和传统蓝牙技术相比,低功耗蓝牙技术的低功耗是如何实现的?
    发表于 05-18 06:23

    怎么实现基于CDMA技术的准确寻址?

    本文阐述了基于CDMA技术的光纤Bragg光栅传感系统的原理及其关键技术,并对该系统做了初步实验研究,实现了基于CDMA技术的准确寻址。
    发表于 05-27 06:56

    怎么利用蓝牙技术实现遥控打印?

    本文介绍一种用蓝牙技术实现主机与打印机的无线连接,实现遥控打印的方法。
    发表于 05-28 06:07

    怎么实现基于RFID技术的离散MES设计?

    怎么实现基于RFID技术的离散MES设计?
    发表于 06-07 06:02

    什么是多点触控技术?多点触控是怎么实现的?

    什么是多点触控技术?多点触控是怎么实现的?多点触控技术的用途有哪些?
    发表于 06-17 07:47

    逻辑电路的纠错技术是如何实现的?

    逻辑电路的纠错技术是如何实现的?纠错技术在逻辑电路中有什么作用?
    发表于 06-18 09:50

    自动驾驶技术实现

    的带宽有了更高的要求。从而使用以太网技术及中央域控制(Domain)和区域控制(Zonal)架构是下一代车载网络的发展方向。然而对于自动驾驶技术实现,涉及到感知、规划、执行三个层面。由于车辆行...
    发表于 09-03 08:31

    NFC的技术原理与实现

    详细讲解NFC的技术原理与实现
    发表于 09-25 06:49

    经典C语言接口与实现:创建可重用软件的技术

    C语言接口与实现(创建可重用软件的技术)概念清晰、内容新颖、实例详尽,是一本有关设计、实现和有效使用C语言库函数,掌握创建可重用C语言软件模块技术的参考指南。C语言接口与
    发表于 09-25 06:42

    无线充电技术设备的实现无线充电技术设备的实现

    无线充电技术设备的实现无线充电技术设备的实现
    发表于 09-15 14:13 13次下载