`define RAM_ADDRESS_BITS 23 `define RAM_BYTE_BITS 8 `define RAM_WORD_BYTES 2 `define RAM_LINE_WORDS 1 `define PDP_ADDRESS_BITS 15 `define NUM_PDPS 4 `define UART_BYTE_BITS 8 `define TAG_BITS $clog2(`NUM_PDPS+1) typedef bit [`RAM_ADDRESS_BITS-1:0] ram_word_address_t; typedef bit [`RAM_ADDRESS_BITS-1:$clog2(`RAM_LINE_WORDS)] ram_line_address_t; typedef bit [`RAM_BYTE_BITS-1:0] ram_byte_t; typedef ram_byte_t [`RAM_WORD_BYTES-1:0] ram_word_t; typedef ram_word_t [`RAM_LINE_WORDS-1:0] ram_line_t; typedef bit [$clog2(`RAM_WORD_BYTES):0] ram_word_mask_t; typedef ram_word_mask_t [`RAM_LINE_WORDS-1:0] ram_line_mask_t; typedef bit [$clog2(`RAM_WORD_BYTES+1):0] ram_byte_count_t; typedef bit [$clog2(`RAM_LINE_WORDS+1):0] ram_word_count_t; typedef bit [`RAM_ADDRESS_BITS-1:`PDP_ADDRESS_BITS] ram_pdp_address_space_t; typedef bit [`PDP_ADDRESS_BITS-1:0] pdp_word_address_t; typedef bit [`PDP_ADDRESS_BITS-1:$clog2(`RAM_LINE_WORDS)] pdp_line_address_t; typedef bit [`TAG_BITS-1:0] tag_t; typedef bit [`UART_BYTE_BITS-1:0] uart_byte_t; typedef struct packed { ram_line_address_t address; bit write; ram_line_t data; ram_line_mask_t mask; tag_t tag; } arb_to_ram_t; typedef struct packed { ram_line_address_t address; ram_line_t data; tag_t tag; } ram_to_arb_t; typedef struct packed { pdp_line_address_t address; bit write; bit snoop_response; ram_line_t data; ram_line_mask_t mask; } core_to_mem_t; typedef struct packed { pdp_line_address_t address; bit snoop; ram_line_t data; } mem_to_core_t;