Note di rilascio

PLA simulator - versione 2.0

Jul 31 2018

Il simulatore PLA è scritto in Python 2.7-3.7 ed è mantenuto sotto CVS (Concurrent Versions System).

Il simulatore è distribuito in forma open source, sotto la GNU GENERAL PUBLIC LICENSE.

La documentazione di riferimento (disponibile anche in versione pdf). è la base di partenza per sviluppatori interessati ad ampliare e/o modificare il progetto. Essa è generata mediante Epydoc, che raccoglie e formatta le docstrings di Python. Per tale motivo i commenti in docstrings aderiscono alla sintassi Epytext Markup Language; poiché Epydoc specifica nei file HTML la relativa codifica, non è necessatio usare notazioni particolari per rappresentare correttamente le vocali italiano accentate. I commenti iniziati invece con il simbolo # non sono prelevati per la documentazione e possono quindi essere liberi.
Per rigenerare la documentazione di riferimento in un sistema UNIX basta posizionarsi nella directory della distribuzione, e scrivere la seguente riga di comando:
doc/make_epy.sh
Qualora si ottenesse il messaggio di errore:
doc/make_epy.sh: Permission denied.
Esguire il comando:
chmod +x doc/make_epy.sh && doc/make_epy.sh


Sviluppo della libreria di circuiti

La sezione del codice preliminarmente predisposta per ampliamenti, anche da parte di chi non sia programmatore in Python, è la libreria di circuiti logici, che può essere personalizzata a piacimento, per scopi didattici o altro. Il modulo da modificare è circuits.py. La sua sezione fuori dalla classe Circuit è una collezione di istanze, ciascuna può essere usata come template per nuovi circuiti. La programmazione è facilitata dalla flessibile sintassi delle slice del Python nelle matrici NumPy, per esempio l'espressione:
circ_a.and_matrix[ 4, 1 : 4 : 2 ] = 1
ha l'effetto di rendere connessi i fusibili della matrice tra ingresso e porte AND, per tutta la quinta riga, nelle seconda e quarta colonna, mentre:
circ_a.and_matrix[ 6, 1 : : 4 ] = 1
connette tutti i fusibili della settima riga, per ogni colonna a partire dalla seconda fino all'ultima, in passi di quattro. Notare che, siccome nella pratica per la maggior parte dei circuiti le matrici sono piuttosto sparse, il procedimento utilizzato per la libreria è quello opposto rispetto alla programmazione logica manuale del simulatore: si inizia da matrici con tutti i fusibili scollegati, e si specificano, con sintassi come quelle mostrate sopra, i nodi che vanno connessi.

Per creare nuovi circuiti a partire da una funzione logica è possibile utilizzare una delle seguenti funzioni:
generate_code(name, description, function, input_names, output_names)
generate_obj(description, function, input_names, output_names)
la prima stampa a schermo il codice da inserire nell'apposito modulo, la seconda (da richiamare nel modulo stesso) restituisce un oggetto di tipo Circuit.

La funzione logica da passare ai due metodi sopra citati deve prendere in input n_i parametri booleani e restituire una tupla di n_o booleani.
I parametri input_names e output_names devono essere tuple o liste contenti rispettivamente n_i stringhe e n_o stringhe.

Notare che ogni circuito nuovo, perché sia visibile e utilizzabile nel simulatore, deve essere aggiunto alla lista circs, nell'ultima istruzione del modulo circuits.py.


Per segnalazioni e contatti scrivere a Alice Plebe, autore della prima versione, o a Matteo Cavallaro, autore della presente versione.



home page