关于keep,dont touch和max_fanout的用法建议

一.概述

        关于keep = "true",don't touch = "true",max_fanout等命令,项目中只是去用,并没有去了解怎么正确的使用,在翻阅了一些资料以后,针对一些问题做了一些仿真,在这里做一下总结 。

二.介绍

1.keep,dont touch

        在讲这两个综合属性的使用建议之前,先讲下他们的区别。

        (1)mark_debug       

        保证信号综合不会被优化掉,在网表中能找到。

        (2)keep

        保证信号不会在布局布线之前被优化,keep不作为网表的属性进行传递,不强迫布局布线保持该信号。

        (3)dont touch

       防止信号在整个综合实现过程被优化。

        综上:dontouch 最严格。

使用建议:

        (1)自己写的RAM的输出端口寄存器如果使用了keep属性,将不能推断成RAM。如下图:图二的推断成功,推断成18kb的BRAM。如何写RAM可以看前面博客ram_style的使用。

图一:输出寄存器带keep
图二:输出寄存器不带keep

        (2) 有节制的使用这些语句,如不再需要,应将其移除。

        (3)不能在inout寄存器上使用keep,dont touch这些属性。

        (4)dont touch可以用在层级上,层级中最优化保留,层级边界不会被优化,而且层级中不会发生常数传输。     

2.max_fanout

        该属性是强制综合通过复制逻辑来满足扇出限制,但是直接输入的信号不能用max_fanout,工具无法处理。max_fanout和dont touch是矛盾的,不能一起使用。查看max_fanout复制的寄存器可以在网表中查看_rep_ _0,_rep_ _1结尾的寄存器。除了使用该属性复制寄存器减少扇出,也可以手动编码生成额外寄存器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值