ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

create_generated_clock 的用法

2022-07-08 10:32:15  阅读:231  来源: 互联网

标签:CLK create clock source generated master


本文转载自:create_generated_clock_亓磊的博客-CSDN博客_create_generated_clock

 

文章目录

 

参数source和master_clock区别

source是时钟源的pin,工具会根据source pin找到master时钟,generated时钟相位是基于source pin描述的。
master_clock是时钟源的时钟名称,而且要伴随参数-add,表明一个master_clock,有多个source pin路径。

create_clock叫master时钟;
create_generated_clock叫generated时钟。

总之,create_generated_clock 是用来说明generated clock与source pin的相位(边沿)关系。同时 根据source pin 找到master clock以及source pin 和master clock的关系, 最终会确定generated clock和master clock的相位(边沿)关系。

create_generated_clock 介绍

create_generated_clock 是用来说明generated clock与source clock的相位(边沿)关系,
同时根据source clock找到master clock以及source clock 和master clock的关系,
最终会确定generated clock和master clock的相位(边沿)关系。

相对create_clock的区别,是继承了master_clock的相位特性。
 

在genereated clock的时候一定要明确generated clock与master clock的相位关系(rise->rise or rise->fall or fall->rise or fall->fall),
这些关系由桥梁source clock嫁接,所以需要名曲generated clock和source clock,以及source clock和master clock的关系,如果根据声明找到的generated clock
和master clock的关系和实际的关系不一致,否则会造成一些分析错误。

如:sta的时候找不到generated clock和source clock相位关系,会将generated clock的source latency 设置为0

如下图:
这里写图片描述
举例:注意:CLKdiv2的source,应为~CLK,CLK的反相。

create_clock -period 10 CLK
create_generated_clock \
	-name CLKdiv2 \
	-divide_by 2 \
	-source CLK \
	[get_pins Udiv/Q]
 

这个例子,会导致CLKdiv2和CLK的相位有180°的相位差,这个约束与设计是不符合的。这个例子是有问题的。
根据声明,generated 和master clock的关系如下(工具会根据source clock 找到master clock,并确定source clock 和master clock的关系,当前source clock即master clock)。
下图:(原作者画成了3分频,不过原理一样,就不改了。)
这里写图片描述
而实际上的,generated 和 master clock的关系如下
这里写图片描述
解决方法有2种:
1.改变generated clock的source,即让generated clock和source clock的路径唯一且单一(单一是指,声明的相位边沿关系和实际的相位边沿关系一致)。
一般做法就是将source clock设置在触发器的clock端。如下:

create_generated_clock \
-name CLKdiv2 \
-divide_by 2 \
-source [get_pins Udiv/CLK] \
[get_pins Udiv/Q]

这样generated clock和source clock的关系和声明的一致。
工具会根据声明的source clock 找到它的master clock,同时确定source clock和master clock相位相反的关系,
由此就确定了generated clock和master clock的关系。

2.直接声明generated clock和master clock的相位边沿关系。如下:

create_generated_clock \
	-name CLKdiv2 \
	-edges {2 4 6}
	-source CLK \
	[get_pins Udiv/Q]

create_generated_clock有多个master_clock的情况

这个情况,需要特别处理。
这里写图片描述

create_clock -period 10 CLK
create_generated_clock \
	-name CLKdiv2 \
	-divide_by 2 \
	-source FFdiv2/CLK \
	UMUX/Y \
	-master CLK -add
create_generated_clock \
	-name CLKdiv4 \
	-divide_by 4 \
	-source FFdiv4/CLK \
	UMUX/Y \
	-master CLK -add
set_clock_groups -physically_exclusive \
	-group {CLK} \
	-group {CLKdiv2} \
	-group {CLKdiv4}
 

此时,PT时序分析报告如下:
这里写图片描述
可以知道source latency 选择了不同路径
这里写图片描述
所以在声明generated clock的时候不仅要保证generated clock 和master clock 相位边沿关系和实际的一致,还要保证generated clock和master clock的路径唯一。
如下图,列出了可以声明唯一generated clock点。
这里写图片描述
同时考虑到选择器之前各个时钟间有crosstalk,选择器之后没有crosstalk,所以声明如下:
这里写图片描述

总而言之,create generated clock的时候要保证2点
1.一致性:声明的generated clock和master clock相位边沿的关系要和实际的一致。
2.唯一性:确保generated clock和master clock的路径的唯一。

满足上面2点,在STA分析的时候就不会造成不必要的误解。

若直接将 CLKmux, clkdiv2_mux, clkdiv4_mux 省略,然后分别在MUX/Y端定义三个generated clock,其 source 设定为CLK, CLKdiv2, CLKdiv4,也是可以的。

 

标签:CLK,create,clock,source,generated,master
来源: https://www.cnblogs.com/hxing/p/16457323.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有