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

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

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

什么是邏輯綜合?邏輯綜合的流程有哪些?

冬至子 ? 來(lái)源:簡(jiǎn)矽 ? 作者:簡(jiǎn)矽 ? 2023-09-15 15:22 ? 次閱讀

概述

邏輯綜合是將RTL描述的電路轉(zhuǎn)換成門(mén)級(jí)描述的電路,將HDL語(yǔ)言描述的電路轉(zhuǎn)換為性能、面積和時(shí)序等因素約束下的門(mén)級(jí)電路網(wǎng)表。綜合后的門(mén)級(jí)網(wǎng)表也是.v構(gòu)成的Verilog代碼,但是里面并沒(méi)有我們所寫(xiě)的always或者assign這種語(yǔ)句,而是將標(biāo)準(zhǔn)單元(Standard Cell)實(shí)例化并進(jìn)行連接。

圖片

圖1 RTL網(wǎng)表轉(zhuǎn)為門(mén)級(jí)網(wǎng)表

常見(jiàn)的工具是synopsys公司的Design Compiler。

原因

綜合最重要的目的是對(duì)電路進(jìn)行約束,從而在性能、面積和時(shí)序之間尋求平衡。

圖片

圖2 性能面積和時(shí)序的平衡關(guān)系

與DFT的關(guān)系: DFT插入的測(cè)試邏輯也要與Function的邏輯一起綜合,也受上述三個(gè)因素的制約,所以Synthesis與DFT關(guān)系密切。

流程

邏輯綜合的流程為:翻譯(Translation)、優(yōu)化(Optimize)、映射(Mapping)。

圖片

圖3 綜合流程

1.翻譯: 綜合工具將RTL-level的邏輯電路用門(mén)級(jí)的邏輯來(lái)實(shí)現(xiàn),DC工具用自帶的GTECH庫(kù)中的標(biāo)準(zhǔn)單元去搭建門(mén)級(jí)邏輯電路,最終形成一個(gè)初級(jí)的、未優(yōu)化的門(mén)級(jí)電路。

(GTECH:Generic Technology, 是Synopsys公司提供的獨(dú)立于工藝的, 不包含約束的元件庫(kù))

2.映射: 將門(mén)級(jí)邏輯電路映射到由制造商提供的工藝庫(kù)上。(工藝庫(kù)包含時(shí)序、面積、功耗等約束信息)

3.優(yōu)化: 綜合工具對(duì)門(mén)級(jí)邏輯電路進(jìn)行分析,去掉電路中的冗余單元,根據(jù)設(shè)計(jì)者添加的約束條件對(duì)電路進(jìn)行優(yōu)化。

步驟

(1)準(zhǔn)備HDL文件和dc_synthesis.tcl運(yùn)行腳本

對(duì)于DFT工程師,需要準(zhǔn)備好插入DFT測(cè)試邏輯之后RTL-level的HDL 文件和dc_synthesis.tcl運(yùn)行腳本

(2)設(shè)置路徑和庫(kù)文件

設(shè)置DC工作路徑和庫(kù)文件搜索路徑

define_design_lib work –path work

set search_path /project/dft/library/db

在dc_synthesis.tcl運(yùn)行腳本中設(shè)置target_library(目標(biāo)庫(kù)),和link_lbirary(鏈接庫(kù))

set link_library [list adk.db memory.db pad.db]

set target_library [list adk.db memory.db pad.db]

(3)用analyze/elaborate命令讀入設(shè)計(jì)

讀入1st insertion和2nd insertion之后的所有RTL文件

*source ../inputs/use_in_synthesis.tcl *

分析HDL文件代碼檢查設(shè)計(jì)錯(cuò)誤。

讀入1st insertion和2nd insertion之后的sdc文件

source ../../tsdb_outdir/dft_inserted_designs/{design_name}_{design_id}.dft_inserted_ design/${design_name}.sdc。

elaborate ${design_name} //建立HDL代碼的門(mén)級(jí)描述

link //將讀到DC中的模塊連接起來(lái)

current_design ${design_name} //設(shè)置當(dāng)前設(shè)計(jì)名稱

check_design //設(shè)計(jì)規(guī)則檢查

(4) 設(shè)置約束條件

可以在constrait.tcl約束腳本里將約束條件設(shè)置好,再導(dǎo)入到dofile。也可以直接在dofile里設(shè)置。

*set preserve_instances [tessent_get_preserve_instances icl_extract]
*

set optimize_instances [tessent_get_optimize_instances icl_extract]

set_boundary_optimization $preserve_instances false

set_ungroup $preserve_instances false

set_boundary_optimization $optimize_instances true

preserve_instances表示不做邊界優(yōu)化的instances

optimize_instances表示做邊界優(yōu)化的instances

set_boundary_optimization表示對(duì)指定instance做邊界優(yōu)化

boundary_optimization即邊界優(yōu)化是一種優(yōu)化策略, 指是否允許DC跨module的邊界優(yōu)化, 允許的話, 有些沒(méi)用的端口會(huì)被去掉, 有些邏輯會(huì)被優(yōu)化掉, 有些信號(hào)的名字也會(huì)丟失。對(duì)于DFT工程師不希望插入的邏輯被優(yōu)化掉,所以要對(duì)插入的邏輯有選擇地進(jìn)行邊界優(yōu)化

set_ungroup表示對(duì)指定instance做ungroup

ungroup指的是打破設(shè)計(jì)的層次關(guān)系, 把hierarchical設(shè)計(jì)變成flat設(shè)計(jì), 不需要層次關(guān)系的端口, 更有利于優(yōu)化

圖片

圖4 ungroup過(guò)程

(5) 用compile命令對(duì)施加約束的門(mén)級(jí)網(wǎng)表進(jìn)行編譯,生成優(yōu)化的門(mén)級(jí)網(wǎng)表

(6) 用write/write_sdf/write_sdc/命令將優(yōu)化后的門(mén)級(jí)網(wǎng)表以指定的格式保存到指定的路徑

write -f verilog -output ../outputs/${design_name}.synthesis.v

write_file -format ddc -output ../outputs/${design_name}.synthesis.ddc

write_sdc ../outputs/${design_name}.synthesis.sdc

write_sdf ../outputs/${design_name}.synthesis.sdf

圖片

圖5 綜合具體流程

約束

DC綜合流程中設(shè)置約束的種類有:時(shí)序約束、面積約束。時(shí)序約束:包括時(shí)鐘約束、輸入/輸出接口約束和時(shí)序例外約束。時(shí)序約束是通過(guò)約束各類延遲信息,保證門(mén)級(jí)電路能夠正常工作。

圖片

圖6 約束的分類

1. 時(shí)鐘約束: 是對(duì)主時(shí)鐘進(jìn)行約束定義,幫助時(shí)序分析工具定義時(shí)序路徑分析的一個(gè)時(shí)間零點(diǎn),時(shí)鐘傳輸過(guò)程中的延時(shí)和不確定性也都會(huì)基于這個(gè)時(shí)間零點(diǎn)進(jìn)行計(jì)算和分析。

主時(shí)鐘 是指由外部輸入模塊內(nèi)部的時(shí)鐘,或是內(nèi)部模塊產(chǎn)生的時(shí)鐘。

約束的命令為:

create_clock -name clk -period 10 -waveform {0 5}

該命令用于定義有特定周期和波形的時(shí)鐘

create_clock用于定義一個(gè)時(shí)鐘

-name用于指定時(shí)鐘名

-period用于指定時(shí)鐘周期

-waveform用于指定上升沿和下降沿的時(shí)刻

圖片

圖7 時(shí)鐘約束1

圖片

圖8 時(shí)鐘約束2

set_clock_latency –source 3 [get_clks CLK]

上述命令用于對(duì)時(shí)鐘源延時(shí)進(jìn)行約束

set_clock_latency 1 [get_clks CLK]

上述命令用于對(duì)時(shí)鐘網(wǎng)絡(luò)延時(shí)進(jìn)行約束

set_clock_uncertainty -setup -hold

上述命令用于對(duì)時(shí)鐘的偏移和抖動(dòng)進(jìn)行約束

可通過(guò)*-setup -hold*參數(shù)設(shè)置建立時(shí)間和保持時(shí)間的偏移值

set_clock_transition -max 3 [get_clks CLK]

上述命令用于對(duì)時(shí)鐘的轉(zhuǎn)換時(shí)間進(jìn)行建模。默認(rèn)的上轉(zhuǎn)換時(shí)間為從電壓的20%上升至80%的時(shí)間,下轉(zhuǎn)換時(shí)間為從電壓的80%下降至20%的時(shí)間

可通過(guò)*-rise -fall*參數(shù)設(shè)置上轉(zhuǎn)換時(shí)間和下轉(zhuǎn)換時(shí)間:

set_clock_transition -rise 2 -fall 3 [get_clks CLK]

圖片

圖9 時(shí)鐘約束3

2. IO約束: 指定input信號(hào)和output信號(hào)輸入或輸出模塊的延遲時(shí)間。

set_input_delay

用于指定輸入數(shù)據(jù)的路徑延時(shí), 分析從外部輸入到內(nèi)部寄存器的延遲, 需滿足內(nèi)部寄存器的建立/保持時(shí)間。

set_output_delay

用于指定輸出數(shù)據(jù)的路徑延時(shí), 分析從內(nèi)部寄存器到外部輸出的延遲,需滿足外部寄存器的建立/保持時(shí)間。

圖片

圖10 IO約束

3.時(shí)序例外約束: 可以對(duì)某些路徑放寬時(shí)序要求, 減少對(duì)布局布線資源的占用, 從而盡可能多地釋放出寶貴的資源給時(shí)序約束要求較高的關(guān)鍵路徑,合理分配資源,能夠更好地確保整個(gè)系統(tǒng)的時(shí)序收斂。

對(duì)時(shí)序例外進(jìn)行約束的命令有:

set_multicycle_path

在2個(gè)時(shí)鐘域之間傳輸數(shù)據(jù),指定從起始時(shí)鐘沿到目標(biāo)時(shí)鐘沿所需的時(shí)鐘周期數(shù)。允許數(shù)據(jù)在多個(gè)周期后穩(wěn)定并接收, 時(shí)序要求寬松。

set_false_path

指定在設(shè)計(jì)中不做分析的時(shí)序路徑,即最低優(yōu)先級(jí)的路徑。

圖片

圖11 時(shí)序例外約束

4.面積約束: 就是告訴DC工具, 綜合完成后的電路面積不能超過(guò)多少。

set_max_area 100

指定綜合完成后的最大面積為100(單位與工藝庫(kù)的要求一致)。

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

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119817
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

    59665
  • SDC
    SDC
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    15518
  • DFT算法
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    7520
  • HDL語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    46

    瀏覽量

    8905
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    邏輯綜合流程和命令簡(jiǎn)析

    綜合就是把Verilog、VHDL轉(zhuǎn)換成網(wǎng)表的過(guò)程。綜合按照是否考慮物理布局信息可分為邏輯綜合和物理綜合
    的頭像 發(fā)表于 08-09 09:51 ?925次閱讀
    <b class='flag-5'>邏輯</b><b class='flag-5'>綜合</b>的<b class='flag-5'>流程</b>和命令簡(jiǎn)析

    淺談IC設(shè)計(jì)中邏輯綜合

    淺談IC設(shè)計(jì)中邏輯綜合引言在IC設(shè)計(jì)流程中,邏輯綜合是后端設(shè)計(jì)中很重要的一個(gè)環(huán)節(jié)。綜合就是指使用
    發(fā)表于 05-16 20:02

    [啟芯工作室]邏輯綜合 06 Timing Analysis

    本課程主要介紹通過(guò)邏輯綜合工具,將Verilog RTL 代碼轉(zhuǎn)換成門(mén)級(jí)網(wǎng)表的方式,以滿足設(shè)計(jì)的時(shí)序要求。學(xué)習(xí)本課程可以熟悉邏輯綜合工具的使用。啟芯SoC年度培訓(xùn)計(jì)劃,可加入啟芯QQ群
    發(fā)表于 03-23 20:55

    FPGA的邏輯仿真以及邏輯綜合的一些原則

    apex20ke_atoms.v編譯到其中。2:在圖形界面中的Load Design對(duì)話框中裝入仿真設(shè)計(jì)時(shí),在Verilog 標(biāo)簽下指定預(yù)編譯庫(kù)的完整路徑。(見(jiàn)下圖)邏輯綜合目前可用的FPGA綜合工具
    發(fā)表于 05-15 07:00

    求一套手工邏輯綜合的方法和綜合步驟?

    手工綜合RTL級(jí)代碼的理論依據(jù)和實(shí)用方法時(shí)序邏輯綜合的實(shí)現(xiàn)方法
    發(fā)表于 04-08 06:06

    DC邏輯綜合詳解

    DC邏輯綜合詳解DC軟件簡(jiǎn)介邏輯綜合DC命令DC軟件簡(jiǎn)介DC( Design Compiler )為Synopsys公司邏輯合成工具。DC得
    發(fā)表于 07-29 08:07

    什么是邏輯綜合

    DC軟件怎么樣?什么是邏輯綜合?
    發(fā)表于 11-02 06:41

    DC邏輯綜合

    芯片綜合的過(guò)程:芯片的規(guī)格說(shuō)明,芯片設(shè)計(jì)的劃分,預(yù)布局,RTL 邏輯單元的綜合,各邏輯單元的集成,測(cè)試,布局規(guī)劃,布局布線,最終驗(yàn)證等步驟。設(shè)計(jì)流程
    發(fā)表于 12-29 16:28 ?25次下載
    DC<b class='flag-5'>邏輯</b><b class='flag-5'>綜合</b>

    ASIC邏輯綜合及Synopsys Design Compiler 的使用資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是ASIC邏輯綜合及Synopsys Design Compiler 的使用資料說(shuō)明包括了:1、邏輯綜合基本概念 a) Synopsys
    發(fā)表于 10-23 08:00 ?5次下載
    ASIC<b class='flag-5'>邏輯</b><b class='flag-5'>綜合</b>及Synopsys  Design Compiler 的使用資料說(shuō)明

    芯片設(shè)計(jì)之ASIC設(shè)計(jì)流程邏輯綜合

    邏輯綜合(Logic Synth.)過(guò)程需要約束(Stat. Wire Model)以產(chǎn)生規(guī)定條件下的電路。具體電路設(shè)計(jì)完成后,需進(jìn)行門(mén)級(jí)仿真(Gate-Lev.Sim),以檢查電路設(shè)計(jì)是否出現(xiàn)失誤。
    的頭像 發(fā)表于 08-12 15:06 ?4952次閱讀

    芯片設(shè)計(jì)之邏輯綜合過(guò)程

    邏輯綜合操作(Compile design),根據(jù)芯片的復(fù)雜程度,邏輯綜合操作的時(shí)間可能是幾秒,也可能是半個(gè)月。如果設(shè)計(jì)環(huán)境和約束設(shè)置不當(dāng),邏輯
    的頭像 發(fā)表于 08-12 15:10 ?3798次閱讀

    邏輯綜合工具的工作流程

    執(zhí)行算法邏輯(加、減、乘、除及復(fù)雜的組合運(yùn)算)優(yōu)化。例如,乘法器多種實(shí)現(xiàn)方式, 相應(yīng)地會(huì)產(chǎn)生多種時(shí)序、功耗及面積,如何根據(jù)目標(biāo)設(shè)定選出最合適的結(jié)構(gòu)將對(duì)最后的綜合結(jié)果有重大影響。
    發(fā)表于 08-24 14:51 ?1192次閱讀

    邏輯綜合與物理綜合

    利用工具將RTL代碼轉(zhuǎn)化為門(mén)級(jí)網(wǎng)表的過(guò)程稱為邏輯綜合綜合一個(gè)設(shè)計(jì)的過(guò)程,從讀取RTL代碼開(kāi)始,通過(guò)時(shí)序約束關(guān)系,映射產(chǎn)生一個(gè)門(mén)級(jí)網(wǎng)表。
    的頭像 發(fā)表于 11-28 16:02 ?2533次閱讀

    EDA邏輯綜合概念 邏輯綜合三個(gè)步驟

    邏輯綜合是電子設(shè)計(jì)自動(dòng)化(EDA)中的一個(gè)重要步驟,用于將高級(jí)語(yǔ)言或硬件描述語(yǔ)言(HDL)表示的電路描述轉(zhuǎn)換為門(mén)級(jí)電路的過(guò)程。
    發(fā)表于 06-19 17:06 ?3073次閱讀

    eda綜合哪些類型 邏輯綜合的原理

     EDA(Electronic Design Automation,電子設(shè)計(jì)自動(dòng)化)綜合是指在集成電路設(shè)計(jì)過(guò)程中將高級(jí)描述語(yǔ)言(HDL)代碼轉(zhuǎn)換為邏輯網(wǎng)表的過(guò)程。
    發(fā)表于 06-26 14:05 ?1994次閱讀