第二章 高质量VerilogHDL 描述方法

2.1 可综合描述原则

Verilog是硬件描述语言(hardware description language, HDL

HDL具有硬件设计的基本概念

  1. 互联 connectivity
  2. 并发 concurrency
  3. 时间 time

可综合语法

  1. always
  2. if-else
  3. case
  4. assign

硬件电路结构

典型描述电路结构备注
单if-else多路选择器先加后选、先选后加
单if-else if-else if…多路选择器无优先级判断
多if级联多路选择器最后一级具有最高优先级(不推荐)
分配给具有最大延迟的关键信号
case译码器条件互斥;无优先级;
if缺else
case缺default
Latch易产生毛刺,尽量避免,使用DFF
full-case综合器指令:声明已列举所有状态
parallel-case综合器指令:声明条件互斥并行,无优先权
逻辑复制降低扇出,降低传播延迟
资源共享减小面积
资源重排降低传播延迟
assign = ( ) : ( ) ? ( )仅用于连线,避免多层嵌套

可综合风格

  1. 完整的always敏感信号列表
  2. 每个always敏感信号列表对应一个时钟
  3. 禁止wait声明和#delay声明
  4. 时序逻辑,非阻塞赋值,<=
    组合逻辑,阻塞赋值,=

模块划分

  1. 分开 异步逻辑、同步逻辑
  2. 分开 控制逻辑、存储器

2.2 考虑延迟和面积等

考虑延时

  1. 分支支路的延迟:使用多if,级联多路选择器,把较晚到来(具有最大延迟)的信号)放在最后,提取总结互斥的条件写在pre_condition里。
  2. 数据通道:先加后选、先选后加;
  3. A+B<24,A<24-B,先加减再比较;

考虑面积

  1. 操作符:谨慎使用运算符(+,-,*,/)以及条件语句中的比较运算;如果一定要使用运算符,尽量资源共享
  2. 多比特擦做:转换为对特定比特操作

考虑功耗

动态功耗 $ p_{d}=\sum afCV^{2} $

  • a:翻转次数
  • f:工作频率
  • C:电容
  • V:电压

电容电压相对固定,RTL设计中考虑降低电路翻转次数,常见措施

  • 门控时钟,直接关掉时钟
  • 增加使能信号,时钟仍在翻转
  • 对芯片各模块控制
  • 尽量减少毛刺在电路中的传播
    • 在FSM中,使用低功耗编码(格雷码),单比特翻转
  • 热点(布线时,在一定面积内占用大量单元),如较大的mux,分解为较小mux

2.3 RTL设计指导原则

面积速度互换

  • 面积:DFF或LUT数量,门数量
  • 速度:稳定运行时达到的最高频率
  • 常用技巧:模块服用,乒乓操作,串并转换

乒乓操作

  • 适合对数据流进行流水线式处理,无缝缓冲与处理
  • 节约缓冲区空间
  • 使用低速模块处理高速数据

流水线设计

根据延迟划分,插入寄存器,提高电路运行频率。

小测验

作业

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注