|
在这个很小的设计中,手动操作可以完成以上两步。但是如果设计变成了一个大工程,手动删除操作简直是不能忍受的,也许我需要一个星期不吃不喝一直在做删除操作!在我最无助的时候,IC工程师的好朋友Perl,勇敢的站出来帮了一个他看来再简单不过的忙儿。Perl做了一个简单的动作,帮我完成了一个不可能完成的工作!结果如下:
// LAST TIME SAVED: Jul 2 09:43:03 2014
// NETLIST TIME: Aug 9 20:10:38 2014
// Library - bcdee_sc, Cell - RS_INV_A, View - schematic
// LAST TIME SAVED: Jul 2 08:55:40 2014
// NETLIST TIME: Aug 9 20:10:38 2014
// Library - bcdee_sc, Cell - RS_NR2_A, View - schematic
// LAST TIME SAVED: Jul 2 08:51:46 2014
// NETLIST TIME: Aug 9 20:10:38 2014
// Library - bcdee_sc, Cell - RS_ND2_A, View - schematic
// LAST TIME SAVED: Jul 2 08:40:16 2014
// NETLIST TIME: Aug 9 20:10:38 2014
// Library - adder, Cell - fulladder, View - schematic
// LAST TIME SAVED: Aug 9 19:32:32 2014
// NETLIST TIME: Aug 9 20:10:38 2014
module fulladder ( Cout, Sum, A, B, Cin );
output Cout, Sum;
input A, B, Cin;
/* specify
specparam CDS_LIBNAME = "adder";
specparam CDS_CELLNAME = "fulladder";
specparam CDS_VIEWNAME = "schematic";
endspecify */
RS_XOR2_A I6 ( .O(Sum), .I1(net9), .I2(Cin));
RS_XOR2_A I5 ( .O(net9), .I1(A), .I2(B));
RS_INV_A I4 ( .O(net12), .I(net14));
RS_NR2_A I3 ( .O(net14), .I1(A), .I2(B));
RS_ND2_A I2 ( .O(net20), .I1(net12), .I2(Cin));
RS_ND2_A I1 ( .O(Cout), .I1(net23), .I2(net20));
RS_ND2_A I0 ( .O(net23), .I1(A), .I2(B));
endmodule
// Library - adder, Cell - twobitadder, View - schematic
// LAST TIME SAVED: Aug 9 20:01:39 2014
// NETLIST TIME: Aug 9 20:10:38 2014
module twobitadder ( Cout, Sum, A, B, Cin );
output Cout;
input Cin;
output [1:0] Sum;
input [1:0] A;
input [1:0] B;
/* specify
specparam CDS_LIBNAME = "adder";
specparam CDS_CELLNAME = "twobitadder";
specparam CDS_VIEWNAME = "schematic";
endspecify */
fulladder I1 ( .Cin(net25), .B(B[1]), .A(A[1]), .Sum(Sum[1]),
.Cout(Cout));
fulladder I0 ( .Cin(Cin), .B(B[0]), .A(A[0]), .Sum(Sum[0]),
.Cout(net25));
endmodule