diff --git a/flows/makefile.lint b/flows/makefile.lint index dbfe8d52d41a36c8acc7ad3960a330deb5117534..fd2f9ca65851cef5fde3f029d2af1e51454b1a68 100644 --- a/flows/makefile.lint +++ b/flows/makefile.lint @@ -35,7 +35,7 @@ HAL_WAIVE += -design_info $(LINT_INFO_SOCDEBUG_DIR)/socdebug_controller_ip.waive LINT_TOP ?= nanosoc_chip_pads # Target from Running Cadence Xcellium Lint Tool -lint_xm: bootrom defs_gen +lint_xm: bootrom gen_defs @rm -rf $(LINT_DIR) @mkdir -p $(LINT_DIR) @cd $(LINT_DIR); xrun -hal -f $(DESIGN_VC) $(DEFINES_VC) +debug "-timescale 1ns/1ps" -top $(LINT_TOP) $(HAL_BLACK_BOX) $(HAL_WAIVE) $(LINT_NOCHECK) \ No newline at end of file diff --git a/hal/nanosoc_ip.waive b/hal/nanosoc_ip.waive index 9a4680b7285ec9bec6c33fe93008b8f6fb27f084..574a82fe0c5365d33977ba4ca4755e53291d2cca 100644 --- a/hal/nanosoc_ip.waive +++ b/hal/nanosoc_ip.waive @@ -112,13 +112,15 @@ lint_checking designunit = nanosoc_ss_cpu lint_checking designunit = nanosoc_ss_dma { + ATLGLC off; + // Not Top-level in design_info TPOUNR off; - // DMAC 1 Currently tied off - ATLGLC off; - TIELOG {"DMAC_1"} off; - USEPRT {"DMAC_1"} off; + // DMAC 0 and DMAC 1 Can be unininsantiated + TIELOG {"DMAC_0|DMAC_1"} off; + USEPRT {"DMAC_0|DMAC_1"} off; + } lint_checking designunit = nanosoc_ss_interconnect diff --git a/software/common/validation/apb_mux_tests.c b/software/common/validation/apb_mux_tests.c index a350c60056073024d36abf0c137cbc560aa08497..3bc6266b08043d44a092d2b3d7ec88d854634cd5 100644 --- a/software/common/validation/apb_mux_tests.c +++ b/software/common/validation/apb_mux_tests.c @@ -107,27 +107,27 @@ int main (void) puts ("2: dual timer"); if ( ID_Check(&apb_dualtimer_id[0], CMSDK_DUALTIMER_BASE) == 1 ) err_code |= 1<<2; puts ("3: blank - default slave (generates slave error)"); - // if ( ID_Check(&blank_id[0], 0x40003000 ) == 1 ) err_code |= 1<<3; + if ( ID_Check(&blank_id[0], 0x40003000 ) == 1 ) err_code |= 1<<3; puts ("4: UART 0 - Not Implemented"); - // if ( ID_Check(&apb_uart_id[0], CMSDK_UART0_BASE ) == 1 ) err_code |= 1<<4; + if ( ID_Check(&blank_id[0], CMSDK_UART0_BASE ) == 1 ) err_code |= 1<<4; puts ("5: UART 1 - Not Implemented"); - // if ( ID_Check(&apb_uart_id[0], CMSDK_UART1_BASE ) == 1 ) err_code |= 1<<5; + if ( ID_Check(&blank_id[0], CMSDK_UART1_BASE ) == 1 ) err_code |= 1<<5; puts ("6: UART 2"); if ( ID_Check(&apb_uart_id[0], CMSDK_UART2_BASE ) == 1 ) err_code |= 1<<6; puts ("7: blank - default slave (generates slave error)"); - // if ( ID_Check(&blank_id[0], 0x40007000 ) == 1 ) err_code |= 1<<7; + if ( ID_Check(&blank_id[0], 0x40007000 ) == 1 ) err_code |= 1<<7; puts ("8: Watchdog"); if ( ID_Check(&apb_watchdog_id[0], CMSDK_WATCHDOG_BASE ) == 1 ) err_code |= 1<<8; puts ("9: blank - default slave (generates slave error)"); - // if ( ID_Check(&blank_id[0], 0x40009000 ) == 1 ) err_code |= 1<<9; + if ( ID_Check(&blank_id[0], 0x40009000 ) == 1 ) err_code |= 1<<9; puts ("10: blank - default slave (generates slave error)"); - // if ( ID_Check(&blank_id[0], 0x4000A000 ) == 1 ) err_code |= 1<<10; + if ( ID_Check(&blank_id[0], 0x4000A000 ) == 1 ) err_code |= 1<<10; puts ("11: APB test slave"); if ( APB_test_slave_Check( 0x4000B000 ) == 1 ) err_code |= 1<<11; puts ("12: DMAC 1 (Not Implemented) - Slave Error"); - // if ( ID_Check(&blank_id[0], 0x4000C000 ) == 1 ) err_code |= 1<<12; + if ( ID_Check(&blank_id[0], 0x4000C000 ) == 1 ) err_code |= 1<<12; puts ("13: blank - default slave (generates slave error)"); - // if ( ID_Check(&blank_id[0], 0x4000D000 ) == 1 ) err_code |= 1<<13; + if ( ID_Check(&blank_id[0], 0x4000D000 ) == 1 ) err_code |= 1<<13; puts ("14: Debug USRT"); if ( ID_Check(&apb_uart_id[0], CMSDK_USRT2_BASE ) == 1 ) err_code |= 1<<14; puts ("15: DMAC 0 (PL230)"); @@ -154,7 +154,20 @@ int ID_Check(const unsigned char id_array[], unsigned int offset) int mismatch = 0; int id_is_zero = 0; unsigned long test_addr; - + + int volatile rdata; /* dummy variable for read data in bus fault testing */ + + /* Try and Read from Device Registers */ + hardfault_occurred = 0; + hardfault_expected = 1; + rdata = address_test_read(offset + 0xFC0); + hardfault_expected = 0; + if (hardfault_occurred > 0) { + hardfault_occurred = 0; + puts (" APB Slave Error : device not present\n"); + return 3; + } + /* Check the peripheral ID and component ID */ for (i=0;i<16;i++) { test_addr = offset + 4*i + 0xFC0; diff --git a/software/common/validation/dma_tests.c b/software/common/validation/dma_tests.c index fe0dafcb069de9f0683a99a35884f498228058ea..a04bd0f7b2eb7bb1ec5e495377928c8db84bf436 100644 --- a/software/common/validation/dma_tests.c +++ b/software/common/validation/dma_tests.c @@ -152,13 +152,10 @@ int pl230_dma_detect(void) puts("Detect if DMA controller is present..."); hardfault_occurred = 0; hardfault_expected = 1; - puts("Address Test"); rdata = address_test_read(CMSDK_PL230_BASE+ 0xFE0); hardfault_expected = 0; - puts("Now Here"); result = hardfault_occurred ? 1 : ID_Check(&pl230_id[0], CMSDK_PL230_BASE); hardfault_occurred = 0; - puts("Finishes check"); if (result!=0) { puts("** TEST SKIPPED ** DMA controller is not present.\n"); UartEndSimulation();