有时候我们想让多个信号或多或少的出现在同一时刻(也就是说这些信号之间的时间差应该在某个界限之内)。
一个经典的情况就是多位的数据总线,总线上的信号应该(几乎)同时到达。
如果其它信号均由其中一个信号生成,那么要满足上面的要求,我们可以通过设置set_min_delay约束来实现。
但是如果这些信号都是互相独立生成的呢?
或者说,大多数情况下,这些信号可能都是由同一个信号源生成的(例如同一个时钟源)?
确保小的信号传输偏移的一个方式就是相对共同的源约束每个信号。
举个例子,一个32位的数据信号,相对同一个时钟源(用于生成这些信号)我们可以对每个信号进行约束。
但是使用这种方法来控制数据总线上信号之间的偏移需要非常严格的时序约束。
例如我们需要确保不同信号之间的偏移差在0.5ns范围内。
因此我们需要设计延迟规范,比如定义最小和最大延迟,确保所有信号能在0.5ns偏差范围内全部到达节点。
这个要求不是对于某个具体的0.5ns节点来说的,而是需要满足任意一个节点——在0.5ns的延迟范围内所有信号都能到达。
xdc可以通过set_data_check命令来规定这样的偏差控制要求。
我们可以使用这个命令来定义两个数据信号之间所能接受的最大偏差值。
举个例子:
set_data_check –from a –to b 0.5
也就是说ab之间的传输时间在0.5之内。
下面让我们来使用这个命令来规范一个32位总线的数据偏移问题。
这需要31*32/2条命令来定义任意数据信号之间的组合。
另一个简单的方法(只是稍微加一些限制)是取其中一位数据信号作为参照,根据这个信号来规范其它数据信号。
对于每个数据信号位,set_data_check命令后面都要加“-to”参数。
这样将仅需要32条这样的命令。
举个例子:
set_data_check –from a[0] - to a[15] 0.25
set_data_check –from a[1] –to a[15] 0.25
….
set_data_check –from a[31] –to a[15] 0.25
注意一定要将想定义的数值减半,因为定义的是双向的。
因此考虑到的极端情况就是一个信号可能早些到达,另一个信号可能晚些到达。
因此所有要约束的信号之间的最大时间偏移将是具体值的两倍。
上面的命令设置可以确保任意的信号组合都能够使用,信号之间的最大时间偏移为0.5ns。
使用虚拟实验设计预测先进FinFET技术的工艺窗口和器件性能
网分射频测试线的使用教程
好消息!中国新能源汽车产销连续第6年称霸全球
双向TVS的符号有什么区别吗
压力测力传感器和称重传感器区别在哪里?
确保数据总线的信号偏移控制
刷脸时代,5G+智慧零售方案驱动零售场景创新
小米6最全信息汇总:参数售价曝光,小米6Plus或同步发售
RFS推出2款新品 丰富了其备受欢迎的RFX-TREME三频天线产品系列
千元机360N5今日发布:骁龙653+6G内存仅1399元!
国家电网积极推动储能产业发展“超级充电宝”助建新型能源体系
OV抢占三季度销售前两位 华为凭借mate9可翻身吗?
追求更小尺寸,3DIC将获得广泛应用?什么h是3DIC?传感器该如何使自己更“苗条”
距离iPhone7发布还有一周 这八点内容值得关注
高性能计算市场或将迎来三分天下的格局?
苹果将要求APP提供追踪用户许可权限
寒冬来临,三星借AMOLED面板称霸手机市场
公共云可以用来推动银行的数字化转型
iphone8什么时候上市?iphone8最新消息:iPhone 8九月发布!苹果的销量就要靠他了
华为Mate10将成为国产最强拍照旗舰:麒麟970性能叫板苹果A11?