Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Національний університет „Львівська політехніка”
кафедра ЕОМ
Звіт
про виконання лабораторної роботи №4
з курсу „ Дослідження та проектування комп’ютерних систем і мереж”
на тему:
SystemC : інсталяція і користування.
Елементарна модель Hello World
Виконав:
ст. гр. КСМм-1
Львів – 2007
Мета роботи: ознайомитись з бібліотекою класів SystemC та структурою елементарного проекту Hello world.
Теоретичні відомості
SystemC – це бібліотека класів С++, яка виникла у відповідь на все більш зростаючі потреби у мові, яка б збільшувала продуктивність роботи розробників електронних систем. Сучасні системи зазвичай містять в своєму складі програмну та апаратну частини, що розробляються у вкрай жорстких часових рамках та вимогах до продуктивності, що вимагає всебічної функціональної перевірки розробленої системи для запобігання виникненню помилок.
SystemC пропонує значний виграш у продуктивності завдяки поєднанню процесів проектування програмної та апаратної частин системи на вищому рівні абстракції. Цей рівень надає розробнику можливість вже на початку проектування побачити структуру системи в цілому, таким чином легше уявляючи процес взаємодії між її окремими частинами, виявити «проблемні місця», провести верифікацію на більш ранніх етапах проектування. Власне кажучи, SystemC не є тією «панацеєю», що обіцяє вирішити усі проблеми розробників. Однак, при появі цієї бібліотеки разом з бібліотекою тестування SystemC Verification Library в них поєдналися багато характеристик, які були повністю відсутні чи слабо представлені в інших мовах проектування.
Характеристики бібліотеки SystemC:
SystemC є засобом сумісного проектування апаратури та програмного забезпечення, а також опису архітектури складних систем завдяки наступним характеристикам:
Модулі – у SystemC є поняття контейнеру класу, що має назву «модуль». Це є ієрархічна структура, що може містити інші модулі та (чи) процеси.
Процеси – процеси використовуються для функціонального опису системи. Процеси входять до складу модулів. SystemC підтримує три різні абстракції процесів для використання розробниками ПЗ та апаратури.
Порти – модулі містять порти, що використовуються для з’єднання з іншими модулями. SystemC підтримує одно – та двонаправлені порти.
Сигнали – SystemC підтримує як складні, так і прості сигнали. Складні сигнали можуть мати більш ніж одне джерело.
Великий набір типів даних - SystemC має великий набір типів даних для підтримки багатьох областей проектування та рівнів абстракції. Типи даних з фіксованою точністю використовуються для швидкої симуляції. Типи даних з довільною точністю використовуються для операцій з великими значеннями.
Сигнали синхронізації – SystemC має спеціальний набір сигналів синхронізації.
Виконання роботи
1. Для початку роботи з бібліотекою класів SystemC потрібно виконати інсталяцію компілятора С++. В якості компілятора використаємо безкоштовний С++ компілятор від фірми Borland. Після розархівування файлів компілятора запускаємо на виконання файл SystemC_Win.exe з директорії SystemC_Win1.0 Beta\Bin. При першому запуску система видає повідомлення про необхідність вказати шлях до С++ компілятора, що і потрібно зробити, вказавши шлях до директорії, куди було розархівовано компілятор.
2. У меню File\Open Project вибираємо проект «Hello World».
Рисунок 1. Вигляд проекту в середовищі SystemC_Win
3. Командою Project/Run запускаємо проект на виконання. Спостерігаємо результати роботи.
Структура програми Hello World, призначення кожної складової частини, опис команд та параметрів
// Black and Donovan, p.48
#include <systemc.h>
#include <iostream>
SC_MODULE(hello_systemC) // оголошення класу модуля
{
sc_in_clk iclk; // оголошення порту синхронізації
SC_CTOR(hello_systemC) { // конструктор
SC_METHOD(main_method) ; // головний метод (процес)
sensitive << iclk.neg(); // чутливість до негативного фронту clk
dont_initialize(); // не виконувати ініціалізуючий виклик
}
void main_method(void) { // реалізація головного методу
std::cout << sc_time_stamp() << "Hello world!" << std::endl;
}
};
int sc_main(int argc, char* argv[]) {
// оголошення часової константи - 8 наносекунд
const sc_time t_PERIOD (16,SC_NS);
// створення періодичного сигналу синхронізації
sc_clock clk ("clk", t_PERIOD);
// створення екземпляру класу hello_systemC
hello_systemC U1 ("iHelloWorld");
// з'єднання clk з портом синхронізації
U1.iclk(clk);
// викликати симулятор
sc_start(45,SC_NS);
return (0);
}
Результати роботи програми
4 ns Hello world!
12 ns Hello world!
20 ns Hello world!
28 ns Hello world!
36 ns Hello world!
44 ns Hello world!
SystemC 2.0 --- Nov 18 2001 14:42:05
Copyright (c) 1996-2001 by all Contributors
ALL RIGHTS RESERVED
Висновок: при виконанні даної лабораторної роботи я ознайомився з бібліотекою класів SystemC та структурою елементарного проекту Hello world.