之前规划的系列除了异步专题外已经均推送完成,所以这一篇开始,把前一段时间在项目交付过程中的一些学习与总结作为一个专题推送。
记得刚出新手村时和某位大佬聊到过,他说你逻辑里写了在某级计算一个结果,但是这个值不一定是在这一级产生的,可能是上一级产生也可能是下一级产生。当时懵懂无知我就光“啊对对对”,实际上心里想的是“是不是跟我扯呢,怎么我写在这一级出的结果还能流窜到其他级去呢,那整个逻辑链不就乱了么?”当时啥也不懂,所以也没有多问,后来想想应该说的就是综合过程的retiming策略。
综合的retiming策略通过重新分配组合逻辑路径中的时序,达到优化电路性能的目的。具体来说,它可以在组合逻辑和时序逻辑路径中插入或删除缓冲器、反相器甚至触发器等元素,从而调整信号的传播时间,使关键路径的延迟满足设计要求。我们平时总谈起的这个DC里的retiming优化更多好像是指涉及到时序调整的操作,用一个简化的例子来说明下。假设我们现在有一个操作是D = A+B+C,在第一级时三个数相加,然后空打了一拍最后输出:
由这里延伸,最近学习到的另外一点经验就是,我们不是经常会在设计中调用DW ip吗,当DW的ip时序不满足时既可以配置DW内的打拍级数,也可以在其后面插入寄存器(比如我们手动加2拍寄存器),然后通过set_optimize_registers命令来优化这个DW使其逻辑分散于这几拍中完成。
系列文章入口——
【芯片验证】sva_assertion: 15道助力飞升的断言练习 |
【芯片验证】可能是RTL定向验证的巅峰之作 |
【芯片验证】RTL仿真中X态行为的传播 —— 从xprop说起 |
【芯片验证】年轻人的第一个systemVerilog验证环境全工程与解析 |
【芯片设计】verilog中有符号数和无符号数的本质探究 |
【芯片设计】论RTL中always语法的消失术 |
【芯片设计】代码即注释,注释即代码 |
【芯片设计】700行代码的risc处理器你确实不能要求太多了 |
入职芯片开发部门后,每天摸鱼之外的时间我们要做些什么呢 |
如何计算系统的outstanding 和 burst length? |
芯片搬砖日常·逼死强迫症的关键词不对齐事件 |
熟人社会里,一群没有社会价值的局外人 |