UVM; “seperation of concerns” yaklaşımıyla geliştirilmiş, “testbench” geliştirmeye olanak sağlayan bir framework’tür. Peki nedir bu “seperation of concerns” yani, SoC (system-on-chip ile karıştırılmasın 😊)? Kısa tanımıyla, farklı işlere yarayan parçaların birbirinden ayrı olarak konumlandırılmasıdır. Kullanıcılara sağladığı fayda ise, esneklik, modülerlik ve yüksek kod kalitesi [1]. İşte UVM’i geliştirenler bu yaklaşımı benimseyip, test geliştiricilerin doğrulanması gereken fonksiyonelliğe odaklanmalarını sağlayarak işlevselliği arttırmayı hedeflemişlerdir.
Test senaryolarının geliştirildiği ve koşturulduğu ortam; genellikle “testbench” olarak ifade ediliyor. Bu kavramı tanıtmayı da es geçmeden dersimize devam edelim.
Bir UVM Testbench’te yer alan her komponentin belirli bir amacı var ve her dersimizde bu komponentleri ve kullanım amaçlarını detaylandırarak ilerleyeceğiz.
Testbench, DUT , yani Design Under Test, ile doğrulama komponentlerimizin birbirine bağlanıp etkileşime girdiği ortamdır. Agent olarak ifade edilen doğrulama komponentleri, Driver, Monitor, Sequence(ler) ve Sequencer’dan oluşur ve DUT arayüzünü monitör etmek ve/veya sinyal seviyesinde sürmek için kullanılır. Testbench ortamımızın ana işçileri temelde Agent’lardır.
Aşağıdaki diyagramda bir testbench’in nasıl gözüktüğü şematize edilmiştir. Agent’ın alt komponent’lerinin görevlerini sıralayacak olursak;
İlk bakışta biraz karmaşık gözükse de burada bahsettiğimiz komponentlerin aslında her biri SystemVerilog class’tır ve hepsi ayrı bir amaç için Testbench’imizde konumlandırılmıştır. Temelde Agent’ların içinde dönen bu iletişimi kavradığımızda yapının büyük çoğunluğunu kavramış sayılıyoruz. Daha kompleks bir testbench ortamında da bu Agent’lardan onlarcasının olduğunu hayal edin. Tek farkı nicelik. Tabi burada bahsetmediğimiz bazı komponenler de var. Onları sırası geldiğinde detaylandıracağız.
Bu ders, işin biraz sözel kısmına değindik. Bir sonraki derste Windows/Linux bir ortam üzerinde “Merhaba Dünya” yazdıracağız 😊
[1] https://medium.com/hesapkurdu-development/mevcut-projede-separation-of-concern-uygulamak-617082d45e85