v {xschem version=2.9.8 file_version=1.2

* Copyright 2021 Stefan Frederik Schippers
* 
* 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
*
*     https://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.

}
G {}
K {}
V {    //clk, reset, pc, instr, aluout, writedata, memwrite, and readdata

    // generate clock
    always begin
        #`CLKPDIV2 clock = ~clock;
    end

    initial begin
        $dumpfile("dumpfile.vcd");
        $dumpvars(0, xuut);
    end

    initial begin
        // initialize all variables
        clock = 0; reset = 1;
        // wait for first negative edge before de-asserting reset
        @(negedge clock) reset = 0;
        #1000
        $finish;
    end}
S {}
E {}
T {main:            addi $2, $0, 5        # 20020005
                 addi $7, $0, 3        # 20070003
                 addi $3, $0, 0xc      # 2003000c
                 or $4, $7, $2         # 00e22025
                 and $5, $3, $4        # 00642824
                 add $5, $5, $4        # 00a42820
                 beq $5, $7, end       # 10a70008
                 slt $6, $3, $4        # 0064302a
                 beq $6, $0, around    # 10c00001
                 addi $5, $0, 10       # 2005000a
around:          slt $6, $7, $2        # 00e2302a
                 add $7, $6, $5        # 00c53820
                 sub $7, $7, $2        # 00e23822
                 j end                 # 0800000f
                 lw $7, 0($0)          # 8c070000
end:             sw $7, 71($2)         # ac470047
} 850 -670 0 0 0.5 0.5 {font=monospace}
T {TEST PROGRAM} 1110 -780 0 0 1 1 {layer=8}
T {MIPS CPU
An implementation of a 32-bit single cycle MIPS processor in Verilog. 
This version of the MIPS single-cycle processor can execute the 
following instructions: add, sub, and, or, slt, lw, sw, beq, addi, and j.} 20 -1130 0 0 1 1 {}
T {Original work by Diadatp} 40 -820 0 0 0.6 0.6 { layer=5}
T {Ctrl-Click
to open link} 450 -860 0 0 0.3 0.3 {layer=11}
C {devices/title.sym} 160 -30 0 0 {name=l1 author="Stefan Schippers"}
C {mips_cpu/top.sym} 480 -100 0 0 {name=xuut}
C {devices/lab_pin.sym} 330 -110 0 0 {name=p1 lab=clock verilog_type=reg}
C {devices/lab_pin.sym} 330 -90 0 0 {name=p3 lab=reset verilog_type=reg}
C {devices/architecture.sym} 0 -530 0 0 { nothing here, use global schematic properties }
C {devices/verilog_preprocessor.sym} 30 -670 0 0 {name=s1  
string="`define CLKP 10 // clock period
`define CLKPDIV2 5 // clock period divided by 2
"}
C {devices/launcher.sym} 530 -800 0 0 {name=h1
descr=Github 
url=https://github.com/diadatp/mips_cpu}
