@@ -59,14 +59,19 @@ func (c *Core) WriteMemory(x int, y int, data uint32, baseAddr uint32) {
5959 if x == int (c .state .TileX ) && y == int (c .state .TileY ) {
6060 c .state .Memory [baseAddr ] = data
6161 //fmt.Printf("Core [%d][%d] write memory[%d] = %d\n", c.state.TileX, c.state.TileY, baseAddr, c.state.Memory[baseAddr])
62- Trace ("Memory" ,
63- "Behavior" , "WriteMemory" ,
64- "Time" , float64 (c .Engine .CurrentTime ()* 1e9 ),
65- "Data" , data ,
66- "X" , x ,
67- "Y" , y ,
68- "Addr" , baseAddr ,
69- )
62+ timeValue := float64 (c .Engine .CurrentTime () * 1e9 )
63+ if TraceEnabled () {
64+ Trace ("Memory" ,
65+ "Behavior" , "WriteMemory" ,
66+ "Time" , timeValue ,
67+ "Data" , data ,
68+ "X" , x ,
69+ "Y" , y ,
70+ "Addr" , baseAddr ,
71+ )
72+ } else {
73+ ObserveMemory ("WriteMemory" , timeValue , x , y , "" , "" )
74+ }
7075 } else {
7176 panic (fmt .Sprintf ("Invalid Tile: Expect (%d, %d),but get (%d, %d)" , c .state .TileX , c .state .TileY , x , y ))
7277 }
@@ -85,6 +90,7 @@ func (c *Core) MapProgram(program interface{}, x int, y int) {
8590 panic ("MapProgram expects core.Program type" )
8691 }
8792 c .state .PCInBlock = - 1
93+ c .state .CurrentCycle = 0
8894 c .state .TileX = uint32 (x )
8995 c .state .TileY = uint32 (y )
9096}
@@ -96,13 +102,15 @@ func (c *Core) Tick() (madeProgress bool) {
96102 // madeProgress = c.emu.runRoutingRules(&c.state) || madeProgress
97103 madeProgress = c .runProgram () || madeProgress
98104 madeProgress = c .doSend () || madeProgress
105+ c .state .CurrentCycle ++
99106 return madeProgress
100107}
101108
102109func makeBytesFromUint32 (data uint32 ) []byte {
103110 return []byte {byte (data >> 24 ), byte (data >> 16 ), byte (data >> 8 ), byte (data )}
104111}
105112
113+ //nolint:gocyclo
106114func (c * Core ) doSend () bool {
107115 madeProgress := false
108116 for i := 0 ; i < 8 ; i ++ { // only 8 directions
@@ -127,15 +135,20 @@ func (c *Core) doSend() bool {
127135 continue
128136 }
129137
130- Trace ("DataFlow" ,
131- "Behavior" , "Send" ,
132- slog .Float64 ("Time" , float64 (c .Engine .CurrentTime ()* 1e9 )),
133- "Data" , msg .Data .First (),
134- "Pred" , c .state .SendBufHead [color ][i ].Pred ,
135- "Color" , color ,
136- "Src" , msg .Src ,
137- "Dst" , msg .Dst ,
138- )
138+ timeValue := float64 (c .Engine .CurrentTime () * 1e9 )
139+ if TraceEnabled () {
140+ Trace ("DataFlow" ,
141+ "Behavior" , "Send" ,
142+ slog .Float64 ("Time" , timeValue ),
143+ "Data" , msg .Data .First (),
144+ "Pred" , c .state .SendBufHead [color ][i ].Pred ,
145+ "Color" , color ,
146+ "Src" , msg .Src ,
147+ "Dst" , msg .Dst ,
148+ )
149+ } else {
150+ ObserveDataFlow ("Send" , timeValue , "" , "" , string (msg .Src ), string (msg .Dst ))
151+ }
139152 c .state .SendBufHeadBusy [color ][i ] = false
140153 }
141154 }
@@ -156,15 +169,20 @@ func (c *Core) doSend() bool {
156169 return madeProgress
157170 }
158171
159- Trace ("Memory" ,
160- "Behavior" , "Send" ,
161- slog .Float64 ("Time" , float64 (c .Engine .CurrentTime ()* 1e9 )),
162- "Data" , c .state .SendBufHead [c .emu .getColorIndex ("R" )][cgra .Router ].First (),
163- "Pred" , c .state .SendBufHead [c .emu .getColorIndex ("R" )][cgra .Router ].Pred ,
164- "Color" , "R" ,
165- "Src" , msg .Src ,
166- "Dst" , msg .Dst ,
167- )
172+ timeValue := float64 (c .Engine .CurrentTime () * 1e9 )
173+ if TraceEnabled () {
174+ Trace ("Memory" ,
175+ "Behavior" , "Send" ,
176+ slog .Float64 ("Time" , timeValue ),
177+ "Data" , c .state .SendBufHead [c .emu .getColorIndex ("R" )][cgra .Router ].First (),
178+ "Pred" , c .state .SendBufHead [c .emu .getColorIndex ("R" )][cgra .Router ].Pred ,
179+ "Color" , "R" ,
180+ "Src" , msg .Src ,
181+ "Dst" , msg .Dst ,
182+ )
183+ } else {
184+ ObserveMemory ("Send" , timeValue , int (c .state .TileX ), int (c .state .TileY ), string (msg .Src ), string (msg .Dst ))
185+ }
168186 c .state .SendBufHeadBusy [c .emu .getColorIndex ("R" )][cgra .Router ] = false
169187 } else {
170188 msg := mem.ReadReqBuilder {}.
@@ -179,14 +197,19 @@ func (c *Core) doSend() bool {
179197 return madeProgress
180198 }
181199
182- Trace ("Memory" ,
183- "Behavior" , "Send" ,
184- slog .Float64 ("Time" , float64 (c .Engine .CurrentTime ()* 1e9 )),
185- "Data" , c .state .AddrBuf ,
186- "Color" , "R" ,
187- "Src" , msg .Src ,
188- "Dst" , msg .Dst ,
189- )
200+ timeValue := float64 (c .Engine .CurrentTime () * 1e9 )
201+ if TraceEnabled () {
202+ Trace ("Memory" ,
203+ "Behavior" , "Send" ,
204+ slog .Float64 ("Time" , timeValue ),
205+ "Data" , c .state .AddrBuf ,
206+ "Color" , "R" ,
207+ "Src" , msg .Src ,
208+ "Dst" , msg .Dst ,
209+ )
210+ } else {
211+ ObserveMemory ("Send" , timeValue , int (c .state .TileX ), int (c .state .TileY ), string (msg .Src ), string (msg .Dst ))
212+ }
190213 c .state .SendBufHeadBusy [c .emu .getColorIndex ("R" )][cgra .Router ] = false
191214 }
192215 }
@@ -198,6 +221,7 @@ func convert4BytesToUint32(data []byte) uint32 {
198221 return uint32 (data [0 ])<< 24 | uint32 (data [1 ])<< 16 | uint32 (data [2 ])<< 8 | uint32 (data [3 ])
199222}
200223
224+ //nolint:gocyclo
201225func (c * Core ) doRecv () bool {
202226 madeProgress := false
203227 for i := 0 ; i < 8 ; i ++ { //direction
@@ -226,15 +250,20 @@ func (c *Core) doRecv() bool {
226250 c .state .RecvBufHeadReady [color ][i ] = true
227251 c .state .RecvBufHead [color ][i ] = msg .Data
228252
229- Trace ("DataFlow" ,
230- "Behavior" , "Recv" ,
231- "Time" , float64 (c .Engine .CurrentTime ()* 1e9 ),
232- "Data" , msg .Data .First (),
233- "Pred" , c .state .RecvBufHead [color ][i ].Pred ,
234- "Src" , msg .Src ,
235- "Dst" , msg .Dst ,
236- "Color" , color ,
237- )
253+ timeValue := float64 (c .Engine .CurrentTime () * 1e9 )
254+ if TraceEnabled () {
255+ Trace ("DataFlow" ,
256+ "Behavior" , "Recv" ,
257+ "Time" , timeValue ,
258+ "Data" , msg .Data .First (),
259+ "Pred" , c .state .RecvBufHead [color ][i ].Pred ,
260+ "Src" , msg .Src ,
261+ "Dst" , msg .Dst ,
262+ "Color" , color ,
263+ )
264+ } else {
265+ ObserveDataFlow ("Recv" , timeValue , "" , "" , string (msg .Src ), string (msg .Dst ))
266+ }
238267
239268 c .ports [cgra .Side (i )].local .RetrieveIncoming ()
240269 madeProgress = true
@@ -254,30 +283,40 @@ func (c *Core) doRecv() bool {
254283 c .state .RecvBufHeadReady [c .emu .getColorIndex ("R" )][cgra .Router ] = true
255284 c .state .RecvBufHead [c .emu .getColorIndex ("R" )][cgra .Router ] = cgra .NewScalar (convert4BytesToUint32 (msg .Data ))
256285
257- Trace ("Memory" ,
258- "Behavior" , "Recv" ,
259- "Time" , float64 (c .Engine .CurrentTime ()* 1e9 ),
260- "Data" , msg .Data ,
261- "Src" , msg .Src ,
262- "Dst" , msg .Dst ,
263- "Pred" , c .state .RecvBufHead [c .emu .getColorIndex ("R" )][cgra .Router ].Pred ,
264- "Color" , "R" ,
265- )
286+ timeValue := float64 (c .Engine .CurrentTime () * 1e9 )
287+ if TraceEnabled () {
288+ Trace ("Memory" ,
289+ "Behavior" , "Recv" ,
290+ "Time" , timeValue ,
291+ "Data" , msg .Data ,
292+ "Src" , msg .Src ,
293+ "Dst" , msg .Dst ,
294+ "Pred" , c .state .RecvBufHead [c .emu .getColorIndex ("R" )][cgra .Router ].Pred ,
295+ "Color" , "R" ,
296+ )
297+ } else {
298+ ObserveMemory ("Recv" , timeValue , int (c .state .TileX ), int (c .state .TileY ), string (msg .Src ), string (msg .Dst ))
299+ }
266300
267301 c .ports [cgra .Router ].local .RetrieveIncoming ()
268302 madeProgress = true
269303 } else if msg , ok := item .(* mem.WriteDoneRsp ); ok {
270304 c .state .RecvBufHeadReady [c .emu .getColorIndex ("R" )][cgra .Router ] = true
271305 c .state .RecvBufHead [c .emu .getColorIndex ("R" )][cgra .Router ] = cgra .NewScalar (0 )
272306
273- Trace ("Memory" ,
274- "Behavior" , "Recv" ,
275- "Time" , float64 (c .Engine .CurrentTime ()* 1e9 ),
276- "Src" , msg .Src ,
277- "Dst" , msg .Dst ,
278- "Pred" , c .state .RecvBufHead [c .emu .getColorIndex ("R" )][cgra .Router ].Pred ,
279- "Color" , "R" ,
280- )
307+ timeValue := float64 (c .Engine .CurrentTime () * 1e9 )
308+ if TraceEnabled () {
309+ Trace ("Memory" ,
310+ "Behavior" , "Recv" ,
311+ "Time" , timeValue ,
312+ "Src" , msg .Src ,
313+ "Dst" , msg .Dst ,
314+ "Pred" , c .state .RecvBufHead [c .emu .getColorIndex ("R" )][cgra .Router ].Pred ,
315+ "Color" , "R" ,
316+ )
317+ } else {
318+ ObserveMemory ("Recv" , timeValue , int (c .state .TileX ), int (c .state .TileY ), string (msg .Src ), string (msg .Dst ))
319+ }
281320
282321 c .ports [cgra .Router ].local .RetrieveIncoming ()
283322 madeProgress = true
0 commit comments