vcs-編譯+仿真+dump波形【IMP】

VCS仿真分為兩步式(編譯/compilation+仿真/simulation)和三步式(分析/analysis+細化/elaboration+simulation/仿真);

注2:analysis/分析是三步式flow中仿真design的第一步,在此階段將使用vhdlanvlogan分析VHDL、Verilog、SystemVerilog和OpenVera文件。下面的部分包括幾個分析設計文件的示例命令行:

Analyzing your VHDL files:
vhdlan [vhdlan_options] file1.vhd file2.vhd

Analyzing your Verilog files:
vlogan [vlogan_options] file1.v file2.v

Analyzing your SystemVerilog files:
vlogan -sverilog [vlogan_options] file1.sv file2.sv file3.v

Analyzing your OpenVera files:
vlogan -ntb [vlogan_options] file1.vr file2.vr file3.v

Analyzing your SystemVerilog and OpenVera files:
vlogan -sverilog -ntb [vlogan_options] file1.sv file2.vr file3.v

注3:elaboration/細化是三步式flow中仿真design的第二步,在這個階段,使用分析過程中生成的中間文件,VCS構建實例層次結構并生成一個二進制可執行的simv,該二進制可執行文件之后用于仿真。可選擇優化模式或調試模式來細化design。

1.1.??編譯

1.1.1.?關于編譯

(1)?構建實例的層次結構,并且生成二進制可執行文件simv,該二進制可執行文件后續會用于仿真.

(2)?在編譯階段,可以選擇optimized mode或debug_mode進行design的編譯;

1.1.2.?編譯命令

(1)?vcs ?[compile_options] verilog_files

(2)?vcs?-sverilog?[compile_options] sverilog_files ?(using sv with vcs)

(3)?vcs -sverilog?-ntb_opts uvm-1.2?[compile_options] user_source_files_using_UVM ?????(using uvm-1.2 with vcs, -ntb_opts uvm-1.2會load UVM-1.2)

(4)?顯式指定UVM文件與參數: vcs -sverilog?+incdir+${UVM_HOME}/src ??${UVM_HOME}/src/uvm_pkg.sv ?${UVM_HOME}/src/dpi/uvm_dpi.cc ???-CFLAGS -DVCS?[compile_options]user_source_files_using_UVM

(5)?使用需要通過UVM register backdoor機制訪問HDL寄存器的test: vcs -sverilog?-debug_pp?-ntb_opts uvm [compile_options] user_source_files_using_UVM ?(-debug_pp可能會影響仿真性能,需要使用+vcs+learn+pli提高HDL訪問性能)

1.1.3.?常用的編譯option

注1:?-h or -help列出最常用的VCS編譯和運行時選項的描述;

注2:?-ID返回有用的信息,如VCS版本和構建日期,VCS編譯器版本,以及工作站名稱、平臺和主機ID;

(1)?-v filename:可以指定一個verilog庫文件,vcs會在該文件中查找module或UDP實例的定義;

(2)?-y directory:可以指定verilog庫文件路徑;

(3)?+incdir+directory+:指定路徑,vcs會在這些路徑下搜索`include語句中的文件;

(4)?+libext+extension+:指定vcs在指定路徑下搜索哪些擴展名的文件;

(5)?-full64:使能64-bit模式下的編譯與仿真;

(6)?-file filename:指定包含一系列文件與編譯時間選項的文件;

(7)?-gui:當在編譯時使用gui模式,仿真時會啟動DVE(Discovery Visualization Environment);

(8)?-R:在編譯完成后,立刻開始仿真;

(9)?-l filename:指定vcs記錄編譯信息的文件;如果同時使用-R option,vcs會將編譯信息和仿真信息均記錄到該文件內;

(10)?+define+macro=value+:其中=value參數是可選的,可以通過在verilog代碼中使用`ifdef來測試該define;

(11)?-debug, -debug_all, -debug_access(+<option>)

(12)?-o:可以指定編譯生成的二進制可執行文件的名字;

(13)?+mindelays:門級仿真時使用,表示器件延時使用sdf 文件中的最小值(sdf 文件中的時序(min:typ:max));

(14)?+maxdelays:門級仿真時使用,表示器件延時使用sdf 文件中的最大值(sdf 文件中的時序(min:typ:max));

(15)?–sverilog:支持systemverilog 語法(vcs 用,verid 用-sv);

(16)?+v2k:支持verilog 2001 特性;

(17)?-lca:Limited Customer Availability,支持動態數據類型associative Array,dynamic Array,smart Queue,string,
event,class;

(18)?–debug_all:支持所有debug 操作,DVE 選項,可以查看所有斷點(line,time,value,event etc) all 就是加權限。+w 是寫,+r 是讀,+f 是force, +l 是支持ucli 的單步調試, +n 是對網表操作。具體可以看手冊。+all 就是把所有的權限全開;

(19)?–debug_acess+all:在VCS 編譯的時候不用再加-p novas.tab pli.a 來定verdi 的路徑。

(20)?+ntb_random_seed=value:指定仿真隨機種子;

(21)?+ntb_random_seed_automatic:VCS 自動生成隨機種子;

(22)?-timescale=1ns/10ps:命令行定義仿真時間刻度,若rtl 中有timescale 的定義,則會覆蓋makefile 中的定義;

(23)?+neg_tchk:門級仿真時使用,表示當進行negative timing check時必須包含該option,否則vcs會把所有負值變為0,這會使得timing check很悲觀.

(24)+nospecify/+notimingcheck:門級仿真時使用,表示忽略path delay和specify延時;

(25)?-negdelay:門級仿真時使用,表示使能SDF文件中的所有的負值,但是要保證setup和hold(rec和rem)的和為正值,否則vcs會忽略負值同時給出warning.

1.2.??仿真?

1.2.1.?關于仿真

(1)?在編譯階段,vcs會生成二進制可執行文件.simv;可以使用simv進行仿真;

(2)?根據怎么編譯design,仿真可以有兩種模式: interactive模式(編譯采用debug模式,也稱為interactive模式)與batch模式;

(3)?Interactive mode:?在初始階段以交互模式(調試模式)編譯design。在這個階段,可以使用GUI或通過命令行調試design問題。通過GUI進行調試可以使用Verdi,通過命令行進行調試可以使用UCLI (Unified command line interface);

(4) batch mode:?當大多數design問題解決后,可以使用批處理模式(優化模式)編譯design。在這個階段,可以以最小的debug性能來換取更好的性能來運行回歸

1.2.2.?仿真命令

(1)?simv [run_options]

(2)?uvm仿真命令: simv?+UVM_TESTNAME=your_uvm_test??[sim_options]

1.2.3.?常用的仿真option

1.2.4.?interactive模式下仿真

(1)?必須使用DVE或者UCLI;

(2)?DVE的優點:

(2.1) DVE提供GUI接口,便于debug,使用時需要保證VCS與DVE版本相同;

(2.2)?DVE便于觀察波形,比較波形,觀察原理圖;

(2.3)?執行ucli/tcl命令;

(2.4)?設置斷點;

(3)?DVE工作在interactive模式下的仿真命令

(3.1)?simv -gui

(4)?DVE工作在post-processing模式下的仿真命令

(4.1)?dve -vpd [VPD/EVCD_filename]

(5)?UCLI簡介

(5.1)?ucli命令基于tcl;

(5.2)?通過使用ucli命令,可以控制仿真, dump VPD文件,保存或重現仿真狀態, force/release信號;

(5.3)?使用斷點;

(6)?啟動ucli

(6.1)?simv [simv_options] -ucli

1.2.5.?batch模式下仿真

1.3.??dump波形

1.3.1?使能波形dump

無論采用系統函數或ucli dump波形,都必須采用如下option中的一個進行波形dump的使能;

(1)?-debug_access

(2)?-fsdb

(3)?-P $VERDI_LIB/novas.tab $VERDI_LIB/pli.a

1.3.2?采用系統函數進行波形dump

(1)?code內部調用系統函數,如下所示;

注1:dump波形時,避免在module內的兩個線程內都調用$fsdbDumpfile函數;因為第一次調用該函數時,會產生一個后綴為.fsdb的文件,當第二次調用該函數時,會報如下warning:"FSDB WARNING: The FSDB file already exists. Overwriting the FSDB file may crash the programs that are using this file.",這種情況下,只有第一次調用生效;

(2)?編譯命令如下所示;

(3)?仿真命令如下所示;

simv

1.3.3?采用ucli dump波形

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

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

相關文章

程序代碼篇---python向http界面發送數據

在 Python 中向 HTTP 界面發送數據&#xff0c;本質上是模擬用戶在網頁上填寫表單、點擊提交按鈕的過程。這在自動化測試、數據上報、接口調用等場景中非常常用。下面用通俗易懂的方式介紹具體方法、實例代碼和解析。核心原理網頁上的數據發送&#xff08;比如提交表單&#xf…

mybatis-plus由mysql改成達夢數據庫

前置條件: 達夢數據庫設置了大小寫敏感,我比較菜,改不動!先這么湊合著用吧; 因為設置了大小寫敏感,所以所有的sql語句都要加 引號; 這樣是會報錯的: SELECT remark,createDept,createBy,createTime,updateBy,updateTime FROM sys_oss_config這樣才可以 SELECT "create_…

設計模式:外觀模式 Facade

目錄前言問題解決方案結構代碼前言 外觀是一種結構型設計模式&#xff0c;能為程序庫、框架或其他復雜類提供一個簡單的接口。 問題 假設你必須在代碼中使用某個復雜的庫或框架中的眾多對象。正常情況下&#xff0c; 你需要負責所有對象的初始化工作、 管理其依賴關系并按正確…

【數據結構初階】--二叉樹(四)

&#x1f525;個人主頁&#xff1a;草莓熊Lotso &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言&#xff1a;生活是默默的堅持&#xff0c;毅力是永久的…

三、平面度檢測-差值法

方法一: dev_get_window (WindowHandle) *讀取3通道彩色融合圖 read_image (Image, ./XYZ彩色融合圖.tiff) *拆分3個通道 decompose3 (Image, x, y, z) *將3個通道圖像轉換為3D模型 xyz_to_object_model_3d (x,y, z, ObjectModel3D) *顯示動態3D模型 threshold (z, Regions,…

什么是數據編排?數據編排的流程、優勢、挑戰及工具有哪些?

目錄 一、數據編排的定義與概念 1.數據編排的基本含義 2.數據編排與相關概念的區別 3.數據編排的重要性 二、數據編排的流程 1.需求分析&#xff1a; 2.數據源識別與連接&#xff1a; 3.數據抽取&#xff1a; 4.數據轉換&#xff1a; 5.數據加載&#xff1a; 6.監控…

【C++算法】82.BFS解決FloodFill算法_被圍繞的區域

文章目錄題目鏈接&#xff1a;題目描述&#xff1a;解法C 算法代碼&#xff1a;題目鏈接&#xff1a; 130. 被圍繞的區域 題目描述&#xff1a; 解法 BFS一層層剝開。 C 算法代碼&#xff1a; class Solution {// 定義四個方向的偏移量&#xff1a;右、左、下、上int dx[4] …

商湯發布具身智能平臺,讓機器人像人一樣和現實世界交互

7月27日&#xff0c;在“大愛無疆模塑未來”WAIC 2025大模型論壇上&#xff0c;商湯科技重磅發布「悟能」具身智能平臺。「悟能」具身智能平臺以商湯具身世界模型為核心引擎&#xff0c;依托商湯大裝置提供端側和云側算力支持&#xff0c;能夠為機器人、智能設備提供強大的感知…

MCP工作原理

在談MCP原理前&#xff0c;我們先談談MCP的技術前身—Function Calling。1.Function Calling技術在FunctionCalling技術出現之前&#xff0c;大語言模型雖然擁有強大的知識儲備和語言理解能力&#xff0c;但是只能提供自身數據庫已有的信息&#xff0c;無法和外界進行信息交互。…

VSCode手動版本更新

技術背景 使用VSCode的的過程中&#xff0c;如果打開了自動更新功能&#xff0c;每隔一段時間就會有更新提示。為了保持版本的穩定性&#xff0c;我們可以在設置中將Update: Mode設置為none&#xff0c;這樣就不會觸發自動更新。但有時又有版本更新的需求&#xff0c;可能是版本…

醫療超聲成像專用AFE模擬前端

醫療超聲成像作為一種廣泛應用于臨床診斷的重要技術&#xff0c;對于提供清晰、準確的醫學圖像起著關鍵作用。在超聲成像系統中&#xff0c;AFE模擬前端扮演著至關重要的角色。它負責對超聲換能器接收到的微弱電信號進行處理和轉換&#xff0c;為后續的數字信號處理提供高質量的…

機器學習之線性回歸——小白教學

一、線性回歸簡介1.什么是線性回歸線性回歸(Linear regression)是利?回歸?程(函數)對?個或多個?變量(特征值)和因變量(?標值)之間關系進?建模的?種分析?式。特點&#xff1a;只有?個?變量的情況稱為單變量回歸&#xff0c;多于?個?變量情況的叫做多元回歸線性回…

.NET 10 中的新增功能系列文章1——運行時中的新增功能

引言 隨著 .NET 10 預覽版6的發布&#xff0c;微軟在運行時層面帶來了一系列重要的性能改進和新功能。這些改進主要集中在JIT編譯器優化、硬件指令集支持、內存管理等方面&#xff0c;旨在進一步提升應用程序的執行效率和資源利用率。本文將詳細解析這些運行時增強功能&#x…

安寶特方案丨AI算法能力開放平臺:適用于人工裝配質檢、點檢、實操培訓

當前工業AI圖形識別算法的應用存在投入成本高、維護更新難、依賴固定相機、應用范圍窄、與實際作業脫節等問題。 針對以上情況&#xff0c;安寶特提出了“AI算法能力開放平臺”&#xff0c;目的是讓AI圖形識別算法可以與現場實際的人工點檢作業、裝配作業、質檢作業、培訓作業…

水下目標識別準確率↑89%!陌訊多模態融合算法在智慧水務的落地實踐

一、行業痛點&#xff1a;智慧水務的檢測困境據《2024城市水務智能化白皮書》統計&#xff0c;傳統水務檢測面臨三大挑戰&#xff1a;??水體干擾??&#xff1a;渾濁度>100NTU時&#xff0c;目標漏檢率高達65%??動態環境??&#xff1a;水流擾動導致目標形變&#xff…

手動開發一個串口調試工具(三):基于 Qt Widgets 搭建串口調試界面

在上一篇中&#xff0c;我們通過 QCoreApplication 構建了一個基礎的串口收發控制臺程序&#xff0c;并實現了周期發送、十六進制轉換和數據讀取等核心功能。本篇將基于此邏輯&#xff0c;進一步將其封裝為一個圖形化界面程序&#xff0c;借助 Qt Widgets 提供的控件搭建完整的…

量子計算革命:重新定義計算的邊界與未來

引言&#xff1a;我們正站在計算革命的新起點 當IBM在2019年宣布實現"量子霸權"時&#xff0c;很多人認為這只是實驗室里的科學突破。然而&#xff0c;短短幾年后&#xff0c;量子計算已經從理論走向實踐&#xff0c;從實驗室走向產業應用。我們正站在一個全新的計算…

Python 數據可視化之 Matplotlib 庫

在當今數據驅動的時代&#xff0c;數據可視化&#xff08;Data Visualization&#xff09;已成為數據科學、機器學習、金融分析、工程建模等多個領域中不可或缺的一環。數據可視化不僅幫助我們更直觀地理解數據的分布和趨勢&#xff0c;還能輔助決策、展示研究成果以及增強數據…

Makefile 快速入門指南

Makefile 快速入門指南 什么是Makefile? Makefile 是一個自動化構建工具的配置文件&#xff0c;用于管理代碼編譯、測試和清理等任務。它通過定義規則&#xff08;rules&#xff09;來指定文件之間的依賴關系&#xff0c;當源文件改變時&#xff0c;只重新編譯受影響的部分&…

Linux學習--C語言(指針4、結構體)

1.二維數組的傳參int a[2][3] {1, 2, 3, 4, 5, 6};fun(a,2); int fun(int (*p)[3], int len);2.指針數組的傳參char *pastr[5] {NULL};int fun(char **pstr,int len);例子&#xff1a;#include <stdio.h> #include <string.h>int InputArray(char (*p)[32], int …