本文转载自: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,也是可以的。

create_generated_clock 的用法的更多相关文章

  1. 【黑金原创教程】【TimeQuest】【第七章】供源时钟与其他

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  2. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  3. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  4. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  5. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  6. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  7. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  8. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

  9. chattr用法

    [root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...

  10. 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)

    vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ...

随机推荐

  1. SQL Server【基础】DDL 数据定义语言

    DDL 操作数据库,schema,表等语句 Create,Alter,Drop,DECLARE database --1.说明:创建数据库 Create DATABASE database-name ...

  2. 看K线学炒股(0803)

    高位板块的高位个股要回避,即便走反抽行情也要慎重.像容捷股份. 同是房地产行业的荣盛发展和西藏城投,差别怎么这么大?荣盛发展市净率0.4,西藏城投是4.8,市盈率更是一个天上一个地下,但股价呢?所以股 ...

  3. 通过ASP生成html纯静态页面的简单示例

    本站收录这篇文章通过ASP生成html纯静态页面的简单示例,详细解说文章中相关静态 asp 技术与知识,欢迎能给大家一些在这方面的支持和帮助!下面是详细内容: 原理:通过浏览器传送变量,如 http: ...

  4. 微信小程序 - canvas实现多行文本 ,实现文本断行

    1.canvas绘制文本坑点 绘制的文本不管多长,永远只有一行,不会断行. 2.解决思路 根据每行文本字数来断行,超出的就向下排列. 由于 canvas绘制文本的语法如下: context.fillT ...

  5. PyMySQL删除

    title: PyMySQL删除 author: 杨晓东 permalink: PyMySQL删除 date: 2021-10-02 11:27:04 categories: - 投篮 tags: - ...

  6. Django和DRF的区别

    Django和DRF的区别 一.Django REST Framwork 和 Django 1.两者的概念: Django REST Framwork: 将数据库的东西通过ORM的映射取出来,通过vi ...

  7. WDA学习(23):UI Element:Radio Button Group & CheckBox Group使用

    1.16 UI Element:Radio Button & CheckBox使用 本实例测试Radio Button Group,CheckBox Group等的使用. 注:Dropdown ...

  8. Count Triplets That Can Form Two Arrays of Equal XOR

    Count Triplets That Can Form Two Arrays of Equal XOR 题意 给定一个数组,求多少个三元对\((i,j,k)\)满足\(S(i,j-1)=S(j,k) ...

  9. noi 1.5 1 求平均年龄

    描述 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位. 输入 第一行有一个整数n(1<= n <= 100),表示学生的人数.其后n行每行有1个 ...

  10. WEB攻击与防御技术 pikachu——sql注入

    如图所示,sql注入 一.数字型注入 既然是post那我们拿burp抓一下包 id=2,我们改一下sql最常用的语句2 or 1=1发现注入成功 二.字符型注入 直接上语句1' or 1=1 # 出来 ...