Bagaimana saya bisa mengeluarkan sinyal internal kode sumber VHDL saya ke testbench saya sehingga saya bisa melihatnya sebagai bentuk gelombang? Saya menggunakan HDL Aktif. Saya ingin tahu apakah ada alat yang independen untuk mencapai tujuan saya. Bantuan apa pun dihargai.
Saya mendapatkan kesalahan ini sekarang.
Kode sumber saya adalah
entity SPI_DAC is
Port (
-- inputs and oututs
)
end SPI_DAC;
architecture Behavioral of SPI_DAC is
--These are my internal signals
signal ch1_byte_data_sent : STD_LOGIC_VECTOR(23 downto 0) := x"000000";
signal ch1_byte_cmd_sent : STD_LOGIC_VECTOR(23 downto 0) := x"000000";
--and a few other signals
begin
--functionality
end Behavioral;
Kode testbench saya adalah
entity tb_spi_dac is
end tb_spi_dac;
architecture behavioral of tb_spi_dac is
component spi_dac
port(
--declaration, inputs and outputs
);
end component;
begin
uut: spi_dac port map(
--map ports
);
--stimulus process
end;
.tp_spi_dac.uut.ch1_byte_data_sent
.Jawaban:
Apa yang Anda cari disebut nama eksternal (atau nama hierarkis) di VHDL. Mereka dapat digunakan untuk menghindari visibilitas ruang lingkup / hierarki. Sintaksnya seperti contoh di bawah ini.
Anda juga dapat mengakses konstanta dan variabel dengan nama eksternal. Anda harus mengubah jenis dalam tipe eksternal. Anda dapat menggunakan nama eksternal secara langsung untuk akses baca / tulis. Namun Anda harus menggunakan alias untuk meningkatkan keterbacaan.
Nama eksternal harus berisi jalur ke elemen yang ingin Anda akses. Jalan dapat berupa absolut atau relatif. Elemen individual di jalur Anda dipisahkan oleh titik-titik. Perhatikan bahwa Anda harus memberikan label instance / proses / entitas / ... dan bukan nama. Path absolut dimulai dengan
.
diikuti oleh nama level teratas Anda. Untuk jalur relatif yang dapat Anda gunakan^
untuk naik dalam hierarki. Saat menggunakan konstanta / sinyal dari beberapa paket Anda juga dapat menggunakan@
untuk pindah ke perpustakaan.Contoh untuk jalur absolut adalah
Untuk mengakses elemen yang sama dari testbench dengan nama relatif yang dapat Anda gunakan
Ketika Anda ingin mengakses beberapa sinyal testbench / konstan dari sub_instance yang dapat Anda gunakan
Untuk mengakses konstanta lain dalam paket konfigurasi yang terletak di pustaka konfigurasi yang dapat Anda gunakan
Anda dapat menggunakan simulator / browser desain simulator Anda seperti yang ditunjukkan David untuk menemukan nama jalur yang benar.
Fitur ini ditambahkan dalam VHDL-2008 sehingga harus didukung oleh semua alat yang sudah memiliki dukungan VHDL-2008 (termasuk saya kira ActiveHDL). Kebanyakan simulator tidak menggunakan VHDL-2008 secara default tetapi memberikan argumen baris perintah atau opsi konfigurasi untuk mengaktifkannya.
sumber
alias
Anda harus menulis tugas dalam pernyataan baru. Keuntungannya adalah Anda dapat menggunakan nama alias alih-alih nama eksternal yang panjang.Bangku uji menyiratkan simulasi - suatu entitas tanpa port umumnya tidak sintesis memenuhi syarat.
Walaupun saya belum pernah menggunakan Active-HDL, saya memahaminya memiliki browser desain yang memungkinkan Anda untuk mengambil sinyal dalam hierarki Anda untuk ditampilkan dalam bentuk gelombang Anda. Lihat video Kompilasi dan Simulasi Aldec (5:02, mnt: dtk).
Dan tentang sekarang saya mendapat kesan video dapat menyebabkan kebingungan, mungkin dalam kasus khusus ini.
Pada 2:22 dari akhir, video menunjukkan file do (makro) yang mengontrol simulasi:
Di mana kita melihat setiap sinyal di tingkat atas desain telah ditambahkan ke tampilan gelombang dengan perintah gelombang. Seharusnya juga dimungkinkan untuk menentukan sinyal di mana saja dalam hierarki desain.
Ide dasarnya adalah banyak simulator memungkinkan Anda untuk menjadwalkan sinyal (dan beberapa variabel memungkinkan) dikumpulkan untuk tampilan bentuk gelombang.
Video singkat ini tidak menunjukkan sinyal untuk level hierarki tambahan. (Ada banyak yang diisi dalam presentasi video pendek).
Seperti disebutkan di atas, tujuan Anda tampaknya untuk melihat sinyal internal sebagai bentuk gelombang.
Sekarang untuk berita buruk - tidak ada standarisasi untuk fitur atau antarmuka simulator, penjadwalan sinyal untuk gelombang, dll. Ini semua adalah implementasi yang ditentukan.
Ini dijamin cukup banyak Anda dapat membuang sinyal di mana saja dalam hierarki desain ke penampil bentuk gelombang atau file dump bentuk gelombang dengan implementasi apa pun yang disimulasikan, metode untuk melakukannya adalah implementasi didefinisikan.
Kabar baiknya adalah mereka cenderung menyalin konsep satu sama lain seperti file do, yang dapat Anda hasilkan secara program untuk portabilitas, menggunakan database umum menjelaskan verifikasi fungsional pada beberapa platform implementasi, mengatasi perbedaan dalam sintaksis dan semantik. Kemungkinan juga ada perbedaan dalam sintaks antarmuka baris perintah untuk menjalankan alat secara terprogram.
Gagasan portabilitas tidak merangkul beberapa GUI dengan anggun.
sumber
Alat seperti xilinx memiliki opsi untuk melihat sinyal internal.
Metode alat-independen sederhana mendeklarasikan jalur output terpisah dan menghubungkan sinyal internal ke jalur ini.
sumber
Jika Anda telah mendeklarasikan sinyal dalam testbench tetapi tidak dapat melihat output apa pun, Anda mungkin memiliki masalah dalam pernyataan instantiation di mana Anda instantiate entitas yang akan diuji. Periksa apakah Anda menginstalnya dengan benar, menggunakan pernyataan instantiasi entitas atau instantiasi komponen. Pastikan sinyal di testbench Anda terhubung ke entitas yang diuji. Jika itu tidak menyelesaikan masalah, poskan kode testbench sehingga kami dapat membantu.
sumber