2013-12-09 30 views
9

Farklı VHDL projelerinde tekrar tekrar gördüğüm bir problem, üst düzey test tezgahlarının her zaman büyük ve organize olmasının zor olmasıdır. Temel olarak, EVERY test sinyalinin kontrol edildiği veya onaylandığı, zaman içinde BÜYÜK hale gelen bir ana test süreci vardır. Alt seviyedeki bileşenler için test tezgahları yapabileceğinizi biliyorum, ancak bu soru temel olarak en üst düzey giriş/çıkış testleri için geçerlidir.Büyük VHDL test tezgahları nasıl yönetilir

Bir şeyleri düzenli tutmak için bir çeşit hiyerarşi yapısına sahip olmak isterim. VHDL yordamlarını uygulamayı denedim, ancak derleyici çok mutsuzdu çünkü farklı kod bölümlerinden sinyaller atama girişiminde bulunduğumu düşündüm ...

VHDL'de c programcılığının inline- işlev ya da ön işlemci önyükleme makroları? Eğer değilse, ne önerebilirsiniz? Benim üst düzey test tezgahı gibi görünecektir sahip olabilmek için mutlu olacağımı:

testClockSignals(); 
testDigitialIO(); 
testDACSignals(); 
... 

pasta üzerine krema olacağını ayrı bir dosyada bu fonksiyonların uygulanması olmak. bir prosedür değildi sinyallerini erişmeye çünkü Haha ... Sadece belki derleyici şikayet yazmak ve yönetilebilir prosedürlerde test tezgahı kodu mümkündür Ayırma C

cevap

2

test bankları simüle ama istiyorum kapsamında ? Bir prosedür, kapsamda olmayan bir sinyali kontrol etmekse, sinyali, aşağıdaki örnekte verilen procReset örneğinde gösterildiği gibi prosedüre bir argüman olarak verilebilir.

kolay bakım için çok düzeyde olan bir test tezgahı yapı, aşağıda gösterilmiştir:

  1. çalıştırın test durumları: prosedürler

    --========================================================== 
    -- Reusable procedures 
    
    -- Reset generation 
    procedure procReset(signal rst : out std_logic; ...) is 
    ... 
    
    --========================================================== 
    -- Main test control procedure in test bench 
    process is 
    
        ------------------------------------------------------------ 
        -- General control and status 
    
        -- Reset device under test and related test bench modules 
        procedure genReset is 
        begin 
        procReset(rst, 100 ns); -- procReset declared elsewhere 
        -- Other code as required for complete reset 
        end procedure; 
    
        ------------------------------------------------------------ 
        -- Test cases 
    
        procedure testClockSignals is 
        begin 
        genReset; -- Apply reset to avoid test case interdependency 
        -- Test code here, and call genErr if mismatch detected 
        end procedure; 
    
        procedure testDigitialIO is 
        begin 
        genReset; -- Apply reset to avoid test case interdependency 
        -- Test code here, and call genErr if mismatch detected 
        end procedure; 
    
        procedure testDACSignals is 
        begin 
        genReset; -- Apply reset to avoid test case interdependency 
        -- Test code here, and call genErr if mismatch detected 
        end procedure; 
    
    begin 
    
        ------------------------------------------------------------ 
        -- Run test cases 
        testClockSignals; 
        testDigitialIO; 
        testDACSignals; 
        -- End of simulation 
        std.env.stop(0); 
        wait; 
    
    end process; 
    

    yapısında çeşitli seviyeleri vardır Her bir test durumu için denir. Bu nedenle, geliştirme ve hata ayıklama sırasında bir veya test vakası hakkında daha fazla yorum yapmak mümkündür.

  2. Test senaryoları: ayrı ve bağımsız prosedürler olarak yazılan test durum kodunun kendisini sınayın. Farklı test durumlarının arasındaki karşılıklı bağımlılık test altındaki cihazın sıfırlanması ( genReset prosedürü kullanılarak) ve ilgili test tezgah destek modülleri ile önlenir.

  3. Genel kontrol ve durum: Yeniden kullanılabilir test tezgahı özgü prosedür, test ve deney tezgah destek modüllerinin altında cihazın örnek reset için.

  4. Yeniden kullanılabilir yordamlar: Test tezgahı sinyallerini doğrudan değil, yalnızca yordam bağımsız değişkenleriyle kontrol etmez veya kullanmaz. Bu prosedürleri, diğer test tezgahlarında yeniden kullanım için paketlerinde (diğer dosyalar) bulunabilir.Bu test tezgahı kodu doğrudan erişim gerekiyorsa tüm test vaka kodu hala yukarıdaki yaklaşımla aynı dosyada olması beri

test tezgahı dosyası hala, çizgiler oldukça çok sayıda olabilir kontrol etmek için tezgah sinyallerini test edin veya sinyallerini kontrol edin. Sinyal değerleri procReset çağrı için yapıldığı gibi, argümanlar ile vaka prosedürlerin test geçirilebilir, o zaman başka bir pakete test durumu kodunu taşımak mümkündür.

5

O (@MortenZdk anlaşılacağı gibi) Ya süreçte prosedürleri yazmak veya buna tüm IO geçmesi bir VHDL gerekliliktir.

Benim tercih sadece ambalajlarda benim prosedürleri koymak, bu yüzden pas tüm GÇ yaklaşımı kullanır. Neler geçtiğini basitleştirmek için kayıtları kullanıyorum. Eğer onu bir kayda indirirseniz, kayıt dışı bırakılır ve kayıt unsurlarında çözünürlük işlevleri gerektirir.

daha bu yaklaşımın olabileceği hakkında fikir Goto için

: at "VHDL Testbench Teknikleri Birdirbir SystemVerilog" ((altına yakın) "... Ön Kullanımı Yoluyla Doğrulama Hızlanan" ve : http://www.synthworks.com/papers/ ve kağıtlar başlıklı bakın üst)

bir diğer önemli yönü, her bir bağımsız arayüz için ayrı bir işlem kullanmaktır. Bu şekilde uyaran farklı arayüzler için eşzamanlı olarak üretilebilir. Bu da makalelerde gösterilmiştir.

0

Her bir blok için daha düşük seviye test tezgahlarınız varsa, bunları en üst düzeyde kullanabilirsiniz.

Anahtar alt düzey test öğeleri varlıklarını kendi başlarına yaparak, bunları, daha önceki düzeydeki test öğelerine dönüştürebilirsiniz; kullanarak.

Örneğin, bir görüntü işleme FPGA, sen algoritmik kısımlarını kontrol etmek için bazı görüntü kaynak ve veri denetimi kodu olurdu. Bunlar, üst düzey FPGA pimlerine veri sağlamak için olduğu gibi veya bazı sargılarla kullanılabilir ve daha sonra pim çıkışlarını orijinal kontrol kodunun gerektirdiği biçime geri çözer. Şüphesiz, alt seviyede test edilmiş olan kayıt kurulum kodu, FPGA pimlerini uygun bir şekilde kıpır kıpır kıpır kıpır kıpır kıpır kıpır kıpır kıpır kıpır kılarak sonuçlannın yorumlanmasına neden olabilir.

iki kod kümelerinin birleşimi görüntü işleme boru hattı ve bu boru hattının kayıt yapılandırmasının uçtan uca fonksiyonunu kontrol etmenizi sağlar.