ЭЛЛА (язык программирования)
Появление
Разработчики) | Королевские сигналы и радарное учреждение |
---|---|
Начальная версия | 1986 год |
Написано в | АЛГОЛ 68RS |
Операционная система | СМС |
Платформа | Серия ICL 2900 , Мультики , VAX |
Доступно в | Английский |
Тип | Язык описания оборудования |
Лицензия | общественное достояние (части) |
ELLA — это язык описания аппаратного обеспечения и набор инструментов поддержки, разработанный в Великобритании Королевским институтом сигналов и радиолокации (RSRE) в 1980-х и 1990-х годах, который также разработал компилятор для языка программирования ALGOL 68RS , используемого для написания ELLA.
У ELLA есть инструменты для выполнения:
- Трансформация дизайна
- Символические симуляции
- Формальная проверка
ELLA является лауреатом Королевской премии 1989 года за технологические достижения .
Образец [ править ]
Образец взят с ftp://ftp.dra.hmg.gb/pub/ella. [ мертвая ссылка ] , публичный выпуск.
Код для проверки конструкции аппаратного обеспечения умножения матриц:
MAC ZIP = ([INT n]TYPE t: вектор1 вектор2) -> [n][2]t: [INT k = 1..n](вектор1[k], вектор2[k]). MAC TRANSPOSE = ([INT n][INT m]TYPE t: матрица) -> [m][n]t: [INT i = 1..m] [INT j = 1..n] матрица[j][i]. MAC INNER_PRODUCT{FN * = [2]TYPE t -> TYPE s, FN + = [2]s -> s} = ([INT n][2]t: вектор) -> s: ЕСЛИ n = 1, ТО *вектор[1] ELSE *вектор[1] + INNER_PRODUCT {*,+} вектор[2..n] ФИ. MAC MATRIX_MULT {FN * = [2]TYPE t->TYPE s, FN + = [2]s->s} = ([INT n][INT m]t: матрица1, [m][INT p]t: матрица2) -> [n][p]s: НАЧИНАТЬ ПУСТЬ транспонированная_матрица2 = ТРАНСПОНИЗИРОВАТЬ матрицу2. ВЫХОД [INT i = 1..n][INT j = 1..p] INNER_PRODUCT{*,+}ZIP(матрица1[i],транспонированная_матрица2[j]) КОНЕЦ. Элемент TYPE = НОВЫЙ эл/(1..20), продукт = НОВЫЙ прд/(1..1200). FN PLUS = (продукт: целое число1 целое2) -> продукт: АРИФ целое1 + целое2. FN MULT = (элемент: целое число1 целое число2) -> произведение: АРИФ целое1 * целое2. FN MULT_234 = ([2][3]элемент:матрица1, [3][4]элемент:матрица2) -> [2][4]продукт: MATRIX_MULT{MULT,PLUS}(матрица1, матрица2). FN TEST = () -> [2][4]продукт: ( ПУСТЬ m1 = ((элт/2, элт/1, элт/1), (элт/3, элт/6, элт/9)), m2 = ((элт/6, элт/1, элт/3, элт/4), (элт/9, элт/2, элт/8, элт/3), (элт/6, элт/4, элт/1, элт/2)). ВЫХОД MULT_234 (м1, м2) ). COM-тест: просто отобразите сигнал MOC
Ссылки [ править ]
- Морисон, доктор медицинских наук; Кларк, А.С. (1 октября 1993 г.). Элла 2000: Язык проектирования электронных систем . МакГроу Хилл . ISBN 978-0077078218 .
- Бэрринджер, Х.; Гоф, Г.; Монахан, Б.; Уильямс, А.; Аркус, М.; Армстронг, А.; Хилл, М. (1995). Среда проектирования и проверки для ELLA . Конференция по автоматизации проектирования (DAC), 1995. Материалы ASP-DAC '95, CHDL '95, VLSI '95 с EDA Technofair . стр. 685–690. дои : 10.1109/ASPDAC.1995.486387 . ISBN 4-930813-67-0 .
- Морисон, доктор медицинских наук; Пилинг, Н.В.; Торп, ТЛ; Уайтинг, Э.В. (1987). EASE: среда поддержки проектирования для HDDL ELLA . Конференция по автоматизации проектирования (DAC), 1987. 24-я конференция по автоматизации проектирования . стр. 741–749. дои : 10.1145/37888.38006 . ISBN 0-8186-0781-5 .
Внешние ссылки [ править ]
- Исходный код ELLA , включая ALGOL 68RS. транслятор