Testbench Top (Gün 6)
Gün 6: Bitirme Projesi - Bölüm 1 | Gün 6 sonunda oluşturulan altyapı testi
Kaynak Kod
// =============================================================================
// GUN 6 - Konu 5: Top-Level Testbench (Altyapi)
// =============================================================================
// Bu dosya Gun 6'nin sonunda elde edilen mimaridir.
// Gun 7'de Monitor, Scoreboard ve Environment eklenecektir.
// =============================================================================
// Dosya dahil etme (include)
`include "6_2_transaction.sv"
`include "6_3_generator.sv"
`include "6_4_driver.sv"
module tb_top_day6;
// Saat uretimi
logic clk = 0;
always #5 clk = ~clk; // 100MHz
// Interface
alu_if aif(clk);
// DUT baglantisi
alu dut (
.clk (aif.clk),
.rst_n (aif.rst_n),
.in_valid (aif.in_valid),
.operand_a (aif.operand_a),
.operand_b (aif.operand_b),
.opcode (aif.opcode),
.out_valid (aif.out_valid),
.result (aif.result),
.flags (aif.flags)
);
// Mailbox'lar
mailbox #(ALU_Transaction) gen2drv_mbx;
mailbox #(ALU_Transaction) drv2scb_mbx;
// Bilesenler
ALU_Generator gen;
ALU_Driver drv;
initial begin
$display("============================================================");
$display(" GUN 6: ALU Testbench - Altyapi Testi");
$display("============================================================\n");
// Mailbox olustur
gen2drv_mbx = new();
drv2scb_mbx = new();
// Bilesenleri olustur
gen = new(gen2drv_mbx, 20);
drv = new(aif, gen2drv_mbx, drv2scb_mbx);
// Reset
drv.reset();
// Calistir
fork
gen.run();
drv.run();
join_any
// Generator bitene kadar bekle
wait(gen.done.triggered);
#200;
$display("\n --- Gun 6 Istatistikler ---");
$display(" Uretilen : %0d", gen.num_transactions);
$display(" Surulen : %0d", drv.driven_count);
$display("\n============================================================");
$display(" GUN 6 TAMAMLANDI");
$display(" (Gun 7'de Monitor, Scoreboard ve Coverage eklenecek)");
$display("============================================================");
$finish;
end
// Dalga formu kaydi
initial begin
$dumpfile("alu_tb.vcd");
$dumpvars(0, tb_top_day6);
end
endmodule