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

Subversion Repositories openmsp430

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openmsp430/trunk
    from Rev 101 to Rev 102
    Reverse comparison

Rev 101 → Rev 102

/core/rtl/verilog/omsp_execution_unit.v
145,7 → 145,11
inst_type[`INST_JMP])) | dbg_reg_wr;
 
wire reg_sp_wr = (((e_state==`E_IRQ_1) | (e_state==`E_IRQ_3)) & ~inst_irq_rst) |
((e_state==`E_DST_RD) & (inst_so[`PUSH] | inst_so[`CALL]));
((e_state==`E_DST_RD) & ((inst_so[`PUSH] & ~inst_as[`IDX] &
~((inst_as[`INDIR] | inst_as[`INDIR_I]) & inst_src[1])) |
inst_so[`CALL])) |
((e_state==`E_SRC_AD) & (inst_so[`PUSH] & inst_as[`IDX])) |
((e_state==`E_SRC_RD) & (inst_so[`PUSH] & ((inst_as[`INDIR] | inst_as[`INDIR_I]) & inst_src[1])));
 
wire reg_sr_wr = (e_state==`E_DST_RD) & inst_so[`RETI];
 
214,7 → 218,8
 
wire src_reg_dest_sel = (e_state==`E_IRQ_1) |
(e_state==`E_IRQ_3) |
((e_state==`E_DST_RD) & (inst_so[`PUSH] | inst_so[`CALL]));
((e_state==`E_DST_RD) & (inst_so[`PUSH] | inst_so[`CALL])) |
((e_state==`E_SRC_AD) & inst_so[`PUSH] & inst_as[`IDX]);
 
wire src_mdb_in_val_sel = ((e_state==`E_DST_RD) & inst_so[`RETI]) |
((e_state==`E_EXEC) & (inst_as[`INDIR] | inst_as[`INDIR_I] |
257,7 → 262,9
wire dst_fffe_sel = (e_state==`E_IRQ_0) |
(e_state==`E_IRQ_1) |
(e_state==`E_IRQ_3) |
((e_state==`E_DST_RD) & (inst_so[`PUSH] | inst_so[`CALL]) & ~inst_so[`RETI]);
((e_state==`E_DST_RD) & (inst_so[`PUSH] | inst_so[`CALL]) & ~inst_so[`RETI]) |
((e_state==`E_SRC_AD) & inst_so[`PUSH] & inst_as[`IDX]) |
((e_state==`E_SRC_RD) & inst_so[`PUSH] & (inst_as[`INDIR] | inst_as[`INDIR_I]) & inst_src[1]);
 
wire dst_reg_dest_sel = ((e_state==`E_DST_RD) & ~(inst_so[`PUSH] | inst_so[`CALL] | inst_ad[`ABS] | inst_so[`RETI])) |
((e_state==`E_DST_WR) & ~inst_ad[`ABS]) |
/core/sim/rtl_sim/src/sing-op_push.v
399,7 → 399,155
if (mem232 !==16'h0000) tb_error("====== PUSH.B (#N mode): @0x0232 value =====");
if (mem230 !==16'h0000) tb_error("====== PUSH.B (#N mode): @0x0230 value =====");
 
/* -------------- TEST INSTRUCTION WITH SR AS ARGUMENT ------------------- */
 
// Addressing mode: SR
@(r15==16'hF100);
if (r1 !==16'h0232) tb_error("====== PUSH SR : SP value =====");
if (mem250 !==16'h75e2) tb_error("====== PUSH SR : @0x0250 value =====");
if (mem24E !==16'h1cc4) tb_error("====== PUSH SR : @0x024E value =====");
if (mem24C !==16'h12a6) tb_error("====== PUSH SR : @0x024c value =====");
if (mem24A !==16'h5679) tb_error("====== PUSH SR : @0x024a value =====");
if (mem248 !==16'h9a6a) tb_error("====== PUSH SR : @0x0248 value =====");
if (mem246 !==16'hde97) tb_error("====== PUSH SR : @0x0246 value =====");
if (mem244 !==16'h0f4c) tb_error("====== PUSH SR : @0x0244 value =====");
if (mem242 !==16'hcbc3) tb_error("====== PUSH SR : @0x0242 value =====");
if (mem240 !==16'h870e) tb_error("====== PUSH SR : @0x0240 value =====");
if (mem23E !==16'h43fe) tb_error("====== PUSH SR : @0x023e value =====");
if (mem23C !==16'h1fc2) tb_error("====== PUSH SR : @0x023c value =====");
if (mem23A !==16'h3d3b) tb_error("====== PUSH SR : @0x023a value =====");
if (mem238 !==16'h71d9) tb_error("====== PUSH SR : @0x0238 value =====");
if (mem236 !==16'h178d) tb_error("====== PUSH SR : @0x0236 value =====");
if (mem234 !==16'h0234) tb_error("====== PUSH SR : @0x0234 value =====");
if (mem232 !==16'h0232) tb_error("====== PUSH SR : @0x0232 value =====");
if (mem230 !==16'h0000) tb_error("====== PUSH SR : @0x0230 value =====");
 
// Addressing mode: @SR
@(r15==16'hF200);
if (r1 !==16'h022E) tb_error("====== PUSH @SR : SP value =====");
if (mem250 !==16'h75e2) tb_error("====== PUSH @SR : @0x0250 value =====");
if (mem24E !==16'h1cc4) tb_error("====== PUSH @SR : @0x024E value =====");
if (mem24C !==16'h12a6) tb_error("====== PUSH @SR : @0x024c value =====");
if (mem24A !==16'h5679) tb_error("====== PUSH @SR : @0x024a value =====");
if (mem248 !==16'h9a6a) tb_error("====== PUSH @SR : @0x0248 value =====");
if (mem246 !==16'hde97) tb_error("====== PUSH @SR : @0x0246 value =====");
if (mem244 !==16'h0f4c) tb_error("====== PUSH @SR : @0x0244 value =====");
if (mem242 !==16'hcbc3) tb_error("====== PUSH @SR : @0x0242 value =====");
if (mem240 !==16'h870e) tb_error("====== PUSH @SR : @0x0240 value =====");
if (mem23E !==16'h43fe) tb_error("====== PUSH @SR : @0x023e value =====");
if (mem23C !==16'h1fc2) tb_error("====== PUSH @SR : @0x023c value =====");
if (mem23A !==16'h3d3b) tb_error("====== PUSH @SR : @0x023a value =====");
if (mem238 !==16'h71d9) tb_error("====== PUSH @SR : @0x0238 value =====");
if (mem236 !==16'h178d) tb_error("====== PUSH @SR : @0x0236 value =====");
if (mem234 !==16'h0234) tb_error("====== PUSH @SR : @0x0234 value =====");
if (mem232 !==16'h0232) tb_error("====== PUSH @SR : @0x0232 value =====");
if (mem230 !==16'h0000) tb_error("====== PUSH @SR : @0x0230 value =====");
if (mem22E !==16'h1234) tb_error("====== PUSH @SR : @0x022E value =====");
if (mem22C !==16'h5678) tb_error("====== PUSH @SR : @0x022C value =====");
 
// Addressing mode: @SR+
@(r15==16'hF300);
if (r1 !==16'h022E) tb_error("====== PUSH @SR : SP value =====");
if (mem250 !==16'h75e2) tb_error("====== PUSH @SR : @0x0250 value =====");
if (mem24E !==16'h1cc4) tb_error("====== PUSH @SR : @0x024E value =====");
if (mem24C !==16'h12a6) tb_error("====== PUSH @SR : @0x024c value =====");
if (mem24A !==16'h5679) tb_error("====== PUSH @SR : @0x024a value =====");
if (mem248 !==16'h9a6a) tb_error("====== PUSH @SR : @0x0248 value =====");
if (mem246 !==16'hde97) tb_error("====== PUSH @SR : @0x0246 value =====");
if (mem244 !==16'h0f4c) tb_error("====== PUSH @SR : @0x0244 value =====");
if (mem242 !==16'hcbc3) tb_error("====== PUSH @SR : @0x0242 value =====");
if (mem240 !==16'h870e) tb_error("====== PUSH @SR : @0x0240 value =====");
if (mem23E !==16'h43fe) tb_error("====== PUSH @SR : @0x023e value =====");
if (mem23C !==16'h1fc2) tb_error("====== PUSH @SR : @0x023c value =====");
if (mem23A !==16'h3d3b) tb_error("====== PUSH @SR : @0x023a value =====");
if (mem238 !==16'h71d9) tb_error("====== PUSH @SR : @0x0238 value =====");
if (mem236 !==16'h178d) tb_error("====== PUSH @SR : @0x0236 value =====");
if (mem234 !==16'h0234) tb_error("====== PUSH @SR : @0x0234 value =====");
if (mem232 !==16'h0232) tb_error("====== PUSH @SR : @0x0232 value =====");
if (mem230 !==16'h0000) tb_error("====== PUSH @SR : @0x0230 value =====");
if (mem22E !==16'h1234) tb_error("====== PUSH @SR : @0x022E value =====");
if (mem22C !==16'h5678) tb_error("====== PUSH @SR : @0x022C value =====");
if (mem22A !==16'h0000) tb_error("====== PUSH @SR : @0x022A value =====");
if (mem228 !==16'h0000) tb_error("====== PUSH @SR : @0x0228 value =====");
 
// Addressing mode: x(SR)
@(r15==16'hF400);
if (r1 !==16'h022A) tb_error("====== PUSH @SR : SP value =====");
if (mem250 !==16'h75e2) tb_error("====== PUSH @SR : @0x0250 value =====");
if (mem24E !==16'h1cc4) tb_error("====== PUSH @SR : @0x024E value =====");
if (mem24C !==16'h12a6) tb_error("====== PUSH @SR : @0x024c value =====");
if (mem24A !==16'h5679) tb_error("====== PUSH @SR : @0x024a value =====");
if (mem248 !==16'h9a6a) tb_error("====== PUSH @SR : @0x0248 value =====");
if (mem246 !==16'hde97) tb_error("====== PUSH @SR : @0x0246 value =====");
if (mem244 !==16'h0f4c) tb_error("====== PUSH @SR : @0x0244 value =====");
if (mem242 !==16'hcbc3) tb_error("====== PUSH @SR : @0x0242 value =====");
if (mem240 !==16'h870e) tb_error("====== PUSH @SR : @0x0240 value =====");
if (mem23E !==16'h43fe) tb_error("====== PUSH @SR : @0x023e value =====");
if (mem23C !==16'h1fc2) tb_error("====== PUSH @SR : @0x023c value =====");
if (mem23A !==16'h3d3b) tb_error("====== PUSH @SR : @0x023a value =====");
if (mem238 !==16'h71d9) tb_error("====== PUSH @SR : @0x0238 value =====");
if (mem236 !==16'h178d) tb_error("====== PUSH @SR : @0x0236 value =====");
if (mem234 !==16'h0234) tb_error("====== PUSH @SR : @0x0234 value =====");
if (mem232 !==16'h0232) tb_error("====== PUSH @SR : @0x0232 value =====");
if (mem230 !==16'h0000) tb_error("====== PUSH @SR : @0x0230 value =====");
if (mem22E !==16'h1234) tb_error("====== PUSH @SR : @0x022E value =====");
if (mem22C !==16'h71d9) tb_error("====== PUSH @SR : @0x022C value =====");
if (mem22A !==16'h178d) tb_error("====== PUSH @SR : @0x022A value =====");
if (mem228 !==16'h0000) tb_error("====== PUSH @SR : @0x0228 value =====");
 
/* -------------- TEST POP INSTRUCTION WITH SR AS ARGUMENT ------------------- */
 
// Addressing mode: x(SR)
@(r15==16'hF500);
if (r1 !==16'h022E) tb_error("====== PUSH @SR : SP value =====");
if (mem250 !==16'h75e2) tb_error("====== PUSH @SR : @0x0250 value =====");
if (mem24E !==16'h1cc4) tb_error("====== PUSH @SR : @0x024E value =====");
if (mem24C !==16'h12a6) tb_error("====== PUSH @SR : @0x024c value =====");
if (mem24A !==16'h5679) tb_error("====== PUSH @SR : @0x024a value =====");
if (mem248 !==16'h9a6a) tb_error("====== PUSH @SR : @0x0248 value =====");
if (mem246 !==16'hde97) tb_error("====== PUSH @SR : @0x0246 value =====");
if (mem244 !==16'h0f4c) tb_error("====== PUSH @SR : @0x0244 value =====");
if (mem242 !==16'hcbc3) tb_error("====== PUSH @SR : @0x0242 value =====");
if (mem240 !==16'h870e) tb_error("====== PUSH @SR : @0x0240 value =====");
if (mem23E !==16'h43fe) tb_error("====== PUSH @SR : @0x023e value =====");
if (mem23C !==16'h1fc2) tb_error("====== PUSH @SR : @0x023c value =====");
if (mem23A !==16'h3d3b) tb_error("====== PUSH @SR : @0x023a value =====");
if (mem238 !==16'h71d9) tb_error("====== PUSH @SR : @0x0238 value =====");
if (mem236 !==16'h178d) tb_error("====== PUSH @SR : @0x0236 value =====");
if (mem234 !==16'h71d9) tb_error("====== PUSH @SR : @0x0234 value =====");
if (mem232 !==16'h178d) tb_error("====== PUSH @SR : @0x0232 value =====");
if (mem230 !==16'h0000) tb_error("====== PUSH @SR : @0x0230 value =====");
if (mem22E !==16'h1234) tb_error("====== PUSH @SR : @0x022E value =====");
if (mem22C !==16'h71d9) tb_error("====== PUSH @SR : @0x022C value =====");
if (mem22A !==16'h178d) tb_error("====== PUSH @SR : @0x022A value =====");
if (mem228 !==16'h0000) tb_error("====== PUSH @SR : @0x0228 value =====");
 
// Addressing mode: SR
@(r15==16'hF600);
if (r1 !==16'h1234) tb_error("====== PUSH @SR : SP value =====");
if (mem250 !==16'h75e2) tb_error("====== PUSH @SR : @0x0250 value =====");
if (mem24E !==16'h1cc4) tb_error("====== PUSH @SR : @0x024E value =====");
if (mem24C !==16'h12a6) tb_error("====== PUSH @SR : @0x024c value =====");
if (mem24A !==16'h5679) tb_error("====== PUSH @SR : @0x024a value =====");
if (mem248 !==16'h9a6a) tb_error("====== PUSH @SR : @0x0248 value =====");
if (mem246 !==16'hde97) tb_error("====== PUSH @SR : @0x0246 value =====");
if (mem244 !==16'h0f4c) tb_error("====== PUSH @SR : @0x0244 value =====");
if (mem242 !==16'hcbc3) tb_error("====== PUSH @SR : @0x0242 value =====");
if (mem240 !==16'h870e) tb_error("====== PUSH @SR : @0x0240 value =====");
if (mem23E !==16'h43fe) tb_error("====== PUSH @SR : @0x023e value =====");
if (mem23C !==16'h1fc2) tb_error("====== PUSH @SR : @0x023c value =====");
if (mem23A !==16'h3d3b) tb_error("====== PUSH @SR : @0x023a value =====");
if (mem238 !==16'h71d9) tb_error("====== PUSH @SR : @0x0238 value =====");
if (mem236 !==16'h178d) tb_error("====== PUSH @SR : @0x0236 value =====");
if (mem234 !==16'h71d9) tb_error("====== PUSH @SR : @0x0234 value =====");
if (mem232 !==16'h178d) tb_error("====== PUSH @SR : @0x0232 value =====");
if (mem230 !==16'h0000) tb_error("====== PUSH @SR : @0x0230 value =====");
if (mem22E !==16'h1234) tb_error("====== PUSH @SR : @0x022E value =====");
if (mem22C !==16'h71d9) tb_error("====== PUSH @SR : @0x022C value =====");
if (mem22A !==16'h178d) tb_error("====== PUSH @SR : @0x022A value =====");
if (mem228 !==16'h0000) tb_error("====== PUSH @SR : @0x0228 value =====");
stimulus_done = 1;
end
 
/core/sim/rtl_sim/src/sing-op_push.s43
278,7 → 278,78
 
mov #0xF000, r15
 
/* -------------- TEST INSTRUCTION WITH SR AS ARGUMENT ------------------- */
# Addressing mode: SR
#------------------------
 
nop
push r1 ;# PUSH (r1=0x0234 => @=0x0234)
push r1 ;# PUSH (r1=0x0232 => @=0x0232)
nop
 
mov #0xF100, r15
 
 
# Addressing mode: @SR
#------------------------
 
mov #0x1234, &0x022E
mov #0x5678, &0x022C
nop
push @r1 ;# PUSH (r1=0x0230 => @=0x0230) -> do nothing
push @r1 ;# PUSH (r1=0x022E => @=0x022E) -> do nothing
nop
 
mov #0xF200, r15
 
 
# Addressing mode: @SR+
#------------------------
 
mov #0x0000, &0x022A
mov #0x0000, &0x0228
nop
push @r1+ ;# PUSH (r1=0x022C => @=0x022C) -> do nothing
push @r1+ ;# PUSH (r1=0x022C => @=0x022C) -> do nothing
nop
 
mov #0xF300, r15
 
 
# Addressing mode: x(SR)
#------------------------
nop
push 12(r1) ;# PUSH (r1=0x022C+12 => @=0x022C)
push 12(r1) ;# PUSH (r1=0x022A+12 => @=0x022A)
nop
mov #0xF400, r15
 
/* -------------- TEST POP INSTRUCTION WITH SR AS ARGUMENT ------------------- */
# Addressing mode: x(SR)
#------------------------
 
nop
pop 8(r1) ;# POP (r1=0x022A => @=0x022A+8)
pop 8(r1) ;# POP (r1=0x022C => @=0x022C+8)
nop
 
mov #0xF500, r15
 
 
# Addressing mode: SR
#------------------------
 
nop
pop r1 ;# POP (r1=@0x022E)
nop
 
mov #0xF600, r15
 
/* ---------------------- END OF TEST --------------- */
end_of_test:
nop

powered by: WebSVN 2.1.0

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