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

Subversion Repositories async_sdm_noc

[/] [async_sdm_noc/] [trunk/] [common/] [src/] [cell_lib.v] - Blame information for rev 6

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 wsong0210
// A synthesizable cell library for asynchronous logic
2
// author Wei Song, songw@cs.man.ac.uk
3
// the Advanced Processor Technology Group
4
// the School of Computer Science
5
// the Uniersity of Manchester
6
// 5th May, 2009
7
// a latch is added, 11/08/2010 songw@cs.man.ac.uk
8
 
9
 
10
module c2 (
11
     a0
12
    ,a1
13
    ,q
14
    );
15
 
16
input a0;
17
input a1;
18
output q;
19
 
20
AO222EHD U1 ( .A1(q), .A2(a0), .B1(q), .B2(a1), .C1(a0), .C2(a1), .O(q) );
21
 
22
endmodule
23
 
24
// the dc2 cell for Faraday 130nm Tech
25
module dc2 (
26
     d
27
    ,a
28
    ,q
29
    );
30
 
31
input d;
32
input a;
33
output q;
34
 
35
AO222HHD U1 ( .A1(q), .A2(d), .B1(q), .B2(a), .C1(d), .C2(a), .O(q) );
36
 
37
endmodule // dc2
38
 
39
module c2n (
40
     a0
41
    ,a1
42
    ,q
43
    );
44
 
45
input a0;
46
input a1;
47
output q;
48
 
49
   AO12EHD U1 (.B1(a1), .B2(q), .A1(a0), .O(q));
50
 
51
endmodule
52
 
53
 
54
module c2p (
55
     a0
56
    ,a1
57
    ,q
58
    );
59
 
60
input a0;
61
input a1;
62
output q;
63
 
64
 
65
OA12EHD U1 ( .B1(a1), .B2(q), .A1(a0), .O(q) );
66
 
67
endmodule
68
 
69
// for Faraday
70
module mutex ( a, b, qa, qb );
71
input a, b;
72
output qa, qb;
73
wire   qan, qbn;
74
 
75
ND2HHD U1 ( .I1(a), .I2(qbn), .O(qan) );
76
NR3HHD U2 ( .I1(qbn), .I2(qbn), .I3(qbn), .O(qb) );
77
NR3HHD U3 ( .I1(qan), .I2(qan), .I3(qan), .O(qa) );
78
ND2KHD U4 ( .I1(b), .I2(qan), .O(qbn) );
79
endmodule
80
 
81
 
82
module c2p1 (
83
             a0,
84
             a1,
85
             b,
86
             q
87
             );
88
   input a0, a1, b;
89
   output q;
90
 
91
  wire   n1;
92
 
93
  OA12EHD U2 ( .B1(a1), .B2(a0), .A1(q), .O(n1) );
94
  AO13EHD U1 ( .B1(a1), .B2(a0), .B3(b), .A1(n1), .O(q) );
95
 
96
//assign q = (a0&a1&b)|(a0&q)|(b0&q);
97
endmodule // c2p1                    
98
 
99
 
100
module tarb ( ngnt, ntgnt, req, treq );
101
  output [1:0] ngnt;
102
  input [1:0] req;
103
  input ntgnt;
104
  output treq;
105
  wire   n1, n2;
106
  wire   [1:0] mgnt;
107
 
108
  mutex ME ( .a(req[0]), .b(req[1]), .qa(mgnt[0]), .qb(mgnt[1]) );
109
  c2n C0 ( .a0(ntgnt), .a1(n2), .q(ngnt[0]) );
110
  c2n C1 ( .a0(ntgnt), .a1(n1), .q(ngnt[1]) );
111
  ND2HHD U1 ( .I1(n1), .I2(n2), .O(treq) );
112
  ND2DHD U2 ( .I1(ngnt[0]), .I2(mgnt[1]), .O(n1) );
113
  ND2DHD U3 ( .I1(ngnt[1]), .I2(mgnt[0]), .O(n2) );
114
endmodule
115
 
116
module cr_blk ( bo, hs, cbi, rbi, rg, cg );
117
  input cbi, rbi, rg, cg;
118
  output bo, hs;
119
  wire   blk;
120
 
121
  c2p1 XG ( .a0(rg), .a1(cg), .b(blk), .q(bo) );
122
  c2p1 HG ( .a0(cbi), .a1(rbi), .b(bo), .q(hs) );
123
  NR2EHD U1 ( .I1(rbi), .I2(cbi), .O(blk) );
124
 
125
endmodule
126
 
127
module dlatch ( q, qb, d, g);
128
   output q, qb;
129
   input  d, g;
130
 
131
   DLAHEHD U1 (.Q(q), .QB(qb), .D(d), .G(g));
132
endmodule // dlatch
133
 
134
module delay (q, a);
135
   input a;
136
   output q;
137
   BUFKHD U (.O(q), .I(a));
138
endmodule // delay
139
 
140
 

powered by: WebSVN 2.1.0

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