Create project

This commit is contained in:
2026-04-18 18:50:18 -07:00
commit db61ca2d74
21 changed files with 1726 additions and 0 deletions

27
sim/sources.list Normal file
View File

@@ -0,0 +1,27 @@
verilator.vlt
verilog6502_wrapper_tb.sv
../src/regs/verilog6502_io_regs_pkg.sv
../src/regs/verilog6502_io_regs.sv
../src/verilog6502_addr_decoder.sv
../src/verilog6502_internal_memory.sv
../src/verilog6502_apb_adapter.sv
../src/verilog6502_external_memory.sv
../src/verilog6502_wrapper.sv
sub/verilog-6502/ALU.v
sub/verilog-6502/cpu_65c02.v
sub/taxi/src/apb/rtl/taxi_apb_if.sv
sub/taxi/src/axi/rtl/taxi_axi_if.sv
sub/taxi/src/axi/rtl/taxi_axil_if.sv
sub/taxi/src/axi/rtl/taxi_axi_ram_if_rd.sv
sub/taxi/src/axi/rtl/taxi_axi_ram_if_wr.sv
sub/taxi/src/axi/rtl/taxi_axi_ram_if_rdwr.sv
sub/taxi/src/apb/rtl/taxi_apb_interconnect.sv
sub/taxi/src/apb/rtl/taxi_apb_tie.sv
sub/taxi/src/prim/rtl/taxi_arbiter.sv
sub/taxi/src/prim/rtl/taxi_penc.sv
sub/taxi/src/apb/rtl/taxi_apb_axil_adapter.sv

1
sim/sub/taxi Submodule

Submodule sim/sub/taxi added at 1fe508a6bf

1
sim/sub/verilog-6502 Submodule

Submodule sim/sub/verilog-6502 added at 8f19e45b40

7
sim/verilator.vlt Normal file
View File

@@ -0,0 +1,7 @@
`verilator_config
lint_off -file "**/ALU.v"
lint_off -file "**/cpu_65c02.v"
lint_off -rule MULTIDRIVEN -file "**/verilog6502_io_regs.sv"
lint_off -rule UNOPTFLAT
lint_off -rule TIMESCALEMOD

View File

@@ -0,0 +1,9 @@
tests:
- name: "verilog6502_wrapper"
toplevel: "verilog6502_wrapper_tb"
modules:
- "verilog6502_wrapper_test"
sources: "sources.list"
waves: True
defines:
SIM: "hi"

View File

@@ -0,0 +1,30 @@
module verilog6502_wrapper_tb();
`define SIM
taxi_apb_if s_apb();
taxi_axil_if m_axil();
taxi_axi_if s_axi();
logic clk;
logic rst;
logic o_irq_ext;
logic i_irq_ext;
logic i_nmi_ext;
verilog6502_wrapper u_dut(
.clk(clk),
.rst(rst),
.s_apb(s_apb),
.m_axil_rd(m_axil),
.m_axil_wr(m_axil),
.s_axi_rd(s_axi),
.s_axi_wr(s_axi),
.o_irq_ext(o_irq_ext),
.i_irq_ext(i_irq_ext),
.i_nmi_ext(i_nmi_ext)
);
endmodule

View File

@@ -0,0 +1,48 @@
import cocotb
from cocotb.handle import Immediate
from cocotb.clock import Clock
from cocotb.triggers import Timer, RisingEdge
from cocotbext.axi.apb import ApbMaster, ApbBus
from cocotbext.axi import AxiMaster, AxiBus, AxiLiteBus, AxiLiteRam
CLK_PERIOD = 5
@cocotb.test
async def test_sanity(dut):
print("Hello world")
cocotb.start_soon(Clock(dut.clk, CLK_PERIOD, unit="ns").start())
s_apb = ApbMaster(ApbBus.from_prefix(dut.s_apb, ""), dut.clk, dut.rst)
s_axi = AxiMaster(AxiBus.from_prefix(dut.s_axi, ""), dut.clk, dut.rst)
m_axil = AxiLiteRam(AxiLiteBus.from_prefix(dut.m_axil, ""), dut.clk, dut.rst, size=2**32)
m_axil.write(0, b"Hello, world!")
dut.rst.value = Immediate(1)
for _ in range(10):
await RisingEdge(dut.clk)
dut.rst.value = 0
for _ in range(10):
await RisingEdge(dut.clk)
# await s_axi.write(0x200, [0x58, 0xa9, 0x00, 0x1a, 0xcb, 0x4c, 0x03, 0x02])
await s_axi.write(0x200, [0xAD, 0x00, 0xE0, 0xAD, 0x01, 0xE0, 0xAD, 0x02, 0xE0, 0xAD, 0x03, 0xE0, 0xAD, 0x04, 0xE0, 0xCB])
cocotb.start_soon(s_axi.read(0x200, 8))
await Timer(10, "us")
await s_apb.write_dword(0x0, 0)
await Timer(1, "us")
dut.i_nmi_ext.value = Immediate(1)
await Timer(1, "us")