Initial Chisel core implementation

This commit is contained in:
abnerhexu
2026-06-26 08:20:25 +00:00
commit 502803c37f
47 changed files with 2342 additions and 0 deletions

40
sim/verilator/memory.h Normal file
View File

@@ -0,0 +1,40 @@
#ifndef MEMORY_H
#define MEMORY_H
#include <cstdint>
#include <vector>
#include <string>
#define TOHOST_ADDR 0x80001000ULL
#define FROMHOST_ADDR 0x80001040ULL
#define MEM_BASE 0x80000000ULL
#define MEM_SIZE (64 * 1024 * 1024) // 64MB
class Memory {
private:
std::vector<uint8_t> mem;
uint64_t base_addr;
public:
Memory();
bool load_elf(const std::string& filename);
uint8_t read8(uint64_t addr);
uint16_t read16(uint64_t addr);
uint32_t read32(uint64_t addr);
uint64_t read64(uint64_t addr);
void write8(uint64_t addr, uint8_t data);
void write16(uint64_t addr, uint16_t data);
void write32(uint64_t addr, uint32_t data);
void write64(uint64_t addr, uint64_t data);
uint64_t get_entry_point() const { return entry_point; }
private:
uint64_t entry_point;
uint64_t to_offset(uint64_t addr);
};
#endif