1.存储器原件推断
有两种类型的存储器——锁存器和触发器。锁存器为电平敏感,触发器为边沿敏感。只要锁存器的使能有效,锁存器就是透明的,无效时,Q端输出就是D端保存的值。
锁存器简单面积小,但是在DFT扫描插入变得困难,静态时序分析复杂,所以必须要避免锁存器产生。
锁存器的产生多是因为条件语句的不完整,如有if没有else。
2.常用group
酱紫可以减少面积
3.能有case不用if
多层嵌套if else可能会生成具有优先级的多路选择器,造成资源浪费,而case是组合电路加一个多路选择器。
4.阻塞与非阻塞
依赖计算顺序的,就用阻塞赋值=。非阻塞是并行的<=。
阻塞赋值一般用于组合always模块中。
5.时钟
数字IC没有晶振,他是怎么震荡的。很是好奇,DC给了时钟约束,是怎么添加生成的时钟信号。
6.线载模型
一般是top模型或者enclosed模型,top模型定义层次中的所有连线,将继承和顶层模块的线载模型。如果打算以后打平子模块进行布图,课选择这种线载模型。
enclosed模型指定所有连线(属于子模块的)将继承完全包含盖子模块的线载模型。如果模块A包含子模块B、C,则子模块B、C会继承A模块定义的线载模型。
set_wire_load_model <top | encloed | segmented>
非常重要的是要准确地对设计的连线负载进行建模。太乐观和太悲观的建模模型会导致综合迭代的次数增加和加大placement后时序的收敛的困难。总的来说,在placement前阶段用稍微悲观的现在模型,这通过提供格外的可布线设计吸收时序余量来实现。