ELLA (linguaggio di programmazione)
Aspetto
ELLA linguaggio di programmazione | |
---|---|
Autore | Royal Signals and Radar Establishment |
Data di origine | 1986 |
Ultima versione | 3.6.0 |
Utilizzo | Linguaggio di descrizione dell'hardware |
Implementazione di riferimento | |
Lingua | ALGOL 68RS |
Licenza | Pubblico dominio (parzialmente) |
ELLA è un linguaggio di descrizione hardware[1] e un set di strumenti di supporto, sviluppato nel Regno Unito dal Royal Signals and Radar Establishment (RSRE) durante gli anni '80 e '90 del 900. RSRE ha sviluppato anche il compilatore per il linguaggio di programmazione ALGOL 68RS, utilizzato per sviluppare ELLA.
ELLA adotta un approccio alla modellazione dell'hardware di tipo strutturale[2] e fornisce strumenti per eseguire trasformazioni di programma, simulazione, sintesi e verifica formale[3].
ELLA ha vinto il Queen's Award for Technological Achievement nel 1989[senza fonte].
Esempio
[modifica | modifica wikitesto]Codice per la verifica della descrizione hardware per un moltiplicatore di matrici:
MAC ZIP = ([INT n]TYPE t: vector1 vector2) -> [n][2]t: [INT k = 1..n](vector1[k], vector2[k]). MAC TRANSPOSE = ([INT n][INT m]TYPE t: matrix) -> [m][n]t: [INT i = 1..m] [INT j = 1..n] matrix[j][i]. MAC INNER_PRODUCT{FN * = [2]TYPE t -> TYPE s, FN + = [2]s -> s} = ([INT n][2]t: vector) -> s: IF n = 1 THEN *vector[1] ELSE *vector[1] + INNER_PRODUCT {*,+} vector[2..n] FI. MAC MATRIX_MULT {FN * = [2]TYPE t->TYPE s, FN + = [2]s->s} = ([INT n][INT m]t: matrix1, [m][INT p]t: matrix2) -> [n][p]s: BEGIN LET transposed_matrix2 = TRANSPOSE matrix2. OUTPUT [INT i = 1..n][INT j = 1..p] INNER_PRODUCT{*,+}ZIP(matrix1[i],transposed_matrix2[j]) END. TYPE element = NEW elt/(1..20), product = NEW prd/(1..1200). FN PLUS = (product: integer1 integer2) -> product: ARITH integer1 + integer2. FN MULT = (element: integer1 integer2) -> product: ARITH integer1 * integer2. FN MULT_234 = ([2][3]element:matrix1, [3][4]element:matrix2) -> [2][4]product: MATRIX_MULT{MULT,PLUS}(matrix1, matrix2). FN TEST = () -> [2][4]product: ( LET m1 = ((elt/2, elt/1, elt/1), (elt/3, elt/6, elt/9)), m2 = ((elt/6, elt/1, elt/3, elt/4), (elt/9, elt/2, elt/8, elt/3), (elt/6, elt/4, elt/1, elt/2)). OUTPUT MULT_234 (m1, m2) ). COM test: just displaysignal MOC
Note
[modifica | modifica wikitesto]- ^ J.D. Morison e A.S. Clarke, Ella 2000: A Language for Electronic System Design, McGraw Hill, 1993, ISBN 978-0077078218.
- ^ J. Mermet, P. Marwedel, F.J. Ramming, C. Newton, D. Borrione e C. Lefaou, Three decades of hardware description languages in Europe, in Journal of Electrical Engineering and Information Science, vol. 3, n. 6, 1998, pp. 700-723.
- ^ H. Barringer, G. Gough, B. Monahan, A. Williams, M. Arcus, A. Armstrong e M. Hill, A design and verification environment for ELLA, Design Automation Conference (DAC) 1995, 1995, pp. 685–690, DOI:10.1109/ASPDAC.1995.486387, ISBN 4-930813-67-0.
Collegamenti esterni
[modifica | modifica wikitesto]- Codice sorgente ELLA incluso il traduttore ALGOL 68RS. Archiviato il 18 novembre 2009 in Internet Archive.