forked from tanchou/Verilog
47 lines
1.3 KiB
Bash
47 lines
1.3 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Aller à la racine du projet
|
||
|
cd "$(dirname "$0")/../.." || exit 1
|
||
|
|
||
|
# Config de base
|
||
|
DEVICE="GW2AR-LV18QN88C8/I7"
|
||
|
BOARD="tangnano20k"
|
||
|
TOP="top_uart_ultrason_command"
|
||
|
CST_FILE="$TOP.cst"
|
||
|
JSON_FILE="runs/$TOP.json"
|
||
|
PNR_JSON="runs/pnr_$TOP.json"
|
||
|
BITSTREAM="runs/$TOP.fs"
|
||
|
|
||
|
# Créer le dossier runs si nécessaire
|
||
|
mkdir -p runs
|
||
|
|
||
|
echo "=== Étape 1 : Synthèse avec Yosys ==="
|
||
|
yosys -p "read_verilog -sv src/verilog/$TOP.v IP/verilog/ultrasonic_fpga.v IP/verilog/uart_tx_fifo.v IP/verilog/uart_rx_fifo.v IP/verilog/rxuartlite.v IP/verilog/fifo.v IP/verilog/uart_tx.v; synth_gowin -top $TOP -json $JSON_FILE"
|
||
|
if [ $? -ne 0 ]; then
|
||
|
echo "=== Erreur lors de la synthèse ==="
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
echo "=== Étape 2 : Placement & Routage avec nextpnr-himbaechel ==="
|
||
|
nextpnr-himbaechel --json "$JSON_FILE" --write "$PNR_JSON" --device "$DEVICE" --vopt cst=constraints/"$CST_FILE" --vopt family=GW2A-18C
|
||
|
if [ $? -ne 0 ]; then
|
||
|
echo "=== Erreur lors du placement/routage ==="
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
echo "=== Étape 3 : Packing avec gowin_pack ==="
|
||
|
gowin_pack -d "$DEVICE" -o "$BITSTREAM" "$PNR_JSON"
|
||
|
if [ $? -ne 0 ]; then
|
||
|
echo "=== Erreur lors du packing ==="
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
echo "=== Étape 4 : Flash avec openFPGALoader ==="
|
||
|
openFPGALoader -b "$BOARD" "$BITSTREAM"
|
||
|
if [ $? -ne 0 ]; then
|
||
|
echo "=== Erreur lors du flash ==="
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
echo "=== Compilation et flash réussis ==="
|