ZED 0 30 июня, 2011 Опубликовано 30 июня, 2011 (изменено) · Жалоба Самым главным достоинством языка SystemC является то, что можно подняться на системный уровень и спускаться до уровня RTL в рамках одного языка. Т.е. моделирование комплексной системы (системы на кристалле) можно производить оставаясь в едином языковом пространстве. Еще одним преимуществом является высокая скорость моделирования. Сначала создается высокоуровневая поведенческая модель системы. Все сложные элементы (такие как шины, процессоры, DDR-памяти, интерфейсы и т.д.) строятся на базе транзакционных моделей (TLM). Проверяется правильность функционирования системы в целом. В полученной модели выделяются блоки, отвечающие за аппаратную часть (HardWare), и блоки, отвечающие за программную часть (SoftWare). Далее программисты и аппаратчики работаю параллельно: программисты пишут программы на C (C++), а аппаратчики спускаются на уровень регистровых передач (RTL). Таким, образом обе группы (HardWare и SoftWare) изначально работают с одной моделью, а в процессе разработки TLM-блоки заменяются уже своими физическими (или программными) эквивалентами. Не совсем понятно как взаимодействуют блоки на разных уровнях - TLM и RTL. Пример: память DDR и контроллер к ней написан на уровне TLM, а блок, использующий ее написан на RTL-уровне. Настораживает, что в интернете так и не нашел TLM-моделей стандартных элементов (к примеру той же DDR-памяти или шины). Есть ли у кого-нибудь опыт разработки целой системы с использованием SystemC? На сколько там все прозрачно? Оправдывает ли себя вообще такой подход? Какие есть возможности визуализации и документирования создаваемого проекта? Можно ли в проект на SystemC делать VHDL-вставки RTL-уровня? Изменено 30 июня, 2011 пользователем ZED Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 30 июня, 2011 Опубликовано 30 июня, 2011 · Жалоба введение явно лишнее, как будто статью пишете. Поиском по форуму, тема обсуждалась. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZED 0 30 июня, 2011 Опубликовано 30 июня, 2011 (изменено) · Жалоба Введение я написал, дабы не раздуть новое обсуждение на тему для чего он нужен и кто поддерживает/не поддерживает синтез, ну и т.д. Поиском по форуму естественно пользовался: появилось больше вопросов, чем ответов. Эти вопросы я и задаю. Пытаюсь проникнуться философией этого языка. В основном интересует TLM. Изменено 30 июня, 2011 пользователем ZED Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 30 июня, 2011 Опубликовано 30 июня, 2011 · Жалоба TLM и RTL это кагбэ концепции, а СистемЦ (как SV или MyHDL или даже С++/Джава) это инструмент реализации концепции. мне кажется, что инструмент содержит в себе гораздо меньше философии чем концепция, даже как бы ортогонально друг к другу если владеете С++ (настоящим, а не эмбедерским :), то СистемЦ (как библиотека С++) будет понятна и проста в качестве инструмента для освоения концепций сталкивался на практике: мощные программисты пишут модели на СистемЦ, плюс по сравнению с матлабом это скорость исполнения и упорядоченность кода, по сравнению с SV скорость и понятность С++ (я кстати не особо ас в С++, читать со словарем могу, писать не очень) для самооценки можно сорцы СистемЦ-шные посмотреть - бывает и более адский С++, но и там вполне неплохо развернуто :) требования для модели тоже должны быть мощные :), например для DDR контроллера применять СистемЦ, имхо, смысла нет --------------------------- если кроме теоретического освоения нужны какие-то практические выводы, то вопрос поддержки тулзами занимает важное место так можно и MyHDL взять - он на питоне написан, в мильйон раз более приятный язык чем С++, ООП там можно за 2 минуты проникнуться и навалять ООП-ного кода стотыщ строк и TLM реализовать как угодно а в смысле поддержки тулзами СистемЦ, увы, в попе. немного получше MyHDL, так как все симуляторы поддерживают SC co-simulation, но не намного лучше для мощной модели, когда код хитрый и проще потом переписать руками RTL на верилоге, а потом добиться совпадения SC и SV моделей (опять же в SC-шную тестбенч можно SV/V код вставить и/или наоборот) это оправдано а для простых задач, имхо, проще сразу на SV писать, там TLM развернуто и доки и готовые модели (как пример TLM - это множество SV-шных BFM-моделей) также для SV есть много книжек, где это все подробно описывается, опять же всякие методологии верификации (а где еще TLM применять?) OVM (http://www.ovmworld.org/), VMM =============== имхо, зависит от бэкграунда - если С++ родной берите SC, если верилог родной - то SV + OVM ну а если питон и свободное время, то MyHDL, имхо, замечательный проект но путь SV+OVM он какбы ближе к практике - к реализации чего-то на ПЛИС или АЗИКе, хотя опять же если бэкграунд в С++ велик и задача сложна, то всех SV-шников можно уделать, так как трудности с тулзами они какбы константа и при росте сложности задачи станут пренебрежимо малыми Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 30 июня, 2011 Опубликовано 30 июня, 2011 · Жалоба Есть ли у кого-нибудь опыт разработки целой системы с использованием SystemC? На сколько там все прозрачно? Оправдывает ли себя вообще такой подход? Какие есть возможности визуализации и документирования создаваемого проекта? Можно ли в проект на SystemC делать VHDL-вставки RTL-уровня? 1)был. 2)к тому времени синтез с СистемЦ уже завернули, поэтому для синтеза пришлось переводить всё в Верилог. 3)зависит от задачи. проект для одного ПЛИС делать по-моему так не стоит - пишите сразу на VHDL/SV. если нужно изучить действительно _систему_ разнородную на высоком уровне, то стоит. по крайне мере я именно СистемЦ собираюсь пользовать для оценки реализуемости одной системки с разными аппаратными раелизациями. 4)не знаю таких. может в Катапульте от ментора есть приблуды для визуализации. 5)можно делать mixed-language modelling. только для моделирования всяких там микросхем памяти используется не РТЛ а поведенческое описание. о синтезе с СистемЦ давно ничего не слышал. последние сведения, что его вроде бы вернули в Катапульт (так было написано в брошюре от ментора - что там на самом деле не знаю) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZED 0 30 июня, 2011 Опубликовано 30 июня, 2011 (изменено) · Жалоба yes, спасибо Вам за развернутый ответ. С языком C++ не дружен к сожалению. А вот взять, например систему на кристалле (SoC). Вот есть некий процессор, шинный интерфейс и ПЛИС. Для такой задачи лучше видимо подойдет SystemC, нежели SystemVerilog, или тут они примерно равны? Вот хочу еще разобраться с TLM. Насколько его сложно освоить и с чего лучше начать, чтобы понять концепцию (видимо с понятия класса)? Как писать (например те же шинные интерфейсы) на этом уровне, что нужно учитывать (вопрос философии)? например для DDR контроллера применять СистемЦ, имхо, смысла нет Ну я имел ввиду транзакционную модель, чтобы использовать ее для отладки остальной части проекта, или так не делают? Есть ли какие-нибудь готовые проекты или примеры с описанием применения TLM от простого к сложному? Изменено 1 июля, 2011 пользователем ZED Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Poluektovich 0 30 июня, 2011 Опубликовано 30 июня, 2011 (изменено) · Жалоба По TLM на SystemC много материалов здесь: http://masters.donntu.edu.ua/2007/fvti/sme.../diss/index.htm http://masters.donntu.edu.ua/2007/fvti/sme...brary/index.htm Изменено 30 июня, 2011 пользователем Poluektovich Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZED 0 30 июня, 2011 Опубликовано 30 июня, 2011 · Жалоба Poluektovich спасибо за ссылки!!! Приятно, что даже на русском, я даже и не надеялся. Буду читать, осваивать, позже мыслях по этому поводу. отпишусь о свои CaPpuCcino, Вам спасибо за дельный ответ, все по пунктам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 1 июля, 2011 Опубликовано 1 июля, 2011 · Жалоба С языком C++ не дружен к сожалению. А вот взять, например систему на кристалле (SoC). Вот есть некий процессор, шинный интерфейс и ПЛИС. Для такой задачи лучше видимо подойдет SystemC, нежели SystemVerilog, или тут они примерно равны? Вот хочу еще разобраться с TLM. Насколько его сложно освоить и с чего лучше начать, чтобы понять концепцию (видимо с понятия класса)? Как писать (например те же шинные интерфейсы) на этом уровне, что нужно учитывать (вопрос философии)? если С++ не знаете и собираетесь все-таки с ПЛИС/АЗИКами работать, то, имхо, лучше берите сразу SV примеров полно - посмотрел в квесте - больше дюжины примеров/уроков по SC TLM, они же доступны и без квесты, там же и доки (англицкие) но для SV примеров/док в сто раз больше ну и как мне показалось, нужно вначале разобраться с ООП (и в SV это все-таки попроще), а TLM, по моему, очень простая концепция, чтобы с ней какие-то проблемы возникли, если струментом владеешь плюс SC - это бесплатность компилера, то есть для SV придется купить (если по честному) симулятор и он стоит ~100К$ а SC можно моделировать бесплатным gcc, то есть для академических целей или при каких-либо ограничениях на китайские FTP это вариант ну и еще быстрота исполнения - у меня в SoC (АЗИК) бывают SV/V симуляции, которые идут неделями. SC позволяет это сильно ускорить и вплоть до того, что приближаться к реальному времени, то есть на модели SoC можно начинать отлаживать уже взрослый софтварь для конечного устройства. там много чего: ядра, шины и т.п. предоставляется в виде предкомпиленных моделей. но системы такие дофига стоят и мне в реале не удалось посмотреть, хотя, как я понял, эти системы являются достаточно серьезным бизнесом каденса/синопсиса и всяких стартапов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться