aboutsummaryrefslogtreecommitdiffstats
path: root/python/dump_design.py
blob: 419c7304662ac1613db694f74a0f0df30b2f1bd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Run ./nextpnr-ice40 --json ice40/blinky.json --run python/dump_design.py
for cell, cinfo in sorted(ctx.cells, key=lambda x: x.first):
    print("Cell {} : {}".format(cell, cinfo.type))
    print("\tPorts:")
    for port, pinfo in sorted(cinfo.ports, key=lambda x: x.first):
        dir = (" <-- ", " --> ", " <-> ")[int(pinfo.type)]
        if pinfo.net is not None:
            print("\t\t{} {} {}".format(port, dir, pinfo.net.name))

    if len(cinfo.attrs) > 0:
        print("\tAttrs:")
        for attr, val in cinfo.attrs:
            print("\t\t{}: {}".format(attr, val))

    if len(cinfo.params) > 0:
        print("\tParams:")
        for param, val in cinfo.params:
            if val.isdigit():
                val = bin(int(val))[2:]
                val = "{}'b{}".format(len(val), val)
            print("\t\t{}: {}".format(param, val))

    if cinfo.bel is not None:
        print("\tBel: {}".format(cinfo.bel))
    print()
n> #include "../V2Protocol.h" #include "XMEGANVM.h" #include "TINYNVM.h" #include "Config/AppConfig.h" /* Preprocessor Checks: */ #if ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1)) /* On the XPLAIN board, we only need PDI programming for the ATXMEGA128A1 - disable ISP to prevent hardware damage and force-enable XPROG. */ #undef ENABLE_ISP_PROTOCOL #if !defined(ENABLE_XPROG_PROTOCOL) #define ENABLE_XPROG_PROTOCOL #endif #endif /* Macros: */ #define XPROG_CMD_ENTER_PROGMODE 0x01 #define XPROG_CMD_LEAVE_PROGMODE 0x02 #define XPROG_CMD_ERASE 0x03 #define XPROG_CMD_WRITE_MEM 0x04 #define XPROG_CMD_READ_MEM 0x05 #define XPROG_CMD_CRC 0x06 #define XPROG_CMD_SET_PARAM 0x07 #define XPROG_MEM_TYPE_APPL 1 #define XPROG_MEM_TYPE_BOOT 2 #define XPROG_MEM_TYPE_EEPROM 3 #define XPROG_MEM_TYPE_FUSE 4 #define XPROG_MEM_TYPE_LOCKBITS 5 #define XPROG_MEM_TYPE_USERSIG 6 #define XPROG_MEM_TYPE_FACTORY_CALIBRATION 7 #define XPROG_ERASE_CHIP 1 #define XPROG_ERASE_APP 2 #define XPROG_ERASE_BOOT 3 #define XPROG_ERASE_EEPROM 4 #define XPROG_ERASE_APP_PAGE 5 #define XPROG_ERASE_BOOT_PAGE 6 #define XPROG_ERASE_EEPROM_PAGE 7 #define XPROG_ERASE_USERSIG 8 #define XPROG_MEM_WRITE_ERASE 0 #define XPROG_MEM_WRITE_WRITE 1 #define XPROG_CRC_APP 1 #define XPROG_CRC_BOOT 2 #define XPROG_CRC_FLASH 3 #define XPROG_ERR_OK 0 #define XPROG_ERR_FAILED 1 #define XPROG_ERR_COLLISION 2 #define XPROG_ERR_TIMEOUT 3 #define XPROG_PARAM_NVMBASE 0x01 #define XPROG_PARAM_EEPPAGESIZE 0x02 #define XPROG_PARAM_NVMCMD_REG 0x03 #define XPROG_PARAM_NVMCSR_REG 0x04 #define XPROG_PARAM_UNKNOWN_1 0x05 #define XPROG_PROTOCOL_PDI 0x00 #define XPROG_PROTOCOL_JTAG 0x01 #define XPROG_PROTOCOL_TPI 0x02 #define XPROG_PAGEMODE_WRITE (1 << 1) #define XPROG_PAGEMODE_ERASE (1 << 0) /* External Variables: */ extern uint32_t XPROG_Param_NVMBase; extern uint16_t XPROG_Param_EEPageSize; extern uint8_t XPROG_Param_NVMCSRRegAddr; extern uint8_t XPROG_Param_NVMCMDRegAddr; /* Function Prototypes: */ void XPROGProtocol_SetMode(void); void XPROGProtocol_Command(void); #if (defined(INCLUDE_FROM_XPROGPROTOCOL_C) && defined(ENABLE_XPROG_PROTOCOL)) static void XPROGProtocol_EnterXPROGMode(void); static void XPROGProtocol_LeaveXPROGMode(void); static void XPROGProtocol_SetParam(void); static void XPROGProtocol_Erase(void); static void XPROGProtocol_WriteMemory(void); static void XPROGProtocol_ReadMemory(void); static void XPROGProtocol_ReadCRC(void); #endif #endif