Updating interface definition for QL k4_N8 device

This commit is contained in:
Lalit Sharma 2021-01-11 23:20:49 +05:30
parent e82d2bf0d1
commit 8f1bdc2e87
1 changed files with 165 additions and 53 deletions

View File

@ -76,11 +76,22 @@
<equivalent_sites> <equivalent_sites>
<site pb_type="io"/> <site pb_type="io"/>
</equivalent_sites> </equivalent_sites>
<input name="outpad" num_pins="1"/> <clock name="clk" num_pins="1"/>
<output name="inpad" num_pins="1"/> <!--input name="a2f_i" num_pins="1"/-->
<fc in_type="frac" in_val="0.15" out_type="frac" out_val="0.10"/> <input name="f2a_i" num_pins="1"/>
<output name="a2f_o" num_pins="1"/>
<!--output name="f2a_o" num_pins="1"/-->
<input name="sc_in" num_pins="1"/>
<output name="sc_out" num_pins="1"/>
<input name="reset" num_pins="1" is_non_clock_global="true"/>
<fc in_type="frac" in_val="0.15" out_type="frac" out_val="0.10">
<fc_override port_name="clk" fc_type="frac" fc_val="0"/>
<fc_override port_name="sc_in" fc_type="frac" fc_val="0"/>
<fc_override port_name="sc_out" fc_type="frac" fc_val="0"/>
<fc_override port_name="reset" fc_type="frac" fc_val="0"/>
</fc>
<pinlocations pattern="custom"> <pinlocations pattern="custom">
<loc side="bottom">io_top.outpad io_top.inpad</loc> <loc side="bottom">io_top.a2f_o io_top.f2a_i io_top.clk io_top.sc_in io_top.sc_out io_top.reset</loc>
</pinlocations> </pinlocations>
</tile> </tile>
<!-- Right-side has 1 I/O per tile --> <!-- Right-side has 1 I/O per tile -->
@ -88,11 +99,20 @@
<equivalent_sites> <equivalent_sites>
<site pb_type="io"/> <site pb_type="io"/>
</equivalent_sites> </equivalent_sites>
<input name="outpad" num_pins="1"/> <clock name="clk" num_pins="1"/>
<output name="inpad" num_pins="1"/> <input name="f2a_i" num_pins="1"/>
<fc in_type="frac" in_val="0.15" out_type="frac" out_val="0.10"/> <output name="a2f_o" num_pins="1"/>
<input name="sc_in" num_pins="1"/>
<output name="sc_out" num_pins="1"/>
<input name="reset" num_pins="1" is_non_clock_global="true"/>
<fc in_type="frac" in_val="0.15" out_type="frac" out_val="0.10">
<fc_override port_name="clk" fc_type="frac" fc_val="0"/>
<fc_override port_name="sc_in" fc_type="frac" fc_val="0"/>
<fc_override port_name="sc_out" fc_type="frac" fc_val="0"/>
<fc_override port_name="reset" fc_type="frac" fc_val="0"/>
</fc>
<pinlocations pattern="custom"> <pinlocations pattern="custom">
<loc side="left">io_right.outpad io_right.inpad</loc> <loc side="left">io_right.a2f_o io_right.f2a_i io_right.clk io_right.sc_in io_right.sc_out io_right.reset</loc>
</pinlocations> </pinlocations>
</tile> </tile>
<!-- Bottom-side has 9 I/O per tile --> <!-- Bottom-side has 9 I/O per tile -->
@ -100,11 +120,20 @@
<equivalent_sites> <equivalent_sites>
<site pb_type="io"/> <site pb_type="io"/>
</equivalent_sites> </equivalent_sites>
<input name="outpad" num_pins="1"/> <clock name="clk" num_pins="1"/>
<output name="inpad" num_pins="1"/> <input name="f2a_i" num_pins="1"/>
<fc in_type="frac" in_val="0.15" out_type="frac" out_val="0.10"/> <output name="a2f_o" num_pins="1"/>
<input name="sc_in" num_pins="1"/>
<output name="sc_out" num_pins="1"/>
<input name="reset" num_pins="1" is_non_clock_global="true"/>
<fc in_type="frac" in_val="0.15" out_type="frac" out_val="0.10">
<fc_override port_name="clk" fc_type="frac" fc_val="0"/>
<fc_override port_name="sc_in" fc_type="frac" fc_val="0"/>
<fc_override port_name="sc_out" fc_type="frac" fc_val="0"/>
<fc_override port_name="reset" fc_type="frac" fc_val="0"/>
</fc>
<pinlocations pattern="custom"> <pinlocations pattern="custom">
<loc side="top">io_bottom.outpad io_bottom.inpad</loc> <loc side="top">io_bottom.a2f_o io_bottom.f2a_i io_bottom.clk io_bottom.sc_in io_bottom.sc_out io_bottom.reset</loc>
</pinlocations> </pinlocations>
</tile> </tile>
<!-- Left-side has 1 I/O per tile --> <!-- Left-side has 1 I/O per tile -->
@ -112,11 +141,20 @@
<equivalent_sites> <equivalent_sites>
<site pb_type="io"/> <site pb_type="io"/>
</equivalent_sites> </equivalent_sites>
<input name="outpad" num_pins="1"/> <clock name="clk" num_pins="1"/>
<output name="inpad" num_pins="1"/> <input name="f2a_i" num_pins="1"/>
<fc in_type="frac" in_val="0.15" out_type="frac" out_val="0.10"/> <output name="a2f_o" num_pins="1"/>
<input name="sc_in" num_pins="1"/>
<output name="sc_out" num_pins="1"/>
<input name="reset" num_pins="1" is_non_clock_global="true"/>
<fc in_type="frac" in_val="0.15" out_type="frac" out_val="0.10">
<fc_override port_name="clk" fc_type="frac" fc_val="0"/>
<fc_override port_name="sc_in" fc_type="frac" fc_val="0"/>
<fc_override port_name="sc_out" fc_type="frac" fc_val="0"/>
<fc_override port_name="reset" fc_type="frac" fc_val="0"/>
</fc>
<pinlocations pattern="custom"> <pinlocations pattern="custom">
<loc side="right">io_left.outpad io_left.inpad</loc> <loc side="right">io_left.a2f_o io_left.f2a_i io_left.clk io_left.sc_in io_left.sc_out io_left.reset</loc>
</pinlocations> </pinlocations>
</tile> </tile>
<!-- CLB has most pins on the top and right sides --> <!-- CLB has most pins on the top and right sides -->
@ -275,56 +313,130 @@
<complexblocklist> <complexblocklist>
<!-- Define input pads begin --> <!-- Define input pads begin -->
<pb_type name="io"> <pb_type name="io">
<input name="outpad" num_pins="1"/> <clock name="clk" num_pins="1"/>
<output name="inpad" num_pins="1"/> <!--input name="a2f_i" num_pins="1"/-->
<!-- Do NOT add clock pins to I/O here!!! VPR does not build clock network in the way that OpenFPGA can support <input name="f2a_i" num_pins="1"/>
If you need to register the I/O, define clocks in the circuit models <output name="a2f_o" num_pins="1"/>
These clocks can be handled in back-end <!--output name="f2a_o" num_pins="1"/-->
--> <input name="sc_in" num_pins="1"/>
<!-- A mode denotes the physical implementation of an I/O <output name="sc_out" num_pins="1"/>
This mode will be not packable but is mainly used for fabric verilog generation <input name="reset" num_pins="1" is_non_clock_global="true"/>
--> <!-- Physical mode definition begin (physical implementation of the io) -->
<mode name="physical" disabled_in_pack="true"> <mode name="physical" disabled_in_pack="true">
<pb_type name="iopad" blif_model=".subckt io" num_pb="1"> <pb_type name="iopad" num_pb="1">
<input name="outpad" num_pins="1"/> <clock name="clk" num_pins="1"/>
<output name="inpad" num_pins="1"/> <!--input name="a2f_i" num_pins="1"/-->
<input name="f2a_i" num_pins="1"/>
<output name="a2f_o" num_pins="1"/>
<!--output name="f2a_o" num_pins="1"/-->
<input name="sc_in" num_pins="1"/>
<input name="reset" num_pins="1"/>
<output name="sc_out" num_pins="1"/>
<pb_type name="ff" blif_model=".subckt scff" num_pb="2">
<input name="D" num_pins="1" port_class="D"/>
<input name="DI" num_pins="1"/>
<input name="reset" num_pins="1"/>
<output name="Q" num_pins="1" port_class="Q"/>
<clock name="clk" num_pins="1" port_class="clock"/>
<T_setup value="66e-12" port="ff.D" clock="clk"/>
<T_setup value="66e-12" port="ff.DI" clock="clk"/>
<T_setup value="66e-12" port="ff.reset" clock="clk"/>
<T_clock_to_Q max="124e-12" port="ff.Q" clock="clk"/>
</pb_type>
<pb_type name="pad" blif_model=".subckt io" num_pb="1">
<input name="outpad" num_pins="1"/>
<output name="inpad" num_pins="1"/>
</pb_type>
<interconnect>
<direct name="ff[0:0]-clk" input="iopad.clk" output="ff[0:0].clk"/>
<direct name="ff[1:1]-clk" input="iopad.clk" output="ff[1:1].clk"/>
<direct name="ff[0:0]-D" input="iopad.f2a_i" output="ff[0:0].D" />
<!--direct name="ff[1:1]-D" input="iopad.a2f_i" output="ff[1:1].D" /-->
<direct name="ff[1:1]-D" input="pad.inpad" output="ff[1:1].D"/>
<direct name="ff[0:0]-DI" input="iopad.sc_in" output="ff[0:0].DI"/>
<direct name="ff[1:1]-DI" input="ff[0:0].Q" output="ff[1:1].DI"/>
<direct name="iopad-sc_out" input="ff[1:1].Q" output="iopad.sc_out"/>
<complete name="complete1" input="iopad.reset" output="ff[1:0].reset"/>
<mux name="mux1" input="iopad.f2a_i ff[0:0].Q" output="pad.outpad">
<delay_constant max="25e-12" in_port="iopad.f2a_i" out_port="pad.outpad"/>
<delay_constant max="45e-12" in_port="ff[0:0].Q" out_port="pad.outpad"/>
</mux>
<mux name="mux2" input="pad.inpad ff[1:1].Q" output="iopad.a2f_o">
<delay_constant max="25e-12" in_port="pad.inpad" out_port="iopad.a2f_o"/>
<delay_constant max="45e-12" in_port="ff[1:1].Q" out_port="iopad.a2f_o"/>
</mux>
</interconnect>
</pb_type> </pb_type>
<interconnect> <interconnect>
<direct name="outpad" input="io.outpad" output="iopad.outpad"> <direct name="direct1" input="io.clk" output="iopad.clk"/>
<delay_constant max="1.394e-11" in_port="io.outpad" out_port="iopad.outpad"/> <!--direct name="direct2" input="io.a2f_i" output="iopad.a2f_i"/-->
</direct> <direct name="direct3" input="io.f2a_i" output="iopad.f2a_i"/>
<direct name="inpad" input="iopad.inpad" output="io.inpad"> <direct name="direct4" input="iopad.a2f_o" output="io.a2f_o"/>
<delay_constant max="4.243e-11" in_port="iopad.inpad" out_port="io.inpad"/> <!--direct name="direct5" input="iopad.f2a_o" output="io.f2a_o"/-->
</direct> <direct name="direct6" input="io.sc_in" output="iopad.sc_in"/>
<direct name="direct7" input="iopad.sc_out" output="io.sc_out"/>
<direct name="direct8" input="io.reset" output="iopad.reset"/>
</interconnect> </interconnect>
</mode> </mode>
<!-- Physical mode definition end (physical implementation of the io) -->
<!-- IOs can operate as either inputs or outputs. <mode name="io_output">
Delays below come from Ian Kuon. They are small, so they should be interpreted as <pb_type name="io_output" num_pb="1">
the delays to and from registers in the I/O (and generally I/Os are registered <clock name="clk" num_pins="1"/>
today and that is when you timing analyze them. <input name="f2a_i" num_pins="1"/>
--> <pb_type name="ff" blif_model=".latch" num_pb="1" class="flipflop">
<mode name="inpad"> <input name="D" num_pins="1" port_class="D"/>
<pb_type name="inpad" blif_model=".input" num_pb="1"> <output name="Q" num_pins="1" port_class="Q"/>
<output name="inpad" num_pins="1"/> <clock name="clk" num_pins="1" port_class="clock"/>
<T_setup value="66e-12" port="ff.D" clock="clk"/>
<T_clock_to_Q max="124e-12" port="ff.Q" clock="clk"/>
</pb_type>
<pb_type name="outpad" blif_model=".output" num_pb="1">
<input name="outpad" num_pins="1"/>
</pb_type>
<interconnect>
<direct name="ff-clk" input="io_output.clk" output="ff.clk"/>
<direct name="ff-D" input="io_output.f2a_i" output="ff.D"/>
<mux name="mux1" input="ff.Q io_output.f2a_i" output="outpad.outpad">
<pack_pattern name="pack-OREG" in_port="ff.Q" out_port="outpad.outpad"/>
<delay_constant max="25e-12" in_port="io_output.f2a_i" out_port="outpad.outpad"/>
<delay_constant max="45e-12" in_port="ff.Q" out_port="outpad.outpad"/>
</mux>
</interconnect>
</pb_type> </pb_type>
<interconnect> <interconnect>
<direct name="inpad" input="inpad.inpad" output="io.inpad"> <direct name="io_output-clk" input="io.clk" output="io_output.clk"/>
<delay_constant max="4.243e-11" in_port="inpad.inpad" out_port="io.inpad"/> <direct name="io_output-f2a_i" input="io.f2a_i" output="io_output.f2a_i"/>
</direct>
</interconnect> </interconnect>
</mode> </mode>
<mode name="outpad"> <mode name="io_input">
<pb_type name="outpad" blif_model=".output" num_pb="1"> <pb_type name="io_input" num_pb="1">
<input name="outpad" num_pins="1"/> <clock name="clk" num_pins="1"/>
<output name="a2f_o" num_pins="1"/>
<pb_type name="inpad" blif_model=".input" num_pb="1">
<output name="inpad" num_pins="1"/>
</pb_type>
<pb_type name="ff" blif_model=".latch" num_pb="1" class="flipflop">
<input name="D" num_pins="1" port_class="D"/>
<output name="Q" num_pins="1" port_class="Q"/>
<clock name="clk" num_pins="1" port_class="clock"/>
<T_setup value="66e-12" port="ff.D" clock="clk"/>
<T_clock_to_Q max="124e-12" port="ff.Q" clock="clk"/>
</pb_type>
<interconnect>
<direct name="ff-clk" input="io_input.clk" output="ff.clk"/>
<direct name="ff-D" input="inpad.inpad" output="ff.D"/>
<mux name="mux2" input="inpad.inpad ff.Q" output="io_input.a2f_o">
<pack_pattern name="pack-IREG" in_port="ff.Q" out_port="io_input.a2f_o"/>
<delay_constant max="25e-12" in_port="inpad.inpad" out_port="io_input.a2f_o"/>
<delay_constant max="45e-12" in_port="ff.Q" out_port="io_input.a2f_o"/>
</mux>
</interconnect>
</pb_type> </pb_type>
<interconnect> <interconnect>
<direct name="outpad" input="io.outpad" output="outpad.outpad"> <direct name="io-a2f_o" input="io_input.a2f_o" output="io.a2f_o"/>
<delay_constant max="1.394e-11" in_port="io.outpad" out_port="outpad.outpad"/> <direct name="io_input-clk" input="io.clk" output="io_input.clk"/>
</direct>
</interconnect> </interconnect>
</mode> </mode>
<power method="ignore"/>
</pb_type> </pb_type>
<!-- Define I/O pads ends --> <!-- Define I/O pads ends -->
<!-- Define general purpose logic block (CLB) begin --> <!-- Define general purpose logic block (CLB) begin -->