<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何在SoC設(shè)計(jì)中使用事務(wù)處理(二)

          如何在SoC設(shè)計(jì)中使用事務(wù)處理(二)

          作者: 時(shí)間:2012-08-01 來(lái)源:網(wǎng)絡(luò) 收藏

          當(dāng) 然,正如前面針對(duì)SCV所提到的,另一個(gè)有用的類是trans_relation,它負(fù)責(zé)不同之間的關(guān)系。下面的代碼段顯示出當(dāng) trans_relation為單向時(shí),類是被怎樣運(yùn)用的。一個(gè)分析與可視化工具也可以具備預(yù)先定義的關(guān)系以便獲得對(duì)分析和顯示的特定表示。

          trans_relation r1;

          trans_relation r2;

          trans_handle h1;

          trans_handle h2;

          r1=new(f, parent);

          r2=new(f, child);

          ...h1.add_relation(r1, h2); // h2 is the parent of h1

          h2.add_relation(r2, h1); // h1 is the child of h2

          為實(shí)現(xiàn)記錄,類必須封裝追蹤和記錄API,使數(shù)據(jù)庫(kù)記錄細(xì)節(jié)對(duì)用戶而言不可見。API必須是開放的,以便在工程師和供應(yīng)商等人之間培養(yǎng)出一種公共增 值文化。在創(chuàng)建、生成和記錄時(shí),它也必須經(jīng)受得起跨語(yǔ)言應(yīng)用的檢驗(yàn),從而給工程師一個(gè)高價(jià)值工具。而且它必須簡(jiǎn)單、基本,但是要足夠?qū)挿阂员?覆蓋事務(wù)處理記錄的基本要素。為獲得某些(特定建模語(yǔ)言)具體功能,可以另外在封裝之上再建立API。

          程序員們開發(fā)出了一種被為“開放的 事務(wù)處理接口(OTI)”的API。這是在Novas公司的FSDB writer層之上構(gòu)建的一層。該API用C語(yǔ)言編寫以獲得高可便攜性。事實(shí)上前面列出的那些類都是OpenVera事務(wù)處理類函數(shù)庫(kù)的一部分。它們構(gòu)成 了對(duì)OTI的封裝并且利用DirectC與OpenVera接口。用戶可以從任何地方利用DirectC編碼直接調(diào)用OTI。但總的來(lái)說(shuō),提供一個(gè)將建模 語(yǔ)言的接口要求隱藏起來(lái)的OTI封裝是一個(gè)好主意,這樣用戶就可以專注于建模而忽略數(shù)據(jù)庫(kù)記錄的細(xì)節(jié)。

          與OTI相似的APIs可以很容易 地使工程師能夠采用能與C語(yǔ)言接口的語(yǔ)言來(lái)開發(fā)并記錄事務(wù)處理數(shù)據(jù)。這包括其它流行的硬件驗(yàn)證語(yǔ)言,例如e語(yǔ)言。事實(shí)上,通過(guò)恰當(dāng)?shù)姆庋b系統(tǒng)任務(wù)以及 軟件C/C++代碼,API也可以在硬件描述語(yǔ)言中以直接將事務(wù)處理數(shù)據(jù)從實(shí)現(xiàn)中卸載出去。圖4是一個(gè)帶有所有這些模塊的系統(tǒng)。

          SystemVerilog(3.1a版)(www.systemverilog.org) 是新型的建模與測(cè)試臺(tái)語(yǔ)言。它目前沒有如SystemC里的內(nèi)置事務(wù)處理類別,但是它存在的目的就是將Verilo電路和寄存器數(shù)據(jù)抽象化并封裝至更 有意義的分組數(shù)據(jù)中。這使得我們有必要看看才能建模然后記錄事務(wù)處理數(shù)據(jù)。事實(shí)上,可以采用多種方法在SystemVerilog實(shí)現(xiàn)這一點(diǎn):a)等 待增添內(nèi)置類的標(biāo)準(zhǔn)化努力。這也許會(huì)最終發(fā)生,不過(guò)SystemVerilog今天就可以達(dá)到這一目的。因此何必還要等待概念產(chǎn)生然后再期待供應(yīng)商去支持 它呢?b)創(chuàng)建你自己的事務(wù)處理類和方法(任務(wù)和功能),然后也許再將其作為一個(gè)可分享的函數(shù)庫(kù)捐贈(zèng)給業(yè)界。c)透過(guò)直接編程接口(DPI)或編程語(yǔ)言接 口來(lái)與SystemC集成。d)在建模過(guò)程中調(diào)用“系統(tǒng)任務(wù)”在恰當(dāng)?shù)牡胤酵瓿伞?p> 我們認(rèn)為選項(xiàng)(d)是設(shè)計(jì)工程師的一個(gè)很好的出發(fā)點(diǎn)。它囊括了眾多的接口要求并且以一種簡(jiǎn)單、直接而且相當(dāng)彈性的方式完成任務(wù)。設(shè)計(jì)工程師們可以透過(guò)編程語(yǔ)言接口,或者最好透過(guò)直接編程接口(DPI)來(lái)調(diào)用SystemVerilog “任務(wù)”或C/C++例行程序。就像DirectC一樣,DPI這種機(jī)制是被設(shè)計(jì)用于簡(jiǎn)單地與用C或C++語(yǔ)言編寫的外部無(wú)時(shí)序模塊進(jìn)行接口。

          因此這就產(chǎn)生了兩個(gè)問(wèn)題。事務(wù)處理對(duì)象是什么?設(shè)計(jì)工程師們?cè)撛鯓觿?chuàng)建/生成/記錄事務(wù)處理并開發(fā)API?同樣,我們的答案就是API工具,如圖3所示的OTI。它可隱藏執(zhí)行細(xì)節(jié)并且為事務(wù)處理記錄提供一個(gè)健全而完整的基礎(chǔ)。

          需要更多的自動(dòng)化

          到目前為止所討論的事務(wù)處理記錄是相當(dāng)有用、高效的??墒菍?shí)際上它仍然是人工的,更確切地說(shuō),用戶必須執(zhí)行事務(wù)處理建模并求助于數(shù)據(jù)庫(kù)記錄。隨著標(biāo)準(zhǔn)越來(lái)越成熟以及工具供應(yīng)商聯(lián)合起來(lái),業(yè)界構(gòu)可以開發(fā)額外的自動(dòng)化生成和記錄工具。例如,用戶已經(jīng)可以在Vera RVM中(同樣的,在e語(yǔ)言中)用事務(wù)處理類生成事務(wù)處理。因此,即將到來(lái)的自動(dòng)化將在創(chuàng)建時(shí)這些回叫工具,這樣用戶就用不著擔(dān)心為事務(wù)處理分開建模了。他們可以擴(kuò)展所提供的基本類,并自動(dòng)獲得所需的記錄功能。

          另外,我們發(fā)現(xiàn)通常含有許多模塊,包括專利IP,用于設(shè)計(jì)與驗(yàn)證的建模語(yǔ)言也相當(dāng)?shù)亩?如圖3所示)。因此,一個(gè)完整的就形成一個(gè)難以破解的數(shù) 據(jù)集合。在這種情況下,如果工程師采用某種方法將事務(wù)處理從可獲得的數(shù)據(jù)里提取出來(lái),從而更好地理解系統(tǒng)運(yùn)行的話就再好不過(guò)了。建模、驗(yàn)證與調(diào)試需要統(tǒng)一 標(biāo)準(zhǔn)的符號(hào)和框架,以便架構(gòu)師和設(shè)計(jì)工程師合力進(jìn)行復(fù)雜的設(shè)計(jì)與開發(fā)。TLM是進(jìn)行這種分析的理想模型。設(shè)計(jì)工程師們應(yīng)該更加深入地研究事務(wù)處理級(jí) 建模的細(xì)節(jié),并利用事務(wù)處理級(jí)建模從高效率協(xié)同仿真和高產(chǎn)出的分析與調(diào)試中獲得最大好處。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();