# revised 11/6/00 puts "from ecomp add32.e bshift.e part2.e -o part2.net" puts "from esim < part2.run > part2.out" esim load part2.net # revised 11/11/99 # load up the instruction memory with 32 bit works # lw 1,4(0) no stall in this .run esim write -hex inst_mem.mr 0x0 32 80010004 # lw 2,8(0) esim write -hex inst_mem.mr 0x20 32 80020008 # nop we will check pipeline stall later esim write -hex inst_mem.mr 0x40 32 00000000 # add 2,1,2 esim write -hex inst_mem.mr 0x60 32 10221001 # add 2,2,2 tricky, which reg 2? esim write -hex inst_mem.mr 0x80 32 10421001 # add 2,2,1 esim write -hex inst_mem.mr 0xA0 32 10411001 # lw 3,12(0) esim write -hex inst_mem.mr 0xC0 32 8003000C # lw 4,16(0) esim write -hex inst_mem.mr 0xE0 32 80040010 # sub 3,3,3 esim write -hex inst_mem.mr 0x100 32 10631802 # compl 4,4 esim write -hex inst_mem.mr 0x120 32 10042004 # ai 3,4(3) esim write -hex inst_mem.mr 0x140 32 A0630004 # sw 3,4(3) forward index esim write -hex inst_mem.mr 0x160 32 E0630004 # beq 3,3,2 no stall esim write -hex inst_mem.mr 0x180 32 04630002 # lw 5,20(0) branch slot execute esim write -hex inst_mem.mr 0x1A0 32 80050014 # lw 6,24(0) branched over esim write -hex inst_mem.mr 0x1C0 32 80060018 # lw 7,28(0) executed esim write -hex inst_mem.mr 0x1E0 32 8007001C # jump "260" esim write -hex inst_mem.mr 0x200 32 08000013 # lw 8,32(0) branch slot executed esim write -hex inst_mem.mr 0x220 32 80080020 # lw 9,36(0) jumped over esim write -hex inst_mem.mr 0x240 32 80090024 # lw 10,40(0) executed esim write -hex inst_mem.mr 0x260 32 800A0028 # shr 4,4,4 esim write -hex inst_mem.mr 0x280 32 10802108 # sw 10,36(0) forward esim write -hex inst_mem.mr 0x2A0 32 E00A0024 # nop esim write -hex inst_mem.mr 0x2C0 32 00000000 # nop esim write -hex inst_mem.mr 0x2E0 32 00000000 # nop esim write -hex inst_mem.mr 0x300 32 00000000 # nop esim write -hex inst_mem.mr 0x320 32 00000000 # nop esim write -hex inst_mem.mr 0x340 32 00000000 # # load register zero with zero, hopefully safe from software bug that # might change it esim write -hex greg.mr 0x0 32 00000000 # load data memory with 32 bit words esim write -hex dmem.mr 0x0 32 00112233 esim write -hex dmem.mr 0x20 32 11111111 esim write -hex dmem.mr 0x40 32 22222222 esim write -hex dmem.mr 0x60 32 33333333 esim write -hex dmem.mr 0x80 32 44444444 esim write -hex dmem.mr 0xA0 32 55555555 esim write -hex dmem.mr 0xC0 32 66666666 esim write -hex dmem.mr 0xE0 32 77777777 esim write -hex dmem.mr 0x100 32 88888888 esim write -hex dmem.mr 0x120 32 99999999 esim write -hex dmem.mr 0x140 32 AAAAAAAA esim write -hex dmem.mr 0x160 32 BBBBBBBB esim write -hex dmem.mr 0x180 32 CCCCCCCC esim write -hex dmem.mr 0x1A0 32 00000000 # stop just before the first clock falling in order to print esim run 99 for {set i 25} {$i} {incr i -1} { puts "inst= [esim show -hex inst] pc=[esim show -hex pc] cntr=[esim show cntr] at [esim curtime]ns." puts "ir_s1= [esim show -hex ir_s1]" puts "ir_s2= [esim show -hex ir_s2]" puts "ir_s3= [esim show -hex ir_s3] a_s3= [esim show -hex a_s3] rd_s3= [esim show rd_s3]" puts "ir_s4= [esim show -hex ir_s4] a_to_greg= [esim show -hex a_to_greg] rd_s4= [esim show rd_s4] wr_reg=[esim show wr_reg] waiting=[esim events]\n" # stop just before the clock in order to print esim run 200 } # # dump registers and memory # output some general registers puts " General registers at end of simulation " puts "greg 0- 3= [esim read -hex greg.mr 0x0 32] [esim read -hex greg.mr 0x20 32] [esim read -hex greg.mr 0x40 32] [esim read -hex greg.mr 0x60 32]" puts "greg 4- 7= [esim read -hex greg.mr 0x80 32] [esim read -hex greg.mr 0xA0 32] [esim read -hex greg.mr 0xC0 32] [esim read -hex greg.mr 0xE0 32]" puts "greg 8-11= [esim read -hex greg.mr 0x100 32] [esim read -hex greg.mr 0x120 32] [esim read -hex greg.mr 0x140 32] [esim read -hex greg.mr 0x160 32]" puts "greg12-15= [esim read -hex greg.mr 0x180 32] [esim read -hex greg.mr 0x1A0 32] [esim read -hex greg.mr 0x1C0 32] [esim read -hex greg.mr 0x1E0 32]" # more output, data memory puts " Data Memory at end of simulation " puts "dmem 0- 3= [esim read -hex dmem.mr 0x0 32] [esim read -hex dmem.mr 0x20 32] [esim read -hex dmem.mr 0x40 32] [esim read -hex dmem.mr 0x60 32]" puts "dmem 4- 7= [esim read -hex dmem.mr 0x80 32] [esim read -hex dmem.mr 0xA0 32] [esim read -hex dmem.mr 0xC0 32] [esim read -hex dmem.mr 0xE0 32]" puts "dmem 8-11= [esim read -hex dmem.mr 0x100 32] [esim read -hex dmem.mr 0x120 32] [esim read -hex dmem.mr 0x140 32] [esim read -hex dmem.mr 0x160 32]" puts "dmem12-15= [esim read -hex dmem.mr 0x180 32] [esim read -hex dmem.mr 0x1A0 32] [esim read -hex dmem.mr 0x1C0 32] [esim read -hex dmem.mr 0x1E0 32]" # puts "part2.out finished"