#!/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 ==="