Inputs Section

Починається із ключового слова INPUTS. Далі слідує список вузлів і/або імен груп. У Vector File, використовуваному для симуляції, імена вузлів повинні збігатися з іменами вузлів у файлі проекту, включаючи ієрархічний шлях, якщо це необхідно. Розділ закінчується символом;.

Приклад: INPUT databus clk OEN node;

У наведеному нижче прикладі при залученні наступної секції вхідних даних значення в попередній секції губляться.

Приклад: INPUTS A1 A2;

START 0;

STOP 25;

PATTERN %Секція моделі 1 із входами А1 і А2%

0 0 0

0 0 1;

START 26;

STOP 50;

PATTERN %Секція моделі 2 із входами А1 і А2%

0 1 0

1 0 0;

INPUTS A1 B1;

START 51;

STOP 100;

PATTERN %Секція моделі 3 із входами А1 і В1%

1 1 0

0 1 1;

Outputs Section

Починається із ключового слова OUTPUTS. Використається для опису виходів. Аналогія з Inputs Section.

Приклад: OUTPUTS RCO QA QB QC;

Приклад: OUTPUTS A1 A2;

START 0;

STOP 25;

PATTERN %Секція моделі 1 з виходами А1 і А2%

0 0 0

0 0 1;

START 26;

STOP 50;

PATTERN %Секція моделі 2 з виходами А1 і А2%

0 1 0

1 0 0;

OUTPUTS A1 B1;

START 51;

STOP 100;

PATTERN %Секція моделі 3 з виходами А1 і В1%

1 1 0

0 1 1;

Buried Section

Починається із ключового слова BURIED. Використається для опису вузлів. Аналогія з Inputs Section.

Приклад: BURIED nodeQA0 nodeQA1 nodeQB0 nodeQB1;

Pattern Section

Починається із ключового слова PATTERN. У цьому розділі використаються дані попередніх розділів Inputs, Outputs і Buried Section. Додавання нових Inputs, Outputs і Buried Section очищає всі попередні дані цих типів, тобто старі дані заміняються новими (див. приклад для Inputs Section). Розділ закінчується символом;.

Vector File, використовуваний, щоб створити WDF може містити додаткові розділи Combinatorial Section, Machine Section, Registered Section. Ці розділи ігноруються, якщо Vector File використається для моделювання.

Розглянемо приклад створення Vector File для восьмибітного суматора. Опис суматора на AHDL має вигляд sum8_.tdf

SUBDESIGN SUM8_

%8 розрядний суматор без знака%

(

clk:INPUT;

a[7..0]:INPUT = GND;

b[7..0]:INPUT = GND;

sum[7..0]:OUTPUT;

cr:OUTPUT;

)

VARIABLE

c[7..1]:NODE;

sum[7..0]:DFF;

cr:DFF;

BEGIN

sum[7..0].clk=clk;

sum[7..0].prn=VCC;

sum[7..0].clrn=VCC;

cr.clk=clk;

cr.prn=VCC;

cr.clrn=VCC;

If (a[0]&b[0])==VCC

then

sum[0]=GND;

c[1]=VCC;

ElsIf (a[0]#b[0])==GND

then

sum[0]=GND;

c[1]=GND;

Else

sum[0]=VCC;

c[1]=GND;

End If;

%%

FOR i IN 1 TO 6 GENERATE

If (a[i]&b[i]&c[i])==VCC

then

sum[i]=VCC;

c[i+1]=VCC;

ElsIf (a[i]#b[i]#c[i])==GND

then

sum[i]=GND;

c[i+1]=GND;

ElsIf (((a[i]&b[i])#(a[i]&c[i])#(b[i]&c[i]))&!(a[i]&b[i]&c[i]))==VCC then

sum[i]=GND;

c[i+1]=VCC;

Else

sum[i]=VCC;

c[i+1]=GND;

End If;

END GENERATE;

%%

If (a[7]&b[7]&c[7])==VCC

then

sum[7]=VCC;

cr=VCC;

ElsIf (a[7]#b[7]#c[7])==GND

then

sum[7]=GND;

cr=GND;

ElsIf (((a[7]&b[7])#(a[7]&c[7])#(b[7]&c[7]))&!(a[7]&b[7]&c[7]))==VCC then

sum[7]=GND;

cr=VCC;

Else

sum[7]=VCC;

cr=GND;

End If;

END;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: