Часто при изучении новой библиотеки нужно посмотреть иерархию классов или список методов конкретного класса. Прыгать из файла в файл по ссылкам “Show Declaration” в Визуал Студии не всегда удобно. Есть утилита Doxygen, которая разбирает проекты, написанные на разных языках, и генерирует гипертекстовый сайт. На этом сайте можно просмотреть список всех классов, иерархию в UML-виде, список методов с описанием.
В курсе “Компьютерные технологии в автоматизированном проектировании” мы изучаем SystemC и такая документация была бы очень полезна. В интернете нашел несколько опубликованных сайтов с документацией, но с неактуальными версиями. Поэтому, решил сгенерировать и опубликовать самостоятельно: http://kiu.kture.kharkov.ua/systemc/html
К сожалению, реализация библиотеки SystemC с официального сайта не имеет встроенной документации в формате Doxygen, поэтому описания методов и классов не доступны.
Шон МакКлауд, директор из Ментор Графики, сообщает, что к концу 2009 года количество фирм, использующих С++-синтез для производства, превысит 33 %. В 2008 году этот показатель составил около 14 %. Статистика была собрана в результате анонимного опроса 800 инженеров. Опрос спонсировался Ментор Графикой. Три причины, по которым инженеры выбирают С++-синтез, это: а) проще верифицировать (68 % опрошенных); б) быстрее получается RTL (64 %); в) нужно меньше людей, что в условиях кризиса очень актуально. А вот интересная статистика по объему рынка продуктов высокоуровневого синтеза и связанных с ними сервисов. Эти цифры собраны аналитиком Гарри Смитом и опубликованы в июльском номере журнала “IEEE Design and Test of Computers”. Диаграмма очень интересная. Смит сообщает, что в 90-х годах у пользователей появился интерес к высокоуровневому синтезу, но инструменты были далеки от того, чтобы быть пригодными на производстве. Из-за этого доверие к ним было утрачено. В последние же годы наблюдается повторный расцвет программ высокоуровневого синтеза нового поколения. Знаю, что многие скептически относятся к С++ и SystemC как к языкам описания систем. Посмотрим спустя несколько лет, как будет на самом деле. А ещё знакомые подсказывают, что все эти цифры — маркетинговый булщит, чтобы завлекать пользователей, типа “смотри, уже половина купила С++-синтез, так давай покупай и ты”!
Сегодня прошел вебинар (веб + семинар) фирмы Mentor Graphics на тему «Hardware Designs Reuse Using C++ and High Level Synthesis». Лекция в тезисах:
- поддерживается синтез ANSI C++ в RTL;
- повышение производительности инженеров в 10—20 раз, а также сокращение времени на верификацию;
- качество синтеза эквивалентно ручному;
- доступны различные параметризируемые типы данных, которые хорошо синтезируются в аппаратуру;
- объектно-ориентированная архитектура устройства, например, можно делать устройства с одним интерфейсом, но с разной реализацией;
- можно посмотреть результаты планирования выполнения микроопераций на диаграмме Ганта: временные задержки, распределение по тактам.
В целом, ничего нового с весны не услышал. В конце была возможность задать вопросы лектору пальцем по клавиатуре, а ответ послушать ухом из динамика. Спросил следующие вопросы и получил конкретные ответы.
Вопрос: как обстоит дело с поддержкой SystemC?
Ответ*: наши пользователи в основном используют чистый С++, потому что они программисты и совсем не знают SystemC.
Вопрос: как происходит совместный программно-аппаратный синтез?
Ответ: никак. На данный момент это всего-лишь инструмент для C++ в RTL синтеза и всё.
Вопрос: необходимо ли использование каких-то С++ расширений или директив?
Ответ: нет, не нужно. Наши С++ модели можно легко скормить любому компилятору и вы получите те же самые результаты моделирования. Директивы могут быть использованы в случаях, когда необходимо указать параллелизм в цикле и т. п.
* здесь и далее вольный пересказ
Есть возможность посмотреть более подробные демонстрации на сайте Ментор Графики.
Продолжаем работу над нашим транслятором. Среди ближайших задач: встраивание функций, оптимизация выражений.
На прошлой неделе готовил лекцию о языке SystemC и наткнулся на статью Stephen A. Edwards, «The Challenges of Synthesizing Hardware from C-Like Languages», о различных С-подобных языках, применяющихся для описания аппаратуры. Среди различных языков и инструментов была ссылка на американский патент № 6 226 776 о синтезе С в железо, который сейчас якобы принадлежит фирме Synopsys. Автор статьи описывает патент, как «претендующий на широкую поддержку языка ANSI C»: упоминается поддержка указателей, рекурсии, динамического распределения памяти. Я заинтересовался этим патентом. Около 85 страниц из всех 108-и — это примеры на С и соответствующие им результаты синтеза на Верилоге. Ещё 14 страниц — это словесное описание всех примеров. И последние четыре страницы посвящены описанию формулы изобретения. Модели в основном представлены в виде цифровых автоматов, намного реже — data-flow модели. Как такового метода преобразования С в цифровой автомат там не было. Я обратил внимание на один пример, в котором из одной функции вызывались две другие. int sum1 (int n) { int i, sum = 0; for (i = 0; i < n; i++) sum += i; return sum; }
int sum2 (int array[], int size) { int i, sum = 0; for (i = 0; i < size; i++) sum += array[i]; return sum; }
int f1() { int i; int array[10]; int size = sizeof(array)/sizeof(*array); for (i = 0; i < size; i++) array[i] = i * 2; return sum1(size) + sum2(array, size); }
* This source code was highlighted with Source Code Highlighter.
Перед тем, как читать дальше, подумайте: сколько состояний автомата нужно, чтобы выполнить этот алгоритм? Мне тоже сначала показалось, что должно быть немного. Но в предложенном варианте синтеза для выполнения этого алгоритма нужно 16 состояний автомата. Так как мой компилятор С++ в VHDL ещё не способен откомпилировать такой код, то решил нарисовать граф-схему алгоритма вручную.  Все функции уже встроены, и предполагается, что инициализация переменных происходит по сигналу reset. Таким образом, в этом автомате получается всего лишь семь состояний (см. Баранов С. И. Синтез цифровых автоматов). Вот не могу понять: у них там в 2001 году не знали то, что у нас было известно ещё в 1974?
На мой взгляд русскоязычная Википедия страдает от недостатка статей в области САПР микроэлектроники. Например, нет статей о таких гигантах, как Cadence, Synopsys, Mentor Graphics. Только что сделал небольшой перевод статьи из англоязычной Википедии про Алдек. Приглашаю к просмотру: Aldec. По хорошему надо сделать ещё статьи про Active-HDL и Riviera. Первый раз про фирму Алдек я услышал на первом курсе. После второго курса поехал на летнюю практику к ним в Катовицы. Там я впервые понял, что такое тестирование программного обеспечения, как это круто быть инженером SQA, а также приобрел навыки, которые по сей день актуальны. Благо, местные знающие люди подсказали, помогли и научили. Рабочие дни дополнялись многочисленными этнографическими экспедициями по окрестностям: Гливицы, Краков. Для меня было открытием, что концлагерь Освенцим находится в каком-то десятке километров от Катовиц. Фирма Алдек многому научила и многое дала не только мне, но и моим друзьям. В разных офисах в Харькове, Катовицах и Хендерсоне работают мои близкие знакомые, выпускники нашего университета. Поэтому, наполнение русской Википедии начнем именно с этой EDA-фирмы. На фотографии ниже показан офис фирмы в Жерновце, совсем рядом с Балтийским морем. Живописное место — на ближайшие километры никто не живет, лес, гидроаккумулирующая станция и недостроенная атомная электростанция. Там очень уютно.
Во вторник (23.06.09) состоится мой доклад по проектированию на системном уровне. Будет представлен обзор современного состояния, некоторые результаты по моей диссертации, а также различные идеи. В программе: - Ретроспектива средств автоматизации проектирования (с 1950-х).
- Современные подходы к проектированию.
- SystemC как язык проектирования систем.
- Использование виртуальных прототипов.
- Программно-аппаратные системы.
- Исследование пространства проектных решений.
- Синтез С++.
Дата: 23 июня 2009 (вторник). Время: 18:00—19:00+. Место: 318 ауд. ХНУРЭ. Добавить в календарь:  Вход свободный. Доклад будет интересен студентам специальностей «Специализированные компьютерные системы», «Компьютерные системы и сети», «Системное программирование». В ходе доклада будут рассмотрены основы, поэтому первокурсники могут приходить смело.
|
|