* information on how to contact the on-line assignments server. A checksum * is included that is computed from the .verify statements, so don't change * those or you won't be able to complete your checkoff! .checkoff "6004.csail.mit.edu/currentsemester/6004assignment.doit" "Lab #3" -1780629072 .verify alu[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 + 0x00000000 // 4298ns + 0x00000000 // 4398ns + 0x00000000 // 4498ns + 0x00000000 // 4598ns + 0x00000001 // 4698ns + 0x00000001 // 4798ns + 0x00000000 // 4898ns + 0x00000001 // 4998ns + 0x00000001 // 5098ns + 0x00000000 // 5198ns + 0x00000000 // 5298ns + 0x00000000 // 5398ns + 0x00000001 // 5498ns + 0x00000000 // 5598ns + 0x00000001 // 5698ns + 0x00000000 // 5798ns + 0x00000000 // 5898ns + 0x00000000 // 5998ns + 0xFFFFFFFF // 6098ns + 0x00000000 // 6198ns + 0xFFFFFFFF // 6298ns + 0xFFFFFFFF // 6398ns + 0xFFFFFFFF // 6498ns + 0x00000000 // 6598ns + 0xFFFFFFFF // 6698ns + 0xFFFFFFFF // 6798ns + 0x00000000 // 6898ns + 0x00000000 // 6998ns + 0xFFFFFFFF // 7098ns + 0x00000000 // 7198ns + 0xFFFFFFFF // 7298ns + 0x87654321 // 7398ns + 0x0ECA8642 // 7498ns + 0x1D950C84 // 7598ns + 0x3B2A1908 // 7698ns + 0x76543210 // 7798ns + 0xECA86420 // 7898ns + 0xD950C840 // 7998ns + 0xB2A19080 // 8098ns + 0x65432100 // 8198ns + 0xCA864200 // 8299ns + 0x950C8400 // 8399ns + 0x2A190800 // 8499ns + 0x54321000 // 8599ns + 0xA8642000 // 8699ns + 0x50C84000 // 8799ns + 0xA1908000 // 8899ns + 0x43210000 // 8999ns + 0x86420000 // 9099ns + 0x0C840000 // 9199ns + 0x19080000 // 9299ns + 0x32100000 // 9399ns + 0x64200000 // 9499ns + 0xC8400000 // 9599ns + 0x90800000 // 9699ns + 0x21000000 // 9799ns + 0x42000000 // 9899ns + 0x84000000 // 9999ns + 0x08000000 // 10099ns + 0x10000000 // 10199ns + 0x20000000 // 10299ns + 0x40000000 // 10399ns + 0x80000000 // 10499ns + 0xFEDCBA98 // 10599ns + 0x3F6E5D4C // 10699ns + 0x3FB72EA6 // 10799ns + 0x0FDB9753 // 10899ns + 0x0FEDCBA9 // 10999ns + 0x03F6E5D4 // 11099ns + 0x03FB72EA // 11199ns + 0x00FDB975 // 11299ns + 0x007EDCBA // 11399ns + 0x007F6E5D // 11499ns + 0x001FB72E // 11599ns + 0x001FDB97 // 11699ns + 0x0007EDCB // 11799ns + 0x0007F6E5 // 11899ns + 0x0001FB72 // 11999ns + 0x0001FDB9 // 12099ns + 0x0000FEDC // 12199ns + 0x00003F6E // 12299ns + 0x00003FB7 // 12399ns + 0x00000FDB // 12499ns + 0x00000FED // 12599ns + 0x000003F6 // 12699ns + 0x000003FB // 12799ns + 0x000000FD // 12899ns + 0x0000007E // 12999ns + 0x0000007F // 13099ns + 0x0000001F // 13199ns + 0x0000001F // 13299ns + 0x00000007 // 13399ns + 0x00000007 // 13499ns + 0x00000001 // 13599ns + 0x00000001 // 13699ns + 0x87654321 // 13799ns + 0x3B2A1908 // 13899ns + 0xE1D950C8 // 13999ns + 0x0ECA8642 // 14099ns + 0xF8765432 // 14199ns + 0x03B2A190 // 14299ns + 0xFE1D950C // 14399ns + 0x00ECA864 // 14499ns + 0x00765432 // 14599ns + 0xFFC3B2A1 // 14699ns + 0x001D950C // 14799ns + 0xFFF0ECA8 // 14899ns + 0x00076543 // 14999ns + 0xFFFC3B2A // 15099ns + 0x0001D950 // 15199ns + 0xFFFF0ECA // 15299ns + 0xFFFF8765 // 15399ns + 0x00003B2A // 15499ns + 0xFFFFE1D9 // 15599ns + 0x00000ECA // 15699ns + 0xFFFFF876 // 15799ns + 0x000003B2 // 15899ns + 0xFFFFFE1D // 15999ns + 0x000000EC // 16099ns + 0x00000076 // 16199ns + 0xFFFFFFC3 // 16299ns + 0x0000001D // 16399ns + 0xFFFFFFF0 // 16499ns + 0x00000007 // 16599ns + 0xFFFFFFFC // 16699ns + 0x00000001 // 16799ns + 0xFFFFFFFF // 16899ns .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 + 0x1 // 5798ns + 0x0 // 5898ns + 0x0 // 5998ns + 0x0 // 6098ns + 0x1 // 6198ns + 0x0 // 6298ns + 0x0 // 6398ns + 0x0 // 6498ns + 0x1 // 6598ns + 0x0 // 6698ns + 0x0 // 6798ns + 0x0 // 6898ns + 0x1 // 6998ns + 0x0 // 7098ns + 0x0 // 7198ns + 0x0 // 7298ns + 0x0 // 7398ns + 0x0 // 7498ns + 0x0 // 7598ns + 0x0 // 7698ns + 0x0 // 7798ns + 0x0 // 7898ns + 0x0 // 7998ns + 0x0 // 8098ns + 0x0 // 8198ns + 0x0 // 8299ns + 0x0 // 8399ns + 0x0 // 8499ns + 0x0 // 8599ns + 0x0 // 8699ns + 0x0 // 8799ns + 0x0 // 8899ns + 0x0 // 8999ns + 0x0 // 9099ns + 0x0 // 9199ns + 0x0 // 9299ns + 0x0 // 9399ns + 0x0 // 9499ns + 0x0 // 9599ns + 0x0 // 9699ns + 0x0 // 9799ns + 0x0 // 9899ns + 0x0 // 9999ns + 0x0 // 10099ns + 0x0 // 10199ns + 0x0 // 10299ns + 0x0 // 10399ns + 0x0 // 10499ns + 0x0 // 10599ns + 0x0 // 10699ns + 0x0 // 10799ns + 0x0 // 10899ns + 0x0 // 10999ns + 0x0 // 11099ns + 0x0 // 11199ns + 0x0 // 11299ns + 0x0 // 11399ns + 0x0 // 11499ns + 0x0 // 11599ns + 0x0 // 11699ns + 0x0 // 11799ns + 0x0 // 11899ns + 0x0 // 11999ns + 0x0 // 12099ns + 0x0 // 12199ns + 0x0 // 12299ns + 0x0 // 12399ns + 0x0 // 12499ns + 0x0 // 12599ns + 0x0 // 12699ns + 0x0 // 12799ns + 0x0 // 12899ns + 0x0 // 12999ns + 0x0 // 13099ns + 0x0 // 13199ns + 0x0 // 13299ns + 0x0 // 13399ns + 0x0 // 13499ns + 0x0 // 13599ns + 0x0 // 13699ns + 0x0 // 13799ns + 0x0 // 13899ns + 0x0 // 13999ns + 0x0 // 14099ns + 0x0 // 14199ns + 0x0 // 14299ns + 0x0 // 14399ns + 0x0 // 14499ns + 0x0 // 14599ns + 0x0 // 14699ns + 0x0 // 14799ns + 0x0 // 14899ns + 0x0 // 14999ns + 0x0 // 15099ns + 0x0 // 15199ns + 0x0 // 15299ns + 0x0 // 15399ns + 0x0 // 15499ns + 0x0 // 15599ns + 0x0 // 15699ns + 0x0 // 15799ns + 0x0 // 15899ns + 0x0 // 15999ns + 0x0 // 16099ns + 0x0 // 16199ns + 0x0 // 16299ns + 0x0 // 16399ns + 0x0 // 16499ns + 0x0 // 16599ns + 0x0 // 16699ns + 0x0 // 16799ns + 0x0 // 16899ns .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 + 0x0 // 5798ns + 0x0 // 5898ns + 0x0 // 5998ns + 0x0 // 6098ns + 0x0 // 6198ns + 0x0 // 6298ns + 0x0 // 6398ns + 0x0 // 6498ns + 0x0 // 6598ns + 0x0 // 6698ns + 0x0 // 6798ns + 0x0 // 6898ns + 0x0 // 6998ns + 0x0 // 7098ns + 0x0 // 7198ns + 0x0 // 7298ns + 0x0 // 7398ns + 0x0 // 7498ns + 0x0 // 7598ns + 0x0 // 7698ns + 0x0 // 7798ns + 0x0 // 7898ns + 0x0 // 7998ns + 0x0 // 8098ns + 0x0 // 8198ns + 0x0 // 8299ns + 0x0 // 8399ns + 0x0 // 8499ns + 0x0 // 8599ns + 0x0 // 8699ns + 0x0 // 8799ns + 0x0 // 8899ns + 0x0 // 8999ns + 0x0 // 9099ns + 0x0 // 9199ns + 0x0 // 9299ns + 0x0 // 9399ns + 0x0 // 9499ns + 0x0 // 9599ns + 0x0 // 9699ns + 0x0 // 9799ns + 0x0 // 9899ns + 0x0 // 9999ns + 0x0 // 10099ns + 0x0 // 10199ns + 0x0 // 10299ns + 0x0 // 10399ns + 0x0 // 10499ns + 0x0 // 10599ns + 0x0 // 10699ns + 0x0 // 10799ns + 0x0 // 10899ns + 0x0 // 10999ns + 0x0 // 11099ns + 0x0 // 11199ns + 0x0 // 11299ns + 0x0 // 11399ns + 0x0 // 11499ns + 0x0 // 11599ns + 0x0 // 11699ns + 0x0 // 11799ns + 0x0 // 11899ns + 0x0 // 11999ns + 0x0 // 12099ns + 0x0 // 12199ns + 0x0 // 12299ns + 0x0 // 12399ns + 0x0 // 12499ns + 0x0 // 12599ns + 0x0 // 12699ns + 0x0 // 12799ns + 0x0 // 12899ns + 0x0 // 12999ns + 0x0 // 13099ns + 0x0 // 13199ns + 0x0 // 13299ns + 0x0 // 13399ns + 0x0 // 13499ns + 0x0 // 13599ns + 0x0 // 13699ns + 0x0 // 13799ns + 0x0 // 13899ns + 0x0 // 13999ns + 0x0 // 14099ns + 0x0 // 14199ns + 0x0 // 14299ns + 0x0 // 14399ns + 0x0 // 14499ns + 0x0 // 14599ns + 0x0 // 14699ns + 0x0 // 14799ns + 0x0 // 14899ns + 0x0 // 14999ns + 0x0 // 15099ns + 0x0 // 15199ns + 0x0 // 15299ns + 0x0 // 15399ns + 0x0 // 15499ns + 0x0 // 15599ns + 0x0 // 15699ns + 0x0 // 15799ns + 0x0 // 15899ns + 0x0 // 15999ns + 0x0 // 16099ns + 0x0 // 16199ns + 0x0 // 16299ns + 0x0 // 16399ns + 0x0 // 16499ns + 0x0 // 16599ns + 0x0 // 16699ns + 0x0 // 16799ns + 0x0 // 16899ns .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 + 0x0 // 5798ns + 0x1 // 5898ns + 0x1 // 5998ns + 0x1 // 6098ns + 0x0 // 6198ns + 0x1 // 6298ns + 0x1 // 6398ns + 0x1 // 6498ns + 0x0 // 6598ns + 0x1 // 6698ns + 0x1 // 6798ns + 0x1 // 6898ns + 0x0 // 6998ns + 0x1 // 7098ns + 0x1 // 7198ns + 0x1 // 7298ns + 0x1 // 7398ns + 0x1 // 7498ns + 0x1 // 7598ns + 0x1 // 7698ns + 0x1 // 7798ns + 0x1 // 7898ns + 0x1 // 7998ns + 0x1 // 8098ns + 0x1 // 8198ns + 0x1 // 8299ns + 0x1 // 8399ns + 0x1 // 8499ns + 0x1 // 8599ns + 0x1 // 8699ns + 0x1 // 8799ns + 0x1 // 8899ns + 0x1 // 8999ns + 0x1 // 9099ns + 0x1 // 9199ns + 0x1 // 9299ns + 0x1 // 9399ns + 0x1 // 9499ns + 0x1 // 9599ns + 0x1 // 9699ns + 0x1 // 9799ns + 0x1 // 9899ns + 0x1 // 9999ns + 0x1 // 10099ns + 0x1 // 10199ns + 0x1 // 10299ns + 0x1 // 10399ns + 0x1 // 10499ns + 0x1 // 10599ns + 0x0 // 10699ns + 0x1 // 10799ns + 0x0 // 10899ns + 0x1 // 10999ns + 0x0 // 11099ns + 0x1 // 11199ns + 0x0 // 11299ns + 0x0 // 11399ns + 0x1 // 11499ns + 0x0 // 11599ns + 0x1 // 11699ns + 0x0 // 11799ns + 0x1 // 11899ns + 0x0 // 11999ns + 0x1 // 12099ns + 0x1 // 12199ns + 0x0 // 12299ns + 0x1 // 12399ns + 0x0 // 12499ns + 0x1 // 12599ns + 0x0 // 12699ns + 0x1 // 12799ns + 0x0 // 12899ns + 0x0 // 12999ns + 0x1 // 13099ns + 0x0 // 13199ns + 0x1 // 13299ns + 0x0 // 13399ns + 0x1 // 13499ns + 0x0 // 13599ns + 0x1 // 13699ns + 0x1 // 13799ns + 0x0 // 13899ns + 0x1 // 13999ns + 0x0 // 14099ns + 0x1 // 14199ns + 0x0 // 14299ns + 0x1 // 14399ns + 0x0 // 14499ns + 0x0 // 14599ns + 0x1 // 14699ns + 0x0 // 14799ns + 0x1 // 14899ns + 0x0 // 14999ns + 0x1 // 15099ns + 0x0 // 15199ns + 0x1 // 15299ns + 0x1 // 15399ns + 0x0 // 15499ns + 0x1 // 15599ns + 0x0 // 15699ns + 0x1 // 15799ns + 0x0 // 15899ns + 0x1 // 15999ns + 0x0 // 16099ns + 0x0 // 16199ns + 0x1 // 16299ns + 0x0 // 16399ns + 0x1 // 16499ns + 0x0 // 16599ns + 0x1 // 16699ns + 0x0 // 16799ns + 0x1 // 16899ns * instantiate alu Xalu alufn[5:0] a[31:0] b[31:0] alu[31:0] z v n alu * 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 // test logic operations + 0x00000000 0xFFFFFFFF 0x00000000 0xFFFFFFFF + 0x00000000 0xFFFFFFFF 0x00000000 0xFFFFFFFF + 0x00000000 0xFFFFFFFF 0x00000000 0xFFFFFFFF + 0x00000000 0xFFFFFFFF 0x00000000 0xFFFFFFFF // test left shift + 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 + 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 + 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 + 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 0x87654321 // test right shift + 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 + 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 + 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 + 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 0x7EDCBA98 0xFEDCBA98 // test arithmetic right shift + 0x87654321 0x76543210 0x87654321 0x76543210 0x87654321 0x76543210 0x87654321 0x76543210 + 0x76543210 0x87654321 0x76543210 0x87654321 0x76543210 0x87654321 0x76543210 0x87654321 + 0x87654321 0x76543210 0x87654321 0x76543210 0x87654321 0x76543210 0x87654321 0x76543210 + 0x76543210 0x87654321 0x76543210 0x87654321 0x76543210 0x87654321 0x76543210 0x87654321 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 // test logic operations + 0x00000000 0x00000000 0xFFFFFFFF 0xFFFFFFFF + 0x00000000 0x00000000 0xFFFFFFFF 0xFFFFFFFF + 0x00000000 0x00000000 0xFFFFFFFF 0xFFFFFFFF + 0x00000000 0x00000000 0xFFFFFFFF 0xFFFFFFFF // test left shift + 0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 + 0x00000008 0x00000009 0x0000000A 0x0000000B 0x0000000C 0x0000000D 0x0000000E 0x0000000F + 0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000015 0x00000016 0x00000017 + 0x00000018 0x00000019 0x0000001A 0x0000001B 0x0000001C 0x0000001D 0x0000001E 0x0000001F // test right shift + 0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 + 0x00000008 0x00000009 0x0000000A 0x0000000B 0x0000000C 0x0000000D 0x0000000E 0x0000000F + 0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000015 0x00000016 0x00000017 + 0x00000018 0x00000019 0x0000001A 0x0000001B 0x0000001C 0x0000001D 0x0000001E 0x0000001F // test arithmetic right shift + 0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 + 0x00000008 0x00000009 0x0000000A 0x0000000B 0x0000000C 0x0000000D 0x0000000E 0x0000000F + 0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000015 0x00000016 0x00000017 + 0x00000018 0x00000019 0x0000001A 0x0000001B 0x0000001C 0x0000001D 0x0000001E 0x0000001F 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 + 0x18 0x18 0x18 0x18 // AND + 0x1E 0x1E 0x1E 0x1E // OR + 0x16 0x16 0x16 0x16 // XOR + 0x1A 0x1A 0x1A 0x1A // A + 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 // SHL + 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 + 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 + 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 + 0x21 0x21 0x21 0x21 0x21 0x21 0x21 0x21 // SHR + 0x21 0x21 0x21 0x21 0x21 0x21 0x21 0x21 + 0x21 0x21 0x21 0x21 0x21 0x21 0x21 0x21 + 0x21 0x21 0x21 0x21 0x21 0x21 0x21 0x21 + 0x23 0x23 0x23 0x23 0x23 0x23 0x23 0x23 // SRA + 0x23 0x23 0x23 0x23 0x23 0x23 0x23 0x23 + 0x23 0x23 0x23 0x23 0x23 0x23 0x23 0x23 + 0x23 0x23 0x23 0x23 0x23 0x23 0x23 0x23 * Run the simulation long enough to test all input values .tran 16900n * Some useful plots... you can plot additional signals by specifying * the appropriate .plot commands in your main netlist file. .plotdef op + ADD SUB MUL ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? + ??? ??? ??? ??? ??? ??? XOR ??? AND ??? A ??? ??? ??? OR ??? + SHL SHR ??? SRA SHL SHR ??? SRA SHL SHR ??? SRA SHL SHR ??? SRA + ??? ??? ??? CMPEQ ??? CMPLT ??? CMPLE + ??? ??? ??? CMPEQ ??? CMPLT ??? CMPLE .plot L(a[31:0]) .plot L(b[31:0]) .plot op(alufn[5:0]) .plot L(alu[31:0])