fix bugs; demo test
This commit is contained in:
parent
cc7d6baee2
commit
ba16ed93e7
|
@ -0,0 +1,762 @@
|
|||
|
||||
// Generated by Cadence Genus(TM) Synthesis Solution 19.12-s121_1
|
||||
// Generated on: Aug 10 2020 11:16:47 CST (Aug 10 2020 03:16:47 UTC)
|
||||
|
||||
// Verification Directory fv/gcd
|
||||
|
||||
module RegRst_0x9f365fdf6c8998a(clk, in_, out, reset);
|
||||
input [0:0] clk, reset;
|
||||
input [1:0] in_;
|
||||
output [1:0] out;
|
||||
wire [0:0] clk, reset;
|
||||
wire [1:0] in_;
|
||||
wire [1:0] out;
|
||||
wire n_19, n_22;
|
||||
CDN_flop \out_reg[0] (.clk (clk), .d (n_19), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[0]));
|
||||
CDN_flop \out_reg[1] (.clk (clk), .d (n_22), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[1]));
|
||||
and g9 (n_19, in_[0], wc);
|
||||
not gc (wc, reset);
|
||||
and g10 (n_22, in_[1], wc0);
|
||||
not gc0 (wc0, reset);
|
||||
endmodule
|
||||
|
||||
module lt_unsigned_rtlopto_model_20(A, B, Z);
|
||||
input [15:0] A, B;
|
||||
output Z;
|
||||
wire [15:0] A, B;
|
||||
wire Z;
|
||||
wire n_68, n_71, n_72, n_74, n_75, n_76, n_77, n_78;
|
||||
wire n_79, n_81, n_82, n_83, n_84, n_85, n_87, n_88;
|
||||
wire n_89, n_90, n_91, n_93, n_94, n_95, n_96, n_97;
|
||||
wire n_99, n_100, n_101, n_102, n_103, n_105, n_106, n_107;
|
||||
wire n_108, n_109, n_111, n_112, n_113, n_114, n_115, n_117;
|
||||
wire n_118, n_121, n_122, n_123, n_124, n_127, n_129, n_131;
|
||||
wire n_132, n_134, n_137, n_139, n_141, n_142, n_144, n_147;
|
||||
wire n_149, n_151, n_152, n_154, n_162, n_164, n_165, n_166;
|
||||
wire n_169, n_177, n_178, n_179, n_181, n_200, n_201, n_202;
|
||||
not g18 (Z, n_68);
|
||||
nand g55 (n_118, n_74, n_75);
|
||||
nor g56 (n_79, n_76, n_77);
|
||||
nor g59 (n_121, n_81, n_77);
|
||||
nor g60 (n_85, n_82, n_83);
|
||||
nor g63 (n_127, n_87, n_83);
|
||||
nor g64 (n_91, n_88, n_89);
|
||||
nor g67 (n_129, n_93, n_89);
|
||||
nor g68 (n_97, n_94, n_95);
|
||||
nor g71 (n_137, n_99, n_95);
|
||||
nor g72 (n_103, n_100, n_101);
|
||||
nor g75 (n_139, n_105, n_101);
|
||||
nor g76 (n_109, n_106, n_107);
|
||||
nor g79 (n_147, n_111, n_107);
|
||||
nor g80 (n_115, n_112, n_113);
|
||||
nor g83 (n_149, n_117, n_113);
|
||||
nand g87 (n_123, n_121, n_118);
|
||||
nand g88 (n_154, n_122, n_123);
|
||||
nand g98 (n_162, n_127, n_129);
|
||||
nand g108 (n_169, n_137, n_139);
|
||||
nand g118 (n_177, n_147, n_149);
|
||||
nand g129 (n_181, n_164, n_165);
|
||||
nor g143 (n_179, n_177, n_166);
|
||||
nor g146 (n_200, n_169, n_177);
|
||||
nand g164 (n_202, n_200, n_181);
|
||||
nand g165 (n_68, n_201, n_202);
|
||||
and g207 (n_111, B[12], wc1);
|
||||
not gc1 (wc1, A[12]);
|
||||
and g208 (n_107, B[13], wc2);
|
||||
not gc2 (wc2, A[13]);
|
||||
and g209 (n_117, B[14], wc3);
|
||||
not gc3 (wc3, A[14]);
|
||||
and g210 (n_113, B[15], wc4);
|
||||
not gc4 (wc4, A[15]);
|
||||
or g211 (n_94, B[8], wc5);
|
||||
not gc5 (wc5, A[8]);
|
||||
and g212 (n_95, B[9], wc6);
|
||||
not gc6 (wc6, A[9]);
|
||||
or g213 (n_96, B[9], wc7);
|
||||
not gc7 (wc7, A[9]);
|
||||
and g214 (n_105, B[10], wc8);
|
||||
not gc8 (wc8, A[10]);
|
||||
and g215 (n_101, B[11], wc9);
|
||||
not gc9 (wc9, A[11]);
|
||||
or g216 (n_100, B[10], wc10);
|
||||
not gc10 (wc10, A[10]);
|
||||
or g217 (n_102, B[11], wc11);
|
||||
not gc11 (wc11, A[11]);
|
||||
or g218 (n_106, B[12], wc12);
|
||||
not gc12 (wc12, A[12]);
|
||||
or g219 (n_108, B[13], wc13);
|
||||
not gc13 (wc13, A[13]);
|
||||
or g220 (n_112, B[14], wc14);
|
||||
not gc14 (wc14, A[14]);
|
||||
or g221 (n_114, B[15], wc15);
|
||||
not gc15 (wc15, A[15]);
|
||||
and g222 (n_99, B[8], wc16);
|
||||
not gc16 (wc16, A[8]);
|
||||
or g223 (n_82, B[4], wc17);
|
||||
not gc17 (wc17, A[4]);
|
||||
and g224 (n_83, B[5], wc18);
|
||||
not gc18 (wc18, A[5]);
|
||||
or g225 (n_84, B[5], wc19);
|
||||
not gc19 (wc19, A[5]);
|
||||
and g226 (n_93, B[6], wc20);
|
||||
not gc20 (wc20, A[6]);
|
||||
and g227 (n_89, B[7], wc21);
|
||||
not gc21 (wc21, A[7]);
|
||||
or g228 (n_88, B[6], wc22);
|
||||
not gc22 (wc22, A[6]);
|
||||
or g229 (n_90, B[7], wc23);
|
||||
not gc23 (wc23, A[7]);
|
||||
or g230 (n_76, B[2], wc24);
|
||||
not gc24 (wc24, A[2]);
|
||||
and g231 (n_77, B[3], wc25);
|
||||
not gc25 (wc25, A[3]);
|
||||
or g232 (n_78, B[3], wc26);
|
||||
not gc26 (wc26, A[3]);
|
||||
and g233 (n_81, B[2], wc27);
|
||||
not gc27 (wc27, A[2]);
|
||||
or g234 (n_74, B[1], wc28);
|
||||
not gc28 (wc28, A[1]);
|
||||
or g235 (n_72, wc29, A[0]);
|
||||
not gc29 (wc29, B[0]);
|
||||
and g236 (n_71, B[1], wc30);
|
||||
not gc30 (wc30, A[1]);
|
||||
and g237 (n_87, B[4], wc31);
|
||||
not gc31 (wc31, A[4]);
|
||||
and g238 (n_134, n_96, wc32);
|
||||
not gc32 (wc32, n_97);
|
||||
and g239 (n_141, n_102, wc33);
|
||||
not gc33 (wc33, n_103);
|
||||
and g240 (n_144, n_108, wc34);
|
||||
not gc34 (wc34, n_109);
|
||||
and g241 (n_151, n_114, wc35);
|
||||
not gc35 (wc35, n_115);
|
||||
and g242 (n_124, n_84, wc36);
|
||||
not gc36 (wc36, n_85);
|
||||
and g243 (n_131, n_90, wc37);
|
||||
not gc37 (wc37, n_91);
|
||||
and g244 (n_122, n_78, wc38);
|
||||
not gc38 (wc38, n_79);
|
||||
or g245 (n_75, n_71, wc39);
|
||||
not gc39 (wc39, n_72);
|
||||
and g246 (n_142, wc40, n_139);
|
||||
not gc40 (wc40, n_134);
|
||||
and g247 (n_152, wc41, n_149);
|
||||
not gc41 (wc41, n_144);
|
||||
and g248 (n_132, wc42, n_129);
|
||||
not gc42 (wc42, n_124);
|
||||
and g249 (n_166, wc43, n_141);
|
||||
not gc43 (wc43, n_142);
|
||||
and g250 (n_178, wc44, n_151);
|
||||
not gc44 (wc44, n_152);
|
||||
and g251 (n_164, wc45, n_131);
|
||||
not gc45 (wc45, n_132);
|
||||
and g252 (n_201, n_178, wc46);
|
||||
not gc46 (wc46, n_179);
|
||||
or g253 (n_165, n_162, wc47);
|
||||
not gc47 (wc47, n_154);
|
||||
endmodule
|
||||
|
||||
module RegEn_0x68db79c4ec1d6e5b(clk, en, in_, out, reset);
|
||||
input [0:0] clk, en, reset;
|
||||
input [15:0] in_;
|
||||
output [15:0] out;
|
||||
wire [0:0] clk, en, reset;
|
||||
wire [15:0] in_;
|
||||
wire [15:0] out;
|
||||
wire n_98, n_99, n_101, n_103, n_105, n_107, n_109, n_111;
|
||||
wire n_113, n_115, n_117, n_119, n_121, n_123, n_125, n_127;
|
||||
wire n_129;
|
||||
CDN_flop \out_reg[0] (.clk (clk), .d (n_99), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[0]));
|
||||
CDN_flop \out_reg[1] (.clk (clk), .d (n_101), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[1]));
|
||||
CDN_flop \out_reg[2] (.clk (clk), .d (n_103), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[2]));
|
||||
CDN_flop \out_reg[3] (.clk (clk), .d (n_105), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[3]));
|
||||
CDN_flop \out_reg[4] (.clk (clk), .d (n_107), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[4]));
|
||||
CDN_flop \out_reg[5] (.clk (clk), .d (n_109), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[5]));
|
||||
CDN_flop \out_reg[6] (.clk (clk), .d (n_111), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[6]));
|
||||
CDN_flop \out_reg[7] (.clk (clk), .d (n_113), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[7]));
|
||||
CDN_flop \out_reg[8] (.clk (clk), .d (n_115), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[8]));
|
||||
CDN_flop \out_reg[9] (.clk (clk), .d (n_117), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[9]));
|
||||
CDN_flop \out_reg[10] (.clk (clk), .d (n_119), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[10]));
|
||||
CDN_flop \out_reg[11] (.clk (clk), .d (n_121), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[11]));
|
||||
CDN_flop \out_reg[12] (.clk (clk), .d (n_123), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[12]));
|
||||
CDN_flop \out_reg[13] (.clk (clk), .d (n_125), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[13]));
|
||||
CDN_flop \out_reg[14] (.clk (clk), .d (n_127), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[14]));
|
||||
CDN_flop \out_reg[15] (.clk (clk), .d (n_129), .sena (1'b1), .aclr
|
||||
(1'b0), .apre (1'b0), .srl (1'b0), .srd (1'b0), .q (out[15]));
|
||||
not g18 (n_98, en);
|
||||
CDN_mux2 g19_g1(.sel0 (n_98), .data0 (out[0]), .sel1 (en), .data1
|
||||
(in_[0]), .z (n_99));
|
||||
CDN_mux2 g21_g1(.sel0 (n_98), .data0 (out[1]), .sel1 (en), .data1
|
||||
(in_[1]), .z (n_101));
|
||||
CDN_mux2 g23_g1(.sel0 (n_98), .data0 (out[2]), .sel1 (en), .data1
|
||||
(in_[2]), .z (n_103));
|
||||
CDN_mux2 g25_g1(.sel0 (n_98), .data0 (out[3]), .sel1 (en), .data1
|
||||
(in_[3]), .z (n_105));
|
||||
CDN_mux2 g27_g1(.sel0 (n_98), .data0 (out[4]), .sel1 (en), .data1
|
||||
(in_[4]), .z (n_107));
|
||||
CDN_mux2 g29_g1(.sel0 (n_98), .data0 (out[5]), .sel1 (en), .data1
|
||||
(in_[5]), .z (n_109));
|
||||
CDN_mux2 g31_g1(.sel0 (n_98), .data0 (out[6]), .sel1 (en), .data1
|
||||
(in_[6]), .z (n_111));
|
||||
CDN_mux2 g33_g1(.sel0 (n_98), .data0 (out[7]), .sel1 (en), .data1
|
||||
(in_[7]), .z (n_113));
|
||||
CDN_mux2 g35_g1(.sel0 (n_98), .data0 (out[8]), .sel1 (en), .data1
|
||||
(in_[8]), .z (n_115));
|
||||
CDN_mux2 g37_g1(.sel0 (n_98), .data0 (out[9]), .sel1 (en), .data1
|
||||
(in_[9]), .z (n_117));
|
||||
CDN_mux2 g39_g1(.sel0 (n_98), .data0 (out[10]), .sel1 (en), .data1
|
||||
(in_[10]), .z (n_119));
|
||||
CDN_mux2 g41_g1(.sel0 (n_98), .data0 (out[11]), .sel1 (en), .data1
|
||||
(in_[11]), .z (n_121));
|
||||
CDN_mux2 g43_g1(.sel0 (n_98), .data0 (out[12]), .sel1 (en), .data1
|
||||
(in_[12]), .z (n_123));
|
||||
CDN_mux2 g45_g1(.sel0 (n_98), .data0 (out[13]), .sel1 (en), .data1
|
||||
(in_[13]), .z (n_125));
|
||||
CDN_mux2 g47_g1(.sel0 (n_98), .data0 (out[14]), .sel1 (en), .data1
|
||||
(in_[14]), .z (n_127));
|
||||
CDN_mux2 g49_g1(.sel0 (n_98), .data0 (out[15]), .sel1 (en), .data1
|
||||
(in_[15]), .z (n_129));
|
||||
endmodule
|
||||
|
||||
module Mux_0xdd6473406d1a99a(clk, in_$000, in_$001, out, reset, sel);
|
||||
input [0:0] clk, reset, sel;
|
||||
input [15:0] in_$000, in_$001;
|
||||
output [15:0] out;
|
||||
wire [0:0] clk, reset, sel;
|
||||
wire [15:0] in_$000, in_$001;
|
||||
wire [15:0] out;
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g1 (.sel0 (sel), .data0 (in_$000[15]),
|
||||
.data1 (in_$001[15]), .z (out[15]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g2 (.sel0 (sel), .data0 (in_$000[14]),
|
||||
.data1 (in_$001[14]), .z (out[14]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g3 (.sel0 (sel), .data0 (in_$000[13]),
|
||||
.data1 (in_$001[13]), .z (out[13]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g4 (.sel0 (sel), .data0 (in_$000[12]),
|
||||
.data1 (in_$001[12]), .z (out[12]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g5 (.sel0 (sel), .data0 (in_$000[11]),
|
||||
.data1 (in_$001[11]), .z (out[11]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g6 (.sel0 (sel), .data0 (in_$000[10]),
|
||||
.data1 (in_$001[10]), .z (out[10]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g7 (.sel0 (sel), .data0 (in_$000[9]),
|
||||
.data1 (in_$001[9]), .z (out[9]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g8 (.sel0 (sel), .data0 (in_$000[8]),
|
||||
.data1 (in_$001[8]), .z (out[8]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g9 (.sel0 (sel), .data0 (in_$000[7]),
|
||||
.data1 (in_$001[7]), .z (out[7]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g10 (.sel0 (sel), .data0 (in_$000[6]),
|
||||
.data1 (in_$001[6]), .z (out[6]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g11 (.sel0 (sel), .data0 (in_$000[5]),
|
||||
.data1 (in_$001[5]), .z (out[5]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g12 (.sel0 (sel), .data0 (in_$000[4]),
|
||||
.data1 (in_$001[4]), .z (out[4]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g13 (.sel0 (sel), .data0 (in_$000[3]),
|
||||
.data1 (in_$001[3]), .z (out[3]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g14 (.sel0 (sel), .data0 (in_$000[2]),
|
||||
.data1 (in_$001[2]), .z (out[2]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g15 (.sel0 (sel), .data0 (in_$000[1]),
|
||||
.data1 (in_$001[1]), .z (out[1]));
|
||||
CDN_bmux2 \mux_in_[sel]_721_11_g16 (.sel0 (sel), .data0 (in_$000[0]),
|
||||
.data1 (in_$001[0]), .z (out[0]));
|
||||
endmodule
|
||||
|
||||
module ZeroComparator_0x422b1f52edd46a85(clk, in_, out, reset);
|
||||
input [0:0] clk, reset;
|
||||
input [15:0] in_;
|
||||
output [0:0] out;
|
||||
wire [0:0] clk, reset;
|
||||
wire [15:0] in_;
|
||||
wire [0:0] out;
|
||||
wire n_20, n_21, n_22, n_23, n_24, n_26;
|
||||
xnor g1 (n_26, in_[0], 1'b0);
|
||||
nor g2 (n_20, in_[15], in_[14], in_[13], in_[12]);
|
||||
nor g3 (n_21, in_[11], in_[10], in_[9], in_[8]);
|
||||
nor g4 (n_22, in_[7], in_[6], in_[5], in_[4]);
|
||||
nor g5 (n_23, in_[3], in_[2], in_[1]);
|
||||
nand g6 (n_24, n_26, n_20, n_21, n_22);
|
||||
and g9 (out, wc48, n_23);
|
||||
not gc48 (wc48, n_24);
|
||||
endmodule
|
||||
|
||||
module sub_unsigned(A, B, Z);
|
||||
input [15:0] A, B;
|
||||
output [15:0] Z;
|
||||
wire [15:0] A, B;
|
||||
wire [15:0] Z;
|
||||
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_62, n_63, n_64, n_65, n_66;
|
||||
wire n_69, n_71, n_72, n_73, n_74, n_75, n_76, n_77;
|
||||
wire n_78, n_79, n_80, n_81, n_82, n_83, n_84, n_85;
|
||||
wire n_86, n_87, n_88, n_89, n_90, n_91, n_92, n_93;
|
||||
wire n_94, n_95, n_96, n_97, n_98, n_99, n_100, n_101;
|
||||
wire n_102, n_103, n_104, n_105, n_106, n_107, n_108, n_109;
|
||||
wire n_110, n_111, n_112, n_113, n_114, n_117, n_118, n_119;
|
||||
wire n_120, n_121, n_122, n_123, n_124, n_125, n_126, n_127;
|
||||
wire n_128, n_129, n_130, n_131, n_132, n_133, n_134, n_135;
|
||||
wire n_136, n_137, n_138, n_139, n_140, n_141, n_142, n_143;
|
||||
wire n_144, n_145, n_146, n_147, n_148, n_154, n_155, n_156;
|
||||
wire n_157, n_158, n_159, n_160, n_161, n_162, n_163, n_164;
|
||||
wire n_165, n_166, n_167, n_168, n_169, n_170, n_171, n_172;
|
||||
wire n_173, n_174, n_175, n_176, n_181, n_182, n_183, n_184;
|
||||
wire n_185, n_186, n_187, n_188, n_189, n_190, n_191, n_192;
|
||||
wire n_193, n_194, n_195, n_196, n_197, n_198, n_199, n_203;
|
||||
wire n_204, n_205, n_206, n_207, n_208, n_209, n_210, n_211;
|
||||
wire n_212, n_213, n_214, n_215, n_216, n_217, n_218, n_219;
|
||||
wire n_220, n_221, n_222, n_223, n_224, n_225, n_226, n_227;
|
||||
wire n_228, n_229, n_230, n_231, n_232, n_233, n_234, n_235;
|
||||
wire n_236, n_237;
|
||||
not g2 (n_51, B[15]);
|
||||
not g3 (n_52, B[14]);
|
||||
not g4 (n_53, B[13]);
|
||||
not g5 (n_54, B[12]);
|
||||
not g6 (n_55, B[11]);
|
||||
not g7 (n_56, B[10]);
|
||||
not g8 (n_57, B[9]);
|
||||
not g9 (n_58, B[8]);
|
||||
not g10 (n_59, B[7]);
|
||||
not g11 (n_60, B[6]);
|
||||
not g12 (n_61, B[5]);
|
||||
not g13 (n_62, B[4]);
|
||||
not g14 (n_63, B[3]);
|
||||
not g15 (n_64, B[2]);
|
||||
not g16 (n_65, B[1]);
|
||||
not g17 (n_66, B[0]);
|
||||
xor g19 (n_237, A[0], n_66);
|
||||
nand g22 (n_72, n_69, B[0]);
|
||||
nor g23 (n_71, A[1], n_65);
|
||||
nand g24 (n_74, A[1], n_65);
|
||||
nor g25 (n_81, A[2], n_64);
|
||||
nand g26 (n_76, A[2], n_64);
|
||||
nor g27 (n_77, A[3], n_63);
|
||||
nand g28 (n_78, A[3], n_63);
|
||||
nor g29 (n_87, A[4], n_62);
|
||||
nand g30 (n_82, A[4], n_62);
|
||||
nor g31 (n_83, A[5], n_61);
|
||||
nand g32 (n_84, A[5], n_61);
|
||||
nor g33 (n_93, A[6], n_60);
|
||||
nand g34 (n_88, A[6], n_60);
|
||||
nor g35 (n_89, A[7], n_59);
|
||||
nand g36 (n_90, A[7], n_59);
|
||||
nor g37 (n_99, A[8], n_58);
|
||||
nand g38 (n_94, A[8], n_58);
|
||||
nor g39 (n_95, A[9], n_57);
|
||||
nand g40 (n_96, A[9], n_57);
|
||||
nor g41 (n_105, A[10], n_56);
|
||||
nand g42 (n_100, A[10], n_56);
|
||||
nor g43 (n_101, A[11], n_55);
|
||||
nand g44 (n_102, A[11], n_55);
|
||||
nor g45 (n_111, A[12], n_54);
|
||||
nand g46 (n_106, A[12], n_54);
|
||||
nor g47 (n_107, A[13], n_53);
|
||||
nand g48 (n_108, A[13], n_53);
|
||||
nor g49 (n_117, A[14], n_52);
|
||||
nand g50 (n_112, A[14], n_52);
|
||||
nor g51 (n_113, A[15], n_51);
|
||||
nand g52 (n_114, A[15], n_51);
|
||||
not g53 (n_73, n_71);
|
||||
nand g54 (n_75, n_72, n_73);
|
||||
nand g55 (n_118, n_74, n_75);
|
||||
nor g56 (n_79, n_76, n_77);
|
||||
not g57 (n_80, n_78);
|
||||
nor g58 (n_122, n_79, n_80);
|
||||
nor g59 (n_121, n_81, n_77);
|
||||
nor g60 (n_85, n_82, n_83);
|
||||
not g61 (n_86, n_84);
|
||||
nor g62 (n_124, n_85, n_86);
|
||||
nor g63 (n_127, n_87, n_83);
|
||||
nor g64 (n_91, n_88, n_89);
|
||||
not g65 (n_92, n_90);
|
||||
nor g66 (n_131, n_91, n_92);
|
||||
nor g67 (n_129, n_93, n_89);
|
||||
nor g68 (n_97, n_94, n_95);
|
||||
not g69 (n_98, n_96);
|
||||
nor g70 (n_134, n_97, n_98);
|
||||
nor g71 (n_137, n_99, n_95);
|
||||
nor g72 (n_103, n_100, n_101);
|
||||
not g73 (n_104, n_102);
|
||||
nor g74 (n_141, n_103, n_104);
|
||||
nor g75 (n_139, n_105, n_101);
|
||||
nor g76 (n_109, n_106, n_107);
|
||||
not g77 (n_110, n_108);
|
||||
nor g78 (n_144, n_109, n_110);
|
||||
nor g79 (n_147, n_111, n_107);
|
||||
not g84 (n_119, n_81);
|
||||
nand g85 (n_120, n_118, n_119);
|
||||
nand g86 (n_206, n_76, n_120);
|
||||
nand g87 (n_123, n_121, n_118);
|
||||
nand g88 (n_154, n_122, n_123);
|
||||
nor g89 (n_125, n_93, n_124);
|
||||
not g90 (n_126, n_88);
|
||||
nor g91 (n_160, n_125, n_126);
|
||||
not g92 (n_128, n_93);
|
||||
nand g93 (n_158, n_127, n_128);
|
||||
not g94 (n_130, n_129);
|
||||
nor g95 (n_132, n_124, n_130);
|
||||
not g96 (n_133, n_131);
|
||||
nor g97 (n_164, n_132, n_133);
|
||||
nand g98 (n_162, n_127, n_129);
|
||||
nor g99 (n_135, n_105, n_134);
|
||||
not g100 (n_136, n_100);
|
||||
nor g101 (n_187, n_135, n_136);
|
||||
not g102 (n_138, n_105);
|
||||
nand g103 (n_185, n_137, n_138);
|
||||
not g104 (n_140, n_139);
|
||||
nor g105 (n_142, n_134, n_140);
|
||||
not g106 (n_143, n_141);
|
||||
nor g107 (n_166, n_142, n_143);
|
||||
nand g108 (n_169, n_137, n_139);
|
||||
nor g109 (n_145, n_117, n_144);
|
||||
not g110 (n_146, n_112);
|
||||
nor g111 (n_174, n_145, n_146);
|
||||
not g112 (n_148, n_117);
|
||||
nand g113 (n_173, n_147, n_148);
|
||||
not g119 (n_155, n_87);
|
||||
nand g120 (n_156, n_154, n_155);
|
||||
nand g121 (n_210, n_82, n_156);
|
||||
nand g122 (n_157, n_127, n_154);
|
||||
nand g123 (n_212, n_124, n_157);
|
||||
not g124 (n_159, n_158);
|
||||
nand g125 (n_161, n_154, n_159);
|
||||
nand g126 (n_215, n_160, n_161);
|
||||
not g127 (n_163, n_162);
|
||||
nand g128 (n_165, n_154, n_163);
|
||||
nand g129 (n_181, n_164, n_165);
|
||||
nor g130 (n_167, n_111, n_166);
|
||||
not g131 (n_168, n_106);
|
||||
nor g132 (n_192, n_167, n_168);
|
||||
nor g133 (n_191, n_111, n_169);
|
||||
not g134 (n_170, n_147);
|
||||
nor g135 (n_171, n_166, n_170);
|
||||
not g136 (n_172, n_144);
|
||||
nor g137 (n_195, n_171, n_172);
|
||||
nor g138 (n_194, n_169, n_170);
|
||||
nor g139 (n_175, n_173, n_166);
|
||||
not g140 (n_176, n_174);
|
||||
nor g141 (n_198, n_175, n_176);
|
||||
nor g142 (n_197, n_169, n_173);
|
||||
not g147 (n_182, n_99);
|
||||
nand g148 (n_183, n_181, n_182);
|
||||
nand g149 (n_219, n_94, n_183);
|
||||
nand g150 (n_184, n_137, n_181);
|
||||
nand g151 (n_221, n_134, n_184);
|
||||
not g152 (n_186, n_185);
|
||||
nand g153 (n_188, n_181, n_186);
|
||||
nand g154 (n_224, n_187, n_188);
|
||||
not g155 (n_189, n_169);
|
||||
nand g156 (n_190, n_181, n_189);
|
||||
nand g157 (n_227, n_166, n_190);
|
||||
nand g158 (n_193, n_191, n_181);
|
||||
nand g159 (n_230, n_192, n_193);
|
||||
nand g160 (n_196, n_194, n_181);
|
||||
nand g161 (n_232, n_195, n_196);
|
||||
nand g162 (n_199, n_197, n_181);
|
||||
nand g163 (n_235, n_198, n_199);
|
||||
nand g166 (n_203, n_73, n_74);
|
||||
xnor g167 (Z[1], n_72, n_203);
|
||||
nand g168 (n_204, n_119, n_76);
|
||||
xnor g169 (Z[2], n_118, n_204);
|
||||
not g170 (n_205, n_77);
|
||||
nand g171 (n_207, n_205, n_78);
|
||||
xnor g172 (Z[3], n_206, n_207);
|
||||
nand g173 (n_208, n_155, n_82);
|
||||
xnor g174 (Z[4], n_154, n_208);
|
||||
not g175 (n_209, n_83);
|
||||
nand g176 (n_211, n_209, n_84);
|
||||
xnor g177 (Z[5], n_210, n_211);
|
||||
nand g178 (n_213, n_128, n_88);
|
||||
xnor g179 (Z[6], n_212, n_213);
|
||||
not g180 (n_214, n_89);
|
||||
nand g181 (n_216, n_214, n_90);
|
||||
xnor g182 (Z[7], n_215, n_216);
|
||||
nand g183 (n_217, n_182, n_94);
|
||||
xnor g184 (Z[8], n_181, n_217);
|
||||
not g185 (n_218, n_95);
|
||||
nand g186 (n_220, n_218, n_96);
|
||||
xnor g187 (Z[9], n_219, n_220);
|
||||
nand g188 (n_222, n_138, n_100);
|
||||
xnor g189 (Z[10], n_221, n_222);
|
||||
not g190 (n_223, n_101);
|
||||
nand g191 (n_225, n_223, n_102);
|
||||
xnor g192 (Z[11], n_224, n_225);
|
||||
not g193 (n_226, n_111);
|
||||
nand g194 (n_228, n_226, n_106);
|
||||
xnor g195 (Z[12], n_227, n_228);
|
||||
not g196 (n_229, n_107);
|
||||
nand g197 (n_231, n_229, n_108);
|
||||
xnor g198 (Z[13], n_230, n_231);
|
||||
nand g199 (n_233, n_148, n_112);
|
||||
xnor g200 (Z[14], n_232, n_233);
|
||||
not g201 (n_234, n_113);
|
||||
nand g202 (n_236, n_234, n_114);
|
||||
xnor g203 (Z[15], n_235, n_236);
|
||||
not g205 (n_69, A[0]);
|
||||
not g206 (Z[0], n_237);
|
||||
endmodule
|
||||
|
||||
module gcd(clk, req_msg, req_rdy, req_val, reset, resp_msg, resp_rdy,
|
||||
resp_val);
|
||||
input clk, req_val, reset, resp_rdy;
|
||||
input [31:0] req_msg;
|
||||
output req_rdy, resp_val;
|
||||
output [15:0] resp_msg;
|
||||
wire clk, req_val, reset, resp_rdy;
|
||||
wire [31:0] req_msg;
|
||||
wire req_rdy, resp_val;
|
||||
wire [15:0] resp_msg;
|
||||
wire [1:0] ctrl_state$in_;
|
||||
wire [1:0] ctrl_state$out;
|
||||
wire [15:0] dpath_a_reg$out;
|
||||
wire [15:0] dpath_b_reg$out;
|
||||
wire [0:0] ctrl$a_reg_en;
|
||||
wire [15:0] dpath_a_mux$out;
|
||||
wire [15:0] dpath_b_mux$out;
|
||||
wire [0:0] ctrl$b_reg_en;
|
||||
wire [0:0] dpath$is_b_zero;
|
||||
wire n_2, n_7, n_39, n_45, n_51, n_57, n_63, n_69;
|
||||
wire n_75, n_81, n_87, n_93, n_94, n_99, n_102, n_103;
|
||||
wire n_105, n_108, n_109, n_110, n_111, n_112, n_476, n_477;
|
||||
wire n_478, n_479, n_480, n_481, n_482, n_483, n_484, n_485;
|
||||
RegRst_0x9f365fdf6c8998a ctrl_state(.clk (clk), .in_
|
||||
(ctrl_state$in_), .out (ctrl_state$out), .reset (reset));
|
||||
lt_unsigned_rtlopto_model_20 dpath_a_lt_b_lt_607_16(.A
|
||||
(dpath_a_reg$out), .B (dpath_b_reg$out), .Z (n_94));
|
||||
RegEn_0x68db79c4ec1d6e5b dpath_a_reg(.clk (clk), .en (ctrl$a_reg_en),
|
||||
.in_ (dpath_a_mux$out), .out (dpath_a_reg$out), .reset (1'b0));
|
||||
Mux_0xdd6473406d1a99a dpath_b_mux(.clk (1'b0), .in_$000
|
||||
(dpath_a_reg$out), .in_$001 (req_msg[15:0]), .out
|
||||
(dpath_b_mux$out), .reset (1'b0), .sel (req_rdy));
|
||||
RegEn_0x68db79c4ec1d6e5b dpath_b_reg(.clk (clk), .en (ctrl$b_reg_en),
|
||||
.in_ (dpath_b_mux$out), .out (dpath_b_reg$out), .reset (1'b0));
|
||||
ZeroComparator_0x422b1f52edd46a85 dpath_b_zero(.clk (1'b0), .in_
|
||||
(dpath_b_reg$out), .out (dpath$is_b_zero), .reset (1'b0));
|
||||
sub_unsigned dpath_sub_sub_752_15(.A (dpath_a_reg$out), .B
|
||||
(dpath_b_reg$out), .Z (resp_msg));
|
||||
CDN_bmux4 ctrl_mux_b_reg_en_279_10_g1(.sel0 (ctrl_state$out[0]),
|
||||
.data0 (1'b1), .data1 (n_94), .sel1 (ctrl_state$out[1]), .data2
|
||||
(1'b0), .data3 (1'b0), .z (ctrl$b_reg_en));
|
||||
not g4 (ctrl$a_reg_en[0], ctrl_state$out[1]);
|
||||
nor g22 (req_rdy, ctrl_state$out[0], ctrl_state$out[1]);
|
||||
nor g219 (resp_val, ctrl$a_reg_en[0], ctrl_state$out[0]);
|
||||
not g1 (n_2, ctrl_state$out[0]);
|
||||
or g2 (n_7, n_2, ctrl_state$out[1]);
|
||||
CDN_bmux2 g3(.sel0 (n_94), .data0 (n_476), .data1 (n_477), .z
|
||||
(dpath_a_mux$out[0]));
|
||||
CDN_bmux2 g6(.sel0 (n_94), .data0 (n_478), .data1 (n_479), .z
|
||||
(dpath_a_mux$out[1]));
|
||||
CDN_bmux2 g9(.sel0 (n_94), .data0 (n_480), .data1 (n_481), .z
|
||||
(dpath_a_mux$out[2]));
|
||||
CDN_bmux2 g12(.sel0 (n_94), .data0 (n_482), .data1 (n_483), .z
|
||||
(dpath_a_mux$out[3]));
|
||||
CDN_bmux2 g15(.sel0 (n_94), .data0 (n_484), .data1 (n_485), .z
|
||||
(dpath_a_mux$out[4]));
|
||||
CDN_bmux2 g18(.sel0 (n_94), .data0 (resp_msg[5]), .data1
|
||||
(dpath_b_reg$out[5]), .z (n_39));
|
||||
CDN_bmux2 g19(.sel0 (n_7), .data0 (n_39), .data1 (req_msg[21]), .z
|
||||
(dpath_a_mux$out[5]));
|
||||
CDN_bmux2 g21(.sel0 (n_94), .data0 (resp_msg[6]), .data1
|
||||
(dpath_b_reg$out[6]), .z (n_45));
|
||||
CDN_bmux2 g221(.sel0 (n_7), .data0 (n_45), .data1 (req_msg[22]), .z
|
||||
(dpath_a_mux$out[6]));
|
||||
CDN_bmux2 g24(.sel0 (n_94), .data0 (resp_msg[7]), .data1
|
||||
(dpath_b_reg$out[7]), .z (n_51));
|
||||
CDN_bmux2 g25(.sel0 (n_7), .data0 (n_51), .data1 (req_msg[23]), .z
|
||||
(dpath_a_mux$out[7]));
|
||||
CDN_bmux2 g27(.sel0 (n_94), .data0 (resp_msg[8]), .data1
|
||||
(dpath_b_reg$out[8]), .z (n_57));
|
||||
CDN_bmux2 g28(.sel0 (n_7), .data0 (n_57), .data1 (req_msg[24]), .z
|
||||
(dpath_a_mux$out[8]));
|
||||
CDN_bmux2 g30(.sel0 (n_94), .data0 (resp_msg[9]), .data1
|
||||
(dpath_b_reg$out[9]), .z (n_63));
|
||||
CDN_bmux2 g31(.sel0 (n_7), .data0 (n_63), .data1 (req_msg[25]), .z
|
||||
(dpath_a_mux$out[9]));
|
||||
CDN_bmux2 g33(.sel0 (n_94), .data0 (resp_msg[10]), .data1
|
||||
(dpath_b_reg$out[10]), .z (n_69));
|
||||
CDN_bmux2 g34(.sel0 (n_7), .data0 (n_69), .data1 (req_msg[26]), .z
|
||||
(dpath_a_mux$out[10]));
|
||||
CDN_bmux2 g36(.sel0 (n_94), .data0 (resp_msg[11]), .data1
|
||||
(dpath_b_reg$out[11]), .z (n_75));
|
||||
CDN_bmux2 g37(.sel0 (n_7), .data0 (n_75), .data1 (req_msg[27]), .z
|
||||
(dpath_a_mux$out[11]));
|
||||
CDN_bmux2 g39(.sel0 (n_94), .data0 (resp_msg[12]), .data1
|
||||
(dpath_b_reg$out[12]), .z (n_81));
|
||||
CDN_bmux2 g40(.sel0 (n_7), .data0 (n_81), .data1 (req_msg[28]), .z
|
||||
(dpath_a_mux$out[12]));
|
||||
CDN_bmux2 g42(.sel0 (n_94), .data0 (resp_msg[13]), .data1
|
||||
(dpath_b_reg$out[13]), .z (n_87));
|
||||
CDN_bmux2 g43(.sel0 (n_7), .data0 (n_87), .data1 (req_msg[29]), .z
|
||||
(dpath_a_mux$out[13]));
|
||||
CDN_bmux2 g45(.sel0 (n_94), .data0 (resp_msg[14]), .data1
|
||||
(dpath_b_reg$out[14]), .z (n_93));
|
||||
CDN_bmux2 g46(.sel0 (n_7), .data0 (n_93), .data1 (req_msg[30]), .z
|
||||
(dpath_a_mux$out[14]));
|
||||
CDN_bmux2 g48(.sel0 (n_94), .data0 (resp_msg[15]), .data1
|
||||
(dpath_b_reg$out[15]), .z (n_99));
|
||||
CDN_bmux2 g49(.sel0 (n_7), .data0 (n_99), .data1 (req_msg[31]), .z
|
||||
(dpath_a_mux$out[15]));
|
||||
not g50 (n_102, dpath$is_b_zero[0]);
|
||||
or g51 (n_103, n_102, n_94);
|
||||
CDN_bmux2 g52(.sel0 (ctrl_state$out[0]), .data0 (req_val), .data1
|
||||
(n_103), .z (n_105));
|
||||
CDN_bmux2 g53(.sel0 (ctrl_state$out[1]), .data0 (n_105), .data1
|
||||
(ctrl_state$out[0]), .z (ctrl_state$in_[0]));
|
||||
not g54 (n_108, resp_rdy);
|
||||
or g55 (n_109, n_108, ctrl_state$out[0]);
|
||||
and g56 (n_111, n_109, ctrl_state$out[1]);
|
||||
or g57 (n_110, n_103, n_2);
|
||||
not g58 (n_112, n_110);
|
||||
or g59 (ctrl_state$in_[1], n_111, n_112);
|
||||
CDN_bmux2 g220_dup_0(.sel0 (n_7), .data0 (resp_msg[0]), .data1
|
||||
(req_msg[16]), .z (n_476));
|
||||
CDN_bmux2 g220_dup_1(.sel0 (n_7), .data0 (dpath_b_reg$out[0]), .data1
|
||||
(req_msg[16]), .z (n_477));
|
||||
CDN_bmux2 g7_dup_0(.sel0 (n_7), .data0 (resp_msg[1]), .data1
|
||||
(req_msg[17]), .z (n_478));
|
||||
CDN_bmux2 g7_dup_1(.sel0 (n_7), .data0 (dpath_b_reg$out[1]), .data1
|
||||
(req_msg[17]), .z (n_479));
|
||||
CDN_bmux2 g10_dup_0(.sel0 (n_7), .data0 (resp_msg[2]), .data1
|
||||
(req_msg[18]), .z (n_480));
|
||||
CDN_bmux2 g10_dup_1(.sel0 (n_7), .data0 (dpath_b_reg$out[2]), .data1
|
||||
(req_msg[18]), .z (n_481));
|
||||
CDN_bmux2 g13_dup_0(.sel0 (n_7), .data0 (resp_msg[3]), .data1
|
||||
(req_msg[19]), .z (n_482));
|
||||
CDN_bmux2 g13_dup_1(.sel0 (n_7), .data0 (dpath_b_reg$out[3]), .data1
|
||||
(req_msg[19]), .z (n_483));
|
||||
CDN_bmux2 g16_dup_0(.sel0 (n_7), .data0 (resp_msg[4]), .data1
|
||||
(req_msg[20]), .z (n_484));
|
||||
CDN_bmux2 g16_dup_1(.sel0 (n_7), .data0 (dpath_b_reg$out[4]), .data1
|
||||
(req_msg[20]), .z (n_485));
|
||||
endmodule
|
||||
|
||||
`ifdef RC_CDN_GENERIC_GATE
|
||||
`else
|
||||
module CDN_flop(clk, d, sena, aclr, apre, srl, srd, q);
|
||||
input clk, d, sena, aclr, apre, srl, srd;
|
||||
output q;
|
||||
wire clk, d, sena, aclr, apre, srl, srd;
|
||||
wire q;
|
||||
reg qi;
|
||||
assign #1 q = qi;
|
||||
always
|
||||
@(posedge clk or posedge apre or posedge aclr)
|
||||
if (aclr)
|
||||
qi <= 0;
|
||||
else if (apre)
|
||||
qi <= 1;
|
||||
else if (srl)
|
||||
qi <= srd;
|
||||
else begin
|
||||
if (sena)
|
||||
qi <= d;
|
||||
end
|
||||
initial
|
||||
qi <= 1'b0;
|
||||
endmodule
|
||||
`endif
|
||||
`ifdef RC_CDN_GENERIC_GATE
|
||||
`else
|
||||
`ifdef ONE_HOT_MUX // captures one-hot property of select inputs
|
||||
module CDN_mux2(sel0, data0, sel1, data1, z);
|
||||
input sel0, data0, sel1, data1;
|
||||
output z;
|
||||
wire sel0, data0, sel1, data1;
|
||||
reg z;
|
||||
always
|
||||
@(sel0 or sel1 or data0 or data1)
|
||||
case ({sel0, sel1})
|
||||
2'b10: z = data0;
|
||||
2'b01: z = data1;
|
||||
default: z = 1'bX;
|
||||
endcase
|
||||
endmodule
|
||||
`else
|
||||
module CDN_mux2(sel0, data0, sel1, data1, z);
|
||||
input sel0, data0, sel1, data1;
|
||||
output z;
|
||||
wire sel0, data0, sel1, data1;
|
||||
wire z;
|
||||
wire w_0, w_1;
|
||||
and a_0 (w_0, sel0, data0);
|
||||
and a_1 (w_1, sel1, data1);
|
||||
or org (z, w_0, w_1);
|
||||
endmodule
|
||||
`endif // ONE_HOT_MUX
|
||||
`endif
|
||||
`ifdef RC_CDN_GENERIC_GATE
|
||||
`else
|
||||
`ifdef ONE_HOT_MUX
|
||||
module CDN_bmux2(sel0, data0, data1, z);
|
||||
input sel0, data0, data1;
|
||||
output z;
|
||||
wire sel0, data0, data1;
|
||||
reg z;
|
||||
always
|
||||
@(sel0 or data0 or data1)
|
||||
case ({sel0})
|
||||
1'b0: z = data0;
|
||||
1'b1: z = data1;
|
||||
endcase
|
||||
endmodule
|
||||
`else
|
||||
module CDN_bmux2(sel0, data0, data1, z);
|
||||
input sel0, data0, data1;
|
||||
output z;
|
||||
wire sel0, data0, data1;
|
||||
wire z;
|
||||
wire inv_sel0, w_0, w_1;
|
||||
not i_0 (inv_sel0, sel0);
|
||||
and a_0 (w_0, inv_sel0, data0);
|
||||
and a_1 (w_1, sel0, data1);
|
||||
or org (z, w_0, w_1);
|
||||
endmodule
|
||||
`endif // ONE_HOT_MUX
|
||||
`endif
|
||||
`ifdef RC_CDN_GENERIC_GATE
|
||||
`else
|
||||
`ifdef ONE_HOT_MUX
|
||||
module CDN_bmux4(sel0, data0, data1, sel1, data2, data3, z);
|
||||
input sel0, data0, data1, sel1, data2, data3;
|
||||
output z;
|
||||
wire sel0, data0, data1, sel1, data2, data3;
|
||||
reg z;
|
||||
always
|
||||
@(sel0 or sel1 or data0 or data1 or data2 or data3)
|
||||
case ({sel0, sel1})
|
||||
2'b00: z = data0;
|
||||
2'b10: z = data1;
|
||||
2'b01: z = data2;
|
||||
2'b11: z = data3;
|
||||
endcase
|
||||
endmodule
|
||||
`else
|
||||
module CDN_bmux4(sel0, data0, data1, sel1, data2, data3, z);
|
||||
input sel0, data0, data1, sel1, data2, data3;
|
||||
output z;
|
||||
wire sel0, data0, data1, sel1, data2, data3;
|
||||
wire z;
|
||||
wire inv_sel0, inv_sel1, w_0, w_1, w_2, w_3;
|
||||
not i_0 (inv_sel0, sel0);
|
||||
not i_1 (inv_sel1, sel1);
|
||||
and a_0 (w_0, inv_sel1, inv_sel0, data0);
|
||||
and a_1 (w_1, inv_sel1, sel0, data1);
|
||||
and a_2 (w_2, sel1, inv_sel0, data2);
|
||||
and a_3 (w_3, sel1, sel0, data3);
|
||||
or org (z, w_0, w_1, w_2, w_3);
|
||||
endmodule
|
||||
`endif // ONE_HOT_MUX
|
||||
`endif
|
|
@ -0,0 +1,72 @@
|
|||
# ####################################################################
|
||||
|
||||
# Created by Genus(TM) Synthesis Solution 19.12-s121_1 on Mon Aug 10 11:16:47 CST 2020
|
||||
|
||||
# ####################################################################
|
||||
|
||||
set sdc_version 2.0
|
||||
|
||||
set_units -capacitance 1000fF
|
||||
set_units -time 1000ps
|
||||
|
||||
# Set the current design
|
||||
current_design gcd
|
||||
|
||||
create_clock -name "clk" -period 0.1 -waveform {0.0 0.05} [get_ports clk]
|
||||
set_clock_transition 0.4 [get_clocks clk]
|
||||
set_clock_gating_check -setup 0.0
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports resp_rdy]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports reset]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports req_val]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[0]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[1]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[2]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[3]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[4]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[5]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[6]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[7]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[8]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[9]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[10]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[11]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[12]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[13]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[14]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[15]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[16]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[17]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[18]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[19]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[20]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[21]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[22]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[23]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[24]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[25]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[26]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[27]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[28]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[29]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[30]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {req_msg[31]}]
|
||||
set_input_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports clk]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports resp_val]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[0]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[1]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[2]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[3]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[4]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[5]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[6]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[7]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[8]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[9]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[10]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[11]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[12]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[13]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[14]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports {resp_msg[15]}]
|
||||
set_output_delay -clock [get_clocks clk] -add_delay 0.0 [get_ports req_rdy]
|
||||
set_wire_load_mode "enclosed"
|
|
@ -0,0 +1,18 @@
|
|||
Instance: /gcd
|
||||
Power Unit: W
|
||||
PDB Frames: /stim#0/frame#0
|
||||
-------------------------------------------------------------------------
|
||||
Category Leakage Internal Switching Total Row%
|
||||
-------------------------------------------------------------------------
|
||||
memory 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00%
|
||||
register 1.86923e-06 1.98160e-03 0.00000e+00 1.98347e-03 53.24%
|
||||
latch 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00%
|
||||
logic 2.34543e-06 1.73943e-03 0.00000e+00 1.74178e-03 46.76%
|
||||
bbox 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00%
|
||||
clock 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00%
|
||||
pad 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00%
|
||||
pm 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00%
|
||||
-------------------------------------------------------------------------
|
||||
Subtotal 4.21466e-06 3.72103e-03 0.00000e+00 3.72524e-03 100.00%
|
||||
Percentage 0.11% 99.89% 0.00% 100.00% 100.00%
|
||||
-------------------------------------------------------------------------
|
|
@ -0,0 +1,62 @@
|
|||
============================================================
|
||||
Generated by: Genus(TM) Synthesis Solution 19.12-s121_1
|
||||
Generated on: Aug 10 2020 11:16:47 am
|
||||
Module: gcd
|
||||
Technology library: gscl45nm
|
||||
Operating conditions: typical (balanced_tree)
|
||||
Wireload mode: enclosed
|
||||
Area mode: timing library
|
||||
============================================================
|
||||
|
||||
Pin Type Fanout Load Slew Delay Arrival
|
||||
(fF) (ps) (ps) (ps)
|
||||
-------------------------------------------------------------------------
|
||||
(clock clk) launch 0 R
|
||||
dpath_b_reg
|
||||
out_reg[1]/clk 400 0 R
|
||||
out_reg[1]/q (u) unmapped_d_flop 6 25.2 0 +191 191 F
|
||||
dpath_b_reg/out[1]
|
||||
dpath_sub_sub_752_15/B[1]
|
||||
g16/in_0 +0 191
|
||||
g16/z (u) unmapped_not 2 9.0 0 +42 233 R
|
||||
g23/in_1 +0 233
|
||||
g23/z (u) unmapped_nor2 1 4.2 0 +41 274 F
|
||||
g53/in_0 +0 274
|
||||
g53/z (u) unmapped_not 2 9.0 0 +42 316 R
|
||||
g54/in_1 +0 316
|
||||
g54/z (u) unmapped_nand2 1 4.2 0 +41 356 F
|
||||
g55/in_1 +0 356
|
||||
g55/z (u) unmapped_nand2 3 13.5 0 +58 414 R
|
||||
g87/in_1 +0 414
|
||||
g87/z (u) unmapped_nand2 1 4.2 0 +41 454 F
|
||||
g88/in_1 +0 454
|
||||
g88/z (u) unmapped_nand2 5 22.5 0 +65 519 R
|
||||
g128/in_0 +0 519
|
||||
g128/z (u) unmapped_nand2 1 4.2 0 +41 560 F
|
||||
g129/in_1 +0 560
|
||||
g129/z (u) unmapped_nand2 8 36.0 0 +76 636 R
|
||||
g162/in_1 +0 636
|
||||
g162/z (u) unmapped_nand2 1 4.2 0 +41 677 F
|
||||
g163/in_1 +0 677
|
||||
g163/z (u) unmapped_nand2 1 4.5 0 +41 718 R
|
||||
g203/in_0 +0 718
|
||||
g203/z (u) unmapped_xnor2 2 4.5 0 +76 794 R
|
||||
dpath_sub_sub_752_15/Z[15]
|
||||
g48/data0 +0 794
|
||||
g48/z (u) unmapped_bmux3 1 4.5 0 +76 870 R
|
||||
g49/data0 +0 870
|
||||
g49/z (u) unmapped_bmux3 1 4.5 0 +76 947 R
|
||||
dpath_a_reg/in_[15]
|
||||
g49_g1/data1 +0 947
|
||||
g49_g1/z (u) unmapped_mux4 1 4.5 0 +71 1018 R
|
||||
out_reg[15]/d <<< unmapped_d_flop +0 1018
|
||||
out_reg[15]/clk setup 400 +56 1074 R
|
||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
(clock clk) capture 100 R
|
||||
-------------------------------------------------------------------------
|
||||
Timing slack : -974ps (TIMING VIOLATION)
|
||||
Start-point : dpath_b_reg/out_reg[1]/clk
|
||||
End-point : dpath_a_reg/out_reg[15]/d
|
||||
|
||||
(u) : Net has unmapped pin(s).
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
all:
|
||||
genus -legacy_ui -batch -files ../scripts/gcd_to_synth.tcl
|
|
@ -0,0 +1,22 @@
|
|||
set hdl_files {gcd.v}
|
||||
set DESIGN gcd
|
||||
set clkpin clk
|
||||
set delay 100
|
||||
set_attribute hdl_search_path /home/jxzhang/projects/cocoon/design/gcd/hdl
|
||||
set_attribute lib_search_path /home/jxzhang/projects/cocoon/design/lib
|
||||
set_attribute information_level 6
|
||||
set_attribute library gscl45nm.lib
|
||||
read_hdl ${hdl_files}
|
||||
elaborate $DESIGN
|
||||
set clock [define_clock -period ${delay} -name ${clkpin} [clock_ports]]
|
||||
external_delay -input 0 -clock clk [find / -port ports_in/*]
|
||||
external_delay -output 0 -clock clk [find / -port ports_out/*]
|
||||
dc::set_clock_transition .4 clk
|
||||
check_design -unresolved
|
||||
report timing -lint
|
||||
synthesize -effort -is_incremental
|
||||
report timing > /home/jxzhang/projects/cocoon/design/gcd/gscl45nm/reports/timing_synth.rpt
|
||||
report gates > /home/jxzhang/projects/cocoon/design/gcd/gscl45nm/reports/gates_synth.rpt
|
||||
report power > /home/jxzhang/projects/cocoon/design/gcd/gscl45nm/reports/gates_synth.rpt
|
||||
write_hdl -mapped > /home/jxzhang/projects/cocoon/design/gcd/gscl45nm/objects/gcd.vh
|
||||
write_sdc > /home/jxzhang/projects/cocoon/design/gcd/gscl45nm/objects/gcd_synth.sdc
|
14
engine.py
14
engine.py
|
@ -1,4 +1,5 @@
|
|||
import subprocess
|
||||
import os
|
||||
import util
|
||||
import ops.cds.syn as syn1
|
||||
import ops.openroad.syn as syn2
|
||||
|
@ -8,15 +9,20 @@ def run(design, flow):
|
|||
for x in flow.ops:
|
||||
if x[0] == "GenusSynth":
|
||||
run_path = util.getRunPath(design, "Cadence")
|
||||
make_file = open("Makefile", "w")
|
||||
script_path = "../scripts/"
|
||||
print(run_path)
|
||||
make_file = open(run_path + "/" + "Makefile", "w")
|
||||
tmpop = eval("syn1." + "GenusSynth" + "(design)")
|
||||
tmpop.config(design, design_name + "_" + x[1])
|
||||
make_file.write("all:\n")
|
||||
make_file.write("\tgenus -legacy_ui -batch -files " + design_name + "_" + x[1] + ".tcl\n")
|
||||
make_file.write("\tgenus -legacy_ui -batch -files " + script_path + design_name + "_" + x[1] + ".tcl\n")
|
||||
#if x[0] == "OpenROADSynth":
|
||||
|
||||
#cmd = 'make'
|
||||
#subprocess.Popen(cmd)
|
||||
run_path = util.getRunPath(design, "Cadence")
|
||||
os.chdir(run_path)
|
||||
print(os.getcwd())
|
||||
cmd = 'make'
|
||||
subprocess.Popen(cmd)
|
||||
|
||||
return 0
|
||||
|
||||
|
|
|
@ -28,12 +28,12 @@ class GenusSynth():
|
|||
|
||||
def getObjHDL(self):
|
||||
obj_path = util.getObjPath(self.design, "Cadence")
|
||||
obj_hdl = obj_pat + "/" + self.design.top_name + ".vh"
|
||||
obj_hdl = obj_path + "/" + self.design.top_name + ".vh"
|
||||
return obj_hdl
|
||||
|
||||
def getObjSDC(self):
|
||||
obj_path = util.getObjPath(self.design, "Cadence")
|
||||
obj_sdc = obj_pat + "/" + self.design.top_name + "_synth.sdc"
|
||||
obj_sdc = obj_path + "/" + self.design.top_name + "_synth.sdc"
|
||||
return obj_sdc
|
||||
|
||||
def getRptGates(self):
|
||||
|
@ -46,7 +46,7 @@ class GenusSynth():
|
|||
rpt_timing = rpt_path + "/" + "timing_synth.rpt"
|
||||
return rpt_timing
|
||||
|
||||
def getRptGates(self):
|
||||
def getRptPower(self):
|
||||
rpt_path = util.getRptPath(self.design, "Cadence")
|
||||
rpt_power = rpt_path + "/" + "gates_synth.rpt"
|
||||
return rpt_power
|
||||
|
@ -75,7 +75,7 @@ class GenusSynth():
|
|||
tcl.write('set delay %d\n'%(self.design.delay))
|
||||
#tcl.write('set_attribute hdl_search_path %s\n'%(self.design.hdl_path))
|
||||
#tcl.write('set_attribute lib_search_path %s\n'%(self.design.lib_path))
|
||||
tcl.write('set_attribute hdl_search_path %s\n'%(shdl_path))
|
||||
tcl.write('set_attribute hdl_search_path %s\n'%(hdl_path))
|
||||
tcl.write('set_attribute lib_search_path %s\n'%(lib_path))
|
||||
tcl.write('set_attribute information_level 6 \n')
|
||||
tcl.write('set_attribute library %s\n'%(lib_file))
|
||||
|
|
14
util.py
14
util.py
|
@ -9,49 +9,49 @@ def getLef(design):
|
|||
|
||||
def getHDLPath(design, baseflow):
|
||||
if baseflow == "Cadence":
|
||||
hdl_path = "./design/" + design.top_name + "/hdl"
|
||||
hdl_path = "/home/jxzhang/projects/cocoon/design/" + design.top_name + "/hdl"
|
||||
elif baseflow == "Openroad":
|
||||
hdl_path = "/OpenROAD-flow/flow/designs/design/" + design.top_name + "/hdl"
|
||||
return hdl_path
|
||||
|
||||
def getLibPath(design, baseflow):
|
||||
if baseflow == "Cadence":
|
||||
lib_path = "./design/lib"
|
||||
lib_path = "/home/jxzhang/projects/cocoon/design/lib"
|
||||
elif baseflow == "Openroad":
|
||||
lib_path = "/OpenROAD-flow/flow/platforms/" + design.lib_name
|
||||
return lib_path
|
||||
|
||||
def getLefPath(design, baseflow):
|
||||
if baseflow == "Cadence":
|
||||
lef_path = "./design/lib"
|
||||
lef_path = "/home/jxzhang/projects/cocoon/design/lib"
|
||||
elif baseflow == "Openroad":
|
||||
lef_path = ""
|
||||
return lef_path
|
||||
|
||||
def getRptPath(design, baseflow):
|
||||
if baseflow == "Cadence":
|
||||
rpt_path = "./design/" + design.top_name + "/" + design.lib_name + "/reports"
|
||||
rpt_path = "/home/jxzhang/projects/cocoon/design/" + design.top_name + "/" + design.lib_name + "/reports"
|
||||
elif baseflow == "Openroad":
|
||||
rpt_path = "/OpenROAD-flow/flow" + design.top_name + "/" + design.lib_name + "/reports"
|
||||
return rpt_path
|
||||
|
||||
def getObjPath(design, baseflow):
|
||||
if baseflow == "Cadence":
|
||||
obj_path = "./design/" + design.top_name + "/" + design.lib_name + "/objects"
|
||||
obj_path = "/home/jxzhang/projects/cocoon/design/" + design.top_name + "/" + design.lib_name + "/objects"
|
||||
elif baseflow == "Openroad":
|
||||
obj_path = "/OpenROAD-flow/flow" + design.top_name + "/" + design.lib_name + "/objects"
|
||||
return obj_path
|
||||
|
||||
def getScriptPath(design, baseflow):
|
||||
if baseflow == "Cadence":
|
||||
script_path = "./design/" + design.top_name + "/" + design.lib_name + "/scripts"
|
||||
script_path = "/home/jxzhang/projects/cocoon/design/" + design.top_name + "/" + design.lib_name + "/scripts"
|
||||
elif baseflow == "Openroad":
|
||||
script_path = "/OpenROAD-flow/flow" + design.top_name + "/" + design.lib_name + "/scripts"
|
||||
return script_path
|
||||
|
||||
def getRunPath(design, baseflow):
|
||||
if baseflow == "Cadence":
|
||||
run_path = "./design/" + design.top_name + "/" + design.lib_name + "/run"
|
||||
run_path = "/home/jxzhang/projects/cocoon/design/" + design.top_name + "/" + design.lib_name + "/run"
|
||||
elif baseflow == "Openroad":
|
||||
run_path = "/OpenROAD-flow/flow" + design.top_name + "/" + design.lib_name + "/run"
|
||||
return run_path
|
Loading…
Reference in New Issue