Working lattice benchmark unclean commit

This commit is contained in:
Ganesh Gore 2019-08-08 18:08:39 -06:00
parent 57ad71438b
commit 0cc439f76c
11 changed files with 182 additions and 141 deletions

4
.gitignore vendored
View File

@ -35,4 +35,6 @@ vpr7_x2p/pcre/pcredemo
# Some local temporary files
.vscode
*_local.bat
*_local.bat
fpga_flow/csv_rpts
tmp/

View File

@ -1,10 +1,16 @@
FROM ubuntu:16.04
RUN apt-get update -qq -y
RUN apt-get -y install python3 python3-dev tcl tcl8.6-dev gawk libreadline-dev
RUN apt-get -y install autoconf automake bison build-essential cmake ctags curl doxygen flex fontconfig g++-4.9 gcc-4.9 gdb git gperf libffi-dev libcairo2-dev libevent-dev libfontconfig1-dev liblist-moreutils-perl libncurses5-dev libx11-dev libxft-dev libxml++2.6-dev perl texinfo time valgrind zip qt5-default
RUN git clone https://github.com/LNIS-Projects/OpenFPGA.git OpenFPGA
RUN cd OpenFPGA && make
FROM ubuntu:16.04
RUN apt-get update -qq -y
RUN apt-get -y install python3 python3-dev tcl tcl8.6-dev gawk libreadline-dev
RUN apt-get -y install autoconf automake bison build-essential cmake ctags curl doxygen flex fontconfig g++-4.9 gcc-4.9 gdb git gperf libffi-dev libcairo2-dev libevent-dev libfontconfig1-dev liblist-moreutils-perl libncurses5-dev libx11-dev libxft-dev libxml++2.6-dev perl texinfo time valgrind zip qt5-default
RUN mkdir -p /release /dev
RUN cd release && git clone --single-branch --branch documentation https://github.com/LNIS-Projects/OpenFPGA.git OpenFPGA
RUN cd /release/OpenFPGA && mkdir build && cd build && cmake .. -CMAKE_BUILD_TYPE=debug && make
RUN rm -rf /var/lib/apt/lists/*
WORKDIR /release/OpenFPGA

1
fpga_flow/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
results

View File

@ -15,7 +15,7 @@
<!-- Physical descriptions begin -->
<layout auto="1.0"/>
<!-- <layout width="2" height="2"/> -->
<!-- <layout width="20" height="20"/> -->
<!--mrFPGA_settings-->
<!-- below is the timing parameters for a single memristor device (or so called RRAM) -->
@ -33,7 +33,7 @@
<cmos abs_variation="0.1" num_sigma="1"/>
<rram abs_variation="0.1" num_sigma="1"/>
</monte_carlo>
<measure sim_num_clock_cycle="auto" accuracy="1e-13" accuracy_type="abs">
<measure sim_num_clock_cycle="auto" accuracy="1e-12" accuracy_type="abs">
<slew>
<rise upper_thres_pct="0.95" lower_thres_pct="0.05"/>
<fall upper_thres_pct="0.05" lower_thres_pct="0.95"/>
@ -142,7 +142,7 @@
<!-- model_type could be T, res_val cap_val should be defined -->
</spice_model>
<spice_model type="mux" name="mux_1level" prefix="mux_1level" is_default="1" dump_structural_verilog="true">
<!--design_technology type="cmos" structure="one-level"/-->
<!-- <design_technology type="cmos" structure="one-level"/?]> -->
<design_technology type="rram" ron="2e3" roff="30e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2" structure="one-level" advanced_rram_design="true"/>
<input_buffer exist="on" spice_model_name="INVTX1"/>
<output_buffer exist="on" spice_model_name="INVD1BWP"/>
@ -155,7 +155,7 @@
<port type="sram" prefix="sram" size="1" spice_model_name="sram6T_rram"/>
</spice_model>
<spice_model type="mux" name="mux_1level_tapbuf4" prefix="mux_1level_tapbuf4" is_default="0" dump_structural_verilog="true">
<!--design_technology type="cmos" structure="one-level"/-->
<!-- <design_technology type="cmos" structure="one-level"/?]> -->
<design_technology type="rram" ron="2e3" roff="30e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2" structure="one-level" advanced_rram_design="true"/>
<input_buffer exist="on" spice_model_name="INVTX1"/>
<output_buffer exist="on" spice_model_name="tap_buf4"/>
@ -168,7 +168,7 @@
<port type="sram" prefix="sram" size="1" spice_model_name="sram6T_rram"/>
</spice_model>
<!--DFF subckt ports should be defined as <D> <Q> <CLK> <RESET> <SET> -->
<spice_model type="ff" name="static_dff" prefix="dff" spice_netlist="/home/u1235811/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="VerilogNetlists/ff.v">
<spice_model type="ff" name="static_dff" prefix="dff" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="VerilogNetlists/ff.v">
<design_technology type="cmos"/>
<input_buffer exist="on" spice_model_name="INVD1BWP"/>
<output_buffer exist="on" spice_model_name="INVD1BWP"/>
@ -191,7 +191,7 @@
<port type="output" prefix="out" size="1"/>
<port type="sram" prefix="sram" size="64" spice_model_name="sram6T_rram" default_val="1"/>
</spice_model>
<spice_model type="sram" name="sram6T" prefix="sram" spice_netlist="/home/u1235811/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="VerilogNetlists/sram.v">
<spice_model type="sram" name="sram6T" prefix="sram" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="VerilogNetlists/sram.v">
<design_technology type="cmos"/>
<input_buffer exist="on" spice_model_name="INVD1BWP"/>
<output_buffer exist="on" spice_model_name="INVD1BWP"/>
@ -199,7 +199,7 @@
<port type="input" prefix="in" size="1"/>
<port type="output" prefix="out" size="2"/>
</spice_model>
<spice_model type="sram" name="sram6T_rram" prefix="nvsram" spice_netlist="/home/u1235811/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="VerilogNetlists/sram.v">
<spice_model type="sram" name="sram6T_rram" prefix="nvsram" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="VerilogNetlists/sram.v">
<!--design_technology type="cmos"/-->
<design_technology type="rram" ron="3e3" roff="1e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2"/>
<input_buffer exist="on" spice_model_name="INVD1BWP"/>
@ -212,7 +212,7 @@
<port type="bl" prefix="bl" size="3" default_val="0" inv_spice_model_name="INVD1BWP"/>
<port type="wl" prefix="wl" size="3" default_val="0" inv_spice_model_name="INVD1BWP"/>
</spice_model>
<spice_model type="sram" name="sram6T_blwl" prefix="sram_blwl" spice_netlist="/home/u1235811/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="VerilogNetlists/sram.v">
<spice_model type="sram" name="sram6T_blwl" prefix="sram_blwl" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="VerilogNetlists/sram.v">
<design_technology type="cmos"/>
<input_buffer exist="on" spice_model_name="INVD1BWP"/>
<output_buffer exist="on" spice_model_name="INVD1BWP"/>
@ -225,7 +225,7 @@
<port type="wl" prefix="wl" size="1"/>
</spice_model>
<!--Scan-chain DFF subckt ports should be defined as <D> <Q> <Qb> <CLK> <RESET> <SET> -->
<spice_model type="sff" name="sc_ff" prefix="scff" spice_netlist="/home/u1235811/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="VerilogNetlists/ff.v">
<spice_model type="sff" name="sc_ff" prefix="scff" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="VerilogNetlists/ff.v">
<design_technology type="cmos"/>
<input_buffer exist="on" spice_model_name="INVD1BWP"/>
<output_buffer exist="on" spice_model_name="INVD1BWP"/>
@ -237,7 +237,7 @@
<port type="output" prefix="Qb" size="1"/>
<port type="clock" prefix="clk" size="1"/>
</spice_model>
<spice_model type="iopad" name="iopad" prefix="iopad" spice_netlist="/home/u1235811/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/io.sp" verilog_netlist="VerilogNetlists/io.v">
<spice_model type="iopad" name="iopad" prefix="iopad" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/io.sp" verilog_netlist="VerilogNetlists/io.v">
<!--design_technology type="cmos"/-->
<design_technology type="rram" ron="3e3" roff="1e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2"/>
<input_buffer exist="on" spice_model_name="INVD1BWP"/>
@ -252,28 +252,8 @@
</module_spice_models>
</spice_settings>
<device>
<!-- VB & JL: Using Ian Kuon's transistor sizing and drive strength data for routing, at 40 nm. Ian used BPTM
models. We are modifying the delay values however, to include metal C and R, which allows more architecture
experimentation. We are also modifying the relative resistance of PMOS to be 1.8x that of NMOS
(vs. Ian's 3x) as 1.8x lines up with Jeff G's data from a 45 nm process (and is more typical of
45 nm in general). I'm upping the Rmin_nmos from Ian's just over 6k to nearly 9k, and dropping
RminW_pmos from 18k to 16k to hit this 1.8x ratio, while keeping the delays of buffers approximately
lined up with Stratix IV.
We are using Jeff G.'s capacitance data for 45 nm (in tech/ptm_45nm).
Jeff's tables list C in for transistors with widths in multiples of the minimum feature size (45 nm).
The minimum contactable transistor is 2.5 * 45 nm, so I need to multiply drive strength sizes in this file
by 2.5x when looking up in Jeff's tables.
The delay values are lined up with Stratix IV, which has an architecture similar to this
proposed FPGA, and which is also 40 nm
C_ipin_cblock: input capacitance of a track buffer, which VPR assumes is a single-stage
4x minimum drive strength buffer. -->
<sizing R_minW_nmos="8926" R_minW_pmos="16067" ipin_mux_trans_size="3"/>
<timing C_ipin_cblock="596e-18" T_ipin_cblock="45.54e-12"/>
<!-- The grid_logic_tile_area below will be used for all blocks that do not explicitly set their own (non-routing)
area; set to 0 since we explicitly set the area of all blocks currently in this architecture file.
-->
<area grid_logic_tile_area="0"/>
<!--sram area="6" organization="standalone" spice_model_name="sram6T"-->
<!--sram area="6" organization="scan-chain" spice_model_name="sc_dff"-->
@ -334,14 +314,6 @@
<cb type="pattern">1</cb>
</segment>
</segmentlist>
<!-- <directlist>
</directlist> -->
<!--switch_segment_patterns>
<pattern type="unbuf_sb" seg_length="1" seg_type="unidir" pattern_length="2">
<unbuf_mux name="1"/>
<sb type ="pattern">0 1</sb>
</pattern>
</switch_segment_patterns-->
<complexblocklist>
@ -457,12 +429,12 @@
<input name="in" num_pins="6" port_class="lut_in"/>
<output name="out" num_pins="1" port_class="lut_out"/>
<delay_matrix type="max" in_port="lut6.in" out_port="lut6.out">
127e-12
127e-12
127e-12
127e-12
127e-12
127e-12
2.094e-09
2.094e-09
2.094e-09
2.094e-09
2.094e-09
2.094e-09
</delay_matrix>
</pb_type>
@ -483,9 +455,8 @@
</direct>
<direct name="direct3" input="ble6.clk" output="ff.clk"/>
<mux name="mux1" input="ff.Q lut6.out" output="ble6.out" spice_model_name="mux_1level">
<!-- LUT to output is faster than FF to output on a Stratix IV -->
<delay_constant max="42.24e-12" in_port="lut6.out" out_port="ble6.out" />
<delay_constant max="42.24e-12" in_port="ff.Q" out_port="ble6.out" />
<delay_constant max="2.736e-10" in_port="lut6.out" out_port="ble6.out" />
<delay_constant max="2.736e-10" in_port="ff.Q" out_port="ble6.out" />
</mux>
</interconnect>
</pb_type>
@ -508,8 +479,8 @@
25 ps to do so, we subtract 25 ps from the 100 ps delay of a feedback
to get the part that should be marked on the crossbar. -->
<complete name="crossbar" input="clb.I fle[9:0].out" output="fle[9:0].in" spice_model_name="mux_1level">
<delay_constant max="21.4e-12" in_port="clb.I" out_port="fle[9:0].in" />
<delay_constant max="21.4e-12" in_port="fle[9:0].out" out_port="fle[9:0].in" />
<delay_constant max="1.0877e-09" in_port="clb.I" out_port="fle[9:0].in" />
<delay_constant max="1.0877e-09" in_port="fle[9:0].out" out_port="fle[9:0].in" />
</complete>
<complete name="clks" input="clb.clk" output="fle[9:0].clk">
</complete>

View File

@ -1,2 +1,6 @@
# Circuit Names, fixed routing channel width,
PID/*.v, 120
# PID/*.v, 120
up_counter/*.v, 30
# MultiBitAdder/*.v, 30
# i2c_master_top/*.v, 40
# asynch_fifo/*.v, 30

View File

@ -1,8 +1,9 @@
# Standard Configuration Example
[dir_path]
script_base = OPENFPGAPATHKEYWORD/fpga_flow/scripts/
benchmark_dir = OPENFPGAPATHKEYWORD/fpga_flow/benchmarks/Verilog/lattice_ultra_example/PID_Controller
yosys_path = OPENFPGAPATHKEYWORD/yosys/yosys
benchmark_dir = OPENFPGAPATHKEYWORD/fpga_flow/benchmarks/Verilog/lattice_ultra_example
# yosys_path = OPENFPGAPATHKEYWORD/yosys/yosys
yosys_path = /research/ece/lnis/USERS/alacchi/Current_release/branch_multimode/OpenFPGA/yosys/yosys
odin2_path = OPENFPGAPATHKEYWORD/fpga_flow/not_used_atm/odin2.exe
cirkit_path = OPENFPGAPATHKEYWORD/fpga_flow/not_used_atm/cirkit
abc_path = OPENFPGAPATHKEYWORD/yosys/yosys-abc
@ -12,7 +13,7 @@ mpack1_path = OPENFPGAPATHKEYWORD/fpga_flow/not_used_atm/mpack1
m2net_path = OPENFPGAPATHKEYWORD/fpga_flow/not_used_atm/m2net
mpack2_path = OPENFPGAPATHKEYWORD/fpga_flow/not_used_atm/mpack2
vpr_path = OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/vpr
rpt_dir = OPENFPGAPATHKEYWORD/fpga_flow/results
rpt_dir = /var/tmp/Openfpga/results
ace_path = OPENFPGAPATHKEYWORD/ace2/ace
[flow_conf]

View File

@ -0,0 +1,6 @@
# Circuit Names, fixed routing channel width,
# PID/*.v, 120
up_counter/*.v, 30
# MultiBitAdder/*.v, 30
# i2c_master_top/*.v, 40
# asynch_fifo/*.v, 30

View File

@ -4,7 +4,24 @@ set -e
# Make sure a clear start
default_task='lattice_benchmark'
pwd_path="$PWD"
task_name=${1:-$default_task} # run task defined in argument else run default task
# ========================= Read command argument =========================
usage() { echo "Usage: $0 [-b <benchmark_name>] [-s] run spice only [-p] run vpr only " 1>&2; exit 1; }
while getopts ":b:vpr:spice:" o; do
case "${o}" in
b)
bench=${OPTARG};;
v)
vpr=1;;
s)
spice=1;;
esac
done
# ==========================================================================
task_name=${bench:-$default_task} # run task defined in argument else run default task
echo "Running task ${task_name}"
config_file="$PWD/configs/${task_name}.conf"
bench_txt="$PWD/benchmarks/List/${task_name}.txt"
rpt_file="$PWD/csv_rpts/fpga_spice/${task_name}.csv"
@ -16,22 +33,45 @@ config_file_final=$(echo ${config_file/.conf/_final.conf})
# List of argument passed to FPGA flow
vpr_config_flags=(
'-N 10'
'-K 6'
'-ace_d 0.5'
'-multi_thread 1'
'-vpr_fpga_x2p_rename_illegal_port'
'-vpr_fpga_verilog'
'-vpr_fpga_bitstream_generator'
'-vpr_fpga_verilog_print_autocheck_top_testbench'
'-vpr_fpga_verilog_include_timing'
'-vpr_fpga_verilog_include_signal_init'
'-vpr_fpga_verilog_formal_verification_top_netlist'
'-fix_route_chan_width'
'-vpr_fpga_verilog_include_icarus_simulator'
'-power'
"-conf ${config_file_final}"
"-benchmark ${bench_txt}"
"-rpt ${rpt_file}"
"-vpr_fpga_verilog_dir ${verilog_path}"
"-N 10"
"-K 6"
"-remove_designs"
"-ace_d 0.5"
"-multi_thread 1"
# "-route_chan_width 10"
"-vpr_fpga_x2p_rename_illegal_port"
"-vpr_fpga_verilog"
"-vpr_fpga_bitstream_generator"
"-vpr_fpga_verilog_print_autocheck_top_testbench"
"-vpr_fpga_verilog_include_timing"
"-vpr_fpga_verilog_include_signal_init"
"-vpr_fpga_verilog_formal_verification_top_netlist"
"-fix_route_chan_width"
# "-vpr_fpga_verilog_include_icarus_simulator"
"-power"
"-vpr_fpga_spice spice_taskfile"
"-vpr_fpga_spice_simulator_path /uusoc/facility/cad_tools/Synopsys/lnis_tools/hspice/P-2019.06/hspice/bin/"
# "-vpr_fpga_spice_print_top_tb"
"-vpr_fpga_spice_print_component_tb",
# "-vpr_fpga_spice_print_grid_tb"
)
spice_config_flags=(
"-conf /research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/fpga_flow/vpr_fpga_spice_conf/sample.conf"
"-task /research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/fpga_flow/scripts/spice_taskfile_yosys_vpr.txt"
"-rpt ${rpt_file/.csv/_spice_result.csv}"
"-multi_thread 10"
# "-parse_grid_tb"
"-parse_pb_mux_tb"
"-parse_cb_mux_tb"
"-parse_sb_mux_tb"
"-parse_lut_tb"
# "-parse_hardlogic_tb"
)
# vpr_config_flags+=("$@") # Append provided arguments
#=============== Argument Sanity Check =====================
#Check if script running in correct (OpenFPGA/fpga_flow) folder
@ -63,9 +103,19 @@ sed 's/OPENFPGAPATHKEYWORD/'"${OPENFPGAPATHKEYWORD}"'/g' $config_file >$config_f
#==================Clean result, change directory and execute ===============
cd ${pwd_path}/scripts
# perl fpga_flow.pl -conf ${config_file_final} -benchmark ${bench_txt} -rpt ${rpt_file} -vpr_fpga_verilog_dir $verilog_path $(echo "${vpr_config_flags[@]}")
if [[ -n "$vpr" ]]; then
# Create echo and execute VPR command
command="perl fpga_flow.pl $(echo ${vpr_config_flags[@]})"
echo -e "\n* * * * * * * * * * * \n"${command} "\n* * * * * * * * * * * \n"
eval ${command}
fi
perl fpga_flow.pl -conf ${config_file_final} -benchmark ${bench_txt} -rpt ${rpt_file} -N 10 -K 6 -ace_d 0.5 -multi_thread 1 -vpr_fpga_x2p_rename_illegal_port -vpr_fpga_verilog -vpr_fpga_verilog_dir $verilog_path -vpr_fpga_bitstream_generator -vpr_fpga_verilog_print_autocheck_top_testbench -vpr_fpga_verilog_include_timing -vpr_fpga_verilog_include_signal_init -vpr_fpga_verilog_formal_verification_top_netlist -fix_route_chan_width -vpr_fpga_verilog_include_icarus_simulator -power
if [[ -n "$spice" ]]; then
# Create echo and SPICE Execution
command="perl run_fpga_spice.pl $(echo ${spice_config_flags[@]})"
echo -e "\n* * * * * * * * * * * \n"${command} "\n* * * * * * * * * * * \n"
eval ${command}
fi
echo "Netlists successfully generated and simulated"
exit 0
exit 0

View File

@ -1,4 +1,4 @@
#!usr/bin/perl -w
#!/usr/bin/perl -w
# use the strict mode
use strict;
# Use the Shell enviornment
@ -1182,6 +1182,7 @@ sub run_odin2($ $ $) {
}
sub run_pro_blif_3arg($ $ $) {
# Adopt blif format
my ($abc_blif_out_bak, $abc_blif_out, $initial_blif) = @_;
my ($pro_blif_path) = ($conf_ptr->{dir_path}->{script_base}->{val});
@ -1301,7 +1302,7 @@ sub run_std_vpr($ $ $ $ $ $ $ $ $)
{
my ($blif,$bm,$arch,$net,$place,$route,$fix_chan_width,$log,$act_file) = @_;
my ($vpr_dir,$vpr_name) = &split_prog_path($conf_ptr->{dir_path}->{vpr_path}->{val});
my ($power_opts);
if ("on" eq $opt_ptr->{power}) {
$power_opts = "--power --activity_file $act_file --tech_properties $conf_ptr->{flow_conf}->{power_tech_xml}->{val}";
@ -1460,7 +1461,7 @@ sub run_std_vpr($ $ $ $ $ $ $ $ $)
# foreach my $file (0..$#files){
# print "$files[$file]\t";
# }
3 print "\n";
# print "\n";
#}
chdir $cwd;
}
@ -1765,7 +1766,7 @@ sub run_vpr_in_flow($ $ $ $ $ $ $ $ $ $ $ $) {
print "INFO: try route_chan_width($min_chan_width) success!\n";
last; #Jump out
} elsif ($max_route_width_retry < $min_chan_width) {
# I set a threshold of 1000 as it is the limit of VPR
# I set a threshold of 1000 as it is the limit of VPR
die "ERROR: Route Fail for $abc_blif_out with a min_chan_width of $min_chan_width!\n";
} else {
print "INFO: try route_chan_width($min_chan_width) failed! Retry with +2...\n";
@ -1791,7 +1792,7 @@ sub run_vpr_in_flow($ $ $ $ $ $ $ $ $ $ $ $) {
print "INFO: try route_chan_width($fix_chan_width) success!\n";
last; #Jump out
} elsif ($max_route_width_retry < $fix_chan_width) {
# I set a threshold of 1000 as it is the limit of VPR
# I set a threshold of 1000 as it is the limit of VPR
die "ERROR: Route Fail for $abc_blif_out with a min_chan_width of $fix_chan_width!\n";
} else {
print "INFO: try route_chan_width($fix_chan_width) failed! Retry with +2...\n";
@ -2994,11 +2995,11 @@ sub gen_csv_rpt_vtr_flow($ $)
my @keywords;
my ($K_val,$N_val) = ($opt_ptr->{K_val},$opt_ptr->{N_val});
# adapt to matlab format if the option is enabled
# adapt to matlab format if the option is enabled
if ("on" eq $opt_ptr->{matlab_rpt}) {
# Print the data name
# Print the data name
print $CSVFH "$opt_ptr->{matlab_rpt_val} = [\n";
# We will set the stats line to be commented
# We will set the stats line to be commented
print $CSVFH "%";
}
@ -3029,7 +3030,7 @@ sub gen_csv_rpt_vtr_flow($ $)
print $CSVFH "\n";
# Check log/stats one by one
foreach $tmp(@benchmark_names) {
$tmp =~ s/\.v$//g;
$tmp =~ s/\.v$//g;
print $CSVFH "$tmp";
print $CSVFH ",$rpt_h{$tag}->{$tmp}->{$N_val}->{$K_val}->{LUTs}";
if ("on" eq $opt_ptr->{min_route_chan_width}) {
@ -3078,12 +3079,12 @@ sub gen_csv_rpt_yosys_vpr_flow($ $)
my ($tmp,$ikw,$tmpkw);
my @keywords;
my ($K_val,$N_val) = ($opt_ptr->{K_val},$opt_ptr->{N_val});
# adapt to matlab format if the option is enabled
# adapt to matlab format if the option is enabled
if ("on" eq $opt_ptr->{matlab_rpt}) {
# Print the data name
# Print the data name
print $CSVFH "$opt_ptr->{matlab_rpt_val} = [\n";
# We will set the stats line to be commented
# We will set the stats line to be commented
print $CSVFH "%";
}
@ -3117,9 +3118,9 @@ sub gen_csv_rpt_yosys_vpr_flow($ $)
my @tokens = split('/', $tmp);
$tmp = $tokens[0];
# For matlab script, we use {} for string
# For matlab script, we use {} for string
if ("on" eq $opt_ptr->{matlab_rpt}) {
print $CSVFH "{'$tmp'}";
print $CSVFH "{'$tmp'}";
} else {
print $CSVFH "$tmp";
}
@ -3171,12 +3172,12 @@ sub gen_csv_rpt_standard_flow($ $)
my ($tmp,$ikw,$tmpkw);
my @keywords;
my ($K_val,$N_val) = ($opt_ptr->{K_val},$opt_ptr->{N_val});
# adapt to matlab format if the option is enabled
# adapt to matlab format if the option is enabled
if ("on" eq $opt_ptr->{matlab_rpt}) {
# Print the data name
# Print the data name
print $CSVFH "$opt_ptr->{matlab_rpt_val} = [\n";
# We will set the stats line to be commented
# We will set the stats line to be commented
print $CSVFH "%";
}
@ -3207,7 +3208,7 @@ sub gen_csv_rpt_standard_flow($ $)
print $CSVFH "\n";
# Check log/stats one by one
foreach $tmp(@benchmark_names) {
$tmp =~ s/\.blif$//g;
$tmp =~ s/\.blif$//g;
print $CSVFH "$tmp";
print $CSVFH ",$rpt_h{$tag}->{$tmp}->{$N_val}->{$K_val}->{LUTs}";
if ("on" eq $opt_ptr->{min_route_chan_width}) {
@ -3222,7 +3223,7 @@ sub gen_csv_rpt_standard_flow($ $)
@keywords = split /\|/,$conf_ptr->{csv_tags}->{vpr_tags}->{val};
for($ikw=0; $ikw < ($#keywords+1); $ikw++) {
$tmpkw = $keywords[$ikw];
$tmpkw =~ s/\s//g;
$tmpkw =~ s/\s//g;
print $CSVFH ",$rpt_ptr->{$tag}->{$tmp}->{$N_val}->{$K_val}->{$keywords[$ikw]}";
}
if ("on" eq $opt_ptr->{power}) {
@ -3258,11 +3259,11 @@ sub gen_csv_rpt_mpack2_flow($ $)
my @keywords;
my ($K_val,$N_val) = ($opt_ptr->{K_val},$opt_ptr->{N_val});
# adapt to matlab format if the option is enabled
# adapt to matlab format if the option is enabled
if ("on" eq $opt_ptr->{matlab_rpt}) {
# Print the data name
# Print the data name
print $CSVFH "$opt_ptr->{matlab_rpt_val} = [\n";
# We will set the stats line to be commented
# We will set the stats line to be commented
print $CSVFH "%";
}
@ -3298,7 +3299,7 @@ sub gen_csv_rpt_mpack2_flow($ $)
print $CSVFH "\n";
# Check log/stats one by one
foreach $tmp(@benchmark_names) {
$tmp =~ s/\.blif$//g;
$tmp =~ s/\.blif$//g;
print $CSVFH "$tmp";
if ("on" eq $opt_ptr->{min_route_chan_width}) {
print $CSVFH ",$rpt_h{$tag}->{$tmp}->{$N_val}->{$K_val}->{min_route_chan_width}";
@ -3353,11 +3354,11 @@ sub gen_csv_rpt_mpack1_flow($ $)
my @keywords;
my ($N_val,$M_val) = ($opt_ptr->{N_val},$opt_ptr->{M_val});
# adapt to matlab format if the option is enabled
# adapt to matlab format if the option is enabled
if ("on" eq $opt_ptr->{matlab_rpt}) {
# Print the data name
# Print the data name
print $CSVFH "$opt_ptr->{matlab_rpt_val} = [\n";
# We will set the stats line to be commented
# We will set the stats line to be commented
print $CSVFH "%";
}
@ -3383,7 +3384,7 @@ sub gen_csv_rpt_mpack1_flow($ $)
print $CSVFH "\n";
# Check log/stats one by one
foreach $tmp(@benchmark_names) {
$tmp =~ s/\.blif$//g;
$tmp =~ s/\.blif$//g;
print $CSVFH "$tmp";
#foreach $tmpkw(@keywords) {
print $CSVFH ",$rpt_ptr->{$tag}->{$tmp}->{$N_val}->{$M_val}->{MATRIX}";

View File

@ -12,11 +12,11 @@ hardlogic_tb_dir_name = hardlogic_tb
cb_tb_dir_name = cb_tb
sb_tb_dir_name = sb_tb
# Prefix
top_tb_prefix =
top_tb_prefix =
pb_mux_tb_prefix = _grid
cb_mux_tb_prefix = _cb
sb_mux_tb_prefix = _sb
lut_tb_prefix = _grid
lut_tb_prefix = _grid
hardlogic_tb_prefix = _grid
grid_tb_prefix = _grid
cb_tb_prefix = _cb
@ -34,35 +34,34 @@ sb_tb_postfix = _sb_testbench.sp
[task_conf]
auto_check = on
num_pb_mux_tb =
num_cb_mux_tb =
num_sb_mux_tb =
num_lut_mux_tb =
num_hardlogic_tb =
num_grid_mux_tb =
num_top_tb =
num_cb_tb =
num_sb_tb =
num_pb_mux_tb =
num_cb_mux_tb =
num_sb_mux_tb =
num_lut_mux_tb =
num_hardlogic_tb =
num_grid_mux_tb =
num_top_tb =
num_cb_tb =
num_sb_tb =
[csv_tags]
#top_tb_leakage_power_tags = leakage_power_sram_local_routing|leakage_power_sram_luts|leakage_power_sram_cbs|leakage_power_sram_sbs|leakage_power_io|leakage_power_local_interc|total_leakage_power_lut5|total_leakage_power_lut6|total_leakage_power_dff|leakage_power_cbs|leakage_power_sbs
top_tb_leakage_power_tags = leakage_power_sram_local_routing|leakage_power_sram_luts|leakage_power_sram_cbs|leakage_power_sram_sbs|leakage_power_local_interc|total_leakage_power_lut6|total_leakage_power_dff|leakage_power_cbs|leakage_power_sbs
top_tb_leakage_power_tags = leakage_power_sram_local_routing | leakage_power_sram_luts | leakage_power_sram_cbs | leakage_power_sram_sbs | leakage_power_local_interc | total_leakage_power_lut6 | total_leakage_power_dff | leakage_power_cbs | leakage_power_sbs
#top_tb_dynamic_power_tags = energy_per_cycle_sram_local_routing|energy_per_cycle_sram_luts|energy_per_cycle_sram_cbs|energy_per_cycle_sram_sbs|energy_per_cycle_io|energy_per_cycle_local_routing|total_energy_per_cycle_lut5|total_energy_per_cycle_lut6|total_energy_per_cycle_dff|energy_per_cycle_cbs|energy_per_cycle_sbs
top_tb_dynamic_power_tags = energy_per_cycle_sram_local_routing|energy_per_cycle_sram_luts|energy_per_cycle_sram_cbs|energy_per_cycle_sram_sbs|energy_per_cycle_local_routing|total_energy_per_cycle_lut6|total_energy_per_cycle_dff|energy_per_cycle_cbs|energy_per_cycle_sbs #|crit_path_delay
pb_mux_tb_leakage_power_tags = total_leakage_srams|total_leakage_power_pb_mux
cb_mux_tb_leakage_power_tags = total_leakage_srams|total_leakage_power_cb_mux
sb_mux_tb_leakage_power_tags = total_leakage_srams|total_leakage_power_sb_mux
pb_mux_tb_dynamic_power_tags = total_energy_per_cycle_srams|total_energy_per_cycle_pb_mux
cb_mux_tb_dynamic_power_tags = total_energy_per_cycle_srams|total_energy_per_cycle_cb_mux
sb_mux_tb_dynamic_power_tags = total_energy_per_cycle_srams|total_energy_per_cycle_sb_mux
lut_tb_leakage_power_tags = leakage_power_sram_luts|total_leakage_power_lut6
lut_tb_dynamic_power_tags = energy_per_cycle_sram_luts|total_energy_per_cycle_lut6
top_tb_dynamic_power_tags = energy_per_cycle_sram_local_routing | energy_per_cycle_sram_luts | energy_per_cycle_sram_cbs | energy_per_cycle_sram_sbs | energy_per_cycle_local_routing | total_energy_per_cycle_lut6 | total_energy_per_cycle_dff | energy_per_cycle_cbs | energy_per_cycle_sbs #|crit_path_delay
pb_mux_tb_leakage_power_tags = total_leakage_srams | total_leakage_power_pb_mux
cb_mux_tb_leakage_power_tags = total_leakage_srams | total_leakage_power_cb_mux
sb_mux_tb_leakage_power_tags = total_leakage_srams | total_leakage_power_sb_mux
pb_mux_tb_dynamic_power_tags = total_energy_per_cycle_srams | total_energy_per_cycle_pb_mux
cb_mux_tb_dynamic_power_tags = total_energy_per_cycle_srams | total_energy_per_cycle_cb_mux
sb_mux_tb_dynamic_power_tags = total_energy_per_cycle_srams | total_energy_per_cycle_sb_mux
lut_tb_leakage_power_tags = leakage_power_sram_luts | total_leakage_power_lut6
lut_tb_dynamic_power_tags = energy_per_cycle_sram_luts | total_energy_per_cycle_lut6
hardlogic_tb_leakage_power_tags = total_leakage_power_dff
hardlogic_tb_dynamic_power_tags = total_energy_per_cycle_dff
grid_tb_leakage_power_tags = leakage_power_sram_local_routing|leakage_power_sram_luts|leakage_power_local_routing|total_leakage_power_lut6|total_leakage_power_dff
grid_tb_dynamic_power_tags = total_energy_per_cycle_sram_local_routing|total_energy_per_cycle_sram_luts|total_energy_per_cycle_local_routing|total_energy_per_cycle_lut6|total_energy_per_cycle_dff
cb_tb_leakage_power_tags = leakage_power_cb|leakage_power_sram_cb
cb_tb_dynamic_power_tags = energy_per_cycle_cb|energy_per_cycle_sram_cb
sb_tb_leakage_power_tags = leakage_power_sb|leakage_power_sram_sb
sb_tb_dynamic_power_tags = energy_per_cycle_sb|energy_per_cycle_sram_sb
grid_tb_leakage_power_tags = leakage_power_sram_local_routing | leakage_power_sram_luts | leakage_power_local_routing | total_leakage_power_lut6 | total_leakage_power_dff
grid_tb_dynamic_power_tags = total_energy_per_cycle_sram_local_routing | total_energy_per_cycle_sram_luts | total_energy_per_cycle_local_routing | total_energy_per_cycle_lut6 | total_energy_per_cycle_dff
cb_tb_leakage_power_tags = leakage_power_cb | leakage_power_sram_cb
cb_tb_dynamic_power_tags = energy_per_cycle_cb | energy_per_cycle_sram_cb
sb_tb_leakage_power_tags = leakage_power_sb | leakage_power_sram_sb
sb_tb_dynamic_power_tags = energy_per_cycle_sb | energy_per_cycle_sram_sb

View File

@ -1,2 +1,2 @@
docker run -it --rm -v "%cd%":/localfile -w="/localfile/vpr7_x2p/vpr" goreganesh/open_fpga ./go_ganesh.sh
docker run -it --rm -v "%cd%":/localfile/OpenFPGA -w="/localfile/OpenFPGA" goreganesh/open_fpga bash
pause