ID Artikel: 000076343 Jenis Konten: Pemecahan Masalah Terakhir Ditinjau: 05/10/2015

Mengapa blok DSP Titik Tetap Asli saya menunjukkan latensi yang tidak terduga dalam simulasi?

Lingkungan

  • Intel® Quartus® II Edisi Berlangganan
  • DSP
  • Simulasi
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Deskripsi

    Untuk beberapa kombinasi parameter, simulator, dan gaya pengkodean RTL, latensi blok ini dalam simulasi menyimpang dari latensi yang diharapkan oleh , - satu clock. Perangkat keras aktual menunjukkan latensi yang diharapkan.

    Perilaku ini akan terlihat, misalnya, jika clock yang menggerakkan blok DSP adalah versi clock yang tertunda yang menghasilkan data input, sehingga memperkenalkan lebih banyak penundaan simulasi untuk clock input daripada untuk data yang diinput.

    Resolusi

    Untuk mengatasi masalah ini, Anda harus memastikan bahwa keterlambatan antara clock yang menghasilkan data input ke blok DSP, dan clock input blok DSP, diseimbangkan dengan penundaan pada data yang diinput. Atau, pastikan data input tiba pada waktu absolut nanti, atau waktu tunda delta simulasi di kemudian hari, dibandingkan dengan clock input blok DSP.

    Perhatikan bahwa hal-hal seperti pernyataan penugasan yang lebih banyak pada jalur clock vs. jalur data akan menyebabkan perbedaan penundaan delta simulasi di antara jalur tersebut.

    Untuk mencapai hal ini, modifikasi testbench Anda untuk:

    1. Pastikan clock menghasilkan input ke blok DSP Asli adalah sinyal yang persis sama dengan input clock ke blok DSP Asli.
    2. Jika #1 tidak memungkinkan, tunda data input relatif terhadap clock.

    Misalnya, pertimbangkan kode RTL asli berikut:

    RTL asli:

    clk_gen: proses
    Mulai
    clk_orig <= \'0\';
    menunggu 5 ns;
    clk_orig <= \'1\';
    menunggu 5 ns;
    proses akhir;

    ...

    jika (rising_edge(clk_orig)) maka
    ax <= ax 1;
    ay <= ay - 1;
    akhir jika

    mac_test_bad_style: mult_acc
    peta port (
    ...
    ax => std_logic_vector(ax), -- [in]
    ay => std_logic_vector(ay), -- [in]
    clk => ("00" & clk_orig), -- [in]
    resulta => resulta2, -- [out]
    ...
    );

    resulta2 akan menunjukkan satu clock kurang latensi dari yang diharapkan. Perhatikan bahwa penggabungan "00 & clk" dalam penetapan port clk multiplier\' menambahkan penundaan delta simulasi dari "clk_orig" yang menghasilkan data input.

    Kemungkinan penanganan masalah meliputi:

    Contoh 1, Rekomendasi: Gunakan clock 3-bit di seluruh area

    Anda dapat menghasilkan clock 3-bit multiplier\ secara langsung dan menggunakan bit aktif untuk clock data yang diinput:

    clk_gen: proses
    Mulai
    < clk3bit= \'000\';
    menunggu 5 ns;
    < clk3bit= \'001\';
    menunggu 5 ns;
    proses akhir;

    ...

    jika (rising_edge(clk3bit(0)) maka
    ax <= ax 1;
    ay <= ay - 1;
    akhir jika

    mac_test_bad_style: mult_acc
    peta port (
    ...
    ax => std_logic_vector(ax), -- [in]
    ay => std_logic_vector(ay), -- [in]
    clk => (clk_3bit), -- [in]
    resulta => resulta2, -- [out]
    ...
    );

    Contoh 2, Rekomendasi Alternatif: tambahkan penundaan terkait ke data yang diinput

    Pernyataan \'clk => ("00" & clk_orig)\' menyebabkan port \'clk" memiliki penundaan delta simulasi tambahan dari \'clk_orig\' yang\'s mendorong data. Untuk mengatasi hal ini, Anda dapat menggunakan proses clk_gen asli dan menambahkan penundaan delta simulasi ke data dengan pernyataan penugasan.

    clk_gen: proses (sama seperti aslinya)

    ax_del <= kapak;
    ay_del<=ay;

    mac_test_bad_style: mult_acc
    peta port (
    ...
    ax => std_logic_vector(ax_del), -- [in]
    ay => std_logic_vector(ay_del), -- [in]
    clk => ("00" & clk_orig), -- [in]
    resulta => resulta2, -- [out]
    ...
    );

    Produk Terkait

    Artikel ini berlaku untuk 1 produk

    Intel® Arria® 10 GX FPGA

    Isi halaman ini adalah kombinasi terjemahan manusia dan komputer dari konten berbahasa Inggris. Konten ini diberikan hanya untuk kenyamanan Anda serta sebagai informasi umum dan tidak bisa dianggap sebagai lengkap atau akurat. Jika terdapat kontradiksi antara versi bahasa Inggris halaman ini dan terjemahannya, versi bahasa Inggris akan didahulukan. Lihat versi bahasa Inggris halaman ini.