system verilog 標準閱讀筆記-IEEE Standard for SystemVerilog

SystemVerilog是建立在IEEE Std 1364之上的。SystemVerilog提高了基於Verilog的代碼的生產率、可讀性和可重用性。SystemVerilog中的語言增強提供了更簡潔的硬件描述,同時還提供了使用現有工具進入當前硬件實現流的簡單路徑。這些增強還爲定向和約束隨機測試臺開發、覆蓋驅動驗證和基於斷言的驗證提供了廣泛的支持。

本標準中使用的慣例

這個標準被組織成條款,每個條款側重於語言的特定領域。每個子條款中都有子條款來討論各個構造和概念。討論從介紹和可選的構造或概念的基本原理開始,接着是語法和語義描述,接着是示例和註釋。

本標準中使用的術語慣例如下:

-該詞用於表示嚴格遵守的強制性要求,以符合標準,不允許有任何偏差(應等於要求)。

-這個詞應該用來表示,在幾種可能性中,有一種被推薦爲特別合適,而不提及或排除其他可能性;或者某一行動方針是可取的,但不一定是必需的;或者(以否定的形式)某一行動方案被否決但不被禁止(應該等於建議)。

-may一詞用於表示在標準範圍內允許的行動(may等於允許的行動)。

-can一詞用於陳述可能性和能力,無論是物質的、物理的還是因果的(can等於能夠)。

句法描述

正文使用以下約定:

-定義術語時的斜體字體

-等寬字體,用於示例、文件名和對常量的引用,特別是0、1、x和z值

-當引用實際關鍵字時,Verilog和SystemVerilog關鍵字爲粗體等寬字體

使用Backus-Naur形式(BNF)描述SystemVerilog的形式語法。

巴科斯範式 以美國人巴科斯(Backus)和丹麥人諾爾(Naur)的名字命名的一種形式化的語法表示方法,用來描述語法的一種形式體系,是一種典型的元語言。又稱巴科斯-諾爾形式(Backus-Naur form)。它不僅能嚴格地表示語法規則,而且所描述的語法是與上下文無關的。它具有語法簡單,表示明確,便於語法分析和編譯的特點。BNF表示語法規則的方式爲:非終結符用尖括號括起。每條規則的左部是一個非終結符,右部是由非終結符和終結符組成的一個符號串,中間一般以“::=”分開。具有相同左部的規則可以共用一個左部,各右部之間以直豎“|”隔開。

在雙引號中的字("word")代表着這些字符本身。而double_quote用來代表雙引號。

在雙引號外的字(有可能有下劃線)代表着語法部分。

尖括號( < > )內包含的爲必選項。

方括號( [ ] )內包含的爲可選項。

大括號( { } )內包含的爲可重複0至無數次的項。

豎線( | )表示在其左右兩邊任選一項,相當於"OR"的意思。

::= 是“被定義爲”的意思。

使用以下約定:

-小寫單詞,有些包含嵌入下劃線,表示語法類別。例如:

模塊聲明

-黑體紅色字符表示保留的關鍵字、運算符和標點符號,作爲語法的必需部分。例如:

模塊=>;

-豎線(|)分隔可選項,除非它以粗體紅色顯示,在這種情況下,它代表自己。例如:

unary_operator ::=
+ | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~

-方括號([])包含可選項。例如:

input_declaration ::= input [ range ] list_of_variables ;

-大括號({})將一個重複的項括起來,除非它以粗體紅色出現,在這種情況下,它代表自己。該項可能出現零次或多次;重複從左到右,就像使用等效的左遞歸規則一樣。因此,以下兩條規則是等價的:

list_of_param_assignments ::= param_assignment { , param_assignment }
list_of_param_assignments ::=
param_assignment
| list_of_param_assignment , param_assignment

-如果任何類別的名稱以斜體部分開頭,則等同於沒有斜體部分的類別名稱。斜體部分旨在傳達一些語義信息。例如,“msb_index”和“lsb_index”等同於“index”

 

本標準內容

文中簡要介紹了條款和附件,以供參考。有31條和11條

附件。所有條款以及附件A至附件I均爲本標準的規範性部分。附件J和

附件K僅供參考。

第1條描述了本標準的內容和本標準中使用的慣例。

第2條列出了實施本標準所需的其他標準的參考。

第3條描述SystemVerilog源文本中使用的詞法標記及其約定。它描述了

如何指定和解釋詞法標記。

第4條描述了對Verilog數據對象和數據類型的增強,包括新的變量數據對象

和類型、網絡數據類型擴展、字符串類型、枚舉類型、用戶定義類型、結構和

工會。

第5條描述SystemVerilog數組,包括打包和解包數組、動態數組、關聯數組

數組、隊列和各種數組方法。

第6條描述瞭如何聲明網絡、變量和常量數據、關於寫入變量的增強規則、信號

別名和類型兼容性。

第7條描述了SystemVerilog中的面向對象編程功能。主題包括定義

類,動態構造對象,繼承和子類,數據隱藏和封裝,多態性,

以及參數化類。

第8條描述了新的運算符、SystemVerilog數據類型的操作規則、數組上的操作,

運算符方法和運算符重載。

第9條描述SystemVerilog增強的仿真調度語義。

第10條描述了對Verilog決策語句和循環結構的增強,新的過程

語句、最終塊、語句和塊標籤、增強的事件類型和事件控制。

第11條描述了用於建模組合邏輯、鎖存邏輯和

順序邏輯;對Verilog連續分配的增強;過程控制。

第12條描述了對Verilog任務和函數的許多增強,以及用於導入的語法

功能從一門外語和輸出任務和功能到一門外語。

第13條描述了動態地生成隨機數,約束隨機數的生成

更改約束,並植入隨機數生成器(RNGs)和隨機case語句

執行。

第14條描述了內置的信號量和郵箱類,並描述了增強的Verilog事件類型和

操作員。

第15條定義了時鐘塊、輸入和輸出偏差、週期延遲和默認時鐘。

第16條描述了測試臺程序的構造、測試臺比賽條件的消除和程序

控制任務。

第17條描述了即時斷言、併發斷言、屬性、序列、序列操作,

多鎖序列、時鐘解析和斷言綁定。

第18條描述了覆蓋組、覆蓋點、交叉覆蓋、覆蓋選項和覆蓋範圍

方法。

第19條描述包、編譯單元($unit)、頂級實例($root)、嵌套模塊、外部

模塊、增強的端口聲明、時間單位和精度、端口連接規則和名稱空間。

第20條描述了接口語法、接口端口、modport、接口任務和函數,參數化

接口、虛擬接口和訪問接口內的對象。

第21條描述了對Verilog配置的增強。

第22條描述了對Verilog系統任務和系統功能的幾個擴展,包括$typename

函數,$bits size函數,range函數,數組查詢函數,斷言控制任務,隨機

數字功能、程序控制任務、覆蓋功能和對Verilog系統任務和

系統功能。

第23條描述了Verilog“define and”include指令的擴展,以及用於控制

關鍵詞兼容性。

第24條描述了支持SystemVerilog數據對象的值更改轉儲(VCD)文件的擴展名

和數據類型。

第25條涵蓋了Verilog defparam語句和Verilog過程

分配/取消分配語句。

第26條描述了SystemVerilog與外語的直接接口。

第27條描述了對VPI對象圖的增強,以支持SystemVerilog構造。

第28條描述SystemVerilog中的斷言API。

第29條描述SystemVerilog中的覆蓋API。

第30條描述了對VPI的增強,以支持從文件訪問設計和仿真數據。

附錄A使用BNF定義了SystemVerilog的形式語法。

附件B列出了SystemVerilog關鍵字。

附件C描述了郵箱、信號量、隨機化和進程的系統類型定義。

附錄D定義了一個實現列表數據結構的列表包,類似於標準模板

庫(STL)。

附錄E描述了SystemVerilog併發斷言的形式化語義。

附錄F定義了SystemVerilog DPI的C語言層。

附錄G定義了用於SystemVerilog DPI應用程序的標準svdpi.h include文件。

附件H描述了在SystemVerilog中包含外語代碼的通用指南

申請。

附件一提供了sv vpi_user.h文件的內容列表,該文件擴展了Verilog

vpi_user.h包含文件。

附錄J定義了本標準中使用的術語。

附錄K列出了與本標準相關的參考文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章