FPGA设计杂谈之四:时序模型

目录

一、概念

1.1 时序模型定义

1.2 时序模型组成

1.3 应用阶段

二、时序模型文件

2.1 时序模型文件格式

2.2 Vivado时序模型


一、概念

1.1 时序模型定义

 时序模型(Timing Model) 是用于描述数字电路中信号传播延迟、时序关系和功耗特性的数学模型,是Vivado进行时序分析、优化和验证的基础。时序模型由芯片厂商提供,并以特定的文件格式(如LIB、LEF、SPEF、SDF等)存储。

1.2 时序模型组成

时序模型的构成主要由单元延迟,互连线延迟,时序弧,时钟特性

单元延迟(Cell Delay):描述信号通过逻辑单元(如LUT、触发器、门电路等)的延迟,也包括上升延迟(rise delay)和下降延迟(fall delay)。

互连线延迟(Interconnect Delay):描述信号通过互连线(如布线资源)的延迟。

包括电阻、电容和电感等寄生参数。

时序弧(Timing Arc):描述信号在输入引脚和输出引脚之间的传播路径。包括建立时间(setup time)、保持时间(hold time)和恢复时间(recovery time)等。

时钟特性(Clock Characteristics):描述时钟网络的延迟、抖动和偏斜(skew)。

1.3 应用阶段

使用EDA工具如Vivado进行设计时,在综合以及实现阶段都会使用到时序模型进行时序分析,

综合(Synthesis):使用时序模型优化逻辑综合,以满足性能和面积目标,主要使用LIB和DB文件。

布局布线(Place and Route):使用时序模型指导布局布线工具优化信号延迟和时钟网络,主要使用LEF、SPEF、LIB和DB文件

仿真:主要使用SDF和LIB文件,实现基于时序的仿真

二、时序模型文件

2.1 时序模型文件格式

时序模型文件lib通常由库声明,单元定义,引脚定义,时序弧四个主要部分组成。

//库声明部分定义了库的名称、版本、单位和其他全局属性。

library (example_library) {

 technology (cmos);

 delay_model : table_lookup;

 time_unit : "1ns";

 voltage_unit : "1V";

 current_unit : "1mA";

 pulling_resistance_unit : "1kohm";

 capacitive_load_unit (1, pf);

//单元定义部分描述每个逻辑单元的特性,以cell开头

 cell (AND2) {

  area : 5;

//引脚定义部分描述了每个引脚的输入/输出方向、电容和时序特性

  pin (A) {

   direction : input;

   capacitance : 0.1;

  }

  pin (B) {

   direction : input;

   capacitance : 0.1;

  }

  pin (Y) {

   direction : output;

   function : "(A & B)";

//时序弧部分描述了信号在输入引脚和输出引脚之间的传播路径及其延迟值。

   timing () {

    related_pin : "A B";

    timing_type : combinational;

    cell_rise (delay_template_3x3) {

     index_1 ("0.1, 0.3, 0.5");

     index_2 ("0.1, 0.3, 0.5");

     values ("0.2, 0.3, 0.4", \

         "0.3, 0.4, 0.5", \

         "0.4, 0.5, 0.6");

    }

    rise_transition (delay_template_3x3) {

     index_1 ("0.1, 0.3, 0.5");

     index_2 ("0.1, 0.3, 0.5");

     values ("0.1, 0.2, 0.3", \

         "0.2, 0.3, 0.4", \

         "0.3, 0.4, 0.5");

    }

2.2 Vivado时序模型

Vivado的时序模型文件在安装路径下,路径示例如D:\Vivado2024.2\Vivado\2024.2\data\parts\xilinx,按不同的family,如kintex7,spartan7,virtex7等进行了划分

read-normal-img

以kintex7为例,在liberty目录下可以看到kintex7.lib和kintex7_pt.lib文件

read-normal-img

kintex7_pt.lib文件中,库声明内容如下

read-normal-img

单元定义以cell开头,后面为对应的单元名称,里面pin为单元的引脚,包含了引脚的方向说明

read-normal-img

时序弧部分Cell(FDPE)为例,包含了各引脚间的关系,时序类型

read-normal-img

其中,timing_type中有minimum_period,combinational,min_pulse_width,setup_rising,setup_falling,hold_rising,setup_falling,rising_edge,falling_edge

minimum_period:时钟引脚支持的最小周期

combinational:输入引脚到输出引脚的时序arc

min_pulse_width:对于时钟引脚所支持的信号最小脉冲宽度

hold_rising:描述数据信号在时钟上升沿之后的保持时间(Hold Time)。

setup_rising:描述数据信号在时钟上升沿之后的建立时间(Setup Time)

hold_falling:描述数据信号在时钟下降沿之后的保持时间(Hold Time)

setup_falling:描述数据信号在时钟下降沿之后的建立时间(Setup Time)

recovery_rising:描述复位信号在时钟上升沿之前的恢复时间(Recovery Time)

removal_rising:描述复位信号在时钟上升沿之后的移除时间(Removal Time)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA芯中的小蚂蚁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值