一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

FPGA EDA軟件的位流驗(yàn)證

FPGA設(shè)計(jì)論壇 ? 來(lái)源:松山湖開發(fā)者村綜合服務(wù) ? 2025-04-25 09:42 ? 次閱讀

位流驗(yàn)證,對(duì)于芯片研發(fā)是一個(gè)非常重要的測(cè)試手段,對(duì)于純軟件開發(fā)人員,最難理解的就是位流驗(yàn)證。在FPGA芯片研發(fā)中,位流驗(yàn)證是在做什么,在哪些階段需要做位流驗(yàn)證,如何做?都是問題。

我們先整體的說一下:

首先:在硬件設(shè)計(jì)階段,位流驗(yàn)證是設(shè)計(jì)驗(yàn)證部的重要工作,它是為了驗(yàn)證硬件設(shè)計(jì)的數(shù)字電路部分的合理性,對(duì)于FPGA芯片,主要就是對(duì)標(biāo)準(zhǔn)的架構(gòu)組件進(jìn)行驗(yàn)證。如果相應(yīng)的EDA軟件未成形之前,相應(yīng)的位流需要通過手工單獨(dú)生成。

然后:在FPGA配套的EDA軟件開發(fā)階段,位流驗(yàn)證也非常重要。因?yàn)镋DA軟件的最大目標(biāo)就是生成正確的位流,位流輸出是否符合預(yù)期,關(guān)系到軟件各個(gè)環(huán)節(jié)的正確性。所以,一般會(huì)將位流驗(yàn)證做為重要的回歸測(cè)試手段,一方面,可以持續(xù)驗(yàn)證最新輸出軟件的正確性,另外,如果芯片的底層架構(gòu)發(fā)生變化,模型變更,仿真庫(kù)變更,也可以通過位流驗(yàn)證,保證架構(gòu)更改的正確性(架構(gòu)主要是按照硬件設(shè)計(jì)對(duì)應(yīng)的軟件模型,而硬件設(shè)計(jì)的這些模型,都會(huì)有對(duì)應(yīng)的仿真庫(kù)和參考模型,用于驗(yàn)證)。

最后:在生產(chǎn)測(cè)試階段,位流驗(yàn)證同樣是非常好的測(cè)試手段,它可以測(cè)試位流寫入芯片后上板上芯片的效果,確認(rèn)芯片實(shí)際的運(yùn)行情況。在軟件中只是保證了邏輯上的正確,實(shí)際結(jié)合電氣特性和各種不同環(huán)境是否能正??煽窟\(yùn)行,可能通過位流加載后的效果進(jìn)行驗(yàn)證。加載到實(shí)際板上的效果,也可以通過驅(qū)動(dòng)程序取出,與預(yù)期參老模型的結(jié)果做對(duì)比,驗(yàn)證其準(zhǔn)確性。

當(dāng)然,位流驗(yàn)證可能并不僅限于上面的三種情況(限于我了解的內(nèi)容有限),但通過上面的描述,你可以發(fā)現(xiàn),位流驗(yàn)證本身是就是會(huì)跨多個(gè)部門的比較特殊的手段,在不同部門做驗(yàn)證時(shí),一定會(huì)存在配合,和一些有相似的工作。但是,因?yàn)楦髯缘哪康牟煌?,發(fā)現(xiàn)錯(cuò)誤后,定位和糾錯(cuò)的方向也很不一樣。反以,反過來(lái)說,選擇的相應(yīng)示例也會(huì)有些不同。

今天,我們只講在EDA軟件如何利用位流驗(yàn)證,完成對(duì)EDA軟件的重要回歸測(cè)試。

大概的講法是:

:我們會(huì)講解位流驗(yàn)證依賴的框架UVM

:會(huì)講一下UVM的實(shí)現(xiàn)平臺(tái)。

:會(huì)講一下針對(duì)EDA軟件的驗(yàn)證,會(huì)對(duì)哪些部分進(jìn)行驗(yàn)證,會(huì)使用什么樣的示例 。

:發(fā)現(xiàn)問題后,會(huì)如何通過輸出去定位錯(cuò)誤。

:因?yàn)橛糜谧詣?dòng)化回歸,也講一下相應(yīng)的自動(dòng)化平臺(tái)應(yīng)該如何拱建。

首先,我們還是得再來(lái)理解一下位流驗(yàn)證需要用到的UVM框架。

一:UVM框架

1.1:理論

Universal Verifacation Methodology:是一套基于SystemVerilog的標(biāo)準(zhǔn)驗(yàn)證方法學(xué)。它提供了一套完整的框架,用于構(gòu)建復(fù)雜的驗(yàn)證環(huán)境,應(yīng)用于芯片設(shè)計(jì)領(lǐng)域的功能驗(yàn)證。旨在提高驗(yàn)證的可重復(fù)性、可重用性和自動(dòng)化程度。應(yīng)該說,對(duì)于硬件設(shè)計(jì)的驗(yàn)證,UVM是最基礎(chǔ),最常用的平臺(tái),離不開它。

e59f58d8-201e-11f0-9310-92fbcf53809c.jpg

2.1.1:DUT

待測(cè)設(shè)計(jì)——Design Under Test,就是你要驗(yàn)證的設(shè)計(jì)單元。

如果你是要驗(yàn)證/測(cè)試一顆 FPGA 芯片,DUT 一般會(huì)分為三種,一種是單Tile的設(shè)計(jì),一種是多Tile的設(shè)計(jì),還有就是整個(gè)芯片的設(shè)計(jì)。

注意這里我加了個(gè)bitstream,這并不是UVM必須的,加上bitstream是和我們今天要講的位流驗(yàn)證扣題,也就是我們?cè)隍?yàn)證時(shí),使用FPGA的位流文件,來(lái)形成DUT的功能。

env:Testbenc Environment ,除了DUT,其它就是UVM的驗(yàn)證環(huán)境了,它包含了一大堆東西,后面一個(gè)一個(gè)介紹。

Sequencer:測(cè)試數(shù)據(jù)序列,因?yàn)闇y(cè)試時(shí)需要很多的輸入數(shù)據(jù),我們按序列提供。

Driver:如何數(shù)據(jù)輸入DUT的過程,可以理解為激勵(lì)的過程。

Monitor:監(jiān)控DUT的輸入/輸出信號(hào)

Reference Model:參考模型,對(duì)應(yīng)DUT的設(shè)計(jì),提供相同行為的給果。

這里參考模型的運(yùn)行,一般我們會(huì)使用仿真工具的內(nèi)置實(shí)現(xiàn)來(lái)完成。

Compare:比較DUT的輸出和參考模型的輸出,判斷是否匹配。

2.1.2:Sequencer

Sitmulus:生成測(cè)試數(shù)據(jù)序列。我們需要基于測(cè)試的需求,產(chǎn)生數(shù)據(jù),交給Driver來(lái)驅(qū)動(dòng)到DUT。比如:你要測(cè)試DSP的乘法,那就是提供相應(yīng)的輸入數(shù)值對(duì)。

class my_sequence extends uvm_sequence #(my_transaction);


`uvm_object_utils(my_sequence)

task body();
my_transaction tr;
foreach (tr.data[i]) begin
tr.data[i] = $urandom_range(0, 255); // 隨機(jī)生成 8 位數(shù)據(jù)
start_item(tr); // 發(fā)送數(shù)據(jù)
finish_item(tr);
end
endtask
endclass

2.1.3:Driver

接收Sequencer的測(cè)試數(shù)據(jù)并將其轉(zhuǎn)換為DUT的輸入信號(hào)。

這里可能需要模擬時(shí)序,比如:時(shí)鐘的同步,握手協(xié)議等。

class my_driver extends uvm_driver #(my_transaction);


`uvm_component_utils(my_driver)

task run_phase(uvm_phase phase);
forever begin
seq_item_port.get_next_item(req); // 接收 sequencer 的數(shù)據(jù)
@(posedge clk); // 時(shí)鐘同步
dut_input = req.data; // 將數(shù)據(jù)驅(qū)動(dòng)到 DUT
seq_item_port.item_done();
end
endtask
endclass

2.1.4:Monitor

實(shí)時(shí)監(jiān)控DUT的輸入和輸出信號(hào),將監(jiān)控到的數(shù)據(jù)送出到比較系統(tǒng)Compare,進(jìn)行輸出分析。

class my_monitor extends uvm_monitor #(my_transaction);
`uvm_component_utils(my_monitor)

task run_phase(uvm_phase phase);
forever begin
@(posedge clk);
tr.data = dut_output; // 采集 DUT 的輸出數(shù)據(jù)
analysis_port.write(tr); // 將數(shù)據(jù)發(fā)送給 Scoreboard
end
endtask
endclass

2.1.5:Reference Model

參考模型,用于生成和DUT相同邏輯功能的輸出(Golden Model)。

基于相同的輸入激勵(lì)信號(hào),獲得理想的輸出。

function bit [7:0] ref_model(input bit [7:0] data);
return data + 1; // 示例:參考模型輸出為輸入加 1
endfunction

2.1.6:Compare

這里的Compare,可能是簡(jiǎn)單的比較結(jié)果的輸出,也可能是比較復(fù)雜的Scoreboard(一個(gè)記錄數(shù)據(jù)表)。根據(jù)比較結(jié)果,輸出不匹配的情況,并輸出報(bào)告。

class my_scoreboard extends uvm_scoreboard;


`uvm_component_utils(my_scoreboard)

task run_phase(uvm_phase phase);
my_transaction ref_tr, dut_tr;
forever begin
ref_tr = ref_fifo.get(); // 從參考模型接收預(yù)期數(shù)據(jù)
dut_tr = dut_fifo.get(); // 從 DUT 獲取實(shí)際輸出
if (ref_tr.data !== dut_tr.data)
`uvm_error("Mismatch", $sformatf("Expected: %0h, Got: %0h", ref_tr.data, dut_tr.data));
end
endtask
endclass

2.1.7:示例

我們?cè)賮?lái)一個(gè)完整的示例,說明一下各部分做的事情。

DUT設(shè)計(jì)—— 一個(gè)簡(jiǎn)單的8位加法器。

DUT代碼:(對(duì)于位流驗(yàn)證,輸入不是這個(gè),后面會(huì)舉例說明)

module adder(
input logic [7:0] a,
input logic [7:0] b,
output logic [7:0] sum
);
assign sum = a + b;
endmodule

UVM環(huán)境:

這里需要定義一個(gè)Transaction,因?yàn)槊看渭?lì)的執(zhí)行都是不同的事務(wù),事務(wù)標(biāo)明輸入和輸出。

Transaction 定義:

class my_transaction extends uvm_sequence_item;
rand bit [7:0] a, b; // 輸入信號(hào)
bit [7:0] expected_sum; // 參考模型生成的期望輸出

`uvm_object_utils(my_transaction)

// 構(gòu)造函數(shù)
function new(string name = "my_transaction");
super.new(name);
endfunction
endclass

Sequencer:

class my_sequence extends uvm_sequence #(my_transaction);


`uvm_object_utils(my_sequence)

task body();
my_transaction tr;

repeat (10) begin
tr = my_transaction::create("tr");
tr.a = $urandom_range(0, 255); // 隨機(jī)生成輸入 a
tr.b = $urandom_range(0, 255); // 隨機(jī)生成輸入 b
start_item(tr); // 開始傳輸數(shù)據(jù)
finish_item(tr); // 結(jié)束傳輸數(shù)據(jù)
end
endtask
endclass

Driver:

class my_driver extends uvm_driver #(my_transaction);


`uvm_component_utils(my_driver)

// DUT 的接口
virtual adder_if dut_if;

// 構(gòu)造函數(shù)
function new(string name = "my_driver", uvm_component parent);
super.new(name, parent);
endfunction

// 運(yùn)行階段
task run_phase(uvm_phase phase);
forever begin
seq_item_port.get_next_item(req); // 從 Sequencer 獲取數(shù)據(jù)
@(posedge dut_if.clk); // 等待時(shí)鐘上升沿
dut_if.a = req.a; // 驅(qū)動(dòng) DUT 輸入 a
dut_if.b = req.b; // 驅(qū)動(dòng) DUT 輸入 b
seq_item_port.item_done(); // 標(biāo)記數(shù)據(jù)已完成
end
endtask
endclass

Monitor:

輸入監(jiān)控

class input_monitor extends uvm_monitor;


`uvm_component_utils(input_monitor)

// DUT 接口
virtual adder_if dut_if;
uvm_analysis_port #(my_transaction) analysis_port; // 分析端口

function new(string name = "input_monitor", uvm_component parent);
super.new(name, parent);
endfunction

// 運(yùn)行階段
task run_phase(uvm_phase phase);
forever begin
@(posedge dut_if.clk); // 等待時(shí)鐘上升沿
my_transaction tr = my_transaction::create("tr");
tr.a = dut_if.a; // 采集 DUT 輸入 a
tr.b = dut_if.b; // 采集 DUT 輸入 b
analysis_port.write(tr); // 將交易數(shù)據(jù)發(fā)送給分析端口
end
endtask
endclass

輸出監(jiān)控:

class output_monitor extends uvm_monitor;


`uvm_component_utils(output_monitor)

// DUT 接口
virtual adder_if dut_if;
uvm_analysis_port #(my_transaction) analysis_port; // 分析端口

function new(string name = "output_monitor", uvm_component parent);
super.new(name, parent);
endfunction

// 運(yùn)行階段
task run_phase(uvm_phase phase);
forever begin
@(posedge dut_if.clk); // 等待時(shí)鐘上升沿
my_transaction tr = my_transaction::create("tr");
tr.expected_sum = dut_if.sum; // 獲取 DUT 輸出 sum
analysis_port.write(tr); // 發(fā)送到分析端口
end
endtask
endclass

Compare:

class my_scoreboard extends uvm_scoreboard;


`uvm_component_utils(my_scoreboard)

uvm_analysis_imp #(my_transaction, my_scoreboard) input_analysis_imp;
uvm_analysis_imp #(my_transaction, my_scoreboard) output_analysis_imp;

my_transaction expected_tr, actual_tr;

function new(string name = "my_scoreboard", uvm_component parent);
super.new(name, parent);
input_analysis_imp = uvm_analysis_imp #(my_transaction, my_scoreboard)
::create("input_analysis_imp", this);
output_analysis_imp = uvm_analysis_imp #(my_transaction, my_scoreboard)
::create("output_analysis_imp", this);
endfunction

// 輸入數(shù)據(jù)分析
function void write(input my_transaction tr);
expected_tr = tr;
expected_tr.expected_sum = expected_tr.a + expected_tr.b; // 參考模型
endfunction

// 輸出數(shù)據(jù)分析
function void write(output my_transaction tr);
actual_tr = tr;

// 比較 DUT 輸出和參考模型的期望值
if (actual_tr.expected_sum !== expected_tr.expected_sum) begin
`uvm_error("Mismatch", $sformatf("Expected: %0d, Got: %0d",
expected_tr.expected_sum, actual_tr.expected_sum));
end
endfunction
endclass

2.1.8:位流驗(yàn)證

那對(duì)于位流驗(yàn)證,UVM是如何使用的呢?

1:首先,必須準(zhǔn)備好你的FPGA的EDA軟件(準(zhǔn)備好運(yùn)行時(shí)需要的 Flow 的tcl命令)。給出你的芯片仿真時(shí)需要的Primitve仿真庫(kù)。

2:針對(duì)你要測(cè)試的全芯片或者部分tile,選擇你要測(cè)試的設(shè)計(jì)用例(需要有一定的代表性噢,可以是N多,需要有一定覆蓋度),用 flow 生成仿真用的門級(jí)網(wǎng)表文件,并輸出用例的route結(jié)果,輸出最終的bitstream。

3:開始對(duì)要測(cè)試的用例,編寫參考模型(也是另外一種實(shí)現(xiàn)方案)。

4:編寫激勵(lì)(測(cè)試)程序,提供相應(yīng)的激勵(lì)數(shù)據(jù)序列。

5:在TestBench上,針對(duì) DUT 的 RefModel模型進(jìn)行仿真,驗(yàn)證兩者輸出是否一致,如果一致,說明位流測(cè)試正常。比較的方法,要看測(cè)試用例的功能。

6:如果測(cè)試不正常,可以利用中間輸出,日志輸出,波形輸出等信息進(jìn)行定位,查看出錯(cuò)原因。

e5babb82-201e-11f0-9310-92fbcf53809c.png

好了,那UVM框架是如何實(shí)現(xiàn)的呢?有什么支撐平臺(tái)和工具嗎?

1.2:支撐

那UVM這種框架是如何通平臺(tái)來(lái)支撐它的呢?我們以Synopsys的VCS為例,來(lái)說明它是如何支持的(當(dāng)然,也可以使用Mentor提供的QuestaSim)。

1.2.1:工具

VCS(Verlog Compiler Simulator)是業(yè)界領(lǐng)先的仿真工具,原生支持UVM,它提供了一系列的工具和功能,全而覆蓋了UVM測(cè)試平臺(tái)中的各項(xiàng)工作。

UVM 組件 VCS 支持工具/功能
Sequence SystemVerilog 編譯器直接支持 UVM sequence 的隨機(jī)生成和調(diào)試。
Driver 通過 VCS 的時(shí)鐘精確仿真,支持 UVM driver 精確地驅(qū)動(dòng) DUT 信號(hào)。
Monitor UVM 信號(hào)分析器,與 DVE 圖形工具集成,監(jiān)控信號(hào)流。
Compare
Scoreboard
與覆蓋率分析工具集成,支持寄存器覆蓋率和功能覆蓋率的檢查。
Debug 提供圖形化的 UVM Phase 調(diào)試工具,支持動(dòng)態(tài)調(diào)試和波形交互分析。
Verification 集成 DVE 和 Verdi 工具,查看波形和調(diào)試測(cè)試平臺(tái)的運(yùn)行時(shí)行為。

基于VCS的功能,要實(shí)現(xiàn)UVM平臺(tái),還需要封裝一些標(biāo)準(zhǔn)的命令,達(dá)成常見的功能。

1.2.2:平臺(tái)

為了實(shí)現(xiàn)UVM的基礎(chǔ)功能,我們需要提供一些封裝功能,我們稱之為平臺(tái)。因?yàn)閂CS并不是直接針對(duì)UVM的,所以,我們需要針對(duì)它做一些封裝,然后我們基于封裝來(lái)使用,這樣,看起來(lái)就更像是一個(gè)針對(duì)UVM實(shí)現(xiàn)的平臺(tái)了。

基本功能如下:(封裝方法可以使用Python或其它腳本語(yǔ)言來(lái)實(shí)現(xiàn))

平臺(tái)初始化:

確認(rèn) 測(cè)試平臺(tái)的主目錄,測(cè)試工程目錄,測(cè)試用例目錄,工具目錄,輸出目錄……

設(shè)置重要參數(shù):

測(cè)試的代碼列表庫(kù)

測(cè)試用例的分組

運(yùn)行次數(shù)

是否調(diào)試模式:提供更多l(xiāng)og輸出

提供隨機(jī)種子數(shù):用于控制輸入?yún)?shù)的隨機(jī)種子,控制測(cè)試數(shù)據(jù)的生成。

……

編譯/構(gòu)建:

我們的testbench的代碼還是相對(duì)比較復(fù)雜的,另外,它也依賴于背后的仿真平臺(tái)提供的大量的庫(kù)文件,所以,我們一般需要對(duì)testbench的代碼進(jìn)行構(gòu)建,輸出各種我們需要的環(huán)境。

首先要對(duì)DUT代碼進(jìn)行編譯,一般是SystemVerilog代碼。

一般會(huì)使用 Makefile,需要編寫相應(yīng)的makefile,主要是需要將用到的UVM的動(dòng)態(tài)庫(kù)和引用資源進(jìn)行構(gòu)建。VCS有一些針對(duì)UVM的支撐庫(kù)。

仿真:

直接調(diào)用VCS的仿真,有低功耗的仿真模式可選

波形分析:

輸出波形,用于Verdi波形調(diào)試

代碼覆蓋率統(tǒng)計(jì):

統(tǒng)計(jì)測(cè)試的代碼覆蓋率

……

1.2.3:運(yùn)行

在運(yùn)行期,為了保證示例可以并行執(zhí)行,一般會(huì)使用HPC集群環(huán)境。我們可以使用LSF集群管理,通過 bsub 來(lái)將相應(yīng)的任務(wù),提交到HPC中運(yùn)行。

比如:

‘一般會(huì)把任務(wù)分為多條,按順序?qū)⑷蝿?wù)放入同一個(gè)隊(duì)列,保證先后次序

bsub -n 1 -M 20480 -q dv_test -Is "上面封裝的命令,完成編譯或仿真或波形分析的功能"

以上是運(yùn)算支撐最基本的要求。詳細(xì)的實(shí)現(xiàn),我們后面會(huì)展開給個(gè)實(shí)例來(lái)講。

二:位流驗(yàn)證

對(duì)于位流驗(yàn)證,我們今天要講的主要是 FPGA的EDA工具測(cè)試,在EDA工具的Flow已基本成形的情況下,就可以開始搭建位流驗(yàn)證平臺(tái)了,用于回歸/驗(yàn)證EDA工具的功能。

2.1:流程圖

e5ce7960-201e-11f0-9310-92fbcf53809c.jpg

我們先來(lái)解釋一下上面的典型流程:

測(cè)試用例RTL文件

使用FPGA的器件的用例。測(cè)試用例文件,一般是DeviceModel提供的一些適合于驗(yàn)證功能的標(biāo)準(zhǔn)用例。作為待測(cè)用例。(這些用例,一般是由簡(jiǎn)到繁)

EDA Flow

FPGA的軟件工具的運(yùn)行flow,在自動(dòng)化運(yùn)行時(shí),一般是采用無(wú)界面的tcl命令來(lái)執(zhí)行。

這里需要保留多個(gè)輸出:

綜合/映射后的網(wǎng)表:這是針對(duì)所有Primitve的電路實(shí)現(xiàn),可以理解為羅列出,我們的設(shè)計(jì)最終實(shí)際用到了哪些邏輯的實(shí)例。就是可以看到設(shè)計(jì)最終使用的Instance,有明確的標(biāo)識(shí)名稱。

Route后輸出的路由文件:這個(gè)用來(lái)定位所有實(shí)例Instance在芯片中實(shí)際的物理位置。也就是Impl后,實(shí)際上物理芯片上使用的邏輯塊和相應(yīng)的布線。結(jié)合上一步的輸出,可以明確查到實(shí)例具體的位置,以及走線的路徑。

Bitstream 位流:這個(gè)是生成的bitstream,這個(gè)作為Dut的輸入,直接加載到測(cè)試平臺(tái)(如:VCS),加上提前準(zhǔn)備好的芯片的原生的仿真庫(kù),仿真平臺(tái)可以實(shí)際的模擬芯片的運(yùn)行,并且得到相應(yīng)的運(yùn)行中結(jié)果和中間輸出。

用例的TestBench

根據(jù)實(shí)際情況,生成的tb文件。包含激勵(lì),定位,比較的邏輯。

測(cè)試用例表:原始的測(cè)試用例

Primitive行為模型:明確這個(gè)Primitive的行為是什么,在尋找參考模型時(shí),需要找到對(duì)應(yīng)的參考實(shí)現(xiàn)。

解析輸入/輸出管腳:找出輸入IO 和 輸出IO,這個(gè)可以在Route 中找到。

編寫用例參考模型:根據(jù)Primitive的行為和你的設(shè)計(jì)用例,寫等價(jià)的功能。注意,這里的等價(jià)模型,一般是仿真平臺(tái)直接執(zhí)行出結(jié)果(并不是基于FPGA的邏輯電路來(lái)執(zhí)行)。

設(shè)計(jì)輸入的激勵(lì)信號(hào):設(shè)計(jì)測(cè)試的輸入數(shù)據(jù)和相應(yīng)的序列。

編寫比較函數(shù):看如何比較兩者的輸出。對(duì)于返回值 ,可以簡(jiǎn)單比較輸出。對(duì)于時(shí)序,可能需要檢查波形,一般是選擇幾個(gè)關(guān)鍵的點(diǎn),不可能全部檢查。

位流測(cè)試平臺(tái)

結(jié)合位流文件,仿真庫(kù),testbech ,使用UVM平臺(tái)進(jìn)行實(shí)際的運(yùn)行。完成代碼的編譯,構(gòu)建,仿真,結(jié)果比較的功能。

測(cè)試結(jié)果

實(shí)際比較結(jié)果,將結(jié)果輸出到指定位置,并形成報(bào)告。

對(duì)于失敗的報(bào)告,還可以通過查看其它輸出(日志,波形等),具體進(jìn)行問題定位。

對(duì)于覆蓋度的統(tǒng)計(jì),可以查看目前回歸用例的覆蓋度,進(jìn)而逐漸提升。

2.2:驗(yàn)證的問題

如果2.1驗(yàn)證出問題,那可能有哪些問題呢?我們可以看看。

文件的問題
可能是測(cè)試用例的問題,route輸出的問題(net丟失之類),postmap輸出的問題……

IOPackage的問題
可能是IO Pad的錯(cuò)誤,這可能是IO Package的問題??赡苁禽斎隤ad,也可能是輸出Pad不對(duì)。IO配置不對(duì),配置信號(hào)不對(duì),綁定約束的處理問題。

路由的問題
提供的switch box 的連接不對(duì)。

邏輯單元不對(duì)
模塊的配置有問題,配置問題導(dǎo)致功能出錯(cuò),模塊到Switch box的連線問題

其它
DeviceModel建模的問題,也有可能是Primitive實(shí)現(xiàn)的問題(硬件方面的)

具體的定位,可以通過源代碼,PostMap文件,route文件來(lái)查到具體的實(shí)例,然后在VCS的仿真器上,查看具體時(shí)點(diǎn)的輸出,這里可能是需要使用工具查看波形。

route文件,postmap文件(這個(gè)一般是打平的flattern文件)的具體格式就不方便給出樣例了,這個(gè)每家FPGA的格式會(huì)有所不同。

三:FPGA芯片驗(yàn)證方法

我們?cè)O(shè)計(jì)出來(lái)的FPGA芯片,是否能滿足預(yù)期。我們要保證我們提供給用戶的FPGA上每一個(gè)器件的功能是符合預(yù)期的,也就是單個(gè)tile的功能,以及Tile之間的連接,整體芯片的邏輯是完全正常的。

所以,我們需要針對(duì)單Tile,多Tile,fullchip做位流驗(yàn)證。方法就是使用上面的位流驗(yàn)證平臺(tái)。針對(duì)這三種方法,我們分別來(lái)說明,說明應(yīng)該如何設(shè)計(jì)樣例 ,來(lái)達(dá)成相應(yīng)的結(jié)果。

3.1:?jiǎn)蜹ile位流驗(yàn)證

對(duì)于每一種Tile做單獨(dú)的測(cè)試(所有的Primitive),比如:CLB(LUT,CLA,DFF,SFTR……),CMT,IO,DSP,BRAM,EMRAM,F(xiàn)IFO,OBUF,IBUF,IOBUF,……

并且也包括Tile內(nèi)部的連接信號(hào)路由的驗(yàn)證。

我們以CLB為例:

對(duì)于CLB,里面主要涉及不同的LUT,DFF,CLA,SFTR,需要設(shè)計(jì)一系列的用例,去覆蓋相關(guān)的器件使用。

我們以最簡(jiǎn)單的 Lut2為例,來(lái)看看如何構(gòu)建測(cè)試用例,參考用例,激勵(lì)數(shù)據(jù),結(jié)果比較。

3.1.1:CLB —— LUT2

首先,我們要了解Lut2的原理,它是由2輸入1輸出組成,可以完成 2個(gè)單bit輸入1個(gè)輸出的任何邏輯。比如:a & b,a | b , a xor b。

一般來(lái)說,廠商會(huì)提供 LUT2的Primitive IP,我們假如提供的IP就叫做 YY_LUT2。

那么,對(duì)于Dut,那就很簡(jiǎn)單了。注意 a & b 的真值 表是 1000b 也就是 h8

Dut的設(shè)計(jì)代碼:

moudule And2(

input a,

input b,

output result

);

YY_LUT2 #(.INIT(4'h8)) lut2(.Io(a), .I1(b), .O(result));

end module

將該代碼使用 eda flow 執(zhí)行,生成 bitstream。

我們來(lái)看一下參考用例的寫法:

module RefModel(input A,

input B,

output Y);

assign Y = A & B ; // 參考模型的布爾函數(shù)

endmodule

以上的代碼,仿真工具在運(yùn)行時(shí),會(huì)在每個(gè)仿真周期,根據(jù)輸入數(shù)據(jù)的變化來(lái)重新輸出結(jié)果。對(duì)應(yīng)的邏輯表達(dá)式的運(yùn)算是在仿真器中執(zhí)行(實(shí)際上就是語(yǔ)法解析,然后交給CPU來(lái)執(zhí)行了)。

當(dāng)然,你的示例還可以是 A | B,A xor B,若干的樣例。

另外:

INIT=0 IS_C_INVERTED = 0 IS_CLR_INVERTED=1 可以驗(yàn)證 DFFCE 的功能

1bit加,1bit 減 可以驗(yàn)證CLA功能

wclk極性不反轉(zhuǎn) 驗(yàn)證 SFTR32

將INIT、IC_C_INVERTED、IS_PRE(CLR/R/S/)_INVERTED的值進(jìn)行隨機(jī),inst約束到FFA0 驗(yàn)證 LPQCE

3.1.2:DSP

我們?cè)僖訢SP為例,選擇合適的用例(針對(duì)DSPX18 的 2個(gè)輸入乘法)

直接調(diào)用 YY_DSP48_CPLX18 ,具體就不寫了。

具體如何設(shè)置用例,需要根據(jù)DSP48_CPLX18的輸入?yún)?shù)來(lái)設(shè)置,盡量保證相關(guān)的參數(shù)可覆蓋。

3.2:多Tile位流驗(yàn)證

需要驗(yàn)證 Tile間路由的正確性,在多個(gè)tile分配資源,全局信號(hào),時(shí)鐘可以正常共享,跨tile的優(yōu)化結(jié)果符合預(yù)期。主要是對(duì)一組tile,某個(gè)功能區(qū)域進(jìn)行驗(yàn)證。驗(yàn)證多個(gè)tile的功能及其之間的交互??梢杂脕?lái)驗(yàn)證協(xié)同工作,比如:DSP 與 BRAM的協(xié)同工作情況,驗(yàn)證范圍有限,無(wú)法覆蓋全芯片的全局資源,比如:時(shí)鐘網(wǎng)絡(luò),全局布線等。

需要構(gòu)造如下用例:

長(zhǎng)路徑信號(hào)傳輸:

Tile間級(jí)聯(lián):多個(gè)tile之間的邏輯級(jí)聯(lián)(比如:多級(jí)加法器)

Tile內(nèi)外通信:在不同Tile實(shí)現(xiàn)的模塊之間進(jìn)行通信(如:FIFO,AXI總線)

3.3:全芯片位流驗(yàn)證

對(duì)于全局資源(如:時(shí)鐘,全局線)的使用進(jìn)行驗(yàn)證。關(guān)注邊界行為(I/O引腳,DDR,PCIe)。

需要構(gòu)建的用例 :

設(shè)計(jì)一條覆蓋盡可能多Tile的信號(hào)路徑,從一個(gè)邊界Tile傳播到對(duì)角線另一側(cè)。

在設(shè)計(jì)中啟動(dòng)全局時(shí)鐘。

包含外部接口(I/O,DDR,PCIe)在設(shè)計(jì)中。

選用的用例,一般會(huì)是一些經(jīng)典的電路設(shè)計(jì),比如:FPGA一般會(huì)和閃存配合使用,那我們就選用一些標(biāo)閃的閃存器件來(lái)搭建用例(因?yàn)殚W存用例是有公開的行為模型和仿真庫(kù)的)

因?yàn)槭轻槍?duì)整個(gè)芯片的測(cè)試,所以,激勵(lì)數(shù)據(jù),應(yīng)該采用jtag方式輸入,涉及到PRAM的操作。相對(duì)比較復(fù)雜,這里不再展開細(xì)說。

3.4:代碼的測(cè)試覆蓋率

測(cè)試是否有效,主要看覆蓋率,所以,在仿真運(yùn)行中輸出測(cè)試覆蓋率,是非常重要的指標(biāo)。

覆蓋率報(bào)告通常包括以下信息:

總體覆蓋率

顯示整個(gè)設(shè)計(jì)的總體覆蓋率(如行覆蓋率、分支覆蓋率等)。

模塊級(jí)覆蓋率

顯示每個(gè)模塊的覆蓋率詳情。

代碼行覆蓋率

顯示每一行代碼是否被執(zhí)行。

分支覆蓋率

顯示每個(gè)分支是否被覆蓋。

條件覆蓋率

顯示每個(gè)布爾表達(dá)式的條件組合是否被覆蓋。

狀態(tài)機(jī)覆蓋率

顯示狀態(tài)機(jī)的所有狀態(tài)和狀態(tài)轉(zhuǎn)換是否被覆蓋。

翻轉(zhuǎn)覆蓋率

顯示信號(hào)是否發(fā)生了 0 到 1 或 1 到 0 的翻轉(zhuǎn)。

代碼覆蓋度能夠查看測(cè)試的完整度。是非常重要的參考指標(biāo)。

最后我們來(lái)看看,要搭建一個(gè)自動(dòng)化的驗(yàn)證平臺(tái),需要做一些什么樣的工作:

這部分是一個(gè)封裝動(dòng)作,和驗(yàn)證本身的關(guān)系并不是很大,但如果對(duì)驗(yàn)證的細(xì)節(jié)不清楚,也不能搭建一個(gè)好的,可擴(kuò)展的平臺(tái),因?yàn)槠脚_(tái)的功能也不是一成不變的,需要有一個(gè)演進(jìn)的過程。如果有好的設(shè)計(jì),自然最佳。

四:位流驗(yàn)證的自動(dòng)化平臺(tái)

4.1:平臺(tái)架構(gòu)

e5e10256-201e-11f0-9310-92fbcf53809c.jpg

這軟件EDA的位流驗(yàn)證的架構(gòu)。如果驗(yàn)證是上板驗(yàn)證(生產(chǎn)測(cè)試中心)。那位流的運(yùn)行就不是在仿真環(huán)境,而是在板上的物理芯片運(yùn)行,然后想辦法把物理芯片的運(yùn)行結(jié)果,按時(shí)序取回,然后進(jìn)行對(duì)比。

4.2:資源管理

需要管理的資源:

平臺(tái)的代碼

主要是流程控制的代碼,Python,Shell腳本,主要是存放到Git中,應(yīng)該需要管理版本,

一般會(huì)是解釋性腳本語(yǔ)言,不會(huì)有編譯/構(gòu)建的過程。

測(cè)試工程

每一次回歸測(cè)試,我們定義為一個(gè)工程。而工程會(huì)描述所有運(yùn)行的輸入,輸出。

工程的定義:針對(duì)某個(gè)芯片,某種驗(yàn)證方式,某個(gè)器件的測(cè)試,我們認(rèn)為是一個(gè)驗(yàn)證工程。

待驗(yàn)證芯片——芯片的系列(架構(gòu)),具體輸出的芯片版本號(hào)(鎖定的版本)

待驗(yàn)證的內(nèi)容—— FullChip,或者 TILE_CLB_LUT2,或者 BRAM & DSP 的聯(lián)合工程。

對(duì)應(yīng)的仿真庫(kù)——不同驗(yàn)證點(diǎn),需要提供不同的仿真庫(kù),比如 fullchip和單tile需要的仿真庫(kù)是不同的。但相對(duì)固定,基本上是提前準(zhǔn)備好的。但是如果芯片的架構(gòu)發(fā)生變化,需要做相應(yīng)的更換。也可以理解芯片系列的版本發(fā)生變化。

對(duì)應(yīng)的待測(cè)式DUT——待測(cè)試的DUT的測(cè)試用例。

DUT 對(duì)應(yīng)的RefModel—— 對(duì)應(yīng)的參考模型。

相關(guān)的配置信息——可能存在一些配置,可能待測(cè)內(nèi)容不同,配置會(huì)有所不同。略

輸出目錄——包括位流輸出目錄(包括一些中間文件輸出),最終輸出目錄。

DUT Testbench

每個(gè)待測(cè)工程,都需要有一個(gè)TestBench 代碼,TestBench 用來(lái)定義整個(gè)測(cè)試的過程。包括如何使用生成的位流進(jìn)行仿真運(yùn)行,如何調(diào)用RefModel(Golden case)獲得結(jié)果,兩者如何進(jìn)行比較,如何輸出。

注意,不同測(cè)試工程,可能代碼會(huì)有所不同。

測(cè)試用例

測(cè)試用例是針對(duì)芯片待測(cè)單元的調(diào)用??赡苄枰采w待測(cè)單元的大多數(shù)輸入組合。這些用例需要進(jìn)行統(tǒng)一管理,在需要時(shí),在測(cè)試工程中配置。

比如:針對(duì) LUT1的測(cè)試用例 (只需要初始化一下真值表即可)

YY_LUT1 # ( INIT (2'h3) inst_lut1() // o = a

參考模型代碼

針對(duì)測(cè)試用例,與之對(duì)應(yīng)的另外一種實(shí)現(xiàn)(不依賴于FPGA),直接在VCS中運(yùn)行。如果需要考慮時(shí)序,該模型代碼需要打拍。

比如:assign o = a 就是針對(duì)上面的LUT1用例的Golden case。

其它配置

配置EDA工具的運(yùn)行環(huán)境,這個(gè)是可以按需配置,因?yàn)閷?duì)于EDA,研發(fā)每天都會(huì)有新的版本。

4.3:調(diào)度平臺(tái)

因?yàn)樾枰詣?dòng)化,必須要有調(diào)度,這樣可以定時(shí)自動(dòng)執(zhí)行。

可以通過腳本控制執(zhí)行的入口和過程,控制超時(shí)時(shí)間,控制運(yùn)行的隊(duì)列(串行還是并行),可以將大任務(wù)發(fā)到計(jì)算集群。

調(diào)度很簡(jiǎn)單,一般使用 Jekins的 Pipeline即可,Jekins支持Shell,可以進(jìn)行任務(wù)的編排。

4.4:位流生成

位流生成,就是使用j最新EDA和相應(yīng)的flow tcl ,用來(lái)生成位流。

位流生成需要注意幾個(gè)點(diǎn):

可能會(huì)添加固定的物理約束,簡(jiǎn)化輸出,明確實(shí)際的 IOPAD。

4.5:仿真運(yùn)行

對(duì)于test bencch 運(yùn)行,會(huì)有多個(gè)步驟。

激勵(lì)數(shù)據(jù)的處理

這里要看一下,是否需要形成有針對(duì)性的激勵(lì)數(shù)據(jù)??赡芎臀恢棉D(zhuǎn)換有關(guān)(實(shí)際位置可以通過位流輸出的 instance和 route信息,獲取實(shí)際的位置信息)。

test bench 代碼編譯

針對(duì) test bench代碼,建議采用makefile進(jìn)行編譯/構(gòu)建,這樣比較容易針對(duì)VCS進(jìn)行動(dòng)態(tài)鏈接和引用,也定義輸出的動(dòng)作。

test bech 仿真運(yùn)行

使用仿真平臺(tái),輸入激勵(lì),進(jìn)行仿真,輸出波形,輸出代碼覆蓋度。

對(duì)Golden Case 進(jìn)行運(yùn)行,輸入激勵(lì),執(zhí)行輸出。

兩者進(jìn)行比較,在仿真log中輸出

4.6:結(jié)果輸出

收集結(jié)果,確認(rèn)是否成功,輸出最終報(bào)告。

可能還會(huì)輸出一些必要的數(shù)據(jù),波形,代碼覆蓋度之類。

五:其它

5.1:硬件設(shè)計(jì)驗(yàn)證

對(duì)于硬件部的位流驗(yàn)證,實(shí)際上基本上是一致的。不同之處主要有:

1:在EDA的位流生成功能不成熟前,需要有其它方式生成位流。

2:硬件驗(yàn)證不通過的情況,會(huì)關(guān)注硬件本身的設(shè)計(jì),而不是位流的生成。關(guān)注點(diǎn)會(huì)有所不同。

5.2:生產(chǎn)測(cè)試中心位流驗(yàn)證

對(duì)于生產(chǎn)測(cè)試中心,需要實(shí)際上板測(cè)試。所以。

1:位流需要download到實(shí)際芯片上運(yùn)行,激勵(lì)需要實(shí)際輸入到芯片。

2:參考模型與軟件一樣,但注意,大多數(shù)時(shí)候要考慮時(shí)序,而不是簡(jiǎn)單的組合邏輯。

3:對(duì)于實(shí)際芯片的運(yùn)行輸入/輸出,一般需要做特殊處理,比如:設(shè)計(jì)專用電路,完成激勵(lì)輸入,設(shè)計(jì)驅(qū)動(dòng)程序?qū)⑤敵鰯?shù)據(jù)寫入本地磁盤,然后通過磁盤文件獲取結(jié)果,進(jìn)行比較。

輸出的文件需要表達(dá)時(shí)序信息。

4:生產(chǎn)測(cè)試發(fā)現(xiàn)問題,關(guān)注的是硬件的可靠性。

原文鏈接:https://community.sslcode.com.cn/6789d33a59bcf8384aa65e71.html

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

    關(guān)注

    1642

    文章

    21918

    瀏覽量

    611966
  • 芯片
    +關(guān)注

    關(guān)注

    459

    文章

    51927

    瀏覽量

    433655
  • eda
    eda
    +關(guān)注

    關(guān)注

    71

    文章

    2852

    瀏覽量

    175744
  • 數(shù)字電路
    +關(guān)注

    關(guān)注

    193

    文章

    1636

    瀏覽量

    81430

原文標(biāo)題:FPGA EDA軟件的位流驗(yàn)證

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    驗(yàn)證中的FPGA原型驗(yàn)證 FPGA原型設(shè)計(jì)面臨的挑戰(zhàn)是什么?

    和性能。? 由于硬件復(fù)雜性不斷增加,需要驗(yàn)證的相關(guān)軟件數(shù)量不斷增加,因此它今天的使用范圍更加廣泛。? 為什么公司使用FPGA原型?? FPGA已經(jīng)被用于
    發(fā)表于 07-19 16:27 ?2073次閱讀

    FPGA設(shè)計(jì)新需求走熱 EDA戰(zhàn)況升溫

    可編程邏輯廠商逐步開始從可編程邏輯芯片供應(yīng)商向可編程邏輯系統(tǒng)商完成華麗轉(zhuǎn)身,正對(duì)EDA工具供應(yīng)商提出更高的要求。鑒于日益升溫的FPGA市場(chǎng),EDA業(yè)者加碼布局,加速FPGA設(shè)計(jì)進(jìn)程、提
    發(fā)表于 04-17 10:38 ?1898次閱讀

    設(shè)計(jì)與驗(yàn)證Verilog HDL FPGA設(shè)計(jì)與驗(yàn)證的好書

    本帖最后由 eehome 于 2013-1-5 10:01 編輯 EDA先鋒工作室的精品書籍,國(guó)內(nèi)少有的系統(tǒng)講述FPGA設(shè)計(jì)和驗(yàn)證的好書,特別是驗(yàn)證部分很精華,現(xiàn)在和大家分享,同
    發(fā)表于 08-02 14:54

    FPGA設(shè)計(jì)的仿真驗(yàn)證概述

    仿真驗(yàn)證概述本文節(jié)選自特權(quán)同學(xué)的圖書《FPGA設(shè)計(jì)實(shí)戰(zhàn)演練(邏輯篇)》配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt 仿真測(cè)試是FPGA設(shè)計(jì)流程中必不可少的步驟
    發(fā)表于 04-10 06:35

    基于EDA技術(shù)的FPGA該怎么設(shè)計(jì)?

    對(duì)傳統(tǒng)電子系統(tǒng)設(shè)計(jì)方法與現(xiàn)代電子系統(tǒng)設(shè)計(jì)方法進(jìn)行了比較,引出了基于EDA技術(shù)的現(xiàn)場(chǎng)可編程門陣列(FPGA)電路,提出現(xiàn)場(chǎng)可編程門陣列(FPGA)是近年來(lái)迅速發(fā)展的大規(guī)模可編程專用集成電路(ASIC
    發(fā)表于 09-03 06:17

    基于EDA技術(shù)的FPGA該怎么設(shè)計(jì)?

    物聯(lián)網(wǎng)、人工智能、大數(shù)據(jù)等新興技術(shù)的推動(dòng),集成電路技術(shù)和計(jì)算機(jī)技術(shù)得到蓬勃發(fā)展。電子產(chǎn)品設(shè)計(jì)系統(tǒng)日趨數(shù)字化、復(fù)雜化和大規(guī)模集成化,各種電子系統(tǒng)的設(shè)計(jì)軟件應(yīng)運(yùn)而生。在這些專業(yè)化軟件中,EDA
    發(fā)表于 10-08 08:02

    EDA軟件的安裝與配置(僅針對(duì)開發(fā)Altera FPGA)

    公欲善其事,必先利其器。一個(gè)良好的EDA開發(fā)環(huán)境,是您開發(fā)FPGA以及nios的得力助手。但不少朋友在安裝、配置EDA軟件環(huán)境的過程中,就遇到一些麻煩;所以本人就寫了如下一點(diǎn)文字
    發(fā)表于 07-20 09:28 ?67次下載

    EDA Tools in FPGA

    EDA Tools in FPGA用于開發(fā)FPGAEDA工具:隨著集成電路和計(jì)算機(jī)技術(shù)的發(fā)展,越來(lái)越多的公司不斷的開發(fā)出更加好用的EDA
    發(fā)表于 12-05 16:10 ?0次下載

    常用EDA軟件介紹

    6.1 Synopsys EDA軟件6.2 Cadence EDA軟件6.3 Tanner EDA軟件
    發(fā)表于 09-03 20:48 ?164次下載

    基于多種EDA工具的FPGA設(shè)計(jì)

    基于多種EDA工具的FPGA設(shè)計(jì) 介紹了利用多種EDA工具進(jìn)行FPGA設(shè)計(jì)的實(shí)現(xiàn)原理及方法,其中包括設(shè)計(jì)輸入、綜合、功能仿真、實(shí)現(xiàn)、時(shí)序仿真、配置下載等具體內(nèi)容。并以實(shí)
    發(fā)表于 05-14 18:38 ?978次閱讀
    基于多種<b class='flag-5'>EDA</b>工具的<b class='flag-5'>FPGA</b>設(shè)計(jì)

    芯片設(shè)計(jì)EDA軟件的使用

    什么是 EDA 軟件 EDA(Electronic Design Automation)是電子設(shè)計(jì)自動(dòng)化軟件的簡(jiǎn)稱,EDA 產(chǎn)業(yè)是集成電路設(shè)
    的頭像 發(fā)表于 10-30 13:30 ?2687次閱讀

    什么是板級(jí)EDA軟件 eda器件分幾類 數(shù)字EDA和模擬EDA的區(qū)別

    板級(jí)EDA軟件(PCB EDA軟件)也是一種電子設(shè)計(jì)自動(dòng)化(EDA軟件,它是用于電子電路設(shè)計(jì)中
    發(fā)表于 05-03 05:42 ?7327次閱讀

    使用加密和身份驗(yàn)證來(lái)保護(hù)UltraScale/UltraScale+ FPGA比特

    電子發(fā)燒友網(wǎng)站提供《使用加密和身份驗(yàn)證來(lái)保護(hù)UltraScale/UltraScale+ FPGA比特.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 17:14 ?1次下載
    使用加密和身份<b class='flag-5'>驗(yàn)證</b>來(lái)保護(hù)UltraScale/UltraScale+ <b class='flag-5'>FPGA</b>比特<b class='flag-5'>流</b>

    原型平臺(tái)是做什么的?proFPGA驗(yàn)證環(huán)境介紹

    proFPGA是mentor的FPGA原型驗(yàn)證平臺(tái),當(dāng)然mentor被西門子收購(gòu)之后,現(xiàn)在叫西門子EDA。
    的頭像 發(fā)表于 01-22 09:21 ?2006次閱讀
    原型平臺(tái)是做什么的?pro<b class='flag-5'>FPGA</b><b class='flag-5'>驗(yàn)證</b>環(huán)境介紹

    智多晶EDA工具HqFpga軟件實(shí)用小功能

    智多晶EDA工具HqFpga軟件實(shí)用小功能增加啦,支持生成可調(diào)用網(wǎng)表的功能和ballmap功能。下面來(lái)給大家講解一下如何通過HqFpga軟件
    的頭像 發(fā)表于 12-05 10:23 ?761次閱讀
    智多晶<b class='flag-5'>EDA</b>工具Hq<b class='flag-5'>Fpga</b><b class='flag-5'>軟件</b>實(shí)用小功能