// Amazon FPGA Hardware Development Kit // // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 #ifndef SH_DPI_TASKS #define SH_DPI_TASKS #include extern void sv_printf(char *msg); extern void sv_map_host_memory(uint8_t *memory); extern void cl_peek(uint64_t addr, uint32_t *data); extern void cl_poke(uint64_t addr, uint32_t data); extern void sv_int_ack(uint32_t int_num); extern void sv_pause(uint32_t x); void test_main(uint32_t *exit_code); void host_memory_putc(uint64_t addr, uint8_t data) { *(uint8_t *)addr = data; } //void host_memory_getc(uint64_t addr, uint8_t *data) uint8_t host_memory_getc(uint64_t addr) { return *(uint8_t *)addr; } void log_printf(const char *format, ...) { static char sv_msg_buffer[256]; va_list args; va_start(args, format); vsprintf(sv_msg_buffer, format, args); sv_printf(sv_msg_buffer); va_end(args); } void int_handler(uint32_t int_num) { // Vivado does not support svGetScopeFromName #ifndef VIVADO_SIM svScope scope; scope = svGetScopeFromName("tb"); svSetScope(scope); #endif log_printf("Received interrupt %2d", int_num); sv_int_ack(int_num); } #define LOW_32b(a) ((uint32_t)((uint64_t)(a) & 0xffffffff)) #define HIGH_32b(a) ((uint32_t)(((uint64_t)(a)) >> 32L)) #endif