Зві т
з лабораторної работи №6
дисципліна: «Технології проектування компьютерных систем»
Виконав: Проверил:
Ст. гр. КІУКІ 16-4 Шевченко О.Ю.
Давиденко Б.Є
Харків 2019
6.1 Цель работы
Вариант №7
op 3 бита
pack_len 32 битов
src 32 битов
dst 32 битов
// Копия интерфейса
dut_if dut_if1();
// Генератор синхросигнала
initial begin
dut_if1.clock = 0;
forever #5 dut_if1.clock = ~dut_if1.clock;
end
initial begin
// Поместить интерфейс в конфигурационную базу UVM
uvm_config_db#(virtual dut_if)::set(null, "*", "dut_vif", dut_if1);
// Запуск тестирования
run_test("my_test");
end
// База вейвформ
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, top);
end
endmodule
Листинг 6.1 – TestBench.sv
package my_testbench_pkg;
import uvm_pkg::*;
my_driver driver;
uvm_sequencer#(my_transaction) sequencer;
endclass
my_agent agent;
endclass
my_env env;
endclass
endpackage
Листинг 6.2 – my_testbench_pkg.shv
`uvm_object_utils(my_transaction)
endclass: my_transaction
`uvm_object_utils(my_sequence)
task body;
repeat(8) begin
req = my_transaction::type_id::create("req");
start_item(req);
if (!req.randomize()) begin
`uvm_error("MY_SEQUENCE", "Randomize failed.");
end
finish_item(req);
end
endtask: body
endclass: my_sequence
Листинг 6.3 – my_sequence.shv
`uvm_component_utils(my_driver)
@(posedge dut_vif.clock);
seq_item_port.item_done();
end
endtask
endclass: my_driver
Листинг 6.4 – my_driver.svh
endinterface
`include "uvm_macros.svh"
// Тестируемый модуль.
//
// Единственная функция, которую он реализует, - это вывод сообщения
// по переднему фронту clock
module dut(dut_if dif);
import uvm_pkg::*;
always @(posedge dif.clock)
if (dif.reset != 1) begin
`uvm_info("DUT", $sformatf("Received op=0x%b, pac_len=0x%b, src=0x%b,
dst=0x%b", dif.op, dif.pac_len, dif.src, dif.dst), UVM_MEDIUM)
end
endmodule
Листинг 6.5 – design.sv
Рисунок 6.1–Моделювання Verilog-моделі