catalyst-n1 / tb /tb_quick.v
mrwabbit's picture
Initial upload: Catalyst N1 open source neuromorphic processor RTL
e4cdd5f verified
// ============================================================================
// Copyright 2026 Henry Arthur Shulayev Barnes / Catalyst Neuromorphic Ltd
// Company No. 17054540 — UK Patent Application No. 2602902.6
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ============================================================================
`timescale 1ns/1ps
module tb_quick;
reg clk;
initial clk = 0;
always #5 clk = ~clk;
reg rst_n;
wire timestep_done;
wire [3:0] spike_valid_bus;
neuromorphic_mesh #(
.NUM_CORES(1), .CORE_ID_BITS(1),
.NUM_NEURONS(1024), .NEURON_BITS(10),
.DATA_WIDTH(16),
.POOL_DEPTH(1024), .POOL_ADDR_BITS(10),
.COUNT_BITS(10)
) dut (
.clk(clk), .rst_n(rst_n), .start(1'b0),
.prog_pool_we(1'b0), .prog_pool_core(2'b0), .prog_pool_addr(10'b0),
.prog_pool_src(10'b0), .prog_pool_target(10'b0), .prog_pool_weight(16'sd0), .prog_pool_comp(2'b0),
.prog_index_we(1'b0), .prog_index_core(2'b0), .prog_index_neuron(10'b0),
.prog_index_base(10'b0), .prog_index_count(10'b0), .prog_index_format(2'b0),
.prog_route_we(1'b0), .prog_route_src_core(2'b0), .prog_route_src_neuron(10'b0),
.prog_route_slot(3'b0), .prog_route_dest_core(2'b0), .prog_route_dest_neuron(10'b0),
.prog_route_weight(16'sd0),
.prog_global_route_we(1'b0), .prog_global_route_src_core(2'b0),
.prog_global_route_src_neuron(10'b0), .prog_global_route_slot(2'b0),
.prog_global_route_dest_core(2'b0), .prog_global_route_dest_neuron(10'b0),
.prog_global_route_weight(16'sd0),
.learn_enable(1'b0), .graded_enable(1'b0), .dendritic_enable(1'b0), .async_enable(1'b0),
.threefactor_enable(1'b0), .noise_enable(1'b0), .skip_idle_enable(1'b0), .scale_u_enable(1'b0),
.reward_value(16'sd0),
.prog_delay_we(1'b0), .prog_delay_core(2'b0), .prog_delay_addr(10'b0), .prog_delay_value(6'b0),
.prog_ucode_we(1'b0), .prog_ucode_core(2'b0), .prog_ucode_addr(8'b0), .prog_ucode_data(32'b0),
.prog_param_we(1'b0), .prog_param_core(2'b0), .prog_param_neuron(10'b0),
.prog_param_id(5'b0), .prog_param_value(16'sd0),
.ext_valid(1'b0), .ext_core(2'b0), .ext_neuron_id(10'b0), .ext_current(16'sd0),
.probe_read(1'b0), .probe_core(2'b0), .probe_neuron(10'b0), .probe_state_id(5'b0),
.probe_pool_addr(10'b0),
.timestep_done(timestep_done),
.spike_valid_bus(spike_valid_bus),
.dvfs_stall(8'b0),
.link_tx_full(1'b0),
.link_rx_core(2'b0), .link_rx_neuron(10'b0), .link_rx_current(16'sd0),
.link_rx_empty(1'b1)
);
initial begin
$display("[t=0] Starting quick test...");
rst_n = 0;
#50;
rst_n = 1;
#100;
$display("[t=150] Reset complete. Mesh idle.");
#100;
$display("[t=250] Quick test PASSED.");
$finish;
end
endmodule