Report Design Analysis報告之logic level詳解

目錄

一、前言

二、Logic?Level distribution

2.1?logic level配置

2.2?Logic Level Distribution報告

2.3?Logic Level?報告詳情查看

2.4?Route Distributions?報告詳情查看

2.5 示例代碼


一、前言

?????在工程設計中,如果需要了解路徑的邏輯級數,可以在report timing summary中找到對應的時序路徑,查看時序路徑的詳情報告中有邏輯級數的信息,如下圖

?????這種方法查看有一個缺點,就是無法知道工程設計中邏輯級數的總體情況,這個時候就可以使用Report design analysis中的Include logic level distribution來查看

二、Logic?Level distribution

2.1?logic level配置

?????工程運行完Synthesize或implement時,進入菜單欄的“Reports”中,在“Reports->Report Design Analysis->Options”中,存在“Include logic?level distribution”,默認不勾選,勾選后同時可以設置展示總的顯示邏輯級數數量Number of paths,默認是1000條,表示最多只顯示1000條,這1000條是所有路徑中最差slack的1000條,不足1000條時按實際顯示路徑數顯示。

2.2?Logic Level Distribution報告

?????以Number of paths設置20為例,在Logic Level Distribution中將顯示所有時序路徑中最差的20條路徑。注:logic level distribution只考慮setup路徑。

左側報告包含3類內容:

End Point Clock:根據所有時序路徑中End Point Clock來劃分

Requirement:展示的End point clock對應路徑中最差的Requirement,以End point clock為clk1,邏輯級數為0的1條,邏輯級數為1的3條,邏輯級數為2的沒有

查看邏輯級數為0路徑的requirement

查看邏輯級數為1路徑的requirement,在Logic level distribution中clk1選取的requirement為-2,即為所有路徑requirement中的最小值

工程中各邏輯級數:此處時序路徑數邏輯級數只有0級,1級和2級,下面對應的展示了各邏輯級數的路徑數量,所有路徑數量加起來即為設置的Number of paths值20

2.3?Logic Level?報告詳情查看

在logic level distribution報告中,選中需要查看的路徑,以下圖clk2的邏輯級數為1的3條路徑為例,見紅框內,點擊鼠標左鍵,彈出彈框

選擇“Report Design Analysis on Timing Paths”,在原有的Design analysis窗口中打開報告,報告為setup path characteristics

選擇“Report Timing on Timing Paths”,在新打開的Timing窗口中以時序報告路徑的形式展現

在完成Implement后,選擇“Select?Timing?Paths”,將會在Netlist窗口和device中顯示該路徑中的包含的cells和路徑(白色高亮)

2.4?Route Distributions?報告詳情查看

生成Report?Design Analysis時如果勾選Routes,則可以生成Route?Distributions報告,主要提供時序路徑中完全布線的net數量

Routes數量表示時序路徑上data path中屬于fully routed的net數量,通常是和邏輯級數一致,如果時序路徑屬于起點或終點為port的,如recovery路徑或設置了setup_output_delay的路徑,則logic level值和routes會不一致

以上圖的end point clock為clk2,數量為1的4為例,執行report timing on timing paths,時序報告中有一列Routes,顯示了對應路徑 routes的數量,圖中都為1

執行select timing paths,在Net窗口會顯示對應的routes名稱,Route Status為Fully routed的才被考慮,如下圖第1條net rst屬于routed to a hierarchical port,則不會考慮進Routes Distribution中,因此路徑的routes數量為1,level也為1。

Route Status為internally routed within one site也不會被統計到routes中

?下面的路徑中logic level為1,route數量為2

2.5 示例代碼

module logic_level(CLKIN1,CLKIN2,CLKINSEL,CLKFBIN,CLKFBOUT,clk1,clk2,rst,d1,d2,S,i_bus,o_bus,bus_clk2,out_syn,out_asyn,and_out,o_case);
input CLKIN1,CLKIN2,CLKINSEL,CLKFBIN,clk1,clk2,rst,d1,d2,S;
input [4:0] i_bus;
output reg [4:0] o_bus,bus_clk2;
output out_syn,out_asyn,and_out,CLKFBOUT;
reg ff1,ff2,ff_asyn,ff_syn,ff_and;
reg ff_case;
output reg o_case;
reg [4:0] bus;
wire sum12,and_c,CLKOUT0,CLKOUT1;
wire [4:0] bus_c;
wire o_bufgmux,ffcase_n;PLLE2_ADV #(.BANDWIDTH("OPTIMIZED"),  // OPTIMIZED, HIGH, LOW.CLKFBOUT_MULT(8),        // Multiply value for all CLKOUT, (2-64).CLKFBOUT_PHASE(0.0),     // Phase offset in degrees of CLKFB, (-360.000-360.000).// CLKIN_PERIOD: Input clock period in nS to ps resolution (i.e. 33.333 is 30 MHz)..CLKIN1_PERIOD(0.0),.CLKIN2_PERIOD(0.0),// CLKOUT0_DIVIDE - CLKOUT5_DIVIDE: Divide amount for CLKOUT (1-128).CLKOUT0_DIVIDE(1),.CLKOUT1_DIVIDE(2),.CLKOUT2_DIVIDE(4),.CLKOUT3_DIVIDE(5),.CLKOUT4_DIVIDE(1),.CLKOUT5_DIVIDE(1),// CLKOUT0_DUTY_CYCLE - CLKOUT5_DUTY_CYCLE: Duty cycle for CLKOUT outputs (0.001-0.999)..CLKOUT0_DUTY_CYCLE(0.4),.CLKOUT1_DUTY_CYCLE(0.5),.CLKOUT2_DUTY_CYCLE(0.5),.CLKOUT3_DUTY_CYCLE(0.5),.CLKOUT4_DUTY_CYCLE(0.5),.CLKOUT5_DUTY_CYCLE(0.5),// CLKOUT0_PHASE - CLKOUT5_PHASE: Phase offset for CLKOUT outputs (-360.000-360.000)..CLKOUT0_PHASE(0.0),.CLKOUT1_PHASE(0.0),.CLKOUT2_PHASE(0.0),.CLKOUT3_PHASE(0.0),.CLKOUT4_PHASE(0.0),.CLKOUT5_PHASE(0.0),.COMPENSATION("EXTERNAL"),   // ZHOLD, BUF_IN, EXTERNAL, INTERNAL.DIVCLK_DIVIDE(1),        // Master division value (1-56)// REF_JITTER: Reference input jitter in UI (0.000-0.999)..REF_JITTER1(0.0),.REF_JITTER2(0.0),.STARTUP_WAIT("FALSE")    // Delay DONE until PLL Locks, ("TRUE"/"FALSE"))PLLE2_ADV_inst (// Clock Outputs: 1-bit (each) output: User configurable clock outputs.CLKOUT0(CLKOUT0),   // 1-bit output: CLKOUT0.CLKOUT1(CLKOUT1),   // 1-bit output: CLKOUT1.CLKOUT2(CLKOUT2),   // 1-bit output: CLKOUT2// Feedback Clocks: 1-bit (each) output: Clock feedback ports.CLKFBOUT(CLKFBOUT), // 1-bit output: Feedback clock// Clock Inputs: 1-bit (each) input: Clock inputs.CLKIN1(CLKIN1),     // 1-bit input: Primary clock.CLKIN2(CLKIN2),     // 1-bit input: Secondary clock// Control Ports: 1-bit (each) input: PLL control ports.CLKINSEL(CLKINSEL), // 1-bit input: Clock select, High=CLKIN1 Low=CLKIN2.RST(rst),           // 1-bit input: Reset// Feedback Clocks: 1-bit (each) input: Clock feedback ports.CLKFBIN(CLKFBIN)    // 1-bit input: Feedback clock);// End of PLLE2_ADV_inst instantiationalways@(posedge CLKOUT0,negedge rst)if(!rst)beginff1<=1'b0;ff2<=1'b0;endelse beginff1<=d1;ff2<=d2;endassign sum12=ff1+ff2;
always@(posedge CLKOUT1,negedge rst)if(!rst)ff_syn<=1'b0;else beginff_syn<=sum12;end
assign out_syn=ff_syn;always@(posedge clk1,negedge rst)if(!rst)ff_asyn<=1'b0;else beginff_asyn<=sum12;end
assign out_asyn=ff_asyn;
assign and_c=ff_asyn&d1;always@(posedge clk1,negedge rst)if(!rst)ff_and<=1'b0;else beginff_and<=and_c;end
assign and_out=ff_and;always@(posedge clk1,negedge rst)if(!rst)bus<=5'b0;else beginbus<=i_bus+1'b1;end
assign bus_c=bus+d2;
always@(*)begino_bus=bus;end
always@(posedge clk2,negedge rst)if(!rst)bus_clk2<=5'b0;else beginbus_clk2<=bus_c+d1;end//set_case_analysisBUFGMUX #()BUFGMUX_inst (.O(o_bufgmux),   // 1-bit output: Clock output.I0(CLKIN1), // 1-bit input: Clock input (S=0).I1(CLKIN2), // 1-bit input: Clock input (S=1).S(S)    // 1-bit input: Clock select);always@(posedge o_bufgmux,negedge rst)if(!rst)ff_case<=1'b0;else beginff_case<=d1;end
assign ffcase_n=!ff_case;always@(posedge o_bufgmux,negedge rst)if(!rst)o_case<=1'b0;else begino_case<=ffcase_n;endendmodule 

約束

//創建主時鐘和生成時鐘
create_clock -period 10.000 -name clkin1 -waveform {0.000 5.000} -add [get_ports CLKIN1]
create_clock -period 5.000 -name clkin2 -waveform {0.000 2.500} -add [get_nets CLKIN2]
create_clock -period 4.000 -name clk2 -waveform {0.000 2.000} -add [get_ports clk2]
create_clock -period 4.000 -name clk1 -waveform {0.000 2.000} -add [get_ports clk1]
create_generated_clock -name gen_clk -source [get_pins PLLE2_ADV_inst/CLKOUT1] -multiply_by 2 -add -master_clock clkin2 [get_pins PLLE2_ADV_inst/CLKOUT0]
set_input_jitter [get_clocks clk2] 0.500
set_clock_latency -clock [get_clocks clk2] 0.333 [get_pins {bus_reg[1]/D}]
set_system_jitter 0.009
set_clock_uncertainty 0.500 [get_clocks clk1]//設置時鐘組和總線偏斜
set_clock_groups -name clkin1_group -asynchronous -group [get_clocks clkin1]
set_bus_skew -from [get_cells {{bus_reg[0]} {bus_reg[1]} {bus_reg[2]} {bus_reg[3]} {bus_reg[4]}}] -to [get_cells {{bus_clk2_reg[0]} {bus_clk2_reg[1]} {bus_clk2_reg[2]} {bus_clk2_reg[3]} {bus_clk2_reg[4]}}] 0.550
set_input_delay -clock [get_clocks clk1] 1.111 [get_ports {d1 d2 {i_bus[0]} {i_bus[1]} {i_bus[2]} {i_bus[3]} {i_bus[4]} rst}]
set_output_delay -clock [get_clocks clk2] 0.222 [get_ports {and_out {o_bus[0]} {o_bus[1]} {o_bus[2]} {o_bus[3]} {o_bus[4]} out_asyn out_syn}]//設置時序例外分析
set_false_path -setup -from [get_pins {bus_reg[2]/C}] -to [get_pins {bus_clk2_reg[4]/D}]
set_max_delay -from [get_pins {bus_reg[1]/C}] 2.000
set_min_delay -from [get_pins {bus_reg[0]/C}] 0.500
set_external_delay -from [get_ports CLKFBOUT] -to [get_ports CLKFBIN] 0.444
set_multicycle_path -from [get_pins {bus_reg[0]/C}] -to [get_pins {bus_clk2_reg[2]/D}] 2
set_disable_timing [get_cells {bus_reg[3]}]//設置時序斷言
set_case_analysis 1 [get_ports S]
set_data_check -from [get_pins {bus_reg[2]/C}] -to [get_pins {bus_reg[2]/Q}] 0.333 -clock [get_clocks clk2]
set_clock_sense -positive -clocks [get_clocks clk1] [get_pins ff_asyn_reg/C]
group_path -name {group_path} -weight 1.000 -from [get_ports {d1 d2}] 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42598.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42598.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42598.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CentOS7安裝部署Anaconda

文章目錄 CentOS7安裝部署Anaconda一、前言1.組件2.環境 二、正文1.下載安裝腳本2.安裝Anaconda3.常用指令 CentOS7安裝部署Anaconda 一、前言 1.組件 Anaconda 開源的Anaconda個人版 &#xff08;正式為Anaconda發行版&#xff09;是在Linux&#xff0c;Windows和Mac OS X上…

卷積神經網絡基礎篇

文章目錄 1、卷積層1.1、激活函數1.3、sigmoid1.4、Tanh1.5、ReLU1.6、Leaky ReLU1.7、誤差計算 2、池化層3、全連接層4、CNN訓練 參考鏈接1 參考鏈接2 1、卷積層 卷積層&#xff08;Convolutional layer&#xff09;&#xff0c;這一層就是卷積神經網絡最重要的一個層次&…

動手學深度學習(Pytorch版)代碼實踐 -循環神經網絡- 56門控循環單元(`GRU`)

56門控循環單元&#xff08;GRU&#xff09; 我們討論了如何在循環神經網絡中計算梯度&#xff0c; 以及矩陣連續乘積可以導致梯度消失或梯度爆炸的問題。 下面我們簡單思考一下這種梯度異常在實踐中的意義&#xff1a; 我們可能會遇到這樣的情況&#xff1a;早期觀測值對預測…

機器人動力學模型及其線性化阻抗控制模型

機器人動力學模型 機器人動力學模型描述了機器人的運動與所受力和力矩之間的關系。這個模型考慮了機器人的質量、慣性、關節摩擦、重力等多種因素&#xff0c;用于預測和解釋機器人在給定輸入下的動態行為。動力學模型是設計機器人控制器的基礎&#xff0c;它可以幫助我們理解…

html的浮動作用詳解

HTML中的“浮動”&#xff08;Float&#xff09;是一個CSS布局技術&#xff0c;它原本設計用于文本環繞圖像或實現簡單的布局效果&#xff0c;比如并排排列元素。然而&#xff0c;隨著Web開發的演進&#xff0c;浮動也被廣泛用于更復雜的頁面布局設計中&#xff0c;盡管現代CSS…

2024/7/7周報

文章目錄 摘要Abstract文獻閱讀題目問題本文貢獻問題描述圖神經網絡Framework實驗數據集實驗結果 深度學習MAGNN模型相關代碼GNN為什么要用GNN&#xff1f;GNN面臨挑戰 總結 摘要 本周閱讀了一篇用于多變量時間序列預測的多尺度自適應圖神經網絡的文章&#xff0c;多變量時間序…

SAP已下發EWM的交貨單修改下發狀態

此種情況針對EWM未接收到ERP交貨單時&#xff0c;可以使用此程序將ERP交貨單調整為未分配狀態&#xff0c;在進行調整數據后&#xff0c;然后使用VL06I&#xff08;啟用自動下發EWM配置&#xff0c;則在交貨單修改保存后會立即下發EWM&#xff09;重新下發EWM系統。 操作步驟如…

3ds Max渲染曝光過度怎么辦?

3dmax效果圖云渲染平臺——渲染100 以3ds Max 2025、VR 6.2、CR 11.2等最新版本為基礎&#xff0c;兼容fp、acescg等常用插件&#xff0c;同時LUT濾鏡等參數也得到了同步支持。 注冊填邀請碼【7788】可領30元禮包和免費渲染券哦~ 遇到3ds Max渲染過程中曝光過度的問題&#xf…

SLF4J的介紹與使用(有logback和log4j2的具體實現案例)

目錄 1.日志門面的介紹 常見的日志門面 &#xff1a; 常見的日志實現&#xff1a; 日志門面和日志實現的關系&#xff1a; 2.SLF4J 的介紹 業務場景&#xff08;問題&#xff09;&#xff1a; SLF4J的作用 SLF4J 的基本介紹 日志框架的綁定&#xff08;重點&#xff09…

Influxdb中,Flux常用的函數

目錄 一、Flux常用的函數及其簡要描述 1. 數據源和篩選函數 2. 聚合函數 3. 時間序列操作函數 4. 轉換和映射函數 5. 窗口函數 6. 其他常用函數 注意事項 二、使用方法舉例 1. 數據源和篩選 2. 聚合 3. 時間序列操作 4. 窗口函數 5. 轉換和映射 注意事項 三、…

跨越界限的溫柔堅守

跨越界限的溫柔堅守 —— 鄭乃馨與男友的甜蜜抉擇在這個光怪陸離、瞬息萬變的娛樂圈里&#xff0c;每一段戀情像是夜空中劃過的流星&#xff0c;璀璨短暫。然而&#xff0c;當“鄭乃馨與男友甜蜜約會”的消息再次躍入公眾視野&#xff0c;它不僅僅是一段簡單的愛情故事&#xf…

iOS中多個tableView 嵌套滾動特性探索

嵌套滾動的機制 目前的結構是這樣的&#xff0c;整個頁面是一個大的tableView, Cell 是整個頁面的大小&#xff0c;cell 中嵌套了一個tableView 通過測試我們發現滾動的時候&#xff0c;系統的機制是這樣的&#xff0c; 我們滑動內部小的tableView, 開始滑動的時候&#xff0c…

C/C++ 代碼注釋規范及 doxygen 工具

參考 谷歌項目風格指南——注釋 C doxygen 風格注釋示例 ubuntu20 中 doxygen 文檔生成 doxygen 官方文檔 在 /Doxygen/Special Command/ 章節介紹 doxygen 的關鍵字 注釋說明 注釋的目的是提高代碼的可讀性與可維護性。 C 風格注釋 // 單行注釋/* 多行注釋 */ C 風格注…

設置某些路由為公開訪問,不需要登錄狀態即可訪問

在單頁面應用&#xff08;SPA&#xff09;框架中&#xff0c;如Vue.js&#xff0c;路由守衛是一種非常有用的功能&#xff0c;它允許你控制訪問路由的權限。Vue.js 使用 Vue Router 作為其官方路由管理器。路由守衛主要分為全局守衛和組件內守衛。 以下是如何設置路由守衛以允…

k8s 部署RuoYi-Vue-Plus之mysql搭建

1.直接部署一個pod 需要掛載存儲款, 可參考 之前文章設置 https://blog.csdn.net/weimeibuqieryu/article/details/140183843 2.部署yaml 先創建命名空間ruoyi kubectl create namespace ruoyi創建部署文件 mysql-deploy.yaml --- apiVersion: v1 kind: PersistentVolume …

【論文閱讀筆記】Meta 3D AssetGen

【論文閱讀筆記】Meta 3D AssetGen: Text-to-Mesh Generation with High-Quality Geometry, Texture, and PBR Materials Info摘要引言創新點 相關工作T23D基于圖片的3d 重建使用 PBR 材料的 3D 建模。 方法文本到圖像:從文本中生成陰影和反照率圖像Image-to-3D:基于pbr的大型重…

搭建NEMU與QEMU的DiffTest環境(動態庫方式)

搭建NEMU與QEMU的DiffTest環境&#xff08;動態庫方式&#xff09; 1 DiffTest原理簡述2 編譯NEMU3 編譯qemu-dl-difftest3.1 修改NEMU/scripts/isa.mk3.2 修改NEMU/tools/qemu-dl-diff/src/diff-test.c3.3 修改NEMU/scripts/build.mk3.4 讓qemu-dl-difftest帶調試信息3.5 編譯…

C語言實現字符串排序

如果只有英文字符且不區分大小寫的話按照字典序排序可以用strcmp函數&#xff0c;兩個字符串自左向右逐個字符相比&#xff08;按ASCII值大小相比較&#xff09; strcmp(s1,s2) 當s1<s2時&#xff0c;返回為負數&#xff1b; 當s1s2時&#xff0c;返回值 0&#xff1b; …

安卓的組件

人不走空 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌賦&#xff1a;斯是陋室&#xff0c;惟吾德馨 目錄 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌…

【Linux】打包命令——tar

打包和壓縮 雖然打包和壓縮都涉及將多個文件組合成單個實體&#xff0c;但它們之間存在重要差異。 打包和壓縮的區別&#xff1a; 打包是將多個文件或目錄組合在一起&#xff0c;但不對其進行壓縮。這意味著打包后的文件大小可能與原始文件相同或更大。此外&#xff0c;打包…