Tcl语言:SDC约束命令create_generated_clock详解(下)

相关阅读

Tcl语言icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12488978.html?spm=1001.2014.3001.5482


设定生成时钟特性

        前文的末尾提到,当使用-divide by或-multiply_by选项创建生成时钟时,会根据master clock的时钟周期派生出生成时钟的周期,但对于时钟边沿的处理,两者则不一致。但是,仍然有方法在一定程度上对占空比进行设定。现在拿图1中的时钟倍频器举例说明,图2是它的波形图,假设clk的周期是20ns。

 图1 时钟倍频器

图2 倍频器电路时钟波形

        对clk时钟和生成时钟clk_out的定义为:

create_clock -period 20 -waveform {5 15} [get_port clk]
create_generated_clock -source [get_port clk] -multiply 2 [get_port clk_out]

        而前文所说,生成时钟的周期变为10ns,而所有的沿出现的时间都除以2,如图3所示。

图3 生成倍频时钟

        此时,可以通过-duty_cycle选项设定占空比,该选项只能和-multiply_by一起使用,用以表示时钟信号中占空比,继续拿图1举例,可以看出生成时钟和原时钟的占空比都为50%,如果想要一个占空比为30%的生成时钟,则可以使用下面的命令,生成时钟的占空比可以从图4中看出确实变为了30%。

create_generated_clock -source [get_port clk] -multiply 2 [get_port clk_out] -add -name test -duty_cycle 30

图4  -duty_cycle选项改变倍频生成时钟占空比

        如果存在不止一个高脉冲会怎么样,下面像前文一样定义一个复杂的时钟,拥有两个脉冲,占空比分别为20%和25%,并试图改变它的倍频生成时钟的占比,结果如图5所示,可以看到Design Compiler直接忽略了除第一个正脉冲之外的所有脉冲。

create_clock -period 20 -waveform {2 6 12 17} [get_port clk]
create_generated_clock -source [get_port clk] -multiply 2 [get_port clo_out] -duty_cycle 10

 图5 试图改变多脉冲生成时钟的占空比

时钟沿偏移

        前文介绍的-divide by和-multiply_by在生成一些波形时无能为力,因为无法控制生成信号的占空比。但-edge_shift选项使得创建任意形状的生成时钟成为了可能,下面举例说明。假设要根据图6生成图7所示的波形。

图6 原时钟波形 

图7 生成时钟波形 

        可以使用下面的命令,这意味对于生成时钟,第一个上升沿对齐原时钟的第一个上升沿,下一个下降沿出现在原时钟的第一个上升沿后2ns,第二个上升沿出现在原时钟的第二个上升沿(第三个沿)。时钟偏移可以是正向的。也可以是负向的,这使得用-edge和-edge_shift对任意复杂波形的建模成为了可能。

create_generated_clock -source [get_port clk] -edge {1 1 3} -edge_shift {0 2 0} [get_port clk_out]

生成时钟源引脚出现多个时钟

        正如前文所述,如果一个引脚或端口上有多个时钟传播至此,则无法推断出生成时钟属于哪个master clock,需要显式指明。这可以使用-master_clock选项实现,只需指定参数为master_clock的名字即可,下面我们用一个例子说明这一点,对于图8所示的电路,我们在U4的输出Y上定义了两个时钟,现在假设在输出c上定义两个生成时钟,它们分别基于clk1和clk2。

图8 多个生成时钟 

create_clock -name clk1 -period 10 [get_pin U4/Y]
create_clock -name clk2 -period 20 [get_pin U4/Y] -addcreate_generated_clock -source [get_port U4/Y] -divide_by 1 -master_clock [get_clock clk1] [get_port c] -name clk1_
create_generated_clock -source [get_port U4/Y] -divide_by 1 -master_clock [get_clock clk2] [get_port c] -add -name clk2_

组合电路生成时钟

        图9给出了一个源同步接口。在源同步接口中,时钟随着数据一起作为输出,这种结构的优点是结构时钟和数据的传输延迟相同,从而它们的延时大小不重要。接收设备可以根据输入时钟对输入数据进行采样。

图9 源同步接口

        图中的dataout引脚的延迟应该根据clk_out设定。这种情况下,生成时钟应该定义在clk_out上。这可以利用-combinational选项实现,设定了该选项后,生成时钟的周期与master clock相同,相当于-divide_by 1,这时不能用其他任何选项。

create_generated_clock -name clk_out -combinational -source [get_pins clk_out0_reg/Q][get_port clk_out]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/135306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yum工具的使用

yum工具的使用 rpm的弊端 前面我们讲了下rpm,那么rpm有什么弊端呢?其弊端是显而易见的,当用rpm安装软件时,若遇到有依赖关系的软件,必须先安装依赖的软件才能继续安装我们要安装的软件,当依赖关系很复杂的…

[CISCN 2023 初赛]go_session

文章目录 考点代码审计main.goroute.goIndex函数Admin函数Flask函数 解题过程伪造session获取server.py构造payload覆盖server.py命令执行 考点 session伪造,pongo2模板注入,debug模式覆盖源文件 代码审计 main.go package mainimport ("github.c…

汇编-变量

.386 .model flat,stdcall option casemap:none.data sum DWORD 0 ;创建一个全局变量,取名sum,初始化0 sum1 DWORD ? ;创建一个全局变量sum1,无初始化 ;问号(?)初始化值使得变量未被初始化,这意味着在运行时才会为该变量分配一个值 ;变量名…

【Node.js入门】1.3 开始开发Node.js应用程序

1.3 开始开发Node.js应用程序 学习目标 (1)熟悉开发工具Visual Studio Code的基本使用; (2)掌握Node.js应用程序的编写、运行和调试的基本方法。 构建第一个 Node.js应用程序 代码 const http require("htt…

【小技巧】WPS统计纯汉字(不计标点符号)

【小技巧】WPS统计纯汉字(不计标点符号) 首先,CtrlF打开查找页面: 选择“高级搜索”,然后勾选“使用通配符”,然后在“查找内容”后面输入:[一-﨩]。注意:一定要带“[]”和“-”且…

web前端——HTML+CSS实现九宫格

web前端——HTMLCSS实现九宫格 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&…

10道高频Vuex面试题快问快答

※其他的快问快答&#xff0c;看这里&#xff01; 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过…

07 # 手写 find 方法

find 的使用 find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。 ele&#xff1a;表示数组中的每一个元素index&#xff1a;表示数据中元素的索引array&#xff1a;表示数组 <script>var arr [1, 3, 5, 7, 9];var result arr.find(fun…

Chatgpt人工智能对话源码系统分享 带完整搭建教程

ChatGPT的开发基于大规模预训练模型技术。预训练模型是一种在大量文本数据上进行训练的模型&#xff0c;可以学习到各种语言模式和知识。在ChatGPT中&#xff0c;预训练模型被用于学习如何生成文本&#xff0c;并且可以用于各种不同的任务&#xff0c;如对话生成、问答、摘要等…

SpringBoot整合Kafka (二)

&#x1f4d1;前言 本文主要讲了SpringBoot整合Kafka文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ 上文链接&#xff1a;SpringBoot整合Kafka (一) &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页…

改进YOLOv5:结合ICCV2023|动态蛇形卷积,构建不规则目标识别网络

🔥🔥🔥 提升多尺度、不规则目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: �…

查看apk签名

cmd 命令&#xff1a; keytool -v -list -keystore "E:\xxx\release.jks"

kubernetes集群编排——k8s存储(configmap,secrets)

configmap 字面值创建 kubectl create configmap my-config --from-literalkey1config1 --from-literalkey2config2kubectl get cmkubectl describe cm my-config 通过文件创建 kubectl create configmap my-config-2 --from-file/etc/resolv.confkubectl describe cm my-confi…

Unreal UnLua + Lua Protobuf

Unreal UnLua Lua Protobuf https://protobuf.dev/ protobuf wire format&#xff1a;pb 编译到底层的数据协议 https://github.com/starwing/lua-protobuf/blob/master/README.zh.md buffer 处理 lua string 可以当 buffer 用&#xff0c;# len 不会遇到 0 截断&#xf…

算法leetcode|85. 最大矩形(rust重拳出击)

文章目录 85. 最大矩形&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;样例 4&#xff1a;样例 5&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 85. 最…

Python算法例8 将整数A转换为B

1. 问题描述 给定整数A和B&#xff0c;求出将整数A转换为B&#xff0c;需要改变bit的位数。 2. 问题示例 把31转换为14&#xff0c;需要改变2个bit位&#xff0c;即&#xff1a;&#xff08;31&#xff09;10&#xff08;11111&#xff09;2&#xff0c;&#xff08;14&…

CAN 协议常见面试题总结

0.讲一下CAN通讯的过程 第一段&#xff1a;需要发送的通讯设备&#xff0c;先发送一个显性电平0&#xff0c;告诉其他通讯设备&#xff0c;需要开始通讯。 第二段&#xff1a;就是发送仲裁段&#xff0c;其中包括ID帧和数据帧类型&#xff0c;告诉其他通讯设备&#xff0c;需…

智慧农业:农林牧数据可视化监控平台

数字农业是一种现代农业方式&#xff0c;它将信息作为农业生产的重要元素&#xff0c;并利用现代信息技术进行农业生产过程的实时可视化、数字化设计和信息化管理。能将信息技术与农业生产的各个环节有机融合&#xff0c;对于改造传统农业和改变农业生产方式具有重要意义。 图扑…

Android Studio(项目收获)

取消按钮默认背景色 像按钮默认背景色为深蓝色&#xff0c;即使使用了background属性指定颜色也不能生效。 参考如下的解决方法&#xff1a; 修改/res/values/themes.xml中的指定内容如下&#xff1a; <style name"Theme.TianziBarbecue" parent"Theme.Mater…

OSCP系列靶场-Esay-Dawn

总结 getwebshell → SMB共享无密码 → SMB存在上传功能 → 存在周期执行任务 → SMB上传反弹shell → 被执行获得webshell 提 权 思 路 → suid发现zsh → -p容器提权 准备工作 启动VPN 获取攻击机IP > 192.168.45.163 启动靶机 获取目标机器IP > 192.168.242.11 信…