ELLA (programming language)

From Wikipedia, the free encyclopedia
Jump to: navigation, search

ELLA is a Hardware description language and support toolset. Developed by the Royal Signals and Radar Establishment during the 1980s and 1990s.

Includes tools to perform:

  • design transformation
  • symbolic simulations
  • formal verification

ELLA is a winner of the 1989 Queen's Award for Technological Achievement.


Sample originally from ftp://ftp.dra.hmg.gb/pub/ella[dead link] - Public release.

Code for matrix multiplication hardware design verification:

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]

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:
  LET transposed_matrix2 = TRANSPOSE matrix2.
OUTPUT [INT i = 1..n][INT j = 1..p]

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) ->
  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)).
    MULT_234 (m1, m2)

COM test: just displaysignal MOC


  • Morison, J. D.; Clarke, A. S. (1993). Ella 2000: A Language for Electronic System Design. McGraw Hill. ISBN 0-07-707821-7. 
  • Barringer, H.; Gough, G.; Monahan, B.; Williams, A.; Arcus, M.; Armstrong, A.; Hill, M. (1995). A design and verification environment for ELLA. DAC'95. Proceedings of ASP-DAC'95/CHDL'95/VLSI'95 with EDA Technofair. pp. 685–690. ISBN 4-930813-67-0. doi:10.1109/ASPDAC.1995.486387. 
  • Morison, J. D.; Peeling, N. E.; Thorp, T. L.; Whiting, E. V. (1987). EASE: A Design Support Environment for the HDDL ELLA. DAC'87. 24th Conference on Design Automation. pp. 741–749. ISBN 0-8186-0781-5. doi:10.1109/DAC.1987.203332. 

External links[edit]