add register chain and scan chain to Travis CI
This commit is contained in:
parent
148cc74d6a
commit
214d98fbcd
|
@ -69,4 +69,10 @@ python3 openfpga_flow/scripts/run_fpga_task.py openfpga_shell/io/multi_io_capaci
|
||||||
echo -e "Testing Verilog generation with I/Os only on left and right sides of an FPGA ";
|
echo -e "Testing Verilog generation with I/Os only on left and right sides of an FPGA ";
|
||||||
python3 openfpga_flow/scripts/run_fpga_task.py openfpga_shell/io/reduced_io --debug --show_thread_logs
|
python3 openfpga_flow/scripts/run_fpga_task.py openfpga_shell/io/reduced_io --debug --show_thread_logs
|
||||||
|
|
||||||
|
echo -e "Testing Verilog generation with shift register chain across an FPGA";
|
||||||
|
python3 openfpga_flow/scripts/run_fpga_task.py openfpga_shell/fabric_chain/register_chain --debug --show_thread_logs
|
||||||
|
|
||||||
|
echo -e "Testing Verilog generation with scan chain across an FPGA";
|
||||||
|
python3 openfpga_flow/scripts/run_fpga_task.py openfpga_shell/fabric_chain/scan_chain --debug --show_thread_logs
|
||||||
|
|
||||||
end_section "OpenFPGA.TaskTun"
|
end_section "OpenFPGA.TaskTun"
|
||||||
|
|
|
@ -33,6 +33,38 @@ assign Q = q_reg;
|
||||||
|
|
||||||
endmodule //End Of Module static_dff
|
endmodule //End Of Module static_dff
|
||||||
|
|
||||||
|
module scan_chain_ff (
|
||||||
|
/* Global ports go first */
|
||||||
|
input set, // set input
|
||||||
|
input reset, // Reset input
|
||||||
|
input clk, // Clock Input
|
||||||
|
input TESTEN, // Clock Input
|
||||||
|
/* Local ports follow */
|
||||||
|
input D, // Data Input
|
||||||
|
input DI, // Scan Chain Data Input
|
||||||
|
output Q // Q output
|
||||||
|
);
|
||||||
|
//------------Internal Variables--------
|
||||||
|
reg q_reg;
|
||||||
|
|
||||||
|
//-------------Code Starts Here---------
|
||||||
|
always @ ( posedge clk or posedge reset or posedge set)
|
||||||
|
if (reset) begin
|
||||||
|
q_reg <= 1'b0;
|
||||||
|
end else if (set) begin
|
||||||
|
q_reg <= 1'b1;
|
||||||
|
end else if (TESTEN) begin
|
||||||
|
q_reg <= DI;
|
||||||
|
end else begin
|
||||||
|
q_reg <= D;
|
||||||
|
end
|
||||||
|
|
||||||
|
// Wire q_reg to Q
|
||||||
|
assign Q = q_reg;
|
||||||
|
|
||||||
|
endmodule //End Of Module static_dff
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
// Design Name : scan_chain_dff
|
// Design Name : scan_chain_dff
|
||||||
// File Name : ff.v
|
// File Name : ff.v
|
||||||
|
|
|
@ -165,7 +165,7 @@
|
||||||
<!-- Physical descriptions begin -->
|
<!-- Physical descriptions begin -->
|
||||||
<layout tileable="true">
|
<layout tileable="true">
|
||||||
<!--auto_layout aspect_ratio="1.0"-->
|
<!--auto_layout aspect_ratio="1.0"-->
|
||||||
<fixed_layout name="4x4" width="6" height="6">
|
<fixed_layout name="2x2" width="4" height="4">
|
||||||
<!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners-->
|
<!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners-->
|
||||||
<perimeter type="io" priority="100"/>
|
<perimeter type="io" priority="100"/>
|
||||||
<corners type="EMPTY" priority="101"/>
|
<corners type="EMPTY" priority="101"/>
|
||||||
|
|
|
@ -180,7 +180,7 @@
|
||||||
<!-- Physical descriptions begin -->
|
<!-- Physical descriptions begin -->
|
||||||
<layout tileable="true">
|
<layout tileable="true">
|
||||||
<!--auto_layout aspect_ratio="1.0"-->
|
<!--auto_layout aspect_ratio="1.0"-->
|
||||||
<fixed_layout name="4x4" width="6" height="6">
|
<fixed_layout name="2x2" width="4" height="4">
|
||||||
<!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners-->
|
<!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners-->
|
||||||
<perimeter type="io" priority="100"/>
|
<perimeter type="io" priority="100"/>
|
||||||
<corners type="EMPTY" priority="101"/>
|
<corners type="EMPTY" priority="101"/>
|
||||||
|
|
|
@ -137,7 +137,7 @@
|
||||||
This is flip-flop with scan-chain feature.
|
This is flip-flop with scan-chain feature.
|
||||||
When the TESTEN is enabled, the data will be propagated form DI instead of D
|
When the TESTEN is enabled, the data will be propagated form DI instead of D
|
||||||
-->
|
-->
|
||||||
<circuit_model type="ff" name="static_dff" prefix="dff" spice_netlist="${OPENFPGA_PATH}/openfpga_flow/SpiceNetlists/ff.sp" verilog_netlist="${OPENFPGA_PATH}/openfpga_flow/VerilogNetlists/ff.v">
|
<circuit_model type="ff" name="scan_chain_ff" prefix="scan_chain_ff" spice_netlist="${OPENFPGA_PATH}/openfpga_flow/SpiceNetlists/ff.sp" verilog_netlist="${OPENFPGA_PATH}/openfpga_flow/VerilogNetlists/ff.v">
|
||||||
<design_technology type="cmos"/>
|
<design_technology type="cmos"/>
|
||||||
<input_buffer exist="true" circuit_model_name="INVTX1"/>
|
<input_buffer exist="true" circuit_model_name="INVTX1"/>
|
||||||
<output_buffer exist="true" circuit_model_name="INVTX1"/>
|
<output_buffer exist="true" circuit_model_name="INVTX1"/>
|
||||||
|
@ -228,7 +228,7 @@
|
||||||
</pb_type>
|
</pb_type>
|
||||||
<pb_type name="clb.fle" physical_mode_name="physical"/>
|
<pb_type name="clb.fle" physical_mode_name="physical"/>
|
||||||
<pb_type name="clb.fle[physical].fabric.frac_logic.frac_lut6" circuit_model_name="frac_lut6" mode_bits="11"/>
|
<pb_type name="clb.fle[physical].fabric.frac_logic.frac_lut6" circuit_model_name="frac_lut6" mode_bits="11"/>
|
||||||
<pb_type name="clb.fle[physical].fabric.ff" circuit_model_name="static_dff"/>
|
<pb_type name="clb.fle[physical].fabric.ff" circuit_model_name="scan_chain_ff"/>
|
||||||
<pb_type name="clb.fle[physical].fabric.adder" circuit_model_name="adder"/>
|
<pb_type name="clb.fle[physical].fabric.adder" circuit_model_name="adder"/>
|
||||||
<!-- Binding operating pb_type to physical pb_type -->
|
<!-- Binding operating pb_type to physical pb_type -->
|
||||||
<!-- Binding operating pb_types in mode 'n2_lut5' -->
|
<!-- Binding operating pb_types in mode 'n2_lut5' -->
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
||||||
|
# Configuration file for running experiments
|
||||||
|
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
||||||
|
# timeout_each_job : FPGA Task script splits fpga flow into multiple jobs
|
||||||
|
# Each job execute fpga_flow script on combination of architecture & benchmark
|
||||||
|
# timeout_each_job is timeout for each job
|
||||||
|
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
||||||
|
|
||||||
|
[GENERAL]
|
||||||
|
run_engine=openfpga_shell
|
||||||
|
openfpga_shell_template=${PATH:OPENFPGA_PATH}/openfpga_flow/OpenFPGAShellScripts/example_script.openfpga
|
||||||
|
power_tech_file = ${PATH:OPENFPGA_PATH}/openfpga_flow/tech/PTM_45nm/45nm.xml
|
||||||
|
power_analysis = true
|
||||||
|
spice_output=false
|
||||||
|
verilog_output=true
|
||||||
|
timeout_each_job = 20*60
|
||||||
|
fpga_flow=vpr_blif
|
||||||
|
openfpga_arch_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_arch/k6_frac_N10_adder_register_chain_40nm_openfpga.xml
|
||||||
|
|
||||||
|
[ARCHITECTURES]
|
||||||
|
arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/arch/vpr_only_templates/k6_frac_N10_tileable_adder_register_chain_40nm.xml
|
||||||
|
|
||||||
|
[BENCHMARKS]
|
||||||
|
bench0=${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and.blif
|
||||||
|
|
||||||
|
[SYNTHESIS_PARAM]
|
||||||
|
bench0_top = top
|
||||||
|
bench0_act = ${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and.act
|
||||||
|
bench0_verilog = ${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and.v
|
||||||
|
bench0_chan_width = 300
|
||||||
|
|
||||||
|
[SCRIPT_PARAM_MIN_ROUTE_CHAN_WIDTH]
|
||||||
|
end_flow_with_test=
|
||||||
|
vpr_fpga_verilog_formal_verification_top_netlist=
|
|
@ -0,0 +1,34 @@
|
||||||
|
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
||||||
|
# Configuration file for running experiments
|
||||||
|
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
||||||
|
# timeout_each_job : FPGA Task script splits fpga flow into multiple jobs
|
||||||
|
# Each job execute fpga_flow script on combination of architecture & benchmark
|
||||||
|
# timeout_each_job is timeout for each job
|
||||||
|
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
||||||
|
|
||||||
|
[GENERAL]
|
||||||
|
run_engine=openfpga_shell
|
||||||
|
openfpga_shell_template=${PATH:OPENFPGA_PATH}/openfpga_flow/OpenFPGAShellScripts/example_script.openfpga
|
||||||
|
power_tech_file = ${PATH:OPENFPGA_PATH}/openfpga_flow/tech/PTM_45nm/45nm.xml
|
||||||
|
power_analysis = true
|
||||||
|
spice_output=false
|
||||||
|
verilog_output=true
|
||||||
|
timeout_each_job = 20*60
|
||||||
|
fpga_flow=vpr_blif
|
||||||
|
openfpga_arch_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_arch/k6_frac_N10_adder_register_scan_chain_40nm_openfpga.xml
|
||||||
|
|
||||||
|
[ARCHITECTURES]
|
||||||
|
arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/arch/vpr_only_templates/k6_frac_N10_tileable_adder_register_scan_chain_40nm.xml
|
||||||
|
|
||||||
|
[BENCHMARKS]
|
||||||
|
bench0=${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and.blif
|
||||||
|
|
||||||
|
[SYNTHESIS_PARAM]
|
||||||
|
bench0_top = top
|
||||||
|
bench0_act = ${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and.act
|
||||||
|
bench0_verilog = ${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and.v
|
||||||
|
bench0_chan_width = 300
|
||||||
|
|
||||||
|
[SCRIPT_PARAM_MIN_ROUTE_CHAN_WIDTH]
|
||||||
|
end_flow_with_test=
|
||||||
|
vpr_fpga_verilog_formal_verification_top_netlist=
|
Loading…
Reference in New Issue