/*
*
* This file is part of the Elpis processor project.
*
* Copyright © 2020-present. All rights reserved.
* Authors: Aurora Tomas and Rodrigo Huerta.
*
* This file is licensed under both the BSD-3 license for individual/non-commercial
* use. Full text of both licenses can be found in LICENSE file.
*/

`default_nettype none


// NOP defined as: add $0,$0,$0
`define NOP 32'h00000033

// PC Initial direction
`define PC_INITIAL 32'h00000000

// PC Exceptions
`define PC_EXCEPTIONS 32'h00002000

// ALU Opcodes
`define ALU_OP_ADD 			4'b0000
`define ALU_OP_SUB 			4'b0001
`define ALU_OP_BRANCH 		4'b0010
`define ALU_OP_AND 			4'b0011
`define ALU_OP_OR 			4'b0100
`define ALU_OP_XOR 			4'b0101
`define ALU_OP_SRA 			4'b0110
`define ALU_OP_SRL 			4'b0111
`define ALU_OP_SLL 			4'b1000

// Decode constants for move instructions
`define MOV_RM_TO_REGULAR	2'b01
`define MOV_REGULAR_TO_RM	2'b10

// Instruction opcode RISC-V
`define OPCODE_AL     	7'b0110011
`define OPCODE_ALI     	7'b0010011
`define OPCODE_LD     	7'b0000011
`define OPCODE_ST     	7'b0100011
`define OPCODE_JUMP   	7'b1101111	// JAL encoding of RISCV but used as jump in ppt. Ex: jump x3
`define OPCODE_BRANCH 	7'b1100011
`define OPCODE_MOV    	7'b0101111
`define OPCODE_TLBWRITE	7'b0101110
`define OPCODE_IRET		7'b1111111
`define OPCODE_IO		7'b1111101
`define OPCODE_ECALL	7'b1110011 // "ECALL" encoding. It uses inmediates for the system behavior.


// FUNCT3 for RISC-V instructions opcode
`define FUNCT3_OP_ADD_SUB	3'b000
`define FUNCT3_OP_SLL		3'b001
`define FUNCT3_OP_XOR		3'b100
`define FUNCT3_OP_SRL_SRA	3'b101
`define FUNCT3_OP_OR		3'b110
`define FUNCT3_OP_AND		3'b111

`define FUNCT3_OP_LB		3'b000
`define FUNCT3_OP_LH		3'b001
`define FUNCT3_OP_LW		3'b010
`define FUNCT3_OP_SB		3'b000
`define FUNCT3_OP_SH		3'b001
`define FUNCT3_OP_SW		3'b010

`define FUNCT3_BRANCH_BEQ	3'b000
`define FUNCT3_BRANCH_BNE	3'b001
`define FUNCT3_BRANCH_BLT	3'b100
`define FUNCT3_BRANCH_BGE	3'b101
`define FUNCT3_BRANCH_NO	3'b111

// FUNCT7 for RISC-V instructions opcode
`define FUNCT7_OP_ADD	7'b0000000
`define FUNCT7_OP_SUB	7'b0100000
`define FUNCT7_OP_MUL	7'b0000001
`define FUNCT7_OP_SRL	7'b0000000
`define FUNCT7_OP_SRA	7'b0100000

// FUNCT7 for move instructions
`define FUNCT7_MOV_RM_TO_REGULAR	7'b0000000
`define FUNCT7_MOV_REGULAR_TO_RM	7'b0000001

// FUNCT7 for IO instructions
`define FUNCT7_IO_PRINT_HEX	7'b0000001
`define FUNCT7_IO_READ_SW	7'b0000010

// Constants for memory
`define MEMORY_DELAY_CYCLES	5
`define MEMORY_SIZE		512  		// 2^20 - 2^5 = 2^15.

// Constants for cache
`define CACHE_LINE_SIZE		128
`define NUM_CACHE_LINES		4
`define CACHE_TAG_SIZE		26
`define IDLE_STATE			3'b000
`define ALLOCATE_STATE		3'b001
`define WRITE_BACK_STATE	3'b010

// Constants for arbiter
`define ARB_IDLE_STATE       	3'b000
`define ARB_DCACHE_REQUEST   	3'b001
`define ARB_ICACHE_REQUEST   	3'b010
`define ARB_DCACHE_WAIT   		3'b011
`define ARB_ICACHE_WAIT   		3'b100

// Constants for IO arbiter
`define ARB_IO_IDLE_STATE	2'b00
`define ARB_IO_CORE1_USE	2'b01

// Exception codes
`define EXC_OVERFLOW		3'b001
`define EXC_UNDERFLOW		3'b010
`define EXC_ILLEGAL_INST	3'b011
`define EXC_ITLB_MISS		3'b100
`define EXC_DTLB_MISS		3'b101

// IO codes
`define IO_PRINT_HEX		3'b110
`define IO_READ_SW			3'b111

// Constants for store buffer
`define SB_NUM_ENTRIES  3'd4

// Cache types
`define CACHE_TYPE_DCACHE 1'b0
`define CACHE_TYPE_ICACHE 1'b1

// Offset of data space at OS
`define OFFSET_OS_DATA_CORE0 8'h00

// Constants for TLB
`define ITLB_BASE_ADDRESS_SHIFT_CORE0  	16'h1000	// 1024
`define DTLB_BASE_ADDRESS_SHIFT_CORE0  	16'h4000	// 4096
`define NUM_TLB_LINES           		5'd16

// Constants for History File
`define HF_NUM_ENTRIES    5'd16

// Constants for FIFO coherence response states
`define FIFO_COH_NOT_SENT	2'b00
`define FIFO_COH_FIRST_SENT	2'b01
`define FIFO_COH_COMPLETE_SENT	2'b10

// Implementation of ceiling log2 
`define CLOG2(x) \
	((x <= 0)		? -1 : \
	(x == 1)		? 0 : \
	(x <= 2) 		? 1 : \
	(x <= 4) 		? 2 : \
	(x <= 8) 		? 3 : \
	(x <= 16) 		? 4 : \
	(x <= 32)		? 5 : \
	(x <= 64)		? 6 : \
	(x <= 128)		? 7 : \
	(x <= 256)		? 8 : \
	(x <= 512)		? 9 : \
	(x <= 1024)		? 10 : \
	(x <= 2048)		? 11 : \
	(x <= 4096)		? 12 : \
	(x <= 8192)		? 13 : )

