微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > DC工具对STD的选择问题

DC工具对STD的选择问题

时间:10-02 整理:3721RD 点击:
对于如下verilog代码,DC工具进行mapping:
always @(posedge clk or negedge rstn)
if(~rstn)
data <= 1'b0;
else
data <= tmp;
按说,在我设置了时钟约束(create_clock)和最大面积约束(set_max_area)后,
DC工具应该映射到工艺库中仅仅带有异步复位端的DFF,但是有些映射到了带有
异步复位、异步置位的DFF,同时将异步置位端接到无效电平(tie high/low)
百思不得其解,请高人指点迷津,谢了!

你可以set_dont_use 啊, 那些你不想要的cell

我觉得如果是有些正常有些不正常,那可能是带置位的DFF更符合你clock的约束,或许那种DFF更快。你看看那些被综合成不理想的DFF前后的路径是否延迟比较大或者比较小?

带不带reset 的D flopdelay也不一样啊?

因为带有异步置位、异步复位的DFF,会在其他模块里用到,不能简单的set_dont_use
现在的问题是,本该使用只带有异步复位的DFF进行映射的电路,一部分电路使用只带有异步复位的DFF进行映射,而另一部分则使用带有异步置位、异步复位的DFF进行映射

从timing report上看,好象跟延迟关系不是很大
不知道会不会跟代码复杂度有关,reg-to-reg之间的组合逻辑比较多,但是这部分电路的工作频率本身也不高
或者.lib文件有问题

等等等地地道道地地道道地地道道

我也是猜测哈

我觉得好像没啥关系,如果置位一直都是high或者low,你可以试试用remove_unconnected_ports [find –hierarchy cell “*”]不知道会不会对你那个有帮助

这条命令的作用应该是修改netlist用的吧,对mapping应该不起作用
并且,我同样加了这个命令
另外,我怀疑是.lib工艺文件引起的,因为我换了另一个工艺,就不会出现这个问题了
那么,.lib工艺文件中哪些因素,可以引起这个问题呢?
请高人解答!谢谢

你库里有仅带有异步复位端的DFF吗?或者你没把它禁用吧?

应该是.lib中的面积部分没有定义准确吧,比如都是0,这样DC就会随便用了(在timing差不多的状况下)

有这个STD,我没有set_dont_use任何STD

面积信息是不准确,但是都定义了,并且带有异步复位端的DFF比带有异步置位、异步复位的DFF面积小

这就很好理解了撒,是因为它面积小,所以用了这种撒

你理解错了,是映射到了面积大的带有异步置位、异步复位的DFF去了
不过,你提到的面积因素这一点,应该就是原因了
我set_dont_use了上升沿有效的DFF,只使用下降沿有效的DFF,或者反过来设置,发现综合后的面积相比不使用set_dont_use设置要大一点点

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top