一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

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

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

verilog編譯指令詳解

以`(反引號(hào))開(kāi)始的某些標(biāo)識(shí)符是編譯器指令。在Verilog 語(yǔ)言編譯時(shí),特定的編譯器指令在整個(gè)編譯過(guò)程中有效(編譯過(guò)程可跨越多個(gè)文件),直到遇到其它的不同編譯程序指令。完整的標(biāo)準(zhǔn)編譯器指令如下:

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

1、`define 和`undef

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

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

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

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

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

2、 `ifdef、`else 和`endif

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

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

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

`else 程序指令對(duì)于`ifdef 指令是可選的。

3、`default_nettype

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

`default_nettype wand

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

4、`include

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

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

5、`resetall

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

`resetall

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

6、`timescale

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

`timescale time_unit / time_precision

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

`timescale 1ns/100ps

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

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

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

endmodule

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

`timescale 10ns/1ns

那么5.22對(duì)應(yīng)52ns, 6.17對(duì)應(yīng)62ns。

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

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

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

7、`unconnected_drive和`nounconnected_drive

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

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

8、`celldefine 和`endcelldefine

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

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

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

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

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

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

Verilog編譯器指示語(yǔ)句

1、translate_off/ translate_on

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

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

//synopsys translate_off

//synopsys translate_on

2、parallel_case/ full_case

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

(parallel_case指示語(yǔ)句的使用):

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語(yǔ)句不覆蓋所有可能情況,當(dāng)這樣的代碼由DC綜合時(shí)將產(chǎn)生鎖存器。為避免這種情況,可以使用“//synopsys full_case”指示DC所有可能已完全覆蓋。

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

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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1365

    瀏覽量

    111480
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1652

    瀏覽量

    49730
  • Verilog語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    8450
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

    發(fā)表于 08-12 06:55

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

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

    C語(yǔ)言編譯器常見(jiàn)的預(yù)編譯指令詳細(xì)資料說(shuō)明

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

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

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

    Verilog教程之Verilog HDL程序設(shè)計(jì)語(yǔ)句和描述方式

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

    如何使用Icarus Verilog+GTKWave來(lái)進(jìn)行verilog文件的編譯和仿真

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

    Verilog HDL 編譯器指令說(shuō)明

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

    交叉編譯器安裝教程

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

    Verilog中的If語(yǔ)句和case語(yǔ)句介紹

    我們?cè)谏弦黄恼轮幸呀?jīng)看到了如何使用程序塊(例如 always 塊來(lái)編寫(xiě)按順序執(zhí)行的 verilog 代碼。 我們還可以在程序塊中使用許多語(yǔ)句來(lái)控制在我們的verilog設(shè)計(jì)中信號(hào)賦值的方式
    的頭像 發(fā)表于 05-11 15:37 ?5360次閱讀
    <b class='flag-5'>Verilog</b>中的If<b class='flag-5'>語(yǔ)句</b>和case<b class='flag-5'>語(yǔ)句</b>介紹

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

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

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

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

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

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

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

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

    FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理

    語(yǔ)句)。Verilog HDL編譯系統(tǒng)通常先對(duì)這些特殊的命令進(jìn)行“預(yù)處理”,然后將預(yù)處理的結(jié)果和源程序一起在進(jìn)行通常的編譯處理。
    的頭像 發(fā)表于 03-27 13:30 ?342次閱讀
    FPGA <b class='flag-5'>Verilog</b> HDL語(yǔ)法之<b class='flag-5'>編譯</b>預(yù)處理