<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

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

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

verilog編譯指令詳解

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

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

1、`define 和`undef

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

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

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

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

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

2、 `ifdef、`else 和`endif

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

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

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

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

3、`default_nettype

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

`default_nettype wand

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

4、`include

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

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

5、`resetall

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

`resetall

例如,該指令使得缺省連線類型為線網類型。

6、`timescale

在Verilog HDL 模型中,所有時延都用單位時間表述。使用`timescale編譯器指令將時間單位與實際時間相關聯。該指令用于定義時延的單位和時延精度。`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編譯器指令在模塊說明外部出現, 并且影響后面所有的時延值。例如:

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

//規定了上升及下降時延值。

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編譯指令時將發生什么?在這種情況下,模擬器總是定位在所有模塊的最小時延精度上,并且所有時 延都相應地換算為最小時延精度。例如,

verilog編譯指令_verilog編譯器指示語句(數字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現在對應520*100ps,104對應1040*100 ps,150對應1500*100 ps。更重要的是,仿真使用100 ps為時間精度。如果仿真模塊AndFunc,由于模塊TB不是模塊AddFunc的子模塊,模塊TB中的`timescale程序指令將不再有效。

7、`unconnected_drive和`nounconnected_drive

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

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

8、`celldefine 和`endcelldefine

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

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

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

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

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

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

Verilog編譯器指示語句

1、translate_off/ translate_on

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

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

//synopsys translate_off

//synopsys translate_on

2、parallel_case/ full_case

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

(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綜合時將產生鎖存器。為避免這種情況,可以使用“//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

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

    關注

    28

    文章

    1327

    瀏覽量

    109413
  • 編譯器
    +關注

    關注

    1

    文章

    1579

    瀏覽量

    48699
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8167
收藏 人收藏

    評論

    相關推薦

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

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

    循環模型編譯器Verilog和System Verilog語言支持指南

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

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

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

    編譯器是如何工作的_編譯器的工作過程詳解

    隨著計算機的發展,編譯器已經發揮著十分重要的作用。本文主要介紹了編譯器的種類、編譯器的工作原理以及編譯器工作的具體操作過程及步驟詳解。
    發表于 12-19 12:54 ?1.5w次閱讀

    淺析VerilogHDL編譯系統的預處理

    。在Verilog HDL語言編譯時,特定的編譯指令在整個編譯過程中有效(編譯過程可跨越多個文件
    發表于 03-26 16:10 ?666次閱讀

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

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

    Verilog可綜合的循環語句

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

    既然C編譯器是C語言寫,那么第一個C編譯器是怎樣來的?

    既然C編譯器是C語言寫的,那第一個C編譯器是怎樣來的?
    的頭像 發表于 02-25 15:47 ?2815次閱讀

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

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

    verilog中的initial語句說明

    解釋verilog HDL中的initial語句的用法。
    發表于 05-31 09:11 ?0次下載

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

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

    Verilog HDL 編譯器指令說明

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

    交叉編譯器安裝教程

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

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

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

    介紹下Verilog系統完整的8種編譯指令

    以反引號(`)開始的某些標識符是 Verilog 系統編譯指令。編譯指令Verilog 代碼
    的頭像 發表于 05-29 16:43 ?1228次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>