io约束在顶层和模块级的主要命令都是以下几个,但是实际应用的复杂程度不可同日而语,本篇会先介绍模块级io约束实战经验,然后讲解顶层io约束复杂性,过程中会介绍ddr接口时序。
set_input_delayset_output_delayset_driveset_driving_cellset_input_transitionset_load...各个命令的具体用法可以在pt中通过man了解详情,这里就不费劲重复了:
pt_shell > man set_input_delay模块级io约束实战
上图给出了一种in2reg路径的示意图,dua为当前模块,外部有一个假想的虚拟寄存器在驱动cin端口,这种情况下我们可通过以下命令来约束:
set period 8create_clock -name clkp -period $period [get_ports clkp]#创建同频率的虚拟时钟create_clock -name vclkp -period $period#参考值为0.6,根据实际情况调整set_input_delay [expr 0.6 * $period] -clock vclkp [get_ports cin]#假设端口buffer为bufx4set_driving_cell -lib_cell bufx4 -pin z [get_ports cin]虚拟时钟的作用
使用set_input_delay时,可以指定真实时钟clkp,也可以指定虚拟时钟vclkp,在cts之前是没有区别的。然而,在cts之后,如果指定的是真实时钟,那么虚拟寄存器的时钟延迟就被忽略了。如果指定的是虚拟时钟,工具往往可以根据内部真实时钟的平均延迟来估算外部虚拟寄存器的时钟延迟,更加合理。
一般地,为了让顶层的时序更容易满足,在模块级优化的时候,都会对自己内部的in2reg和reg2out路径约束更加严格,可以设置外部的延迟为60%的时钟周期,给内部的数据路径留40%的空间。不过,具体问题需要具体分析了。
需要注意,set_input_delay 可以指定-max和-min选项,分别对应setup和hold时序检查,如果只是指定其中一个选项,或者都不指定,那么工具在检查setup和hold时,会使用相同的值。
端口buffer和set_driving_cell配合使用
在实际项目中,为了避免模块之间,或者模块和顶层之间io接口部分出现时序问题,一般会要求在靠近io端口的地方添加具有一定驱动能力的端口buffer。在这种情况下,可以通过set_driving_cell来模拟端口的真实外部环境。假如没有端口buffer,也可以通过set_input_transition大致指定输入端口的驱动能力。
总体来说,set_driving_cell会考虑到ocv的影响,input transition是查表计算出来的,而set_input_transition比较简单粗暴,在io端口时序不那么关键的时候,也可以使用。但在顶层,一般使用后者,因为io单元的输入电容较大,芯片外部具备驱动能力较强的器件,标准单元库中没有buffer能够驱动。
顶层io约束实战
顶层io约束在原理上与模块级没有本质区别,然而由于顶层需要与外部器件进行通讯,除了gpio,还会接触到各种标准协议接口,例如uart,i2c,spi,lvds,ddr等等,在写sdc前需要读一读协议。更复杂的情况是,由于存在端口复用的情况,往往同一个端口具备多种时序要求,需要逐一定义。
上图是一个pinmux(也称为iomux)的示意图,在soc设计中非常常见,特别对于io limited的芯片来说,pinmux是很有必要的。看似复杂,其实只要各个击破就能达到目标,sdc标准制定者已经为我们考虑到了这一点,通过set_input_delay的选项-add_delay,可以对同一个端口设置多重约束,例如:
set_input_delay [expr 0.6 * $perioda] -clock clka [get_ports cin] -add_delayset_input_delay [expr 0.3 * $periodb] -clock clkb [get_ports cin] -add_delay另外,针对顶层输出数字端口,需要根据芯片使用的实际情况set_load,一般的gpio端口负载电容都在pf级别。
尼得科恩布拉科北京工厂宣布量产NEX和VEH系列压缩机
C2837x入门指南:开发环境
Hi2601B智芯多功能平均电流型 LED 恒流驱动器
【航天品质】aigo数码录音笔R3366专业录音让声音更清晰
java文档注释的作用
Top和Block实战经验以及DDR接口时序
引领智慧协同新趋势!MAXHUB全国新品品鉴会上海站完美收官
三大运营商5G集采展开,5G规模建设或将加速
嵌入式系统的实时数据接口扩展研究
《2023 汽车行业数字化转型报告》重磅发布
TE Connectivity推出M8/M12 传感器线束
工信部遴选出305个智能制造试点示范项目,生产效率平均提升37.6%!
松下中央空调和东芝中央空调优缺点对比
LoRa未来将如何影响国内物联网生态的发展前景
玻璃纤维布如何区分好坏
笔记本键盘个别按键失灵怎么办
透过等保2.0解读业务安全新趋势
如何帮助开发人员快速开展物联网应用
物联网技术在公用事业领域的潜力怎么样
华为打造自己芯片生产线!华为2021年上半年业绩下滑,利润率达到9.8%!