Вы находитесь на странице: 1из 4

Міністерство освіти і науки України

Харківський національный університет радиоелектроніки

Кафедра Автоматизація проектування обчислювальної техніки


(повна назва)

Зві т
з лабораторної работи №5
дисципліна: «Технології проектування компьютерных систем»

Ассерції
(тема)

Виконав: Проверил:
Ст. гр. КІУКІ 16-5 Шевченко О.Ю.
Давиденко Б.Є

Харків 2019

5.1 Цель работы


Изучение методов контроля за правильностью функционирования
проекта с помощью SystemVerilog-ассерций.

5.2 Исходные условия для выполнения работы


Вариант №7
Устройство содержит входы R, St(1 бит), Data0(16 бит), Data1(16 бит), S0 (1
бит), S1 (1 бит), выход F(8 бит).
Прямая ассерция проверяет, чтобы сигналы St, S0 и S1 были определены (не
были равны X).
Построить последовательность-шаблон, где сигнал A равен 1, через 6-10
тактов сигнал B больше нуля и не содержит X. Синхросигнал не указывается.
Свойство не анализируется, если R = 1. Синхронизируется передним
фронтом clk. Проверяет условие, что через такт, после того как St стало 1,
должна выполниться описанная последовательность для сигналов (S0, Data0)
или сигналов (S1, Data1), иначе возвращается значение истина.

5.3 Ход выполнения работы

5.3.1 Согласно варианту задания разработан управляющий автомат


// Code your testbench here
// or browse Examples

module device_tb();

reg clk = 0;
reg R = 0, St, S0 = 1, S1 = 1;
shortint Data0, Data1;
byte F;

always #5 clk ++;

initial begin
#10 St = 1; Data0 <= 47; Data1 <= 228;
#5 St = 0;

#10 St = 1;
#5 St = 0;
// Make the assertion fail
#45 S1 = 0; S0 = 0;

// Make the assertion pass


#10 S1 = 1; S0 = 1; St = 1;
#5 St = 0;

// The property does not work


#5 R = 1; St = 1;
#5 St = 0;

// Make the assertion fail


#30 Data0 <= 0; Data1 <= 0; R = 0; St = 1;
#5 St = 0;

#10 St = 1;
#5 St = 0;
// Make the assertion pass
#40 Data0 <= 1337; Data1 <= 1488;

#20 $finish;
end

assertion dut (R, St, S1, S0, Data0, Data1, F, clk);


initial
$dumpvars(0, device_tb);

endmodule
Листинг 5.1 – Testbench.sv
vsim +access+r;
run -all;
acdb save;
acdb report -db fcover.acdb -txt -o cov.txt;
exit
Листинг 5.2 – run.do
// Code your design here
module assertion(
input reg R, St, S0, S1,
input shortint Data0, Data1,
output byte F,
input clk
);
sequence seq(A, B);
(A == 1) ##6 (B > 0 && !$isunknown(B));
endsequence

always @(posedge clk) begin


assert (!$isunknown(St) && !$isunknown(S1) && !$isunknown(S0));
end

property system_prop;
@(posedge clk)
disable iff (R) (St == 1 && (($past(St, 1) == 0) ||
($isunknown($past(St, 1))))) ##1 (seq(S0, Data0) or seq(S1, Data1));
endproperty

system_prop_assert : assert property (system_prop)


$display("@%0dns Assertion OK", $time);
else
$display("@%0dns Assertion Failed", $time);

always @ (posedge clk) begin


F <= Data0;
end
endmodule

Листинг 5.3 – design.sv


Рисунок 4.1 –Моделювання Verilog-моделі

5.4 Выводы : При выполнении лаборатной работы были изучены


методи контроля за правильностью функционирования проекта с помощью
SystemVerilog-ассерций.