<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

知識點:SOC設計質量相關的規范

ruikundianzi ? 來源:知乎 ? 2023-10-17 11:36 ? 次閱讀

你們以為我要講的是coding-style?

NO,我主要講的是其它和設計質量相關的規范。

1、代碼篇

1.1、手撕代碼部分

module name需要包含一定的功能展現,什么意思呢,比如要設計address remap,你就叫XXX_addr_remap或者XXX_addr_decoder。切記不要叫XXX_misc,一定是迫不得已再寫這個module,否則集成或者debug會很頭疼,誰知道這玩意是干啥用的。

當然,內容部分就是老生常談的:

·加注釋

·組合和時序

·縮進

·狀態機

·阻塞賦值和非阻塞賦值

·一個module一個變量

·begin end對齊

·?語句和:的對齊等

1.2、第三方IP

我們除了仔細寫的代碼外,還會用第三方工具例如ARM和DesignWare生成很多簡單IP,例如AHB2AHB橋,I2C,DWT,UART,TIMER等,我們除了要清楚我們的功能feature外,還要注意module一定要加前綴,文件名同樣,否則我們無法與其他人的代碼區分開,這樣就會存在設計風險。

1.3、common cell

什么是common cell,就是我們常用的lib cell,例如mux,ckmux,ckg,ckand,ckor,sync_cell,dft_dff,等。為什么要單獨拎出來呢?因為這里不做好標準,后端很痛苦。

我們一般會由專人負責設計和維護,以后所有人無特殊情況禁止直接手寫lib cell,比如在某個module內用always語句寫sync cell。

為什么呢?因為這些cell和后端約束強相關,和dont touch list強相關,和timing強相關,因此,從SYNTH開始就要用專門的DC LIB替換他們,如果我們自己隨便在一個module里寫這些邏輯,DC工具和腳本無法抓取信息,但是如果我們例化common cell的話,他們處理起來就方便多了。

當然,有一個細節就是define分支,一般會有SIMASIC分支,但是因為FPGA沒有CKG,所有我們會在這里增加FPGA分支將CKG變為CKBUF。

1.4、memory cell

采用多級wrapper的方式,底層wrapper例化我們的physcal memory,并且在這一級對DFT信號,和timing相關調整信號做tie值處理。

二級wrapper做分支,分為SIM分支,FPGA分支和ASIC分支。這樣的話,即便沒有真實的物理memory,也不影響FPGA和SIM的同事使用。

當然也可以再加一級wrapper,將所有的memory放在一起,通過generate if不同的參數(例如寬度,深度,tag)決定例化哪一個memory,這樣做的好處就是集成方便,不好的地方就是維護起來太麻煩。

2、filelist篇

soc設計的下游分為FPGA,SIM和SYNTH。但是三者的要求不同

FPGA要求filelist內容FPGA vivado可綜合(有相關資源)。

SIM要求可以存在SIM model,不需要可綜合。

SYNTH要求必須可綜合。

因此,我們一般需要維護三個filelist,XX_FPGA.f,XX_SIM.f和XX_SYN.f,來滿足不同同事的需求,防止他們自己處理出現問題。

僅僅是這樣,對于大型SOC還是不夠的,需要一個filelist去重腳本,因為每個子系統subsys都可能例化了common cell(因為可能會單獨仿真或者綜合呀),所以soc top拿到的filelist一定是有很多重復的文件,所以需要腳本展開并去重,重復的不是刪除,而是注釋,方便review(不知道腳本刪除的對不對,需要review)。

3、difine macro篇

設計中一定會有很多define,主要分為兩類:common define和function define

3.1、common define

例如SYNTH,FPGA,SIM這些,主要存在于memory wrapper和common cell中,我們需要整個項目組采用統一的格式,不能一會用SYNTH,一會用ASIC,這樣DC同事會經常漏define,需要resynth。

3.2、function define

例如設計一個I2C,內部多個模塊,這樣的話我們的位寬,地址寬度等會是由define參數傳遞,這些參數往往不需要給其他人展示,我們自己在define中定義,最后undefine就可以了,但是順序一定是最先編譯define,最后undefine,所以剛才的filelist去重腳本還有一點很重要的就是不能調整filelist順序喲。

4、交付質量hand-off

我們每個需要綜合的節點一定要保證hand-off質量,我們通常會使用spyglass做lint檢查,這是最基本的,否則DC同事一定無法綜合。會顯得我們的設計很LOW。

不同的節點有不同的要求,如果DFT也要進場,我們需要用spyglass跑DFT flow,例如scan-ready,bist-ready和best-practice等幾個重要的goal。

當然還有非常重要的CDC FLOW,也是靜態時序檢查,只是STA關注的是同步邏輯,spyglass CDC關注異步處理,兩個都做好了,才能保證設計的RTL和真實芯片的時序是一致的。

編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • soc
    soc
    +關注

    關注

    38

    文章

    3798

    瀏覽量

    216068
  • 狀態機
    +關注

    關注

    2

    文章

    486

    瀏覽量

    27246
  • Module
    +關注

    關注

    0

    文章

    63

    瀏覽量

    12816

原文標題:知識點:SOC設計-設計規范

文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    運放知識點

    `運放知識點`
    發表于 08-20 20:58

    嵌入式C/單片機C/標準C知識點

    : 9條基本語句和32個關鍵字  知識點6:函數組成和函數關鍵兩句話  知識點7:數組組成和數組典型應用  知識點8:指針(指針組成、指針含義、指針典型應用、指針4要素)  知識點9:
    發表于 10-24 14:42

    工程師總結了一些C語言的知識點

    8:指針(指針組成、指針含義、指針典型應用、指針4要素)知識點9:模塊化編程、編程規范、編程優化。--------------------------------------------知識點10
    發表于 07-25 10:23

    【信盈達】C語言知識點的總結

    :模塊化編程、編程規范、編程優化。--------------------------------------------知識點10:結構體知識點11:鏈表和文件(LINUX)知識點1
    發表于 10-08 14:41

    SRAM LIB庫相關知識點介紹

    SRAM LIB庫相關知識點
    發表于 12-15 06:53

    電機與拖動知識點及其試題

    電機與拖動知識點分析一、基本知識與基礎知識知識點??碱}目二、直流電機一、基本知識與基礎知識
    發表于 06-29 07:10

    STM32外部中斷知識點概述

    STM32外部中斷概述知識點(1)知識點(2)知識點(3)中斷服務函數外部中斷常用庫函數外部中斷的一般配置步驟知識點(1)STM32的每個IO都可以作為外部中斷輸入。STM32的中斷控
    發表于 08-16 07:43

    STM32相關知識點

    來源:公眾號【魚鷹談單片機】作者:魚鷹OspreyID :emOsprey本篇筆記主要介紹 STM32 相關知識點,畢竟之后的 CDC 教程是用 STM32開發的。為了寫這一篇,魚...
    發表于 08-16 08:21

    STM32相關知識點

    本篇筆記主要介紹 STM32相關知識點,畢竟之后的 CDC 教程是用 STM32開發的。為了寫這一篇,魚鷹把 STM32 中文參考手冊 USB 相關的從頭到尾看了一遍,雖然以前就已經看過了,但這次
    發表于 08-20 06:46

    匯總鋰離子電池的相關知識點

    匯總鋰離子電池的相關知識點。
    發表于 09-15 07:02

    C語言程序小知識點總結

    循環控制continue與break的區別項目程序規范1.消息隊列2.軟件定時器的使用c程序小知識點總結1.靜態變量static與外部變量extern的使用靜態變量static兩種使用方式...
    發表于 11-05 07:45

    STM32庫的相關知識點匯總,不看肯定后悔

    STM32庫的相關知識點匯總,不看肯定后悔
    發表于 11-30 07:42

    串口printf函數的相關知識點匯總,不看肯定后悔

    串口printf函數的相關知識點匯總,不看肯定后悔
    發表于 12-01 07:48

    AT24C02芯片相關知識點

    基于藍橋杯的單片機模塊練習——AT24C02芯片相關知識點1.特點
    發表于 01-11 06:37

    STM32定時器輸入捕獲實驗的相關知識點,錯過后悔

    STM32定時器輸入捕獲實驗的相關知識點,錯過后悔
    發表于 02-14 07:59
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>