編 者 按
當(dāng)在SpinalHDL中調(diào)用別人的RTL代碼時(shí),需要采用BlackBox進(jìn)行封裝。對于大多數(shù)場景,想必小伙伴們都已輕車熟路。今天著重來看下當(dāng)RTL代碼的接口中存在數(shù)組形式的接口時(shí)如何處理。
合并數(shù)組和非合并數(shù)組 在開始之前先了解兩個(gè)概念:合并數(shù)組與非合并數(shù)組。在SystemVerilog中,關(guān)于可綜合的數(shù)組存在兩種形式:
wire [1:0][7:0] data0; //合并數(shù)組 wire [7:0] data1[1:0]; //非合并數(shù)組 ? 在仿真方面,合并數(shù)組是緊密排列的,而非合并數(shù)組則是按照內(nèi)存對齊的形式進(jìn)行排列(電路綜合中則無需考慮):
相應(yīng)的,合并數(shù)組則可以作為一個(gè)整體進(jìn)行賦值,而非合并數(shù)組則不可以:
而合并數(shù)組與非合并數(shù)組,則可以通過SystemVerilog中所提供的流操作符進(jìn)行相互轉(zhuǎn)換處理(是可以綜合的):
? ?
》BlackBox封裝
在了解了上面的背景知識(shí)之后,再來看如何這種數(shù)組類場景如何封裝至BlackBox。兩條規(guī)則:
1、BlackBox封裝針對數(shù)組類接口僅能支持合并數(shù)組類型。
2、當(dāng)接口中存在非合并數(shù)組接口時(shí)則需手動(dòng)封裝一層通過流操作符將非合并數(shù)組轉(zhuǎn)換為合并數(shù)組。
基于上面的規(guī)則,可以進(jìn)行數(shù)組接口的BlackBox封裝。
看下面的RTL代碼示例:
該模塊輸入,輸出均為一個(gè)合并數(shù)組,實(shí)現(xiàn)功能為兩個(gè)元素的數(shù)據(jù)交換。我們在進(jìn)行封裝BlackBox時(shí)可采用下面的封裝形式:
這里我們在BlackBox中定義接口時(shí)將合并數(shù)組data_in,data_out均定義為Bits類型,寬度為合并數(shù)組中所有元素的位寬總和(2*8).
(這里面的setInlineVerilog也可不寫,主要是懶得再創(chuàng)建一個(gè)SV文件了。關(guān)于這部分功能可參見《彩——看blackBox的inline功能》)
在進(jìn)行調(diào)用時(shí)就可以和其他調(diào)用沒有區(qū)別了:
進(jìn)行仿真:
結(jié)果非常符合預(yù)期:
審核編輯:湯梓紅
-
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151015 -
封裝
+關(guān)注
關(guān)注
126文章
7873瀏覽量
142893 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59759 -
代碼
+關(guān)注
關(guān)注
30文章
4779瀏覽量
68521 -
數(shù)組
+關(guān)注
關(guān)注
1文章
417瀏覽量
25939
原文標(biāo)題:驚!原來SpinalHDL中BlackBox封裝數(shù)組接口如此簡單
文章出處:【微信號(hào):Spinal FPGA,微信公眾號(hào):Spinal FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論