PROGRAM EX_TSORT IMPLICIT NONE INTEGER NL,ND,NC,NO,IDEP,IORD,IPOS,ICODE,I,J,IL,IR PARAMETER(NL=15,ND=44,NC=69) CHARACTER*(20) LABEL DIMENSION IDEP(ND,2),LABEL(NL),IORD(NL),IPOS(NL),ICODE(NC) DATA LABEL/'DES_SYSTEM_LIB','DW01','DW02','DW03','DW04','DW05', 1 'DW06','DW07','DWARE','GTECH','RAMLIB','STD_CELL_LIB','SYNOPSYS', 2 'STD','IEEE'/ DATA ICODE/1,14,13,12,1,3,2,11,15,0,2,15,2,9,10,0,3,15,3,9,0,4,14, 213,9,4,3,2,15,10,0,5,5,15,2,9,10,0,6,6,15,9,0,7,7,15,9,0,8,15,9,0, 39,15,9,0,10,15,10,0,11,14,15,0,12,15,12,0,0/ C DECODE DEPENDENCIES AND BUILD IDEP ARRAY I=0 J=0 10 I=I+1 IL=ICODE(I) IF(IL.EQ.0) GO TO 30 20 I=I+1 IR=ICODE(I) IF(IR.EQ.0) GO TO 10 J=J+1 IDEP(J,1)=IL IDEP(J,2)=IR GO TO 20 30 CONTINUE C SORT LIBRARIES ACCORDING TO DEPENDENCIES (TOPOLOGICAL SORT) CALL TSORT(NL,ND,IDEP,IORD,IPOS,NO) PRINT*,'COMPILE ORDER' DO 40 I=1,NO 40 PRINT*,LABEL(IORD(I)) PRINT*,'UNORDERED LIBRARIES' DO 50 I=NO+1,NL 50 PRINT*,LABEL(IORD(I)) END