OpenCores
URL https://opencores.org/ocsvn/async_sdm_noc/async_sdm_noc/trunk

Subversion Repositories async_sdm_noc

[/] [async_sdm_noc/] [trunk/] [sdm/] [src/] [subc_ctl.v] - Blame information for rev 28

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 16 wsong0210
/*
2
 Asynchronous SDM NoC
3
 (C)2011 Wei Song
4
 Advanced Processor Technologies Group
5
 Computer Science, the Univ. of Manchester, UK
6
 
7
 Authors:
8
 Wei Song     wsong83@gmail.com
9
 
10
 License: LGPL 3.0 or later
11
 
12
 Sub-channel controller
13
 
14
 References
15
 * Lookahead pipelines
16 17 wsong0210
     Montek Singh and Steven M. Nowick, The design of high-performance dynamic asynchronous pipelines: lookahead style, IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 2007(15), 1256-1269. doi:10.1109/TVLSI.2007.902205
17 16 wsong0210
 * Channel slicing
18
     Wei Song and Doug Edwards, A low latency wormhole router for asynchronous on-chip networks, Asia and South Pacific Design Automation Conference, 2010, 437-443.
19
 
20
 For the detail structure, please refer to Section 7.1.1 of the thesis:
21
   Wei Song, Spatial parallelism in the routers of asynchronous on-chip networks, PhD thesis, the University of Manchester, 2011.
22
 
23
 History:
24
 05/05/2009  Initial version. <wsong83@gmail.com>
25
 22/10/2010  Make it more timing robust. <wsong83@gmail.com>
26
 24/05/2011  Clean up for opensource. <wsong83@gmail.com>
27
 
28
*/
29
 
30
// the router structure definitions
31
`include "define.v"
32
 
33
module subc_ctl (/*AUTOARG*/
34
   // Outputs
35
   nack, rt_rst,
36
   // Inputs
37
   ai2cb, ack, eof, rt_ra, rt_err, rst_n
38
   );
39
 
40
   input ai2cb;                 // the ack from output ports
41
   input ack;                   // the ack from the last stage of the input buffer
42
   input eof;                   // the eof bit from the last stage of the input buffer
43
   input rt_ra;                 // ack from the switch allocator
44
   input rt_err;                // invalid router decision
45
   input rst_n;                 // the global active low reset signal
46
   output nack;                 // the ack to the last stage of the input buffer
47
   output rt_rst;               // the router reset signal
48
 
49
   wire   csc;                  // internal wires to handle the CSC of the STG
50
   wire   acko;                 // the ack signal after the C2N gate
51
   wire   fend;                 // the end of frame indicator
52
   wire   acken;                // active low ack enable
53
 
54
`ifdef ENABLE_LOOKAHEAD
55 28 wsong0210
   c2n CD (.q(acko), .a(ai2cb), .b(ack)); // the C2N gate to avoid early withdrawal
56 16 wsong0210
`else
57
   assign acko = ai2cb;
58
`endif
59
 
60 28 wsong0210
   c2p  CEN  (.b(eof), .a(acko), .q(fend));
61 16 wsong0210
   c2   C    (.a0(rt_ra), .a1(fend), .q(csc));
62
   nand U1   ( acken, rt_ra, ~csc);
63
   nor  U2   ( rt_rst, fend, ~csc);
64
   nor  AG   ( nack, acko&(~eof), acken|(rt_err&ack), ~rst_n);
65
 
66
endmodule // subc_ctl
67
 
68
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.