Experiments of the third kind... This is an attempt at making a faithful and accurate HDL implementation of CADR. There will be no attempt at making this synthesizable (at this time)!
There is a IRC channel on irc.libera.net, ##lispm for random chit-chat. Feel free to send bugs directly to ams@gnu.org.
- Git
- GNU Make
- Python 3
- GHDL with the GCC or LLVM code generator or NVC
- optionally some sort of FST/VCD viewer:
Makefile is divided into three parts; Makefile.config and Makefile.common are always used.
Makefile.ghdl and Makefile.nvc are used depending on the value of the CADR4_HDLCOMPILER variable (ghdl or nvc). Default is ghdl.
git clone https://github.com/ams/cadr4
cd cadr4
make
All build artifacts are created under build directory.
Two special testbenches cadr_tb and cadr_boot_tb are autogenerated by make (build/cadr_tb.vhd and build/cadr_boot_tb.vhd), and it connects everything in CADR and ICMEM. cadr_boot_tb auto boots CADR.
make run-cadr_tb or run-cadr_boot_tb
The diagnostic display (5x 7-segment LED displays with dot) is displayed on the console.
make check
runs all available tests.
This is only applicable when GHDL is used.
If there is a wave.opt file at the project root, it is used as waveform options file in GHDL (--read-wave-opt).
If the file contains "recreate" in its first line, the file is deleted and recreated. This will show all signal paths.
If the file contains "ignore" in its first line, the file is ignored, --read-wave-opt is not used.
This is only applicable when NVC is used.
NVC by default uses top.include and top.exclude files (where top representes the name of the top-level unit name) in the project root.
Every signal in the design hierarchy is saved to build/signals.nvc gtkwave save file with wf-% target.
- cadr: cadr and icmem components based on CADR schematics
- cadr1: busint components based on CADR1 schematics
- cosim_vhpi: VHPI cosimulation sources for NVC
- cosim_vpi: VPI cosimulation sources for GHDL
- dip: dip components used by cadr, icmem and busint components
- doc: various documents and resources
- helper: non-CADR components required to run cadr_tb
- rom: ROM files loaded to CADR (P)ROMs and RAMs
- scripts: utility scripts
- soap: utility to generate SUDS (*_suds.vhd) files
- ttl: ttl components used by dip components
Each folder have a README.md containing more information.
- work.cadr_book: cadr components
- work.icmem_book: icmem components
- work.busint_book: busint components
- work.dip: dip components
- work.amd,ecc,fairchild,intel,signetics,sn74,other: ttl components
- work.misc: misc functions and procedures (no components)