mirror of https://github.com/YosysHQ/yosys.git
65 lines
1.8 KiB
Bash
Executable File
65 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
yosys_bin="/usr/local/synthesis/src/yosys/yosys"
|
|
hana_bin="/usr/local/synthesis/src/hana/bin/hana"
|
|
vl2mv_bin="/usr/local/synthesis/bin/vl2mv"
|
|
vis_bin="/usr/local/synthesis/bin/vis"
|
|
iverilog_bin="/usr/local/synthesis/bin/iverilog-0.8"
|
|
odin_bin="/usr/local/synthesis/src/vtr_release/ODIN_II/odin_II.exe"
|
|
abc_bin="/usr/local/synthesis/src/alanmi-abc-b5750272659f/abc"
|
|
edif2ngd="/opt/Xilinx/14.3/ISE_DS/ISE/bin/lin64/edif2ngd"
|
|
netgen="/opt/Xilinx/14.3/ISE_DS/ISE/bin/lin64/netgen"
|
|
|
|
all_modes="yosys hana vis icarus odin"
|
|
all_sources="always01 always02 always03 arrays01 forgen01 forgen02"
|
|
|
|
if [ "$*" == "ALL" ]; then
|
|
for mode in $all_modes; do
|
|
for src in $all_sources; do
|
|
echo "synth.sh $mode $src.v ${src}_${mode}.v"
|
|
( set -x; bash synth.sh $mode $src.v ${src}_${mode}.v || rm -f ${src}_${mode}.v; ) > ${src}_${mode}.log 2>&1
|
|
done
|
|
done
|
|
exit
|
|
fi
|
|
|
|
mode="$1"
|
|
source="$2"
|
|
output="$3"
|
|
prefix="${output%.v}"
|
|
|
|
help() {
|
|
echo "$0 ALL" >&2
|
|
echo "$0 {yosys|hana|vis|icarus|odin} <source-file> <output-file>" >&2
|
|
exit 1
|
|
}
|
|
|
|
if [ "$#" != 3 -o ! -f "$source" ]; then
|
|
help
|
|
fi
|
|
|
|
set -ex
|
|
|
|
case "$mode" in
|
|
yosys)
|
|
$yosys_bin -o $output -b "verilog -noattr" -p proc -p opt -p memory -p opt -p techmap -p opt $source ;;
|
|
hana)
|
|
$hana_bin -s $output $source ;;
|
|
vis)
|
|
$vl2mv_bin -o $prefix.mv $source
|
|
{ echo "read_blif_mv $prefix.mv"; echo "write_verilog $output"; } | $abc_bin ;;
|
|
icarus)
|
|
rm -f $prefix.ngo $prefix.v
|
|
$iverilog_bin -t fpga -o $prefix.edif $source
|
|
$edif2ngd $prefix.edif $prefix.ngo
|
|
$netgen -ofmt verilog $prefix.ngo $prefix.v
|
|
sed -re '/timescale/ s,^,//,;' -i $prefix.v ;;
|
|
odin)
|
|
$odin_bin -o $prefix.blif -V $source
|
|
sed -re 's,top\^,,g; s,clock,_clock,g;' -i $prefix.blif
|
|
{ echo "read_blif $prefix.blif"; echo "write_verilog $output"; } | $abc_bin ;;
|
|
*)
|
|
help
|
|
esac
|
|
|