Этот файл использует операторы Include, для импортирования прототипов функций для двух макрофункций: 4count и 16dmux. В разделе Variable переменная counter объявлена как экземпляр функции 4count, а переменная decoder объявлена как экземпляр функции 16dmux. Входные порты функций, в формате <имя экземпляра>.<имя порта>, определены с левой стороны булевых уравнений в разделе Logic, а выходные порты с правой стороны.
Файл macro2.tdf, приведенный ниже, имеет такую же функциональность как и macro1.tdf, но создает экземпляры двух функций с помощью ссылок и узлов q[3..0]:
INCLUDE "4count";
INCLUDE "16dmux";
SUBDESIGN macro2
(
clk : INPUT;
out[15..0] : OUTPUT;
)
VARIABLE
q[3..0] : NODE;
BEGIN
(q[3..0], ) = 4count (clk, , , , , GND, , , , );
% эквивалент подставляемой ссылки со связью по имени порта %
% (q[3..0], ) = 4count (.clk=clk, .dnup=GND); %
% эквивалент подставляемой ссылки со связью по имени порта %
% и предложением RETURNS, определяющим требуемый выход %
% q[3..0] = 4count (.clk=clk, .dnup=GND) %
% RETURNS (qd, qc, qb, qa); %
out[15..0] = 16dmux (.(d, c, b, a)=q[3..0]);
% эквивалент подставляемой ссылки со связью по положению порта %
% out[15..0] = 16dmux (q[3..0]); %
END;
Прототипы функций 4count.inc и 16dmux.inc приведены ниже:
FUNCTION 4count (clk, clrn, setn, ldn, cin, dnup, d, c, b, a)
RETURNS (qd, qc, qb, qa, cout);
FUNCTION 16dmux (d, c, b, a)
RETURNS (q[15..0]);
Ссылки на 4count и 16dmux появляются в первом и втором булевых уравнениях в разделе Logic, соответственно. Ссылка на 4count использует связь по положению порта, тогда как ссылка на 16dmux использует связь по имени порта. Входные порты обоих макрофункций определяются с правой стороны ссылки, а выходные порты с левой.
Комментарии демонстрируют эквивалентные ссылки для различных видов связи с портом.В ссылке порты с правой стороны символа равенства (=) можно перечислять с помощью или связи по положению или по имени порта. Порты с левой стороны символа равенства всегда используют связь по положению. При использовании связи по положению важен порядок портов, так как существует соответствие один в один между порядком портов в прототипе функции и портами, определенными в разделе Logic. В ссылке на 4count запятые используются как разделители для портов, которые не соединяются точно.
Предложение RETURNS является дополнительным с ссылке. RETURNS можно использовать для перечисления подмножества выходов функции, которые используются в экземпляре.
Примитивы и макрофункции всегда имеют значения по умолчанию для не подсоединенных входов. Напротив, мегафункции необязательно имеют их.