library (ExamBus) { date : "May 14, 2002"; revision : 2002.05; bus_naming_style :"%s[%d]";/* Optional; this is the default */ type (bus4) { base_type : array;/* Required */ data_type : bit;/* Required if base_type is array */ bit_width : 4;/* Optional; default is 1 */ bit_from : 0;/* Optional MSB; defaults to 0 */ bit_to : 3;/* Optional LSB; defaults to 0 */ downto : false;/* Optional; defaults to false */ } cell (bused_cell) { area : 10; bus (A) { bus_type : bus4; direction : input; capacitance : 3; pin (A[0:2]) { capacitance : 2; } pin (A[3]) { capacitance : 2.5; } } bus (B) { bus_type : bus4; capacitance : 2; } pin (E) { direction : input ; capacitance : 2 ; } bus(X) { bus_type : bus4; direction : output; capacitance : 1; pin (X[0:3]) { function : "A & B’"; timing() { related_pin : "A B"; /* A[0] and B[0] are related to X[0], A[1] and B[1] are related to X[1], etc. */ } } } bus (Y) { bus_type : bus4; direction : output; capacitance : 1; pin (Y[0:3]) { function : "B"; three_state : "!E"; timing () { related_pin : "A[0:3] B E"; } internal_power() { when: "E" ; related_pin : B ; power() { } } internal_power() { related_pin : B ; power() { } } } } bus (Z) { bus_type : bus4; direction : output; pin (Z[0:1]) { function : "!A[0:1]"; timing () { related_pin : "A[0:1]"; } internal_power() { related_pin : "A[0:1]"; power() { } } } pin (Z[2]) { function : "A[2]"; timing () { related_pin : "A[2]"; } internal_power() { related_pin : "A[0:1]"; power() { } } } pin (Z[3]) { function : "!A[3]"; timing () { related_pin : "A[3]"; } internal_power() { related_pin : "A[0:1]"; power() { } } } } pin_opposite("Y[0:1]","Z[0:1]"); /* Y[0] is opposite to Z[0], etc. */ pin_equal("Y[2:3] Z[2:3]"); /* Y[2], Y[3], Z[2], and Z[3] are equal */ cell (bused_cell2) { area : 20; bus (A) { bus_type : bus41; direction : input; capacitance : 1; pin (A[0:3]) { capacitance : 2; } pin (A[3]) { capacitance : 2.5; } } bus (B) { bus_type : bus4; direction : input; capacitance : 2; } pin (E) { direction : input ; capacitance : 2 ; bus(X) { bus_type : bus4; direction : output; capacitance : 1; pin (X[0:3]) { function : "A & B’"; timing() { related_pin : "A B"; /* A[0] and B[0] are related to X[0], A[1] and B[1] are related to X[1], etc. */ } } } }