使用ALTERA器件和其编译软件设计逻辑电路的时候,经常会遇到逻辑单元被综合优化掉的事情。这时候可以通过添加综合“保留”属性来将不希望被综合优化掉的信号节点保留下来。具体做法对于VHDL来说是这样的:
- signal a_sig,b_sig,regout:std_logic_vector(511 downto 0);
- attribute keep:boolean;
- attribute keep of a_sig: signal is true;
- attribute keep of b_sig: signal is true;
而对于Verilog而言,如果信号为wire型,则
- wire w1 /*synthesis syn_keep*/;
如果信号为reg型,则
- reg r1 /*synthesis syn_preserve*/ ;
或者
- reg r1 /*synthesis syn_noprune*/ ;
当前在使用VHDL添加综合保留属性的时候遇到一个问题,即同样的代码在QII13.0+CycloneVGX时候没有问题,但是在Quartus Prime 22.4 + Cyclone10GX的时候失去了效果,给出下述警告信息的同时将这些节点全部综合优化掉了。
Warning(14284): Synthesized away the following node(s):
Warning(14285): Synthesized away the following node(s) of type LCELL buffer:
Warning(14320): Synthesized away node "inst18"
Warning(14320): Synthesized away node "inst19"
Warning(14320): Synthesized away node "inst3|u_TDL_CC_Top|a_sig[511]"
Warning(14320): Synthesized away node "inst3|u_TDL_CC_Top|a_sig[510]"
........................................................................................................................................
作者: coyoo, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-1010859.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论