From Wikipedia, the free encyclopedia

ELLA
Developer(s) Royal Signals and Radar Establishment
Initial release1986; 38 years ago (1986)
Written in ALGOL 68RS
Operating system VMS
Platform ICL 2900 Series, Multics, VAX
Available inEnglish
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:

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], 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. Proceedings of ASP-DAC '95, CHDL '95, VLSI '95 with EDA Technofair. 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. 24th Conference on Design Automation. pp. 741–749. doi: 10.1145/37888.38006. ISBN  0-8186-0781-5.

External links


From Wikipedia, the free encyclopedia

ELLA
Developer(s) Royal Signals and Radar Establishment
Initial release1986; 38 years ago (1986)
Written in ALGOL 68RS
Operating system VMS
Platform ICL 2900 Series, Multics, VAX
Available inEnglish
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:

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], 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. Proceedings of ASP-DAC '95, CHDL '95, VLSI '95 with EDA Technofair. 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. 24th Conference on Design Automation. pp. 741–749. doi: 10.1145/37888.38006. ISBN  0-8186-0781-5.

External links



Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook