Line 63... |
Line 63... |
always @(posedge mclk or posedge puc_rst)
|
always @(posedge mclk or posedge puc_rst)
|
if (puc_rst) wkup2_sync <= 2'b00;
|
if (puc_rst) wkup2_sync <= 2'b00;
|
else wkup2_sync <= {wkup2_sync[0], wkup[2]};
|
else wkup2_sync <= {wkup2_sync[0], wkup[2]};
|
|
|
always @(wkup2_sync)
|
always @(wkup2_sync)
|
irq[2] = wkup2_sync[1];
|
irq[`IRQ_NR-14] = wkup2_sync[1]; // IRQ-2
|
|
|
// Wakeup synchronizer to generate IRQ
|
// Wakeup synchronizer to generate IRQ
|
reg [1:0] wkup3_sync;
|
reg [1:0] wkup3_sync;
|
always @(posedge mclk or posedge puc_rst)
|
always @(posedge mclk or posedge puc_rst)
|
if (puc_rst) wkup3_sync <= 2'b00;
|
if (puc_rst) wkup3_sync <= 2'b00;
|
else wkup3_sync <= {wkup3_sync[0], wkup[3]};
|
else wkup3_sync <= {wkup3_sync[0], wkup[3]};
|
|
|
always @(wkup3_sync)
|
always @(wkup3_sync)
|
irq[3] = wkup3_sync[1];
|
irq[`IRQ_NR-13] = wkup3_sync[1]; // IRQ-3
|
|
|
|
|
initial
|
initial
|
begin
|
begin
|
$display(" ===============================================");
|
$display(" ===============================================");
|
$display("| START SIMULATION |");
|
$display("| START SIMULATION |");
|
$display(" ===============================================");
|
$display(" ===============================================");
|
repeat(5) @(posedge mclk);
|
repeat(5) @(posedge mclk);
|
stimulus_done = 0;
|
stimulus_done = 0;
|
|
|
irq[2] = 0;
|
irq[`IRQ_NR-14] = 0; // IRQ-2
|
wkup[2] = 0;
|
wkup[2] = 0;
|
|
|
irq[3] = 0;
|
irq[`IRQ_NR-13] = 0; // IRQ-3
|
wkup[3] = 0;
|
wkup[3] = 0;
|
|
|
|
|
`ifdef ASIC_CLOCKING
|
`ifdef ASIC_CLOCKING
|
|
|
Line 116... |
Line 116... |
smclk_cnt = 0;
|
smclk_cnt = 0;
|
|
|
|
|
@(r15==16'h1003); //---------- PORT2 IRQ TRIAL (EXITING POWER MODE) -------------//
|
@(r15==16'h1003); //---------- PORT2 IRQ TRIAL (EXITING POWER MODE) -------------//
|
wkup[3] = 1'b1;
|
wkup[3] = 1'b1;
|
@(posedge irq_acc[3]);
|
@(posedge irq_acc[`IRQ_NR-13]); // IRQ_ACC-3
|
aclk_cnt = 0;
|
aclk_cnt = 0;
|
repeat (10) @(posedge mclk);
|
repeat (10) @(posedge mclk);
|
smclk_cnt = 0;
|
smclk_cnt = 0;
|
repeat (50) @(posedge mclk);
|
repeat (50) @(posedge mclk);
|
if (smclk_cnt !== 50) tb_error("====== SCG1 TEST 3: SMCLK IS NOT RUNNING DURING IRQ =====");
|
if (smclk_cnt !== 50) tb_error("====== SCG1 TEST 3: SMCLK IS NOT RUNNING DURING IRQ =====");
|
Line 147... |
Line 147... |
smclk_cnt = 0;
|
smclk_cnt = 0;
|
|
|
|
|
@(r15==16'h1006); //---------- PORT1 IRQ TRIAL (STAYING IN POWER MODE) -------------//
|
@(r15==16'h1006); //---------- PORT1 IRQ TRIAL (STAYING IN POWER MODE) -------------//
|
wkup[2] = 1'b1;
|
wkup[2] = 1'b1;
|
@(posedge irq_acc[2]);
|
@(posedge irq_acc[`IRQ_NR-14]); // IRQ_ACC-2
|
repeat (10) @(posedge mclk);
|
repeat (10) @(posedge mclk);
|
smclk_cnt = 0;
|
smclk_cnt = 0;
|
repeat (50) @(posedge mclk);
|
repeat (50) @(posedge mclk);
|
if (smclk_cnt !== 50) tb_error("====== SCG1 TEST 6: SMCLK IS NOT RUNNING DURING IRQ =====");
|
if (smclk_cnt !== 50) tb_error("====== SCG1 TEST 6: SMCLK IS NOT RUNNING DURING IRQ =====");
|
smclk_cnt = 0;
|
smclk_cnt = 0;
|
Line 204... |
Line 204... |
aclk_cnt = 0;
|
aclk_cnt = 0;
|
|
|
|
|
@(r15==16'h2003); //---------- PORT2 IRQ TRIAL (EXITING POWER MODE) -------------//
|
@(r15==16'h2003); //---------- PORT2 IRQ TRIAL (EXITING POWER MODE) -------------//
|
wkup[3] = 1'b1;
|
wkup[3] = 1'b1;
|
@(posedge irq_acc[3]);
|
@(posedge irq_acc[`IRQ_NR-13]); // IRQ_ACC-3
|
repeat (100) @(posedge mclk);
|
repeat (100) @(posedge mclk);
|
aclk_cnt = 0;
|
aclk_cnt = 0;
|
repeat (100) @(posedge mclk);
|
repeat (100) @(posedge mclk);
|
`ifdef LFXT_DOMAIN
|
`ifdef LFXT_DOMAIN
|
if (aclk_cnt !== 3) tb_error("====== OSCOFF TEST 3: ACLK IS NOT RUNNING DURING IRQ =====");
|
if (aclk_cnt !== 3) tb_error("====== OSCOFF TEST 3: ACLK IS NOT RUNNING DURING IRQ =====");
|
Line 243... |
Line 243... |
aclk_cnt = 0;
|
aclk_cnt = 0;
|
|
|
|
|
@(r15==16'h2006); //---------- PORT1 IRQ TRIAL (STAYING IN POWER MODE) -------------//
|
@(r15==16'h2006); //---------- PORT1 IRQ TRIAL (STAYING IN POWER MODE) -------------//
|
wkup[2] = 1'b1;
|
wkup[2] = 1'b1;
|
@(posedge irq_acc[2]);
|
@(posedge irq_acc[`IRQ_NR-14]); // IRQ_ACC-2
|
repeat (100) @(posedge mclk);
|
repeat (100) @(posedge mclk);
|
aclk_cnt = 0;
|
aclk_cnt = 0;
|
repeat (100) @(posedge mclk);
|
repeat (100) @(posedge mclk);
|
`ifdef LFXT_DOMAIN
|
`ifdef LFXT_DOMAIN
|
if (aclk_cnt !== 3) tb_error("====== OSCOFF TEST 6: ACLK IS NOT RUNNING DURING IRQ =====");
|
if (aclk_cnt !== 3) tb_error("====== OSCOFF TEST 6: ACLK IS NOT RUNNING DURING IRQ =====");
|
Line 297... |
Line 297... |
repeat (80) @(negedge dco_clk);
|
repeat (80) @(negedge dco_clk);
|
if (mclk_cnt !== 0) tb_error("====== CPUOFF TEST 2: CPU IS NOT STOPPED =====");
|
if (mclk_cnt !== 0) tb_error("====== CPUOFF TEST 2: CPU IS NOT STOPPED =====");
|
|
|
@(posedge dco_clk); //---------- PORT1 IRQ TRIAL (STAYING IN POWER MODE) -------------//
|
@(posedge dco_clk); //---------- PORT1 IRQ TRIAL (STAYING IN POWER MODE) -------------//
|
wkup[2] = 1'b1;
|
wkup[2] = 1'b1;
|
@(posedge irq_acc[2]);
|
@(posedge irq_acc[`IRQ_NR-14]); // IRQ_ACC-2
|
repeat(10) @(negedge dco_clk);
|
repeat(10) @(negedge dco_clk);
|
mclk_cnt = 0;
|
mclk_cnt = 0;
|
repeat (80) @(negedge dco_clk);
|
repeat (80) @(negedge dco_clk);
|
if (mclk_cnt !== 80) tb_error("====== CPUOFF TEST 3: CPU IS NOT RUNNING DURING IRQ (PORT 1) =====");
|
if (mclk_cnt !== 80) tb_error("====== CPUOFF TEST 3: CPU IS NOT RUNNING DURING IRQ (PORT 1) =====");
|
mclk_cnt = 0;
|
mclk_cnt = 0;
|
Line 315... |
Line 315... |
if (mclk_cnt !== 0) tb_error("====== CPUOFF TEST 4: CPU IS NOT STOPPED AFTER IRQ =====");
|
if (mclk_cnt !== 0) tb_error("====== CPUOFF TEST 4: CPU IS NOT STOPPED AFTER IRQ =====");
|
|
|
|
|
//---------- PORT2 IRQ TRIAL (EXITING POWER MODE) -------------//
|
//---------- PORT2 IRQ TRIAL (EXITING POWER MODE) -------------//
|
wkup[3] = 1'b1;
|
wkup[3] = 1'b1;
|
@(posedge irq_acc[3]);
|
@(posedge irq_acc[`IRQ_NR-13]); // IRQ_ACC-3
|
repeat (10) @(posedge dco_clk);
|
repeat (10) @(posedge dco_clk);
|
mclk_cnt = 0;
|
mclk_cnt = 0;
|
repeat (80) @(posedge dco_clk);
|
repeat (80) @(posedge dco_clk);
|
if (mclk_cnt !== 80) tb_error("====== CPUOFF TEST 5: CPU IS NOT RUNNING DURING IRQ =====");
|
if (mclk_cnt !== 80) tb_error("====== CPUOFF TEST 5: CPU IS NOT RUNNING DURING IRQ =====");
|
mclk_cnt = 0;
|
mclk_cnt = 0;
|
Line 359... |
Line 359... |
if (dco_clk_cnt !== 0) tb_error("====== SCG0 TEST 2: DCO IS NOT STOPPED =====");
|
if (dco_clk_cnt !== 0) tb_error("====== SCG0 TEST 2: DCO IS NOT STOPPED =====");
|
|
|
|
|
#(1*50); //---------- PORT1 IRQ TRIAL (STAYING IN POWER MODE) -------------//
|
#(1*50); //---------- PORT1 IRQ TRIAL (STAYING IN POWER MODE) -------------//
|
wkup[2] = 1'b1;
|
wkup[2] = 1'b1;
|
@(posedge irq_acc[2]);
|
@(posedge irq_acc[`IRQ_NR-14]); // IRQ_ACC-2
|
#(10*50);
|
#(10*50);
|
dco_clk_cnt = 0;
|
dco_clk_cnt = 0;
|
#(80*50);
|
#(80*50);
|
if (dco_clk_cnt !== 80) tb_error("====== SCG0 TEST 3: DCO IS NOT RUNNING DURING IRQ (PORT 1) =====");
|
if (dco_clk_cnt !== 80) tb_error("====== SCG0 TEST 3: DCO IS NOT RUNNING DURING IRQ (PORT 1) =====");
|
dco_clk_cnt = 0;
|
dco_clk_cnt = 0;
|
Line 376... |
Line 376... |
if (dco_clk_cnt !== 0) tb_error("====== SCG0 TEST 4: DCO IS NOT STOPPED AFTER IRQ =====");
|
if (dco_clk_cnt !== 0) tb_error("====== SCG0 TEST 4: DCO IS NOT STOPPED AFTER IRQ =====");
|
|
|
|
|
//---------- PORT2 IRQ TRIAL (EXITING POWER MODE) -------------//
|
//---------- PORT2 IRQ TRIAL (EXITING POWER MODE) -------------//
|
wkup[3] = 1'b1;
|
wkup[3] = 1'b1;
|
@(posedge irq_acc[3]);
|
@(posedge irq_acc[`IRQ_NR-13]); // IRQ_ACC-3
|
#(10*50);
|
#(10*50);
|
dco_clk_cnt = 0;
|
dco_clk_cnt = 0;
|
#(80*50);
|
#(80*50);
|
if (dco_clk_cnt !== 80) tb_error("====== SCG0 TEST 5: DCO IS NOT RUNNING DURING IRQ =====");
|
if (dco_clk_cnt !== 80) tb_error("====== SCG0 TEST 5: DCO IS NOT RUNNING DURING IRQ =====");
|
dco_clk_cnt = 0;
|
dco_clk_cnt = 0;
|