gpio test cleanup
diff --git a/verilog/dv/user_gpio/user_gpio_tb.v b/verilog/dv/user_gpio/user_gpio_tb.v index 8badada..5a30dd9 100644 --- a/verilog/dv/user_gpio/user_gpio_tb.v +++ b/verilog/dv/user_gpio/user_gpio_tb.v
@@ -217,6 +217,8 @@ /*****************************/ + wire [15:0] irq_lines = u_top.u_pinmux.u_pinmux_reg.irq_lines; + initial begin clock = 0; wbd_ext_cyc_i ='h0; // strobe/request @@ -293,6 +295,7 @@ wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_MASK,'hFFFFFFFF); wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_POS_INTR,'hFFFFFFFF); wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_NEG_INTR,'h00000000); + wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR_MSK,'hFFFF); // Drive GPIO with 0x55 cmp_gpio_pos_intr(8'h55,8'h55,8'h55,8'h55); @@ -316,6 +319,7 @@ wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_MASK,'hFFFFFFFF); wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_POS_INTR,'h00000000); wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_NEG_INTR,'hFFFFFFFF); + wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR_MSK,'hFFFF); // Drive GPIO with 0x55 cmp_gpio_neg_intr(8'h55,8'h55,8'h55,8'h55); @@ -544,6 +548,11 @@ // Check The Global Interrupt wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data,32'h8000); + + if(irq_lines[15] != 1'b1) begin + $display("ERROR: Global GPIO Interrupt not detected"); + `TB_GLBL.test_fail = 1; + end // Clear The GPIO Interrupt wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_CLR,32'hFFFFFFFF); @@ -555,6 +564,10 @@ // Check Interrupt are cleared wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data,32'h0); wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_STAT,read_data,32'h0); + if(irq_lines[15] != 1'b0) begin + $display("ERROR: Global GPIO Interrupt is not cleared"); + `TB_GLBL.test_fail = 1; + end end endtask @@ -595,6 +608,11 @@ // Check The Global Interrupt wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data,32'h8000); + if(irq_lines[15] != 1'b1) begin + $display("ERROR: Global GPIO Interrupt not detected"); + `TB_GLBL.test_fail = 1; + end + // Clear The GPIO Interrupt wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_CLR,32'hFFFFFFFF); @@ -604,6 +622,11 @@ // Check Interrupt are cleared wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data,32'h0); wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_STAT,read_data,32'h0); + + if(irq_lines[15] != 1'b0) begin + $display("ERROR: Global GPIO Interrupt is not cleared"); + `TB_GLBL.test_fail = 1; + end end endtask