quartus增量编译 时序综合优化影响原模块时序解决方法

参考文献: https://blog.csdn.net/moxu0915/article/details/79264161

                  

 

 

若要进行增量编译,

1   将要固化的模块在  design_partition_window  约束为 post_fit,  即模块未变时不重新布线

2   在 logiclock_region_window 中 creat_new_logiclock(不清楚需要多大区域时可以先完整编译一版,然后右键对应模块,locate in chip_planner 查看),然后右键  hierarchy 中对应模块, assign to existing logiclock_region

注意:划分的模块一定要够大,如果使用量超出 logiclock_region 太多,其他模块放不下,仍然可能重新布线该模块,未确保万一,可在chip_planer中截图对比

 

 

关于综合优化影响原模块性能:

多个模块如果有共用的逻辑,默认情况下会被综合优化为,共用同一个逻辑块,所以在复制模块时共有逻辑部分扇出会变多,而不会再增加一个相同的逻辑资源,导致已经调好的模块出现时序问题

  若要完全复制模块,使两个类似的模块互不相关,就要用 增量编译 的方式,即 logiclock 锁定已经验证ok的部分

 

 

 

 

 

 

 

 

 

 

 

https://blog.csdn.net/xiao_yao_ke/article/details/83015735

https://blog.csdn.net/wordwarwordwar/article/details/78636395

 

 若只是要保留某几个 寄存器或者信号 不被优化

1)、需要保留的信号是引线
Verilog HDL—定义的时候在后面增加/* synthesis keep */。
例如:wire keep_wire /* synthesis keep */

 

2)、需要保留是的寄存器

跟reg相关的synthesis attribute,共有两种,分别是/*synthesis noprune*/和/*synthesis preserve*/,两者的差别如下:

/*synthesis noprune*/ 避免 Quartus II 优化掉没output的reg。

/*synthesis preserve*/避免 Quartus II 將reg优化为常数,或者合并重复的reg。

定义的时候在后面增加相关的约束语句。
例如:reg reg1 /* synthesis noprune*/;或者 reg reg1 /* synthesis preserve */;

將/*synthesis noprune*/等synthesis attribute 语句放在module后面,这样整个module的reg将不被最佳化,从而不用再一一寄存器指定。

                  

这三种方式都可以直接在 signaltap 上拉到 原始名字 信号,但是在 post_fit rtl 网表上,只有对应名字的 reg,而没有对应的 wire

 

 

你可能感兴趣的:(quartus增量编译 时序综合优化影响原模块时序解决方法)