開發環境:VHDL, Leon3, Quartus
應用場合:在VHDL設計文件中,常見到如下代碼出現在首段,作為類似頭文件的作用(例如Verilog中的include),本文闡述的是這段語句如何在工程中使用:
1 library ieee; 2 use ieee.std_logic_1164.all; 3 4 --Leon庫 5 library grlib; 6 use grlib.amba.all; 7 use grlib.stdlib.all; 8 library techmap; 9 use techmap.gencomp.all; 10 library gaisler; 11 use gaisler.memctrl.all; 12 use gaisler.leon3.all; 13 use gaisler.uart.all; 14 use gaisler.misc.all; 15 use gaisler.jtag.all; 16 library esa; 17 use esa.memoryctrl.all; 18 use work.config.all; 19 20 -- 用戶自定義庫 21 library rcq; 22 use rcq.seg.all;
1. library
例如:library grlib
則系統首先在項目文件中尋找相關的文件路徑(查看是否有該文件名),例如項目中文件有:

當搜素到有grlib時,會把grlib申明為一個庫,把grlib目錄下的文件當作庫中的文件。
2. Package
當申明了庫grlib后,一般會有:
use grlib.amba.all;
其中amba是Package,所以能被調用。amba.vhd部分代碼如下:
1 library ieee; 2 use ieee.std_logic_1164.all; 3 use ieee.numeric_std.all; 4 -- pragma translate_off 5 use std.textio.all; 6 -- pragma translate_on 7 library grlib; 8 use grlib.config.all; 9 use grlib.stdlib.all; 10 11 package amba is 12 13 14 constant CORE_ACDM : integer := CFG_AHB_ACDM; 15 16 constant NAHBMST : integer := 16; -- maximum AHB masters 17 constant NAHBSLV : integer := 16; -- maximum AHB slaves 18 constant NAPBSLV : integer := 16; -- maximum APB slaves 19 constant NAHBIRQ : integer := 32; -- maximum interrupts 20 constant NAHBAMR : integer := 4; -- maximum address
由於申明了amba為package,因此能通過use grlib.amba.all來調用amba.vhd文件,使用其內部申明的變量。
3. 用戶自定義庫
那用戶如何把自己的文件作為庫添加到工程里面呢?步驟如下:
1) 用戶編寫VHDL設計代碼,然后在Quartus里面把文件導入至工程中,如下:

其中seg.vhd申明了seg為Package,以便調用
1 package seg is 2 3 -- Design Code 4 5 end package;
2)在工程頂層文件leon3mp.vhd中,申明如下代碼:
1 -- 用戶自定義庫 2 library rcq; //定義了庫rcq,系統查找項目中的目錄 3 use rcq.seg.all; //調用了rcq目錄包含的seg(Package),則相當於 4 //include了seq.vhd文件
這樣,通過library及use語句把頭文件(申明變量等)加進設計文件中,以便使用其中的模塊及變量。
* 感謝曾博
