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,一经查实,立即删除!

相关文章

239.滑动窗口的最大值

原题链接&#xff1a;239.滑动窗口的最大值 不是很懂&#xff0c;需要复刷 全代码&#xff1a; class Solution { private:class MyQueue { //单调队列&#xff08;从大到小&#xff09;public:deque<int> que; // 使用deque来实现单调队列// 每次弹出的时候&#xff…

YOLOv5独家改进:分层特征融合策略MSBlock | 南开大学提出YOLO-MS |超越YOLOv8与RTMDet,即插即用打破性能瓶颈

💡💡💡本文独家改进:分层特征融合策略MSBlock,不同Kernel-Size卷积在不同尺度提升特征提取能力,最终引入到YOLOv5,做到二次创新 1)MSBlock使用;2)和C3结合使用 推荐指数:5颗星 MSBlock | 亲测在多个数据集能够实现大幅涨点,小目标检测效果也不错 💡💡…

Docker的安装以及使用

每次安装Docker都会报一堆错&#xff0c;痛定思痛干脆自己总结一篇&#xff01;&#xff01;&#xff01; Docker的安装 卸载系统自带的旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc 获取软件最新源 sudo apt-get update 安装apt依赖包 s…

vue3中el-tree设置默认选中节点和展开节点

1.el-tree设置 node-key&#xff0c;current-node-key&#xff0c;default-expanded-keys&#xff0c;highlight-current&#xff1a; <el-tree ref"taskTree" :data"ptreeData" node-key"key" :current-node-key"currentKey" …

yum工具的使用

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

[CISCN 2023 初赛]go_session

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

正则表达式:掌握文本处理的秘密武器

当我们处理文本数据时&#xff0c;正则表达式是一种强大的工具&#xff0c;可以帮助我们快速、准确地找到所需的信息。通过匹配和筛选文本模式&#xff0c;正则表达式可以简化文本处理任务&#xff0c;提高工作效率。本文将带你走进正则表达式的世界&#xff0c;探讨它的工作原…

汇编-变量

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

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

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

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

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

算法leetcode|87. 扰乱字符串(rust重拳出击)

文章目录 87. 扰乱字符串&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 87. 扰乱字符串&#xff1a; 使用下面描述…

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&…

C 和 C++ 可变参数介绍

文章目录 前言概念C 的可变参数参数列表 #va_list 4组宏 C 的可变参数参数列表 #va_list 4组宏初始化列表 initializer_list<> 类模板可变参数模板 总结参考资料作者的话 前言 C 和 C 可变参数介绍。 概念 可变&#xff08;长&#xff09;/不定&#xff08;长&#xff…

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

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

NOIP2023模拟14联测35 charlotte

题目大意 给你一棵有 n n n个节点的树&#xff0c;并用 01 01 01串告诉你哪些节点上有棋子&#xff08;恰好一棵&#xff09;。 你可以进行若干次操作&#xff0c;每次操作可以将两颗距离至少为 2 2 2的棋子向彼此移动一步。 问能否通过若干次操作使得所有的棋子都在一个点上…

07 # 手写 find 方法

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

【Edge】微软Edge每次启动自动导入Chrome收藏夹,无法取消“每次启动浏览器时导入浏览数据”功能的解决方法(202311)

写在前面 Edge现在也不管用户体验了吗? 这个BUG都快一个月了&#xff0c;还没见修复&#xff0c;从118.0.2088开始&#xff0c;我是在2023年10月份一次更新后发现的这个BUG&#xff0c;结果社区论坛什么信息都没有&#xff0c;英文也没收到。 Edge的BUG现象 不知道哪次Edge…

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

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

SpringBoot整合Kafka (二)

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

IDEA 函数下边出现红色的波浪线,提示报错

Inferred annotations: Method makeOkResult: org.jetbrains.annotations.Contract("_, _, _, _ -> new") org.jetbrains.annotations.NotNull Parameter headers: org.jetbrains.annotations.NotNull 出现这个提示&#xff0c;我应该怎么处理这个函数&#xff1…