berkeley-abc/abc

Issue(&nf): Missing delay transformation in genlib?

wjrforcyber opened this issue · 0 comments

It seems like the gate delay (<rise-block-delay> and <fall-block-delay>) in &nf is not properly calculated and transformed as map command does, for example (with verbose = 1):

ABC command line: "source -x /Users/jingrenwang/Github/ABC/abcOri/abc/testrec.script".

abc - > read_lib /Users/jingrenwang/Github/ABC/abcOri/abc/NangateOpenCellLibrary_typical.lib
Library "NangateOpenCellLibrary" from "/Users/jingrenwang/Github/ABC/abcOri/abc/NangateOpenCellLibrary_typical.lib" has 90 cells (35 skipped: 21 seq; 6 tri-state; 8 no func; 10 dont_use).  Time =     0.06 sec
Warning: Detected 2 multi-output gates (for example, "FA_X1").
abc - > read_aiger /Users/jingrenwang/Github/ABC/abcOri/abc/i10.aig
abc - > &get
abc - > &nf -v
   0 : _const0_               In = 0   N =   1   A =     0.000000   D =     0.000000
   1 : _const1_               In = 0   N =   1   A =     0.000000   D =     0.000000
   2 : BUF_X1                 In = 1   N =   9   A =     0.800000   D =     1.000000
   3 : INV_X1                 In = 1   N =   6   A =     0.530000   D =     1.000000
   4 : NAND2_X1               In = 2   N =   3   A =     0.800000   D =     1.000000
   5 : NOR2_X1                In = 2   N =   3   A =     0.800000   D =     1.000000
   6 : AND2_X1                In = 2   N =   3   A =     1.060000   D =     1.000000
   7 : OR2_X1                 In = 2   N =   3   A =     1.060000   D =     1.000000
   8 : XNOR2_X1               In = 2   N =   2   A =     1.600000   D =     1.000000
   9 : XOR2_X1                In = 2   N =   2   A =     1.600000   D =     1.000000
  10 : AOI21_X1               In = 3   N =   3   A =     1.060000   D =     1.000000
  11 : NAND3_X1               In = 3   N =   3   A =     1.060000   D =     1.000000
  12 : NOR3_X1                In = 3   N =   3   A =     1.060000   D =     1.000000
  13 : OAI21_X1               In = 3   N =   3   A =     1.060000   D =     1.000000
  14 : AND3_X1                In = 3   N =   3   A =     1.330000   D =     1.000000
  15 : OR3_X1                 In = 3   N =   3   A =     1.330000   D =     1.000000
  16 : MUX2_X1                In = 3   N =   2   A =     1.860000   D =     1.000000
  17 : AOI211_X1              In = 4   N =   3   A =     1.330000   D =     1.000000
  18 : AOI22_X1               In = 4   N =   3   A =     1.330000   D =     1.000000
  19 : NAND4_X1               In = 4   N =   3   A =     1.330000   D =     1.000000
  20 : NOR4_X1                In = 4   N =   3   A =     1.330000   D =     1.000000
  21 : OAI211_X1              In = 4   N =   3   A =     1.330000   D =     1.000000
  22 : OAI22_X1               In = 4   N =   3   A =     1.330000   D =     1.000000
  23 : AND4_X1                In = 4   N =   3   A =     1.600000   D =     1.000000
  24 : OR4_X1                 In = 4   N =   3   A =     1.600000   D =     1.000000
  25 : AOI221_X1              In = 5   N =   3   A =     1.600000   D =     1.000000
  26 : OAI221_X1              In = 5   N =   3   A =     1.600000   D =     1.000000
  27 : OAI33_X1               In = 6   N =   1   A =     1.860000   D =     1.000000
  28 : AOI222_X1              In = 6   N =   3   A =     2.130000   D =     1.000000
  29 : OAI222_X1              In = 6   N =   3   A =     2.130000   D =     1.000000
LutSize = 6  CutNum = 16  Iter = 4  Coarse = 0   Cells = 30  Funcs = 2291  Matches = 28512  And = 2675  
Computing cuts...
CutPair = 319021  Merge = 123135 (46.0)  Eval = 84235 (31.5)  Cut = 31872 (11.9)  Use = 14015 (5.2)  Mat = 107231 (40.1)  
Gia = 0.04 MB  Man = 0.29 MB  Cut = 0.75 MB   TT = 0.16 MB  Total = 1.23 MB   Time =     0.02 sec
Delay :  Delay =   22.00  Area =     1845.54  Gate =  1570  Inv =    99  Edge =   4273  Time =     0.02 sec
Area  :  Delay =   22.00  Area =     1581.77  Gate =  1391  Inv =   107  Edge =   3741  Time =     0.02 sec
Area  :  Delay =   22.00  Area =     1535.29  Gate =  1357  Inv =   134  Edge =   3626  Time =     0.02 sec
Area  :  Delay =   22.00  Area =     1497.07  Gate =  1332  Inv =   141  Edge =   3541  Time =     0.02 sec
Ela   :  Delay =   22.00  Area =     1457.33  Gate =  1293  Inv =   134  Edge =   3471  Time =     0.02 sec
Ela   :  Delay =   22.00  Area =     1445.11  Gate =  1283  Inv =   123  Edge =   3472  Time =     0.03 sec
abc - > &put
abc - > ps
�[1;37m/Users/jingrenwang/Github/ABC/abcOri/abc/i10:�[0m i/o =  257/  224  lat =    0  nd =  1283  edge =   3467  area =1442.72  delay =22.00  lev = 22
abc - > print_delay
Critical path from PI "pi054" to PO "po011":
Level   0 : Primary input "pi054".   Arrival time =   0.0. 
Level   1 :       n510/A    (INV_X1)      Arrival =   1.0.   I/O times: (0.0 -> 1.0)
Level   2 :       n566/A2   (NOR3_X1)     Arrival =   2.0.   I/O times: (0.0, 1.0, 0.0 -> 2.0)
Level   3 :       n571/A3   (NAND4_X1)    Arrival =   3.0.   I/O times: (0.0, 0.0, 2.0, 2.0 -> 3.0)
Level   4 :       n575/C1   (AOI211_X1)   Arrival =   4.0.   I/O times: (0.0, 2.0, 3.0, 3.0 -> 4.0)
Level   5 :       n580/C1   (OAI211_X1)   Arrival =   5.0.   I/O times: (0.0, 1.0, 4.0, 4.0 -> 5.0)
Level   6 :       n586/A3   (NOR4_X1)     Arrival =   6.0.   I/O times: (0.0, 3.0, 5.0, 3.0 -> 6.0)
Level   7 :       n596/A2   (NOR4_X1)     Arrival =   7.0.   I/O times: (0.0, 6.0, 3.0, 3.0 -> 7.0)
Level   8 :       n597/A4   (NAND4_X1)    Arrival =   8.0.   I/O times: (1.0, 0.0, 2.0, 7.0 -> 8.0)
Level   9 :       n644/A1   (NAND2_X1)    Arrival =   9.0.   I/O times: (8.0, 8.0 -> 9.0)
Level  10 :       n765/A2   (NAND3_X1)    Arrival =  10.0.   I/O times: (0.0, 9.0, 9.0 -> 10.0)
Level  11 :       n766/A    (OAI21_X1)    Arrival =  11.0.   I/O times: (10.0, 10.0, 9.0 -> 11.0)
Level  12 :       n767/A    (INV_X1)      Arrival =  12.0.   I/O times: (11.0 -> 12.0)
Level  13 :       n879/A4   (NOR4_X1)     Arrival =  13.0.   I/O times: (11.0, 11.0, 4.0, 12.0 -> 13.0)
Level  14 :       n880/A3   (NAND3_X1)    Arrival =  14.0.   I/O times: (0.0, 12.0, 13.0 -> 14.0)
Level  15 :       n972/A1   (AND2_X1)     Arrival =  15.0.   I/O times: (14.0, 14.0 -> 15.0)
Level  16 :       n974/C1   (AOI211_X1)   Arrival =  16.0.   I/O times: (1.0, 1.0, 15.0, 15.0 -> 16.0)
Level  17 :       n977/A    (AOI21_X1)    Arrival =  17.0.   I/O times: (16.0, 16.0, 2.0 -> 17.0)
Level  18 :       n978/A    (OAI221_X1)   Arrival =  18.0.   I/O times: (17.0, 16.0, 1.0, 1.0, 17.0 -> 18.0)
Level  19 :       n979/A4   (AND4_X1)     Arrival =  19.0.   I/O times: (1.0, 13.0, 13.0, 18.0 -> 19.0)
Level  20 :       n980/A3   (NAND3_X1)    Arrival =  20.0.   I/O times: (4.0, 13.0, 19.0 -> 20.0)
Level  21 :      n1068/A2   (AND4_X1)     Arrival =  21.0.   I/O times: (5.0, 20.0, 4.0, 17.0 -> 21.0)
Level  22 :      n1076/A1   (OR2_X1)      Arrival =  22.0.   I/O times: (21.0, 10.0 -> 22.0)
Level  23 : Primary output "po011".   Required time = -1000000000.0.  Path slack = -1000000000.0.

D keeps equals to 1.00 and all delay is calculated in 1.00, while the delay of map is calculated in a proper way which has delay transferred.