马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 gzanta 于 2017-8-11 12:05 编辑
写了段代码用cadence RTL compiler 综合。
网表出来以后发现一段奇怪的现象
- module mult_unsigned_const_184(A, Z);
- input [15:0] A;
- output [23:0] Z;
- wire [15:0] A;
- wire [23:0] Z;
- wire n_0, n_1, n_2, n_4, n_5, n_6, n_7, n_8;
- wire n_9, n_10, n_11, n_12, n_13, n_14, n_15, n_16;
- wire n_17, n_18, n_19, n_20, n_21, n_22, n_23, n_24;
- wire n_25, n_27, n_28, n_29, n_30, n_31, n_32, n_33;
- wire n_34, n_35, n_36, n_37, n_38, n_39, n_40, n_41;
- wire n_42, n_43, n_45, n_46, n_47, n_48, n_49, n_50;
- wire n_51, n_52, n_53, n_54, n_55, n_56, n_57, n_58;
- wire n_59, n_60, n_61, n_63, n_65, n_67, n_69, n_71;
- wire n_73, n_75, n_77, n_79, n_81, n_83, n_85, n_87;
- wire n_89, n_91;
- assign Z[0] = 1'b0;
- assign Z[1] = 1'b0;
- assign Z[2] = 1'b0;
复制代码
上面这段网表中,Z是一个24位输出,最低三位被assign到1'b0
- mult_unsigned_const_184 const_mul_158_28(.A ({data_0[15:11], n_1414,
- data_0[9:7], n_1856, data_0[5], n_1451, n_1578, data_0[2:0]}),
- .Z ({n_3927, n_3926, n_3925, n_3924, n_3923, n_3922, n_3921,
- n_3920, n_3919, n_3918, n_3917, n_3916, n_3915, n_3914, n_3913,
- n_3912, n_3911, n_3910, n_3909, n_3908, n_3907, UNCONNECTED14,
- UNCONNECTED15, UNCONNECTED16}));
复制代码
后面调用这个module时候,最后3位并没有连接任何net。
所以导致整个网表里,这3个bit其实并没有任何net与之相连。 RC的图形界面所显示的电路中也并没有这3个bit。
但是因为网表里有,所以最终会导致LVS不能通过。
请问这个现象是怎么产生的呢? 明明只要生成一个21位的输出Z就可以了。
然后再请问这个问题应该如何解决呢?
我用RC 做编译,看初步的门电路,这里还是24位的输出,是在综合的过程中导致这个结果出现的。 |