diff -c -r sis-1.1/io/write_blif.c sis/io/write_blif.c *** sis-1.1/io/write_blif.c Fri Jun 12 11:15:13 1992 --- sis/io/write_blif.c Fri Jun 12 11:03:03 1992 *************** *** 3,10 **** * * $Source: /vol/opua/opua2/sis/sis-1.2/common/src/sis/io/RCS/write_blif.c,v $ * $Author: sis $ ! * $Revision: 1.2 $ ! * $Date: 1992/05/06 18:54:43 $ * */ #include "sis.h" --- 3,10 ---- * * $Source: /vol/opua/opua2/sis/sis-1.2/common/src/sis/io/RCS/write_blif.c,v $ * $Author: sis $ ! * $Revision: 1.4 $ ! * $Date: 1992/06/04 23:21:55 $ * */ #include "sis.h" *************** *** 148,176 **** /* Get correct names for the fake PO's corresponding to the latches. */ #ifdef SIS foreach_primary_output(network, gen, po){ ! if (network_is_real_po(network, po)) ! continue; ! if (!(node = network_find_node(dc_net, po->name))) ! continue; ! fanin = po->fanin[0]; ! if (node_function(fanin) == NODE_PI){ ! nodein = node->fanin[0]; ! if (node_num_fanout(nodein) == 1) ! network_delete_node(dc_net, nodein); ! network_delete_node(dc_net, node); ! continue; ! } ! po_cnt = io_rpo_fanout_count(fanin, &pnode); ! if (po_cnt != 0){ ! nodein = node->fanin[0]; ! network_delete_node(dc_net, node); ! if (node_num_fanout(nodein) == 0) ! network_delete_node(dc_net, nodein); ! continue; ! } ! name = strsav(fanin->name); ! network_change_node_name(dc_net, node, name); ! } #endif /* SIS */ foreach_primary_input (dc_net, gen, p) { --- 148,203 ---- /* Get correct names for the fake PO's corresponding to the latches. */ #ifdef SIS foreach_primary_output(network, gen, po){ ! if (network_is_real_po(network, po)) ! continue; ! if (!(node = network_find_node(dc_net, po->name))) ! continue; ! fanin = po->fanin[0]; ! if (node_function(fanin) == NODE_PI){ ! nodein = node->fanin[0]; ! if (node_num_fanout(nodein) == 1) ! network_delete_node(dc_net, nodein); ! network_delete_node(dc_net, node); ! continue; ! } ! po_cnt = io_rpo_fanout_count(fanin, &pnode); ! if (po_cnt != 0){ ! nodein = node->fanin[0]; ! network_delete_node(dc_net, node); ! if (node_num_fanout(nodein) == 0) ! network_delete_node(dc_net, nodein); ! continue; ! } ! ! /* Try to preserve as much dont-care as possible. ! * For now this is only possible for D-type latches. */ ! if (netlist_flag) { ! switch(lib_gate_type(lib_gate_of(fanin))) { ! case RISING_EDGE: ! case FALLING_EDGE: ! case ACTIVE_HIGH: ! case ACTIVE_LOW: ! case ASYNCH: ! if (node_function(fanin) == NODE_BUF) { ! /* D-type FF */ ! fanin = fanin->fanin[0]; ! } else { ! /* we have no way of propagating the dont-care ! * info for complex latches */ ! (void)fprintf(siserr, "warning: can't preserve dont-care info for complex latch %s\n", ! fanin->name); ! nodein = node->fanin[0]; ! network_delete_node(dc_net, node); ! if (node_num_fanout(nodein) == 0) ! network_delete_node(dc_net, nodein); ! continue; ! } ! break; ! } ! } ! name = strsav(fanin->name); ! network_change_node_name(dc_net, node, name); ! } #endif /* SIS */ foreach_primary_input (dc_net, gen, p) { diff -c -r sis-1.1/map/com_map.c sis/map/com_map.c *** sis-1.1/map/com_map.c Fri Jun 12 11:15:22 1992 --- sis/map/com_map.c Fri Jun 12 11:03:27 1992 *************** *** 3,10 **** * * $Source: /vol/opua/opua2/sis/sis-1.2/common/src/sis/map/RCS/com_map.c,v $ * $Author: sis $ ! * $Revision: 1.3 $ ! * $Date: 1992/05/06 18:55:51 $ * */ /* file @(#)com_map.c 1.22 */ --- 3,10 ---- * * $Source: /vol/opua/opua2/sis/sis-1.2/common/src/sis/map/RCS/com_map.c,v $ * $Author: sis $ ! * $Revision: 1.4 $ ! * $Date: 1992/06/05 16:21:19 $ * */ /* file @(#)com_map.c 1.22 */ *************** *** 1391,1396 **** --- 1391,1397 ---- new_fanin[0] = new_clock_fanin; new_clock = node_dup(old_clock); node_replace_internal(new_clock, new_fanin, 1, NIL(set_family_t)); + network_add_node(new_network, new_clock); return new_clock; } diff -c -r sis-1.1/map/library.c sis/map/library.c *** sis-1.1/map/library.c Fri Jun 12 11:15:44 1992 --- sis/map/library.c Fri Jun 12 11:03:38 1992 *************** *** 3,10 **** * * $Source: /vol/opua/opua2/sis/sis-1.2/common/src/sis/map/RCS/library.c,v $ * $Author: sis $ ! * $Revision: 1.4 $ ! * $Date: 1992/05/06 18:55:51 $ * */ /* file @(#)library.c 1.14 */ --- 3,10 ---- * * $Source: /vol/opua/opua2/sis/sis-1.2/common/src/sis/map/RCS/library.c,v $ * $Author: sis $ ! * $Revision: 1.5 $ ! * $Date: 1992/06/05 16:24:15 $ * */ /* file @(#)library.c 1.14 */ *************** *** 14,25 **** */ /* * $Log: library.c,v $ ! * Revision 1.4 1992/05/06 18:55:51 sis ! * SIS release 1.1 * ! * Revision 1.3 1992/05/06 00:49:37 sis ! * Bug fix in lib_pattern_matches (for MIS support). * * Revision 1.3 1992/05/06 00:27:18 cmoon * in lib_pattern_matches * --- 14,35 ---- */ /* * $Log: library.c,v $ ! * Revision 1.5 1992/06/05 16:24:15 sis ! * bug fix in find_or_create_pattern ! * (this fixed a bug where read_blif coredumps after doing a read_library) ! * bug fix in lib_reduce_network ! * (this fixed the core dump on sun machines upon read_library) * ! * Revision 1.6 1992/06/03 20:53:33 cmoon ! * lib_reduce_network sets latch control node to NIL. * + * Revision 1.5 1992/05/30 01:04:47 cmoon + * find_or_create_pattern returns prim after doing lib_expand_network now. + * + * Revision 1.4 1992/05/15 21:01:27 cmoon + * keep SIS from aborting when library spec with inconsistent + * name convention is used (compare_network). + * * Revision 1.3 1992/05/06 00:27:18 cmoon * in lib_pattern_matches * *************** *** 286,291 **** --- 296,304 ---- lsForeachItem(library->patterns, gen, prim) { if (lib_pattern_matches(network, prim, /* consider type */ 0)) { LS_ASSERT(lsFinish(gen)); + #ifdef SIS + if (!lib_expand_network(network)) return 0; + #endif /* SIS */ return prim; } } *************** *** 425,431 **** foreach_primary_output(net1, gen, po1) { po2 = network_find_node(net2, po1->name); ! if (po2 == 0) { LS_ASSERT(lsFinish(gen)); return 1; } --- 438,444 ---- foreach_primary_output(net1, gen, po1) { po2 = network_find_node(net2, po1->name); ! if (po2 == 0 || node_type(po2) != PRIMARY_OUTPUT) { LS_ASSERT(lsFinish(gen)); return 1; } *************** *** 712,717 **** --- 725,731 ---- if (clock != NIL(node_t)) { /* save clock info and delete clock nodes */ lib_save_clock_info(network, clock); + latch_set_control(latch, NIL(node_t)); } /* remove "ANY" node */ diff -c -r sis-1.1/map/map_interface.c sis/map/map_interface.c *** sis-1.1/map/map_interface.c Fri Jun 12 11:15:38 1992 --- sis/map/map_interface.c Fri Jun 12 11:03:58 1992 *************** *** 3,10 **** * * $Source: /vol/opua/opua2/sis/sis-1.2/common/src/sis/map/RCS/map_interface.c,v $ * $Author: sis $ ! * $Revision: 1.4 $ ! * $Date: 1992/05/06 18:55:51 $ * */ /* file @(#)map_interface.c 1.7 */ --- 3,10 ---- * * $Source: /vol/opua/opua2/sis/sis-1.2/common/src/sis/map/RCS/map_interface.c,v $ * $Author: sis $ ! * $Revision: 1.5 $ ! * $Date: 1992/06/05 16:21:19 $ * */ /* file @(#)map_interface.c 1.7 */ *************** *** 667,673 **** case ASYNCH: if (d_asynch == NIL(lib_gate_t)) { ! error_append("library error: no asynch delay in the library\n"); } break; --- 667,675 ---- case ASYNCH: if (d_asynch == NIL(lib_gate_t)) { ! if (! options->no_warning) { ! (void)fprintf(siserr,"warning: no asynch delay in the library\n"); ! } } break; diff -c -r sis-1.1/map/virtual_net.c sis/map/virtual_net.c *** sis-1.1/map/virtual_net.c Fri Jun 12 11:15:52 1992 --- sis/map/virtual_net.c Fri Jun 12 11:04:08 1992 *************** *** 3,10 **** * * $Source: /vol/opua/opua2/sis/sis-1.2/common/src/sis/map/RCS/virtual_net.c,v $ * $Author: sis $ ! * $Revision: 1.3 $ ! * $Date: 1992/05/06 18:55:51 $ * */ /* file @(#)virtual_net.c 1.7 */ --- 3,10 ---- * * $Source: /vol/opua/opua2/sis/sis-1.2/common/src/sis/map/RCS/virtual_net.c,v $ * $Author: sis $ ! * $Revision: 1.4 $ ! * $Date: 1992/06/05 16:21:19 $ * */ /* file @(#)virtual_net.c 1.7 */ *************** *** 11,25 **** /* last modified on 7/22/91 at 12:36:42 */ /* * $Log: virtual_net.c,v $ ! * Revision 1.3 1992/05/06 18:55:51 sis ! * SIS release 1.1 * ! * Revision 1.2 1992/03/10 19:20:52 sis ! * do_flatten now handles latches correctly. * - * Revision 1.2 1992/03/10 19:20:52 sis - * do_flatten now handles latches correctly. - * * Revision 1.2 1992/03/03 00:18:47 cmoon * do_flatten now handles latches correctly * --- 11,23 ---- /* last modified on 7/22/91 at 12:36:42 */ /* * $Log: virtual_net.c,v $ ! * Revision 1.4 1992/06/05 16:21:19 sis ! * bug fix in do_flatten (it skipped POs, resulting in significant ! * area overheads) * ! * Revision 1.3 1992/06/01 20:26:28 cmoon ! * fixed a bug in do_flatten * * Revision 1.2 1992/03/03 00:18:47 cmoon * do_flatten now handles latches correctly * *************** *** 347,353 **** case NODE_COMPLEX: #ifdef SIS foreach_fanout(node, gen, fanout) { ! if (lib_gate_type(lib_gate_of(fanout)) != COMBINATIONAL) { LS_ASSERT(lsFinish(gen)); return; } --- 345,355 ---- case NODE_COMPLEX: #ifdef SIS foreach_fanout(node, gen, fanout) { ! switch (lib_gate_type(lib_gate_of(fanout))) { ! case COMBINATIONAL: ! case UNKNOWN: ! break; ! default: LS_ASSERT(lsFinish(gen)); return; }