Ormai sono passati alcuni mesi da quando le persone hanno iniziato a familiarizzare con l'IA Generativa e, in particolare, con ChatGPT. In passato abbiamo trattato la possibilità di utilizzare ChatGPT per la progettazione PCB, in questo articolo vedremo come utilizzare al meglio ChatGPT per scrivere codice DelphiScript per eseguire funzioni automatizzate all'interno di Altium stesso utilizzando Scripting di Altium.
Prima di immergerci nell'implementazione, è importante capire con cosa stiamo lavorando. Lo scripting di Altium è meglio supportato utilizzando DelphiScript (rispetto ad altri linguaggi). Personalmente, non ho mai visto Delphi usato al di fuori di Altium Designer. Questo non vuol dire che sia un cattivo linguaggio - semplicemente non è utilizzato comunemente come Python, C++, ecc. C'è molto da imparare con un nuovo linguaggio (specialmente se non si è programmatori nativi), quindi Altium ha messo insieme molte risorse e persino strumenti per la programmazione in DelphiScript qui. Se siete interessati ad approfondire il linguaggio, le risorse presenti possono essere utili.
Man mano che ti immergi nello Scripting di Altium, svilupperai rapidamente un ampio repository di script che potresti voler salvare e/o condividere. Per creare un nuovo progetto di Scripting in Altium Designer, segui questi passaggi:
Questa procedura creerà un nuovo file ".pas" che sarà il tuo script:
Figura 1: Aggiunta di un file script al progetto esistente
É conveniente salvare il nuovo script nel nostro workspace di Altium 365. Prima, assicurati di aver salvato il progetto localmente. Successivamente, clicca con il tasto destro sul progetto e vai su Storia & Controllo Versioni > Aggiungi Progetto al Controllo Versioni….
Figura 2: Aggiunta del progetto allo Workspace di Altium 365
Segui le istruzioni successive per salvare il progetto nel tuo Workspace Altium 365. Per ulteriori istruzioni su come scrivere, eseguire e fare il debug del codice DelphiScript all'interno di Altium Designer consulta la documentazione di Altium.
ChatGPT ha il "potenziale" di scrivere completamente DelphiScript dall'inizio alla fine. Uso "potenziale" invece di "capacità" perché non sempre riesce a fornire risultati corretti. Prendiamo un esempio semplice: chiediamo a ChatGPT di generare uno script in DelphiScript per elencare tutte le reti nel mio progetto. Ho iniziato con un prompt che era, ad essere onesti, molto vago:
Figura 3: Risposta iniziale di ChatGPT
Inizialmente ha automaticamente inteso che volessi elencare tutte le reti da un PcbDoc. In realtà lo volevo dallo schema, quindi l'ho corretto:
Figura 4: Uno dei tanti tentativi di ChatGPT di scrivere lo script corretto
Non ho mostrato tutto il codice che ha generato, ma ciò che è emerso è che ho eseguito il codice più volte solo per ottenere errori da Altium Designer come: "Identificatore non dichiarato: eNet," o "Previsto: in For Pin in Component. Pins Do." Di conseguenza ho continuato a rispondere a ChatGPT con quegli errori più volte e, al quinto tentativo, ha generato il codice che stavo cercando.
Da questo test è emerso che ChatGPT non è eccezionale nel generare DelphiScript da zero, ma è comunque in grado di farlo. Tienilo a mente prima di lanciare la tastiera contro il muro per la frustrazione.
ChatGPT può anche fungere da valido assistente oltre che da programmatore collega. Puoi utilizzarlo per analizzare il tuo codice, individuare bug o aiutarti a modificare funzioni specifiche. Ad esempio, possiamo prendere uno script Altium esistente e chiedere a ChatGPT di modificarlo in base alle nostre esigenze.
Sono disponibili risorse (specialmente ospitate su GitHub) che forniscono esempi di scripting Altium per te. Userò quelli forniti da Altium. Li puoi trovare a questo link.
Sto iniziando con l'esempio PlaceAPort situato sotto \DelphiScript Scripts\SCH\Sch_Scripts.PrjScr. Ho dato a ChatGPT un compito molto banale:
ChatGPT mi ha dato il codice che seguiva esattamente questa richiesta. Ad essere onesti, questo è piuttosto semplice se sei semi-comodo con la programmazione. Rendiamolo un po' più difficile, richiedendo una conoscenza contestuale dello scripting Altium.
Ecco il mio prompt aggiornato a ChatGPT:
Al primo tentativo si verifica un errore di "Identificatore non dichiarato:"
Figura 5: Errore del debugger da Altium Designer
Glielo faccio sapere e si scusa, ovviamente. Fallisce di nuovo con un errore "Identificatore non dichiarato: Nome" ma, alla terza volta, ottengo la mia etichetta di rete esattamente dove dovrebbe essere:
Figura 6: Nuova etichetta di rete e porta generata dagli script modificati
È ovvio che con un aumento della complessità ci sono meno possibilità che ChatGPT ottenga il tuo script corretto al primo colpo. Ho scoperto che, con persistenza, è in grado di ottenere eventualmente le cose nel modo giusto, specialmente se puoi assisterlo un po' (assumendo che tu capisca il codice che sta generando).
In questo articolo abbiamo iniziato con un'introduzione allo scripting di Altium, come creare un progetto e salvarlo nel tuo spazio di lavoro Altium 365. Abbiamo esplorato esempi con ChatGPT dove ha generato script completamente da zero e ha anche modificato script che gli abbiamo fornito. Abbiamo dimostrato le sue capacità e come non ottenga sempre tutto correttamente. Sebbene non sia perfetto, può certamente agire come una guida lungo il tuo percorso di scripting di Altium. Più importante, è certamente meglio averlo che non averlo affatto.