TWI329821B - Transferring software assertions to hardware description language code - Google Patents

Transferring software assertions to hardware description language code Download PDF

Info

Publication number
TWI329821B
TWI329821B TW096104799A TW96104799A TWI329821B TW I329821 B TWI329821 B TW I329821B TW 096104799 A TW096104799 A TW 096104799A TW 96104799 A TW96104799 A TW 96104799A TW I329821 B TWI329821 B TW I329821B
Authority
TW
Taiwan
Prior art keywords
hardware
software
assertion
source file
program
Prior art date
Application number
TW096104799A
Other languages
English (en)
Other versions
TW200805102A (en
Inventor
Fong David
Zheng Joy Zhang
Qi Christine Chen
Original Assignee
Via Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Tech Inc filed Critical Via Tech Inc
Publication of TW200805102A publication Critical patent/TW200805102A/zh
Application granted granted Critical
Publication of TWI329821B publication Critical patent/TWI329821B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

1329821 八、本案若有化學式時,請揭示最能顯示發明特徵的化學式: 九、發明說明: 【發明所屬之技術領域】 本發明係有關於一種用來設計數位化積體電路 (integrated circuits, 1C)的軟體工具,特別是有關於一種使 用硬體描述語言(hardware description language, HDL)斷 言(assertion)的工具。 【先前技術】 傳統上積體電路設計包含數個階段,每個階段都需要 使用不同的工具或工具組,一般積體電路設計者會使用數 種程式語言之一來撰寫程式碼,在撰寫程式碼流程的同時 會進行模擬,設計者會執行模擬工具輸入程式編碼以測試 設計結果,當模擬過程出現問題,測試者對程式碼編輯以 修復問題並再度進行模擬,在模擬後設計者會使用合成器 將程式編碼轉譯為積體電路的邏輯表示,接著使用其他積 體電路工具將邏輯表示轉化成實體積體電路,成為可程式 化邏輯閘陣列(Field Programmalbe Gate Array, Fpga)、 7 1329821 特殊應用積體電路(Application-Specific Integrated
Circuit,ASIC)、或其他訂製矽積體電路。 積體電路設計者可以使用數種類別的程式語言進行設 計,其中有一種語言集合被稱為硬體描述語言(Hardware Description languages,HDL),亦被稱為暫存器傳輸語言 (Register Transfer Languages, RTL),一般所知的暫存器 • 傳輸語言包含Verilog與VHDL,暫存器傳輸語言被認為是 低階程式語言,因為其描述的是特殊硬體特徵如時序或是 平行;度,其他可供積體電路設計用的程式語言包含C、 C++、或其他類似的語言,這類語言傳統上比較常用來開 發軟體而非硬體,這些軟體語言可以讓設計者以較高階的 概念撰寫程式碼,因此通常會增加設計者的工作效率。 • 一般C/C++與硬體描述語言程式碼都包含斷言,用以 確認程式編碼能準確實行預期的設計,一段斷言為用來表 示一個特定的設計特徵應該或不應該如何運轉的宣告,舉 例來說,一個特定區塊的程式碼可能會假設兩筆輪出中一 次只有一筆是有作用的’再舉例來說,一個區塊可能會假 設每一筆輸入的值都不會大於一個特定的最大值,這些假 設可以由設計者表示為斷言來達成。 8 1329821 因為大部分的模擬及合成工具都使用硬體描述語言來 輸入,而不是C/C++,使用C/C++撰寫程式碼的設計者要 將程式碼轉譯為硬體描述語言,轉譯過程可能是人工轉 譯、自動轉譯、或兩種方式的結合,然而,並非所有轉譯 工具都能將C++斷言轉譯為適當的硬體描述語言斷言,因 此,亟需提出一種能轉譯軟體程式碼為硬體描述語言的工 具,以克服傳統技術的缺失。 【發明内容】 有鑑於上述傳統技術的諸多缺失,本發明的目的在於 提出一種能轉譯軟體程式碼的斷言為硬體描述語言的系統 與方法,在本發明之一方法中,一第一來源檔案包含以軟 體程式語言寫成的源程式碼,會被轉譯為包含硬體描述語 言源程式碼的第二來源檔案。第二來源檔案會執行由第一 來源檔案程式碼轉譯過來的斷言,這個方法包含:由第一 來源檔案讀取軟體程式碼斷言;定位第二來源檔案中的一 第二區塊,其中第二區塊對應到第一來源檔案中的具有軟 體程式碼斷言的第一區塊;轉譯軟體程式碼斷言為以硬體 描述語言表示的硬體程式斷言;決定第二區塊中的一個位 置以插入硬體程式斷言;以及將硬體程式斷言插入第二來 源檔案中被決定的位置。 9 對本領域技藝習知者而言,其他未包含在本發明下述 所揭露的内容與圓示中的系統、方法、特徵或好處: 易見的’因此凡其他未脫離發明所揭示之精神下ρ,顯而 等效改變或修飾,均應包含打述之申請專崎成之 【實施方式】 本發明的一些實施例會詳細描述如下。然而, 細描述外,本發明還可以廣泛地在其他的實施例施除,了詳 本發明的範圍不受限定,其以之後的專伃且 在本說明書中,各元件的不同部臟有依者, 某些尺度與其他相關尺度相比已經被誇張,以提供爭圖。 的描述和本發明的理解。 、更寿楚 轉譯而來的硬體描述語言二㈣軟體、 本發明揭露-種將軟體程式碼斷言轉換為硬體插 由軟 軟體程式碼中的軟體程式竭斷言為硬體描述語的 言;以及將硬體描述語言程_斷言插人硬體程式==斷 硬體插述語言程式碼的整體_流區料舌為 枣發明的 1329821 方法使用兩組輸入檔案,兩組輸入檔案通常被配置在不同 的子目錄中,其中一組輸入檔案包含軟體程式碼110,軟 體程式碼110為使用軟體程式語言如C或C++寫成的程式 碼,這些輸入檔案還包含用相同軟體程式語言寫成的斷 言,軟體程式碼110會被輸入轉譯工具120以將軟體程式 碼轉譯為硬體描述語言如VHDL或Verilog,由此轉譯工具 120轉譯產生硬體程式碼130,硬體程式碼130為另一組 • 輸入檔案,用來輸入斷言轉換工具140。 上述中重要的是,被轉譯的硬體程式碼130並不包含 由軟體程式語言轉譯成硬體描述語言的斷言,然而,其仍 然包含對應的其他斷言,這些斷言由轉譯工具120產生或 是在轉譯過程後由人工加入。 • 兩組輸入檔案都會輸入斷言轉換工具140處理,其中 會由電腦程式執行本發明的方法以轉換軟體程式碼斷言為 硬體描述語言程式碼,由此斷言轉換工具140產生包含原 _ 始硬體描述語言程式碼與由軟體程式語言轉譯為硬體程式 碼的斷言的硬體程式碼150,本發明的方法讀取軟體程式 碼110中的軟體程式語言斷言,並將其轉譯為硬體描述語 言斷言,最後將硬體描述語言斷言放入被轉譯的硬體程式 11 1329821 碼130中的適當位置,於是產生硬體程式碼15〇,之後硬 體程式碼150玎以被輸入硬體描迷語言斷言模擬器進 行模擬驗證。 如軟體開發領域之技藝習知者所能了解的,本發明的 斷言轉換工具140可以由多種程式語言加以編碼及編譯執 行實現’因此本發明並不限定其所使用的程式語言,編碼 鲁 時可使用的程式語言包含perl、awk、shell script、VBscript 或其他程式語言,編譯可使用的程式語言包含C、C++、 C#、JAVA、Visual Basic或其他程式語言。 雖然軟體程式碼110被包含在多個播案中,然而其整 體可視為形成單一軟體實體的階層架構,相同的硬體程式 碼130也被包含在多個標案中,但一樣可以視為單一硬體 _ 實體的階層架構,在Verilog語言中這些實體被稱為模組 (module)’而在c語言中則稱為函數(function),在C++ 語言中則是被稱為類別(class),其中類別又包含函數。 第二A圖與第二b圖顯示兩種階層架構與其對應關 係,以不同觀點繪成的示意圖,第二A圖為階層架構的區 塊層級示意圖’在階層架構最上端是單一的頂端實體 12 1329821 210,在C/C++語言的階層架構中頂端實體21〇s為被稱為 main的函數,在Verilog語言階層架構中的頂端實體2i〇h 為被稱為top的模組,因此硬體程式碼130具有對應於軟 體程式語言階層架構的頂端實體210S的硬體程式系古頂 端實體210H。 在一特定階層的一個實體可以建立或提出位於其他較 _ 低階層的實體,如第二A圖所示之範例,類別22〇s “S一MUX”與230S “S一CTR”為中階層軟體實體,由頂端實 體210S “main”所提出,同樣的模組220H "H一MUX”與 230H ” H_CTR”為中階層硬體實體,由頂端實體21〇h “t〇P”所提出,更下層的底層軟體實體類別240S “SJNC” 一樣被中階層實體類別220S “S_MUX”所提出,而底廣硬 體實體模組240H “H_ENC”則是被中階層實體模組220H 鲁“H—MUX”所提出。 上述中重要的是硬體程式模組220H的名稱”H_MUX” • 可推導自軟體類別220S的名稱”S_MUX”,由於將C/C++ . 軟體程式碼110轉譯為Verilog硬體程式碼130的轉譯流 程’不論為自動轉譯或人工轉譯都會遵循預先定義妤的命 名方法,當將軟體程式斷言轉譯為硬體描述語言程式碼 13 1329821 時’本發明所揭露的方法會檢視構成軟體程式碼ι10的輸 入稽案以找出其中的軟體程式碼階層架構,並檢視構成硬 體程式碼130的輸入檔案以找出硬體程式碼階層架構,使 用預先定義好的命名方法有助於讓本發明的方法發現兩者 間的對應關係。
第二B圖顯示軟體程式碼11〇與硬體程式碼檐案 • 如何表示第二A圖中的階層架構的示意圖,函數2i〇s “main”提出類別 22〇s “sjviux”,而類別 220S “S_MUX” 提出類別240S “S一ENC” ’在對應的硬體階層架構中,模 組 210H "top”提出模組 220H “H_MUX,,,而模·組 22〇H 4一1\/111父”提出模組 2401~1"1"1_巳问(:”。 在第二B圖所示的實施例中,每個類別與獨立函數 (如,’main”)都位於分開的檔案中,同樣的每個模組也都在分 開的檔案中,因此特定模組的檔案名稱可以被推導自對應 類別或函數的檔案名稱,如h一mux.v推導自h_mux c叩, 因此如果有一具有特定軟體類別的特定檔案,將軟體程式 喝斷言轉譯成硬體描述語言程式碼的方法可⑽容易的找 到對應該特定軟體類別的硬體程式模組以及硬體檔案,在 本發明之另-實施射,—㈣案會包含多個類別或模 14 1329821 組,在這種情況下’將軟體料,言轉譯成硬體描述語 言程式碼的方法會從軟體⑽硬體程式模组名 稱,再搜尋包含硬體程式碼130的拎安& _ 幻棺案中具有硬體程式模 組名稱的來源檔案。 第三圖顯示軟體程式碼11G與硬體程式碼13G中另-種階層架構的示意圖:其中軟體實體與硬體實體都由區塊 •所Μ ’其+ 實體在最頂層的地方都包含 -個單-的頂層區塊,而軟_別中的每個函數都包含一 個單一頂層函數區塊310,同樣的每個硬體程式模組中都 有一個頂層模組區塊320。 每個函數區塊310與模組區塊32〇都包含一個或多個 序列區塊330, 一個硬體程式模組還會包含流程區塊34〇, 鲁 流程區塊340有別於其他區塊並没有類似的軟體類別。 序列區塊330中的宣告被依序執行,控制區塊350則 被用來控制序列,雖然不同程式語言的文法不同,但是大 多數軟體或硬體程式語言都包含條件控制區塊(如IF判斷) * 和重複執行控制區塊(如FOR、WHILE陳述),在第三圖中’ 區塊350S為C/C++軟體程式語言條件區塊(丨F),而對應的 15 1329821 區塊350H 為 Verilog硬體程式語言條件區塊 (IF-THEN-ELSE)。 如上所述,將軟體程式碼斷言轉譯成硬體描述語言程 式碼的方法會轉譯斷言並放入硬體程式碼130中適當的位 置,本方法會使用在第三圖的連接關係中的區塊來判斷插 入硬體描述語言斷言的適當位置,尤其是硬體程式碼130 _ 中適當的插入位置被特定為符合與軟體程式碼110中的區 塊相關的規則。 舉例來說,如果有一軟體程式碼斷言被辨識出位於軟 體程式碼110内的區塊X和區塊Y之間,則硬體描述語言 斷言位置可能在硬體程式碼130中對應的區塊X’和區塊Y’ 之間,轉譯硬體描述語言技術領域的技藝習知者應能看出 • 轉譯得到的硬體描述語言程式碼會和被轉譯軟體程式碼中 有很大差異,因此在本例中,硬體描述語言斷言的適當位 置也有可能在區塊X’和區塊Y’之後,或是在區塊X’和區塊 . Y’之中,插入斷言的適當位置視軟體程式碼110與硬體程 式碼130的結構而定。 第四圖顯示一範例軟體程式碼110中的軟體程式函數 16 1329821 41 OS’以及對應的硬體程式碼130中的硬體程式模組41〇H 的示意圖❶軟體程式函數410S包含兩個控制區塊”丨f read”
420S和”IF write” 430S,而在對應的硬體程式模組410H 中包含對應的控制區塊420H與430H,這兩個控制區塊位 於流程區塊440中,該流程區塊440在軟體程式函數410S 沒有對應的部份》 _ 軟體程式函數410S包含一斷言450 ”ASSERT(!(read & m一empty))” ’斷言450位於第一控制區塊420S之前, 如第四圖所示,硬體程式碼130並不包含由軟躍拜式斷言 450轉譯而成的硬體程式碼斷言。 第五圖顯示如第四圖所示的硬體程式碼模組41〇H中 的具有軟體程式函數410S中的斷言450轉譯而來的硬體 鲁 程式斷言510的示意圖,轉譯方法將硬體程式斷言510插 入於模組410H中第一控制區塊42〇h|之前,以對應軟體程 式斷言450位於函數410S中第一控制區塊420S之前, . 如之前所述,在其他情況下硬體程式斷言510可能被插入 • 在控制區塊420H中,或是在控制區塊42〇h之後,其適當 位置視軟體程式碼110與硬體程式碼13〇的結構而定。 17 丄丄 丄丄 第五圖所示的範例較為單純, 其中只有兩個序歹 二一序列區塊中,更複雜的範例會包含結 軟體程/序列與控制區塊’然而如前所述,軟體工具可將 程式竭區塊對應到硬體描述語言區塊,因此轉 m s程式碼中的插入硬體程式斷言的適當位 第五m當將軟體程式斷言轉譯為硬體描述語古 ,,.硬體程式斷言被放置在硬體程式模組中的位置,第二 =顯不本發明所揭露的方法如何對應c/c++斷言形式到硬 描边語言形式’如前述所解釋,—個斷言用來表示一個 預期會有效的情形,—個典賴軟體程式斷言61〇會以有 二個參數的預處理器巨集指令的方式執行,三個參數為: 預期保持真值的布林代數62Q、輪出字串63q,當布林代 數非真值時則顯示輸出字串63Q、以及嚴重程度64〇,如 果符號非真值時由嚴重程度來判斷是否要中斷執行程式 碼。 610預期先進先出 如果兩個變數都是 在第六圖的範例中,軟體程式斷令 讀取變數與空旗標變數不會都是真值,
1S 1329821 真值,則布林代數620在執行時不會計算為真值,這時描 述字串 630 ’’S-FIFO^Access underflow”就會顯示,因為 嚴重程度640為CRITICAL,所以程式碼會中止執行,中 止可能為進入除錯模式或離開程式,視assert巨集指令 的内容而定。 本發明所揭露的斷言轉譯方法會將軟體程式斷言610 轉譯為Verilog語言斷言650,第六圖的範例中使用的 Verilog 語言版本為 system Verilog with Assertions (SVA) ’ SVA包含斷言的語言構想,其申一種構想為屬性 (property),軟體程式碼與硬體程式碼有一點很重要的差異 為硬體程式碼會被定時,軟體可以在執行時簡單的測試變 數值來決定布林代數是否為真值,但是在硬體的變數為信 號’測試時需要參照時脈。 因此,本發明所揭露的轉譯方法將Verilog斷言以兩個 部份實現:屬性定義660,使斷言能參照時脈;以及 ASSERT宣告670 〇屬性定義660定義了 Verilog語言命 名的屬性’在本範例中屬性具有一般名稱” fif〇r,屬性定義 660包含一 ALWAYS區塊,該區塊包含一定時裝置,並且 區塊中布林代數680被預期為真值。 1329821 ASSERT宣告670接著屬性定義660之後,其中預期 為真值的條件變數為上述被定義的命名屬性,屬性定義這 時包含布林代數680,如果命名屬性不是真值,則ASSERT 宣告670包含Verilog $FATAL宣告690和輸出字串695, $FATAL宣告690會顯示輸出字串695並以錯誤碼中斷模 擬進行。 $FATAL宣告的使用可以視為對應軟體程式斷言610 中嚴重程度的CRITICAL,而軟體程式斷言中的嚴重程度 NORMAL則會對應到硬體程式斷言的Verilog $ERROR或 $WARNING宣告,這些宣告一樣會顯示輸出字串但不會中 斷模擬。 另一種形式的軟體程式斷言則使用SWITCH或CASE 控制宣告而不包含布林代數,取而代之的以斷言在控制宣 告中的位置作為布林代數使用,下列為這種軟體程式斷言 的程式碼範例: switch(access_type) case Read: ; more code case Write: 20 1329821 ;more code default: ASSERT(0, "invalid value for access—type”,NORMAL);
在這段程式碼中,在default之後的斷言只會在 access 一 type並不等於Read或Write時才執行,因此就等 於布林條件式: ((access_type != Read) && access_type != Write)) 因為布林條件式被隱含於斷言在SWITCH》CASE控 制區塊内的位置中,所以不需要包含布林代數以作為 ASSERT巨集指令的變數,這種特定形式的軟體程式斷言 能有效的對應為SystemVerilog屬性宣告支援的$INSET 運算子,以下為對應上列程式碼的SystemVerilog斷言: property inva丨id—access_type; @(posedge elk) not ($inset(access_type, 'Read, 'Write )) endproperty assert property (invalid_access一type) else $error ("H_FIFO: invalid access type!”) 21
第七圖顯示本發明的一實施例中如第一圖至第六圓所 述之轉換軟體程式斷言為硬體描述語言程式碼之系統的區 塊汴意圖’讀取邏輯710自軟體來源檔案110讀取軟體程 式斷言450,同時判斷軟體程式斷言45〇位於軟體來源稽 索110的哪個軟體模組410S中’第一定位邏輯720會判 斷軟體程式斷言450與關聯的一或多個控制區塊的位置, 如第四圖的控制區塊420S和430S,在本發明之一實施例 中’在軟體區塊的位置由第一定位邏輯720以區塊内程式 鴆的觀點來獲得,因為程式碼指出了軟體區塊的位置,因 此玎視這個位置的區塊包含一軟體指示碼725,第Γ-定位 邏輯720會維持或設定包含軟體程式斷言45〇與軟體指示 瑪725的軟體區塊727。 第二定位邏輯730搜尋硬體來源檔案150以找出對應 於軟體區塊420S的硬體區塊420H,在本發明之一實施例 中,硬體區塊的位置為以該區塊内的硬體程式碼的觀點來 找出’也就是包含硬體指示碼735,因此硬體指示碼735 對應於軟體指示碼725,第二定位邏輯73〇會維持戋嗖定 包含硬體指示碼735的硬體區塊737。 轉譯邏輯74〇將軟體程式斷言45〇觸為硬體程式斷 22 1329821 言510,第三定位邏輯750則利用硬體指示碼735以找出 硬體描述語言來源檔案130中插入硬體程式斷言510的位 置,插入邏輯760將硬體程式斷言510插入第三定位邏輯 750決定的位置,最後系統輸出包含硬體程式斷言的硬體 來源檔案150。 第八圖顯示本發明的一實施例中轉換軟體程式斷言為 • 硬體描述語言程式碼方法800的流程圖,其中步驟810為 從軟體來源檔案中讀取包含軟體程式斷言的函數或類別, 接下來步驟820,決定軟體程式斷言與組成函數或類別的 義 各種區塊的相對位置,步驟830為讀取相對於函數或類別 的硬體程式模組,步驟840轉換軟體程式斷言到硬體程式 斷言,之後步驟850與860為判斷硬體程式斷言的插入位 置與在該位置插入硬體程式斷言。 硬體程式斷言插入位置可能在硬體程式模組内或模組 外部,其中模組内部的斷言稱為行内斷言(inline assertions),在這種情況下,插入的位置會與模組内的區 φ 塊有關,並且基於軟體程式斷言在軟體模組或函數内的位 置來判定,然而由於軟體程式函數形式與硬體程式模組形 式會在轉換時產生差異,程式轉譯領域技藝習知者應能了 23 102^621 解本發明之方法能容許這種情形喊出插入位置。 上述中任何流程步驟或流程圖内的區塊應能理解為以 =一:或多個可執行指令的模組、段落、或部份程式碼 不㈣執行流程中的邏輯函數或步驟,如軟體開發領 域技藝習知者應能了解,在本發明所揭露的範圍中能有其 他替代的實現方式,在這些實現方式中,函數可能不是按 上賴露的順杨行,其可能視函數魏㈣用同步執行 或相反順序執行。 第域顯示用以實施本發明之轉換軟體程式斷言為硬 體描述⑺5程式碼的方法7QQ的通用電腦9qq的硬體區塊 :意圖’電腦系統咖包含許多廣為人知的元件,如處理 0 ”周路介Φ 920、記憶體93〇、以及非揮發性儲存 t置940 ’其中非揮發性儲存裝置940可以是硬碟、快閃 ^機§己憶體(f丨ash RAM)、快閃唯讀記憶體(f|ash R〇M)、 電子抹除式唯讀記憶體(EEPROM)或其他類似功能的儲 存裝置’這些元件透過匯流排950連接起來,在記憶體930 中包含指令集’指令集由處理器91〇所執行並實施本發明 的轉換軟體程式斷言為硬體描述語言程式碼的方法,在第 九圖中省略了許多傳統的元素,這些元素為技藝習知者所 24 丄⑽821 知因此不需要對電腦系統9GQ的作#解釋太多。 ^發_轉換軟體程摘言為硬體描述語言程式碼的 =和系統可Μ軟體方式實施、硬體方式、或是兩者的 ^中在本㈣的部分實施财,线或方法由存放在記 ^戶^軟體所實施,該軟體由適合的計料置中的微處 樣盯’然而’本發明的方法與系統亦能植入任何給 二令執行祕輕置❹或狀軸的電财讀取媒體, ,樣的指令執行系統包含任何計算裝置、包含處理器的系 ^、或是其他可存取或執行指令執行线的指令集的系 統’在上賴揭露的内容中,電腦可讀取媒體可以是任何 可包容、存放、通信、傳播或輸送程式以供執行指令執行 系統所用或與之連接的裝置,舉例來說,電腦可讀取媒體 可以是基於電子、磁性、光學、電磁、紅外線、或半導體 技術的系統或傳播媒體,而不限於此。 使用電子技術的電腦可讀取媒體包含:具有一或多條 線路的電性連接或電子裝置、隨機存取記憶體(RAM)、唯 讀記憶體(R〇M)、抹除式可程式化唯讀記憶體(EPROM或 閃光記憶體),使用磁性技術的電腦可讀取媒體包含可攜帶 式電腦磁片,使用光學技術的電腦可讀取媒體包含:光纖 25 1329821 或可攜帶式光學碟片(CD-ROM或其他格式的光碟),以上 所it為示範所用而本發明不限於此。電腦可讀取媒體甚至 可此包含紙張或其他可印出電腦程式的媒體,使用這種媒 體時’程式可以使用電子技術自媒體上獲得、解讀、編譯 或其他適當的處理方式,如光學掃描,之後將成是存放於 電腦記憶體中,另外在本發明實施例的範圍中,本發明還 包含將實施例的功能植入硬體中的邏輯元件或是軟體設定 • 媒體。 以上所述僅為本發明之較佳實施例而已,並非用以限 定本發明之申請專利範圍;凡其他未脫離發明所揭示之精 神下所完成之等效改變或修飾,均應包含在下述之申請專 利範圍内。 • 【圖式簡單說明】 第一圖顯示使用本發明的方法轉換軟體程式碼斷言為硬體 描述語言程式碼的整體資料流區塊示意圖。 .第二A圖顯示軟體程式碼與硬體程式碼階層架構與兩者間 •對應關係的區塊層級示意圖。 第二B圖顯示軟體程式碼與硬體程式碼檔案如何表示第二 A圖中的階層架構的示意圖。 26 1329821 第三圖顯示軟體程式碼與硬體程式碼中另一種階層架構的 示意圖。 第四圖顯示一軟體程式碼函數以及對應的硬體程式碼模組 示意圖。 第五圖顯示使用本發明所揭露的方法轉換如第四圖所示的 軟體程式碼函數中的斷言的硬體程式碼模組的示意圖。 第六圖顯示本發明所揭露的方法如何對應C/C++形式的 斷言於硬體描述語言形式的示意圖。 第七圖顯示本發明的一實施例中可轉換軟體程式斷言為硬 體描述語言程式碼之系統的區塊示意圖。 第八圖顯示本發明的一實施例中可轉換軟體程式斷言為硬 體描述語言程式碼方法的流程圖。 第九圖顯示用以實施本發明之轉換軟體程式斷言為硬體描 述語言程式碼方法的通用電腦的硬體區塊示意圖。 【主要元件符號說明】 110 .軟體程式碼 120 轉譯工具 130 硬體程式碼 140 斷言轉換工具 150 包含硬體斷言的硬體程式碼 27 1329821
160 硬體描述語言模擬器 210S 函數main 210H 模組top 220S 類另丨J S一MUX 220H 模組HJVIUX 230S 類別S_CTR 230H 模組H_CTR 240S 類別S_ENC 240H 模組H_ENC 310 函數區塊 320 模組區塊 330 序列區塊 340 流程區塊 350S 軟體控、制區塊 350H 硬體控制區塊 410S 軟體函數 410H 硬體模組 420S 第一控制區塊 420H 第一控制區塊 430S 第二控制區塊 430H 第二控制區塊 28 1329821
440 流程區塊 450 斷言 510 硬體斷言 610 C/C++(軟體)斷言 620 布林代數 630 輸出字串 640 嚴重程度 650 Verilog語言(硬體)斷言 660 屬性定義 670 ASSERT宣告 680 布林代數 690 $FATAL(嚴重程度)宣告 695 輸出字串 710 讀取邏輯 720 第一定位邏輯 725 軟體指示碼 727 軟體區塊 730 第二定位邏輯 735 硬體指示碼 737 硬體區塊 740 轉譯邏輯 29 1329821 750 第三定位邏輯 760 插入邏輯 800 可轉換軟體斷言為硬體描述語言程式碼方法 810 從軟體來源檔案中讀取包含軟體斷言的函數或類 別 820 決定軟體斷言與組成函數或類別的各種區塊的相
對位置 830 讀取相對於函數或類別的硬體模組 840 轉換軟體斷言到硬體斷言 850 判斷硬體斷言在硬體程式碼檔案中的插入位置 860 在插入位置插入硬體斷言 900 電腦系統 910 處理器 920 網路介面 930 記憶體 940 非揮發性儲存裝置 950 匯流排

Claims (1)

1329821 十、申請專利範圍: 1. 一種轉換一軟體程式語言來源檔案中的斷言到硬體描述 語言來源檔案中的轉換方法,包含: 從一第一來源檔案内的軟體程式語言程式碼中讀取一軟 體程式斷言,其中該軟體程式斷言位於一第一區塊中; 定位一第二區塊的位置,其中該第二區塊對應該第一區 塊,且位於一包含硬體描述語言來源程式碼的第二來源 檔案内,該第二來源檔案内的程式碼為轉譯該第一來源 檔案而來,其中不包含由該軟體程式斷言轉譯而來的一 硬體程式斷言; 轉換該軟體程式斷言為以硬體描述語言寫成的一硬體程 式斷言; 判斷該第二區塊内的一插入位置以插入該硬體程式斷 言;以及 在該插入位置插入該硬體程式斷言。 2. 如申請專利範圍第1項所述之轉換方法,其中上述之第 一來源檔案包含最少一頂端軟體實體,而該第二來源檔 案包含最少一頂端硬體實體,其中每一實體包含最少一 區塊,該轉換方法更包含: 判斷該軟體程式斷言位於哪一個該頂端軟體實體中; 31 1329821 判斷該軟體程式斷言與包含該軟體程式斷言的該頂端軟 體實體内其他區塊的一相對位置; 判斷哪一該頂端硬體實體對應於包含該軟體程式斷言的 該頂端軟體實體;以及 基於該相對位置判斷在對應的該頂端硬體實體内用以插 入該硬體程式斷言的該插入位置。 • 3.如申請專利範圍第1項所述之轉換方法,更包含: 定位該第一區塊内的該軟體程式斷言的位置,該第一區 塊位於該第一來源檔案内的該頂端軟體實體中;只及 判斷包含對應該頂端軟體實體的該頂端硬體實體的該第 二來源檔案的檔案名稱。 4.如申請專利範圍第3項所述之轉換方法,其中該頂端軟 • 體實體為一軟體程式語言函數,該頂端硬體實體為一硬 體描述語言模組。 . 5.如申請專利範圍第4項所述之轉換方法,其中該函數與 該模組都包含最少一區塊,該轉換方法更包含: 判斷該軟體程式斷言相對於在同一函數内的其他區塊的 一軟體程式斷言位置; 32 1329821 判斷該頂端硬體實體内的複數個區塊的複數個區塊位 置; 判斷一插入位置,該插入位置與在同一模組内的該複數 個區塊的相對位置關係對應於該軟體程式斷言位置;以 及 插入該硬體程式斷言於該插入位置。 • 6.如申請專利範圍第1項所述之轉換方法,更包含: 讀取一第一群組來源檔案,該第一群組來源檔案包含多 個以軟體程式語言寫成的來源檔案,其中更包含該第一 來源檔案; ’ 、 建立一第一階層架構用以表示該第一群組來源檔案内的 程式碼檔案階層架構;以及 判斷一第二群組來源檔案内的該第二來源檔案,該第二 • 群組來源檔案由該第一群組來源檔案轉譯而來,其中該 第二來源檔案在該第二群組來源檔案的階層架構位置對 應於該第一來源檔案在該第一階層架構的位置。 7.如申請專利範圍第1項所述之轉換方法,其中上述之軟 體程式斷言包含一布林代數與一輸出字串。 33 1329821 8. 如申請專利範圍第1項所述之轉換方法,其中上述之硬 體程式斷言包含一屬性定義。 9. 一種轉換一第一來源檔案中的最少一斷言到一第二來 '原稽案中的轉換系統’其中該第—來源標案包含用軟體程 式語言寫成的來源碼,該第二來源檔案包含硬體描述語言 來源碼,該轉換系統包含: 一讀取邏輯,用以自該第一來源檔案讀取一軟體程式斷 言; 一第一定位邏輯,設定一第一區塊,該第一區塊包含該 第一來源檔案内的該軟體程式斷言與最少一軟體位置指 示碼,該第一定位邏輯用以判斷該軟體程式斷言的一相 對位置,該相對位置於該第一區塊内並與該軟體位置指 示碼相關; 一第二定位邏輯,設定一第二區塊’該第二區塊位於該 第二來源檔案内並對應於該第一區塊,該第二定位邏輯 搜尋該第二來源檔案内的最少一硬體位置指示碼,該硬 體位置指示碼對應於該軟體位置指示碼; 一轉譯邏輯,用以轉譯該軟體程式斷言為一硬體程式斷 言; 34 1329821 一第三定位邏輯,用以判斷該第二來源檔案内的一插入 位置,該插入位置與該第二區塊内的該最少一硬體位置 指示碼相關;以及 一插入邏輯用以插入該硬體程式斷言至該插入位置。 10. 如申請專利範圍第9項所述之轉換系統,其中上述之 第一來源檔案包含最少一頂端軟體實體,而該第二來源檔 案包含最少一頂端硬體實體,其中每一實體包含最少一區 塊,該轉換系統更包含: 一邏輯元件,用以判斷該軟體程式斷言位於哪一.個該頂 端軟體實體中; 一邏輯元件,用以判斷該軟體程式斷言與包含該軟體程 式斷言的該頂端軟體實體内其他區塊的一相對位置; 一邏輯元件,用以判斷哪一該頂端硬體實體對應於包含 該軟體程式斷言的該頂端軟體實體;以及 一邏輯元件,基於該相對位置判斷在對應的該頂端硬體 實體内用以插入該硬體程式斷言的該插入位置。 11. 如申請專利範圍第9項所述之轉換系統,更包含: 35 1329821 一邏輯元件,用以定位該第一區塊内的該軟體程式斷言 的位置,該第一區塊位於該第一來源檔案内的該頂端軟 體實體中;以及 一邏輯元件,用以判斷包含對應該頂端軟體實體的該頂 端硬體實體的該第二來源檔案的檔案名稱。 12. 如申請專利範圍第11項所述之轉換系統,其中該頂端 軟體實體為一軟體程式語言函數,該頂端硬體實體為一硬 體描述語言模組。 • .、 13. 如申請專利範圍第12項所述之轉換系統,其中該頂端 軟體實體與該頂端硬體實體包含最少一區塊,該轉換系統 更包含: 一邏輯元件,用以判斷該軟體程式斷言相對於在同一函 數内的其他區塊的一軟體程式斷言位置; 一邏輯元件,用以判斷該頂端硬體實體内的複數個區塊 的複數個區塊位置; 一邏輯元件,用以判斷一插入位置,該插入位置與在同 一模組内的該複數個區塊的相對位置關係對應於該軟體 程式斷言位置;以及 一邏輯元件,用以插入該硬體程式斷言於該插入位置。 36 1329821 14.如申請專利範圍第9項所述之轉換系統,更包含: 邏輯元件,用以讀取一第一群組來源播案,該第一群 組來源檔案包含多個以軟體程式語言寫成的來源槽案, 其中更包含該第一來源檔案; 一邏輯元件,用以建立一第一階層架構用以表示該第一 群組來源檔案内的程式碼標案階層架構;以及 一邏輯元件,用以判斷一第二群組來源檔案内的該第二 來源檔案,該第二群組來源槽案由該第_群組來源樓案 轉譯而來,其巾該第二來源财在該第二群組來源稽案 的階層架構位置對應於該第一來源檔案在該等一階層架 構的位置。 15. 如申請專利範圍第9項所述之轉換系統,其中上述之 軟體程式斷言包含一布林代數與一輸出字串。 16. 如申請專利範圍第9項所述之轉換系統,其中上述之 硬體程式斷言包含一屬性定義。 17. 一種轉換一軟體程式語言來源檔案中的斷言到硬體描 述語言來源檔案中的方法,包含: 37 1329821 從一第一來源檔案内的軟體程式語言程式碼中讀取一軟 體程式斷言; 定位一軟體程式函數内該軟體程式斷言的位置; 自一第二來源檔案讀取一硬體程式模組,該硬體程式模 組對應該軟體程式函數,該第二來源檔案包含由該第一 來源檔案之來源程式碼轉譯而來的硬體描述語言來源程 式碼,其中該第二來源檔案並不包含由該第一來源檔案 • 轉譯而來的硬體程式斷言; 轉換該軟體程式斷言為以硬體描述語言寫成的一硬體程 式_言; 基於該軟體程式函數的位置判斷在該硬體程式模組的一 插入位置,用以插入該硬體程式斷言;以及 在該插入位置插入該硬體程式斷言。 • 18.如申請專利範圍第17項所述之轉換方法,其中上述該 軟體程式函數與該硬體程式模組都包含最少一區塊,該轉 換方法更包含: ^ 判斷該軟體程式斷言相對於該軟體程式函數内其他區塊 的一軟體程式斷言位置; 判斷該硬體程式模組内複數個區塊的複數個區塊位置; 38 1329821 判斷該複數個區塊位置之中對應到該軟體程式斷言位置 的一對應區塊位置;以及 插入該硬體程式斷言於該對應區塊位置。 19.如申請專利範圍第17項所述之轉換方法,其中上述之 軟體程式斷言包含一布林代數與一輸出字串。 • 20.如申請專利範圍第17項所述之轉換方法,其中上述之 硬體程式斷言包含一屬性定義。
39
TW096104799A 2006-06-01 2007-02-09 Transferring software assertions to hardware description language code TWI329821B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/445,013 US20070294647A1 (en) 2006-06-01 2006-06-01 Transferring software assertions to hardware design language code

Publications (2)

Publication Number Publication Date
TW200805102A TW200805102A (en) 2008-01-16
TWI329821B true TWI329821B (en) 2010-09-01

Family

ID=38795377

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096104799A TWI329821B (en) 2006-06-01 2007-02-09 Transferring software assertions to hardware description language code

Country Status (3)

Country Link
US (1) US20070294647A1 (zh)
CN (1) CN101055523A (zh)
TW (1) TWI329821B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934183B2 (en) * 2008-04-25 2011-04-26 Synopsys, Inc. Method and apparatus for simulating behavioral constructs using indeterminate values
TWI407370B (zh) * 2010-04-30 2013-09-01 Univ Nat Taiwan 正規表示法電路系統以及其共用方法
EP2720149A3 (en) * 2012-09-07 2018-01-24 Samsung Electronics Co., Ltd Apparatus and method for generating assertion based on user program code, and apparatus and method for verifying processor using assertion
US9323502B2 (en) 2013-03-15 2016-04-26 Nvidia Corporation System, method, and computer program product for altering a line of code
US9015643B2 (en) 2013-03-15 2015-04-21 Nvidia Corporation System, method, and computer program product for applying a callback function to data values
US20140282390A1 (en) * 2013-03-15 2014-09-18 Nvidia Corporation System, method, and computer program product for creating a compute construct
US9171115B2 (en) 2013-04-10 2015-10-27 Nvidia Corporation System, method, and computer program product for translating a common hardware database into a logic code model
US9021408B2 (en) 2013-04-10 2015-04-28 Nvidia Corporation System, method, and computer program product for translating a source database into a common hardware database
US9015646B2 (en) 2013-04-10 2015-04-21 Nvidia Corporation System, method, and computer program product for translating a hardware language into a source database
CN104199652A (zh) * 2014-08-26 2014-12-10 邱涌 基于数据流的c to hdl同步映射方法
KR102186719B1 (ko) * 2018-11-15 2020-12-08 주식회사 마르시스 블록형 무선 코딩 명령어 입력 장치 및 방법
CN111615688A (zh) * 2019-05-28 2020-09-01 深圳市大疆创新科技有限公司 一种断言验证代码绑定方法及装置
CN113496105A (zh) * 2020-03-20 2021-10-12 洛极豪斯私人有限公司 用于数字电路设计的综合用hdl的rtl描述的方法
CN112364581B (zh) * 2020-11-13 2023-07-25 上海兆芯集成电路股份有限公司 自动在寄存器传输级设计文件中插入特定代码的方法及装置
CN112364580A (zh) * 2020-11-13 2021-02-12 上海兆芯集成电路有限公司 自动在寄存器传输级设计文件中插入特定代码的方法及装置
CN112560401B (zh) * 2020-12-22 2024-04-09 成都海光微电子技术有限公司 Verilog文件转换方法、装置、存储介质及设备
CN114547085B (zh) * 2022-03-22 2023-05-05 中国铁塔股份有限公司 一种数据处理方法、装置、电子设备及存储介质
CN116661794B (zh) * 2023-04-21 2024-04-05 合芯科技有限公司 一种硬件描述语言语义转换方法及装置
CN116663463B (zh) * 2023-07-27 2023-11-10 北京开源芯片研究院 一种电路验证方法、装置、电子设备及可读存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2173812C (en) * 1995-04-11 2000-02-08 Shinichi Kikuchi Recording medium, recording apparatus and recording method for recording data into recording medium, and reproducing apparatus and reproduction method for reproducing data from recording medium
US6226776B1 (en) * 1997-09-16 2001-05-01 Synetry Corporation System for converting hardware designs in high-level programming language to hardware implementations
US6625797B1 (en) * 2000-02-10 2003-09-23 Xilinx, Inc. Means and method for compiling high level software languages into algorithmically equivalent hardware representations
US7346881B2 (en) * 2002-05-13 2008-03-18 Tensilica, Inc. Method and apparatus for adding advanced instructions in an extensible processor architecture
US20040163072A1 (en) * 2003-02-19 2004-08-19 Royal Design Ltd. Electronic design automation with automatic generation of hardware description language (HDL) code
US7769794B2 (en) * 2003-03-24 2010-08-03 Microsoft Corporation User interface for a file system shell

Also Published As

Publication number Publication date
US20070294647A1 (en) 2007-12-20
TW200805102A (en) 2008-01-16
CN101055523A (zh) 2007-10-17

Similar Documents

Publication Publication Date Title
TWI329821B (en) Transferring software assertions to hardware description language code
Bhatnagar Advanced ASIC chip synthesis
US7231627B2 (en) Merging a hardware design language source file with a separate assertion file
Cai et al. Transaction level modeling: an overview
US6862563B1 (en) Method and apparatus for managing the configuration and functionality of a semiconductor design
JP4994393B2 (ja) 単一のマスターモデルから異なる抽象化レベルの複数のモデルを生成するシステムと方法
US7769569B2 (en) Method and system for designing a structural level description of an electronic circuit
US9298865B1 (en) Debugging an optimized design implemented in a device with a pre-optimized design simulation
US8522179B1 (en) System and method for managing timing margin in a hierarchical integrated circuit design process
EP3532936B1 (en) Debugging system and method
US8910097B2 (en) Netlist abstraction
US20160246601A1 (en) Technique for translating dependent instructions
CN106650033B (zh) 一种输入输出端口的工艺映射方法
Chu et al. A New Design Methodology for Composing Complex Digital Systems
Yang et al. HDLs modeling technique for burst-mode and extended burst-mode asynchronous circuits
JP2011090518A (ja) 高位合成装置、高位合成方法、及び高位合成プログラム
US20230205969A1 (en) Techniques for modeling and verification of convergence for hierarchical domain crossings
US11815971B2 (en) Boundary port power in pent modelling and management
CN110110362B (zh) 一种使用嵌入式命令设计芯片的方法
JP2010262412A (ja) 論理回路設計装置
Ghofrani et al. Assertion based verification in TLM
Brunmayr et al. A hardware/software codesign template library for design space exploration
Leonard Implementation of a System-on-Chip for Self-healing of Analog Receiver Components in a 65nm CMOS Process.
IL181273A (en) Method and system for designing a structural level description of an electronic circuit
Mohamed et al. Verilog for Implementation and Verification