.checkoff "" "Lab #3: adder" 0 .verify s[31:0] periodic(9.9E-8,1.0000000000000001E-7) + 0x00000000 // 99ns + 0x55555555 // 199ns + 0x55555555 // 299ns + 0xAAAAAAAA // 399ns + 0xAAAAAAAA // 499ns + 0xAAAAAAAA // 599ns + 0x55555554 // 699ns + 0x00000000 // 799ns + 0x00000000 // 899ns + 0xFFFFFFFF // 999ns + 0x00000001 // 1099ns + 0x00000002 // 1199ns + 0x00000004 // 1299ns + 0x00000008 // 1399ns + 0x00000010 // 1499ns + 0x00000020 // 1599ns + 0x00000040 // 1699ns + 0x00000080 // 1799ns + 0x00000100 // 1899ns + 0x00000200 // 1999ns + 0x00000400 // 2099ns + 0x00000800 // 2199ns + 0x00001000 // 2299ns + 0x00002000 // 2399ns + 0x00004000 // 2499ns + 0x00008000 // 2599ns + 0x00010000 // 2699ns + 0x00020000 // 2799ns + 0x00040000 // 2899ns + 0x00080000 // 2999ns + 0x00100000 // 3099ns + 0x00200000 // 3199ns + 0x00400000 // 3298ns + 0x00800000 // 3398ns + 0x01000000 // 3498ns + 0x02000000 // 3598ns + 0x04000000 // 3698ns + 0x08000000 // 3798ns + 0x10000000 // 3898ns + 0x20000000 // 3998ns + 0x40000000 // 4098ns + 0x80000000 // 4198ns + 0x00000005 // 4298ns + 0x00000005 // 4398ns + 0x00000005 // 4498ns + 0x00000001 // 4598ns + 0x7FFFFFFE // 4698ns + 0x6DCBA988 // 4798ns + 0xFFFFFFFE // 4898ns + 0xFFFFFFFE // 4998ns + 0xFFFFFFFE // 5098ns + 0x80000001 // 5198ns + 0x80000001 // 5298ns + 0x80000001 // 5398ns + 0x00000000 // 5498ns + 0x00000000 // 5598ns + 0x00000000 // 5698ns .verify z periodic(9.9E-8,1.0000000000000001E-7) + 0x1 // 99ns + 0x0 // 199ns + 0x0 // 299ns + 0x0 // 399ns + 0x0 // 499ns + 0x0 // 599ns + 0x0 // 699ns + 0x1 // 799ns + 0x1 // 899ns + 0x0 // 999ns + 0x0 // 1099ns + 0x0 // 1199ns + 0x0 // 1299ns + 0x0 // 1399ns + 0x0 // 1499ns + 0x0 // 1599ns + 0x0 // 1699ns + 0x0 // 1799ns + 0x0 // 1899ns + 0x0 // 1999ns + 0x0 // 2099ns + 0x0 // 2199ns + 0x0 // 2299ns + 0x0 // 2399ns + 0x0 // 2499ns + 0x0 // 2599ns + 0x0 // 2699ns + 0x0 // 2799ns + 0x0 // 2899ns + 0x0 // 2999ns + 0x0 // 3099ns + 0x0 // 3199ns + 0x0 // 3298ns + 0x0 // 3398ns + 0x0 // 3498ns + 0x0 // 3598ns + 0x0 // 3698ns + 0x0 // 3798ns + 0x0 // 3898ns + 0x0 // 3998ns + 0x0 // 4098ns + 0x0 // 4198ns + 0x0 // 4298ns + 0x0 // 4398ns + 0x0 // 4498ns + 0x0 // 4598ns + 0x0 // 4698ns + 0x0 // 4798ns + 0x0 // 4898ns + 0x0 // 4998ns + 0x0 // 5098ns + 0x0 // 5198ns + 0x0 // 5298ns + 0x0 // 5398ns + 0x1 // 5498ns + 0x1 // 5598ns + 0x1 // 5698ns .verify v periodic(9.9E-8,1.0000000000000001E-7) + 0x0 // 99ns + 0x0 // 199ns + 0x0 // 299ns + 0x1 // 399ns + 0x0 // 499ns + 0x0 // 599ns + 0x1 // 699ns + 0x0 // 799ns + 0x0 // 899ns + 0x0 // 999ns + 0x0 // 1099ns + 0x0 // 1199ns + 0x0 // 1299ns + 0x0 // 1399ns + 0x0 // 1499ns + 0x0 // 1599ns + 0x0 // 1699ns + 0x0 // 1799ns + 0x0 // 1899ns + 0x0 // 1999ns + 0x0 // 2099ns + 0x0 // 2199ns + 0x0 // 2299ns + 0x0 // 2399ns + 0x0 // 2499ns + 0x0 // 2599ns + 0x0 // 2699ns + 0x0 // 2799ns + 0x0 // 2899ns + 0x0 // 2999ns + 0x0 // 3099ns + 0x0 // 3199ns + 0x0 // 3298ns + 0x0 // 3398ns + 0x0 // 3498ns + 0x0 // 3598ns + 0x0 // 3698ns + 0x0 // 3798ns + 0x0 // 3898ns + 0x0 // 3998ns + 0x0 // 4098ns + 0x0 // 4198ns + 0x0 // 4298ns + 0x0 // 4398ns + 0x0 // 4498ns + 0x1 // 4598ns + 0x1 // 4698ns + 0x1 // 4798ns + 0x0 // 4898ns + 0x0 // 4998ns + 0x0 // 5098ns + 0x1 // 5198ns + 0x1 // 5298ns + 0x1 // 5398ns + 0x0 // 5498ns + 0x0 // 5598ns + 0x0 // 5698ns .verify n periodic(9.9E-8,1.0000000000000001E-7) + 0x0 // 99ns + 0x0 // 199ns + 0x0 // 299ns + 0x1 // 399ns + 0x1 // 499ns + 0x1 // 599ns + 0x0 // 699ns + 0x0 // 799ns + 0x0 // 899ns + 0x1 // 999ns + 0x0 // 1099ns + 0x0 // 1199ns + 0x0 // 1299ns + 0x0 // 1399ns + 0x0 // 1499ns + 0x0 // 1599ns + 0x0 // 1699ns + 0x0 // 1799ns + 0x0 // 1899ns + 0x0 // 1999ns + 0x0 // 2099ns + 0x0 // 2199ns + 0x0 // 2299ns + 0x0 // 2399ns + 0x0 // 2499ns + 0x0 // 2599ns + 0x0 // 2699ns + 0x0 // 2799ns + 0x0 // 2899ns + 0x0 // 2999ns + 0x0 // 3099ns + 0x0 // 3199ns + 0x0 // 3298ns + 0x0 // 3398ns + 0x0 // 3498ns + 0x0 // 3598ns + 0x0 // 3698ns + 0x0 // 3798ns + 0x0 // 3898ns + 0x0 // 3998ns + 0x0 // 4098ns + 0x1 // 4198ns + 0x0 // 4298ns + 0x0 // 4398ns + 0x0 // 4498ns + 0x0 // 4598ns + 0x0 // 4698ns + 0x0 // 4798ns + 0x1 // 4898ns + 0x1 // 4998ns + 0x1 // 5098ns + 0x1 // 5198ns + 0x1 // 5298ns + 0x1 // 5398ns + 0x0 // 5498ns + 0x0 // 5598ns + 0x0 // 5698ns * instantiate adder32 Xadder alufn[0] a[31:0] b[31:0] s[31:0] z v n adder32 * Generate sample 32-bit inputs for A and B and try different control settings Wa a[31:0] nrz(0,3.3,100n,0n,.1n,.1n) // test all combinations of 3 inputs to each bit of the adder. Also tests // N and both ways of producing V + 0x00000000 0x55555555 0x00000000 0x55555555 0xAAAAAAAA 0x00000000 0xAAAAAAAA + 0xFFFFFFFF 0x00000001 0xFFFFFFFF // test each input to Z logic + 0x00000001 0xFFFFFFF2 0x00000001 0xAAAAAAAC 0xFFFFFFFF 0x00000002 0x00000000 0x0000007F + 0x00000080 0x00000180 0x00000380 0x00000780 0x00001000 0x00001000 0x00003000 0x00007000 + 0x0000F000 0x00001000 0x00001000 0x0007F800 0x000FFC00 0x001FFE00 0x003FFF00 0x00000080 + 0xFF000000 0x04000000 0x03000FFF 0x070007FF 0x0F0003FF 0x1F0001FF 0x3F0000FF 0x80000001 // test all possible combinations of z,v,n inputs to compare32 + 0x00000002 0x00000002 0x00000002 + 0x80000000 0x80000000 0x80000000 + 0x00000003 0x00000003 0x00000003 + 0x7FFFFFFF 0x7FFFFFFF 0x7FFFFFFF + 0x00000003 0x00000003 0x00000003 Wb b[31:0] nrz(0,3.3,100n,0n,.1n,.1n) // test all combinations of 3 inputs to each bit of the adder. Also tests // N and both ways of producing V + 0x00000000 0x00000000 0x55555555 0x55555555 0x00000000 0xAAAAAAAA 0xAAAAAAAA + 0xFFFFFFFF 0xFFFFFFFF 0x00000000 // test each input to Z logic + 0x00000000 0xFFFFFFF0 0x00000003 0x5555555C 0xFFFFFFEF 0x0000001E 0xFFFFFFC0 0xFFFFFFFF + 0x00000080 0x00000080 0x00000080 0x00000080 0x00000000 0x00001000 0x00001000 0x00001000 + 0x00001000 0xFFFE1000 0xFFFC1000 0x00000800 0x00000400 0x00000200 0x00000100 0xFF800080 + 0x02000000 0xFE000000 0x00FFF001 0x00FFF801 0x00FFFC01 0x00FFFE01 0x00FFFF01 0x00000001 // test all possible combinations of z,v,n inputs to compare32 + 0xFFFFFFFD 0xFFFFFFFD 0xFFFFFFFD + 0x7FFFFFFF 0x00000002 0x12345678 + 0x00000005 0x00000005 0x00000005 + 0xFFFFFFFE 0xFFFFFFFE 0xFFFFFFFE + 0x00000003 0x00000003 0x00000003 Wc alufn[5:0] nrz(0,3.3,100n,0n,.1n,.1n) + 0x00 0x00 0x00 0x00 0x00 0x00 0x00 // ADD, SUB + 0x01 0x00 0x01 + 0 1 0 0 1 0 1 1 + 0 0 0 0 0 0 0 0 + 0 1 1 0 0 0 0 1 + 0 0 0 0 0 0 0 1 + 0x33 0x35 0x37 // CMPEQ, CMPLT, CMPLE + 0x33 0x35 0x37 + 0x33 0x35 0x37 + 0x33 0x35 0x37 + 0x33 0x35 0x37 * Run the simulation long enough to test all input values .tran 5700n * Some useful plots... you can plot additional signals by specifying * the appropriate .plot commands in your main netlist file. .plot L(a[31:0]) .plot L(b[31:0]) .plot L(alufn[0]) .plot L(s[31:0]) .plot z .plot v .plot n