国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

芯片設(shè)計中的Makefile簡單教程

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-24 17:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Makefile可以做什么?

Makefile可以根據(jù)指定的依賴規(guī)則和文件是否有修改來執(zhí)行命令。常用來編譯軟件源代碼,只需要重新編譯修改過的文件,使得編譯速度大大加快。

Makefile的基本格式

目標(biāo):依賴 命令

目標(biāo)是要生成的結(jié)果,依賴是生成結(jié)果需要的源文件和上一步驟的結(jié)果,命令是當(dāng)目標(biāo)不存在或者依賴更新時執(zhí)行的命令。注意命令前必須用tab來縮進,不可以用空格。

示例一:

simv: tb.sv dut.v vcs -full64 -sverilog tb.sv dut.v

這個例子中,simv是目標(biāo),是我們要生成的仿真執(zhí)行文件。tb.sv和dut.v是依賴,執(zhí)行命令前會先檢查tb.sv和dut.v是否存在,以及是否有修改。當(dāng)依賴文件有修改時,或者目標(biāo)不存在時,則執(zhí)行命令vcs -full64 -sverilog tb.sv dut.v來生成simv。

偽目標(biāo)

有時候目標(biāo)并不是真實要生成的文件,比如我們要用Makefile調(diào)用simv來仿真,并不存在一個目標(biāo)文件,這種情況我們稱之為偽目標(biāo)PHONY。

示例二:

sim: simv ./simv -xxx

這個例子中,sim并不是要生成的結(jié)果文件,而只是我們給操作起的一個名字。由于偽目標(biāo)總是不存在,所以命令也一定會重新執(zhí)行,即使simv沒有修改。

我們常常在Makefile的開頭來用.PHONY顯式指明偽目標(biāo)。

示例三:

.PHONY: simsim: simv ./simv -xxx

這樣,我們在terminal里就可以用make sim來調(diào)用仿真命令。

默認目標(biāo)

如果我們只是敲make(后面不跟目標(biāo)),那么將調(diào)用Makefile里的第一個目標(biāo)。那么我們?yōu)榱朔乐钩鲥e通常把第一個目標(biāo)定義成all(執(zhí)行完整的流程)或者help(顯示幫助菜單)。我更傾向于后者,可以幫助我們回憶如何使用Makefile腳本。

示例四:

.PHONY: help simhelp: echo "make help" echo "make simv to compile" echo "make sim to run simulation"simv: tb.sv dut.v vcs -full64 -sverilog tb.sv dut.vsim: ./simv -xxx

這樣,當(dāng)我們不記得如何使用Makefile的時候,直接敲make就會有使用幫助菜單。另外,我們還可以看到,一個目標(biāo)后面可以執(zhí)行多條命令,比如這里的三條echo命令。

隱藏回顯

在執(zhí)行命令前,make會先回顯命令(就是打印出命令)。上面的make help會輸出:

echo "make help"make helpecho "make simv to compile"make simv to compileecho "make sim to run simulation"make sim to run simulation

看起來有點重復(fù)了。在命令前加@可以關(guān)閉回顯示,這正是我們需要的。改進過的Makefile如示例五。

示例五:

.PHONY: helphelp: @echo "make help" @echo "make simv to compile" @echo "make sim to run simulation"

makefile內(nèi)定義變量

當(dāng)源文件比較多,且常需要增減,我們可以把依賴定義成一個變量,放成文件開頭,如下。

示例六:

tbfile := tb.sv env_pkg.sv test_pkg.svrtlfile := dut.v a.v b.v c.vsimv: $(tbfile) $(rtlfile) vcs -full64 -sverilog $(tbfile) $(rtlfile)

當(dāng)要增減文件時,只需要修改文件開頭即可。

調(diào)用shell命令

如果rtl文件太多,還可以在Makefile里調(diào)用shell命令來幫助生成。如下面的例子:

示例七:

tbfile := $(shell ls *.sv)rtlfile := $(shell find rtl -name "*.v")simv: $(tbfile) $(rtlfile) vcs -full64 -sverilog $(tbfile) $(rtlfile)

例七中的tb和rtl文件寫兩遍,是不是有點麻煩。我們最好能簡化一下。在Makefile中有幾個特殊變量,如$@表示目標(biāo),$^表示依賴。所以示例七中的命令可以簡化成:

simv: $(tbfile) $(rtlfile)vcs -full64 -sverilog $^

學(xué)到到這里你已經(jīng)可以寫出大部分的Makefile腳本了。

為makefile增加選項

但我們還需要進一步學(xué)習(xí)兩個重要功能:選項和目錄遞歸。

我們常需要在仿真時提供一些選項,比如testcase名,是否是post仿真,是否要dump波形。那么怎么實現(xiàn)呢?其實Makefile允許從命令行提供額外的變量,格式為OPTION=value。如下面的例子,假設(shè)有三個選項,TC、POST、DUMP:

示例八:

ifeq ($(POST),1)SRC := "netlist.v"else SRC := "rtl.v"endififeq ($(DUMP),1) DUMP_DEF := "+define+DUMP"else DUMP_DEF := ""endifsim: @echo "vcs -full64 -sverilog $(SRC) $(DUMP_DEF) +UVM_TESTNAME=$(TC)"

那么,使用時就可以通過命令行控制選項開關(guān):

make sim TC=basic_testmake sim TC=basic_test POST=1make sim TC=basic_test DUMP=1make sim TC=basic_test POST=1 DUMP=1

makefile的大殺器:目錄遞歸

另一個重要功能是目錄遞歸,目錄遞歸有一個典型的應(yīng)用:make clean。在頂層目錄里make clean時,將會自動調(diào)用子目錄的make clean。這個怎么實現(xiàn)呢?看下面的例子:

示例九:

cat ./Makefileclean: rm -f *~ make -C a clean make -C b cleancat ./a/Makefileclean: rm -f *~cat ./b/Makefileclean: rm -f *~ make -C c cleancat ./b/c/Makefileclean: rm -f *~

我們看到一個make -C subdir clean,就是說可以通過-C來把目標(biāo)clean傳遞給子目錄,相當(dāng)于在Makefile里調(diào)用了另一個Makefile。這樣在頂?shù)絤ake clean時,將自動遞歸到所有的子目錄。

Makefile的引用與復(fù)用

最后還有一點,我們也會經(jīng)常遇到,把共用的Makefile腳本寫到common.mk,然后再include common.mk,這樣可以讓Makefile看起來更簡潔。

示例十

# ../common/common.mkbasic: @ echo "call basic"# Makefiledep := $(shell depth)all: basic @ echo "call all"include $(dep)/common/common.mk

如果被include的文件使用相對路徑的話,必須相對敲make命令的目錄。當(dāng)然也可以像這個示例一樣,先獲取項目根目錄,然后再用變量來引用路徑。這樣比較易于移植。

與IC Flow的聯(lián)系

到這里,學(xué)了這么多,你已經(jīng)可以寫一些復(fù)雜的Makefile了。但重在應(yīng)用,在IC設(shè)計里,我們常常用Makefile串起多個工具,實現(xiàn)完整的流程。下面是一個啟發(fā)型的例子。

示例十一:

.PHONY: help clean rtl lint sim syn lec pr pt lvshelp: @echo "make help"clean: rm -rf *~ *.log *.fsdb csrc simv* ... make -C xxx cleanrtl: python3 ...lint: sg_shell/nLint ...sim: vcs/irun ...syn: dc_shell -64bit -topographical -f run_syn.tcl | tee log/syn.loglec: fm_shell/lec ...pt: pt_shell ...pr: innovus/icc ...lvs: calibre ...

習(xí)題:

根據(jù)自己公司的情況,把示例十一補充完整。

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

    關(guān)注

    88

    文章

    11760

    瀏覽量

    219038
  • Makefile
    +關(guān)注

    關(guān)注

    1

    文章

    125

    瀏覽量

    20346
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    芯片制造檢驗工藝的全數(shù)檢查

    在IC芯片制造的檢驗工藝,全數(shù)檢查原則貫穿于關(guān)鍵工序的缺陷篩查,而老化測試作為可靠性驗證的核心手段,通過高溫高壓環(huán)境加速潛在缺陷的暴露,確保芯片在生命周期內(nèi)的穩(wěn)定運行。以邏輯芯片與存
    的頭像 發(fā)表于 12-03 16:55 ?865次閱讀
    <b class='flag-5'>芯片</b>制造檢驗工藝<b class='flag-5'>中</b>的全數(shù)檢查

    蜂鳥hbird sdk的Makefile架構(gòu)分析

    dasm;然后執(zhí)行 make upload對程序進行燒錄. 完成上述過程,是一系列Makefile文件聯(lián)合運行的結(jié)果. 1. helloworld文件的Makefile? 應(yīng)用Makef
    發(fā)表于 10-30 07:15

    芯片設(shè)計Guard Ring的構(gòu)成和作用

    芯片設(shè)計,Guard Ring(保護環(huán)) 是一種環(huán)繞在敏感電路或器件(如模擬電路、高精度器件、存儲器單元、I/O驅(qū)動器等)周圍的版圖結(jié)構(gòu),形成關(guān)鍵的“隔離帶”。它的核心使命是提高電路的可靠性、性能和抗干擾能力,是復(fù)雜芯片(尤
    的頭像 發(fā)表于 10-28 14:49 ?1674次閱讀
    <b class='flag-5'>芯片</b>設(shè)計<b class='flag-5'>中</b>Guard Ring的構(gòu)成和作用

    簡單了解射頻芯片

    運算與協(xié)議棧;二者相輔相成,卻又各司其職。本文嘗試以“信號的一生”為主線,抽絲剝繭地還原射頻芯片從設(shè)計、制造到封裝的完整旅程。
    的頭像 發(fā)表于 08-22 15:10 ?2182次閱讀

    如何理解芯片設(shè)計的后端布局布線

    后端布局布線(Place and Route,PR)是集成電路設(shè)計的一個重要環(huán)節(jié),它主要涉及如何在硅片上合理地安排電路元器件的位置,并通過布線將這些元器件連接起來,以確保芯片能夠正確地工作。這個過程是芯片設(shè)計的最后階段之一,它
    的頭像 發(fā)表于 08-15 17:33 ?1425次閱讀

    芯片制造的對準(zhǔn)技術(shù)詳解

    三維集成電路制造,對準(zhǔn)技術(shù)是確保多層芯片鍵合精度、實現(xiàn)高密度TSV與金屬凸點正確互聯(lián)的核心技術(shù),直接影響芯片性能與集成密度,其高精度可避免互連失效或錯誤,并支持更小尺寸的TSV與凸點以節(jié)約面積。
    的頭像 發(fā)表于 08-01 09:16 ?3385次閱讀
    <b class='flag-5'>芯片</b>制造<b class='flag-5'>中</b>的對準(zhǔn)技術(shù)詳解

    一個簡單的串聯(lián)電池組充放電實驗

    文章介紹了電池充放電的數(shù)據(jù)采集并簡單階段了電池容量
    的頭像 發(fā)表于 07-03 14:41 ?1567次閱讀
    一個<b class='flag-5'>簡單</b>的串聯(lián)電池組充放電實驗

    LED芯片發(fā)光均勻度測試引領(lǐng)芯片電極圖案設(shè)計

    芯片電極圖案設(shè)計的重要性當(dāng)前,芯片廠在LED芯片電極圖案設(shè)計過程,僅僅是針對芯片進行相對簡單
    的頭像 發(fā)表于 06-06 15:30 ?634次閱讀
    LED<b class='flag-5'>芯片</b>發(fā)光均勻度測試引領(lǐng)<b class='flag-5'>芯片</b>電極圖案設(shè)計

    劃片機在存儲芯片制造的應(yīng)用

    劃片機(DicingSaw)在半導(dǎo)體制造主要用于將晶圓切割成單個芯片(Die),這一過程在內(nèi)存儲存卡(如NAND閃存芯片、SSD、SD卡等)的生產(chǎn)中至關(guān)重要。以下是劃片機在存儲芯片
    的頭像 發(fā)表于 06-03 18:11 ?1195次閱讀
    劃片機在存儲<b class='flag-5'>芯片</b>制造<b class='flag-5'>中</b>的應(yīng)用

    外圍電路簡單!升壓芯片FP6277(5.3V/3A)和霍爾MH251在電子煙的極簡應(yīng)用方案

    升壓芯片FP6277采用了高效升壓電路設(shè)計,霍爾MH251開關(guān)控制電子煙狀態(tài),外圍電路簡單高效,這些設(shè)計和功能提高了電子煙的使用體驗和功能性,同時減少對健康的影響。
    的頭像 發(fā)表于 05-28 15:15 ?1432次閱讀

    氧化層制備在芯片制造的重要作用

    本文簡單介紹了氧化層制備在芯片制造的重要作用。
    的頭像 發(fā)表于 05-27 09:58 ?1565次閱讀
    氧化層制備在<b class='flag-5'>芯片</b>制造<b class='flag-5'>中</b>的重要作用

    離子研磨在芯片失效分析的應(yīng)用

    芯片失效分析芯片的截面進行觀察,需要對樣品進行截面研磨達到要觀察的位置,而后再采用光學(xué)顯微鏡(OM Optical Microscopy)或者掃描電子顯微(SEM Scanning Electron Microscopy)進
    的頭像 發(fā)表于 05-15 13:59 ?1876次閱讀
    離子研磨在<b class='flag-5'>芯片</b>失效分析<b class='flag-5'>中</b>的應(yīng)用

    迅為RK3568開發(fā)板內(nèi)核模塊實現(xiàn)-編寫 Makefile

    編譯驅(qū)動程序還需要使用 Makefile 文件。我們?yōu)?helloworld.c 編寫一個簡單MakefileMakefile 文件和源文件 helloworld.c 位于同一
    發(fā)表于 04-24 13:36

    芯片制造的應(yīng)變硅技術(shù)介紹

    本文介紹了在芯片制造的應(yīng)變硅技術(shù)的原理、材料選擇和核心方法。
    的頭像 發(fā)表于 04-15 15:21 ?3171次閱讀
    <b class='flag-5'>芯片</b>制造<b class='flag-5'>中</b>的應(yīng)變硅技術(shù)介紹

    快充電源芯片U8733L的簡單介紹

    一些集成GaN FET的芯片能夠根據(jù)輸入電壓和負載的變化自動調(diào)整工作模式,這種自適應(yīng)調(diào)整可以使芯片在不同的工作條件下都能實現(xiàn)恒功率輸出,同時保持較高的效率。深圳銀聯(lián)寶科技推出的集成GaN FET帶恒功率快充電源芯片U8733L,
    的頭像 發(fā)表于 03-19 15:03 ?1104次閱讀