RM新时代网站-首页

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

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

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

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

冬至子 ? 來源:簡矽 ? 作者:簡矽 ? 2023-09-15 15:22 ? 次閱讀

概述

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

圖片

圖1 RTL網(wǎng)表轉為門級網(wǎng)表

常見的工具是synopsys公司的Design Compiler。

原因

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

圖片

圖2 性能面積和時序的平衡關系

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

流程

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

圖片

圖3 綜合流程

1.翻譯: 綜合工具將RTL-level的邏輯電路用門級的邏輯來實現(xiàn),DC工具用自帶的GTECH庫中的標準單元去搭建門級邏輯電路,最終形成一個初級的、未優(yōu)化的門級電路。

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

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

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

步驟

(1)準備HDL文件和dc_synthesis.tcl運行腳本

對于DFT工程師,需要準備好插入DFT測試邏輯之后RTL-level的HDL 文件和dc_synthesis.tcl運行腳本

(2)設置路徑和庫文件

設置DC工作路徑和庫文件搜索路徑

define_design_lib work –path work

set search_path /project/dft/library/db

在dc_synthesis.tcl運行腳本中設置target_library(目標庫),和link_lbirary(鏈接庫)

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

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

(3)用analyze/elaborate命令讀入設計

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

*source ../inputs/use_in_synthesis.tcl *

分析HDL文件代碼檢查設計錯誤。

讀入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代碼的門級描述

link //將讀到DC中的模塊連接起來

current_design ${design_name} //設置當前設計名稱

check_design //設計規(guī)則檢查

(4) 設置約束條件

可以在constrait.tcl約束腳本里將約束條件設置好,再導入到dofile。也可以直接在dofile里設置。

*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表示對指定instance做邊界優(yōu)化

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

set_ungroup表示對指定instance做ungroup

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

圖片

圖4 ungroup過程

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

(6) 用write/write_sdf/write_sdc/命令將優(yōu)化后的門級網(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綜合流程中設置約束的種類有:時序約束、面積約束。時序約束:包括時鐘約束、輸入/輸出接口約束和時序例外約束。時序約束是通過約束各類延遲信息,保證門級電路能夠正常工作。

圖片

圖6 約束的分類

1. 時鐘約束: 是對主時鐘進行約束定義,幫助時序分析工具定義時序路徑分析的一個時間零點,時鐘傳輸過程中的延時和不確定性也都會基于這個時間零點進行計算和分析。

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

約束的命令為:

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

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

create_clock用于定義一個時鐘

-name用于指定時鐘名

-period用于指定時鐘周期

-waveform用于指定上升沿和下降沿的時刻

圖片

圖7 時鐘約束1

圖片

圖8 時鐘約束2

set_clock_latency –source 3 [get_clks CLK]

上述命令用于對時鐘源延時進行約束

set_clock_latency 1 [get_clks CLK]

上述命令用于對時鐘網(wǎng)絡延時進行約束

set_clock_uncertainty -setup -hold

上述命令用于對時鐘的偏移和抖動進行約束

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

set_clock_transition -max 3 [get_clks CLK]

上述命令用于對時鐘的轉換時間進行建模。默認的上轉換時間為從電壓的20%上升至80%的時間,下轉換時間為從電壓的80%下降至20%的時間

可通過*-rise -fall*參數(shù)設置上轉換時間和下轉換時間:

set_clock_transition -rise 2 -fall 3 [get_clks CLK]

圖片

圖9 時鐘約束3

2. IO約束: 指定input信號和output信號輸入或輸出模塊的延遲時間。

set_input_delay

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

set_output_delay

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

圖片

圖10 IO約束

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

對時序例外進行約束的命令有:

set_multicycle_path

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

set_false_path

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

圖片

圖11 時序例外約束

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

set_max_area 100

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

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

    關注

    31

    文章

    5336

    瀏覽量

    120230
  • RTL
    RTL
    +關注

    關注

    1

    文章

    385

    瀏覽量

    59759
  • SDC
    SDC
    +關注

    關注

    0

    文章

    48

    瀏覽量

    15534
  • DFT算法
    +關注

    關注

    0

    文章

    27

    瀏覽量

    7535
  • HDL語言
    +關注

    關注

    0

    文章

    47

    瀏覽量

    8913
收藏 人收藏

    評論

    相關推薦

    邏輯綜合流程和命令簡析

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

    淺談IC設計中邏輯綜合

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

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

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

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

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

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

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

    DC邏輯綜合詳解

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

    什么是邏輯綜合?

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

    DC邏輯綜合

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

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

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

    芯片設計之ASIC設計流程邏輯綜合

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

    芯片設計之邏輯綜合過程

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

    邏輯綜合工具的工作流程

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

    邏輯綜合與物理綜合

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

    EDA邏輯綜合概念 邏輯綜合三個步驟

    邏輯綜合是電子設計自動化(EDA)中的一個重要步驟,用于將高級語言或硬件描述語言(HDL)表示的電路描述轉換為門級電路的過程。
    發(fā)表于 06-19 17:06 ?3337次閱讀

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

     EDA(Electronic Design Automation,電子設計自動化)綜合是指在集成電路設計過程中將高級描述語言(HDL)代碼轉換為邏輯網(wǎng)表的過程。
    發(fā)表于 06-26 14:05 ?2131次閱讀
    RM新时代网站-首页