當前位置:首頁 » 編程軟體 » 編譯與頂層實體關系

編譯與頂層實體關系

發布時間: 2023-06-17 18:41:57

Ⅰ 今天在Quartus II 11.0編譯時出現的問題 ,哪位大神給指教下,我的問題出在哪謝謝

頂層設計實體HILL未定義。可能是你頂層實體與體層文件沒有關聯好。

Ⅱ EDA中什麼情況下可以直接對頂層文件進行編譯

QuartusII 是Altera公司開發的功能最強大的PLD編譯工具,全面取代MAX+PLUS

使用步驟:

一、建立工程.

1、「File」→「New Project Wizard」開始新工程的建立設置。『NEXT』

2、指定project的路徑,和project的名稱,頂層文件的名稱(一般與工程名相同)。

3、指定project中要include 的文件。

4、選擇project中要使用的一些EDA TOOLS。

5、選擇所使用的器件的家族「family」 和具體型號。

6、『finish』 完成工程的設置。

二、輸入文件. 在工程中新建設計文件:圖形文件「Block Diagram/Schematic File」,Verilog語言文 件「VerilogHDL File」

1、完成工程文件的輸入,若為頂層文件,則文件名應該保存為與工程名相同。

2、編譯設置:「Assignment」→「Compiler Settings Wizard」→「Next」

3、根據編譯窗口的提示修改錯誤。

4、編譯後會生成編譯報告「Compilation Report」會分成如下幾項:

(1) Analysis&Synthesis語法檢查,把大電路轉成較小的元件

(2) Fitter 器件資源利用情況,引腳分配情況等

(3) Assembler 連線各元件

(4) Timing Analyzer 時間分析

三、模擬. 完成工程文件的編譯、綜合、時間、分析後就可以建立波形模擬文件進行功能模擬

1、建立模擬文件

「File」→「New」→「Other Files」→「Vector Waveform File」→「OK」

2、選擇輸入輸出引腳

Edit→「Insert Node or Bus」→「Node Finder」,在「Filter」處選擇「Pins:all」,再按下「 >>」將所有選中的引腳添加到「Seleted Nodes」框,點「OK」→「OK」完成引腳添加。可通過右鍵 修改引腳的顯示方式、屬性、初始值等參數。

3、模擬時間、柵格的設置

Edit→『End Time』 設置模擬結束的時間, 『Grid Size』設置每個柵格表示的時間。模擬時間是 以建立模擬文件時給出的結束時間為准,模擬設置「Wizards」中設定的End Time沒用。

4、模擬編譯設置

『Assignments』→『Wizards』→『Simulator Settings Wizard』→選擇當前要模擬得文件

模擬文件做好後還要將其設置為當前模擬文件,才可以開始模擬。因為有時一個工程需要建立多個 模擬文件,這就需要通過設置確定仿哪個文件了。在選擇模擬類型「Type of simulation」時,「 timing」代表考慮延時,「functional」表示功能型的模擬。

5、先編譯後模擬

『Processing』→『Start Compilation&Simulation』

6、模擬結束後會生成模擬報告「Simulation Report」

模擬結果並不是出現 在所建立得模擬文件中,在模擬報告中有獨立的模擬結果。

模擬的結果總是與當前的工程文件相對應,工程文件改變後要重新模擬後才有意義。

四、將工程模塊化,利用圖形設計文件建立更大的工程

模塊工程文件(「Block Diagram/Schematic File」或「Verilog HDL File」)編譯模擬成功後就可以 將其模塊化,然後在更高層次將各個模塊級聯起來,構成更大得工程。

1、模塊化

『File』→『Creat/Updata』→『Creat Symbol Files for Current File』 然後編譯器會自動將當前工程完整得編譯一遍,然後生產圖形模塊,放在存放當前工程的文件夾里。

2、更大的工程

(1)建立工程文件

「File」→「New」→「Device Design Files」→「Block Diagram/Schematic File」→「OK」

(2)輸入元件

右鍵→『Insert』→『Symbol』→可以在庫文件中選,也可以通過「瀏覽」將已經建立圖新模塊的 工程載入進來。

(3)連線

Ⅲ vcs生成覆蓋率時,條件編譯的頂層會被當做不同的項目,合並覆蓋率時會出錯,怎麼解決

 要生成覆蓋率報告,要在編譯和模擬的時候,加入一個選項。 -cm  line | fsm | tgl | cond , 指定生成針對什麼條件的覆蓋率報告。如下的makefile,就生成上述四個的覆蓋率報告。注意,編譯和模擬,都要加上-cm這個選項。執行 make vcs , make sim後,會生成simv.vdb文件夾,該文件夾下包含了覆蓋率的內容,但是我們需要將內容生成報告,這樣,才方便我們查看。生成報告,使用的是 urg命令,該命令也是屬於vcs工具裡面的-dir: 指定 .vdb文件夾的位置report: 指定生成報告的格式,報告格式有兩種,一種網頁格式,一種text格式。這里,both代表生成兩種。執行 make urg後,就會生成both文件夾。  這文件夾下的文件,就是覆蓋率報告了。打開dashboard.html。可以看到整體的一些信息。但是我們關心的是設計的,而不是testbench的。點擊hierarchy,得到層次。點擊u1,也就是設計的頂層。可以看到關於該頂層的信息。因為在頂層,都是調用各個子模塊(這里是調用 band_generaterx_tx, uart_txd模塊),所以沒有line的覆蓋率統計,但是有TOGGLE的覆蓋率統計,也就是信號的翻轉。從上面可以看出,對於rst_n信號,沒有從1->0的翻轉,而這個信號是testbench中傳遞的,因此看出,在testbench設計,對於rst_n信號產生,有bug。點擊左下角的uart_txd_1,查看該模塊的信息。  對於該設計,因為有具體的實現,所以可以看到有line的覆蓋率,toggle的覆蓋率,FSM的覆蓋率。對於line覆蓋率,從報告看出,總共有42行,覆蓋到了41行。通過查看代碼,可以知道是哪一行沒有被執行到。對於toggle覆蓋率。從報告看出,只有rst_n有問題,而這問題是testbench的的bug造成的。對於FSM的檢查。從報告看出,每個狀態都有被覆蓋到。但是從有些狀態跳轉到另外的狀態,沒有被覆蓋到。因此造成FSM的覆蓋率不高。通過查看覆蓋率報告,可以查找到設計的缺陷,從而進行修正。

Ⅳ C語言文件的編譯與執行的四個階段並分別描述

開發C程序有四個步驟:編輯、編譯、連接和運行。

任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。

1、預處理:導入源程序並保存(C文件)。

2、編譯:將源程序轉換為目標文件(Obj文件)。

3、鏈接:將目標文件生成為可執行文件(EXE文件)。

4、運行:執行,獲取運行結果的EXE文件。

(4)編譯與頂層實體關系擴展閱讀:

將C語言代碼分為程序的幾個階段:

1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。

2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。

3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。

4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。

Ⅳ 編譯是什麼意思

問題一:編譯和解釋的區別是什麼? 後來為了方便記憶,就將用0、1序列表示的機器指令都用符號助記,這些與機器指令一一對應的助記符就成了匯編指令,從而誕生了匯編語言。無論是機器指令還是匯編指令都是面向機器的,統稱為低級語言。因為是針對特定機器的機器指令的助記符,所以匯編語言是無法獨立於機器(特定的CPU體系結構)的。但匯編語言也是要經過翻譯成機器指令才能執行的,所以也有將運行在一種機器上的匯編語言翻譯成運行在另一種機器上的機器指令的方法,那就是交叉匯編技術。高級語言是從人類的邏輯思維角度出發的計算機語言,抽象程度大大提高,需要經過編譯成特定機器上的目標代碼才能執行,一條高級語言逗遲的語句往往需要若干條機器指令來完成。高級語言獨立於機器的特性是靠編譯器為不同機器生成不同的目標代碼(或機器指令)來實現的。那具體的說,要將高級語言編譯到什麼程度呢,這又跟編譯的技術有關了,既可以編譯成直接可執行的目標代碼,也可以編譯成一種中間表示,然後拿到不同的機器和系統上去執行,這種情況通常又需要支撐環境,比如解釋器或虛擬機的支持,Java程序編譯成bytecode,再由不同平台上的虛擬機執行就是很好的例子。所以,說高級語言不依賴於機器,是指在不同的機器或平台上高級語言的程序本身不變,而通過編譯器編譯得到的目標代碼去適應不同的機器。從這個意義上來說,通過交叉匯編,一些匯消鍵編程序也可以獲得不同機器之間的可移植性,但這種途徑獲得的移植性遠遠不如高級語言來的方便和實用性大。二、編譯與解釋編譯是將源程序翻譯成可執行的目標代碼,翻譯與執行是分開的;而解釋是對源程序的翻譯與執行一次性完成,不生成可存儲的目標代碼。這只是表象,二者背後的最大區別是:對解釋執行而言,程序運行時的控制權在解釋器而不在用戶程序;對編譯執行而言,運行時的控制權在用戶程序。解釋具有良好的動態特性和可移植性,比如在解釋執行時可以動態改變變數的類型、對程序進行修改以及在程序中插入良好的調試診斷信息等,而將解釋器移植到不同的系統上,則程序不用改動就可以在移植了解釋器的系統上運行。同時解釋器山橋李也有很大的缺點,比如執行效率低,佔用空間大,因為不僅要給用戶程序分配空間,解釋器本身也佔用了寶貴的系統資源。編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.1、編輯:用編輯軟體(EDIT.EXE或記事本)形成源程序(.ASM),如:LX.ASM; 2、匯編:用匯編程序(MASM.EXE)對源程序進行匯編,形成目標文件(.OBJ),格式如下:MASM LX.ASM; 3、連接:用連接程序(LINK.EXE)對目標程序進行連接,形成可執行文件(.EXE),格式如下:LINK LX.OBJ; 4、執行:如果結果在屏幕在顯示,則直接執行可執行文件。 5、調試:用調試程序(DEBUG.EXE)對可執行文件進行調試,格式如下:DEBUG LX.EXE1. 在具體計算機上實現一種語言,首先要確定的是表示該語言語義解釋的虛擬計算機,一個關鍵的問題是程序執行時的基本表示是實際計算機上的機器語言還是虛擬機的機器語言。這個問題決定了語言的實現。根據這個問題的回答,可以將程序設計語言劃分為兩大類:編譯型語言和解釋型語言。2. 由編譯型語言編寫的源程序需要經過編譯、匯編和鏈接才能輸出目標代碼,然後機器執行目標代碼,得出運行結果,目標代碼由機器指令組成,一般不能獨立運行,因為源程序中可能使用了某些......>>

問題二:函數的編譯是什麼意思??? 你說的這個問題,是把(不僅僅是數學上的函數式子)某個項目內容,進行編程。也就通過設計好了的運算程序,上百上千次進行與或非門運算。你想,電子,也就是通電斷電額事。寫成數字,就是010100001110000000111101111等等。
這需要專門的【編程員】大費腦筋的。有時候,需要好幾年。

問題三:編譯程序是什麼意思?編譯是什麼意思? 把用高級程序設計語言書寫的源程序,翻譯成等價的計算機匯編語言或機器語言書寫的目標程序的翻譯程序。編譯程序屬於採用生成性實現途徑實現的翻譯程序。它以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出。編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。編譯程序的實現演算法較為復雜。這是因為它所翻譯的語句與目標語言的指令不是一一對應關系,而是一多對應關系;同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關系。但是,由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、復雜性較高、且需要高效運行的高級語言書寫的源程序。

問題四:編譯時間是什麼意思? 在ROM發布的時候,會提供這個ROM的一些版本。
編譯時間能夠告訴用戶這個系統的發布時間。
有一些軟體會提供類似的編譯Revision。功能基本上相同。

問題五:編譯錯誤是什麼意思 編譯錯誤,一般指語法上的錯誤
運行錯誤,一般指程序上的bug

問題六:什麼是編譯原理 編譯:就是將程序語言進行翻譯,生成可供用戶直接執行的二進制代碼,即可執行文件。
任務是個比較模糊的概念,指的是操作系統中正在進行的工作,既可以指進程,也可以指程序。
程序指的是可以連續執行,並能夠完成一定任務的一條條指令的 *** 。
進程是程序在一個數據 *** 上運行的過程,它是傳統操作系統進行資源分配和調度的一個獨立單位。
線程是一個指令執行序列,是操作系統調度的最小單位。一個或多個線程構成進程,構成一個進激的線程之間共享資源。進程和線程之間的最大區別就是線程不能獨立擁有資源,進程擁有自己的資源。

問題七:編譯原理中V*是什麼意思 V是一個符號 *** ,假設V指的是三個符號a, b, c的 *** ,記為 V = {a, b, c }
V* 讀作「V的閉包」,它的數學定義是V自身的任意多次自身連接(乘法)運算的積,也是一個 *** 。
也就是說,用V中的任意符號進行意多次(包括0次)連接,得到的符號串,都是V*這個 *** 中的元素。
0次連接的結果是不含任何符號的空串,記為 ε
1次連接就是只有一個符號的符號串,比如,a,b, c
2次連接是兩個符號構成的符號串,比如,aa, ab, ac, ba, bb, bc,等等
……
n次連接是一個長度為n、由a、b、c三個符號構成的符號串,比如abaacbbac……
因此,V*包含一切由a,b,c三個符號連接而成的、任意長度的符號串(以及空串ε)

問題八:編譯和預編譯有什麼區別。 60分 預編譯又稱為預處理,是做些代碼文本的替換工作。
處理#開頭的指令,比如拷貝#include包含的文件代碼,#define宏定義的替換,條件編譯等
就是為編譯做的預備工作的階段
主要處理#開始的預編譯指令
編譯(pilation , pile) 1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。 2、用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。

問題九:C語言中程序編譯的正確理解及其含義 預處理。首先程序會被送給預處理器了。預處理器執行以#開頭的命令(通常稱為指令)。預處理器有點類似於編輯器,它可以給程序添加內容,也可以對程序進行修改。

編譯。 修改後的程序現在可以進入編譯器了。編譯器會把程序編譯成機器指令(即目標代碼)。然而,這樣的程序是不可運行的。

鏈接。 在最後步驟中,鏈接器把編譯器產生的目標代碼和所需的其他附加代碼整合在一起,這樣才最終產生完全可執行的程序。這些附加代碼包括程序中用到的庫函數(如printf函數)

問題十:編譯和解釋的區別是什麼? 後來為了方便記憶,就將用0、1序列表示的機器指令都用符號助記,這些與機器指令一一對應的助記符就成了匯編指令,從而誕生了匯編語言。無論是機器指令還是匯編指令都是面向機器的,統稱為低級語言。因為是針對特定機器的機器指令的助記符,所以匯編語言是無法獨立於機器(特定的CPU體系結構)的。但匯編語言也是要經過翻譯成機器指令才能執行的,所以也有將運行在一種機器上的匯編語言翻譯成運行在另一種機器上的機器指令的方法,那就是交叉匯編技術。高級語言是從人類的邏輯思維角度出發的計算機語言,抽象程度大大提高,需要經過編譯成特定機器上的目標代碼才能執行,一條高級語言的語句往往需要若干條機器指令來完成。高級語言獨立於機器的特性是靠編譯器為不同機器生成不同的目標代碼(或機器指令)來實現的。那具體的說,要將高級語言編譯到什麼程度呢,這又跟編譯的技術有關了,既可以編譯成直接可執行的目標代碼,也可以編譯成一種中間表示,然後拿到不同的機器和系統上去執行,這種情況通常又需要支撐環境,比如解釋器或虛擬機的支持,Java程序編譯成bytecode,再由不同平台上的虛擬機執行就是很好的例子。所以,說高級語言不依賴於機器,是指在不同的機器或平台上高級語言的程序本身不變,而通過編譯器編譯得到的目標代碼去適應不同的機器。從這個意義上來說,通過交叉匯編,一些匯編程序也可以獲得不同機器之間的可移植性,但這種途徑獲得的移植性遠遠不如高級語言來的方便和實用性大。二、編譯與解釋編譯是將源程序翻譯成可執行的目標代碼,翻譯與執行是分開的;而解釋是對源程序的翻譯與執行一次性完成,不生成可存儲的目標代碼。這只是表象,二者背後的最大區別是:對解釋執行而言,程序運行時的控制權在解釋器而不在用戶程序;對編譯執行而言,運行時的控制權在用戶程序。解釋具有良好的動態特性和可移植性,比如在解釋執行時可以動態改變變數的類型、對程序進行修改以及在程序中插入良好的調試診斷信息等,而將解釋器移植到不同的系統上,則程序不用改動就可以在移植了解釋器的系統上運行。同時解釋器也有很大的缺點,比如執行效率低,佔用空間大,因為不僅要給用戶程序分配空間,解釋器本身也佔用了寶貴的系統資源。編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.1、編輯:用編輯軟體(EDIT.EXE或記事本)形成源程序(.ASM),如:LX.ASM; 2、匯編:用匯編程序(MASM.EXE)對源程序進行匯編,形成目標文件(.OBJ),格式如下:MASM LX.ASM; 3、連接:用連接程序(LINK.EXE)對目標程序進行連接,形成可執行文件(.EXE),格式如下:LINK LX.OBJ; 4、執行:如果結果在屏幕在顯示,則直接執行可執行文件。 5、調試:用調試程序(DEBUG.EXE)對可執行文件進行調試,格式如下:DEBUG LX.EXE1. 在具體計算機上實現一種語言,首先要確定的是表示該語言語義解釋的虛擬計算機,一個關鍵的問題是程序執行時的基本表示是實際計算機上的機器語言還是虛擬機的機器語言。這個問題決定了語言的實現。根據這個問題的回答,可以將程序設計語言劃分為兩大類:編譯型語言和解釋型語言。2. 由編譯型語言編寫的源程序需要經過編譯、匯編和鏈接才能輸出目標代碼,然後機器執行目標代碼,得出運行結果,目標代碼由機器指令組成,一般不能獨立運行,因為源程序中可能使用了某些......>>

熱點內容
資料庫系統設計的步驟 發布:2025-02-08 22:11:19 瀏覽:44
processc語言 發布:2025-02-08 22:11:15 瀏覽:537
國產車配置為什麼這么便宜 發布:2025-02-08 22:09:52 瀏覽:481
伺服器為什麼需要專線 發布:2025-02-08 22:07:27 瀏覽:872
java正則表達式正則替換 發布:2025-02-08 22:01:04 瀏覽:505
伺服器不識別配置的ip地址 發布:2025-02-08 22:00:02 瀏覽:615
橙雲伺服器 發布:2025-02-08 21:59:48 瀏覽:438
ftp伺服器ip就是電腦ip嗎 發布:2025-02-08 21:51:42 瀏覽:475
資料庫5 發布:2025-02-08 21:43:17 瀏覽:51
安卓安裝證書沒有怎麼辦 發布:2025-02-08 21:32:10 瀏覽:358