* test vectors for debugging Beta control circuitry * allow verification, but not a real checkin .checkoff "" "Lab #6: control" 0 Xctl reset id[31:26] ra2sel bsel alufn[5:0] wdsel[1:0] werf moe mwe ctl Vclk clk 0 pulse(3.3,0,49.9ns,.1ns,.1ns,49.9ns,100ns) Vreset reset 0 pwl(0ns 3.3v, 101ns 3.3v, 101.1ns 0v) Wid id[31:26] nrz(0,3.3,100n,0n,.1n,.1n) // test reset + 0x00 // test each lab 6, step 1 opcode + 0b011000 // LD + 0b011001 // ST + 0b100000 // ADD + 0b100001 // SUB + 0b100100 // CMPEQ + 0b100101 // CMPLT + 0b100110 // CMPLE + 0b101000 // AND + 0b101001 // OR + 0b101010 // XOR + 0b101100 // SHL + 0b101101 // SHR + 0b101110 // SRA + 0b110000 // ADDC + 0b110001 // SUBC + 0b110100 // CMPEQC + 0b110101 // CMPLTC + 0b110110 // CMPLEC + 0b111000 // ANDC + 0b111001 // ORC + 0b111010 // XORC + 0b111100 // SHLC + 0b111101 // SHRC + 0b111110 // SRAC .verify ra2sel tvpairs() // test reset //+ 99ns // don't care // test each lab 6 opcode + 199ns 0 // LD + 299ns 1 // ST + 399ns 0 // ADD + 499ns 0 // SUB + 599ns 0 // CMPEQ + 699ns 0 // CMPLT + 799ns 0 // CMPLE + 899ns 0 // AND + 999ns 0 // OR + 1099ns 0 // XOR + 1199ns 0 // SHL + 1299ns 0 // SHR + 1399ns 0 // SRA + 1499ns 0 // ADDC + 1599ns 0 // SUBC + 1699ns 0 // CMPEQC + 1799ns 0 // CMPLTC + 1899ns 0 // CMPLEC + 1999ns 0 // ANDC + 2099ns 0 // ORC + 2199ns 0 // XORC + 2299ns 0 // SHLC + 2399ns 0 // SHRC + 2499ns 0 // SRAC .verify bsel tvpairs() // test reset //+ 99ns // don't care // test each lab 6 opcode + 199ns 1 // LD + 299ns 1 // ST + 399ns 0 // ADD + 499ns 0 // SUB + 599ns 0 // CMPEQ + 699ns 0 // CMPLT + 799ns 0 // CMPLE + 899ns 0 // AND + 999ns 0 // OR + 1099ns 0 // XOR + 1199ns 0 // SHL + 1299ns 0 // SHR + 1399ns 0 // SRA + 1499ns 1 // ADDC + 1599ns 1 // SUBC + 1699ns 1 // CMPEQC + 1799ns 1 // CMPLTC + 1899ns 1 // CMPLEC + 1999ns 1 // ANDC + 2099ns 1 // ORC + 2199ns 1 // XORC + 2299ns 1 // SHLC + 2399ns 1 // SHRC + 2499ns 1 // SRAC .verify wdsel[1:0] tvpairs() // test reset //+ 99ns // don't care // test each lab 6 opcode + 199ns 10 // LD //+ 299ns 1 // ST don't care + 399ns 01 // ADD + 499ns 01 // SUB + 599ns 01 // CMPEQ + 699ns 01 // CMPLT + 799ns 01 // CMPLE + 899ns 01 // AND + 999ns 01 // OR + 1099ns 01 // XOR + 1199ns 01 // SHL + 1299ns 01 // SHR + 1399ns 01 // SRA + 1499ns 01 // ADDC + 1599ns 01 // SUBC + 1699ns 01 // CMPEQC + 1799ns 01 // CMPLTC + 1899ns 01 // CMPLEC + 1999ns 01 // ANDC + 2099ns 01 // ORC + 2199ns 01 // XORC + 2299ns 01 // SHLC + 2399ns 01 // SHRC + 2499ns 01 // SRAC .verify werf tvpairs() // test reset //+ 99ns // don't care // test each lab 6 opcode + 199ns 1 // LD + 299ns 0 // ST + 399ns 1 // ADD + 499ns 1 // SUB + 599ns 1 // CMPEQ + 699ns 1 // CMPLT + 799ns 1 // CMPLE + 899ns 1 // AND + 999ns 1 // OR + 1099ns 1 // XOR + 1199ns 1 // SHL + 1299ns 1 // SHR + 1399ns 1 // SRA + 1499ns 1 // ADDC + 1599ns 1 // SUBC + 1699ns 1 // CMPEQC + 1799ns 1 // CMPLTC + 1899ns 1 // CMPLEC + 1999ns 1 // ANDC + 2099ns 1 // ORC + 2199ns 1 // XORC + 2299ns 1 // SHLC + 2399ns 1 // SHRC + 2499ns 1 // SRAC .verify moe tvpairs() // test reset //+ 99ns // don't care // test each lab 6 opcode + 199ns 1 // LD + 299ns 0 // ST + 399ns 0 // ADD + 499ns 0 // SUB + 599ns 0 // CMPEQ + 699ns 0 // CMPLT + 799ns 0 // CMPLE + 899ns 0 // AND + 999ns 0 // OR + 1099ns 0 // XOR + 1199ns 0 // SHL + 1299ns 0 // SHR + 1399ns 0 // SRA + 1499ns 0 // ADDC + 1599ns 0 // SUBC + 1699ns 0 // CMPEQC + 1799ns 0 // CMPLTC + 1899ns 0 // CMPLEC + 1999ns 0 // ANDC + 2099ns 0 // ORC + 2199ns 0 // XORC + 2299ns 0 // SHLC + 2399ns 0 // SHRC + 2499ns 0 // SRAC .verify mwe tvpairs() // test reset + 99ns 0 // reset // test each lab 6 opcode + 199ns 0 // LD + 299ns 1 // ST + 399ns 0 // ADD + 499ns 0 // SUB + 599ns 0 // CMPEQ + 699ns 0 // CMPLT + 799ns 0 // CMPLE + 899ns 0 // AND + 999ns 0 // OR + 1099ns 0 // XOR + 1199ns 0 // SHL + 1299ns 0 // SHR + 1399ns 0 // SRA + 1499ns 0 // ADDC + 1599ns 0 // SUBC + 1699ns 0 // CMPEQC + 1799ns 0 // CMPLTC + 1899ns 0 // CMPLEC + 1999ns 0 // ANDC + 2099ns 0 // ORC + 2199ns 0 // XORC + 2299ns 0 // SHLC + 2399ns 0 // SHRC + 2499ns 0 // SRAC .verify alufn[5:0] tvpairs() // test reset //+ 99ns // don't care // test each lab 6 opcode + 199ns 0x00 // LD + 299ns 0x00 // ST + 399ns 0x00 // ADD + 499ns 0x01 // SUB + 599ns 0x33 // CMPEQ + 699ns 0x35 // CMPLT + 799ns 0x37 // CMPLE + 899ns 0x18 // AND + 999ns 0x1E // OR + 1099ns 0x16 // XOR + 1199ns 0x20 // SHL + 1299ns 0x21 // SHR + 1399ns 0x23 // SRA + 1499ns 0x00 // ADDC + 1599ns 0x01 // SUBC + 1699ns 0x33 // CMPEQC + 1799ns 0x35 // CMPLTC + 1899ns 0x37 // CMPLEC + 1999ns 0x18 // ANDC + 2099ns 0x1E // ORC + 2199ns 0x16 // XORC + 2299ns 0x20 // SHLC + 2399ns 0x21 // SHRC + 2499ns 0x23 // SRAC * Run the simulation .tran 2500ns * Some useful plots... you can plot additional signals by specifying * the appropriate .plot commands in your main netlist file. .plot clk .plot reset .plot betaop(id[31:26]) .plot ra2sel .plot bsel .plot alufn[5:0] .plot wdsel[1:0] .plot werf .plot moe .plot mwe