網頁

2015年8月9日 星期日

Simple Memory Subsystem Simulation and Implement

Last Update: 2015/08/10 12:10+08



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%





沒有留言:

張貼留言