zoukankan      html  css  js  c++  java
  • [FPGA与ASIC] 优化方法

    • reg表示综合出触发器(该说法错误).因为always块(变量必须为reg)既能是时序电路,也能是组合电路。
    • 组合电路一般是电平敏感的always块,或assign语句;
    • 时序电路一般是时钟沿敏感的always块。

    优选设计原则

    优选同步设计

    • 尽可能使用时钟驱动的触发器(Flip-Flop)作为时序器件。因为综合器在时钟信号的基准下能优化触发器之间的组合电路。

    优选触发器输出

    • 模块的输出推荐使用触发器输出,这使得模块与模块间的连线在时序上有充裕的延迟时间,便于后端工具满足时序要求。
      也可以消除毛刺(组合逻辑输出信号容易有毛刺出现)。

    区分控制模块和运算模块

    • 使设计更加简捷。

    写完整的信号敏感列表

    • 如果有信号没有列在信号敏感列表上,综合器会综合出Latch。

    复位所有触发器

    • 避免在测试向量仿真时产生Unknown。
    • 异步输入端只有复位信号,不要混合其他同步信号。

    时钟在顶层模块分频

    • 时钟信号不会再综合阶段综合,而是在自动布局布线阶段做CTS。

    内存(MEM,存储器)放在顶层模块

    • 内存合并之后可能会得到架构上的简化,或者更易布局。

    使用有意义的命名

    • 如使用rst_n表示复位信号低电平有效。

    避免/禁用设计原则

    禁用异步触发器或锁存器(Latch)

    • JK触发器和锁存器不能算作同步时序器件。

    禁用含反馈的纯组合逻辑电路

    • 组合逻辑的反馈形成异步电路,应予以避免。

    禁用混合上升沿和下降沿的设计

    混合使用会压缩组合逻辑的传递时间,而且在Scan Chain时,下降沿触发器无法被串接。

    避免使用触发器驱动其他触发器

    对于综合器而言,这违反了"时钟信号的综合应由CTS(Clock Tree Synthesis)处理"的原则。但很难避免,例如时钟分频电路。

    禁用模块内部的Inout

    • 设计更加简捷。

    其他设计

    有限状态机的状态编码方案

    • 二进制编码:parameter [1:0] S0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;
    • 格雷码:parameter [1:0] S0=2'b00,S1=2'b01,S2=2'b11,S3=2'b10;
    • 独热码:parameter [3:0] S0=4'b0001,S1=4'b0010,S2=4'b0100,S3=4'b1000;

    二进制和格雷码: 占用触发器资源少(位宽少),但转移条件和跳转时(判断2位)组合逻辑多;
    独热码: 占用触发器资源多(位宽多),但转移条件和跳转时(只判断1位)组合逻辑少;

    • FPGA编程(Flip-Flop多)一般使用独热码;
    • CPLD编程(组合逻辑多)一般使用格雷码或二进制码;
    • IC设计中,状态较少时,使用独热码,状态较多时,使用格雷码.

    算术模块

    • 避免使用L=A×C+B×C,使用L=(A+B)×C;(前者用两个乘法器)
    • 避免使用A={B,1'b0}+1,使用A={B,1'b1};(前者用了加法器)
    • 避免使用Y=A+B+C+D,使用Y=(A+B)+(C+D);(前者串接了3个加法器,形成3级延时,后者2级加法器,形成2级延时)

    结论: 优选使用 逻辑运算(位运算) > 算术运算; 加法运算 > 乘法运算; 逻辑表达式合并为每2项1级。
    如果还不行,那就切流水咯。

  • 相关阅读:
    处理视频流时可能出现的重复帧问题及解决办法
    shell脚本中cd命令无效
    C++教程之初识编程
    若干排序算法的Python实现方法及原理
    C/C++反三角函数使用注意
    ubuntu下安装pip install mysqlclient 报错 command "python setup.py egg_info" failed with error.....解决方案
    使用scrapy框架的monkey出现monkeypatchwarning: monkey-patching ssl after ssl...的解决办法
    机器学习之利用KNN近邻算法预测数据
    python数据分析的工具环境
    python代码实现经典排序算法
  • 原文地址:https://www.cnblogs.com/charleechan/p/12620247.html
Copyright © 2011-2022 走看看