mirror of https://github.com/openXC7/prjxray.git
93 lines
2.0 KiB
Bash
Executable File
93 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# $1: DB type
|
|
# $2: filename to merge in
|
|
|
|
set -ex
|
|
test $# = 2
|
|
test -e "$2"
|
|
|
|
tmp1=`mktemp -p .`
|
|
tmp2=`mktemp -p .`
|
|
|
|
function finish {
|
|
echo "Cleaning up temp files"
|
|
rm -f "$tmp1"
|
|
rm -f "$tmp2"
|
|
}
|
|
trap finish EXIT
|
|
|
|
db=$XRAY_DATABASE_DIR/$XRAY_DATABASE/segbits_$1.db
|
|
# Check existing DB
|
|
if [ -f $db ] ; then
|
|
${XRAY_PARSEDB} --strict "$db"
|
|
fi
|
|
# Check new DB
|
|
${XRAY_PARSEDB} --strict "$2"
|
|
|
|
# Fuzzers verify L/R data is equivilent
|
|
# However, expand back to L/R to make downstream tools not depend on this
|
|
# in case we later find exceptions
|
|
|
|
case "$1" in
|
|
clbll_l)
|
|
sed < "$2" > "$tmp1" \
|
|
-e 's/^CLB\.SLICE_X0\./CLBLL_L.SLICEL_X0./' \
|
|
-e 's/^CLB\.SLICE_X1\./CLBLL_L.SLICEL_X1./' ;;
|
|
clbll_r)
|
|
sed < "$2" > "$tmp1" \
|
|
-e 's/^CLB\.SLICE_X0\./CLBLL_R.SLICEL_X0./' \
|
|
-e 's/^CLB\.SLICE_X1\./CLBLL_R.SLICEL_X1./' ;;
|
|
clblm_l)
|
|
sed < "$2" > "$tmp1" \
|
|
-e 's/^CLB\.SLICE_X0\./CLBLM_L.SLICEM_X0./' \
|
|
-e 's/^CLB\.SLICE_X1\./CLBLM_L.SLICEL_X1./' ;;
|
|
clblm_r)
|
|
sed < "$2" > "$tmp1" \
|
|
-e 's/^CLB\.SLICE_X0\./CLBLM_R.SLICEM_X0./' \
|
|
-e 's/^CLB\.SLICE_X1\./CLBLM_R.SLICEL_X1./' ;;
|
|
|
|
dsp_l)
|
|
sed < "$2" > "$tmp1" -e 's/^DSP\./DSP_L./' ;;
|
|
dsp_r)
|
|
sed < "$2" > "$tmp1" -e 's/^DSP\./DSP_R./' ;;
|
|
|
|
bram_l)
|
|
sed < "$2" > "$tmp1" -e 's/^BRAM\./BRAM_L./' ;;
|
|
bram_r)
|
|
sed < "$2" > "$tmp1" -e 's/^BRAM\./BRAM_R./' ;;
|
|
|
|
bram_l.block_ram)
|
|
sed < "$2" > "$tmp1" -e 's/^BRAM\./BRAM_L./' ;;
|
|
bram_r.block_ram)
|
|
sed < "$2" > "$tmp1" -e 's/^BRAM\./BRAM_R./' ;;
|
|
|
|
int_l)
|
|
sed < "$2" > "$tmp1" -e 's/^INT\./INT_L./' ;;
|
|
int_r)
|
|
sed < "$2" > "$tmp1" -e 's/^INT\./INT_R./' ;;
|
|
|
|
hclk_l)
|
|
sed < "$2" > "$tmp1" -e 's/^HCLK\./HCLK_L./' ;;
|
|
hclk_r)
|
|
sed < "$2" > "$tmp1" -e 's/^HCLK\./HCLK_R./' ;;
|
|
|
|
liob33)
|
|
cp "$2" "$tmp1" ;;
|
|
|
|
mask_*)
|
|
db=$XRAY_DATABASE_DIR/$XRAY_DATABASE/$1.db
|
|
cp "$2" "$tmp1" ;;
|
|
|
|
*)
|
|
echo "Invalid mode: $1"
|
|
rm -f "$tmp1" "$tmp2"
|
|
exit 1
|
|
esac
|
|
|
|
touch "$db"
|
|
sort -u "$tmp1" "$db" | grep -v '<.*>' > "$tmp2" || true
|
|
# Check aggregate db for consistency and make canonical
|
|
${XRAY_PARSEDB} --strict "$tmp2" "$db"
|
|
|