Научно-исследовательская работа на кафедре сапр спбгэту «лэти»


Краткое описание возможностей SystemC



Download 2,28 Mb.
bet33/36
Sana09.04.2023
Hajmi2,28 Mb.
#926264
TuriНаучно-исследовательская работа
1   ...   28   29   30   31   32   33   34   35   36
Bog'liq
Broshyura Pr4

Краткое описание возможностей SystemC [14]
Изначально библиотека SystemC разрабатывалась для реализации полного цикла разработки, начиная от модели системы и физических объектов и заканчивая моделью ОС реального времени и аппаратной части. Так же, как и для других высокоуровневых языков HDL, для синтеза может быть использован только ограниченный набор конструкций языка. Для того чтобы ознакомиться с этим подмножеством, лучше всего воспользоваться описанием синтеза с SystemC от Synopsys.
Независимо от языка, на котором сделано RTL-описание, результатом синтеза является список соединений между триггерами, защелками и логическими элементами. Поэтому синтезируемые подмножества Verilog, VHDL и SystemC совпадают по смыслу и отличаются только синтаксисом описания. Возможно, что разработка поведенческого синтеза расширит возможности SystemC для описания аппаратуры, но в настоящее время следует ориентироваться на привычные и широко используемые RTL-описания.
Для понимания синтаксиса SystemC следует разбираться в С++, так как любая конструкция SystemC является синтаксически верной конструкцией C++, особое внимание следует обратить на классы и шаблоны (templates).
Рассмотрим конструкции SystemC, применяемые для описания иерархической структуры модулей.
#include “system.h”
SC_MODULE (module_name)
[
// Module port declaration
// Signal variable declaration
// Data variable declaration
// Member function declaration
// Method process declaration
// Module constructor
SC_CTOR (module_name)
[
// Register processes
// Declare sensitivity list
]
]:
В дополнение к стандартным объектам класса С++ добавлены описания портов, сигналов и процессов. Эти объекты воспринимаются средством синтеза и являются основными элементами RTL-описания.
SC_Method (my_method_proc);
// declare level- sensitive sensitivity list
sensitive << a << c << d; // Stream declaration
sensitive(b); // Function declaration
sensitive(e); // Function declaration
Порты описываются следующим образом:
Для взаимодействия процессов внутри модуля следует использовать сигналы. Это требуется для моделирования конкурирующих процессов и соединения модулей. Сигналы описываются следующим образом:
На типы сигналов действуют те же ограничения, что и на типы портов.
Внутри модуля могут использоваться переменные, не являющиеся сигналами или портами. Описание переменных не отличается от описания в C++. Типы переменных должны принадлежать тому же подмножеству, что и для портов и сигналов.
// Module port declaration
sc_in
port_name;
sc_out
port_name;
sc_inout
port_name;
sc_in
port_name;
// Internal signal variable declaration
sc_signalsignal_name;
sc_signal signal1, signal2;
Разница между сигналами и переменными состоит в том, что значения сигналам присваиваются в конце временного шага исполнения модели (дельта-цикла), а присвоения переменным происходят мгновенно.
Аналогом Verilog блока alwais (или process в VHDL) с условием запуска по уровню или фронту сигнала (сигналов), который применяется для описания триггеров, защелок и комбинаторной (параллельной) логики, является процесс. В SystemC существует несколько видов процессов, но для RTL-описаний применяется только SC_METHOD. Процесс должен быть описан как функция-член, а потом зарегистрирован с помощью макроса SC_METHOD.
// process declaration
void my_method_proc();
// module constructor
SC_CTOR (my_module)
[
// register process
SC_Method (my_method_proc);
// define the sensitivity list
Список чувствительности может включать в себя события по уровню и по фронту. При этом, правила синтезируемости такие же, как и в Verilog/VHDL.
Для построения иерархии используются указатели на модули нижнего уровня и оператор new. Подключение сигналов к портам модуля может производиться как по имени, так и по позиции.
// Create data members – pointers to instantiated modules
fir_fsm *fir_fsm1;
fir_fsm * fir_fsm2;
SC_CTOR (fir_top)
[
// Create new instance of fir_fsm module
fir_fsm1 = new fir_fsm(“Fir_FSM1”);
fir_fsm2 = new fir_fsm(“Fir_FSM2”);
// Binding by name
fir_fsm1 -> clock(CLK);
fir_fsm1 -> reset(RESET);
fir_fsm1 ->state_out(state_out1);
// Binding by position alternative
fir_fsm2 (CLK, RESET, state_out2);
В общем, этого достаточно для описания аппаратной части. В качестве примера приведем описания некоторых стандартных элементов на SystemC:
Пример 1
#include “system.h”
SC_MODULE (dffsr)
[
sc_inin_data, reset;
sc_outout_q;
sc_in clock; //clock port
// Method for D-flip-flop
void dff ();
// Constructor
SC_CTOR (dffsr)
[
SC_METHOD (dffsr);
sensitive_pos << clock;
]
];
void dffsr.:dff()
[
if (reset.read()) out_q.write(0);
else out_q.write(in_data.read());
]
Пример 2
#include “system.h”
SC_MODULE (decoder)
[
sc_inin_i;
sc_outout;
// Method process
void decoder_fcm () [
switch (in_i.read())
[
case0: out.write(0x01); break;
case1: out.write(0x02); break;
case2: out.write(0x04); break;
case3: out.write(0x10); break;
case4: out.write(0x20); break;
case5: out.write(0x40); break;
default: out.write(0x01);
]
Пример 1 описывает триггер с синхронным сбросом, а пример 2 –комбинаторную логику.
В дополнение к RTL-синтезу в будущем предполагается наличие поведенческого синтеза, который не требует от пользователя знаний об элементарных ячейках: триггерах, защелках и логических элементах – и выполняет автоматическое разбиение проекта на соответствующие модули, создание тактовых сигналов и т. п. Возможно, что это направление будет очень полезным.
Для моделирования цифровых схем (или любых других систем) отсутствуют ограничения, накладываемые на описание RTL-кода.
Для моделирования систем передачи информации существуют каналы и интерфейсы. Это позволяет моделировать различные слои протоколов обмена.
Для моделирования вычислений с фиксированной точкой существуют классы SystemC, позволяющие проводить вычисления с фиксированной точкой с любой разрядностью и любой позицией десятичной точки.
Для моделирования ОС реального времени имеются потоки вычислений (THREAD), семафоры, очереди и модель невытесняющей многозадачности.
SystemC выглядит удачной альтернативой известным языкам HDL и может использоваться в качестве системного языка разработки от модели до готового изделия. В библиотеке реализовано много классов для моделирования различных этапов разработки SoC, в особенности для систем связи и обработки сигналов. К плюсам следует отнести то, что для моделирования не требуется симулятор, а к минусам – то, что средства синтеза для SystemC распространены меньше, чем для специализированных HDL-языков. Но производители начинают поддерживать RTL SystemC – в настоящее время продаются компилятор CoCentric от Synopsys или продукция Forte Design Systems.

Download 2,28 Mb.

Do'stlaringiz bilan baham:
1   ...   28   29   30   31   32   33   34   35   36




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish