来自微信公众号 “数字芯片实验室”
时序分析的一个重要部分是准确地指定时钟和相关属性,例如延迟(latency)和不确定性(uncertainty)。
EDA工具可以分析以下类型的时钟信息:
时钟网络latency和 skew:时钟网络相对于时钟源的延迟(latency)和
时钟网络中到达各个终点的时间偏差(skew)。对于多时钟设计,还可以指定时钟间的偏差。
在生成时钟树之前,一般设置时钟网络为ideal
门控时钟:门控时钟是一个由门控逻辑(除了简单的缓冲器或反相器)控制的时钟信号。
生成时钟:生成时钟是由另一个时钟信号产生的,例如分频器。
创建时钟
使用create_clock命令指定设计中的所有时钟。这个命令在指定时钟源创建时钟。时钟源 可以在输入端口(input port)或内部引脚(internal pin)。 EDA工具会自动跟踪时钟网络到达其扇出的所有寄存器。
使用create_clock命令创建的时钟是理想的。所以在创建时钟后,必须准确地描述时钟网络以执行准确的时序分析。
create_clock命令同时也创建了一个与时钟同名的路径组(path group)。
在端口C1和CK2上创建时钟周期为10,上升沿为2,下降沿为4:
create_clock -period 10 -waveform {2 4} {C1 CK2}
EDA工具通常支持分析多个时钟设计。使用create_clock命令的-add选项在同一端口或引脚上定义多个时钟。
创建虚拟时钟
可以使用create_clock命令为外部时钟器件定义虚拟时钟(Virtual Clock)。 虚拟时钟在当前设计中没有实际时钟源,但可以使用它来设置输入或输出延迟。
要创建名为vclk的虚拟时钟
create_clock -period 8 -name vclk -waveform {2 5}
选择时钟对象
get_clocks命令选择时钟,例如,report周期小于等于5的时钟PHI1*的属性
report_clock [get_clocks -filter “period <= 5.0” PHI1 * ]
将命令应用于所有时钟
all_clocks命令等同于get_clocks *命令。该命令返回所有时钟对象的集合。 例如,
set_max_time_borrow 0 [all_clocks]
删除时钟对象
可以使用remove_clock命令删除时钟对象。例如,
remove_clock [get_clocks CLKB *]
要删除所有时钟:
remove_clock –all
reset_design命令除了删除时钟还删除了其他信息。