ID Artikel: 000091832 Jenis Konten: Pemecahan Masalah Terakhir Ditinjau: 23/08/2023

Mengapa perangkat lunak mensintesis sejumlah besar tingkat logika untuk for-loop dalam desain saya ketika pernyataan if-ditumpuk dalam loop?

Lingkungan

    Intel® Quartus® Prime Edisi Pro
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Deskripsi

Jika desain Anda berisi for-loop seperti ini:

bilangan bulat i;

untuk( i = ... ; ... ; ... ) mulai

a = ekspresi i ;

jika( ...... pernyataan kondisional tentang a ) mulai

Pernyataan;

......

Akhir

Akhir

Perangkat Lunak Prime Pro Edition Intel® Quartus® dapat mensintesis sejumlah besar tingkat logika dalam for-loop ini.

Resolusi

Jika for-loop berisi kondisi ini maka tidak dapat dioptimalkan untuk kedalaman logika

  • Ekspresi penugasan yang bergantung pada variabel kontrol loop
  • Pernyataan if bersarang di loop yang menggunakan hasil penetapan sebagai kondisi select

Pernyataan penugasan yang bergantung pada variabel kontrol loop harus dipindahkan dari blok for-loop untuk memungkinkan pengoptimalan lebih lanjut. Setelah berada di luar loop, pernyataan penugasan dapat dikonversi ke penugasan paralel ke setiap bit vektor. Kemudian hasil penugasan setiap siklus dapat diindeks oleh variabel kontrol loop dalam vektor yang baru dibuat ini.

Kode dapat dimodifikasi sebagai:

vektor[ N ] = ... ;

......

vektor[ 2 ] = ... ;

vektor[ 1 ] = ... ;

bilangan bulat i ;

untuk( i = ... ; ... ; ... ) mulai

jika( ...... Pernyataan kondisional tentang vektor[i] ) dimulai

Pernyataan;

......

Akhir

Akhir

Optimasi ini cocok untuk kasus-kasus di mana jumlah siklus tetap dan tidak terlalu besar. Optimasi dapat meningkatkan penggunaan ALUT sekaligus mengurangi jumlah tingkat logika.

Versi masa depan dari Perangkat Lunak Intel® Quartus® Prime Pro Edition dijadwalkan untuk mengoptimalkan kode asli secara otomatis.

Produk Terkait

Artikel ini berlaku untuk 1 produk

Perangkat yang Dapat Diprogram Intel®

1

Konten pada halaman ini adalah kombinasi terjemahan manusia dan komputer dari konten asli berbahasa Inggris. Konten ini disediakan untuk kenyamanan Anda dan hanya untuk informasi umum dan tidak boleh dianggap lengkap atau akurat. Jika ada kontradiksi antara versi bahasa Inggris halaman ini dan terjemahannya, versi bahasa Inggris yang akan mengatur dan mengendalikan. Lihat versi bahasa Inggris halaman ini.