DSP-style block with outputs registered¶
A combinational DSP block with registered outputs. Modeled as a complex block.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | `include "./dff/dff.sim.v"
`include "./dsp_combinational/dsp_combinational.sim.v"
/* DSP Block with register on the output */
module DSP_OUT_REGISTERED (clk, a, b, m, out);
localparam DATA_WIDTH = 4;
input wire clk;
input wire [DATA_WIDTH/2-1:0] a;
input wire [DATA_WIDTH/2-1:0] b;
input wire m;
output wire [DATA_WIDTH-1:0] out;
/* Combinational logic */
(* pack="DSP-DFF" *)
wire [DATA_WIDTH-1:0] c_out;
DSP_COMBINATIONAL comb (.a(a), .b(b), .m(m), .out(c_out));
/* Output register on clk */
genvar j;
for (j=0; j<DATA_WIDTH; j=j+1) begin: output_dffs_gen
DFF q_out_ff(.D(c_out[j]), .Q(out[j]), .CLK(clk));
end
endmodule
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?xml version="1.0"?>
<models>
<model name="DFF">
<input_ports>
<port is_clock="1" name="CLK"/>
<port clock="CLK" name="D"/>
</input_ports>
<output_ports>
<port clock="CLK" name="Q"/>
</output_ports>
</model>
<model name="DSP_COMBINATIONAL">
<input_ports>
<port combinational_sink_ports="out" name="a"/>
<port combinational_sink_ports="out" name="b"/>
<port combinational_sink_ports="out" name="m"/>
</input_ports>
<output_ports>
<port name="out"/>
</output_ports>
</model>
</models>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | <?xml version="1.0"?>
<pb_type xmlns:xi="http://www.w3.org/2001/XInclude" name="DSP_OUT_REGISTERED" num_pb="1">
<clock name="clk" num_pins="1"/>
<input name="a" num_pins="2"/>
<input name="b" num_pins="2"/>
<input name="m" num_pins="1"/>
<output name="out" num_pins="4"/>
<pb_type blif_model=".subckt DSP_COMBINATIONAL" name="comb" num_pb="1">
<input name="a" num_pins="2"/>
<input name="b" num_pins="2"/>
<input name="m" num_pins="1"/>
<output name="out" num_pins="4"/>
<delay_constant in_port="DSP_COMBINATIONAL.a" max="30e-12" out_port="DSP_COMBINATIONAL.out"/>
<delay_constant in_port="DSP_COMBINATIONAL.b" max="30e-12" out_port="DSP_COMBINATIONAL.out"/>
<delay_constant in_port="DSP_COMBINATIONAL.m" max="10e-12" out_port="DSP_COMBINATIONAL.out"/>
</pb_type>
<pb_type blif_model=".subckt DFF" name="output_dffs_gen_q_out_ff_0" num_pb="1">
<clock name="CLK" num_pins="1"/>
<input name="D" num_pins="1"/>
<output name="Q" num_pins="1"/>
<T_setup clock="CLK" port="DFF.D" value="10e-12"/>
<T_hold clock="CLK" port="DFF.D" value="10e-12"/>
<T_clock_to_Q clock="CLK" max="10e-12" port="DFF.Q"/>
</pb_type>
<pb_type blif_model=".subckt DFF" name="output_dffs_gen_q_out_ff_1" num_pb="1">
<clock name="CLK" num_pins="1"/>
<input name="D" num_pins="1"/>
<output name="Q" num_pins="1"/>
<T_setup clock="CLK" port="DFF.D" value="10e-12"/>
<T_hold clock="CLK" port="DFF.D" value="10e-12"/>
<T_clock_to_Q clock="CLK" max="10e-12" port="DFF.Q"/>
</pb_type>
<pb_type blif_model=".subckt DFF" name="output_dffs_gen_q_out_ff_2" num_pb="1">
<clock name="CLK" num_pins="1"/>
<input name="D" num_pins="1"/>
<output name="Q" num_pins="1"/>
<T_setup clock="CLK" port="DFF.D" value="10e-12"/>
<T_hold clock="CLK" port="DFF.D" value="10e-12"/>
<T_clock_to_Q clock="CLK" max="10e-12" port="DFF.Q"/>
</pb_type>
<pb_type blif_model=".subckt DFF" name="output_dffs_gen_q_out_ff_3" num_pb="1">
<clock name="CLK" num_pins="1"/>
<input name="D" num_pins="1"/>
<output name="Q" num_pins="1"/>
<T_setup clock="CLK" port="DFF.D" value="10e-12"/>
<T_hold clock="CLK" port="DFF.D" value="10e-12"/>
<T_clock_to_Q clock="CLK" max="10e-12" port="DFF.Q"/>
</pb_type>
<interconnect>
<direct input="output_dffs_gen_q_out_ff_0.Q" name="DSP_OUT_REGISTERED-out[0]" output="DSP_OUT_REGISTERED.out[0]"/>
<direct input="output_dffs_gen_q_out_ff_1.Q" name="DSP_OUT_REGISTERED-out[1]" output="DSP_OUT_REGISTERED.out[1]"/>
<direct input="output_dffs_gen_q_out_ff_2.Q" name="DSP_OUT_REGISTERED-out[2]" output="DSP_OUT_REGISTERED.out[2]"/>
<direct input="output_dffs_gen_q_out_ff_3.Q" name="DSP_OUT_REGISTERED-out[3]" output="DSP_OUT_REGISTERED.out[3]"/>
<direct input="DSP_OUT_REGISTERED.a[0]" name="comb-a[0]" output="comb.a[0]"/>
<direct input="DSP_OUT_REGISTERED.a[1]" name="comb-a[1]" output="comb.a[1]"/>
<direct input="DSP_OUT_REGISTERED.b[0]" name="comb-b[0]" output="comb.b[0]"/>
<direct input="DSP_OUT_REGISTERED.b[1]" name="comb-b[1]" output="comb.b[1]"/>
<direct input="DSP_OUT_REGISTERED.m" name="comb-m" output="comb.m"/>
<direct input="DSP_OUT_REGISTERED.clk" name="output_dffs_gen_q_out_ff_0-CLK" output="output_dffs_gen_q_out_ff_0.CLK"/>
<direct input="comb.out[0]" name="output_dffs_gen_q_out_ff_0-D" output="output_dffs_gen_q_out_ff_0.D">
<pack_pattern in_port="comb.out[0]" name="pack-DSP-DFF" out_port="output_dffs_gen_q_out_ff_0.D"/>
</direct>
<direct input="DSP_OUT_REGISTERED.clk" name="output_dffs_gen_q_out_ff_1-CLK" output="output_dffs_gen_q_out_ff_1.CLK"/>
<direct input="comb.out[1]" name="output_dffs_gen_q_out_ff_1-D" output="output_dffs_gen_q_out_ff_1.D">
<pack_pattern in_port="comb.out[1]" name="pack-DSP-DFF" out_port="output_dffs_gen_q_out_ff_1.D"/>
</direct>
<direct input="DSP_OUT_REGISTERED.clk" name="output_dffs_gen_q_out_ff_2-CLK" output="output_dffs_gen_q_out_ff_2.CLK"/>
<direct input="comb.out[2]" name="output_dffs_gen_q_out_ff_2-D" output="output_dffs_gen_q_out_ff_2.D">
<pack_pattern in_port="comb.out[2]" name="pack-DSP-DFF" out_port="output_dffs_gen_q_out_ff_2.D"/>
</direct>
<direct input="DSP_OUT_REGISTERED.clk" name="output_dffs_gen_q_out_ff_3-CLK" output="output_dffs_gen_q_out_ff_3.CLK"/>
<direct input="comb.out[3]" name="output_dffs_gen_q_out_ff_3-D" output="output_dffs_gen_q_out_ff_3.D">
<pack_pattern in_port="comb.out[3]" name="pack-DSP-DFF" out_port="output_dffs_gen_q_out_ff_3.D"/>
</direct>
</interconnect>
</pb_type>
|
Detection of combinational connections¶
Output has combinational connection with input
pack_pattern
defined on wire connections withpack
attribute
Blackbox detection¶
Model of the leaf
pb_type
is generatedLeaf
pb_type
XML is generatedAll dependency models and
pb_type
s are included in the output files