Line 27... |
Line 27... |
/* */
|
/* */
|
/* Author(s): */
|
/* Author(s): */
|
/* - Olivier Girard, olgirard@gmail.com */
|
/* - Olivier Girard, olgirard@gmail.com */
|
/* */
|
/* */
|
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
/* $Rev: 19 $ */
|
/* $Rev: 111 $ */
|
/* $LastChangedBy: olivier.girard $ */
|
/* $LastChangedBy: olivier.girard $ */
|
/* $LastChangedDate: 2009-08-04 23:47:15 +0200 (Tue, 04 Aug 2009) $ */
|
/* $LastChangedDate: 2011-05-20 22:39:02 +0200 (Fri, 20 May 2011) $ */
|
/*===========================================================================*/
|
/*===========================================================================*/
|
|
|
initial
|
initial
|
begin
|
begin
|
$display(" ===============================================");
|
$display(" ===============================================");
|
Line 62... |
Line 62... |
|
|
|
|
// Addressing mode: @Rn
|
// Addressing mode: @Rn
|
@(r15==16'h2000);
|
@(r15==16'h2000);
|
if (mem200 !==16'h3999) tb_error("====== RRA (@Rn mode): test 1 (result) =====");
|
if (mem200 !==16'h3999) tb_error("====== RRA (@Rn mode): test 1 (result) =====");
|
if (r4 !==16'h0200) tb_error("====== RRA (@Rn mode): test 1 (address) =====");
|
if (r4 !==(`PER_SIZE+16'h0000)) tb_error("====== RRA (@Rn mode): test 1 (address) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA (@Rn mode): test 1 (C flag) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA (@Rn mode): test 1 (C flag) =====");
|
|
|
if (mem202 !==16'h3999) tb_error("====== RRA (@Rn mode): test 2 (result) =====");
|
if (mem202 !==16'h3999) tb_error("====== RRA (@Rn mode): test 2 (result) =====");
|
if (r6 !==16'h0202) tb_error("====== RRA (@Rn mode): test 2 (address) =====");
|
if (r6 !==(`PER_SIZE+16'h0002)) tb_error("====== RRA (@Rn mode): test 2 (address) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA (@Rn mode): test 2 (C flag) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA (@Rn mode): test 2 (C flag) =====");
|
|
|
if (mem204 !==16'hc199) tb_error("====== RRA (@Rn mode): test 3 (result) =====");
|
if (mem204 !==16'hc199) tb_error("====== RRA (@Rn mode): test 3 (result) =====");
|
if (r8 !==16'h0204) tb_error("====== RRA (@Rn mode): test 3 (address) =====");
|
if (r8 !==(`PER_SIZE+16'h0004)) tb_error("====== RRA (@Rn mode): test 3 (address) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA (@Rn mode): test 3 (C flag) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA (@Rn mode): test 3 (C flag) =====");
|
|
|
if (mem206 !==16'hc199) tb_error("====== RRA (@Rn mode): test 4 (result) =====");
|
if (mem206 !==16'hc199) tb_error("====== RRA (@Rn mode): test 4 (result) =====");
|
if (r10 !==16'h0206) tb_error("====== RRA (@Rn mode): test 4 (address) =====");
|
if (r10 !==(`PER_SIZE+16'h0006)) tb_error("====== RRA (@Rn mode): test 4 (address) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA (@Rn mode): test 4 (C flag) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA (@Rn mode): test 4 (C flag) =====");
|
|
|
|
|
// Addressing mode: @Rn+
|
// Addressing mode: @Rn+
|
@(r15==16'h3000);
|
@(r15==16'h3000);
|
if (mem208 !==16'h3999) tb_error("====== RRA (@Rn+ mode): test 1 (result) =====");
|
if (mem208 !==16'h3999) tb_error("====== RRA (@Rn+ mode): test 1 (result) =====");
|
if (r4 !==16'h020A) tb_error("====== RRA (@Rn+ mode): test 1 (address) =====");
|
if (r4 !==(`PER_SIZE+16'h000A)) tb_error("====== RRA (@Rn+ mode): test 1 (address) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA (@Rn+ mode): test 1 (C flag) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA (@Rn+ mode): test 1 (C flag) =====");
|
|
|
if (mem20A !==16'h3999) tb_error("====== RRA (@Rn+ mode): test 2 (result) =====");
|
if (mem20A !==16'h3999) tb_error("====== RRA (@Rn+ mode): test 2 (result) =====");
|
if (r6 !==16'h020C) tb_error("====== RRA (@Rn+ mode): test 2 (address) =====");
|
if (r6 !==(`PER_SIZE+16'h000C)) tb_error("====== RRA (@Rn+ mode): test 2 (address) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA (@Rn+ mode): test 2 (C flag) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA (@Rn+ mode): test 2 (C flag) =====");
|
|
|
if (mem20C !==16'hc199) tb_error("====== RRA (@Rn+ mode): test 3 (result) =====");
|
if (mem20C !==16'hc199) tb_error("====== RRA (@Rn+ mode): test 3 (result) =====");
|
if (r8 !==16'h020E) tb_error("====== RRA (@Rn+ mode): test 3 (address) =====");
|
if (r8 !==(`PER_SIZE+16'h000E)) tb_error("====== RRA (@Rn+ mode): test 3 (address) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA (@Rn+ mode): test 3 (C flag) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA (@Rn+ mode): test 3 (C flag) =====");
|
|
|
if (mem20E !==16'hc199) tb_error("====== RRA (@Rn+ mode): test 4 (result) =====");
|
if (mem20E !==16'hc199) tb_error("====== RRA (@Rn+ mode): test 4 (result) =====");
|
if (r10 !==16'h0210) tb_error("====== RRA (@Rn+ mode): test 4 (address) =====");
|
if (r10 !==(`PER_SIZE+16'h0010)) tb_error("====== RRA (@Rn+ mode): test 4 (address) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA (@Rn+ mode): test 4 (C flag) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA (@Rn+ mode): test 4 (C flag) =====");
|
|
|
|
|
// Addressing mode: X(Rn)
|
// Addressing mode: X(Rn)
|
@(r15==16'h4000);
|
@(r15==16'h4000);
|
Line 168... |
Line 168... |
|
|
|
|
// Addressing mode: @Rn (low byte)
|
// Addressing mode: @Rn (low byte)
|
@(r15==16'h9000);
|
@(r15==16'h9000);
|
if (mem200 !==16'h2539) tb_error("====== RRA.B (@Rn mode): test 1, low byte (result) =====");
|
if (mem200 !==16'h2539) tb_error("====== RRA.B (@Rn mode): test 1, low byte (result) =====");
|
if (r4 !==16'h0200) tb_error("====== RRA.B (@Rn mode): test 1, low byte (address) =====");
|
if (r4 !==(`PER_SIZE+16'h0000)) tb_error("====== RRA.B (@Rn mode): test 1, low byte (address) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA.B (@Rn mode): test 1, low byte (C flag) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA.B (@Rn mode): test 1, low byte (C flag) =====");
|
|
|
if (mem202 !==16'h2539) tb_error("====== RRA.B (@Rn mode): test 2, low byte (result) =====");
|
if (mem202 !==16'h2539) tb_error("====== RRA.B (@Rn mode): test 2, low byte (result) =====");
|
if (r6 !==16'h0202) tb_error("====== RRA.B (@Rn mode): test 2, low byte (address) =====");
|
if (r6 !==(`PER_SIZE+16'h0002)) tb_error("====== RRA.B (@Rn mode): test 2, low byte (address) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA.B (@Rn mode): test 2, low byte (C flag) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA.B (@Rn mode): test 2, low byte (C flag) =====");
|
|
|
if (mem204 !==16'h25c1) tb_error("====== RRA.B (@Rn mode): test 3, low byte (result) =====");
|
if (mem204 !==16'h25c1) tb_error("====== RRA.B (@Rn mode): test 3, low byte (result) =====");
|
if (r8 !==16'h0204) tb_error("====== RRA.B (@Rn mode): test 3, low byte (address) =====");
|
if (r8 !==(`PER_SIZE+16'h0004)) tb_error("====== RRA.B (@Rn mode): test 3, low byte (address) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA.B (@Rn mode): test 3, low byte (C flag) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA.B (@Rn mode): test 3, low byte (C flag) =====");
|
|
|
if (mem206 !==16'h25c1) tb_error("====== RRA.B (@Rn mode): test 4, low byte (result) =====");
|
if (mem206 !==16'h25c1) tb_error("====== RRA.B (@Rn mode): test 4, low byte (result) =====");
|
if (r10 !==16'h0206) tb_error("====== RRA.B (@Rn mode): test 4, low byte (address) =====");
|
if (r10 !==(`PER_SIZE+16'h0006)) tb_error("====== RRA.B (@Rn mode): test 4, low byte (address) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA.B (@Rn mode): test 4, low byte (C flag) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA.B (@Rn mode): test 4, low byte (C flag) =====");
|
|
|
// Addressing mode: @Rn (high byte)
|
// Addressing mode: @Rn (high byte)
|
@(r15==16'h9001);
|
@(r15==16'h9001);
|
if (mem208 !==16'h3925) tb_error("====== RRA.B (@Rn mode): test 1, high byte (result) =====");
|
if (mem208 !==16'h3925) tb_error("====== RRA.B (@Rn mode): test 1, high byte (result) =====");
|
if (r4 !==16'h0209) tb_error("====== RRA.B (@Rn mode): test 1, high byte (address) =====");
|
if (r4 !==(`PER_SIZE+16'h0009)) tb_error("====== RRA.B (@Rn mode): test 1, high byte (address) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA.B (@Rn mode): test 1, high byte (C flag) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA.B (@Rn mode): test 1, high byte (C flag) =====");
|
|
|
if (mem20A !==16'h3925) tb_error("====== RRA.B (@Rn mode): test 2, high byte (result) =====");
|
if (mem20A !==16'h3925) tb_error("====== RRA.B (@Rn mode): test 2, high byte (result) =====");
|
if (r6 !==16'h020B) tb_error("====== RRA.B (@Rn mode): test 2, high byte (address) =====");
|
if (r6 !==(`PER_SIZE+16'h000B)) tb_error("====== RRA.B (@Rn mode): test 2, high byte (address) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA.B (@Rn mode): test 2, high byte (C flag) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA.B (@Rn mode): test 2, high byte (C flag) =====");
|
|
|
if (mem20C !==16'hc125) tb_error("====== RRA.B (@Rn mode): test 3, high byte (result) =====");
|
if (mem20C !==16'hc125) tb_error("====== RRA.B (@Rn mode): test 3, high byte (result) =====");
|
if (r8 !==16'h020D) tb_error("====== RRA.B (@Rn mode): test 3, high byte (address) =====");
|
if (r8 !==(`PER_SIZE+16'h000D)) tb_error("====== RRA.B (@Rn mode): test 3, high byte (address) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA.B (@Rn mode): test 3, high byte (C flag) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA.B (@Rn mode): test 3, high byte (C flag) =====");
|
|
|
if (mem20E !==16'hc125) tb_error("====== RRA.B (@Rn mode): test 4, high byte (result) =====");
|
if (mem20E !==16'hc125) tb_error("====== RRA.B (@Rn mode): test 4, high byte (result) =====");
|
if (r10 !==16'h020F) tb_error("====== RRA.B (@Rn mode): test 4, high byte (address) =====");
|
if (r10 !==(`PER_SIZE+16'h000F)) tb_error("====== RRA.B (@Rn mode): test 4, high byte (address) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA.B (@Rn mode): test 4, high byte (C flag) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA.B (@Rn mode): test 4, high byte (C flag) =====");
|
|
|
|
|
// Addressing mode: @Rn+ (low byte)
|
// Addressing mode: @Rn+ (low byte)
|
@(r15==16'hA000);
|
@(r15==16'hA000);
|
if (mem210 !==16'h2539) tb_error("====== RRA.B (@Rn+ mode): test 1, low byte (result) =====");
|
if (mem210 !==16'h2539) tb_error("====== RRA.B (@Rn+ mode): test 1, low byte (result) =====");
|
if (r4 !==16'h0211) tb_error("====== RRA.B (@Rn+ mode): test 1, low byte (address) =====");
|
if (r4 !==(`PER_SIZE+16'h0011)) tb_error("====== RRA.B (@Rn+ mode): test 1, low byte (address) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA.B (@Rn+ mode): test 1, low byte (C flag) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA.B (@Rn+ mode): test 1, low byte (C flag) =====");
|
|
|
if (mem212 !==16'h2539) tb_error("====== RRA.B (@Rn+ mode): test 2, low byte (result) =====");
|
if (mem212 !==16'h2539) tb_error("====== RRA.B (@Rn+ mode): test 2, low byte (result) =====");
|
if (r6 !==16'h0213) tb_error("====== RRA.B (@Rn+ mode): test 2, low byte (address) =====");
|
if (r6 !==(`PER_SIZE+16'h0013)) tb_error("====== RRA.B (@Rn+ mode): test 2, low byte (address) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA.B (@Rn+ mode): test 2, low byte (C flag) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA.B (@Rn+ mode): test 2, low byte (C flag) =====");
|
|
|
if (mem214 !==16'h25c1) tb_error("====== RRA.B (@Rn+ mode): test 3, low byte (result) =====");
|
if (mem214 !==16'h25c1) tb_error("====== RRA.B (@Rn+ mode): test 3, low byte (result) =====");
|
if (r8 !==16'h0215) tb_error("====== RRA.B (@Rn+ mode): test 3, low byte (address) =====");
|
if (r8 !==(`PER_SIZE+16'h0015)) tb_error("====== RRA.B (@Rn+ mode): test 3, low byte (address) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA.B (@Rn+ mode): test 3, low byte (C flag) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA.B (@Rn+ mode): test 3, low byte (C flag) =====");
|
|
|
if (mem216 !==16'h25c1) tb_error("====== RRA.B (@Rn+ mode): test 4, low byte (result) =====");
|
if (mem216 !==16'h25c1) tb_error("====== RRA.B (@Rn+ mode): test 4, low byte (result) =====");
|
if (r10 !==16'h0217) tb_error("====== RRA.B (@Rn+ mode): test 4, low byte (address) =====");
|
if (r10 !==(`PER_SIZE+16'h0017)) tb_error("====== RRA.B (@Rn+ mode): test 4, low byte (address) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA.B (@Rn+ mode): test 4, low byte (C flag) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA.B (@Rn+ mode): test 4, low byte (C flag) =====");
|
|
|
// Addressing mode: @Rn+ (high byte)
|
// Addressing mode: @Rn+ (high byte)
|
@(r15==16'hA001);
|
@(r15==16'hA001);
|
if (mem218 !==16'h3925) tb_error("====== RRA.B (@Rn+ mode): test 1, high byte (result) =====");
|
if (mem218 !==16'h3925) tb_error("====== RRA.B (@Rn+ mode): test 1, high byte (result) =====");
|
if (r4 !==16'h021A) tb_error("====== RRA.B (@Rn+ mode): test 1, high byte (address) =====");
|
if (r4 !==(`PER_SIZE+16'h001A)) tb_error("====== RRA.B (@Rn+ mode): test 1, high byte (address) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA.B (@Rn+ mode): test 1, high byte (C flag) =====");
|
if (r5 !==16'h0000) tb_error("====== RRA.B (@Rn+ mode): test 1, high byte (C flag) =====");
|
|
|
if (mem21A !==16'h3925) tb_error("====== RRA.B (@Rn+ mode): test 2, high byte (result) =====");
|
if (mem21A !==16'h3925) tb_error("====== RRA.B (@Rn+ mode): test 2, high byte (result) =====");
|
if (r6 !==16'h021C) tb_error("====== RRA.B (@Rn+ mode): test 2, high byte (address) =====");
|
if (r6 !==(`PER_SIZE+16'h001C)) tb_error("====== RRA.B (@Rn+ mode): test 2, high byte (address) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA.B (@Rn+ mode): test 2, high byte (C flag) =====");
|
if (r7 !==16'h0001) tb_error("====== RRA.B (@Rn+ mode): test 2, high byte (C flag) =====");
|
|
|
if (mem21C !==16'hc125) tb_error("====== RRA.B (@Rn+ mode): test 3, high byte (result) =====");
|
if (mem21C !==16'hc125) tb_error("====== RRA.B (@Rn+ mode): test 3, high byte (result) =====");
|
if (r8 !==16'h021E) tb_error("====== RRA.B (@Rn+ mode): test 3, high byte (address) =====");
|
if (r8 !==(`PER_SIZE+16'h001E)) tb_error("====== RRA.B (@Rn+ mode): test 3, high byte (address) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA.B (@Rn+ mode): test 3, high byte (C flag) =====");
|
if (r9 !==16'h0004) tb_error("====== RRA.B (@Rn+ mode): test 3, high byte (C flag) =====");
|
|
|
if (mem21E !==16'hc125) tb_error("====== RRA.B (@Rn+ mode): test 4, high byte (result) =====");
|
if (mem21E !==16'hc125) tb_error("====== RRA.B (@Rn+ mode): test 4, high byte (result) =====");
|
if (r10 !==16'h0220) tb_error("====== RRA.B (@Rn+ mode): test 4, high byte (address) =====");
|
if (r10 !==(`PER_SIZE+16'h0020)) tb_error("====== RRA.B (@Rn+ mode): test 4, high byte (address) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA.B (@Rn+ mode): test 4, high byte (C flag) =====");
|
if (r11 !==16'h0005) tb_error("====== RRA.B (@Rn+ mode): test 4, high byte (C flag) =====");
|
|
|
|
|
// Addressing mode: X(Rn) (low byte)
|
// Addressing mode: X(Rn) (low byte)
|
@(r15==16'hB000);
|
@(r15==16'hB000);
|