求助:dc综合命令set_ideal_network,求大侠解释:)
input [1023:0] din;
input rst_n1,rst_n2;
output reg [1023:0] dout;
wire rst_n;
assign rst_n = rst_n1&rst_n2;
always @(posedge clk or negedge rst_n)
if(!rst_n)
dout <= 'd0;
else
dout <= din;
我对手册中set_ideal_network的理解是如果设置rst_n1或者rst_n2为ideal_network,那么ideal network这个属性会通过组合逻辑传递下去,即rst_n也为ideal network,即综合后不会对rst_n之后插入buffer来解决drc中max_fanout的问题。
可是我在综合的时候,在以下三种情况下,综合出来的电路rst_n之后都插入了buffer:
1.
set_ideal_network rst_n1;
set_max_fanout 18 test;
2.
set_ideal_network rst_n2;
set_max_fanout 18 test;
3.
set_ideal_network rst_n1;
set_ideal_network rst_n2;
set_max_fanout 18 test;
必须把rst_n设置为ideal network之后,rst_n之后才不会插入buffer。
请问各位大侠,难道ideal network这个属性不能穿过代码中的组合逻辑(代码中的与门)传递给rst_n吗?
另外哪位大侠清楚dc综合时,如果net上有什么属性,才不会对这根net插入buffer来解决maxfanout啊?
难道是set_ideal_network rst_n1这个属性不能穿过组合逻辑?但是如果rst_n1有ideal network属性的话,这根net上应该也有donttouch属性了,donttouch属性总该可以穿过组合逻辑传递给rst_n吧?如果donttouch属性传递给rst_n了,那么在上面三种情况下都不应该在rst_n之后插入buffer了呀?
求大神解释呀。
有没有大侠给解释下啊,在线等啊。
有没有大侠可以解释下啊
自己顶下,求解释。
我的理解是组合逻辑那已经是一条NET了,也就是说经过组合逻辑之后已经不受语句约束了,不知道理解的对不对。
在哪里能看到你的 high fanout net呢? 在哪里可以看到你的 high fanout net插入了buffer了呢?
求告知
set_ideal_network的确可以穿过组合逻辑。
但是有一个条件,假设你的rstn送往某一个组合逻辑cell,
假设该cell有多个输入端,如果其他输入端子是非ideal的,
及时你当前rstn是ideal的,那么idea network的传递性也会
到此为止了。
换句话说,要想让ideal network穿透一个逻辑cell,必须让
它的每个输入pin都是ideal的source。
这么好的帖子竟然没人解答。
换句话说,要想让ideal network穿透一个逻辑cell,必须让
它的每个输入pin都是ideal的source =》
set_ideal_network rst_n1;
set_ideal_network rst_n2;
set_max_fanout 18 test;
但是小编也有做如上的设定,rst_n仍然会插入buffer啊。
感觉您说的不太对。
是不是说设置了ideal_network还需要再设置dont_touch ?
求大神解答
set_ideal_network 只是将net上的transition和delay默认设置为0,fix timing的时候是不会动到这个net的。但是我们还会设置max_fanout
它不管你是不是ideal的,只要扇出足够大他就会去优化。所以必须要给高扇出的net设置dont_touch属性。
所以小编的问题的解法就是不仅要设置如下的command:set_ideal_network rst_n1;
set_ideal_network rst_n2;
set_max_fanout 18 test;
因为rst_n是高扇出的net,还需要set_dont_touch rst_n 咯。
受教了
good response, learning