NG SPICE DRAFT.


To ng-spice@ieee.ing.uniroma1.it
From Paolo Nenzi <pnenzi@iol.it>
Date Sat, 10 Jul 1999 22:27:27 +0200 (CEST)
Delivered-To mailing list ng-spice@ieee.ing.uniroma1.it
Mailing-List contact ng-spice-help@ieee.ing.uniroma1.it; run by ezmlm
Reply-To ng-spice@ieee.ing.uniroma1.it

Leggete, leggete, una descrizione del progetto. 
Danilo aggiungi il discorso licenze.

Fatemi sapere, miodifche eetc, io mi occupero' di inserirle nel doc.

Paolo

ng-archi.eps

#This file was created by <root> Sat Jul 10 22:25:14 1999
#LyX 1.0 (C) 1995-1999 Matthias Ettrich and the LyX Team
\lyxformat 2.15
\textclass article
\language italian
\inputencoding default
\fontscheme default
\graphics default
\paperfontsize default
\spacing single 
\papersize Default
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default

\layout Title

NG-SPICE DRAFT 
\newline 

\size footnotesize 
Versione 1 Draft
\layout Date

8 Luglio 1999 
\layout Author

Paolo Nenzi
\layout Abstract

NG SPICE è il nome dato ad un progetto il cui scopo è quello di migliorare
 il simulatore circuitale SPICE3 dell'Università della California di Berkeley
 per renderlo veramente utilizzabile.
 NG SPICE nasce dalla fusione di tre progetti differenti: l'inserimento
 nel sorgente dei modelli di dispositivi SOI (Silicon On insulator), il
 progetto di una interfaccia grafica ed il debugging del codice attuale,
 quest'ultimo portato avanti indipendetemente da Micheal Widlok in Polonia.
 Quindi NG SPICE è di per sè un progetto molto ambizioso ed a lungo termine.
 Forse non riusciremo a fare tutti i miglioramenti descritti nel documento,
 ma proviamoci comunque.
\layout Section

Descrizione del progetto 
\layout Standard

Il progetto NG SPICE segue tre direttive principali, ciascuna delle quali
 porta alla realizzazione di una componente di quello che sarà poi il miglior
 simulatore circuitale open source della storia (naturalmente l'importante
 è crederci).
 Le tre linee direttici (ortogonali tra loro) sono:
\layout Itemize

Incremento delle capacità e delle prestazioni del simulatore.
\layout Itemize

Integrazione del simulatore in un ambiente desktop.
\layout Itemize

Scrittura di una documentazione per l'utente finale.
\layout Standard

L'incremento delle capacità del simulatore dovrebbe portare lo SPICE3 di
 Berkeley a competere con i simulatori commerciali di fascia bassa 
attualmente
 disponibili.
 Non è da scartare l'idea che esso andrà a fare parte del pacchetto GEDA
 (GNU Electronics Design Automation) sviluppato parallelamente (il cui sito
 web è htttp://www.geda.seul.org).
 
\layout Standard

L'integrazione del simulatore in un ambiente desktop è indipendente dal
 simulatore stesso, ed aspira a renderelo intuitivo da utilizzare.
 Attualmente SPICE3 ha una interfaccia grafica poco piacevole da maneggiare
 ed estremamente spartana.
 La compresione dei risultati della sumulazione non è immediata (anzi...) e
 l'uscita grafica è tuttaltro che buona.
 
\layout Standard

La documentazione è un punto fondamentale per un simulatore come SPICE3,
 poichè il simulatore stesso è poco più di un motore che deve essere imparato
 ad utilizzare, se si vogliono ottenere risultati significativi.
 SPICE3 può fare molte più cose di quanto le guide disponibili mettano in
 luce, per cui è definitivamente necessaria una documentazione aggiornata.
\layout Section

Guardiamoci intorno
\layout Standard

Attualmente il mercato dell'EDA (Electronics Design Automation) è in 
fermento,
 la sempre maggiore disponibilità di soluzioni hardware a (relativamente)
 basso costo ha portato un generoso numero di software house a produrre
 tool per la progettazione e la verifica dell'hardware.
 L'EDA è un campo che fino a pochi anni fa era dominato da un piccolo gruppo
 di software house, grazie anche alla potenza di calcolo richiesta dai 
simulator
i, potenza di calcolo che solo fino a pochi anni fa era dominio incontrastato
 delle workstation scientifiche del costo di decine di milioni di lire (di
 allora).
 Oggi un qualsiasi personal computer di fascia medio alta del costo di pochi
 milioni (di oggi) surclassa una vecchia workstation di uno o due ordini
 di grandezza, e questo ha fatto sì che nel mercato dell'EDA entrassero
 i PC e quindi che molte società di software si dedicassero a questo mercato.
 PSpice, il primo simulatore circuitale per PC si è evoluto dalle prime
 versioni per DOS, invero abbastanza scarsucce, alla attuale versione 9
 , diventando un potente tool di analisi, sintesi ed ottimizzazione per
 circuiti.
 Se questo già non bastasse, oggigiorno, il predominio delle workstation
 nel mondo dell'EDA, sebbene tuttora incontrastato (e non ci sono avvisaglie
 che cambi in seguito), è stato ridotto dall'ingresso di piattaforme 
alternative
: i PC basati su Windows NT.

 Il loro costo definitivamente inferiore e la loro facilità di uso li fa
 uno strumento sicuramente attraente in quei casi in cui non è richiesta
 la affidabilità e la versatilità delle 
\begin_inset Quotes eld
\end_inset 

cugine maggiori
\begin_inset Quotes erd
\end_inset 

.
 Un piccolo spazio in questo mondo di giganti se lo è ritagliato anche Linux
 (e BSD): alcuni prodotti EDA commerciali sono già disponibili per Linux,
 uno di questi è lo SmartSPice di Silvaco.
 
\layout Standard

In un mercato come questo, il cui valore supera il migliaio di miliardi
 di dollari l'anno (tra software, computer, ricerca ed assistenza) è 
difficile
 credere che il NG-SPICE possa essere competitivo, ed infatti non lo sarà,
 probabilmente.
 Questo però non deve far scoraggiare, poichè una nicchia di 
\begin_inset Quotes eld
\end_inset 

mercato
\begin_inset Quotes erd
\end_inset 

 (tra virgolette perchè è una nicchia che non ha valore commerciale reale)
 per il prodotto esiste: la didattica e l'hobbistica.
 Il software di cui sopra ha tanti pregi, ma anche un difetto non 
trascurabile:
 costa più del platino scavato su Nettuno.
 Se pensate che ORCAD release 9 costa quasi 20.000.000 di Lire e CADENCE,
 leader indiscussa nel campo della progettazione dei circuiti integrati,
 fa pagare la sua suite oltre 2.000.000 di Dollari (alla fine 4.000.000.000 
di
 Lire), vi rendete conto come l'università (quella locale sopratutto) e
 chi costruisce circuiti per hobby, possa avere delle difficoltà ad 
acquistare
 il primo e non può neanche pensare lontanamente di comprare il secondo.
 Senza voler approfondire il discorso, diciamo che anche volendo acquistare
 l'uno o l'altro pacchetto, la limitazione del numero di licenze (ogni 
licenza
 oltre la prima ha un costo addizionale) costituirebbe un grande limite
 per una università, dove un programma potrebbe essere usato da 30 o 40
 studenti contemporaneamente.
 
\layout Subsection

Considerazioni sui simulatori circuitali esistenti
\layout Standard

Fino a poco tempo fa i simulatori circuitali seguivano due filosofie: 
\layout Itemize

Simulatori circuit oriented.
\layout Itemize

Simulatori technology oriented.
\layout Standard

La prima categoria comprende un numero indefinito di simulatori ottimizzati
 sopratutto per convergere in presenza di circuiti di vaste dimensioni.
 In questi simulatori la modellistica e le problematiche relative agli 
effetti
 del 
\begin_inset Quotes eld
\end_inset 

secondo ordine
\begin_inset Quotes erd
\end_inset 

 dei semiconduttori non venivano affrontate in modo approfondito (quando
 venivano approfondite).
 Tali simulatori si 
\begin_inset Quotes eld
\end_inset 

reclamizzavano
\begin_inset Quotes erd
\end_inset 

 in base al numero di transistor che potevano simulare (guarda caso 
illimitato
 nella maggior parte dei casi) ed al tipo di dispositivi 
\begin_inset Quotes eld
\end_inset 

anomali
\begin_inset Quotes erd
\end_inset 

 che erano in grado di simulare (lampadine, resistenze PTC o NTC
\begin_float footnote 
\layout Standard

NTC,PTC: Negative Temperature Coefficient, Positive Temperature Coefficient;
 si tratta di resistenze varibili in funzione della temperatura.
 Le prime diminuiscono il loro valore all'aumentare della temperatura, le
 seconde si comportano in modo opposto.
\end_float 
, tiristori, valvole, etc.).
 Uno studio approfondito del manuale, metteva poi in evidenza come in realtà
 questi dispositivi 
\begin_inset Quotes erd
\end_inset 

anomali
\begin_inset Quotes erd
\end_inset 

 erano in realtà macromodelli composti da dispositivi più semplici e comuni
 a tutti gli SPICE.
 Inoltre la maggior parte di questi simulatori si basava sulla versione
 2 di SPICE, le cui caratterstiche sono inferiori alla versione 3.
 Questi pacchetti erano dedicati alla piccola impresa, allo studio di 
profession
isti ed in genere a coloro che avevano bisogno di simulare circuiti molto
 complessi composto da componenti discreti in cui gli effetti di secondo
 ordine dei dispositivi a semiconduttore possono essere trascurati.
 Questi pacchetti fornivano le analisi tipiche si fanno nella progettazione
 di un circuito (DC, Sweep, Fourier, AC piccoli segnali, etc.) ed avevano
 una accativante interfaccia grafica sufficientemente intuitiva da permettere
 l'apprendimento delle funzionalità del simulatore nel più breve tempo 
possibile.
 Un difetto che veniva subito alla luce in questi simulatori era la pessima
 corrispondenza delle simulazioni con la realtà nei dispositivi di potenza.
 Opinione comune voleva che SPICE non fosse adatto a questo tipo di analisi
 (anche se le menti più argute intesero che si trattava di modellazione
 troppo grossolana).
\layout Standard

Complementari a questi pacchetti (sviluppati sopratutto in ambiente PC)
 vi era una piccola classe di simulatori dedicati alla simulazione di 
circuiti
 integrati, in cui la modellistica era talmente spinta da rallentare la
 simulazione fino a farla durare giorni.
 Questi simulatori giravano su worstation scientifiche (oggetti dal costo
 molto elevato) ed erano usati da ricercatori, ingegneri e tecnici di alto
 livello, per cui potevano sacrificare l'interfaccia grafica alle 
funzionalità
 .
 La bellezza di questi simulatori consisteva nella versatilità e 
configurabilità
 da parte dell'utente, e nella stretta interazione con il cliente che spesso
 portava alla modifica doi parti del simulatore.
\layout Standard

Oggi una distinzione altrttanto netta non è possibile, l'abbassamento dei
 costi delle worstation, il livello raggiunto dai PC e la diffusioen del
 software hanno sfumato la linea che divide le due filosofie: oggi sono
 disponibili un buon numero di simulatori dotati di modelli molto buoni
 ed allo stesso tempo capaci di simulare grandi circuiti in tempi 
ragionevoli.
 Diciamo che le differenze adesso si vedono più nella commercializzaizione:
 prodotti per la massa contro prodotti altamente specializzati, prodotti
 dedicati all'industria e prodotti dedicati alla ricerca.
 Alcuni pachetti sono più adatti alla simulazioni di circuitio con componenti
 esistenti, altri sono più adatti alla simulazione di circuiti con 
compontenti
 basati sulla propria tecnologia.
 
\layout Standard

Oggi è raro trovare una ditta che venda solo un simulatore circuitale, la
 maggior parte vende soluzioni integrate per il place & route
\begin_float footnote 
\layout Standard

La classe di operazioni che servono a 
\begin_inset Quotes eld
\end_inset 

sbrogliare
\begin_inset Quotes erd
\end_inset 

 le piste un circuito stampato (o le metallizazioni in un circuito 
integrato).
\end_float 
, strumenti per la sintesi di logiche programmabili (tra cui FPGA e CPLD),
 strumenti di verifica e testing e simulatori Mixed/Level 
(analogici/digitali).
 Per cui SPICE oggi è solo una piccola parte di un pacchetto di EDA.
 Nonostante ciò, SPICE è lo standard per la simulazione elettrica, quasi
 tutti i simulatori circuitali oggi sul mercato prendono spunto da lui.
 Il punto di forza di SPICE è che non utilizza scorciatoie, risolve il 
circuito
 applicando le leggi che governano il funzionamento dei componenti e le
 leggi basate sulla topologia del circuito.
 Il prezzo da pagare per questo risultato è la lentezza della simulazione
 e le problematiche connesse alla simulazione numerica, che rendono questo
 tipo di simulazione praticamente inutilizzabile a livello di chip, in cui
 sono presenti milioni di transitor.
 Per sopperire a questo limite sono nati dei simulatori basati su linguaggi
 (VHDL, VeriLOG) che astraggono dalla fisica del dispositivo per modellarne
 la funzione (il behaviour, direbbero gli inglesi) che, non dovendo risolvere
 equazioni differenziali o non lineari, ma effettuare degli accessi a 
tabelle,
 guadagnano svariati ordini di grandezza in velocità, naturalmente perdendo
 sul fronte del realismo della simulazione (eventi contemporanei, fronti
 dei segnali verticali, etc.).
\layout Standard

Tanta è la perdita del realismo che alla fine, sulle celle fondamentali
 componenti del circuito e sui percorsi critici si lancia una simulazione
 elettrica (SPICE).
 Esistono estensioni 
\begin_inset Quotes eld
\end_inset 

analogiche
\begin_inset Quotes erd
\end_inset 

 di questi linguaggi di descrizione (VeriLOG-A, VHDL-AMS) ma sono comunque
 di tipo non elettrico, per cui valide entro un ben determinati limiti.
\layout Standard

Insomma, per quanto vecchio e lento SPICE è sempre un oggetto utile.
\layout Subsection

Il panorama Linux
\layout Standard

Facendo un salto sul sito Scientific Applications for Linux 
(http://sal.kachinate
ch.com) si vede come il software di simulazione circuitale (di tipo 
elettrico)
 si conti sulle punte delle dita di due mani.
 I software in questione sono:
\layout Itemize

ACS: un simulatore interattivo scritto in C++ abbastanza noto per l'analisi
 delle distorsioni.
 Implementa i modelli di dispositivi attraverso le clasi, per cui, una volta
 modellato il diodo, la classe transistor estende include un paio 
diestensione
 della classe diodo, etc.
 A detta dell'autore questodovrebbe semplificare il processo di modeling
 dei dispositivi.
 
\layout Itemize

APLAC: simulatore commerciale per circuiti sistemi, FDTD.
\layout Itemize

Chipmunk: simulatore analogico e digitale mixed mode, la parte analogica
 lascia alquanto a desiderare.
 Il simulatore analogico è in grado di eseguire solo analisi nel dominio
 del tempo.
\layout Itemize

SCEPTRE: simulatore circuitale basato sull'analisi nello spazio di stato.
 Risolve il circuito utilizzando un approccio differente rispetto a quello
 di SPICE.
\layout Itemize

SmartSpice: il prodotto della Silvaco, il miglior simulatore SPICE presente
 su Linux.
 Estendibile ed internamente strutturato per il supporto multiprocessore.
 
\layout Itemize

Spice: il simulatore di Berkeley.
\layout Itemize

SpiceCAD: un simulatore commerciale basato su Spice3f5 e dotato di un CAD
 per schematici e di un visualizzatore per le uscite basato su GNUPLOT.
\layout Standard

Volendo poi togliere da questi i pacchetti con carattistiche e target molto
 diversi da quelli di SPICE riduciamo la lista del software a: ACS, 
SmartSPice,
 Spice, SpiceCAD.
 Da notare che SmartSPice è un pacchetto di costo molto elevato, per cui
 non accessibile a una buona parte del mercato.
 Rimangono: ACS, Spice e SPiceCAD.
 Da questa lista tolgiamo ACS che ancora è in uno stato 
\begin_inset Quotes eld
\end_inset 

didattico
\begin_inset Quotes erd
\end_inset 

, di poco uso pratico, o meglio non può ancora competere con la versatilità
 di SPICE.
 La lista si riduce ulteriormente a:
\layout Itemize

Spice
\layout Itemize

SpiceCAD
\layout Standard

Di questi l'ultimo è commerciale, per cui il pacchetto NG SPICE sarebbe
 il primo simulatore open source di livello commerciale per Linux.
 
\layout Section

Un simulatore circuitale: SPICE3
\layout Standard

Prima di illustrare in dettaglio i punti del progetto NG SPICE è necessario
 mettere in evidenza cosa sia e come funziona un simulatore circuitale della
 terza generazione quale è SPICE3.
 Questa è solo una breve introduzione al funzionamento interno del 
simulatore,
 una descrizione approfondita è presente nei testi dedicati alla simulazione
 di circuiti elettrici.
 
\layout Subsection

Il metodo di risoluzione del circuito
\layout Standard

SPICE3 utilizza un procedimento l'Analisi Nodale Modificata per risolvere
 il circuito (risolvere un circuito vuol dire calcolare l'andamento delle
 tensioni e correnti in corrispondenza di ogni nodo).
 Questo tipo di analisi prevede che il circuito sia descritto da una matrice
 a blocchi contenente le conduttanze dei rami e le equazioni di vincolo
 dei generatori indipendenti di corrente e tensione.
 Senza approfondire ulteriormente, la struttura di una matrice siffatta
 è la seguente:
\begin_inset Formula 
\[
\left[ \begin{array}{cc}
\textrm{G} & \textrm{F}\\
\textrm{B} & \textrm{R}
\end{array}\right] \cdot \left[ \begin{array}{c}
\textrm{V}\\
\textrm{I}
\end{array}\right] =\left[ \begin{array}{c}
\textrm{C}\\
\textrm{E}
\end{array}\right] \]

\end_inset 


\layout Standard

In cui C ed E sono i vettori relativi ai generatori di corrente e di 
tensione.
 La risoluzione di questo sistema lineare, i cui coefficienti sono di volta
 in volta, reali o complessi a seconda del tipo di analisi (DC o AC), avviene
 per mezzo della eliminazione di Gauss e la fattorizzazione LU.
 Dato un sistema di equazioni lineari 
\series bold 

\begin_inset Formula \( Ax=b \)
\end_inset 

, 
\series default 
il vettore incognito 
\begin_inset Formula \( x \)
\end_inset 

 può essere calcolato applicando alla matrice 
\begin_inset Formula \( A \)
\end_inset 

 una variante della eliminazione gaussiana che la trasforma nel prodotto
 di due matrici di cui una triangolare superiore (
\begin_inset Formula \( U \)
\end_inset 

) ed un'altra triangolare inferiore (
\begin_inset Formula \( L \)
\end_inset 

):
\layout Standard


\begin_inset Formula 
\[
A=LU\]

\end_inset 

il sistema può quindi essere riscritto:
\begin_inset Formula 
\[
LUx=b\]

\end_inset 

 ed eseguendo i passi seguenti:
\begin_inset Formula 
\[
Ux=L^{-1}b=b'\]

\end_inset 


\begin_inset Formula 
\[
x=U^{-1}b'=U^{-1}L^{-1}b\]

\end_inset 

La bontà di questo metodo consiste nel fatto che una volta calcolate ed
 invertire le matrici, le soluzioni si ottengono modificando solo il vettore
 dei termini noti (i valori dei generatori indipendenti).
 Questa è solo una breva introduzione alla risoluzione dei circuiti con
 il metodo della analisi nodale modificata, la difficoltà sta nel fatto
 che le matrici dei circuiti sono spesso mal condizionate.
 Una definizione di mal condizionamento di una matrici non è im portante
 in questa sede, ma in un certo senso unamatrice mal condizionata reagisce
 male alle operazione che si fanno su die essa, a maggior ragione quando
 un computer avendo un precisione finita introduce ad ogni passo un errore
 di troncamento.
 i simulatori della classe di SPICE3 risolvono questo problema attraverso
 algoritmi di riordinamento topologico e pivoting (si rinanda ai testi 
specializ
zati per una loro descrizione).
\layout Subsection

Soluzione di equazioni non lineari
\layout Standard

I dispositivi a semiconduttore, ed alcuni particolari generatori controllati
 hanne delle equazioni descrittive non lineari (i transistor bipolari in
 zona attiva sono fortemente non lineari), per cui i circuiti che li 
contengono
 sono descritti da equazioni non lineari.
 SPIC3 utilizza per la risoluzione di un sistema non lineare il metodo di
 Newton-Raphson.
 Senza entrare nei dettagli dell'algoritmo, SPICE trova la soluzione ad
 una equazione non lineare iterando l'espressione seguente finche due 
soluzioni
 non si discostino al più di un valore fissato (il che indica che è stata
 raggiunta la convergenza).
\begin_inset Formula 
\[
x^{(i+1)}=x^{(i)}-\frac{g^{(i)}}{g'^{(i)}}\]

\end_inset 


\layout Standard

Per evitare problemi di convergenza, nei casi in cui la distanza tra due
 passi successivi dell'algoritmo, SPICE utilizza una tecnica di limiting,
 applicando un coefficiente 
\begin_inset Formula \( \alpha  \)
\end_inset 

 , di valore positivo ed inferiore all'unità, al rapporto 
\begin_inset Formula \( \frac{g^{(i)}}{g'^{(i)}} \)
\end_inset 

.
 L'estensione al dominio delle matrici del metodo visto per una quantità
 scalare è immediato: per un generico circuito, l'insieme delle equazioni
 non lineari viene sostituito ad ogni iterazione con le seguenti equazioni
 lineari:
\begin_inset Formula 
\[
J\left( x^{(i)}\right) \cdot x^{(i+1)}=J\left( x^{(i)}\right) \cdot 
x^{(i)}-g\left( x^{(i)}\right) \]

\end_inset 

in cui 
\begin_inset Formula \( J\left( x^{(i)}\right)  \)
\end_inset 

 è lo jacobiano calcolato in corrispondenza della soluzione ottenuta 
all'iterazi
one precedente.
 In questo ca la matrice delle conduttanze ed il vettore dei termini noti
 si possono escprimere come:
\layout Standard


\begin_inset Formula 
\[
A=J\left( x^{(i)}\right) +G\]

\end_inset 


\layout Standard


\begin_inset Formula 
\[
b=J\left( x^{(i)}\right) \cdot x^{(i)}-g\left( x^{(i)}\right) +C\]

\end_inset 

Anche questo sistema (ora lineare) viene risolto attraverso il procedimento
 di fattorizzazione LU.
 
\layout Subsection

Soluzione in funzione del tempo
\layout Standard

Qualora sia richiesta una soluzione in funzione del tempo (analisi in 
transitori
o) SPICE si trova a dover calcolare tensioni (e correnti) nel circuito per
 ogni istante di tempo.
 Questo tipo di analisi è la più complessa che SPICE esegue.
 Questo tipo di analisi richiede l'utilizzo di algoritmi di integrazioe
 nuemrica.
 SPICE3 utilizza due algoritmi differenti: il metodo trapezoidale e i metodi
 di Gear di ordine 2-6.
 Ambedue gli algoritmi approssimamo solo il valore esatto dell'integrale,
 ed ad ogni passo introducono un errore locale.
 Questi algoritmi hanno, in genere, problemi di convergenza in casi 
particolari
 che in questa introduzione non interessano (si veda un testo di analisi
 numerica).
 Per risolvere (o alleviare) questi problemi di convergenza SPICE3 introduce
 dei parametri che 
\begin_inset Quotes eld
\end_inset 

modificano
\begin_inset Quotes erd
\end_inset 

 alcune caratteristiche dell'algoritmo per adattarlo al tipo di circuito
 che si sta simulando.
\layout Subsection

Conclusioni 
\layout Standard

SPICE3 utilizza una serie di algoritmi che si sono dimostrati validi nella
 ricoluzione dei circuiti elettronici.
 SPICE3 non è una scatola nera, a cui si passa un circuito e se ne legge
 la risposta, è un potente strumento di simulazione che deve essere 
\begin_inset Quotes eld
\end_inset 

accordato
\begin_inset Quotes erd
\end_inset 

 sul circuito in esame.
 Molti problemi di convergenza si possono risolvere effettuando un tuning
 dei molti parametri che governano il comportamento degli algoritmi numerici.
 Molto probabilmente i sumulatori commerciali hanno implementato algoritmi
 migliori, con il passare del tempo, dopotutto in questi anni la ricerca
 è andata avanti, per cui le loro caratteristiche di convergenza potrebbero
 superiori.
 In ogni caso gli algoritmi implementati in SPICE3 sono più che buoni.
 
\layout Standard

Questi argomenti sono stati tratti dal testo: Guida a Spice di Andrei 
Vladimires
cu, edito dalla McGraw Hill.
 Il testo contiene una approfondita descrizione degli algoritmi utilizzati
 da SPICE2, SPICE3 e PSpice e delle opzioni disponibili.
\layout Section

Commenti al codice sorgente di SPICE3f4(5)
\layout Standard

SPICE3f4(5) viene distributo dall'Università della California di Berkekely
 in un pacchetto tar compresso con gzip organizzato in directory separate
 per funzione.
 La directory che contiene il codice sorgente è la 
\family typewriter 
\series bold 
src
\family default 
\series default 
.
 La directory 
\family typewriter 
\series bold 
src
\family default 
\series default 
 è a sua volta organizzata in sottodirectory, ciascuna contenente una parte
 del simulatore.
 L'organizzazione della 
\family typewriter 
\series bold 
src
\family default 
\series default 
 è la seguente: 
\layout Itemize


\family typewriter 
\series bold 
bin
\family default 
\series default 
: Questa directory contiene il codice delle procedure principali di 
:Spice3f4(5)

 e Nutmeg (Nutmeg èil postprocessore di SPice per la visualizzazione dei
 dati).
 Oltre questi due sorgenti si trovano anche alcuni programmi di utilità.
\layout Itemize


\family typewriter 
\series bold 
include
\family default 
\series default 
: In questa directory sono stati inseriti gli include file principali 
:relativi

 al codice del simulatore.
 Questi file contengono le principali definizioni delle strutture dati 
utilizzat
e da SPice e Nutmeg.
\layout Itemize


\family typewriter 
\series bold 
lib
\family default 
\series default 
: Il vero e proprio codice sorgente del simulatore.

 La directory è organizzata in sottodirctory che contengono ciascuna una
 parte del codice del simulatore.
 La suddivisione è fatta per funzioni.
\layout Itemize


\family typewriter 
makedefs
\family default 
: il 

\begin_inset Quotes eld
\end_inset 

makefile
\begin_inset Quotes erd
\end_inset 


\layout Itemize


\family typewriter 
\series bold 
unsuppo
\family default 
\series default 
: Questa directory contiene il codice sorgente relativo ad una vecchia 
:analisi

 presente in spice2 e non presente in SPICE3 ed il codice relativo ad una
 versione di spice pensata per girare come demone.
 Il codice in questa directory è considerato obsoleto.
\layout Standard

La directory 
\family typewriter 
\series bold 
lib
\family default 
\series default 
 è quella che interessa di più, poichè contiene il vero e proprio codice
 sorgente di SPICE3.
 Anche essa è a sua volta divisa in subdirectory, ciscuna contenente una
 parte di codice:
\layout Itemize


\family typewriter 
\series bold 
ckt
\family default 
\series default 
: Questa directory contiene il codice sorgente relativo alle varie analisi

 che il simulatore effettua sul circuito ed il codice di relativo alla 
costruzio
ne del circuito.
\layout Itemize


\family typewriter 
\series bold 
cp
\family default 
\series default 
: SPICE3 dialoga con l'utente attraverso una interfaccia basata dulla C

 Shell.
 Questa directory contiene i file che costruiscono e gestiscono questa 
interfacc
ia.
 A detta dei programmatori di Berkeley, non è il massimo della pulizia.
\layout Itemize


\family typewriter 
\series bold 
dev
\family default 
\series default 
: Questa directory contiene il codice sorgente dei modelli dei dispositivi

 disponibili in SPICE3.
\layout Itemize


\family typewriter 
\series bold 
fte
\family default 
\series default 
: Front End to Simulator Interface.

 Routine che gestiscono le strutture dati, le analisi ed i database dei
 vettori di SPICE3.
 Anche questo codice (come quello della shell) andrebbe rivisto ampiamente.
\layout Itemize


\family typewriter 
\series bold 
hlp
\family default 
\series default 
: Questa directory raggruppa le routine relative alla funzione di help.

\layout Itemize


\family typewriter 
\series bold 
inp
\family default 
\series default 
: In questa directory si trovano le routine di parsing dell'input.

 Sono le routine che traducono il file contenente la netlist nella matrice
 del circuito e riempiono le strutture dati per le analisi ed i grafici.
 Queste routine lavorano in stretta connessione con quelle in 
\family typewriter 
\series bold 
fte
\family default 
\series default 
 ed in 
\family typewriter 
\series bold 
ckt
\family default 
\series default 
.
\layout Itemize


\family typewriter 
makedefs
\family default 
: Il solito makefile.

\layout Itemize


\family typewriter 
\series bold 
mfb
\family default 
\series default 
: MFB è un pacchetto per la gestione dell'interfaccia a terminale e per

 la stampa di grafici su display a caratteri.
\layout Itemize


\family typewriter 
\series bold 
misc
\family default 
\series default 
: Questa directory raggruppa funzioni di varia utilità, non specifiche di

 SPICE.
\layout Itemize


\family typewriter 
\series bold 
ni
\family default 
\series default 
: Questa directory raggruppa le routine per l'intergazione numerica 
:utilizzate

 da SPICE: Algoritmo trapezoidale e algoritmo di GEAR.
\layout Itemize


\family typewriter 
\series bold 
sparse
\family default 
\series default 
: Codice per la gestione delle matrici sparse.

 Questo pacchetto viene anche di stribuito separatamente con tanto di 
documentaz
ione presso il sito www.netlib.org.
 SPICE rappresenta il circuito attraverso una matrice sparsa (contenente
 le conduttanze lineari).
 
\layout Standard

La directory 
\family typewriter 
\series bold 
dev
\family default 
\series default 
 contiene il codice dei dispositivi implementati in SPICE3, ciascun 
dispositivo
 è contenuto in una directory propria e non ha relazioni con gli altri 
dispositi
vi.
 I dispositivi sono implementati seguendo uno standard ben preciso la cui
 documentazione è disponibile all'Università di Berkeley.
 La struttura è:
\layout Itemize


\family typewriter 
\series bold 
asrc
\family default 
\series default 
: Sorgente di tensione/corrente arbitratria.

 Questo dispositivo serve a modellare parti di circuito rappresentabili
 attraverso generatori indipendenti di funzione arbitraria.
\layout Itemize


\family typewriter 
\series bold 
bjt
\family default 
\series default 
: Modello di transistore bipolare.

 Il modello è basato su estensioni del modello di Gummell e Poon.
 Per le analisi in continua utilizza il modello di Ebers e Moll.
\layout Itemize


\family typewriter 
\series bold 
bsim1
\family default 
\series default 
, 
\family typewriter 
\series bold 
bsim2
\family default 
\series default 
,
\family typewriter 
\series bold 
 bsim3
\family default 
\series default 
: Queste directory contengono i modelli facenti parte della classe BSIM

 prodotti da Berkeley.
 I modelli BSIM sono il frutto di un lavoro di modellazione che astrae dalla
 fisica dei semiconduttori.
 La serie BSIM basa i propri paramtri su quelli che vengono definiti 
parametri
 di processo, coiè parametri caratteristici del procedimento costruttivo
 del dispositivo.
 Questi modelli soffrono di problemi di convergenza e qualche volta possono
 portare a risultati 
\begin_inset Quotes eld
\end_inset 

non fisici
\begin_inset Quotes erd
\end_inset 

.
 Il modello bsim3, nelle sue varie versione è un tentativo di restituire
 fisicità al modello.
 BSIM è l'acronimo di Berkeley's Short channel IGFET Model.
 Modello di transistor MOS (Short Channel) basato su parametri di processo,
 versione 1.
 il modello BSIM3 è attualmente lo standard industriale per i modelli MOS
 a 
\begin_inset Quotes eld
\end_inset 

canale corto
\begin_inset Quotes erd
\end_inset 

 e viene sviluppato continuamente.
 L'ultima versione del codice sorgente è disponibile presso: 
http://www-device.be
rkeley.edu/~bsim3.
\layout Itemize


\family typewriter 
\series bold 
cap
\family default 
\series default 
: Modello di condensatore lineare.

\layout Itemize


\family typewriter 
\series bold 
cccs
\family default 
\series default 
: Generatore di Corrente controllato in corrente.

\layout Itemize


\family typewriter 
\series bold 
ccvs
\family default 
\series default 
: Generatore di tensione controllato in corrente.

\layout Itemize


\family typewriter 
\series bold 
csw
\family default 
\series default 
: Interruttore controllato in corrente.

\layout Itemize


\family typewriter 
\series bold 
dio
\family default 
\series default 
: Modello di diodo.

 Modello molto semplice di diodo a giunzione.
\layout Itemize


\family typewriter 
\series bold 
disto
\family default 
\series default 
: Codice per il calcolo delle derivate parziali di alcune funzioni.

 Dovrebbe essere il codice per l'analisi della distorsione.
 
\layout Itemize


\family typewriter 
\series bold 
ind
\family default 
\series default 
: Modello di induttore lineare e di induttori mutuamente accoppiati.

\layout Itemize


\family typewriter 
\series bold 
isrc
\family default 
\series default 
: Generatore indipendente di corrente.

\layout Itemize


\family typewriter 
\series bold 
jfet
\family default 
\series default 
: Modello di transistor jfet.

\layout Itemize


\family typewriter 
\series bold 
ltra
\family default 
\series default 
: Linea di trasmissione con perdite.

 Questo modello potrebbe causare errori durante l'esecuzione del programma
 in caso di compilazione per architetture parallele.
\layout Itemize


\family typewriter 
\series bold 
mes
\family default 
\series default 
: Modello di transistor MESFET per dispositivi in GaAs, ad esempio.

\layout Itemize


\family typewriter 
\series bold 
mos1
\family default 
\series default 
, 
\family typewriter 
\series bold 
mos2
\family default 
\series default 
, 
\family typewriter 
\series bold 
mos3
\family default 
\series default 
, 
\family typewriter 
\series bold 
mos6
\family default 
\series default 
: Modelli per transistori MOS basati su parametri fisici.

 Il primo di essi è il modello di Schichmann e Hodges, il modello quadratico
 di base per i MOS.
 A differenza dei BSIM, questi modelli si basano su parametri fisici.
\layout Itemize


\family typewriter 
\series bold 
res
\family default 
\series default 
: Modello di resistore lineare.

\layout Itemize


\family typewriter 
\series bold 
sw
\family default 
\series default 
: Modello di interruttore.

\layout Itemize


\family typewriter 
\series bold 
tra
\family default 
\series default 
: Linea di trasmissione priva di perdite

\layout Itemize


\family typewriter 
\series bold 
urc
\family default 
\series default 
: Linea RC distribuita uniformemente.

 Questo modello potrebbe causare errori durante l'esecuzione del programma
 in caso di compilazione per architetture parallele.
\layout Itemize


\family typewriter 
\series bold 
vccs
\family default 
\series default 
: Generatore di corrente controllato in tensione.

\layout Itemize


\family typewriter 
\series bold 
vcvs
\family default 
\series default 
: Generatore di tensione controllato in tensione.

\layout Itemize


\family typewriter 
\series bold 
vsrc
\family default 
\series default 
: Generatore ditensione indipendente.

\layout Section

Quale SPICE3f(*) ?
\layout Standard

L'Università di Berkeley ha abbandonato il supporto del software SPICE3
 qualche anno fa.
 L'ultima release 
\begin_inset Quotes eld
\end_inset 

ufficiale
\begin_inset Quotes erd
\end_inset 

 è quella denominata spice3f4.
 Tale versione è disponibile presso www-cad.eecs.berkeley.edu.
 Questa versione è stata successivamente rivista poiche' conteneva errori
 nel codice della gestione delle matrici e nel codice di calcolo.
 Pur non supportando più il software, l'Università di Berkekely ha rilasciato
 delle patch in modo clandestino, inserendole in siti web più o meno noti.
 Lo spice risultante doveva chiamarsi 3f5, ma in relatà spice3f5 pare sia
 una software venduto da Berkeley attraverso il suo Industry Liason Program.
 In ogni caso le patch sono arrivate su Internet e sono state applicate,
 La versione più recente di spice3f4 disponibile è reperibile presso 
l'archivio
 di Linux del Sunsite dell'Università della North Carolina 
(ftp://sunsite.unc.edu).
 
\layout Standard

Una versione ampliata e più recente di SPICE3, denominata da Berkeley 
ufficialme
nte sèpice3f5, si trova ll'interno del pacchetto CIDER, un simulatore di
 dispositivi rilasciato pubblicamente e reperibile allo sito in cui si trova
 la distribuzione 
\begin_inset Quotes eld
\end_inset 

ufficiale
\begin_inset Quotes erd
\end_inset 

 di SPICE.
 Questo spice supporta il multiprocessing e pare avere alcuni bug corretti.
 
\layout Standard

Questo SPICE sembra essere il canditato ideale per il progetto.
 
\layout Subsection

Spice per Linux
\layout Standard

Gli utenti del modno Linux hanno portato SPICE su questa piattaforma 
correggendo
 man mano i bug che gli si presentavano davanti.
 Per questo motivo la versione Spice3f5 presente in CIDER non può essere
 utilizzata così come è, è necessario applicarle le patch che nel frattempo
 hanno corretto i bug nella versione 3f4/5 per Linux.
 Una volta applicate queste patch si divrebbe disporre di un simulatore
 abbastanza funzionale ed aggiornato su cui cominciare a lavorare.
 
\layout Quotation

In questi giorni ho fatto proprio questo, modificare il codice di spice3f5
 
\begin_inset Quotes eld
\end_inset 

aggiornandolo
\begin_inset Quotes erd
\end_inset 

 con le patch prese dall'ultima versione di spiceper linux 
spice3f5sfix.tar.gz.
 Adesso il simulatore funziona abbastanza bene ma alcuni dispositivi devono
 ancora essere convertiti per funzionare quando il simulatore è compilato
 in modalità multiprocessore.
 In tutto questo è necessario prevedere una estesa ed approfondita fase
 di debugging.
 PN
\layout Section

Overview del progetto NG SPICE
\layout Standard

Quando sarà completato, NG-SPICE dovrebbe avere una architettura simile
 a quella della figura.
\begin_float fig 
\layout Caption

Architettura NG-SPICE
\layout Standard
\align center 

\begin_inset Figure size 416 245
file ng-archi.eps
width 3 70
flags 9

\end_inset 


\end_float 
Come si può vedere, il core di psice3f5, viene potenziato includendo nuovi
 modelli, nuove analisi, una interfaccia per gestire il parallelismo e delle
 API estrse per la comunicazione verso l'esterno.
 Le API dovranno principalmente il linking di nuovi modelli di dispositivo
 al simulatore ed esporre levariabili e le strutture interne attraverso
 un protocollo permettendo a programmi esterni di leggerle ed eventualmente
 modificarle.
 Le API estese costiuiscono un sistema molto comodo per potenziare il 
simulatore
 senza il bisogno di dover agire sul core stesso.
 Il framework, composto di uno schmatic entry tool ed di un wavefors viewer
 permette l'editing grafico del circuito e la visione delle forme d'onda
 in uscita.
 Da notare che il framework può interfacciarsi con un database contenente
 le modelcard dei componenti commerciali, permettendone una agevole sezione
 da parte dell'utente.
\layout Standard

Questa architettura è ancora molto confusa, si deve ancora stabilire 
l'effettiva
 possibilità di estendere le API di Spice ed il protocollo di comunicazione.
 Versioni avanzate di Spice permettono ciò (vedi XSPICE) per cui, almeno
 in linea teorica, il problema è risolvibile.
 Il DBMS (DataBase Management System) previsto è il PostgreSQL, 
sufficientemente
 potente e versatile per lo scopo.
\layout Section

Incremento delle prestazioni del simulatore
\layout Standard

La prima grande linea direttrice è l'incremento delle prestazioni del 
simulatore.
 Lo sviluppo di codice lungo questa linea dovrebbe portare ad ottenere un
 simulatore con caratteristiche vicine a quelli commerciali.
 L'incremento delle prestazioni e delle capacità riguarda strettamente il
 codice dei dispositivi e delle analisi, e richiede una buona conoscenza
 della struttura di SPICE3.
\layout Subsection

Breve termine: inserimento nuovi modelli.
\layout Standard

Gli obiettivi a breve temrine lungo questa linea direttrice sono:
\layout Itemize

Introduzione in SPICE3 dei nuovi modelli di dispositivi a semiconduttore:
 Alcuni centri di ricerca hanno sviluppato dei modelli per SPICE3F4(5) il
 cui codice sorgente è liberamente distribuibile su Internet e che sono
 facilmente inseribili nel simulatore.
 L'inserimento di questi modelli richiede semplici modifiche al codice 
sorgente
 di SPICE3 ed alla interfaccia dei modelli stessi.
 Si trattra di fare una avveduta opera di taglia e cuci.
 
\layout Subsection

Medio termine: Modifiche al sorgente di SPICE3.
\layout Standard

Nel medio termine, facendo tesoro delle conoscenze acquisite nell'inserimento
 dei modelli, si dovrebbe modificare leggermente l'interfaccia di inserimento
 dei modelli per renderla più flessibile:
\layout Itemize

Supporto per il caricamento dinamico dei modelli in base alle effettive
 necessità del circuito.
 Se un circuito non usa i mesfet, non c'e' alcuna ragione per caricare il
 suo modello.
 Questo passo prevede la modifica di una sostanziosa parte del codice di
 interfaccia verso i dispositivi: la directory 
\family typewriter 
\series bold 
inp
\family default 
\series default 
.
 In questo modo si riduce l'occupazione di memoria da parte del simulatore
 stesso.
\layout Itemize

Adattamento dei modelli non sviluppati specificamente per SPICE di alcuni
 dispositivi fondamentali.
 SPICE3 soffre di un problema di inaccurateza dei modelli quando deve 
simulare
 circuiti analogici in potenza.
 Alcuni grossi gruppi industriali (Philips, Honeywell, etc.) hanno sviluppato
 modelli di bjt e mos adatti a questi scopi.
 Purtroppo questi modelli non sono scritti per SPICE3f, per cui una modifica
 dell'interfaccia è necessaria.
 Il modello principale da inserire è il modello MEXTRAM della Philips, 
pansato
 per simulazioni analogiche.
\layout Itemize

Interfaccia verso i simulatori PISCES e CIDER: Questi simulatori incrementano
 le prestazioni di SPICE permettendogli di simulare dispositivi 
caratterizzati
 da parametri tipici del processo costruttivo (droganti, struttura del 
dispositi
vo, etc.).
 Pisces e CIDER sono prevedono già una interfaccia verso SPICE, serve 
solamente
 un poco di debugging e di modifica del codice di interfaccia di SPICE3.
\layout Itemize

Ottimizzazione del codice: miglioramento delle caratteristiche risolutive
 di SPICE3 attraverso l'introduzione di nuovi algoritmi, lasciando l'utente
 libero di scegliere a proprio piacimento il trade-off accuratezza della
 soluzione / tempo di calcolo.
 L'utilizzo di librerie numeriche a precisione variabile (gmp, etc.) 
l'aggiunta
 di nuovi algoritmi di integrazione, dovrebbe migliorare le caratteristiche
 di convergenza del simulatore.
\layout Subsection

Lungo termine: Introduzione di nuove caratteristiche.
\layout Standard

In questa fase si aggiunge del codie sorgente al simulatore.
 Questa fase richiede una profonda compresione del funzionamento di SPICE3,
 per cui è l'ultima:
\layout Itemize

Inclusione di nuove analisi: SPICE3 manca di tre analisi fondamentali in
 un simulatore circuitale: l'Analisi MonteCarlo, che tiene in conto le 
tolleranz
e di componenti e le modella come variabili aleatorie, l'analisi Worst Case,
 che tenendo in conto le suddette tolleranze calcola il caso peggiore di
 funzionamento del circuito e l'analisi parametrica, che itera l'analisi
 del circuito al variare di uno o più parametri.
 Una altra analisi molto importante dal punto di vista teorico è l'analisi
 di rete, che permette di calcolare i parametri h,g,z,y,t,s etc.
 di una rete due porte (eventualmente n-porte).
\layout Itemize

Code Level Modeling: attraverso il meccanismo di caricamento/scaricamento
 dei m odelli, si dovrebbe implentare una API (o EAPI, Extended API) che
 permetta a chi è interessato di sviluppare nuovo modelli di interfacciarli
 con il simulatore in modo standard.
 
\layout Itemize

Analog Behavioral Device: Il dispositivo B di SPICE3, un generatore descritto
 da una funzione arbitraria, potrebbe essere esteso per includere dispositivi
 digitali e per includere nella sua definizione i costrutti IF THEN ELSE,
 per renderlo più flessibile.
\layout Itemize

Motore di ottimizzazione: implementare in SPICE3 un motore di ottimizzazione
 capace di ottimizzare un parametro in funzione degli altri (anche più 
parametri
).
 Si dovrebbe cercare in Internet un motore di ottimizzazione in fornma di
 codice sorgente e introdurlo in SPICE3.
\layout Itemize

Extended API: Set di API per interfacciarsi al simulatore via codice e via
 protocollo di comunicazione.
\layout Section

Interfaccia grafica
\layout Standard

Il termine interfaccia grafica è un poco riduttivo, in realtà si dovrebbe
 trattare di un framework, un ambiente integrato per la simulazione, la
 seconda grande linea direttrice.
 Anche in questo caso esiste una distinzione in tre 
\begin_inset Quotes eld
\end_inset 

termini
\begin_inset Quotes erd
\end_inset 

: breve, medio e lungo.

 Il framework dovrebbe essere il più possibile separato dal simulatore stesso
 e comnucare con esso tramite file oppure, se possibile, tramite una 
interfaccia
 
\begin_inset Quotes eld
\end_inset 

CORBA
\begin_inset Quotes erd
\end_inset 

 (ammesso che sia possibile usare CORBA per questo).
 L'ambiente grafico proposto è GNOME (GNU Network Object Model Environment).
 GNOME offre le procedure necessarie al drag and drop ed alla comunicazione
 traii processi, utili al framework.
 Il framework, ove possibile, dovrebbe utilizzare il più possibile pachetti
 GNOME sviluppati da altri, cercandoli di estendere attraverso l'utilizzo
 dei plu-in.
 In questo modi si riduce drasticamente il numero di riche di codice da
 scrivere e lo sforzo di debugging.
\layout Subsection

Breve termine: Schematic Entry e visualizzatore uscite:
\layout Standard

Le prime sezioni da realizzare del framework sono l'editor di schematici
 (dei circuiti) ed un programma che permetta di visualizzare le uscite in
 modo grafico.
 Questi due pacchetti sono i principali da scrivere.
 I
\layout Itemize

Schematic Entry: Deve permettere l'editing gerarchico dei circuiti (il che
 implica l'espansione dei sottocircuiti e la presenza di layer multipli),
 la possibilità di agganciare label ai componenti ed ai fili (ruotate 
0-90-270-3
60 gradi) con font arbitrario.
 Ogni componente deve poter essere 
\begin_inset Quotes eld
\end_inset 

aperto
\begin_inset Quotes erd
\end_inset 

 mostrando la sua model card.
 Questa interfaccia dovrebbe essere estensibile tramitre il concetto di
 plug-in.
 Per esempio, si dovrebbe poter prevedere che un utente voglia costruire
 una plug-in per la generazione di forme d'onda PWL (piece-wise linear),
 un'altro quello per le forme d'onda modulate in frequenza, etc.
 Lo schematic entry dovrebbe potersi interfacciare con un DBMS (DataBase
 Management System) che contenga le tabelle relative ai componenti 
disponibili
 (transitor, etc.) in modo che possano essere selezionati facilmente.
 Lo schematic entry dovrebe poi estrarre la netlist, selezionare le opzioni
 di simulazione, etc.
 Insomma deve essere il vero e proprio fulcro del sistema di simulazione.
 Se si vuole rendere disponibile un editor di testi, si potrebbe unsare
 quelli già presenti, magari estesi con delle plug-in.
\layout Itemize

Waveform Viewer: Questa versione migliorata di Nutmgeg non dovrebbe fare
 altro che permettere di comporre grafici che contengono le uscite di SPICE.
 SPICE lavora attraverso vettori, per cui non dovrebbe essere difficile
 importarli nel visualizzatore e con un poco di opzioni 
\begin_inset Quotes eld
\end_inset 

da grafico
\begin_inset Quotes erd
\end_inset 

 renderli in una pagina pronta per la stampa.
 Questo programma dovrebbe essere diviso in due parti: una parte di analisi
 simile al probe di PSpice, ed una parte che costruisca grafici di qualità
 pronti per la stampa su una stampante posscript, possibilemente permettendo
 di combinarne un certo numero su di una singola pagina.
\layout Subsection

Medio termine: Aggiunta di moduli 
\layout Standard

Inserimento di moduli nel framework per il supporto dei simulatori PISCES
 e CIDER.
 Miglioramento del codice scritto.
 
\layout Subsection

Lungo termine: ?
\layout Standard

Il framework è un concetto che si evolve anche in base alle esigenze di
 chi lo usa, per cui a lungo termine non si può dire molto.
 Vediamo cosa succede...
\layout Section

Documentazione
\layout Standard

La terza grande e ultima linea direttrice è la scrittura di una 
documentazione
 per l'utilizzo del simulatore.
 La documentazione dovrebbe essere scritta in un linguaggio che permetta
 la facile conversione nei linguaggi più usati per i sistemi di help e per
 la distribuxione della documentazione:
\layout Itemize

HTML: il sistema di help dello GNOME usa l'html, per i suoi docimenti
\layout Itemize

INFO: il sistema ufficiale della GNU per la documentazione è l'info.
\layout Itemize

PDF: Il sistema oramai più diffuso per lo scambio di documenti.
\layout Standard

La documentazione necessaria per un simulatore circuitale è molto estesa,
 oltrea ad una guida alle funzione ed una guida all'uso, sono necessarie
 delle guide contenenti esempi.
 Se intendiamo poi rilasciare una documentazione sul funzionamento interno
 del simulatore, dovremo anche prevedere dei manuali di programmazione.
 I manuali necessari sono:
\layout Itemize

User Manual: Descrizione del simulatore con esempi di utilizzo dello stesso
 e tutorial.
 
\layout Itemize

Reference Manual: Descrizione dettagliata dei comandi e delle opzioni del
 simulatore.
 - 
\layout Itemize

Modeling Manual: Descrizione dettagliata dell'utilizzo dei modelli dei 
dispositi
vi a semiconduttore ed esempi di utilizzo.
 
\layout Standard

Altri manuali possono essere scritti o meno in base alle necessità.
 tenete presente che la manualistica è l'unica parte del progetto che può
 permetterci un minimo ritorno economico, qualori sia stampata da una casa
 editrice o qualore decidiamo di non renderla pubblica..
 La manualistica per un sistema di questo tipo è fondameentale, pensate
 solamente alle frustrazioni avute tentando di simulare un circuito con
 lo spice di Berkeley, e pensate che è tuttora usato in ambito di ricerca
 con successo.
 Un motivo ci sarà
\layout Section

Legal Mumbo Jumbo
\layout Standard

Danilo scaricati!
\the_end

Partial thread listing: