RTL设计指导原则-面积与速度互换

发布于:2022-11-29 ⋅ 阅读:(323) ⋅ 点赞:(0)

RTL设计指导原则-面积与速度互换

reference

来自中国大学MOOC上西南交通大学的慕课《芯动力-硬件加速设计方法》,这里放的是笔者的一些学习笔记,示例代码修正等,以下是他们的课程大纲,有兴趣的朋友也可以看看

image-20221007214614267

笔者会集中在第二到第五章,也就是具体的设计部分,后续也会陆续更新别的关于IC设计相关的东西。

RTL 级设计的评判标准

RTL 级设计的评判标准很多,如

  • 时序性能
  • 所占面积
  • 可测试性
  • 可重用性
  • 功耗
  • 时钟域的分配
  • 复位信号设计
  • 是否与所用 EDA 工具匹配。

对FPGA/CPLD : 是否能发挥这些PLD的结构特点等

根据这些目标的组合和优先级设置,可以派生出就唔多不同的设计原则:

  • 面积与速度互换
  • 乒乓操作
  • 流水线设计

面积

一个设计所消耗的目标器件(如FPGA CPLD 和 ASIC 等)的硬件资源或者ASIC芯片的面积。

  • 对于FPGA /CPLD来说,可以用所消耗的触发器FF和查找表 LUT数量来衡量,
  • 对于 ASIC 来说,则可以用设计的面积、门数等衡量。

速度

指设计在芯片上稳定运行时所能够达到的最高频率,这个频率由设计的时序状况决定

与设计满足的:

  • 时钟周期
  • PAD to PAD Time
  • Clock Setup Time
  • Clock Hold Time
  • Clock-to-Output Delay

等众多时序特征量密切相关。

面积和速度的平衡与互换原则

科学的设计目标:

  • 面积:在满足设计时序要求(包含对设计最高频率的要求)的前提下 ,占用最小的芯片面积;
  • 速度:在所规定的面积下,使设计的时序余量更大,频率更高。

要求: 应该认识到它们是和产品的质量、成本直接相关的。

如果设计的时序余量比较大,运行的频率比较高

  • 设计的健壮性更强
  • 整个系统的质量更有保证

设计所消耗的面积更小

  • 在单位芯片上实现的功能模块更多
  • 需要的芯片数量更少
  • 整个系统的成本也随之大幅度削减

相比之下,面积和速度的地位是不一样的。相比之下,满足时序、工作频率的要求更重要一些,
所以当两者发生冲突时,应采用速度优先的原则。面积和速度的互换是 RTL 设计的一个重要思想。

从理论上讲,一个设计如果时序余量较大,所能跑的频率远远高于设计要求:

  • 可以通过功能模复用减少整个设计所消耗的芯片面积
  • 用速度的优势对换面积的节约。

反之,如果一个设计的时序要求很高,普通方法达不到设计频率,可以:

  • 那么一般可以通过将数据流串并转换
  • 并行复制多个操作模块
  • 对整个设计采取"乒乓操作"和"串并转换"的思想进行处理
  • 在芯片输出模块处再对数据进行"并串转换"

从宏观来讲,整个芯片满足了处理速度的要求,这相当于用面积复制换取速度的提高。面积和速度互换的操作技巧很多,比如模块复用、“乒乓操作”、"串井转换”等,这些技巧需要不断积累。

面积换速度

本例是一个路由器设计实例。假设输入数据流的速率是 450Mbit/s的,而在FPGA上设计的数据处理模块的处理速度最大为 150Mbit/s,由于处理模块的数据吞吐量满足不了要求,因此直接在FPGA 上实现是一个“不可能完成的任务”。在这种情况下,就应该利用“面积换速度”的思想,至少复制3个处理模块。首先将输入数据进行串并转换,然后利用这3个模块并行处理分配的数据,最后将处理结果“并串转换"以满足数据速率的要求。在处理模块的两端,其数据速率是 450Mbit/s,而在FPGA的内部,每个子模块处理的数据速率是150Mbit/s。其实个数据吞吐量的保障是依赖于3个子模块的并行处理来完成的,也就是说通过占用更多的芯片面积来实现高速处理。设计示意图如所示。

乒乓操作

“乒乓操作” 是一个常常应用于数据流控制的处理技巧,如下图:

乒乓操作的最大特点是

  • 通过“输入数据选择单元”和“输出数据选择单元”按节拍、相互配合的切换,
  • 将经过缓冲的数据流没有停顿地送到“数据流运算处理模块”进行运算与处理。
  • 把乒乓操作模块当做一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。
  • 所以乒乓操作常常应用于流水线式算法,完成数据的无缝缓冲与处理。

乒乓操作的第二个优点是可以节约缓冲区空间。

另外,巧妙运用乒乓操作还可以达到用低速模块处理高速数据流的效果。

通过乒乓操作实现低速模块处理高速数据的实质是:通过 DPRAM 这种缓存单元实现了数据流的串并转行用“数据预处理块 1”和“数据预处理模块 2”处理分流的数据,是面积与速度互换原则的体现!

流水线

电路运行的最高频率,取决于最长的组合逻辑链路的延迟值

如将组合逻辑拆分为多个小逻辑块,则组合逻辑会出现串行闲置:

实例,计算 c = log ⁡ ( ∣ a + b ∣ ) c=\log(|a + b|) c=log(a+b),硬件电路为:

此时,组合逻辑最大延迟为:
T m i n = t c − p + t p d , a d d + t p d , a b s + t p d , l o g + t s u ≈ t p d , a d d + t p d , a b s + t p d , l o g \begin{aligned} T_{min} &= t_{c-p} + t_{pd,add} + t_{pd,abs} + t_{pd,log} + t_{su}\\ &\approx t_{pd,add} + t_{pd,abs} + t_{pd,log} \end{aligned} Tmin=tcp+tpd,add+tpd,abs+tpd,log+tsutpd,add+tpd,abs+tpd,log
如果在图中插入两级寄存器:

此时,组合逻辑最大延迟为:
T m i n = t c − p + max ⁡ ( t p d , a d d , t p d , a b s , t p d , l o g ) + t s u ≈ max ⁡ ( t p d , a d d , t p d , a b s , t p d , l o g ) ≈ 1 3 T ( i f : t p d , a d d = t p d , a b s = t p d , l o g = 1 3 T ) \begin{aligned} T_{min} &= t_{c-p} + \max(t_{pd,add}, t_{pd,abs}, t_{pd,log}) + t_{su}\\ &\approx \max(t_{pd,add}, t_{pd,abs}, t_{pd,log})\\ &\approx \frac13 T (if : t_{pd,add}=t_{pd,abs}=t_{pd,log}=\frac13 T ) \end{aligned} Tmin=tcp+max(tpd,add,tpd,abs,tpd,log)+tsumax(tpd,add,tpd,abs,tpd,log)31T(if:tpd,add=tpd,abs=tpd,log=31T)

则此时一个经典的四级流水线的结构为:

注意此处划分由延时划分,而非功能划分。流水线和非流水线的延时对比:

特点:

  • 通过插入寄存器,将长的串行逻辑链分成较小的部分
  • 当系统运算是串行的时候,利用时控制,使运算依照 顺序接续进行
  • 在任何给定时刻,大部分电路都在工作好处

好处:

  • 每一部分延时较小->可使用更快的时钟
    大部分电路同时进行运算->可提高数据通过量

流水线的参数设计

  • 系统时钟取快于最慢的流水线级的延时
    • 流水线时钟周期 T p i p e = max ⁡ { T 1 , T 2 , … , T m } T_{pipe} = \max\{ T_1, T_2,\dots, T_m\} Tpipe=max{T1,T2,,Tm}
    • 第i级的时钟周期: T i = t f f + t s u + t d , i + t s , i + 1 T_i = t_{ff} + t_{su} + t_{d,i} + t_{s,i} + 1 Ti=tff+tsu+td,i+ts,i+1
  • 流水线分割点及级数的确定要考虑的因素包括:
    • 单元延迟时间及时钟频率的大小决定了数据通过速率
    • 过多的级数不一定能产生最快的结果
    • 太多寄存器的插入会导致芯片面积增加,布线困难,时钟偏差增加

小结

我在流水线上拧螺丝,螺丝在流水线上拧我,我们是两颗狭路相逢的螺丝


网站公告

今日签到

点亮在社区的每一天
去签到