FPGA的防止被综合语句总结

对于fpga的开发人员来说,经常会使用到signaltap或者ChipScope这类调试工具,但是有些信号在调试工具中,添加失败。所以这里就需要用到防止综合的语句了。

在代码中添加了防止综合语句,就可以正常的使用调试工具抓取信号了。话不多说。直接开搞。

转载:

对于intel或者altera来说。

一般是使用quartus自带的综合器或者使用Synplify综合器。

对于wire型语句:

quartus自带的综合器使用:/* synthesis keep = 1 */和/*synthesis syn_keep = 1*/

Synplify综合器使用:/*synthesis syn_keep = 1*/。

对于reg型语句:

使用:/* synthesis preserve = 1 */或者/*synthesis noprune */,这两个貌似都可以。

使用的例子:都是在“;”之前加入语句的 。

reg [7:0]cnt/*synthesis noprune */;

wire [7:0]cnt/*synthesis noprune */;

 

对于xilinx来说:

当使用xilinx自带的XST的综合器:

(* KEEP = “TRUE” ) 或者 ( keep= “true” *)这样就可以实现ChipScope的观察而不被优化掉了。eg:(* KEEP = “TRUE” ) reg [10:0] cnt ,或者 ( keep= “true” *) reg [10:0] cnt;

当使用Synplify Pro综合

Synplify Pro对wire、reg类型的信号有着不同的综合属性。

(1) 对于wire型信号,使用/* synthesis syn_keep=1 */综合属性,例如下面的语句:

wire [7:0] data_in /* synthesis syn_keep=1 */;

(2) 对于reg型信号,使用/* synthesis preserve = 1 */综合属性,例如下面的语句:

reg [7:0] data_in /* synthesis preserve = 1 */;

当然,我使用的时候,一般使用(*mark_debug = "true"*)也可以防止被综合。

ed:(*mark_debug = "true"*)wire   cnt ;

 

笔记,免得以后忘记了。

嘻嘻嘻。

 

posted @ 2021-04-14 11:12  hhh-fpga  阅读(497)  评论(0编辑  收藏  举报