ELLA (programming language)
{{Short description|Programming language}}
{{Use dmy dates|date=April 2021}}
{{Infobox software
|name = ELLA
|logo =
|logo alt =
|logo caption =
|screenshot =
|screenshot alt =
|caption =
|author =
|developer = Royal Signals and Radar Establishment
|released = {{Start date and age|1986}}
|latest release version =
|latest release date =
|programming language = ALGOL 68RS
|operating system = VMS
|platform = ICL 2900 Series, Multics, VAX
|size =
|language = English
|genre = Hardware description language
|license = public domain (parts)
|website =
}}
ELLA is a hardware description language and support toolset, developed in the United Kingdom by the Royal Signals and Radar Establishment (RSRE) during the 1980s and 1990s, which also developed the compiler for the programming language, ALGOL 68RS, used to write ELLA.
ELLA has tools to perform:
- Design transformation
- Symbolic simulations
- Formal verification
ELLA is a winner of the 1989 Queen's Award for Technological Achievement.
Sample
Sample originally from ftp://ftp.dra.hmg.gb/pub/ella{{dead link|date=May 2015}}, 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]
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
References
{{Refbegin}}
- {{cite book |last1=Morison |first1=J. D. |last2=Clarke |first2=A. S. |date=1 October 1993 |title=Ella 2000: A Language for Electronic System Design |publisher=McGraw Hill |isbn=978-0077078218}}
- {{Cite conference |last1=Barringer |first1=H. |last2=Gough |first2=G. |last3=Monahan |first3=B. |last4=Williams |first4=A. |last5=Arcus |first5=M. |last6=Armstrong |first6=A. |last7=Hill |first7=M. |year=1995 |doi=10.1109/ASPDAC.1995.486387 |title=A design and verification environment for ELLA |work=Proceedings of ASP-DAC '95, CHDL '95, VLSI '95 with EDA Technofair |conference=Design Automation Conference (DAC) 1995 |pages=685–690 |isbn=4-930813-67-0}}
- {{Cite conference |last1=Morison |first1=J. D. |last2=Peeling |first2=N. E. |last3=Thorp |first3=T. L. |last4=Whiting |first4=E. V. |year=1987 |doi=10.1145/37888.38006 |title=EASE: A Design Support Environment for the HDDL ELLA |work=24th Conference on Design Automation |conference=Design Automation Conference (DAC) 1987 |pages=741–749 |isbn=0-8186-0781-5}}
{{Refend}}
External links
- [http://cs.nyu.edu/courses/spring02/G22.3130-001/ella/ ELLA source code] including the ALGOL 68RS translator
{{Programmable Logic}}
{{ALGOL programming}}
{{Authority control}}
Category:Hardware description languages
Category:History of computing in the United Kingdom
{{Prog-lang-stub}}