ELLA (programming language)

ELLADeveloper(s)| Royal Signals and Radar Establishment

|

Initial release| 1986; 40 years ago (1986)
Written in| ALGOL 68RS
Operating system| VMS
Platform| ICL 2900 Series, Multics, VAX
Available in| English
Type| Hardware description language
License| public domain (parts)

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[|permanent dead link|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]
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

* Morison, J. D.; Clarke, A. S. (1 October 1993). Ella 2000: A Language for Electronic System Design. McGraw Hill. ISBN 978-0077078218.
* Barringer, H.; Gough, G.; Monahan, B.; Williams, A.; Arcus, M.; Armstrong, A.; Hill, M. (1995). "A design and verification environment for ELLA". Design Automation Conference (DAC) 1995. pp. 685–690. doi:10.1109/ASPDAC.1995.486387. ISBN 4-930813-67-0.
* Morison, J. D.; Peeling, N. E.; Thorp, T. L.; Whiting, E. V. (1987). "EASE: A Design Support Environment for the HDDL ELLA". Design Automation Conference (DAC) 1987. pp. 741–749. doi:10.1145/37888.38006. ISBN 0-8186-0781-5.

## External links

* ELLA source code including the ALGOL 68RS translator

* v
* t
* e

Programmable logic

Concepts|

* ASIC
* SoC
* FPGA
* Logic block
* CPLD
* EPLD
* PLA
* PAL
* GAL
* PSoC
* Reconfigurable computing
* Xputer
* Soft microprocessor
* Circuit underutilization
* High-level synthesis
* Hardware acceleration

Languages|

* Verilog
* A
* AMS
* VHDL
* AMS
* VITAL
* SystemVerilog
* DPI
* SystemC
* AHDL
* Handel-C
* PSL
* UPF
* PALASM
* ABEL
* CUPL
* OpenVera
* C to HDL
* Flow to HDL
* MyHDL
* JHDL
* ELLA

Companies|

* Accellera
* Actel
* Achronix
* AMD
* Aldec
* Atmel
* Cadence
* Cypress
* Duolog
* Forte
* Intel
* Altera
* Lattice
* National
* Mentor Graphics
* Microsemi
* Signetics
* Synopsys
* Magma
* Virage Logic
* Texas Instruments
* Tabula
* Xilinx

Products|

| Hardware|

* iCE
* Stratix
* Virtex

|

Software|

* Intel Quartus Prime
* Xilinx ISE
* Xilinx Vivado
* ModelSim
* VTR
* Simulators

IP|

| Proprietary|

* ARC
* ARM Cortex-M
* LEON
* LatticeMico8
* MicroBlaze
* PicoBlaze
* Nios
* Nios II

|

Open-source|

* JOP
* LatticeMico32
* OpenCores
* OpenRISC
* 1200
* RISC-V
* Zet

* v
* t
* e

ALGOL programming

Implementations|

| Technical
standards|

* ALGOL 58
* ALGOL 60
* ALGOL 68

|

Dialects|

* ABC ALGOL
* ALCOR
* ALGOL N
* ALGOL W
* ALGOL X
* Burroughs ALGOL
* Dartmouth ALGOL 30
* DASK ALGOL
* DG/L
* Elliott ALGOL
* Executive Systems Problem Oriented Language (ESPOL)
* Kidsgrove Algol
* Mary
* S-algol, PS-algol, Napier88
* Small Machine ALGOL Like Language (SMALL)
* SMIL ALGOL

Community|

| Organizations|

| Professional
associations|

* ALCOR Group
* Association for Computing Machinery (ACM)
* International Federation for Information Processing (IFIP) IFIP Working Group 2.1

|

Business|

* Burroughs Corporation
* Elliott Brothers
* Regnecentralen

Education|

* Case Institute of Technology
* University of Edinburgh
* University of St Andrews
* Manchester University
* Massachusetts Institute of Technology (MIT)
* Society of Applied Mathematics and Mechanics (GAMM)

People|

| ALGOL 58|

* John Backus
* Hermann Bottenbruch
* Charles Katz
* Alan Perlis
* Heinz Rutishauser
* Klaus Samelson
* Joseph Henry Wegstein

|

ALGOL 60|

* Backus+
* Roland Carl Backhouse
* Friedrich L. Bauer
* Richard Bird
* Stephen R. Bourne
* Robert Dewar
* Edsger W. Dijkstra
* Andrey Ershov
* Robert W. Floyd
* Jeremy Gibbons
* Julien Green
* David Gries
* Eric Hehner
* Tony Hoare
* Katz+
* Peter Landin
* Tom Maibaum
* Conor McBride
* John McCarthy
* Carroll Morgan
* Peter Naur
* Maurice Nivat
* Perlis+
* Brian Randell
* Rutishauser
* Samelson+
* Jacob T. Schwartz
* Micha Sharir
* David Turner
* Bernard Vauquois
* Eiiti Wada
* Wegstein+
* Adriaan van Wijngaarden
* Michael Woodger
* \+ = full name and link in prior ALGOL version above

ALGOL 68|

* Bauer+
* Dijkstra+
* Gerhard Goos
* Hoare+
* Cornelis H. A. Koster
* Peter Landin
* Charles H. Lindsey
* Barry J. Mailloux
* McCarthy+
* Lambert Meertens
* Naur+
* John E. L. Peck
* Willem van der Poel
* Brian Randell
* Douglas T. Ross
* Samelson+
* Michel Sintzoff
* van Wijngaarden
* Niklaus Wirth
* Woodger+
* Nobuo Yoneda
* \+ = full name and link in prior ALGOL version above

* Hal Abelson
* Tony Brooker
* Jørn Jensen
* Ron Morrison
* John C. Reynolds

Other|

* ALGOL Bulletin
* Jensen's Device

* Category
* Category

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/ELLA (programming language). Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=ELLA_(programming_language)&oldid=272341"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template