Create project
This commit is contained in:
27
sim/sources.list
Normal file
27
sim/sources.list
Normal 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
1
sim/sub/taxi
Submodule
Submodule sim/sub/taxi added at 1fe508a6bf
1
sim/sub/verilog-6502
Submodule
1
sim/sub/verilog-6502
Submodule
Submodule sim/sub/verilog-6502 added at 8f19e45b40
7
sim/verilator.vlt
Normal file
7
sim/verilator.vlt
Normal 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
|
||||
9
sim/verilog6502_wrapper.yaml
Normal file
9
sim/verilog6502_wrapper.yaml
Normal 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"
|
||||
30
sim/verilog6502_wrapper_tb.sv
Normal file
30
sim/verilog6502_wrapper_tb.sv
Normal 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
|
||||
48
sim/verilog6502_wrapper_test.py
Normal file
48
sim/verilog6502_wrapper_test.py
Normal 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")
|
||||
Reference in New Issue
Block a user