RTL设计指导原则

本文介绍了硬件加速设计中的RTL级设计评判标准,重点关注时序性能、面积、可测试性和可重用性。阐述了面积与速度的平衡原则,指出在满足时序要求的前提下,应尽量减小芯片面积。通过乒乓操作和流水线设计等技术,可以在不牺牲速度的情况下节省面积,或者提高设计的处理速度。乒乓操作用于数据流控制,能实现数据的无缝缓冲与处理,而流水线则通过分段逻辑路径提高电路频率。这些方法在FPGA和ASIC设计中具有重要意义。
摘要由CSDN通过智能技术生成

参考视频:中国大学MOOC 芯动力——硬件加速设计方法  (2.3节) 

本篇所有内容来源于《芯动力——硬件加速设计方法》此课程的教学视频 、ppt等相关资料  

RTL级设计的评判标准:

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

        如果设计目标是在FPGA或CPLD等可编程逻辑器件上实现,则还需考虑是否能发挥这些PLD的结构特点等。

RTL级设计原则

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

这里仅讨论一般意义的指导原则。

通常来说,主要有三个指导原则:

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

面积与速度互换原则

设计中的“面积”和“速度” 

“面积”:

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

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

"速度":

        指设计在芯片上稳定运行时所能够达到的最高频率。

        这个频率由设计的时序状况决定,与设计满足的时钟周期、PAD to PAD Time , Clock Setup Time ,Clock Hold Time和Clock-to-Output Delay 等众多时序特征量密切相关。

面积和速度这两个指标贯穿于RTL设计的始终,是衡量设计质量的终极标准。

面积和速度的基本原则

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

面积和速度是矛盾体

面积和速度是对立统一的矛盾体,要求设计面积最小,运行速率最高是不现实的。

科学的设计目标:

对于面积来说:

        在满足设计时序要求(包含对设计最高频率的要求)的前提下, 占用最小的芯片面积;

对速度来说:

        在所规定的面积下,使设计的时序余量更大,频率更高。

这充分体现了面积和速度平衡原则

面积和速度的要求:

        不应简单理解为工程师和设计完美性的追求,应该认识到它们是和产品的质量、成本直接相关的。

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

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

设计所消耗的面积更小

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

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

面积和速度的互换是 RTL设计的一个重要思想。

面积和速度的互换理论:

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

  • 通过功能模块复用减少整个设计所消耗的芯片面积,

        也就是用速度的优势对换面积的节约。

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

  • 将数据流串并转换,
  • 并行复制多个操作模块,
  • 对整个设计采取"乒乓操作"和"串并转换"的思想进行处理,
  • 在芯片输出模块处再对数据进行"井串转换"。

        从宏观上看,整个芯片满足了处理速度的要求,这相当于用面积复制换取速度的提高。

面积和速度互换的操作技巧

  • 模块复用、
  • "乒乓操作"、
  • "串井转换"
  • 。。。

这些技巧需要不断积累。

例:如何进行"面积换速度"的操作?

        本例是一个路由器设计实例。

        假设输入数据流的速率是 450Mbit/s的, 而在 FPGA 上设计的数据处理模块的处理速度最大为 150Mbit/s,由于 处理模块的数据吞吐量满足不了要求,因此直接在 FPGA 上实现是一个 “不可能完成的任务”。

解决方案:

在这种情况下,利用“面积换速度”的 思想,至少复制 3 个处理模块 。

  1. 首先将输入数据进行“串并转换”;
  2. 然后利用这 3 个模块并行处理分配的数据;
  3. 最后将处理结果“并串转换"以满足 数据速率的要求。

设计示意图如所示

         在处理模块的两端,其数据速率是 450Mbit/s,而在 FPGA 的内部,每个子模块处理的数据速率是150Mbit/s。

           其实整个数据吞吐量的保障是依赖于 3 个子模块的并行处理来完成的,也就是说通过占用更多的芯片面积来实现高速处理。

乒乓操作

“乒乓操作”是一个常常应用于数据流控制的处理技巧。

典型乒乓操作如同所示: 

 “乒乓操作”的流程

输入数据流 通过输入数据流选择单元,将输入数据流等 分配到两个数据缓存区

数据缓冲模块,为任何存储模块。

常用的存储单元为:

  • 双口RAM(DPRAM)
  • 单口RAM(SPRAM)
  • FIFO

在第1个缓冲周期

将输入的数据流  缓存到 数据缓冲模块1 

在第2个缓冲周期

通过数据选择单元的切换 ,将输入的数据流  缓存到 数据缓冲模块2

同时

数据缓冲模块1缓存的第1个周期的数据,

  1. 通过输出数据选择单元的选择
  2. 送到数据流运算处理模块进行运算处理

 在第3个缓冲周期

 通过数据选择单元的再次切换,将输入的数据流  缓存到 数据缓冲模块1

同时

数据缓冲模块2缓存的第2个周期的数据,

  1. 通过输出数据选择单元的选择切换
  2. 送到数据流运算处理模块进行运算处理

 如此循环,完成数据输入

“乒乓操作”的优点

1、 应用于流水线式算法,完成数据的无缝缓冲与处理。

         乒乓操作的最大特点是通过“输入数据选择单元”和“输出数据选择单元”按节拍、相互配合的切换。将经过缓冲的数据流没有停顿地送到“数据流运算处理模块”进行运算与处理。

          把乒乓操作模块当做一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。所以乒乓操作常常应用于流水线式算法,完成数据的无缝缓冲与处理。

2、节约缓冲区空间。

例子:WCDMA基带应用

1个帧是有15个时隙组成,需要将1整帧的数据延时一个时隙后处理。

解决方案:

比较直接的方法:帧数据缓存起来,然后延时1个时隙进行处理

         这时缓冲区的长度是一整帧的长,假设数据速率为3.84Mbps,1帧长10ms,此时需要缓冲区的长度为38400位。

 采用乒乓操作

        只需定义两个能缓冲1个时隙数据的RAM(单口RAM即可)。

         当向一块RAM写数据的时候,从另一块RAM来读取数据,然后送到处理单元进行处理

        此时,每块RAM的容量为:

         两个RAM加起来的容量只要5120位。

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

例子:

        假设端口输入A的数据流的速率为100Mbps,乒乓操作的缓冲周期 10ms,以下分析各个节点端口的数据速率 

         数据缓冲模块采用双口RAM(DPRAM),在DPRAM之后,引入了一级数据预处理模块

        数据预处理,可以根据需要的各种数据运算如,在WCDMA设计中,对输入数据流进行解扩 、解扰、 去旋转等)

解决方案:

在第1个缓冲周期10ms内

        通过输入数据选择单元,从B1到达DPRAM1,B1处的数据速率也是100Mbps,所以DPRAM1要在10ms内写入1Mb数据。

 在第2个缓冲周期10ms内

        数据流切换到DPRAM2,端口B2处的数据速率也是100Mbps,DPRAM2在第2个10ms被写入1Mb数据。

  在第3个缓冲周期10ms内

        数据流切换到DPRAM1,DPRAM1被写入1Mb数据。

 到第3个周期时,留给DPRAM1读取数据,并送到数据预处理模块1的时间,一共是20ms。

所以端口C1的数据速率1Mb/20ms=500Mbps

因此,

数据预处理模块1的最低数据吞吐能力也仅仅要求为500Mbps,同理

数据预处理模块2的最低数据吞吐能力也仅仅要求为500Mbps.

   问题:为什么留给DPRAM1读取数据,并送到数据预处理模块1的时间,一共是20ms

        在第2个缓冲周期,向DPRAM2写数据的10ms内,DPRAM1是可以进行读操作的。

        在第1个缓冲周期的第5ms起(绝对时间为5ms时刻),DPRAM1就可以一边向500K以后的地址写数据,一边从地址0读数 到达10ms时,DPRAM1刚好写完了1Mb数据,并且读了500K数据,这个缓冲时间内 DPRAM1读了5ms。

       在第3个缓冲周期的第5ms起(绝对时间为35ms时刻),同理可以一边向500K以后的地址写数据一边从地址0读数,又读取了5个ms,所以截止 DPRAM1第一个周期存入的数据被完全覆盖以前,DPRAM1最多可以读取20ms时间, 而所需读取的数据为1Mb。

换言之,通过乒乓操作,数据预处理模块的时序压力就减轻了。仅仅为输入速率的二分之一。

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

流水线

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

组合逻辑链的串行闲置 

        如果将这条最长组合逻辑路径,划分为很多小的逻辑,就可以看到,在数据向前传播的过程中,每个时刻,大部分的组合逻辑单元,总是处于闲置状态,电路效率很低 。

 例子 : 计算log(|a+b|)

使用组合逻辑进行计算 ,整条路径上的延迟=加法器+求绝对值+求对数,三个部分组合逻辑之和。

  如果在电路中插入两级寄存器,那么电路的工作频率取决于加法器、求绝对值、求对数,三者的最大值。而且,每个时刻,三个部分都在运行。

          这种插入寄存器的形式,来提高电路运行频率的方法,叫做流水线。

        对比发现,流水线的方式,可以充分提高电路工作频率,理想情况下,本例中运行的频率,可以提升为原来的三倍。 

典型四级流水线的结构

通过四级触发器,把一条组合逻辑划成4部分

注意:这个划分是根据延迟来划分的,不是根据功能。 

 四级流水线比较

        相比流水线划分之前,流水线方法可以充分提高系统的工作频率, 但是评价一个电路的运算性能,通常是考虑其单位时间的计算量或者是一定计算总量下的处理时间。

        如果是以一组 N 个顺序输 数据的运算时间作为衡量,非流水线计算时间为NT,流水线为(N+3)pipeline的时间。

        哪个更好,需要通过具体情况判断。绝大部分情况,流水线更好。

 流水线特点与好处:

特点: 

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

好处

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

流水线参数设计

流水线的参数设计中,系统时钟取决于最慢的流水线级的延时。


流水线分割点及级数的确定要考虑的因素包括:

  • 单元延迟时间及时钟频率的大小决定了数据通过速率
  • 过多的级数不一定能产生最快的结果
  • 太多寄存器的插入会导致芯片面积增加,布线困难,时钟偏差增加

参考视频:中国大学MOOC 芯动力——硬件加速设计方法  (2.3节) 

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值