Vai al contenuto

ELLA (linguaggio di programmazione)

Da Wikipedia, l'enciclopedia libera.
Versione del 2 dic 2024 alle 01:42 di Fede255 (discussione | contributi) (Aggiunta template linguaggio di programmazione)
ELLA
linguaggio di programmazione
AutoreRoyal Signals and Radar Establishment
Data di origine1986
Ultima versione3.6.0
UtilizzoLinguaggio di descrizione dell'hardware
Implementazione di riferimento
LinguaALGOL 68RS
LicenzaPubblico dominio (parzialmente)

ELLA è un linguaggio di descrizione hardware e un set di strumenti di supporto, sviluppato nel Regno Unito dal Royal Signals and Radar Establishment (RSRE) durante gli anni '80 e '90, che ha anche sviluppato il compilatore per il linguaggio di programmazione ALGOL 68RS, utilizzato per scrivere ELLA.

ELLA fornisce strumenti per eseguire:

ELLA ha vinto il Queen's Award for Technological Achievement nel 1989.

Esempio

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

Riferimenti

  • Ella 2000: A Language for Electronic System Design, McGraw Hill, 1º October 1993, ISBN 978-0077078218.
  • A design and verification environment for ELLA, in Design Automation Conference (DAC) 1995, Proceedings of ASP-DAC '95, CHDL '95, VLSI '95 with EDA Technofair, 1995, pp. 685–690.
  • EASE: A Design Support Environment for the HDDL ELLA, in Design Automation Conference (DAC) 1987, 24th Conference on Design Automation, 1987, pp. 741–749.

Collegamenti esterni