Intro
以Proj1-GSIM為基礎,將其加上AXI interface。這邊,我們以wrapper的概念實作,新建一個GSIM_axi_wrapper (GAW) module,將GSIM包起來,由GAW代為處理與GSIM的I/O,及AXI interface的溝通。GAW為Slave介面,也就是需要其它Master處理GAW與DDR3之間的通訊,因此我們將test bench (sim_tb_top.v)當作Master(假的processor),代為處理
Content
Wrapper Design
在狀態機的設計上,我們將Write和Read Channel分開撰寫,讓他們可以獨立運作,這樣在計算完畢後,可以進行多次讀取。但是在Write Input後,進入計算階段時,Read Channel的signal[rvalid]不會被asserted,即計算完成以前無法進行讀取。
Write Channel
awvalid
Write Channel 一開始會進入初始狀態[WRT_ADDR],等待master的訊號。一但收到signal[awvalid],就會進入[WRT_DATA]的狀態,準備接收資料
Receive finish
目前設計是以收到signal[wlast],視為完成資料輸入
bready
當資料完成輸入後,進入[WRT_RESP]的狀態,通知master,資料已完成輸入。事實上,此時GSIM也只是進入計算狀態,還沒完成計算。
Read Channel
arvalid
Read Channel 一開始會進入初始狀態[RD_ADDR],等待master的訊號。一但收到signal[arvalid],就會進入[RD_DATA]的狀態,準備讀取資料。
bready
當進入[RD_DATA]的狀態,我們會先判斷GSIM module是否已經輸出16筆資料,若是的話,就可以開始做資料輸出,將signal[bvalid] assert,等待master signal[bready]。
APR
Pre-CTS
Before Optimize Design
WNS: -6.128
TNS: 108.599
Density: 89.291%
After Optimize Design
WNS: 1.372
TNS: 0.0
Density: 84.901%
Post-CTS
Before Optimize Design
WNS: 1.338
TNS: 0.0
Density: 84.984%
After Optimize Design
WNS: 1.332
TNS: 0.0
Density: 85.128%
After Optimize Design - Hold
WNS: 0.004
TNS: 0.0
Density: 85.128%
Route
Before Optimize Design
WNS: 1.361
TNS: 0.0
Density: 85.128%
After Optimize Design
WNS: 1.115
TNS: 0.0
Density: 85.252%
After Optimize Design - Hold
WNS: 0.014
TNS: 0.0
Density: 85.252%
沒有留言:
張貼留言