Національний університет "Львівська політехніка"
Кафедра ЕОМ
Звіт
про виконання лабораторної роботи №2
з курсу "Проектуванння периферійних комп’ютерних мікросистем"
на тему: “ Розробка на структурному рівні”
Мета роботи: створення і перевірка структурних VHDL-описів кристалу та зовнішніх корпусних контактних майданчиків.
Теоретична частина:
На цьому етапі переходять від функціонального опису кристалу до структурного. Тут кристал розбивається на два конструктиви:
1). Безпосередньо схема кристалу (core).
2). Зовнішні корпусні контактні майданчики (pads).
Структурний рівень передбачає опис цих двох конструктивів мовою структурного опису VHDL.
Відмінність структурного опису VHDL від функціонального полягає в тому, що в структурному описі оперують реальними бібліотечними елементами кристалу.
Створити структурний опис, який за обсягом на кілька порядків більший за функціональний, важко. Тому пакет Alliance передбачає два незалежних способи автоматизоавного отримання структурного опису для core та pads:
1) За допомогою текстового редактора створюється файл мовою С. Цей файл є проміжним форматом для створення структурного опису. У ньому за допомогою викликів спеціальних функцій формується виборка необхідних елементів з бібліотеки кристалу. Далі програмою-компілятором GENLIB проміжний С-файл переводять у необхідний структурний опис. У системі Alliance цей спосіб є рекомендованим.
2) Другий спосіб не вимагає додаткового набору інформації. Достатньо скористатись програмою-генератором LOGIC, на вхід якої задають функціональний VHDL-опис, а на виході отримують структурний VHDL-опис. Виборка бібліотечних елементів кристалу відбувається автоматично.
Після отримання структурних описів для core та pads, виконується симуляція на структурному рівні. Користуючись симулятором ASIMUT, перевіряють роботу тестових наборів на структурній VHDL-моделі безпосередньо схеми кристалу core. При виникненні помилки слід повернутись на попередні рівні. Симуляція для структурного опису зовнішніх корпусних контактних майданчиків pads не потрібна, оскільки цей опис не містить логічних перетворень сигналів.
Тексти проміжних описів на мові С:
# ,,,,,
# (o o)
####=====oOO--(_)--OOO=====####
# core.с
#include <genlib.h>
main()
{
DEF_LOFIG("core");
LOCON("a[3:0]", IN, "a[3:0]"); /* input bus a */
LOCON("b[3:0]", IN, "b[3:0]"); /* input bus b */
LOCON("e", OUT, "e"); /* output wire */
LOCON("vdd", IN, "vdd" ); /* power supply */
LOCON("vss", IN, "vss" ); /* ground */
for (int i = 0; i < 4; i++)
{LOINS("xr2_y", NAME("xr%d",i),NAME("a[%d]",i),NAME("b[%d]",i),NAME("int[%d]",i),"vdd","vss",0);}
LOINS("o3_y", "or1", "int[0]", "int[1]", "int[2]", "int[4]", "vdd", "vss", 0);
LOINS("o2_y", "or2", "int[3]", "int[4]", "int[5]", "vdd", "vss", 0);
LOINS("n1_y", "n10", "int[5]", "e", "vdd", "vss", 0);
SAVE_LOFIG();
exit(0);
}
# ,,,,,
# (o o)
####=====oOO--(_)--OOO=====####
# cmp4.с
#include <genlib.h>
main()
{int i;
DEF_LOFIG("cmp4");
LOCON("a[3:0]", IN, "a[3:0]"); /* input bus a */
LOCON("b[3:0]", IN, "b[3:0]"); /* input bus b */
LOCON("vdd", IN, "vdd" ); /* core power supply */
LOCON("vss", IN, "vss" ); /* core ground */
LOCON("vdde", IN, "vdde" ); /* pads power supply */
LOCON("vsse", IN, "vsse" ); /* pads ground */
LOCON("e", OUT, "e"); /* output */
LOINS ("pvsse_sp", "p9", "cki", "vdde", "vdd", "vsse", "vss", 0);
LOINS ("pvsse_sp", "p10", "cki", "vdde", "vdd", "vsse", "vss", 0);
LOINS ("pvdde_sp", "p11", "cki", "vdde", "vdd", "vsse", "vss", 0);
LOINS ("pvssi_sp", "p12", "cki", "vdde", "vdd", "vsse", "vss", 0);
LOINS ("pvddi_sp", "p13", "cki", "vdde", "vdd", "vsse", "vss", 0);
for (i = 0; i < 4; i++)
LOINS("pi_sp",NAME("p%d",i),NAME("a[%d]",i),NAME("aa[%d]",i),"cki","vdde","vdd","vsse","vss",0);
for (i = 0; i < 4; i++)
LOINS("pi_sp",NAME("p%d",i+4),NAME("b[%d]",i),NAME("bb[%d]",i),"cki","vdde","vdd","vsse","vss", 0);
LOINS("po_sp", "p8", "ee", "e", "cki", "vdde", "vdd", "vsse", "vss", 0);
LOINS("core", "core", "aa[3:0]", "bb[3:0]", "ee", "vdd", "vss", 0);
SAVE_LOFIG();
exit(0); /* necessary for the proper run of the Makefile */
}
Файл з тестовими наборами:
# ,,,,,
# (o o)
####=====oOO--(_)--OOO=====####
# cmp4_vst.pat
in vdd;
in vss;
in vdde;
in vsse;
in a(3 to 0);
in b(3 to 0);
out e;
begin
# aa=0, bb=3, we expect value 0 on ee
pat_1 : 1 0 1 0 0000 0011 ?0 ;
# aa=5, bb=4, we expect value 0 on ee
pat_1 : 1 0 1 0 0101 0100 ?0 ;
# aa=2, bb=2, we expect value 1 on ee
pat_1 : 1 0 1 0 0010 0010 ?1 ;
# aa=2, bb=2, we expect value 1 on ee
pat_1 : 1 0 1 0 1010 1010 ?1 ;
end;
Перетворюємо проміжний структурний опис core.c в структурний VHDL-опис core.vst за допомогою компілятора GENLIB:
# ###--------------------------------------------------------------------------###
# generate structural description of the circuit's core #
# core.c is the schematic capture of the core, using #
# the genlib language #
# the environment variable specify the structural VHDL format #
# ###--------------------------------------------------------------------------###
MBK_IN_LO=vst ;MBK_OUT_LO=vst ;MBK_CATA_LIB=$TOP/cells/scr ;\
export MBK_IN_LO MBK_OUT_LO MBK_CATA_LIB ;\
genlib core
core.c --> core.vst
В результаті отримаємо структурний VHDL-опис core.vst
Далі за допомогою текстового редактора створюємо наступний проміжний структурний опис для cmp4.c
Перетворюємо проміжні структурні описи cmp4.c та core.c, які включаються в cmp4.c, в результуючий структурний VHDL-опис cmp4.vst за допомогою компілятора GENLIB:
# ###--------------------------------------------------------------------------###
# generate structural description of the complete circuit #
# addaccu.c is the schematic capture of the circuit, using #
# the genlib language #
# the circuit can be generated only if the core is generated #
# the environment variable specify the structural VHDL format #
# ###--------------------------------------------------------------------------###
MBK_IN_LO=vst ;MBK_OUT_LO=vst ;MBK_CATA_LIB=$TOP/cells/scr:$TOP/cells/ring ;\
export MBK_IN_LO MBK_OUT_LO MBK_CATA_LIB ;\
genlib cmp4 [3]
cmp4.c --> cmp4.vst
Останньою дією, що проводиться на етапі розробки на структурному рівні, є симуляція на структурному рівні з використанням тестових наборів:
# ###---------------------------------------------------------###
# check the correctness of the generated structural #
# description running the logic simulation #
# ###---------------------------------------------------------###
MBK_IN_LO=vst ;MBK_CATA_LIB=$TOP/cells/scr:$TOP/cells/ring ;\
export MBK_IN_LO MBK_CATA_LIB ;\
asimut cmp4 cmp4 schema [4]
вихідний файл з результатами тестування
cmp4.pat
cmp4u.vst
Виникнення помилки на цьому етапі означає повернення на попередні рівні.
Висновок :
В даній лабораторній роботі я створив і перевірив структурний VHDL-опис кристалу та зовнішні корпусні контактні майданчики чотирьох розрядного компаратора засобами САПР НВІС – Alliance 3.2b.