0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

verilog編譯指令_verilog編譯器指示語句(數(shù)字IC)

h1654155282.3538 ? 來源:網(wǎng)絡整理 ? 2018-03-23 13:40 ? 次閱讀

verilog編譯指令詳解

以`(反引號)開始的某些標識符是編譯器指令。在Verilog 語言編譯時,特定的編譯器指令在整個編譯過程中有效(編譯過程可跨越多個文件),直到遇到其它的不同編譯程序指令。完整的標準編譯器指令如下:

verilog編譯指令_verilog編譯器指示語句(數(shù)字IC)

1、`define 和`undef

`define指令用于文本替換,它很像C語言中的#define 指令,如:

verilog編譯指令_verilog編譯器指示語句(數(shù)字IC)

一旦`define 指令被編譯,其在整個編譯過程中都有效。例如,通過另一個文件中的`define指令,MAX_BUS_SIZE 能被多個文件使用。

`undef 指令取消前面定義的宏。例如:

verilog編譯指令_verilog編譯器指示語句(數(shù)字IC)

2、 `ifdef、`else 和`endif

這些編譯指令用于條件編譯,如下所示:

verilog編譯指令_verilog編譯器指示語句(數(shù)字IC)

在編譯過程中,如果已定義了名字為WINDOWS的文本宏,就選擇第一種參數(shù)聲明,否則選擇第二種參數(shù)說明。

`else 程序指令對于`ifdef 指令是可選的。

3、`default_nettype

該指令用于為隱式線網(wǎng)指定線網(wǎng)類型。也就是將那些沒有被說明的連線定義線網(wǎng)類型。

`default_nettype wand

該實例定義的缺省的線網(wǎng)為線與類型。因此,如果在此指令后面的任何模塊中沒有說明的連線,那么該線網(wǎng)被假定為線與類型。

4、`include

`include 編譯器指令用于嵌入內(nèi)嵌文件的內(nèi)容。文件既可以用相對路徑名定義,也可以用全路徑名定義, 例如:

verilog編譯指令_verilog編譯器指示語句(數(shù)字IC)

5、`resetall

該編譯器指令將所有的編譯指令重新設置為缺省值。

`resetall

例如,該指令使得缺省連線類型為線網(wǎng)類型。

6、`timescale

在Verilog HDL 模型中,所有時延都用單位時間表述。使用`timescale編譯器指令將時間單位與實際時間相關聯(lián)。該指令用于定義時延的單位和時延精度。`timescale編譯器指令格式為:

`timescale time_unit / time_precision

time_unit 和time_precision 由值1、10、和100以及單位s、ms、us、ns、ps和fs組成。例如:

`timescale 1ns/100ps

表示時延單位為1ns, 時延精度為100ps。`timescale編譯器指令在模塊說明外部出現(xiàn), 并且影響后面所有的時延值。例如:

verilog編譯指令_verilog編譯器指示語句(數(shù)字IC)

//規(guī)定了上升及下降時延值。

endmodule

編譯器指令定義時延以ns為單位,并且時延精度為1/10 ns(100 ps)。因此,時延值5.22對應5.2ns, 時延6.17對應6.2 ns。如果用如下的`timescale程序指令代替上例中的編譯器指令,

`timescale 10ns/1ns

那么5.22對應52ns, 6.17對應62ns。

在編譯過程中,`timescale指令影響這一編譯器指令后面所有模塊中的時延值,直至遇到另一個`timescale指令或`resetall指 令。當一個設計中的多個模塊帶有自身的`timescale編譯指令時將發(fā)生什么?在這種情況下,模擬器總是定位在所有模塊的最小時延精度上,并且所有時 延都相應地換算為最小時延精度。例如,

verilog編譯指令_verilog編譯器指示語句(數(shù)字IC)

在這個例子中,每個模塊都有自身的`timescale編譯器指令。`timescale編譯器指令第一次應用于時延。因此,在第一個模塊中,5.22對應5.2 ns, 6.17對應6.2 ns; 在第二個模塊中5.21對應52 ns, 10.4對應104 ns, 15對應150 ns。如果仿真模塊TB,設計中的所有模塊最小時間精度為100 ps。因此,所有延遲(特別是模塊TB中的延遲)將換算成精度為100 ps。延遲52 ns現(xiàn)在對應520*100ps,104對應1040*100 ps,150對應1500*100 ps。更重要的是,仿真使用100 ps為時間精度。如果仿真模塊AndFunc,由于模塊TB不是模塊AddFunc的子模塊,模塊TB中的`timescale程序指令將不再有效。

7、`unconnected_drive和`nounconnected_drive

在模塊實例化中,出現(xiàn)在這兩個編譯器指令間的任何未連接的輸入端口或者為正偏電路狀態(tài)或者為反偏電路狀態(tài)。

verilog編譯指令_verilog編譯器指示語句(數(shù)字IC)

8、`celldefine 和`endcelldefine

這兩個程序指令用于將模塊標記為單元模塊。它們表示包含模塊定義,如下例所示。

verilog編譯指令_verilog編譯器指示語句(數(shù)字IC)

某些PLI例程使用單元模塊。

verilog編譯器指示語句(數(shù)字IC

設計者在寫設計代碼時,有時可能針對仿真寫一些語句,這些語句可能是不為DC所接受,也不希望DC接受;設計者如果不對這些語句進行特殊說明,DC讀入設計代碼時就會產(chǎn)生語法錯誤。另一種情況是,設計者在寫設計代碼,有些設計代碼是為專有的對象寫的(如公司內(nèi)部),這些專有的設計代碼可能不希望被綜合。Synopsys提供了引導語句,設計者可以使用這些引導語句控制DC綜合的對象

可以利用HDL描述中的一些特定的注釋語句來控制綜合工具的工作,從而彌補仿真環(huán)境和綜合環(huán)境之間的差異,這些注釋語句稱為編譯器指示語句。

Verilog編譯器指示語句

1、translate_off/ translate_on

這組語句用來指示DC停止翻譯 “//synopsys.。.translate_off”之后的Verilog描述,直至出現(xiàn) “//synopsys translate_on”。當Verilog代碼鐘含有供仿真用的不可綜合語句時,這項功能能使代碼方便地在仿真工具與綜合工具之間移植。

例1(translate_off/ translate_on指示語句的使用):

//synopsys translate_off

//synopsys translate_on

2、parallel_case/ full_case

DC可能使用帶優(yōu)先級的結(jié)構(gòu)來綜合Verilog的case語句,為避免這種情況,可以使用“//synopsys.。.parallel_case”指示DC將case語句綜合為并行的多路選擇器結(jié)構(gòu)。

(parallel_case指示語句的使用):

always @ (state)

case (state) //synopsys parallel_case

2’b00: new_state = 2’b01;

2’b01: new_state = 2’b10;

2’b10: new_state = 2’b00;

default: new_state = 2’b00;

endcase

另外,Verilog允許case語句不覆蓋所有可能情況,當這樣的代碼由DC綜合時將產(chǎn)生鎖存器。為避免這種情況,可以使用“//synopsys full_case”指示DC所有可能已完全覆蓋。

例2 (full_case指示語句的使用):

always @ (sel or a1 or a2)

case (sel) //synopsys full_case

2’b00: z = a1;

2’b01: z = a2;

2’b10: z = a1 & a2;

endcase

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110093
  • 編譯器
    +關注

    關注

    1

    文章

    1634

    瀏覽量

    49129
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8230
收藏 人收藏

    評論

    相關推薦

    你知道Verilog HDL編譯器指令都有哪些嗎

    Verilog HDL 編譯器指令復雜一點的系統(tǒng)在進行設計或者驗證時,都會用到一些編譯器指令,那么什么是
    發(fā)表于 10-14 14:34

    循環(huán)模型編譯器Verilog和System Verilog語言支持指南

    本節(jié)介紹循環(huán)模型編譯器響應不受支持或被忽略的構(gòu)造的行為。 一般而言,Cycle Model Compiler支持Verilog和SystemVerilog語言的大部分可合成子集。 如果周期模型編譯器
    發(fā)表于 08-12 06:55

    NICE自定義指令如何被編譯生成匯編文件和.verilog二進制文件?

    了該例程的Makefile文件之后,請問是只需要使用官方的HBIRD_SDK編譯器就能將自定義指令生成匯編文件以及.verilog文件嗎?
    發(fā)表于 08-16 06:46

    C語言編譯器常見的預編譯指令詳細資料說明

    編譯器對C程序的處理可以明確地分為兩步。第一步由預編譯器完成。以#開頭的預編譯指令可能會影響編譯器設置或者進行文本替換。注意,預
    發(fā)表于 06-05 17:52 ?2次下載
    C語言<b class='flag-5'>編譯器</b>常見的預<b class='flag-5'>編譯</b><b class='flag-5'>指令</b>詳細資料說明

    Verilog可綜合的循環(huán)語句

    Verilog中提供了四種循環(huán)語句,可用于控制語句的執(zhí)行次數(shù),分別為:for,while,repeat,forever。其中,for,while,repeat是可綜合的,但循環(huán)的次數(shù)需要在編譯
    發(fā)表于 10-13 12:23 ?2w次閱讀

    Verilog教程之Verilog HDL程序設計語句和描述方式

    本文檔的主要內(nèi)容詳細介紹的是Verilog教程之Verilog HDL程序設計語句和描述方式。
    發(fā)表于 12-09 11:24 ?47次下載
    <b class='flag-5'>Verilog</b>教程之<b class='flag-5'>Verilog</b> HDL程序設計<b class='flag-5'>語句</b>和描述方式

    如何使用Icarus Verilog+GTKWave來進行verilog文件的編譯和仿真

    本文將介紹如何使用Icarus Verilog+GTKWave來進行verilog文件的編譯和仿真。 Icarus Verilog Icarus V
    的頭像 發(fā)表于 07-27 09:16 ?5405次閱讀
    如何使用Icarus <b class='flag-5'>Verilog</b>+GTKWave來進行<b class='flag-5'>verilog</b>文件的<b class='flag-5'>編譯</b>和仿真

    Verilog HDL 編譯器指令說明

    Verilog HDL 編譯器指令 復雜一點的系統(tǒng)在進行設計或者驗證時,都會用到一些編譯器指令,那么什么是
    的頭像 發(fā)表于 11-03 09:31 ?3746次閱讀
    <b class='flag-5'>Verilog</b> HDL <b class='flag-5'>編譯器</b><b class='flag-5'>指令</b>說明

    verilog仿真工具編譯

    Icarus Verilog(以下簡稱iverilog )號稱“全球第四大”數(shù)字芯片仿真,也是一個完全開源的仿真。
    的頭像 發(fā)表于 08-15 09:11 ?8399次閱讀

    交叉編譯器安裝教程

    交叉編譯器中“交叉”的意思就是在一個架構(gòu)上編譯另外一個架構(gòu)的代碼,相當于兩種架構(gòu)“交叉”起來了。Ubuntu 自帶的 gcc 編譯器是針對 X86 架構(gòu)的,而我們現(xiàn)在要編譯的是 ARM
    的頭像 發(fā)表于 09-29 09:12 ?3512次閱讀

    Verilog中的If語句和case語句介紹

    我們在上一篇文章中已經(jīng)看到了如何使用程序塊(例如 always 塊來編寫按順序執(zhí)行的 verilog 代碼。 我們還可以在程序塊中使用許多語句來控制在我們的verilog設計中信號賦值的方式
    的頭像 發(fā)表于 05-11 15:37 ?4557次閱讀
    <b class='flag-5'>Verilog</b>中的If<b class='flag-5'>語句</b>和case<b class='flag-5'>語句</b>介紹

    介紹下Verilog系統(tǒng)完整的8種編譯指令

    以反引號(`)開始的某些標識符是 Verilog 系統(tǒng)編譯指令。編譯指令Verilog 代碼
    的頭像 發(fā)表于 05-29 16:43 ?1792次閱讀

    Triton編譯器功能介紹 Triton編譯器使用教程

    Triton 是一個開源的編譯器前端,它支持多種編程語言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一個可擴展和可定制的編譯器框架,允許開發(fā)者添加新的編程語言特性和優(yōu)化技術
    的頭像 發(fā)表于 12-24 17:23 ?324次閱讀

    Triton編譯器與其他編譯器的比較

    Triton編譯器與其他編譯器的比較主要體現(xiàn)在以下幾個方面: 一、定位與目標 Triton編譯器 : 定位:專注于深度學習中最核心、最耗時的張量運算的優(yōu)化。 目標:提供一個高度抽象、靈活、高效
    的頭像 發(fā)表于 12-24 17:25 ?312次閱讀

    Triton編譯器的優(yōu)化技巧

    在現(xiàn)代計算環(huán)境中,編譯器的性能對于軟件的運行效率至關重要。Triton 編譯器作為一個先進的編譯器框架,提供了一系列的優(yōu)化技術,以確保生成的代碼既高效又適應不同的硬件架構(gòu)。 1. 指令
    的頭像 發(fā)表于 12-25 09:09 ?170次閱讀