blob: 5190d3bde9ba8e1f323e8de3a071c7af47f5b0c6 [file]
<?xml version="1.0"?>
<pb_type xmlns:xi="http://www.w3.org/2001/XInclude" name="MULTIPLE_INSTANCE" num_pb="1">
<input name="a" num_pins="4"/>
<input name="b" num_pins="4"/>
<input name="c" num_pins="4"/>
<input name="cin" num_pins="1"/>
<input name="d" num_pins="4"/>
<output name="cout" num_pins="1"/>
<output name="sum" num_pins="8"/>
<pb_type blif_model=".subckt adder" name="comba" num_pb="4">
<input name="a" num_pins="1"/>
<input name="b" num_pins="1"/>
<input name="cin" num_pins="1"/>
<output name="cout" num_pins="1"/>
<output name="sum" num_pins="1"/>
<delay_constant in_port="comba.a" max="300e-12" out_port="comba.cout"/>
<delay_constant in_port="comba.b" max="300e-12" out_port="comba.cout"/>
<delay_constant in_port="comba.cin" max="10e-12" out_port="comba.cout"/>
<delay_constant in_port="comba.a" max="300e-12" out_port="comba.sum"/>
<delay_constant in_port="comba.b" max="300e-12" out_port="comba.sum"/>
<delay_constant in_port="comba.cin" max="300e-12" out_port="comba.sum"/>
<T_setup clock="clk" port="comba.a" value="10e-12"/>
<T_clock_to_Q clock="clk" max="10e-12" port="comba.cout"/>
</pb_type>
<pb_type blif_model=".subckt adder" name="combb" num_pb="4">
<input name="a" num_pins="1"/>
<input name="b" num_pins="1"/>
<input name="cin" num_pins="1"/>
<output name="cout" num_pins="1"/>
<output name="sum" num_pins="1"/>
<delay_constant in_port="combb.a" max="300e-12" out_port="combb.cout"/>
<delay_constant in_port="combb.b" max="300e-12" out_port="combb.cout"/>
<delay_constant in_port="combb.cin" max="10e-12" out_port="combb.cout"/>
<delay_constant in_port="combb.a" max="300e-12" out_port="combb.sum"/>
<delay_constant in_port="combb.b" max="300e-12" out_port="combb.sum"/>
<delay_constant in_port="combb.cin" max="300e-12" out_port="combb.sum"/>
<T_setup clock="clk" port="combb.a" value="10e-12"/>
<T_clock_to_Q clock="clk" max="10e-12" port="combb.cout"/>
</pb_type>
<interconnect>
<direct input="MULTIPLE_INSTANCE.a[3]" name="comba[3]-a" output="comba[3].a"/>
<direct input="MULTIPLE_INSTANCE.b[3]" name="comba[3]-b" output="comba[3].b"/>
<direct input="MULTIPLE_INSTANCE.cin" name="comba[0]-cin" output="comba[0].cin"/>
<direct input="MULTIPLE_INSTANCE.cin" name="comba[1]-cin" output="comba[1].cin"/>
<direct input="MULTIPLE_INSTANCE.cin" name="comba[2]-cin" output="comba[2].cin"/>
<direct input="MULTIPLE_INSTANCE.cin" name="comba[3]-cin" output="comba[3].cin"/>
<direct input="comba[3].sum" name="MULTIPLE_INSTANCE-sum[3]" output="MULTIPLE_INSTANCE.sum[3]"/>
<direct input="MULTIPLE_INSTANCE.a[0]" name="comba[0]-a" output="comba[0].a"/>
<direct input="MULTIPLE_INSTANCE.b[0]" name="comba[0]-b" output="comba[0].b"/>
<direct input="comba[0].sum" name="MULTIPLE_INSTANCE-sum[0]" output="MULTIPLE_INSTANCE.sum[0]"/>
<direct input="MULTIPLE_INSTANCE.a[1]" name="comba[1]-a" output="comba[1].a"/>
<direct input="MULTIPLE_INSTANCE.b[1]" name="comba[1]-b" output="comba[1].b"/>
<direct input="comba[1].sum" name="MULTIPLE_INSTANCE-sum[1]" output="MULTIPLE_INSTANCE.sum[1]"/>
<direct input="MULTIPLE_INSTANCE.a[2]" name="comba[2]-a" output="comba[2].a"/>
<direct input="MULTIPLE_INSTANCE.b[2]" name="comba[2]-b" output="comba[2].b"/>
<direct input="comba[2].sum" name="MULTIPLE_INSTANCE-sum[2]" output="MULTIPLE_INSTANCE.sum[2]"/>
<direct input="MULTIPLE_INSTANCE.c[0]" name="combb[0]-a" output="combb[0].a"/>
<direct input="MULTIPLE_INSTANCE.d[0]" name="combb[0]-b" output="combb[0].b"/>
<direct input="comba[0].cout" name="combb[0]-cin" output="combb[0].cin">
<pack_pattern in_port="comba[0].cout" name="carry-ADDER" out_port="combb[0].cin"/>
</direct>
<direct input="combb[0].sum" name="MULTIPLE_INSTANCE-sum[4]" output="MULTIPLE_INSTANCE.sum[4]"/>
<direct input="MULTIPLE_INSTANCE.c[1]" name="combb[1]-a" output="combb[1].a"/>
<direct input="MULTIPLE_INSTANCE.d[1]" name="combb[1]-b" output="combb[1].b"/>
<direct input="comba[1].cout" name="combb[1]-cin" output="combb[1].cin">
<pack_pattern in_port="comba[1].cout" name="carry-ADDER" out_port="combb[1].cin"/>
</direct>
<direct input="combb[1].sum" name="MULTIPLE_INSTANCE-sum[5]" output="MULTIPLE_INSTANCE.sum[5]"/>
<direct input="MULTIPLE_INSTANCE.c[2]" name="combb[2]-a" output="combb[2].a"/>
<direct input="MULTIPLE_INSTANCE.d[2]" name="combb[2]-b" output="combb[2].b"/>
<direct input="comba[2].cout" name="combb[2]-cin" output="combb[2].cin">
<pack_pattern in_port="comba[2].cout" name="carry-ADDER" out_port="combb[2].cin"/>
</direct>
<direct input="combb[2].sum" name="MULTIPLE_INSTANCE-sum[6]" output="MULTIPLE_INSTANCE.sum[6]"/>
<direct input="MULTIPLE_INSTANCE.c[3]" name="combb[3]-a" output="combb[3].a"/>
<direct input="MULTIPLE_INSTANCE.d[3]" name="combb[3]-b" output="combb[3].b"/>
<direct input="comba[3].cout" name="combb[3]-cin" output="combb[3].cin">
<pack_pattern in_port="comba[3].cout" name="carry-ADDER" out_port="combb[3].cin"/>
</direct>
<direct input="combb[3].cout" name="MULTIPLE_INSTANCE-cout" output="MULTIPLE_INSTANCE.cout"/>
<direct input="combb[3].sum" name="MULTIPLE_INSTANCE-sum[7]" output="MULTIPLE_INSTANCE.sum[7]"/>
</interconnect>
</pb_type>