本文转载自: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. MySQL的架构与历史1.5MySQL的存储引擎

    1.5 MySQL的存储引擎 1.5.1 InnoDB存储引擎 InnoDB是 MySQL的默认事务型引,也是最重要.使用最广泛的存储引擎.它被设计用来处理大量的短期 (short-lived)事务, ...

  2. Oracle数据库字符集与国家字符集

    一般情况下数据库字符集UTF-8:国家字符集:UTF-16.   服务器端:(oracle服务器端字符集)数据库字符集在创建数据库时指定,在创建后通常不能更改.在创建数据库时,可以指定字符集(CHAR ...

  3. Demo of canvas, canvas optimization and svg

    It used the canvas to draw the curves in the old project, and the client felt that it was vague, so ...

  4. 看K线学炒股(8.10)

    今天大盘看起来疲软但强势的一天,收涨1.01%. 广东骏亚,现价21.39,看尾盘,这只票现在看还有下跌空间,但也有反弹可能,跌到21元以下均价上可加仓,博止跌反弹.现在60分钟线看有点阴雨绵绵的意思 ...

  5. idea安装破解

    转 一般都会去官网下载,官网地址IntelliJ IDEA,官网上对于不同的操作系统(windows,macOS,Linux)都有两个版本可供下载 3|0安装 确认已经安装好了 JDK ,每个IDEA ...

  6. 35.Linux 性能监控常用命令

    内存 top CPU yum install -y sysstat mpstat 网络 netstat //参数说明 //-n:拒绝显示别卖,能显示数字的全部转化数字 //-l:仅列出Listen(监 ...

  7. Datax初使用

    为了掌握大数据采集技术,自学习了datax的使用 简介: DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.HDFS.Hive.OceanBase.H ...

  8. 如何设置 iOS 开发环境

    原文:https://lwebapp.com/zh/post/how-to-set-up-the-ios-development-environment 介绍 移动互联网时代,掌握 iOS 开发和安卓 ...

  9. Net6 托管服务、FluentValidation

    Net6 托管服务.FluentValidation 托管服务 1.场景,代码运行在后台.比如服务器启动的时候在后台预先加载数据到缓存,每天凌晨3点把数据导出到备份数据库,每隔5秒钟在两张表之间同步一 ...

  10. mysql常规主从复制跟基于GTID的主从复制方法

    一,环境部署 192.168.113.129 193.168.113.130 二进制部署mysql5.7的方法见mysql5.7二进制部署,以及部分优化参数 二,mysql基于二进制日志点的复制 1, ...