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

Subversion Repositories async_sdm_noc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /async_sdm_noc/branches
    from Rev 20 to Rev 21
    Reverse comparison

Rev 20 → Rev 21

/LICENSE File deleted
/sdm/define.v File deleted
/sdm/src/cm_alloc.v File deleted
sdm/src/cm_alloc.v Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: sdm/src/input_buf.v =================================================================== --- sdm/src/input_buf.v (revision 20) +++ sdm/src/input_buf.v (nonexistent) @@ -1,288 +0,0 @@ -/* - Asynchronous SDM NoC - (C)2011 Wei Song - Advanced Processor Technologies Group - Computer Science, the Univ. of Manchester, UK - - Authors: - Wei Song wsong83@gmail.com - - License: LGPL 3.0 or later - - Input buffer for Wormhole/SDM routers. - *** SystemVerilog is used *** - - References - * Lookahead pipelines - 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 - * Channel slicing - 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. - * SDM - Wei Song and Doug Edwards, Asynchronous spatial division multiplexing router, Microprocessors and Microsystems, 2011(35), 85-97. - - History: - 05/05/2009 Initial version. - 20/09/2010 Supporting channel slicing and SDM using macro difinitions. - 24/05/2011 Clean up for opensource. - -*/ - -// the router structure definitions -`include "define.v" - -module inp_buf (/*AUTOARG*/ - // Outputs - o0, o1, o2, o3, o4, ia, arb_r, - // Inputs - rst_n, i0, i1, i2, i3, i4, oa, addrx, addry, arb_ra - ); - - //-------------------------- parameters ---------------------------------------// - parameter DIR = 0; // the port direction: south, west, north, east, and local - parameter RN = 4; // the number of request outputs, must match the direction - parameter DW = 16; // the data-width of the data-path - parameter PD = 2; // the depth of the input buffer - parameter SCN = DW/2; - - //-------------------------- I/O ports ---------------------------------------// - input rst_n; // global reset, active low - input [SCN-1:0] i0, i1, i2, i3; // data input - output [SCN-1:0] o0, o1, o2, o3; // data output -`ifdef ENABLE_CHANNEL_SLICING - input [SCN-1:0] i4, oa; - output [SCN-1:0] o4, ia; -`else - input i4, oa; - output o4, ia; -`endif - input [7:0] addrx, addry; - output [RN-1:0] arb_r; - input arb_ra; - - //-------------------------- control signals ---------------------------------------// - wire rten; // routing enable - wire frame_end; // identify the end of a frame - wire [7:0] pipe_xd, pipe_yd; // the target address from the incoming frame - wire [PD:0][SCN-1:0] pd0, pd1, pd2, pd3; // data wires for the internal pipeline satges - wire [5:0] raw_dec; // the routing decision from the comparator - wire [4:0] dec_reg; // the routing decision kept by C-gates - wire x_equal; // addr x = target x - wire rt_err; // route decoder error - wire rt_ack; // route build ack - -`ifdef ENABLE_CHANNEL_SLICING - wire [SCN-1:0] rtrst; // rt decoder reset for each sub-channel - wire [PD:0][SCN-1:0] pd4, pda, pdan; // data wires for the internal pipeline stages - -`else - wire rtrst; // rt decode reset - wire [PD:0] pd4, pda, pdan; // data wires for the internal pipeline satges -`endif // !`ifdef ENABLE_CHANNEL_SLICING - - genvar i, j; - - //------------------------- pipelines ------------------------------------- // - generate for(i=0; i addr x - assign decision[1] = x_cmp[1][1] | (x_cmp[1][2]&x_cmp[0][1]); // frame x < addr x - assign decision[2] = x_cmp[1][2] & x_cmp[0][2]; // frame x = addr x - assign decision[3] = y_cmp[1][0] | (y_cmp[1][2]&y_cmp[0][0]); // frame y > addr y - assign decision[4] = y_cmp[1][1] | (y_cmp[1][2]&y_cmp[0][1]); // frame y < addr y - assign decision[5] = y_cmp[1][2] & y_cmp[0][2]; // frame y = addr y - -endmodule // routing_decision - - -// the 1-of-4 comparator -module chain_comparator ( - a - ,b - ,q - ); - - input [3:0] a; - input [3:0] b; - output [2:0] q; - - // a > b - assign q[0] = (a[3]&(|b[2:0])) | (a[2]&(|b[1:0])) | (a[1]&(|b[0:0])); - - // a < b - assign q[1] = (a[2]&(|b[3:3])) | (a[1]&(|b[3:2])) | (a[0]&(|b[3:1])); - - // a = b - assign q[2] = (a[3]&b[3]) | (a[2]&b[2]) | (a[1]&b[1]) | (a[0]&b[0]); - -endmodule // chain_comparator Index: sdm/src/output_buf.v =================================================================== --- sdm/src/output_buf.v (revision 20) +++ sdm/src/output_buf.v (nonexistent) @@ -1,143 +0,0 @@ -/* - Asynchronous SDM NoC - (C)2011 Wei Song - Advanced Processor Technologies Group - Computer Science, the Univ. of Manchester, UK - - Authors: - Wei Song wsong83@gmail.com - - License: LGPL 3.0 or later - - Output buffer for Wormhole/SDM routers. - *** SystemVerilog is used *** - - References - * Lookahead pipelines - 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 - - History: - 26/05/2009 Initial version. - 20/09/2010 Supporting channel slicing and SDM using macro difinitions. - 22/10/2010 Parameterize the number of pipelines in output buffers. - 23/05/2011 Clean up for opensource. - -*/ - -// the router structure definitions -`include "define.v" - -// the out buffer -module outp_buf (/*AUTOARG*/ - // Outputs - o0, o1, o2, o3, o4, ia, - // Inputs - rst_n, i0, i1, i2, i3, i4, oa - ); - - parameter DW = 16; // the datawidth of a single virtual circuit - parameter PD = 2; // buffer depth - parameter SCN = DW/2; // the number of 1-of-4 sub-channel in each virtual circuit - - input rst_n; // global reset, active low - input [SCN-1:0] i0, i1, i2, i3; // data input - output [SCN-1:0] o0, o1, o2, o3; // data output - wire [PD:0][SCN-1:0] pd0, pd1, pd2, pd3; // data wires for the internal pipeline satges -`ifdef ENABLE_CHANNEL_SLICING - input [SCN-1:0] i4, oa; // eof and ack - output [SCN-1:0] o4, ia; - wire [SCN-1:0] ian_dly; - wire [PD:0][SCN-1:0] pd4, pda, pdan; // internal eof and ack -`else - input i4, oa; // eof and ack - output o4, ia; - wire ian_dly; - wire [PD:0] pd4, pda, pdan; // internal eof and ack -`endif - - -//-------------------------- pipeline ---------------------------------------// - genvar i,j; - generate for(i=0; i
sdm/src/output_buf.v Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: sdm/src/clos_sch.v =================================================================== --- sdm/src/clos_sch.v (revision 20) +++ sdm/src/clos_sch.v (nonexistent) @@ -1,232 +0,0 @@ -/* - Asynchronous SDM NoC - (C)2011 Wei Song - Advanced Processor Technologies Group - Computer Science, the Univ. of Manchester, UK - - Authors: - Wei Song wsong83@gmail.com - - License: LGPL 3.0 or later - - Clos scheduler - *** SystemVerilog is used *** - - References - For the detail structure, please refer to Section 6.3.1 of the thesis: - Wei Song, Spatial parallelism in the routers of asynchronous on-chip networks, PhD thesis, the University of Manchester, 2011. - - History: - 11/12/2009 Initial version. - 10/06/2010 Change to use PIM structure - 23/08/2010 Fix the non-QDI request withdraw process - 23/09/2010 Modified for Clos SDM router - 25/05/2011 Clean up for opensource. - -*/ - -// the router structure definitions -`include "define.v" - -module clos_sch (/*AUTOARG*/ - // Outputs - sack, wack, nack, eack, lack, imc, scfg, ncfg, wcfg, ecfg, lcfg, - // Inputs - sreq, nreq, lreq, wreq, ereq, rst_n - ); - - parameter M = 2; // the number of CMs - parameter N = 2; // the number of ports in IMs/OMs - - // reuests from all input buffers - input [N-1:0][3:0] sreq, nreq, lreq; - input [N-1:0][1:0] wreq, ereq; - - // ack to input buffers - output [N-1:0] sack, wack, nack, eack, lack; - - // IM acks - wire [4:0][N-1:0] imra; - wire [4:0][N-1:0] cmra; - - // IM cfgs and CM cfgs - output [4:0][M-1:0][N-1:0] imc; - output [M-1:0][1:0] scfg, ncfg; - output [M-1:0][3:0] wcfg, ecfg, lcfg; - - input rst_n; // reset, active low - - // the requests from IMs to CMs - wire [M-1:0][1:0] wr, er; - wire [M-1:0][3:0] sr, nr, lr; - wire [M-1:0] sra, wra, nra, era, lra; - -`ifndef ENABLE_CRRD - wire [M-1:0][4:0] cms; // the states from CMs - - wire [M-1:0][3:0] scms, ncms, lcms; - wire [M-1:0][1:0] wcms, ecms; -`endif - - genvar i; - - // IM schedulers - im_alloc #(.VCN(N), .CMN(M), .SN(4)) - SIM ( - .IMr ( sreq ), - .IMa ( imra[0] ), -`ifndef ENABLE_CRRD - .CMs ( scms ), -`endif - .cfg ( imc[0] ), - .rst_n ( rst_n ) - ); - - rcb #(.NN(N), .MN(M), .DW(4)) - SRIM ( - .ireq ( sreq ), - .ira ( cmra[0] ), - .oreq ( sr ), - .ora ( sra ), - .gnt ( imc[0] ) - ); - - // the C-element to force the request withdrawal sequence - generate for(i=0; i - 22/10/2010 Make it more timing robust. - 24/05/2011 Clean up for opensource. - -*/ - -// the router structure definitions -`include "define.v" - -module subc_ctl (/*AUTOARG*/ - // Outputs - nack, rt_rst, - // Inputs - ai2cb, ack, eof, rt_ra, rt_err, rst_n - ); - - input ai2cb; // the ack from output ports - input ack; // the ack from the last stage of the input buffer - input eof; // the eof bit from the last stage of the input buffer - input rt_ra; // ack from the switch allocator - input rt_err; // invalid router decision - input rst_n; // the global active low reset signal - output nack; // the ack to the last stage of the input buffer - output rt_rst; // the router reset signal - - wire csc; // internal wires to handle the CSC of the STG - wire acko; // the ack signal after the C2N gate - wire fend; // the end of frame indicator - wire acken; // active low ack enable - -`ifdef ENABLE_LOOKAHEAD - c2n CD (.q(acko), .a0(ai2cb), .a1(ack)); // the C2N gate to avoid early withdrawal -`else - assign acko = ai2cb; -`endif - - c2p CEN (.a1(eof), .a0(acko), .q(fend)); - c2 C (.a0(rt_ra), .a1(fend), .q(csc)); - nand U1 ( acken, rt_ra, ~csc); - nor U2 ( rt_rst, fend, ~csc); - nor AG ( nack, acko&(~eof), acken|(rt_err&ack), ~rst_n); - -endmodule // subc_ctl - - \ No newline at end of file Index: sdm/src/im_alloc.v =================================================================== --- sdm/src/im_alloc.v (revision 20) +++ sdm/src/im_alloc.v (nonexistent) @@ -1,123 +0,0 @@ -/* - Asynchronous SDM NoC - (C)2011 Wei Song - Advanced Processor Technologies Group - Computer Science, the Univ. of Manchester, UK - - Authors: - Wei Song wsong83@gmail.com - - License: LGPL 3.0 or later - - IM allocator (the IM dispatcher in the thesis) - *** SystemVerilog is used *** - - References - For the detail structure, please refer to Section 6.3.1 of the thesis: - Wei Song, Spatial parallelism in the routers of asynchronous on-chip networks, PhD thesis, the University of Manchester, 2011. - - History: - 05/09/2009 Initial version. - 10/10/2009 Add the reset port. - 05/11/2009 Speed up the arbiter. - 10/06/2010 [Major] change to use PIM structure. - 23/08/2010 Fix the non-QDI request withdraw process. - 25/05/2011 Clean up for opensource. - -*/ - -// the router structure definitions -`include "define.v" - -module im_alloc (/*AUTOARG*/ -`ifndef ENABLE_CRRD - CMs, -`endif - // Outputs - IMa, cfg, - // Inputs - IMr, rst_n - ) ; - // parameters - parameter VCN = 2; // the number of virtual circuits on one port - parameter CMN = 2; // the number of central modules - parameter SN = 2; // the possible output port choice of a port - - input [VCN-1:0][SN-1:0] IMr; // the requests from virtual circuits - output [VCN-1:0] IMa; // switch ready, ack for the request - -`ifndef ENABLE_CRRD - input [CMN-1:0][SN-1:0] CMs; // the states from CMs -`endif - - input rst_n; // the negtive active reset - - output [CMN-1:0][VCN-1:0] cfg; // the matrix configuration signals - - // internal wires -`ifdef ENABLE_CRRD - `ifdef ENABLE_MRMA - wire [VCN-1:0] IPr; // request to the MRMA - wire [CMN-1:0] OPrdy, OPblk; // OP ready and blocked status - wire [CMN:0] OPrst_n; // the buffered resets to avoid metastability - `else - wire [VCN-1:0][CMN-1:0] IPr; // request to the MNMA - `endif -`else - // using the feedback from CMs - wire [VCN-1:0][CMN-1:0][SN-1:0] IPrm; // to generate the practical IPr - wire [VCN-1:0][CMN-1:0] IPr; -`endif - - // generate variables - genvar i, j, k; - - //---------------------------------------- - // the PIM crossbar allocator -`ifndef ENABLE_MRMA - mnma #(.N(VCN), .M(CMN)) - PIMA ( - .cfg ( cfg ), - .r ( IPr ), - .ra ( IMa ) - ); - - generate - for(i=0; i - 25/05/2011 Clean up for opensource. - -*/ - -// the router structure definitions -`include "define.v" - -module sdm_sch (/*AUTOARG*/ - // Outputs - sack, wack, nack, eack, lack, scfg, ncfg, wcfg, ecfg, lcfg, - // Inputs - sreq, nreq, lreq, wreq, ereq - ); - - parameter VCN = 2; // the number of virtual circuits per port - - // income requests - input [VCN-1:0][3:0] sreq, nreq, lreq; - input [VCN-1:0][1:0] wreq, ereq; - - // ack to input buffers - output [VCN-1:0] sack, wack, nack, eack, lack; - - // configuration to the crossbar - output [VCN-1:0][1:0][VCN-1:0] scfg, ncfg; - output [VCN-1:0][3:0][VCN-1:0] wcfg, ecfg, lcfg; - - input rst_n; // active low global reset - - // requests to arbiters -`ifndef ENABLE_MRMA - wire [1:0][VCN-1:0][VCN-1:0] r2s, r2n; // shuffle the incoming request signals - wire [3:0][VCN-1:0][VCN-1:0] r2w, r2e, r2l; -`else - wire [1:0][VCN-1:0] r2s, r2n; // shuffle the incoming request signals - wire [3:0][VCN-1:0] r2w, r2e, r2l; -`endif - - // ack from arbiters - wire [VCN-1:0][3:0] a2s, a2n, a2l; - wire [VCN-1:0][1:0] a2w, a2e; - - // ack of the arbiters - wire [1:0][VCN-1:0] r2sa, r2na; - wire [3:0][VCN-1:0] r2wa, r2ea, r2la; - -`ifdef ENABLE_MRMA - wire [VCN:0] OPrst_n; // the buffered resets to avoid metastability - wire [VCN-1:0] SOPrdy, SOPblk; // OP ready and blocked status - wire [VCN-1:0] WOPrdy, WOPblk; // OP ready and blocked status - wire [VCN-1:0] NOPrdy, NOPblk; // OP ready and blocked status - wire [VCN-1:0] EOPrdy, EOPblk; // OP ready and blocked status - wire [VCN-1:0] LOPrdy, LOPblk; // OP ready and blocked status -`endif - - genvar i,j; - - // wire shuffle - generate for(i=0; i - 23/09/2010 Supporting channel slicing and SDM using macro difinitions. - 22/10/2010 Parameterize the number of pipelines in output buffers. - 25/05/2011 Clean up for opensource. - -*/ - -// the router structure definitions -`include "define.v" - -module router(/*AUTOARG*/ - // Outputs - so0, so1, so2, so3, wo0, wo1, wo2, wo3, no0, no1, no2, no3, eo0, - eo1, eo2, eo3, lo0, lo1, lo2, lo3, so4, wo4, no4, eo4, lo4, sia, - wia, nia, eia, lia, - // Inputs - si0, si1, si2, si3, wi0, wi1, wi2, wi3, ni0, ni1, ni2, ni3, ei0, - ei1, ei2, ei3, li0, li1, li2, li3, si4, wi4, ni4, ei4, li4, soa, - woa, noa, eoa, loa, addrx, addry, rst_n - ); - - parameter VCN = 1; // number of virtual circuits in each direction. When VCN == 1, it is a wormhole router - parameter DW = 32; // the datawidth of a single virtual circuit, the total data width of the router is DW*VCN - parameter IPD = 1; // the number of half-buffer stages in input buffers - parameter OPD = 2; // the number of half-buffer stages in output buffers - parameter SCN = DW/2; // the number of 1-of-4 sub-channel in each virtual circuit - - input [VCN-1:0][SCN-1:0] si0, si1, si2, si3; // south input [0], X+1 - input [VCN-1:0][SCN-1:0] wi0, wi1, wi2, wi3; // west input [1], Y-1 - input [VCN-1:0][SCN-1:0] ni0, ni1, ni2, ni3; // north input [2], X-1 - input [VCN-1:0][SCN-1:0] ei0, ei1, ei2, ei3; // east input [3], Y+1 - input [VCN-1:0][SCN-1:0] li0, li1, li2, li3; // local input - output [VCN-1:0][SCN-1:0] so0, so1, so2, so3; // south output - output [VCN-1:0][SCN-1:0] wo0, wo1, wo2, wo3; // west output - output [VCN-1:0][SCN-1:0] no0, no1, no2, no3; // north output - output [VCN-1:0][SCN-1:0] eo0, eo1, eo2, eo3; // east output - output [VCN-1:0][SCN-1:0] lo0, lo1, lo2, lo3; // local output - - // eof bits and ack lines -`ifdef ENABLE_CHANNEL_SLICING - input [VCN-1:0][SCN-1:0] si4, wi4, ni4, ei4, li4; - output [VCN-1:0][SCN-1:0] so4, wo4, no4, eo4, lo4; - output [VCN-1:0][SCN-1:0] sia, wia, nia, eia, lia; - input [VCN-1:0][SCN-1:0] soa, woa, noa, eoa, loa; -`else - input [VCN-1:0] si4, wi4, ni4, ei4, li4; - output [VCN-1:0] so4, wo4, no4, eo4, lo4; - output [VCN-1:0] sia, wia, nia, eia, lia; - input [VCN-1:0] soa, woa, noa, eoa, loa; -`endif // !`ifdef ENABLE_CHANNEL_SLICING - - input [7:0] addrx, addry; // the local address of the router, coded in 1-of-4 coding - input rst_n; // active low reset signal - - // internal wires, input buffers to switches (crossbar): [dir]2[cb][1-of-4 index] - wire [VCN-1:0][SCN-1:0] s2c0, s2c1, s2c2, s2c3; // south input to switch data - wire [VCN-1:0][SCN-1:0] w2c0, w2c1, w2c2, w2c3; - wire [VCN-1:0][SCN-1:0] n2c0, n2c1, n2c2, n2c3; - wire [VCN-1:0][SCN-1:0] e2c0, e2c1, e2c2, e2c3; - wire [VCN-1:0][SCN-1:0] l2c0, l2c1, l2c2, l2c3; - // internal wires, switches (crossbar) to output buffers: [cb]2[dir][1-of-4 index] - wire [VCN-1:0][SCN-1:0] c2s0, c2s1, c2s2, c2s3; - wire [VCN-1:0][SCN-1:0] c2w0, c2w1, c2w2, c2w3; - wire [VCN-1:0][SCN-1:0] c2n0, c2n1, c2n2, c2n3; // switch to north output - wire [VCN-1:0][SCN-1:0] c2e0, c2e1, c2e2, c2e3; - wire [VCN-1:0][SCN-1:0] c2l0, c2l1, c2l2, c2l3; - - // internal wires for ack and eof bits -`ifdef ENABLE_CHANNEL_SLICING - wire [VCN-1:0][SCN-1:0] s2c4, w2c4, n2c4, e2c4, l2c4; - wire [VCN-1:0][SCN-1:0] c2s4, c2w4, c2n4, c2e4, c2l4; - wire [VCN-1:0][SCN-1:0] s2ca, w2ca, n2ca, e2ca, l2ca; - wire [VCN-1:0][SCN-1:0] c2sa, c2wa, c2na, c2ea, c2la; -`else - wire [VCN-1:0] s2c4, w2c4, n2c4, e2c4, l2c4; - wire [VCN-1:0] c2s4, c2w4, c2n4, c2e4, c2l4; - wire [VCN-1:0] s2ca, w2ca, n2ca, e2ca, l2ca; - wire [VCN-1:0] c2sa, c2wa, c2na, c2ea, c2la; -`endif // !`ifdef ENABLE_CHANNEL_SLICING - - // the requests/acks from/to input buffers to switch allocators - wire [VCN-1:0][3:0] sreq, nreq, lreq; - wire [VCN-1:0][1:0] wreq, ereq; - wire [VCN-1:0] sack, wack, nack, eack, lack; - - // configuration bits for the switches -`ifdef ENABLE_CLOS - wire [4:0][VCN-1:0][VCN-1:0] imcfg; - wire [VCN-1:0][1:0] scfg, ncfg; - wire [VCN-1:0][3:0] wcfg, ecfg, lcfg; -`else // normal crossbar based SDM - wire [VCN-1:0][2*VCN-1:0] scfg, ncfg; - wire [VCN-1:0][4*VCN-1:0] wcfg, ecfg, lcfg; -`endif - - - genvar i; - - generate - for (i=0; i
sdm/src/router.v Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: lib/Nangate_typ.db =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: lib/Nangate_typ.db =================================================================== --- lib/Nangate_typ.db (revision 20) +++ lib/Nangate_typ.db (nonexistent)
lib/Nangate_typ.db Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: lib/NangateOpenCellLibrary_typical_conditional.v =================================================================== --- lib/NangateOpenCellLibrary_typical_conditional.v (revision 20) +++ lib/NangateOpenCellLibrary_typical_conditional.v (nonexistent) @@ -1,3936 +0,0 @@ -// -// ****************************************************************************** -// * * -// * Copyright (C) 2004-2009, Nangate Inc. * -// * All rights reserved. * -// * * -// * Nangate and the Nangate logo are trademarks of Nangate Inc. * -// * * -// * All trademarks, logos, software marks, and trade names (collectively the * -// * "Marks") in this program are proprietary to Nangate or other respective * -// * owners that have granted Nangate the right and license to use such Marks. * -// * You are not permitted to use the Marks without the prior written consent * -// * of Nangate or such third party that may own the Marks. * -// * * -// * This file has been provided pursuant to a License Agreement containing * -// * restrictions on its use. This file contains valuable trade secrets and * -// * proprietary information of Nangate Inc., and is protected by U.S. and * -// * international laws and/or treaties. * -// * * -// * The copyright notice(s) in this file does not indicate actual or intended * -// * publication of this file. * -// * * -// * NGLibraryCharacterizer, v2009.07-HR28-2009-07-08 - build 200907162109 * -// * * -// ****************************************************************************** - -module AND2_X1 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - and(ZN, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AND2_X2 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - and(ZN, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AND2_X4 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - and(ZN, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AND3_X1 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - and(ZN, i_66, A3); - and(i_66, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AND3_X2 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - and(ZN, i_66, A3); - and(i_66, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AND3_X4 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - and(ZN, i_46, A3); - and(i_46, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AND4_X1 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - and(ZN, i_12, A4); - and(i_12, i_13, A3); - and(i_13, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AND4_X2 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - and(ZN, i_12, A4); - and(i_12, i_13, A3); - and(i_13, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AND4_X4 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - and(ZN, i_12, A4); - and(i_12, i_13, A3); - and(i_13, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module ANTENNA_X1 (A); - - input A; - -endmodule - -module AOI211_X1 (A, B, C1, C2, ZN); - - input A; - input B; - input C1; - input C2; - output ZN; - - not(ZN, i_18); - or(i_18, i_19, A); - or(i_19, i_20, B); - and(i_20, C1, C2); - - specify - if((B == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B => ZN) = (0.1, 0.1); - if((A == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0)) (B => ZN) = (0.1, 0.1); - if((A == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI211_X2 (A, B, C1, C2, ZN); - - input A; - input B; - input C1; - input C2; - output ZN; - - not(ZN, i_18); - or(i_18, i_19, A); - or(i_19, i_20, B); - and(i_20, C1, C2); - - specify - if((B == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B => ZN) = (0.1, 0.1); - if((A == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0)) (B => ZN) = (0.1, 0.1); - if((A == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI211_X4 (A, B, C1, C2, ZN); - - input A; - input B; - input C1; - input C2; - output ZN; - - not(ZN, i_18); - or(i_18, i_19, A); - or(i_19, i_20, B); - and(i_20, C1, C2); - - specify - if((B == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B => ZN) = (0.1, 0.1); - if((A == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0)) (B => ZN) = (0.1, 0.1); - if((A == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI21_X1 (A, B1, B2, ZN); - - input A; - input B1; - input B2; - output ZN; - - not(ZN, i_12); - or(i_12, A, i_13); - and(i_13, B1, B2); - - specify - if((B1 == 1'b1) && (B2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b0)) (A => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI21_X2 (A, B1, B2, ZN); - - input A; - input B1; - input B2; - output ZN; - - not(ZN, i_52); - or(i_52, A, i_53); - and(i_53, B1, B2); - - specify - if((B1 == 1'b1) && (B2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b0)) (A => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI21_X4 (A, B1, B2, ZN); - - input A; - input B1; - input B2; - output ZN; - - not(ZN, i_52); - or(i_52, A, i_53); - and(i_53, B1, B2); - - specify - if((B1 == 1'b1) && (B2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b0)) (A => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI221_X1 (A, B1, B2, C1, C2, ZN); - - input A; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_24); - or(i_24, i_25, i_27); - or(i_25, i_26, A); - and(i_26, C1, C2); - and(i_27, B1, B2); - - specify - (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0) || (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b0) || (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI221_X2 (A, B1, B2, C1, C2, ZN); - - input A; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_24); - or(i_24, i_25, i_27); - or(i_25, i_26, A); - and(i_26, C1, C2); - and(i_27, B1, B2); - - specify - (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0) || (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b0) || (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) || (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI221_X4 (A, B1, B2, C1, C2, ZN); - - input A; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_24); - or(i_24, i_25, i_27); - or(i_25, i_26, A); - and(i_26, C1, C2); - and(i_27, B1, B2); - - specify - (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) || (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0) || (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI222_X1 (A1, A2, B1, B2, C1, C2, ZN); - - input A1; - input A2; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_30); - or(i_30, i_31, i_34); - or(i_31, i_32, i_33); - and(i_32, A1, A2); - and(i_33, B1, B2); - and(i_34, C1, C2); - - specify - (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0) || (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b0) || (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI222_X2 (A1, A2, B1, B2, C1, C2, ZN); - - input A1; - input A2; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_30); - or(i_30, i_31, i_34); - or(i_31, i_32, i_33); - and(i_32, A1, A2); - and(i_33, B1, B2); - and(i_34, C1, C2); - - specify - (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0) || (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b0) || (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI222_X4 (A1, A2, B1, B2, C1, C2, ZN); - - input A1; - input A2; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_30); - or(i_30, i_31, i_34); - or(i_31, i_32, i_33); - and(i_32, A1, A2); - and(i_33, B1, B2); - and(i_34, C1, C2); - - specify - (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0) || (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0) || (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b1) || (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b0) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1)) (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI22_X1 (A1, A2, B1, B2, ZN); - - input A1; - input A2; - input B1; - input B2; - output ZN; - - not(ZN, i_18); - or(i_18, i_19, i_20); - and(i_19, A1, A2); - and(i_20, B1, B2); - - specify - if((A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI22_X2 (A1, A2, B1, B2, ZN); - - input A1; - input A2; - input B1; - input B2; - output ZN; - - not(ZN, i_18); - or(i_18, i_19, i_20); - and(i_19, A1, A2); - and(i_20, B1, B2); - - specify - if((A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module AOI22_X4 (A1, A2, B1, B2, ZN); - - input A1; - input A2; - input B1; - input B2; - output ZN; - - not(ZN, i_18); - or(i_18, i_19, i_20); - and(i_19, A1, A2); - and(i_20, B1, B2); - - specify - if((A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module BUF_X1 (A, Z); - - input A; - output Z; - - buf(Z, A); - - specify - (A => Z) = (0.1, 0.1); - endspecify - -endmodule - -module BUF_X16 (A, Z); - - input A; - output Z; - - buf(Z, A); - - specify - (A => Z) = (0.1, 0.1); - endspecify - -endmodule - -module BUF_X2 (A, Z); - - input A; - output Z; - - buf(Z, A); - - specify - (A => Z) = (0.1, 0.1); - endspecify - -endmodule - -module BUF_X32 (A, Z); - - input A; - output Z; - - buf(Z, A); - - specify - (A => Z) = (0.1, 0.1); - endspecify - -endmodule - -module BUF_X4 (A, Z); - - input A; - output Z; - - buf(Z, A); - - specify - (A => Z) = (0.1, 0.1); - endspecify - -endmodule - -module BUF_X8 (A, Z); - - input A; - output Z; - - buf(Z, A); - - specify - (A => Z) = (0.1, 0.1); - endspecify - -endmodule - -module CLKBUF_X1 (A, Z); - - input A; - output Z; - - buf(Z, A); - - specify - (A => Z) = (0.1, 0.1); - endspecify - -endmodule - -module CLKBUF_X2 (A, Z); - - input A; - output Z; - - buf(Z, A); - - specify - (A => Z) = (0.1, 0.1); - endspecify - -endmodule - -module CLKBUF_X3 (A, Z); - - input A; - output Z; - - buf(Z, A); - - specify - (A => Z) = (0.1, 0.1); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 0 ? : ? : 0; - 1 0 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 1 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module CLKGATETST_X1 (CK, E, SE, GCK); - - input CK; - input E; - input SE; - output GCK; - reg NOTIFIER; - - and(GCK, IQ, CK); - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQn, IQ); - or(nextstate, E, SE); - - - specify - (CK => GCK) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge E, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge E, 0.1, 0.1, NOTIFIER); - $width(negedge E, 0.1, 0, NOTIFIER); - $width(posedge E, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 0 ? : ? : 0; - 1 0 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 1 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module CLKGATETST_X2 (CK, E, SE, GCK); - - input CK; - input E; - input SE; - output GCK; - reg NOTIFIER; - - and(GCK, IQ, CK); - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQn, IQ); - or(nextstate, E, SE); - - - specify - (CK => GCK) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge E, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge E, 0.1, 0.1, NOTIFIER); - $width(negedge E, 0.1, 0, NOTIFIER); - $width(posedge E, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 0 ? : ? : 0; - 1 0 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 1 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module CLKGATETST_X4 (CK, E, SE, GCK); - - input CK; - input E; - input SE; - output GCK; - reg NOTIFIER; - - and(GCK, IQ, CK); - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQn, IQ); - or(nextstate, E, SE); - - - specify - (CK => GCK) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge E, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge E, 0.1, 0.1, NOTIFIER); - $width(negedge E, 0.1, 0, NOTIFIER); - $width(posedge E, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 0 ? : ? : 0; - 1 0 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 1 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module CLKGATETST_X8 (CK, E, SE, GCK); - - input CK; - input E; - input SE; - output GCK; - reg NOTIFIER; - - and(GCK, IQ, CK); - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQn, IQ); - or(nextstate, E, SE); - - - specify - (CK => GCK) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge E, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge E, 0.1, 0.1, NOTIFIER); - $width(negedge E, 0.1, 0, NOTIFIER); - $width(posedge E, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 0 ? : ? : 0; - 1 0 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 1 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module CLKGATE_X1 (CK, E, GCK); - - input CK; - input E; - output GCK; - reg NOTIFIER; - - and(GCK, CK, IQ); - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQn, IQ); - buf(nextstate, E); - - - specify - (CK => GCK) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge E, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge E, 0.1, 0.1, NOTIFIER); - $width(negedge E, 0.1, 0, NOTIFIER); - $width(posedge E, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 0 ? : ? : 0; - 1 0 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 1 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module CLKGATE_X2 (CK, E, GCK); - - input CK; - input E; - output GCK; - reg NOTIFIER; - - and(GCK, CK, IQ); - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQn, IQ); - buf(nextstate, E); - - - specify - (CK => GCK) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge E, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge E, 0.1, 0.1, NOTIFIER); - $width(negedge E, 0.1, 0, NOTIFIER); - $width(posedge E, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 0 ? : ? : 0; - 1 0 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 1 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module CLKGATE_X4 (CK, E, GCK); - - input CK; - input E; - output GCK; - reg NOTIFIER; - - and(GCK, CK, IQ); - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQn, IQ); - buf(nextstate, E); - - - specify - (CK => GCK) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge E, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge E, 0.1, 0.1, NOTIFIER); - $width(negedge E, 0.1, 0, NOTIFIER); - $width(posedge E, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 0 ? : ? : 0; - 1 0 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 1 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module CLKGATE_X8 (CK, E, GCK); - - input CK; - input E; - output GCK; - reg NOTIFIER; - - and(GCK, CK, IQ); - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQn, IQ); - buf(nextstate, E); - - - specify - (CK => GCK) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge E, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge E, 0.1, 0.1, NOTIFIER); - $width(negedge E, 0.1, 0, NOTIFIER); - $width(posedge E, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, SN, RN, nextstate, CK, NOTIFIER); - output IQ; - input SN; - input RN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // SN RN nextstate CK NOTIFIER : @IQ : IQ - 1 ? 0 r ? : ? : 0; - ? 1 1 r ? : ? : 1; - 1 ? 0 * ? : 0 : 0; // reduce pessimism - ? 1 1 * ? : 1 : 1; // reduce pessimism - 1 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 1 ? ? ? : ? : 1; // SN activated - * 1 ? ? ? : 1 : 1; // Cover all transitions on SN - ? 0 ? ? ? : ? : 0; // RN activated - 1 * ? ? ? : 0 : 0; // Cover all transitions on RN - ? ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DFFRS_X1 (CK, D, RN, SN, Q, QN); - - input CK; - input D; - input RN; - input SN; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, SN, RN, nextstate, CK, NOTIFIER); - and(IQN, i_15, i_16); - not(i_15, IQ); - not(i_16, i_17); - and(i_17, i_18, i_19); - not(i_18, SN); - not(i_19, RN); - buf(Q, IQ); - buf(QN, IQN); - buf(nextstate, D); - - and(id_3, SN, RN); - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b0)) (RN => Q) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b0)) (RN => Q) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b0)) (SN => QN) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b0)) (SN => QN) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - - $width(negedge CK &&& id_3, 0.1, 0, NOTIFIER); - $width(posedge CK &&& id_3, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $recovery(posedge RN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge RN, 0.1, NOTIFIER); - $width(negedge RN, 0.1, 0, NOTIFIER); - $width(posedge RN, 0.1, 0, NOTIFIER); - $recovery(posedge SN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge SN, 0.1, NOTIFIER); - $width(negedge SN, 0.1, 0, NOTIFIER); - $width(posedge SN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, SN, RN, nextstate, CK, NOTIFIER); - output IQ; - input SN; - input RN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // SN RN nextstate CK NOTIFIER : @IQ : IQ - 1 ? 0 r ? : ? : 0; - ? 1 1 r ? : ? : 1; - 1 ? 0 * ? : 0 : 0; // reduce pessimism - ? 1 1 * ? : 1 : 1; // reduce pessimism - 1 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 1 ? ? ? : ? : 1; // SN activated - * 1 ? ? ? : 1 : 1; // Cover all transitions on SN - ? 0 ? ? ? : ? : 0; // RN activated - 1 * ? ? ? : 0 : 0; // Cover all transitions on RN - ? ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DFFRS_X2 (CK, D, RN, SN, Q, QN); - - input CK; - input D; - input RN; - input SN; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, SN, RN, nextstate, CK, NOTIFIER); - and(IQN, i_15, i_16); - not(i_15, IQ); - not(i_16, i_17); - and(i_17, i_18, i_19); - not(i_18, SN); - not(i_19, RN); - buf(Q, IQ); - buf(QN, IQN); - buf(nextstate, D); - - and(id_3, SN, RN); - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b0)) (RN => Q) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b0)) (RN => Q) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b0)) (SN => QN) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b0)) (SN => QN) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - - $width(negedge CK &&& id_3, 0.1, 0, NOTIFIER); - $width(posedge CK &&& id_3, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $recovery(posedge RN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge RN, 0.1, NOTIFIER); - $width(negedge RN, 0.1, 0, NOTIFIER); - $width(posedge RN, 0.1, 0, NOTIFIER); - $recovery(posedge SN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge SN, 0.1, NOTIFIER); - $width(negedge SN, 0.1, 0, NOTIFIER); - $width(posedge SN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, RN, nextstate, CK, NOTIFIER); - output IQ; - input RN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // RN nextstate CK NOTIFIER : @IQ : IQ - ? 0 r ? : ? : 0; - 1 1 r ? : ? : 1; - ? 0 * ? : 0 : 0; // reduce pessimism - 1 1 * ? : 1 : 1; // reduce pessimism - 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 ? ? ? : ? : 0; // RN activated - * ? ? ? : 0 : 0; // Cover all transitions on RN - ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DFFR_X1 (CK, D, RN, Q, QN); - - input CK; - input D; - input RN; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, RN, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - buf(nextstate, D); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - - $width(negedge CK &&& ((RN)), 0.1, 0, NOTIFIER); - $width(posedge CK &&& ((RN)), 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $recovery(posedge RN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge RN, 0.1, NOTIFIER); - $width(negedge RN, 0.1, 0, NOTIFIER); - $width(posedge RN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, RN, nextstate, CK, NOTIFIER); - output IQ; - input RN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // RN nextstate CK NOTIFIER : @IQ : IQ - ? 0 r ? : ? : 0; - 1 1 r ? : ? : 1; - ? 0 * ? : 0 : 0; // reduce pessimism - 1 1 * ? : 1 : 1; // reduce pessimism - 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 ? ? ? : ? : 0; // RN activated - * ? ? ? : 0 : 0; // Cover all transitions on RN - ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DFFR_X2 (CK, D, RN, Q, QN); - - input CK; - input D; - input RN; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, RN, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - buf(nextstate, D); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - - $width(negedge CK &&& ((RN)), 0.1, 0, NOTIFIER); - $width(posedge CK &&& ((RN)), 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $recovery(posedge RN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge RN, 0.1, NOTIFIER); - $width(negedge RN, 0.1, 0, NOTIFIER); - $width(posedge RN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, SN, nextstate, CK, NOTIFIER); - output IQ; - input SN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // SN nextstate CK NOTIFIER : @IQ : IQ - 1 0 r ? : ? : 0; - ? 1 r ? : ? : 1; - 1 0 * ? : 0 : 0; // reduce pessimism - ? 1 * ? : 1 : 1; // reduce pessimism - 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 ? ? ? : ? : 1; // SN activated - * ? ? ? : 1 : 1; // Cover all transitions on SN - ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DFFS_X1 (CK, D, SN, Q, QN); - - input CK; - input D; - input SN; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, SN, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - buf(nextstate, D); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - - $width(negedge CK &&& ((SN)), 0.1, 0, NOTIFIER); - $width(posedge CK &&& ((SN)), 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $recovery(posedge SN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge SN, 0.1, NOTIFIER); - $width(negedge SN, 0.1, 0, NOTIFIER); - $width(posedge SN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, SN, nextstate, CK, NOTIFIER); - output IQ; - input SN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // SN nextstate CK NOTIFIER : @IQ : IQ - 1 0 r ? : ? : 0; - ? 1 r ? : ? : 1; - 1 0 * ? : 0 : 0; // reduce pessimism - ? 1 * ? : 1 : 1; // reduce pessimism - 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 ? ? ? : ? : 1; // SN activated - * ? ? ? : 1 : 1; // Cover all transitions on SN - ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DFFS_X2 (CK, D, SN, Q, QN); - - input CK; - input D; - input SN; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, SN, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - buf(nextstate, D); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - - $width(negedge CK &&& ((SN)), 0.1, 0, NOTIFIER); - $width(posedge CK &&& ((SN)), 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $recovery(posedge SN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge SN, 0.1, NOTIFIER); - $width(negedge SN, 0.1, 0, NOTIFIER); - $width(posedge SN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 r ? : ? : 0; - 1 r ? : ? : 1; - 0 * ? : 0 : 0; // reduce pessimism - 1 * ? : 1 : 1; // reduce pessimism - * ? ? : ? : -; // Ignore all edges on nextstate - ? f ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DFF_X1 (CK, D, Q, QN); - - input CK; - input D; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - buf(nextstate, D); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 r ? : ? : 0; - 1 r ? : ? : 1; - 0 * ? : 0 : 0; // reduce pessimism - 1 * ? : 1 : 1; // reduce pessimism - * ? ? : ? : -; // Ignore all edges on nextstate - ? f ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DFF_X2 (CK, D, Q, QN); - - input CK; - input D; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - buf(nextstate, D); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, G, NOTIFIER); - output IQ; - input nextstate; - input G; - input NOTIFIER; - reg IQ; - - table -// nextstate G NOTIFIER : @IQ : IQ - 0 1 ? : ? : 0; - 1 1 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 0 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DLH_X1 (D, G, Q); - - input D; - input G; - output Q; - reg NOTIFIER; - - seq3(IQ, nextstate, G, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(nextstate, D); - - - specify - (D => Q) = (0.1, 0.1); - (posedge G => (Q +: D)) = (0.1, 0.1); - - $setuphold(negedge G, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(negedge G, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $width(negedge G, 0.1, 0, NOTIFIER); - $width(posedge G, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, G, NOTIFIER); - output IQ; - input nextstate; - input G; - input NOTIFIER; - reg IQ; - - table -// nextstate G NOTIFIER : @IQ : IQ - 0 1 ? : ? : 0; - 1 1 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 0 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DLH_X2 (D, G, Q); - - input D; - input G; - output Q; - reg NOTIFIER; - - seq3(IQ, nextstate, G, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(nextstate, D); - - - specify - (D => Q) = (0.1, 0.1); - (posedge G => (Q +: D)) = (0.1, 0.1); - - $setuphold(negedge G, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(negedge G, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $width(negedge G, 0.1, 0, NOTIFIER); - $width(posedge G, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, GN, NOTIFIER); - output IQ; - input nextstate; - input GN; - input NOTIFIER; - reg IQ; - - table -// nextstate GN NOTIFIER : @IQ : IQ - 0 0 ? : ? : 0; - 1 0 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 1 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DLL_X1 (D, GN, Q); - - input D; - input GN; - output Q; - reg NOTIFIER; - - seq3(IQ, nextstate, GN, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(nextstate, D); - - - specify - (D => Q) = (0.1, 0.1); - (negedge GN => (Q +: D)) = (0.1, 0.1); - - $setuphold(posedge GN, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge GN, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $width(negedge GN, 0.1, 0, NOTIFIER); - $width(posedge GN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, GN, NOTIFIER); - output IQ; - input nextstate; - input GN; - input NOTIFIER; - reg IQ; - - table -// nextstate GN NOTIFIER : @IQ : IQ - 0 0 ? : ? : 0; - 1 0 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 1 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module DLL_X2 (D, GN, Q); - - input D; - input GN; - output Q; - reg NOTIFIER; - - seq3(IQ, nextstate, GN, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(nextstate, D); - - - specify - (D => Q) = (0.1, 0.1); - (negedge GN => (Q +: D)) = (0.1, 0.1); - - $setuphold(posedge GN, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge GN, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $width(negedge GN, 0.1, 0, NOTIFIER); - $width(posedge GN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -module FA_X1 (A, B, CI, CO, S); - - input A; - input B; - input CI; - output CO; - output S; - - or(CO, i_24, i_25); - and(i_24, A, B); - and(i_25, CI, i_26); - or(i_26, A, B); - xor(S, CI, i_30); - xor(i_30, A, B); - - specify - if((B == 1'b0) && (CI == 1'b1)) (A => CO) = (0.1, 0.1); - if((B == 1'b1) && (CI == 1'b0)) (A => CO) = (0.1, 0.1); - if((A == 1'b1) && (CI == 1'b0)) (B => CO) = (0.1, 0.1); - if((A == 1'b0) && (CI == 1'b1)) (B => CO) = (0.1, 0.1); - if((A == 1'b1) && (B == 1'b0)) (CI => CO) = (0.1, 0.1); - if((A == 1'b0) && (B == 1'b1)) (CI => CO) = (0.1, 0.1); - if((B == 1'b0) && (CI == 1'b1)) (A => S) = (0.1, 0.1); - if((B == 1'b0) && (CI == 1'b0)) (A => S) = (0.1, 0.1); - if((B == 1'b1) && (CI == 1'b1)) (A => S) = (0.1, 0.1); - if((B == 1'b1) && (CI == 1'b0)) (A => S) = (0.1, 0.1); - if((A == 1'b0) && (CI == 1'b0)) (B => S) = (0.1, 0.1); - if((A == 1'b1) && (CI == 1'b0)) (B => S) = (0.1, 0.1); - if((A == 1'b1) && (CI == 1'b1)) (B => S) = (0.1, 0.1); - if((A == 1'b0) && (CI == 1'b1)) (B => S) = (0.1, 0.1); - if((A == 1'b1) && (B == 1'b1)) (CI => S) = (0.1, 0.1); - if((A == 1'b1) && (B == 1'b0)) (CI => S) = (0.1, 0.1); - if((A == 1'b0) && (B == 1'b1)) (CI => S) = (0.1, 0.1); - if((A == 1'b0) && (B == 1'b0)) (CI => S) = (0.1, 0.1); - endspecify - -endmodule - -module FILLCELL_X1 (); - - -endmodule - -module FILLCELL_X16 (); - - -endmodule - -module FILLCELL_X2 (); - - -endmodule - -module FILLCELL_X32 (); - - -endmodule - -module FILLCELL_X4 (); - - -endmodule - -module FILLCELL_X8 (); - - -endmodule - -module HA_X1 (A, B, CO, S); - - input A; - input B; - output CO; - output S; - - and(CO, A, B); - xor(S, A, B); - - specify - (A => CO) = (0.1, 0.1); - (B => CO) = (0.1, 0.1); - if((B == 1'b0)) (A => S) = (0.1, 0.1); - if((B == 1'b1)) (A => S) = (0.1, 0.1); - if((A == 1'b1)) (B => S) = (0.1, 0.1); - if((A == 1'b0)) (B => S) = (0.1, 0.1); - endspecify - -endmodule - -module INV_X1 (A, ZN); - - input A; - output ZN; - - not(ZN, A); - - specify - (A => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module INV_X16 (A, ZN); - - input A; - output ZN; - - not(ZN, A); - - specify - (A => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module INV_X2 (A, ZN); - - input A; - output ZN; - - not(ZN, A); - - specify - (A => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module INV_X32 (A, ZN); - - input A; - output ZN; - - not(ZN, A); - - specify - (A => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module INV_X4 (A, ZN); - - input A; - output ZN; - - not(ZN, A); - - specify - (A => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module INV_X8 (A, ZN); - - input A; - output ZN; - - not(ZN, A); - - specify - (A => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module LOGIC0_X1 (Z); - - output Z; - - buf(Z, 0); -endmodule - -module LOGIC1_X1 (Z); - - output Z; - - buf(Z, 1); -endmodule - -module MUX2_X1 (A, B, S, Z); - - input A; - input B; - input S; - output Z; - - or(Z, i_38, i_39); - and(i_38, S, B); - and(i_39, A, i_40); - not(i_40, S); - - specify - if((B == 1'b1) && (S == 1'b0)) (A => Z) = (0.1, 0.1); - if((B == 1'b0) && (S == 1'b0)) (A => Z) = (0.1, 0.1); - if((A == 1'b1) && (S == 1'b1)) (B => Z) = (0.1, 0.1); - if((A == 1'b0) && (S == 1'b1)) (B => Z) = (0.1, 0.1); - if((A == 1'b1) && (B == 1'b0)) (S => Z) = (0.1, 0.1); - if((A == 1'b0) && (B == 1'b1)) (S => Z) = (0.1, 0.1); - endspecify - -endmodule - -module MUX2_X2 (A, B, S, Z); - - input A; - input B; - input S; - output Z; - - or(Z, i_58, i_59); - and(i_58, S, B); - and(i_59, A, i_60); - not(i_60, S); - - specify - if((B == 1'b1) && (S == 1'b0)) (A => Z) = (0.1, 0.1); - if((B == 1'b0) && (S == 1'b0)) (A => Z) = (0.1, 0.1); - if((A == 1'b1) && (S == 1'b1)) (B => Z) = (0.1, 0.1); - if((A == 1'b0) && (S == 1'b1)) (B => Z) = (0.1, 0.1); - if((A == 1'b1) && (B == 1'b0)) (S => Z) = (0.1, 0.1); - if((A == 1'b0) && (B == 1'b1)) (S => Z) = (0.1, 0.1); - endspecify - -endmodule - -module NAND2_X1 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - not(ZN, i_6); - and(i_6, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NAND2_X2 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - not(ZN, i_6); - and(i_6, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NAND2_X4 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - not(ZN, i_6); - and(i_6, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NAND3_X1 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - not(ZN, i_32); - and(i_32, i_33, A3); - and(i_33, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NAND3_X2 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - not(ZN, i_32); - and(i_32, i_33, A3); - and(i_33, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NAND3_X4 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - not(ZN, i_12); - and(i_12, i_13, A3); - and(i_13, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NAND4_X1 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - not(ZN, i_18); - and(i_18, i_19, A4); - and(i_19, i_20, A3); - and(i_20, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NAND4_X2 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - not(ZN, i_18); - and(i_18, i_19, A4); - and(i_19, i_20, A3); - and(i_20, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NAND4_X4 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - not(ZN, i_18); - and(i_18, i_19, A4); - and(i_19, i_20, A3); - and(i_20, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NOR2_X1 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - not(ZN, i_66); - or(i_66, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NOR2_X2 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - not(ZN, i_46); - or(i_46, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NOR2_X4 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - not(ZN, i_66); - or(i_66, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NOR3_X1 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - not(ZN, i_12); - or(i_12, i_13, A3); - or(i_13, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NOR3_X2 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - not(ZN, i_12); - or(i_12, i_13, A3); - or(i_13, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NOR3_X4 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - not(ZN, i_12); - or(i_12, i_13, A3); - or(i_13, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NOR4_X1 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - not(ZN, i_18); - or(i_18, i_19, A4); - or(i_19, i_20, A3); - or(i_20, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NOR4_X2 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - not(ZN, i_18); - or(i_18, i_19, A4); - or(i_19, i_20, A3); - or(i_20, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module NOR4_X4 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - not(ZN, i_18); - or(i_18, i_19, A4); - or(i_19, i_20, A3); - or(i_20, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI211_X1 (A, B, C1, C2, ZN); - - input A; - input B; - input C1; - input C2; - output ZN; - - not(ZN, i_18); - and(i_18, i_19, B); - and(i_19, i_20, A); - or(i_20, C1, C2); - - specify - if((B == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B => ZN) = (0.1, 0.1); - if((A == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B => ZN) = (0.1, 0.1); - if((A == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (B => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI211_X2 (A, B, C1, C2, ZN); - - input A; - input B; - input C1; - input C2; - output ZN; - - not(ZN, i_18); - and(i_18, i_19, B); - and(i_19, i_20, A); - or(i_20, C1, C2); - - specify - if((B == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B => ZN) = (0.1, 0.1); - if((A == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B => ZN) = (0.1, 0.1); - if((A == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (B => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI211_X4 (A, B, C1, C2, ZN); - - input A; - input B; - input C1; - input C2; - output ZN; - - not(ZN, i_18); - and(i_18, i_19, B); - and(i_19, i_20, A); - or(i_20, C1, C2); - - specify - if((B == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0)) (B => ZN) = (0.1, 0.1); - if((A == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (B => ZN) = (0.1, 0.1); - if((A == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (B => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI21_X1 (A, B1, B2, ZN); - - input A; - input B1; - input B2; - output ZN; - - not(ZN, i_12); - and(i_12, A, i_13); - or(i_13, B1, B2); - - specify - if((B1 == 1'b1) && (B2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b1) && (B2 == 1'b1)) (A => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI21_X2 (A, B1, B2, ZN); - - input A; - input B1; - input B2; - output ZN; - - not(ZN, i_12); - and(i_12, A, i_13); - or(i_13, B1, B2); - - specify - if((B1 == 1'b1) && (B2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b1) && (B2 == 1'b1)) (A => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI21_X4 (A, B1, B2, ZN); - - input A; - input B1; - input B2; - output ZN; - - not(ZN, i_12); - and(i_12, A, i_13); - or(i_13, B1, B2); - - specify - if((B1 == 1'b1) && (B2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b1) && (B2 == 1'b1)) (A => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI221_X1 (A, B1, B2, C1, C2, ZN); - - input A; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_24); - and(i_24, i_25, i_27); - and(i_25, i_26, A); - or(i_26, C1, C2); - or(i_27, B1, B2); - - specify - (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b1) || (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b1) || (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI221_X2 (A, B1, B2, C1, C2, ZN); - - input A; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_24); - and(i_24, i_25, i_27); - and(i_25, i_26, A); - or(i_26, C1, C2); - or(i_27, B1, B2); - - specify - (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b1) || (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b1) || (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI221_X4 (A, B1, B2, C1, C2, ZN); - - input A; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_24); - and(i_24, i_25, i_27); - and(i_25, i_26, A); - or(i_26, C1, C2); - or(i_27, B1, B2); - - specify - (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b1) || (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b1) || (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI222_X1 (A1, A2, B1, B2, C1, C2, ZN); - - input A1; - input A2; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_30); - and(i_30, i_31, i_34); - and(i_31, i_32, i_33); - or(i_32, A1, A2); - or(i_33, B1, B2); - or(i_34, C1, C2); - - specify - (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b1) || (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b1) || (A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1) || (A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1) || (A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b1) && (C1 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI222_X2 (A1, A2, B1, B2, C1, C2, ZN); - - input A1; - input A2; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_30); - and(i_30, i_31, i_34); - and(i_31, i_32, i_33); - or(i_32, A1, A2); - or(i_33, B1, B2); - or(i_34, C1, C2); - - specify - (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b1) || (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b1) || (A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1) || (A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1) || (A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b1) && (C1 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI222_X4 (A1, A2, B1, B2, C1, C2, ZN); - - input A1; - input A2; - input B1; - input B2; - input C1; - input C2; - output ZN; - - not(ZN, i_30); - and(i_30, i_31, i_34); - and(i_31, i_32, i_33); - or(i_32, A1, A2); - or(i_33, B1, B2); - or(i_34, C1, C2); - - specify - (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b1) || (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b1) || (A2 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1) || (A2 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) && (C2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b1) || (A1 == 1'b0) && (B1 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1) || (A1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b1) && (C2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1) || (A2 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - if((A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (C1 == 1'b0) && (C2 == 1'b1) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) || (A1 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1) || (A2 == 1'b1) && (B1 == 1'b0) && (C1 == 1'b1) && (C2 == 1'b1)) (B2 => ZN) = (0.1, 0.1); - (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C2 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C2 == 1'b0)) (C1 => ZN) = (0.1, 0.1); - (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b1) && (C1 == 1'b0) || (A1 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b1) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (C1 == 1'b0) || (A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (C1 == 1'b0)) (C2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI22_X1 (A1, A2, B1, B2, ZN); - - input A1; - input A2; - input B1; - input B2; - output ZN; - - not(ZN, i_18); - and(i_18, i_19, i_20); - or(i_19, A1, A2); - or(i_20, B1, B2); - - specify - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI22_X2 (A1, A2, B1, B2, ZN); - - input A1; - input A2; - input B1; - input B2; - output ZN; - - not(ZN, i_18); - and(i_18, i_19, i_20); - or(i_19, A1, A2); - or(i_20, B1, B2); - - specify - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI22_X4 (A1, A2, B1, B2, ZN); - - input A1; - input A2; - input B1; - input B2; - output ZN; - - not(ZN, i_18); - and(i_18, i_19, i_20); - or(i_19, A1, A2); - or(i_20, B1, B2); - - specify - if((A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B2 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b0) && (B1 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (A2 == 1'b1) && (B1 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (B1 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OAI33_X1 (A1, A2, A3, B1, B2, B3, ZN); - - input A1; - input A2; - input A3; - input B1; - input B2; - input B3; - output ZN; - - not(ZN, i_30); - and(i_30, i_31, i_33); - or(i_31, i_32, A3); - or(i_32, A1, A2); - or(i_33, i_34, B3); - or(i_34, B1, B2); - - specify - (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (B3 == 1'b0) || (A2 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (B3 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (B3 == 1'b0)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (B3 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - if((A2 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) || (A2 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b1) && (B3 == 1'b1)) (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (B3 == 1'b0) || (A1 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (B3 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (B3 == 1'b0)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) || (A1 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b1) && (B3 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A3 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (B3 == 1'b1)) (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (B3 == 1'b1)) (A3 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b1) || (A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b1) && (B3 == 1'b1)) (A3 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b1) && (B2 == 1'b0) && (B3 == 1'b0)) (A3 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b1) && (B3 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) && (B3 == 1'b1)) (A3 => ZN) = (0.1, 0.1); - (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (A3 == 1'b0) && (B2 == 1'b0) && (B3 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b0) && (A3 == 1'b1) && (B2 == 1'b0) && (B3 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (A3 == 1'b1) && (B2 == 1'b0) && (B3 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B2 == 1'b0) && (B3 == 1'b0)) (B1 => ZN) = (0.1, 0.1); - (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (A3 == 1'b1) && (B1 == 1'b0) && (B3 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B3 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (A3 == 1'b0) && (B1 == 1'b0) && (B3 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b0) && (A3 == 1'b1) && (B1 == 1'b0) && (B3 == 1'b0)) (B2 => ZN) = (0.1, 0.1); - (B3 => ZN) = (0.1, 0.1); - if((A1 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0)) (B3 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (A3 == 1'b0) && (B1 == 1'b0) && (B2 == 1'b0) || (A1 == 1'b0) && (A2 == 1'b0) && (A3 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0)) (B3 => ZN) = (0.1, 0.1); - if((A1 == 1'b0) && (A2 == 1'b1) && (A3 == 1'b1) && (B1 == 1'b0) && (B2 == 1'b0)) (B3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OR2_X1 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - or(ZN, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OR2_X2 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - or(ZN, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OR2_X4 (A1, A2, ZN); - - input A1; - input A2; - output ZN; - - or(ZN, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OR3_X1 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - or(ZN, i_6, A3); - or(i_6, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OR3_X2 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - or(ZN, i_6, A3); - or(i_6, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OR3_X4 (A1, A2, A3, ZN); - - input A1; - input A2; - input A3; - output ZN; - - or(ZN, i_6, A3); - or(i_6, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OR4_X1 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - or(ZN, i_12, A4); - or(i_12, i_13, A3); - or(i_13, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OR4_X2 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - or(ZN, i_12, A4); - or(i_12, i_13, A3); - or(i_13, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module OR4_X4 (A1, A2, A3, A4, ZN); - - input A1; - input A2; - input A3; - input A4; - output ZN; - - or(ZN, i_12, A4); - or(i_12, i_13, A3); - or(i_13, A1, A2); - - specify - (A1 => ZN) = (0.1, 0.1); - (A2 => ZN) = (0.1, 0.1); - (A3 => ZN) = (0.1, 0.1); - (A4 => ZN) = (0.1, 0.1); - endspecify - -endmodule - -primitive seq3 (IQ, SN, RN, nextstate, CK, NOTIFIER); - output IQ; - input SN; - input RN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // SN RN nextstate CK NOTIFIER : @IQ : IQ - 1 ? 0 r ? : ? : 0; - ? 1 1 r ? : ? : 1; - 1 ? 0 * ? : 0 : 0; // reduce pessimism - ? 1 1 * ? : 1 : 1; // reduce pessimism - 1 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 1 ? ? ? : ? : 1; // SN activated - * 1 ? ? ? : 1 : 1; // Cover all transitions on SN - ? 0 ? ? ? : ? : 0; // RN activated - 1 * ? ? ? : 0 : 0; // Cover all transitions on RN - ? ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module SDFFRS_X1 (CK, D, RN, SE, SI, SN, Q, QN); - - input CK; - input D; - input RN; - input SE; - input SI; - input SN; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, SN, RN, nextstate, CK, NOTIFIER); - and(IQN, i_33, i_34); - not(i_33, IQ); - not(i_34, i_35); - and(i_35, i_36, i_37); - not(i_36, SN); - not(i_37, RN); - buf(Q, IQ); - buf(QN, IQN); - or(nextstate, i_38, i_39); - and(i_38, SE, SI); - and(i_39, D, i_40); - not(i_40, SE); - - and(id_3, SN, RN); - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b0)) (RN => Q) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b0)) (RN => Q) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b0)) (SN => QN) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b0)) (SN => QN) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - - $width(negedge CK &&& id_3, 0.1, 0, NOTIFIER); - $width(posedge CK &&& id_3, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $recovery(posedge RN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge RN, 0.1, NOTIFIER); - $width(negedge RN, 0.1, 0, NOTIFIER); - $width(posedge RN, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SI, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SI, 0.1, 0.1, NOTIFIER); - $width(negedge SI, 0.1, 0, NOTIFIER); - $width(posedge SI, 0.1, 0, NOTIFIER); - $recovery(posedge SN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge SN, 0.1, NOTIFIER); - $width(negedge SN, 0.1, 0, NOTIFIER); - $width(posedge SN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, SN, RN, nextstate, CK, NOTIFIER); - output IQ; - input SN; - input RN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // SN RN nextstate CK NOTIFIER : @IQ : IQ - 1 ? 0 r ? : ? : 0; - ? 1 1 r ? : ? : 1; - 1 ? 0 * ? : 0 : 0; // reduce pessimism - ? 1 1 * ? : 1 : 1; // reduce pessimism - 1 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 1 ? ? ? : ? : 1; // SN activated - * 1 ? ? ? : 1 : 1; // Cover all transitions on SN - ? 0 ? ? ? : ? : 0; // RN activated - 1 * ? ? ? : 0 : 0; // Cover all transitions on RN - ? ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module SDFFRS_X2 (CK, D, RN, SE, SI, SN, Q, QN); - - input CK; - input D; - input RN; - input SE; - input SI; - input SN; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, SN, RN, nextstate, CK, NOTIFIER); - and(IQN, i_33, i_34); - not(i_33, IQ); - not(i_34, i_35); - and(i_35, i_36, i_37); - not(i_36, SN); - not(i_37, RN); - buf(Q, IQ); - buf(QN, IQN); - or(nextstate, i_38, i_39); - and(i_38, SE, SI); - and(i_39, D, i_40); - not(i_40, SE); - - and(id_3, SN, RN); - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b0)) (RN => Q) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b0)) (RN => Q) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1) && (SN == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0) && (SN == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b1) && (RN == 1'b0)) (SN => QN) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b0)) (SN => QN) = (0.1, 0.1); - if((CK == 1'b0) && (RN == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - - $width(negedge CK &&& id_3, 0.1, 0, NOTIFIER); - $width(posedge CK &&& id_3, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $recovery(posedge RN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge RN, 0.1, NOTIFIER); - $width(negedge RN, 0.1, 0, NOTIFIER); - $width(posedge RN, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SI, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SI, 0.1, 0.1, NOTIFIER); - $width(negedge SI, 0.1, 0, NOTIFIER); - $width(posedge SI, 0.1, 0, NOTIFIER); - $recovery(posedge SN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge SN, 0.1, NOTIFIER); - $width(negedge SN, 0.1, 0, NOTIFIER); - $width(posedge SN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, RN, nextstate, CK, NOTIFIER); - output IQ; - input RN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // RN nextstate CK NOTIFIER : @IQ : IQ - ? 0 r ? : ? : 0; - 1 1 r ? : ? : 1; - ? 0 * ? : 0 : 0; // reduce pessimism - 1 1 * ? : 1 : 1; // reduce pessimism - 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 ? ? ? : ? : 0; // RN activated - * ? ? ? : 0 : 0; // Cover all transitions on RN - ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module SDFFR_X1 (CK, D, RN, SE, SI, Q, QN); - - input CK; - input D; - input RN; - input SE; - input SI; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, RN, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - or(nextstate, i_18, i_19); - and(i_18, SE, SI); - and(i_19, D, i_20); - not(i_20, SE); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - - $width(negedge CK &&& ((RN)), 0.1, 0, NOTIFIER); - $width(posedge CK &&& ((RN)), 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $recovery(posedge RN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge RN, 0.1, NOTIFIER); - $width(negedge RN, 0.1, 0, NOTIFIER); - $width(posedge RN, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SI, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SI, 0.1, 0.1, NOTIFIER); - $width(negedge SI, 0.1, 0, NOTIFIER); - $width(posedge SI, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, RN, nextstate, CK, NOTIFIER); - output IQ; - input RN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // RN nextstate CK NOTIFIER : @IQ : IQ - ? 0 r ? : ? : 0; - 1 1 r ? : ? : 1; - ? 0 * ? : 0 : 0; // reduce pessimism - 1 1 * ? : 1 : 1; // reduce pessimism - 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 ? ? ? : ? : 0; // RN activated - * ? ? ? : 0 : 0; // Cover all transitions on RN - ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module SDFFR_X2 (CK, D, RN, SE, SI, Q, QN); - - input CK; - input D; - input RN; - input SE; - input SI; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, RN, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - or(nextstate, i_18, i_19); - and(i_18, SE, SI); - and(i_19, D, i_20); - not(i_20, SE); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge RN => (Q +: 1'b0)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge RN => (QN +: 1'b1)) = (0.1, 0.1); - - $width(negedge CK &&& ((RN)), 0.1, 0, NOTIFIER); - $width(posedge CK &&& ((RN)), 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $recovery(posedge RN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge RN, 0.1, NOTIFIER); - $width(negedge RN, 0.1, 0, NOTIFIER); - $width(posedge RN, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SI, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SI, 0.1, 0.1, NOTIFIER); - $width(negedge SI, 0.1, 0, NOTIFIER); - $width(posedge SI, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, SN, nextstate, CK, NOTIFIER); - output IQ; - input SN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // SN nextstate CK NOTIFIER : @IQ : IQ - 1 0 r ? : ? : 0; - ? 1 r ? : ? : 1; - 1 0 * ? : 0 : 0; // reduce pessimism - ? 1 * ? : 1 : 1; // reduce pessimism - 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 ? ? ? : ? : 1; // SN activated - * ? ? ? : 1 : 1; // Cover all transitions on SN - ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module SDFFS_X1 (CK, D, SE, SI, SN, Q, QN); - - input CK; - input D; - input SE; - input SI; - input SN; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, SN, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - or(nextstate, i_18, i_19); - and(i_18, SE, SI); - and(i_19, D, i_20); - not(i_20, SE); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - - $width(negedge CK &&& ((SN)), 0.1, 0, NOTIFIER); - $width(posedge CK &&& ((SN)), 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SI, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SI, 0.1, 0.1, NOTIFIER); - $width(negedge SI, 0.1, 0, NOTIFIER); - $width(posedge SI, 0.1, 0, NOTIFIER); - $recovery(posedge SN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge SN, 0.1, NOTIFIER); - $width(negedge SN, 0.1, 0, NOTIFIER); - $width(posedge SN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, SN, nextstate, CK, NOTIFIER); - output IQ; - input SN; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table - // SN nextstate CK NOTIFIER : @IQ : IQ - 1 0 r ? : ? : 0; - ? 1 r ? : ? : 1; - 1 0 * ? : 0 : 0; // reduce pessimism - ? 1 * ? : 1 : 1; // reduce pessimism - 1 * ? ? : ? : -; // Ignore all edges on nextstate - 1 ? f ? : ? : -; // Ignore non-triggering clock edge - 0 ? ? ? : ? : 1; // SN activated - * ? ? ? : 1 : 1; // Cover all transitions on SN - ? ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module SDFFS_X2 (CK, D, SE, SI, SN, Q, QN); - - input CK; - input D; - input SE; - input SI; - input SN; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, SN, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - or(nextstate, i_18, i_19); - and(i_18, SE, SI); - and(i_19, D, i_20); - not(i_20, SE); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge SN => (Q +: 1'b1)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - if((CK == 1'b1)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - if((CK == 1'b0)) (negedge SN => (QN +: 1'b0)) = (0.1, 0.1); - - $width(negedge CK &&& ((SN)), 0.1, 0, NOTIFIER); - $width(posedge CK &&& ((SN)), 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SI, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SI, 0.1, 0.1, NOTIFIER); - $width(negedge SI, 0.1, 0, NOTIFIER); - $width(posedge SI, 0.1, 0, NOTIFIER); - $recovery(posedge SN, posedge CK, 0.1, NOTIFIER); - $hold(posedge CK, posedge SN, 0.1, NOTIFIER); - $width(negedge SN, 0.1, 0, NOTIFIER); - $width(posedge SN, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 r ? : ? : 0; - 1 r ? : ? : 1; - 0 * ? : 0 : 0; // reduce pessimism - 1 * ? : 1 : 1; // reduce pessimism - * ? ? : ? : -; // Ignore all edges on nextstate - ? f ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module SDFF_X1 (CK, D, SE, SI, Q, QN); - - input CK; - input D; - input SE; - input SI; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - or(nextstate, i_18, i_19); - and(i_18, SE, SI); - and(i_19, D, i_20); - not(i_20, SE); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SI, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SI, 0.1, 0.1, NOTIFIER); - $width(negedge SI, 0.1, 0, NOTIFIER); - $width(posedge SI, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, CK, NOTIFIER); - output IQ; - input nextstate; - input CK; - input NOTIFIER; - reg IQ; - - table -// nextstate CK NOTIFIER : @IQ : IQ - 0 r ? : ? : 0; - 1 r ? : ? : 1; - 0 * ? : 0 : 0; // reduce pessimism - 1 * ? : 1 : 1; // reduce pessimism - * ? ? : ? : -; // Ignore all edges on nextstate - ? f ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module SDFF_X2 (CK, D, SE, SI, Q, QN); - - input CK; - input D; - input SE; - input SI; - output Q; - output QN; - reg NOTIFIER; - - seq3(IQ, nextstate, CK, NOTIFIER); - not(IQN, IQ); - buf(Q, IQ); - buf(QN, IQN); - or(nextstate, i_18, i_19); - and(i_18, SE, SI); - and(i_19, D, i_20); - not(i_20, SE); - - - specify - (posedge CK => (Q +: D)) = (0.1, 0.1); - (posedge CK => (QN -: D)) = (0.1, 0.1); - - $width(negedge CK, 0.1, 0, NOTIFIER); - $width(posedge CK, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SE, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SE, 0.1, 0.1, NOTIFIER); - $width(negedge SE, 0.1, 0, NOTIFIER); - $width(posedge SE, 0.1, 0, NOTIFIER); - $setuphold(posedge CK, negedge SI, 0.1, 0.1, NOTIFIER); - $setuphold(posedge CK, posedge SI, 0.1, 0.1, NOTIFIER); - $width(negedge SI, 0.1, 0, NOTIFIER); - $width(posedge SI, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -module TBUF_X1 (A, EN, Z); - - input A; - input EN; - output Z; - - bufif0(Z, Z_in, Z_enable); - buf(Z_enable, EN); - buf(Z_in, A); - - specify - (A => Z) = (0.1, 0.1); - (EN => Z) = (0.1, 0.1); - endspecify - -endmodule - -module TBUF_X16 (A, EN, Z); - - input A; - input EN; - output Z; - - bufif0(Z, Z_in, Z_enable); - buf(Z_enable, EN); - buf(Z_in, A); - - specify - (A => Z) = (0.1, 0.1); - (EN => Z) = (0.1, 0.1); - endspecify - -endmodule - -module TBUF_X2 (A, EN, Z); - - input A; - input EN; - output Z; - - bufif0(Z, Z_in, Z_enable); - buf(Z_enable, EN); - buf(Z_in, A); - - specify - (A => Z) = (0.1, 0.1); - (EN => Z) = (0.1, 0.1); - endspecify - -endmodule - -module TBUF_X4 (A, EN, Z); - - input A; - input EN; - output Z; - - bufif0(Z, Z_in, Z_enable); - buf(Z_enable, EN); - buf(Z_in, A); - - specify - (A => Z) = (0.1, 0.1); - (EN => Z) = (0.1, 0.1); - endspecify - -endmodule - -module TBUF_X8 (A, EN, Z); - - input A; - input EN; - output Z; - - bufif0(Z, Z_in, Z_enable); - buf(Z_enable, EN); - buf(Z_in, A); - - specify - (A => Z) = (0.1, 0.1); - (EN => Z) = (0.1, 0.1); - endspecify - -endmodule - -module TINV_X1 (EN, I, ZN); - - input EN; - input I; - output ZN; - - bufif0(ZN, ZN_in, ZN_enable); - buf(ZN_enable, EN); - not(ZN_in, I); - - specify - (EN => ZN) = (0.1, 0.1); - (I => ZN) = (0.1, 0.1); - endspecify - -endmodule - -primitive seq3 (IQ, nextstate, G, NOTIFIER); - output IQ; - input nextstate; - input G; - input NOTIFIER; - reg IQ; - - table -// nextstate G NOTIFIER : @IQ : IQ - 0 1 ? : ? : 0; - 1 1 ? : ? : 1; - * ? ? : ? : -; // Ignore all edges on nextstate - ? 0 ? : ? : -; // Ignore non-triggering clock edge - ? ? * : ? : x; // Any NOTIFIER change - endtable -endprimitive - -module TLAT_X1 (D, G, OE, Q); - - input D; - input G; - input OE; - output Q; - reg NOTIFIER; - - bufif0(Q, Q_in, Q_enable); - not(Q_enable, OE); - seq3(IQ, nextstate, G, NOTIFIER); - not(IQN, IQ); - buf(Q_in, IQ); - buf(nextstate, D); - - - specify - (D => Q) = (0.1, 0.1); - (posedge G => (Q +: D)) = (0.1, 0.1); - (OE => Q) = (0.1, 0.1); - - $setuphold(negedge G, negedge D, 0.1, 0.1, NOTIFIER); - $setuphold(negedge G, posedge D, 0.1, 0.1, NOTIFIER); - $width(negedge D, 0.1, 0, NOTIFIER); - $width(posedge D, 0.1, 0, NOTIFIER); - $width(negedge G, 0.1, 0, NOTIFIER); - $width(posedge G, 0.1, 0, NOTIFIER); - $width(negedge OE, 0.1, 0, NOTIFIER); - $width(posedge OE, 0.1, 0, NOTIFIER); - endspecify - -endmodule - -module XNOR2_X1 (A, B, ZN); - - input A; - input B; - output ZN; - - not(ZN, i_46); - xor(i_46, A, B); - - specify - if((B == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b1)) (B => ZN) = (0.1, 0.1); - if((A == 1'b0)) (B => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module XNOR2_X2 (A, B, ZN); - - input A; - input B; - output ZN; - - not(ZN, i_46); - xor(i_46, A, B); - - specify - if((B == 1'b0)) (A => ZN) = (0.1, 0.1); - if((B == 1'b1)) (A => ZN) = (0.1, 0.1); - if((A == 1'b1)) (B => ZN) = (0.1, 0.1); - if((A == 1'b0)) (B => ZN) = (0.1, 0.1); - endspecify - -endmodule - -module XOR2_X1 (A, B, Z); - - input A; - input B; - output Z; - - xor(Z, A, B); - - specify - if((B == 1'b0)) (A => Z) = (0.1, 0.1); - if((B == 1'b1)) (A => Z) = (0.1, 0.1); - if((A == 1'b1)) (B => Z) = (0.1, 0.1); - if((A == 1'b0)) (B => Z) = (0.1, 0.1); - endspecify - -endmodule - -module XOR2_X2 (A, B, Z); - - input A; - input B; - output Z; - - xor(Z, A, B); - - specify - if((B == 1'b0)) (A => Z) = (0.1, 0.1); - if((B == 1'b1)) (A => Z) = (0.1, 0.1); - if((A == 1'b1)) (B => Z) = (0.1, 0.1); - if((A == 1'b0)) (B => Z) = (0.1, 0.1); - endspecify - -endmodule - -// -// End of file -// Index: lib/LICENSE =================================================================== --- lib/LICENSE (revision 20) +++ lib/LICENSE (nonexistent) @@ -1,16 +0,0 @@ -The Open Cell Library is intended for use by universities, other research activities, educational programs and Si2.org members. -However allowed, the Open Cell Library is not intended for commercial use. If you use the Open Cell Library for demonstration of commercial EDA tools -it is required to mention, indicate that the library was developped by Nangate. - -If you have questions or concerns then please contact us at openlibrary@nangate.com - -The Open Cell Library is provided by Nangate under the following License: - -Nangate Open Cell Library License, Version 1.0. February 20, 2008 - -Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the Open Cell Library and accompanying documentation (the "Library") covered by this license to use, reproduce, display, distribute, execute, and transmit the Library, and to prepare derivative works of the Library, and to permit third-parties to whom the Library is furnished to do so, all subject to the following: - -The copyright notices in the Library and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Library, in whole or in part, and all derivative works of the Library, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. The library has been generated using a non-optimized open PDK and is not suited for any commercial purpose. Measuring or benchmarking the Library against any other library or standard cell set is prohibited. Any meaningful library benchmarking must be done in collaboration with Nangate or other providers of optimized and production-ready PDKs. - -THE LIBRARY IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE LIBRARY BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE LIBRARY OR THE USE OR OTHER DEALINGS IN THE LIBRARY. - Index: vc/define.v =================================================================== --- vc/define.v (revision 20) +++ vc/define.v (nonexistent) @@ -1,20 +0,0 @@ -/* - Asynchronous SDM NoC - (C)2011 Wei Song - Advanced Processor Technologies Group - Computer Science, the Univ. of Manchester, UK - - Authors: - Wei Song wsong83@gmail.com - - License: LGPL 3.0 or later - - Router configuration header file for VC routers. - - History: - 20/09/2009 Initial version. - 23/05/2011 Clean up for opensource. - -*/ - -// currently VC router does not have any configurable structure variables

powered by: WebSVN 2.1.0

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