Add tcam test, fix tcam

This commit is contained in:
2026-08-14 09:32:09 -07:00
parent 9f8654f03c
commit 4ee539a694
10 changed files with 185 additions and 8 deletions

View File

@@ -1,2 +1,3 @@
yaml:
- "parser/sim.yaml"
- "parser/sim.yaml"
- "tcam/sim.yaml"

View File

@@ -0,0 +1,7 @@
tests:
- name: "tcam_sanity"
toplevel: "tcam"
modules:
- "tcam_sanity"
sources: "sources.list"
waves: True

View File

@@ -0,0 +1,4 @@
../../verilator.vlt
../../../src/net_core/sources.list
../../../src/common/taxi_sources.list

View File

@@ -0,0 +1,65 @@
import cocotb
import logging
from cocotb.clock import Clock
from cocotb.triggers import Timer, RisingEdge, FallingEdge
import random
CLK_PERIOD = 20
class TB:
def __init__(self, dut):
self.dut = dut
self.log = logging.getLogger("cocotb.tb")
self.log.setLevel(logging.INFO)
cocotb.start_soon(Clock(self.dut.i_clk, CLK_PERIOD, unit="ns").start())
async def program_line(self, addr: int, value: int):
self.dut.i_program_addr.value = addr
self.dut.i_program_data.value = value & (2**32-1)
self.dut.i_program_we.value = 1
await RisingEdge(self.dut.i_clk)
self.dut.i_program_addr.value = 0
self.dut.i_program_data.value = 0
self.dut.i_program_we.value = 0
async def send_data(self, value: int):
self.dut.i_search_data.value = value & (2**32-1)
self.dut.i_search_valid.value = 1
await RisingEdge(self.dut.i_clk)
self.dut.i_search_data.value = 0
self.dut.i_search_valid.value = 0
@cocotb.test
async def test_sanity(dut):
tb = TB(dut)
for _ in range(4):
await RisingEdge(tb.dut.i_clk)
for i in range(32):
await tb.program_line(i, 0xffffffff)
await tb.program_line(i+32, 0xffffffff)
for _ in range(4):
await RisingEdge(tb.dut.i_clk)
await tb.program_line(0, 0x5432edc0)
await tb.program_line(32, 0xabcd1230)
await tb.program_line(1, ~0xabcd1234)
await tb.program_line(33, 0xabcd1234)
for _ in range(4):
await RisingEdge(tb.dut.i_clk)
await tb.send_data(0xabcd1234)
await tb.send_data(0xabcd1235)
await Timer(1, "us")