RTL Verilog

17 Mar 2025 | 5 分钟阅读

在数字电路设计中,寄存器传输级(RTL)是一种设计抽象,它根据硬件寄存器之间的数据流以及对这些信号执行的逻辑运算来模拟同步数字电路。

寄存器传输级抽象用于 HDL 中,以创建电路的高级表示,从中可以导出较低级别的表示,并最终导出实际的布线。 在 RTL 级进行设计是现代数字设计的典型做法。

RTL Verilog

一个同步电路由两个元件组成,例如

  • 寄存器(顺序逻辑): 寄存器将电路的操作同步到时钟信号的边沿,并且是电路中唯一具有内存属性的元件。 它们通常实现为 D 触发器。
  • 组合逻辑: 组合逻辑执行电路中的所有逻辑功能。 它由逻辑门组成。

例如,下面的图像显示了一个简单的同步电路。 反相器从输出 Q 连接到寄存器的输入 D 以创建一个电路。 它在 CLK 的每个上升沿改变其状态。 在此电路中,组合逻辑由反相器组成。

RTL Verilog

在使用硬件描述语言设计数字集成电路时,设计通常以比晶体管级或逻辑门级更高的抽象级别进行布置。

在 HDL 中,设计人员声明寄存器,这大致对应于编程语言中的变量,并通过使用 if-then-else 和算术运算等结构来描述组合逻辑。

此级别称为 寄存器传输级RTL。 术语 RTL 侧重于描述寄存器之间信号的流向。

使用 EDA 工具进行综合时,此描述通常可以直接转换为等效的硬件实现文件。 综合工具还执行逻辑优化。

在寄存器传输级,可以识别出某些类型的电路。 如果从寄存器的输出到其输入存在逻辑循环路径,则该电路称为 状态机 或顺序逻辑。

如果从一个寄存器到另一个寄存器存在没有循环的逻辑路径,则称为 流水线

RTL 电路设计周期

RTL 用于集成电路设计周期的逻辑设计阶段。 RTL 描述通过逻辑综合工具转换为电路的门级描述。

然后,布局布线工具使用综合结果来创建物理布局。 逻辑仿真工具可以使用设计的 RTL 描述来验证其正确性。

功耗估算技术

最精确的功耗分析工具可用于电路级,但是即使使用开关而不是器件级建模,电路级工具也存在缺点。 它们要么太慢,要么需要太多内存。

其中大多数是模拟器,例如 SPICE,多年来一直被设计人员用作性能分析工具

由于这些缺点,门级功耗估算工具已开始获得一些接受,其中更快、概率性技术已开始占据一席之地。

但它也有其权衡,即以牺牲准确性为代价来提高速度,尤其是在存在相关信号的情况下。

多年来,人们已经意识到,低功耗设计无法从电路级和门级优化中获得。 相反,系统、体系结构和算法优化往往对功耗的影响最大。 因此,工具开发人员的倾向已转向用于功耗的高级分析和优化工具。

门等效技术

这是一种基于门等效概念的技术。 芯片架构的复杂性可以用门等效来近似描述,其中等效门数指定了实现特定功能所需的平均参考门数。

通过将近似门等效数与每个门的平均功耗相乘,可以估算出特定功能所需的总功耗。 参考门可以是任何门,例如 2 输入 NAND 门。 这种技术分布在以下类型中,例如

1. 类独立功耗建模: 这是一种尝试根据有关设计复杂性(以门等效为单位)的信息来估算芯片面积、速度和功耗的技术。

功能被划分为不同的块,但未对块的功能进行区分。

它是类独立的。 这种技术由 芯片估算系统 (CES) 使用。 这种技术完成了以下步骤

步骤 1: 识别功能块,例如 计数器、解码器、乘法器、存储器 等。

步骤 2: 以门等效为单位分配复杂度。 每个单元类型的 GE 数量要么直接作为用户的输入获取,要么从库中馈送。

2. 类依赖功耗建模: 这种方法比以前的方法略好,因为它考虑了针对不同类型的功能块的定制估算技术。

因此,它试图提高建模准确性,而以前的技术(例如 逻辑、存储器、互连时钟)并非如此。

功耗估算以与独立情况非常相似的方式完成。 基本开关能量基于一个三输入 AND 门,并根据技术参数(例如用户提供的门宽、tox 和金属宽度)计算。

缺点

这种方法也有以下缺点,例如

  1. 电路活动并未得到准确建模,因为整个芯片都采用了总活动系数,该系数也不可靠,因为它由用户提供。
  2. 活动系数在整个芯片中会有所不同;因此,这不是很准确,并且容易出错。 这导致即使模型对芯片的总功耗给出了正确的估计,模块化的功耗分布也相对不准确的问题。
  3. 所选的活动系数给出了正确的总功耗,但是功耗分解为逻辑、时钟、存储器等不太准确。
  4. 与 CES 相比,此工具没有太大区别或改进。

预先表征的单元库技术

此技术通过为逻辑、存储器和互连提供单独的功耗模型,进一步定制了各种功能块的功耗估算。 这些建议使用 功耗因子近似 (PFA) 方法,用于单独表征整个功能块库,例如乘法器、加法器等,而不是单个门等效“逻辑”块模型。

优点

预先表征的单元库技术提供了以下优点

  • 可以根据适用于该块的任何复杂性参数进行自定义。 对于乘法器,字长的平方是合适的。
  • 存储容量以位为单位用于存储器,仅字长就足以用于 I/O 驱动程序。

下一主题标量和矢量