Masalah Kritis
Karena masalah dalam perangkat lunak Quartus® II versi 12.1 SP1, pemesanan dalam File Pengaturan Quartus II project\ Anda (.qsf) dapat diubah secara tiba-tiba.
Perilaku ini dapat terjadi ketika Anda membuka proyek yang ada atau saat Anda menjalankan perintah Upgrade IP.
Jika proyek Anda memiliki ketergantungan urutan file Synopsys Design Constraint (.sdc), penyortiran ulang ini dapat mengakibatkan pengaturan frekuensi yang tidak diharapkan atau penetapan waktu lainnya. Anda bisa memiliki proyek yang memiliki beberapa tingkat file Quartus II IP (.qip). Di dalam berkas .qip , Anda mungkin memiliki referensi ke berkas .qip atau .sdc tambahan. Misalnya, lihat bagian penanganan masalah di bawah ini. Pengaturan .sdc yang salah dapat menyebabkan perilaku desain atau kesalahan fungsional yang salah.
File skrip Tcl tersedia untuk memeriksa apakah desain Anda terpengaruh oleh masalah ini. Unduh qip_checker.tcl untuk mengidentifikasi apakah ada kemungkinan masalah pemesanan file. Anda dapat menjalankan skrip ini dengan perintah berikut:
quartus_sh -t qip_checker.tcl [-force]
Untuk penggunaan terperinci pada skrip ini, ketik
quartus_sh -t qip_checker.tcl
Patch tersedia untuk memperbaiki masalah ini untuk perangkat lunak Quartus II versi 12.1 SP1. Unduh dan instal patch 1.33 dari tautan yang sesuai di bawah ini:
- Unduh versi 12.1 SP1 patch 1.33 untuk Windows (.exe)
- Unduh versi 12.1 SP1 patch 1.33 untuk Linux (.tar)
- Unduh Readme untuk perangkat lunak Quartus II versi 12.1 SP1 patch 1.33 (.txt)
Patch ini kompatibel dengan perangkat lunak Quartus II versi 12.1 SP1 (build 243).
Patch 1.33 tidak kompatibel dengan patch perangkat lunak Quartus II versi 12.1 SP1 (1.dp) untuk perangkat Stratix® V, Arria® V, dan Cyclone® V. Jika Anda menggunakan perangkat ini, Anda dapat memperbaiki masalah ini dengan meningkatkan ke patch perangkat 1.dp6 atau yang lebih baru menggunakan tautan dalam solusi terkait di bawah ini.
Jika Anda tidak dapat menggunakan patch ini, Anda dapat menghindari masalah ini dengan membuat file teks yang disebut quartus.ini di direktori proyek Anda (jika belum ada). Tambahkan baris berikut dalam berkas teks untuk mencegah penyusuran ulang berkas:
disable_ip_regen=on
Opsi ini akan menonaktifkan beberapa fitur regenerasi IP otomatis, sehingga Anda mungkin harus meregenerasi IP menggunakan operasi baris perintah.
Jika Anda telah mengalami masalah ini, Anda harus melakukan langkah-langkah berikut:
- Terapkan patch atau segera terapkan
disable_ip_regen=on
pengaturan ini - Hapus tugas apa pun di .qsf yang memiliki
-qip
atau-sip
argumen - Periksa
QIP_FILE
tugas di dalam .qsf dan hapus semua yang bukan milik tingkat atas - Modifikasi .qsf untuk memperbaiki urutan file .sdc dan .qip secara manual
Di bawah ini adalah contoh urutan efek yang harus Anda perbaiki secara manual jika desain Anda terpengaruh.
Sebagai contoh, sebelum perangkat lunak Quartus II versi 12.1 SP1, desain memiliki file .sdc dan .qip berikut yang tercantum dalam berkas .qsf proyek:
a.qsf:
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name SDC_FILE a_after.sdc
a.qip:
set_global_assignment -name SDC_FILE aqip_before.sdc
set_global_assignment -name QIP_FILE asub.qip
set_global_assignment -name SDC_FILE aqip_after.sdc
asub.qip:
set_global_assignment -name SDC_FILE asub.sdc
Berikut adalah urutan file dari memori:
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name SDC_FILE aqip_before.sdc # from qip a.qip
set_global_assignment -name QIP_FILE asub.qip # from qip a.qip
set_global_assignment -name SDC_FILE asub.sdc # from qip asub.qip
set_global_assignment -name SDC_FILE aqip_after.sdc # from qip a.qip
set_global_assignment -name SDC_FILE a_after.sdc
Oleh karena itu proyek membaca tugas SDC_FILE dalam urutan berikut:
- a_before.sdc
- aqip_before.sdc
- asub.sdc
- aqip_after.sdc
- a_after.sdc
Dalam perangkat lunak Quartus II versi 12.1 SP1, setelah memicu masalah perangkat lunak (membuka proyek atau meningkatkan IP), .qsf akan terlihat sebagai berikut:
a.qsf:
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name SDC_FILE a_after.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name QIP_FILE asub.qip
Berikut adalah urutan file dari memori:
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name SDC_FILE a_after.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name SDC_FILE aqip_before.sdc # from qip a.qip
set_global_assignment -name QIP_FILE asub.qip # from qip a.qip
set_global_assignment -name SDC_FILE aqip_after.sdc # from qip a.qip
set_global_assignment -name QIP_FILE asub.qip
set_global_assignment -name SDC_FILE asub.sdc # qip asub.qip
Oleh karena itu proyek membaca tugas SDC_FILE dalam urutan berikut:
- a_before.sdc
- a_after.sdc
- aqip_before.sdc
- aqip_after.sdc
- asub.sdc
Jika desain tergantung pada pesanan .sdc yang dibaca, urutan yang diubah ini dapat memengaruhi hasil optimisasi desain dan analisis waktu. Untuk memperbaiki masalahnya, tambahkan pengaturan ini seperti yang dijelaskan di atas, lalu perbaiki .qsf untuk menggunakan urutan penetapan yang benar asli. Untuk memeriksa dengan cepat apakah pesanan telah diubah, lihat .qsf yang dihasilkan sebelum perangkat lunak Quartus II versi 12.1 SP1.
Masalah ini telah diperbaiki berawal dari perangkat lunak Quartus II versi 13.0.