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] - Diff between revs 28 and 37

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 28 Rev 37
Line 14... Line 14...
 
 
 History:
 History:
 05/05/2009  Initial version. <wsong83@gmail.com>
 05/05/2009  Initial version. <wsong83@gmail.com>
 20/05/2011  Change to general verilog description for opensource.
 20/05/2011  Change to general verilog description for opensource.
             The Nangate cell library is used. <wsong83@gmail.com>
             The Nangate cell library is used. <wsong83@gmail.com>
 
 01/06/2011  The bugs in the C2 and C2P1 gates are fixed. <wsong83@gmail.com>
*/
*/
 
 
// General 2-input C-element
// General 2-input C-element
module c2 (a0, a1, q);
module c2 (a0, a1, q);
 
 
Line 28... Line 28...
   wire [2:0] m;         // internal wires
   wire [2:0] m;         // internal wires
 
 
   nand U1 (m[0], a0, a1);
   nand U1 (m[0], a0, a1);
   nand U2 (m[1], a0, q);
   nand U2 (m[1], a0, q);
   nand U3 (m[2], a1, q);
   nand U3 (m[2], a1, q);
   assign q = &m;
   assign q = ~&m;
 
 
endmodule
endmodule
 
 
// the 2-input C-element on data paths, different name for easy synthesis scription
// the 2-input C-element on data paths, different name for easy synthesis scription
module dc2 (d, a, q);
module dc2 (d, a, q);
Line 44... Line 44...
   wire [2:0] m;         // internal wires
   wire [2:0] m;         // internal wires
 
 
   nand U1 (m[0], a, d);
   nand U1 (m[0], a, d);
   nand U2 (m[1], d, q);
   nand U2 (m[1], d, q);
   nand U3 (m[2], a, q);
   nand U3 (m[2], a, q);
   assign q = &m;
   assign q = ~&m;
 
 
endmodule
endmodule
 
 
// 2-input C-element with a minus input
// 2-input C-element with a minus input
module c2n (a, b, q);
module c2n (a, b, q);
Line 103... Line 103...
   wire [2:0] m;         // internal wires
   wire [2:0] m;         // internal wires
 
 
   nand U1 (m[0], a0, a1, b);
   nand U1 (m[0], a0, a1, b);
   nand U2 (m[1], a0, q);
   nand U2 (m[1], a0, q);
   nand U3 (m[2], a1, q);
   nand U3 (m[2], a1, q);
   assign q = &m;
   assign q = ~&m;
 
 
endmodule
endmodule
 
 
// the basic element of a tree arbiter
// the basic element of a tree arbiter
module tarb ( ngnt, ntgnt, req, treq );
module tarb ( ngnt, ntgnt, req, treq );

powered by: WebSVN 2.1.0

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