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

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

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

從零到一如何構(gòu)建一款先進(jìn)的數(shù)字仿真器呢?

路科驗(yàn)證 ? 來(lái)源: 芯華章科技 ? 2023-03-25 09:16 ? 次閱讀

數(shù)字仿真器(Simulator)是一種大型EDA工業(yè)軟件,是數(shù)字驗(yàn)證領(lǐng)域的基礎(chǔ)工具之一,也是為數(shù)不多的簽核(sign-off)級(jí)工具。其實(shí)歷史上第一款 EDA 軟件SPICE,就是從仿真開始的。可以說(shuō),EDA軟件從誕生之日起,就帶著強(qiáng)烈的仿真基因。因此,如果沒有一款獨(dú)立自主的數(shù)字仿真器,國(guó)產(chǎn)EDA實(shí)現(xiàn)對(duì)國(guó)外工具壟斷的打破就無(wú)從談起。

目前,行業(yè)主流的仿真器,諸如VCS,Xcelium, Questa等,都是國(guó)外EDA大廠花了數(shù)十年的時(shí)間開發(fā)、迭代而來(lái)的。這些軟件內(nèi)部設(shè)計(jì)極其復(fù)雜、代碼量巨大,單單維護(hù)的團(tuán)隊(duì)人數(shù)就可達(dá)數(shù)百人甚至上千人。由此可見,數(shù)字仿真器技術(shù)開發(fā)難度之大。

合抱之木,生于毫末;九層之臺(tái),起于累土。2021年11月,國(guó)內(nèi)系統(tǒng)級(jí)驗(yàn)證EDA解決方案提供商芯華章發(fā)布了首款數(shù)字仿真器產(chǎn)品穹鼎GalaxSim,并得到中科院半導(dǎo)體、芯來(lái)科技等用戶一線項(xiàng)目部署。GalaxSim在開發(fā)過程中,結(jié)合國(guó)產(chǎn)EDA的迫切需求,選擇了合適的技術(shù)路線、開發(fā)模式,依托研發(fā)團(tuán)隊(duì)的豐富EDA經(jīng)驗(yàn)及高效的工作,站在更高的技術(shù)起點(diǎn)上,用幾年的時(shí)間正在追趕國(guó)外幾十年的路。

現(xiàn)在我們梳理實(shí)踐所得和淺見,希望與行業(yè)同仁進(jìn)行分享交流,幫助志在推動(dòng)國(guó)內(nèi)EDA數(shù)字仿真器進(jìn)步的有志之士,提供一些可能的啟發(fā)和參考,共同建立良好的EDA發(fā)展生態(tài)。

本篇我們將以穹鼎GalaxSim為例,展示一款商用級(jí)別的數(shù)字仿真器從0到1的開發(fā)過程,包括商用仿真器的技術(shù)指標(biāo)、開發(fā)模式、技術(shù)路線等方面。

1. 數(shù)字仿真器的技術(shù)要求

數(shù)字仿真器在驗(yàn)證中發(fā)揮著舉足輕重的作用。判斷一款國(guó)產(chǎn)仿真器是否能真的商用,甚至可以與國(guó)際主流選擇的仿真器并駕齊驅(qū), 一般要看它是否滿足以下四點(diǎn)硬性要求:

1

全面的SystemVerilog語(yǔ)法覆蓋

SystemVerilog可以說(shuō)是最復(fù)雜的語(yǔ)言之一,而數(shù)字仿真器又是EDA工具中對(duì)SystemVerilog支持最全面的工具。

2

高精度

仿真器相對(duì)其他驗(yàn)證工具,是sign-off級(jí)別的,因此要求仿真器必須嚴(yán)格按照事件驅(qū)動(dòng)型的算法進(jìn)行仿真調(diào)度,符合IEEE1800等標(biāo)準(zhǔn)。

3

高性能

仿真器的性能直接決定了用戶在驗(yàn)證上的成本。假如某個(gè)優(yōu)化可以使仿真速度提高2x, 那可以使原本一個(gè)月完成的回歸測(cè)試縮短到二周,從而給客戶省掉很大的驗(yàn)證支出。

4

高可靠性

作為大型工業(yè)軟件,仿真器的設(shè)計(jì)極其復(fù)雜。一款大型軟件,涉及到的模塊非常多,參與的開發(fā)者也非常多。如何確保軟件質(zhì)量可控,在客戶的超大設(shè)計(jì)上能跑幾十小時(shí),甚至幾周不出現(xiàn)故障,是考驗(yàn)一個(gè)仿真器能否真正商用的重要指標(biāo)之一。因此,作為用戶sign-off 的工具,仿真器的故障率必須極低。即使出現(xiàn)故障,也能在很短的時(shí)間內(nèi)排查并修復(fù)。

2.開發(fā)模式的選擇:瀑布式開發(fā)VS敏捷開發(fā)

2af98386-caa9-11ed-bfe3-dac502259ad0.png ?

編譯型數(shù)字仿真器的原理如上圖所示,它從verilog source到最終機(jī)器碼生成,中間經(jīng)歷了多個(gè)環(huán)節(jié)。它既具備了Compiler的特點(diǎn),同時(shí)又是一個(gè)數(shù)字電路仿真器。它集成了多種底層技術(shù),涉及編譯、算法、圖論等知識(shí)。

盡管從概念上,我們可以把這個(gè)過程分解成不同的階段,但是在實(shí)際實(shí)現(xiàn)上,我們其實(shí)很難單獨(dú)把某一塊抽出來(lái)。以parser/elaboration階段為例,這個(gè)階段需要把RTL的語(yǔ)法解析出來(lái)。從功能上,它和后面的階段是不同的。然而,如果把它作為一個(gè)模塊獨(dú)立開發(fā),就會(huì)面臨無(wú)法測(cè)試的困難。因?yàn)橛行〆laboration的結(jié)果,需要到了runtime階段才可能測(cè)出是否正確。

軟件開發(fā)有兩種模式,一種是傳統(tǒng)的瀑布式模式,把一個(gè)軟件劃分成若干模塊。每個(gè)模塊都定義好spec,然后分配給各個(gè)團(tuán)隊(duì)開發(fā);到了一定節(jié)點(diǎn),再進(jìn)行聯(lián)調(diào)。另一種是敏捷開發(fā),就是快速將flow打通,進(jìn)行不停地迭代,就像生物界胚胎的成長(zhǎng)一樣,逐步將軟件迭代成熟。

2b220d1a-caa9-11ed-bfe3-dac502259ad0.png ?

上圖給出了兩種不同模式的區(qū)別。由于Simulator涉及到的環(huán)節(jié)非常多,有很多任務(wù)是有依賴關(guān)系的,只能串行開展。如果按照傳統(tǒng)的模式,不僅完成所有任務(wù)的總時(shí)間會(huì)變得很長(zhǎng),它還會(huì)導(dǎo)致最后聯(lián)調(diào)的時(shí)間非常的不確定。因?yàn)楹芏嗄K的耦合性很強(qiáng),很多問題需要等到最后所有模塊放在一起后才能發(fā)現(xiàn)。

基于此,為了降低研發(fā)風(fēng)險(xiǎn),提高開發(fā)效率,GalaxSim的開發(fā)采用了敏捷開發(fā)模式。在敏捷開發(fā)模式下,每個(gè)任務(wù)可以不用一步到位,而是可以先做一個(gè)比較初級(jí)的版本,從v1開始進(jìn)行迭代,直到vN。完成每個(gè)迭代的時(shí)間,是大大短于完成整個(gè)任務(wù)的時(shí)間的。這樣,依賴于該任務(wù)的其他任務(wù)就可以提前開展了。聯(lián)調(diào)階段的不確定也會(huì)大大降低,因?yàn)楹芏鄦栴}都可以在前期階段暴露出來(lái)。通過敏捷開發(fā),芯華章的GalaxSim可以更合理地調(diào)配資源,并通過大量迭代,使得產(chǎn)品能達(dá)到商用要求。

3. 技術(shù)路線的選擇:守正、創(chuàng)新

從0到1,開發(fā)一款具備國(guó)產(chǎn)自主知識(shí)產(chǎn)權(quán)的仿真器,肯定不能僅僅做一個(gè)me too的產(chǎn)品,需要有創(chuàng)新、超越。我們面臨的問題是,做一個(gè)怎樣的仿真器,能在解決國(guó)產(chǎn)替代的基礎(chǔ)上,實(shí)現(xiàn)最終的超越?這里面既要守正,也要?jiǎng)?chuàng)新。

何謂守正?創(chuàng)新的前提首先要先解決有無(wú)的問題。上文提到,不管采用什么技術(shù),仿真器都必須滿足四個(gè)指標(biāo):SystemVerilog、精度、性能、可靠性。因此,任何研發(fā)路線與技術(shù)的選擇,都必須滿足以上4個(gè)約束條件。

與此同時(shí),我們吸取主流數(shù)字仿真器的歷史研發(fā)教訓(xùn),針對(duì)國(guó)內(nèi)使用環(huán)境進(jìn)行客制化創(chuàng)新。比如在SystemVerilog方面,很多主流仿真器的支持其實(shí)并不是一步到位完成的,而是在一系列并購(gòu)后集成進(jìn)來(lái)的。GalaxSim在這方面,可以發(fā)揮后發(fā)優(yōu)勢(shì),采用全新的設(shè)計(jì)框架,更好實(shí)現(xiàn)SystemVerilog的豐富語(yǔ)法,讓整個(gè)compile flow無(wú)縫對(duì)接,避免不斷“打補(bǔ)丁”帶來(lái)的技術(shù)冗余與滯澀,提供更完整、一體化的驗(yàn)證解決方案。

以性能為例,runtime是仿真器的一項(xiàng)重要技術(shù)指標(biāo)。大多數(shù)國(guó)際主流仿真器在過去數(shù)十年都做了大量的工作。然而,compile time 也是性能的一部分。近5-10年,隨著設(shè)計(jì)規(guī)模越來(lái)越大,compile time 也日益成為性能瓶頸。而且,compile time 和 run time常常是矛盾的。GalaxSim使用創(chuàng)新底層架構(gòu),在提高runtime性能的同時(shí),兼顧了compile time的控制。

4. “蝶變”:GalaxSim的迭代歷程

敏捷開發(fā)意味著快速的軟件迭代。

GalaxSim 的迭代歷程,比較類似于一個(gè)胚胎的成長(zhǎng)過程。胚胎每一步的變化并不大(比如細(xì)胞分裂),然而,經(jīng)過足夠的變化,最終就會(huì)由量變到質(zhì)變,就像蝶變一樣。

如何確保GalaxSim的迭代是按照我們?cè)O(shè)計(jì)的方向,而不會(huì)走偏呢?這里面,軟件的迭代又非常像生物的進(jìn)化,我們需要設(shè)計(jì)好一個(gè)目標(biāo)(生存條件),以及一個(gè)進(jìn)化環(huán)境。根據(jù)前文所述,GalaxSim從0到1的第一階段目標(biāo),是要演變成一個(gè)至少滿足4個(gè)約束條件的仿真器。

4.1

以終為始,設(shè)計(jì)迭代目標(biāo)

第一階段我們會(huì)以終為始,根據(jù)上文提到的四點(diǎn)對(duì)仿真器的硬性要求,分別制定多維度可量化的迭代目標(biāo),通過不斷的調(diào)試達(dá)成各項(xiàng)指標(biāo)。

4.2

進(jìn)化環(huán)境的搭建

如何確保軟件向著我們?cè)O(shè)置的目標(biāo)進(jìn)化,而不是走偏,進(jìn)化環(huán)境至關(guān)重要。芯華章的研發(fā)團(tuán)隊(duì)為此專門搭建了一套內(nèi)部CICD flow, 包含了回歸測(cè)試系統(tǒng),這個(gè)系統(tǒng)包含了大量的測(cè)試用例,各種測(cè)試基準(zhǔn)(benchmark)。GalaxSim在這些用例中的表現(xiàn)結(jié)果會(huì)被實(shí)時(shí)監(jiān)控。尤其是性能方面,我們的系統(tǒng)引入了類似銀行的記賬功能。每個(gè)研發(fā)環(huán)節(jié)導(dǎo)致的slowdown都會(huì)被記錄備案,每一筆帳都可以追溯。這些嚴(yán)苛的環(huán)境,確保了軟件最終的性能及質(zhì)量。

值得一提的是,這套系統(tǒng)是我們?cè)诘谝惶炀烷_始著手搭建的,與GalaxSim的核心代碼是同步開發(fā)的。

4.3

Galaxsim的主要迭代節(jié)點(diǎn):

2b50149e-caa9-11ed-bfe3-dac502259ad0.png ? ? ? ? ? ? ? ? ? ? ? ? ?

5. 現(xiàn)狀:已獲得一線項(xiàng)目部署

目前GalaxSim已經(jīng)在中科院半導(dǎo)體所、芯來(lái)科技等若干客戶的一線項(xiàng)目中得到應(yīng)用,性能符合客戶預(yù)期。

6. 總結(jié)

在未來(lái),GalaxSim的進(jìn)化還會(huì)繼續(xù),并擁抱更多的創(chuàng)新,最終實(shí)現(xiàn)國(guó)產(chǎn)數(shù)字仿真器的超越。







審核編輯:劉清

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

    關(guān)注

    14

    文章

    1008

    瀏覽量

    83441
  • EDA技術(shù)
    +關(guān)注

    關(guān)注

    12

    文章

    172

    瀏覽量

    36802
  • SPICE
    +關(guān)注

    關(guān)注

    5

    文章

    175

    瀏覽量

    42393
  • VCS
    VCS
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    9537

原文標(biāo)題:解碼國(guó)產(chǎn)EDA數(shù)字仿真器系列之一 | 從零到一 如何構(gòu)建一款先進(jìn)的數(shù)字仿真器

文章出處:【微信號(hào):Rocker-IC,微信公眾號(hào):路科驗(yàn)證】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    光耦仿真器簡(jiǎn)介

    電子發(fā)燒友網(wǎng)站提供《光耦仿真器簡(jiǎn)介.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 11:45 ?0次下載
    光耦<b class='flag-5'>仿真器</b>簡(jiǎn)介

    仿真器的使用方法有哪些

    仿真器種用于模擬和測(cè)試電子系統(tǒng)、軟件或硬件的工具。它可以幫助工程師在實(shí)際硬件或軟件部署之前,對(duì)設(shè)計(jì)進(jìn)行驗(yàn)證和調(diào)試。 仿真器的基本概念 仿真器
    的頭像 發(fā)表于 08-22 09:16 ?273次閱讀

    設(shè)計(jì)一款基于opa847的高通濾波,仿真達(dá)不到效果怎么解決?

    各位好,目前打算設(shè)計(jì)一款基于opa847的高通濾波,放大倍數(shù)為40dB,截止頻率為20kHz,通過書籍資料上的公式計(jì)算出的結(jié)果進(jìn)行仿真,似乎達(dá)不到效果,想請(qǐng)問各位該如何解決?
    發(fā)表于 08-19 07:18

    安森美推出一款基于PLECS的具有獨(dú)特功能的領(lǐng)先在線仿真工具

    Elite Power仿真工具是安森美(onsemi)推出的一款基于PLECS的具有獨(dú)特功能的領(lǐng)先在線仿真工具,適用于軟/硬開關(guān)應(yīng)用,使工程師在開發(fā)周期的早期階段,
    的頭像 發(fā)表于 03-20 09:58 ?502次閱讀

    fpga仿真器是什么?它有哪些優(yōu)勢(shì)?

    FPGA仿真器種用于模擬FPGA(現(xiàn)場(chǎng)可編程門陣列)硬件行為的軟件工具。它通過模擬FPGA內(nèi)部的邏輯電路、時(shí)序和接口等,幫助工程師在FPGA設(shè)計(jì)過程中進(jìn)行功能驗(yàn)證和性能測(cè)試。FPGA仿真器在FPGA開發(fā)流程中扮演著至關(guān)重要的
    的頭像 發(fā)表于 03-15 15:15 ?1125次閱讀

    fpga仿真器接口定義

    FPGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)仿真器接口的定義主要依賴于仿真器的具體設(shè)計(jì)和所支持的通信協(xié)議。在FPGA的設(shè)計(jì)和仿真過程中,接口的定義對(duì)于實(shí)現(xiàn)與
    的頭像 發(fā)表于 03-15 14:01 ?922次閱讀

    光耦仿真器的優(yōu)勢(shì)有哪些

    光耦仿真器與業(yè)內(nèi)最常見的光耦合引腳對(duì)引腳兼容,有助于無(wú)縫集成現(xiàn)有設(shè)計(jì)中,同時(shí)提供相同的信號(hào)行為。
    的頭像 發(fā)表于 01-30 15:07 ?443次閱讀

    xds100v3仿真器引腳定義

    xds100v3仿真器是德州儀器(Texas Instruments)推出的一款用于嵌入式系統(tǒng)開發(fā)和調(diào)試的仿真器。它具有良好的性能和穩(wěn)定性,可以提供準(zhǔn)確的調(diào)試和仿真功能,方便開發(fā)人員開
    的頭像 發(fā)表于 01-05 13:40 ?3530次閱讀

    技術(shù)分享 | 驗(yàn)證入門黃金組合:數(shù)字仿真器與調(diào)試系統(tǒng)

    歷史上第一款 EDA 軟件SPICE,就是仿真開始的??梢哉f(shuō),EDA軟件誕生之日起,就帶著強(qiáng)烈的仿真基因。 不論是
    的頭像 發(fā)表于 12-18 13:00 ?373次閱讀

    仿真器和燒錄的區(qū)別

    本文中,我們將詳細(xì)討論仿真器和燒錄之間的區(qū)別。 1. 功能區(qū)別 仿真器種為了調(diào)試和驗(yàn)證電子設(shè)備而設(shè)計(jì)的工具。它通常能夠模擬電子設(shè)備的行為并執(zhí)行軟件代碼。
    的頭像 發(fā)表于 12-07 15:48 ?4453次閱讀

    仿真器無(wú)法連接21489目標(biāo)板怎么解決?

    參照21489的官方原理圖,自行制作了塊板子,經(jīng)過調(diào)試,1.1V,3.3V和5V均輸出正常,仿真器鏈接官方板子是OK的,但是鏈接自己制作的板子卻失敗。 仿真器測(cè)試成功,但是
    發(fā)表于 11-30 06:15

    JTAG仿真器接口設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《JTAG仿真器接口設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 11-27 10:05 ?0次下載
    JTAG<b class='flag-5'>仿真器</b>接口設(shè)計(jì)

    Cortex-M系列的單片機(jī)調(diào)試仿真器有哪些?

    Cortex-M系列的單片機(jī)各大公司都有出品,M0M7 型號(hào)太多了。 為了開發(fā)他們仿真器型號(hào)也出了不少。 希望大家能羅列下。 除了Jlink V8Jlink V9ST-link等
    發(fā)表于 11-03 06:42

    普中51仿真器驅(qū)動(dòng)安裝的說(shuō)明手冊(cè)

    今天來(lái)試試普中的仿真器的使用??吹竭@個(gè)普中仿真器,還沒有使用過,只是以前在學(xué)校上單片機(jī)課程的時(shí)候接觸過,但是不是普中的仿真器,現(xiàn)在也有了自己的仿真器,當(dāng)然要試
    發(fā)表于 10-10 08:05

    分享一款能連arduino仿真的電化學(xué)軟件

    分享一款能連arduino仿真的電化學(xué)軟件,能模擬多種檢測(cè)方法,適合仿真環(huán)境文件如下:
    發(fā)表于 10-10 06:52