ZAP is a superpipelined ARMv5TE ISA (pre-2000s) compatible processor with cache and MMU. Copyright (C) 2016-2022 Revanth Kamaraj
Open Issues (2016-2022): https://github.com/krevanth/ZAP/issues
Closed Issues (2016-2022): https://github.com/krevanth/ZAP/issues?q=is%3Aissue+is%3Aclosed
Date Range | Summary |
---|---|
26 Aug 2016 | PROJECT STARTED |
26 Aug 2016 to 31 Dec 2016 | v4 implementation with cache and MMU. |
01 Jan 2017 to 31 Dec 2018 | Reorganized files. Added T extension support, some v5 support, cache and MMU. Fixed UART. |
01 Jan 2019 to 31 Mar 2022 | NO UPATES DURING THIS TIMEFRAME. |
01 Apr 2022 to 14 Apr 2022 | Reorganized files, added v5+E extension support. Improved timing. |
15 Apr 2022 | PROJECT DEVELOPMENT HALTED. |
krevanth ~ git version 2.35.2
-----------------------------
Project: ZAP
HEAD: 14f1a9e (tmp_branch, origin/tmp_branch)
Created: 26 Aug 2016
Repo set to read only: 16 Apr 2022
Languages: ● Verilog (98.1 %) ● Perl (1.0 %) ● C (0.8 %)
Authors: Revanth Kamaraj(Username: krevanth, E-Mail:[email protected]), 458 commits
Repo: https://github.com/krevanth/ZAP.git
Commits: 458
Lines of code: 14621
Size: 1.18 MiB (95 files)
License: GPL-2.0-only
COPYRIGHT (C) 2016-2022 REVANTH KAMARAJ (KREVANTH)
THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
(AT YOUR OPTION) ANY LATER VERSION.
THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
BUT WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE
GNU GENERAL PUBLIC LICENSE FOR MORE DETAILS.
YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE ALONG
WITH THIS PROGRAM; IF NOT, WRITE TO THE FREE SOFTWARE FOUNDATION, INC.,
51 FRANKLIN STREET, FIFTH FLOOR, BOSTON, MA 02110-1301 USA.
ZAP is a Verilog processor core that can execute ARMv5TE binaries. Note that ZAP is NOT an ARM clone. ZAP is a completely different implementation and unique superpipelined microarchitecture built from scratch with the aim of providing maximum performance for typical FPGA/ASIC targets.
ZAP can run binaries compiled for legacy ARM cores (ARMv5TE ISA) and provides full software compatibility including architecturally exposed CPU modes, short instruction support, FCSE, cache, MMU, TLBs and the CP15 interface layer for cache and MMU control. The software compatibility allows ZAP to boot full operating systems like Linux.
This is one of the major projects done by me during my master's degree at university (JNTUH/VEDAIIT). In 2016, this project was presented at the 2016 ORCONF student design contest (https://www.fossi-foundation.org/2016/10/13/designcontest).
This is a fun project started by me on August 29th 2016. Majority of the developement was done by me in the 2016 to 2017 timeframe itself. Note that as of April 2022, I have completely halted development of this project and will only accept bug fixes.
Please refer to the arch spec for CP15 CSR requirements.
To get the files of the ZAP processor, please execute:
git clone https://github.com/krevanth/ZAP.git
Parameter | Default | Description |
---|---|---|
BP_ENTRIES | 1024 | Branch Predictor Settings. Predictor RAM depth. Must be 2^n and > 2 |
FIFO_DEPTH | 4 | Command FIFO depth. Must be 2^n and > 2 |
STORE_BUFFER_DEPTH | 16 | Depth of the store buffer. Must be 2^n and > 2 |
DATA_SECTION_TLB_ENTRIES | 4 | Data Cache/MMU Configuration. Section TLB entries. Must be 2^n (n > 0) |
DATA_LPAGE_TLB_ENTRIES | 8 | Data Cache/MMU Configuration. Large page TLB entries. Must be 2^n (n > 0) |
DATA_SPAGE_TLB_ENTRIES | 16 | Data Cache/MMU Configuration. Small page TLB entries. Must be 2^n (n > 0) |
DATA_FPAGE_TLB_ENTRIES | 32 | Data Cache/MMU Configuration. Tiny page TLB entries. Must be 2^n (n > 0) |
DATA_CACHE_SIZE | 4096 | Data Cache/MMU Configuration. Cache size in bytes. Must be at least 256B and 2^n |
CODE_SECTION_TLB_ENTRIES | 4 | Instruction Cache/MMU Configuration. Section TLB entries. Must be 2^n (n > 0) |
CODE_LPAGE_TLB_ENTRIES | 8 | Instruction Cache/MMU Configuration. Large page TLB entries. Must be 2^n (n > 0) |
CODE_SPAGE_TLB_ENTRIES | 16 | Instruction Cache/MMU Configuration. Small page TLB entries. Must be 2^n (n > 0) |
CODE_FPAGE_TLB_ENTRIES | 32 | Instruction Cache/MMU Configuration. Tiny page TLB entries. Must be 2^n (n > 0) |
CODE_CACHE_SIZE | 4096 | Instruction Cache/MMU Configuration. Cache size in bytes. Must be at least 256B and 2^n |
DATA_CACHE_LINE | 64 | Cache Line for Data (Bytes). Keep 2^n and >= 16 Bytes |
CODE_CACHE_LINE | 64 | Cache Line for Code (Bytes). Keep 2^n and >= 16 Bytes |
32-Bit Pipelined Wishbone B3 Compatible Bus (CTI/BTE Enabled)
Dir | Size | Port | Description | Synchronous to |
---|---|---|---|---|
input | 1 | i_clk | Clock. All logic is clocked on the rising edge of this signal. | -- |
input | 1 | i_reset | Reset. Synchronous active high reset. | Rising edge of i_clk |
input | 1 | i_irq | Interrupt. Level Sensitive. | Rising edge of i_clk |
input | 1 | i_fiq | Fast Interrupt. Level Sensitive. | Rising edge of i_clk |
output | 1 | o_wb_cyc | Wishbone CYC signal. | Rising edge of i_clk |
output | 1 | o_wb_stb | WIshbone STB signal. | Rising edge of i_clk |
output | [31:0] | o_wb_adr | Wishbone address signal. | Rising edge of i_clk |
output | 1 | o_wb_we | Wishbone write enable signal. | Rising edge of i_clk |
output | [31:0] | o_wb_dat | Wishbone data output signal. | Rising edge of i_clk |
output | [3:0] | o_wb_sel | Wishbone byte select signal. | Rising edge of i_clk |
output | [2:0] | o_wb_cti | Wishbone Cycle Type Indicator (Supported modes: Incrementing Burst, End of Burst) | Rising edge of i_clk |
output | [1:0] | o_wb_bte | Wishbone Burst Type Indicator (Supported modes: Linear) | Rising edge of i_clk |
input | 1 | i_wb_ack | Wishbone ack signal. Recommended to use Wishbone registered feedback cycles. | Rising edge of i_clk |
input | [31:0] | i_wb_dat | Wishbone data input signal. | Rising edge of i_clk |
For debian based distros:
sudo apt-get install gcc-arm-none-eabi binutils-arm-none-eabi gdb openocd iverilog gtkwave make perl xterm gcc # Install all required packages on the system.
cd $PROJ_ROOT/src/ts/$test_name # $PROJ_ROOT is the project directory.
make # Runs the test using IVerilog.
cd $PROJ_ROOT/obj/ts/$test_name # Switch to object folder.
gvim zap.log.gz # View the log file
gtkwave zap.vcd.gz # Exists if selected by Config.cfg of that test case.
For arch based distros:
sudo pacman -S arm-none-eabi-gcc arm-none-eabi-binutils gdb openocd iverilog gtkwave make perl xterm gcc # Install all required packages on the system.
cd $PROJ_ROOT/src/ts/$test_name # $PROJ_ROOT is the project directory.
make # Runs the test using IVerilog.
cd $PROJ_ROOT/obj/ts/$test_name # Switch to object folder.
gvim zap.log.gz # View the log file
gtkwave zap.vcd.gz # Exists if selected by Config.cfg of that test case.
Site Type | Used | Fixed | Prohibited | Available | Util% |
---|---|---|---|---|---|
Slice LUTs | 16105 | 0 | 0 | 20800 | 77.43 |
LUT as Logic | 14291 | 0 | 0 | 20800 | 68.71 |
LUT as Memory | 1814 | 0 | 0 | 9600 | 18.90 |
LUT as Distributed RAM | 1814 | 0 | |||
LUT as Shift Register | 0 | 0 | |||
Slice Registers | 9134 | 0 | 0 | 41600 | 21.96 |
Register as Flip Flop | 9134 | 0 | 0 | 41600 | 21.96 |
Register as Latch | 0 | 0 | 0 | 41600 | 0.00 |
F7 Muxes | 787 | 0 | 0 | 16300 | 4.83 |
F8 Muxes | 261 | 0 | 0 | 8150 | 3.20 |
Total | Clock Enable | Synchronous | Asynchronous |
---|---|---|---|
0 | _ | - | - |
0 | _ | - | Set |
0 | _ | - | Reset |
0 | _ | Set | - |
0 | _ | Reset | - |
0 | Yes | - | - |
0 | Yes | - | Set |
0 | Yes | - | Reset |
27 | Yes | Set | - |
9107 | Yes | Reset | - |
Site Type | Used | Fixed | Prohibited | Available | Util% |
---|---|---|---|---|---|
Block RAM Tile | 4.5 | 0 | 0 | 50 | 9.00 |
RAMB36/FIFO* | 4 | 0 | 0 | 50 | 8.00 |
RAMB36E1 only | 4 | ||||
RAMB18 | 1 | 0 | 0 | 100 | 1.00 |
RAMB18E1 only | 1 |
Site Type | Used | Fixed | Prohibited | Available | Util% |
---|---|---|---|---|---|
DSPs | 4 | 0 | 0 | 90 | 4.44 |
DSP48E1 only | 4 |
Ref Name | Used | Functional Category |
---|---|---|
FDRE | 9107 | Flop |
FDSE | 27 | Flop |
LUT6 | 8610 | LUT |
LUT5 | 2408 | LUT |
LUT3 | 2352 | LUT |
LUT4 | 1885 | LUT |
RAMD64E | 1536 | Distributed Memory |
MUXF7 | 787 | MuxFx |
LUT2 | 678 | LUT |
RAMD32 | 416 | Distributed Memory |
MUXF8 | 261 | MuxFx |
CARRY4 | 207 | CarryLogic |
RAMS32 | 138 | Distributed Memory |
LUT1 | 97 | LUT |
RAMB36E1 | 4 | Block Memory |
DSP48E1 | 4 | Block Arithmetic |
RAMB18E1 | 1 | Block Memory |
When porting to ASIC, these block RAMs should be replaced with equivalent dual port ASIC memories.
Module Name | RTL Object | PORT A (Depth x Width) | W | R | PORT B (Depth x Width) | W | R | Ports driving FF | RAMB18 | RAMB36 |
---|---|---|---|---|---|---|---|---|---|---|
zap_cache:/u_zap_cache_tag_ram | u_zap_ram_simple_tag/mem_reg | 64 x 46(READ_FIRST) | W | 64 x 46(WRITE_FIRST) | R | Port A and B | 0 | 1 | ||
zap_cache:/u_zap_cache_tag_ram | u_zap_ram_simple_tag/mem_reg | 64 x 46(READ_FIRST) | W | 64 x 46(WRITE_FIRST) | R | Port A and B | 0 | 1 | ||
u_zap_corei_2/u_zap_fetch_main | u_br_ram/mem_reg | 1 K x 2(READ_FIRST) | W | 1 K x 2(WRITE_FIRST) | R | Port A and B | 1 | 0 |
####### Data Cache 64 Byte Wide Memory
When porting to ASIC, these block RAMs should be replaced with equivalent dual port ASIC memories. ASIC should combine genblk1[*].u_zap_ram_simple_data_ram byte wide RAMs into a wider memory with byte enables. There should be a tradeoff between memory width and area.
Module Name | RTL Object | Inference | Size (Depth x Width) | Primitives |
---|---|---|---|---|
zap_cache:/u_zap_cache_tag_ram | genblk1[0].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[1].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[2].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[3].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[4].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[5].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[6].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[7].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[8].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[9].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[10].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[11].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[12].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[13].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[14].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[15].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[16].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[17].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[18].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[19].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[20].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[21].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[22].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[23].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[24].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[25].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[26].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[27].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[28].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[29].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[30].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[31].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[32].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[33].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[34].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[35].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[36].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[37].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[38].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[39].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[40].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[41].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[42].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[43].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[44].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[45].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[46].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[47].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[48].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[49].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[50].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[51].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[52].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[53].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[54].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[55].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[56].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[57].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[58].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[59].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[60].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[61].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[62].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[63].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
####### Code Cache 64 Byte Wide Memory
When porting to ASIC, these block RAMs should be replaced with equivalent dual port ASIC memories. ASIC should combine genblk1[*].u_zap_ram_simple_data_ram byte wide RAMs into a wider memory with byte enables. There should be a tradeoff between memory width and area.
Module Name | RTL Object | Inference | Size (Depth x Width) | Primitives |
---|---|---|---|---|
zap_cache:/u_zap_cache_tag_ram | genblk1[0].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[1].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[2].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[3].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[4].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[5].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[6].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[7].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[8].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[9].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[10].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[11].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[12].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[13].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[14].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[15].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[16].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[17].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[18].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[19].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[20].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[21].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[22].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[23].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[24].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[25].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[26].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[27].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[28].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[29].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[30].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[31].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[32].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[33].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[34].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[35].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[36].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[37].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[38].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[39].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[40].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[41].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[42].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[43].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[44].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[45].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[46].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[47].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[48].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[49].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[50].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[51].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[52].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[53].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[54].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[55].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[56].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[57].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[58].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[59].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[60].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[61].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[62].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
zap_cache:/u_zap_cache_tag_ram | genblk1[63].u_zap_ram_simple_data_ram/mem_reg | Implied | 64 x 8 | RAM64M x 3 |
####### Data TLB RAMs
When porting to ASIC, these block RAMs should be replaced with equivalent dual port ASIC memories.
Module Name | RTL Object | Inference | Size (Depth x Width) | Primitives |
---|---|---|---|---|
zap_cache:/u_zap_tlb | u_section_tlb/u_ram_simple/mem_reg | Implied | 4 x 42 | RAM32M x 7 |
zap_cache:/u_zap_tlb | u_lpage_tlb/u_ram_simple/mem_reg | Implied | 8 x 45 | RAM32M x 8 |
zap_cache:/u_zap_tlb | u_spage_tlb/u_ram_simple/mem_reg | Implied | 16 x 52 | RAM32M x 9 |
####### Code TLB RAMs
When porting to ASIC, these block RAMs should be replaced with equivalent dual port ASIC memories.
Module Name | RTL Object | Inference | Size (Depth x Width) | Primitives |
---|---|---|---|---|
zap_cache:/u_zap_tlb | u_section_tlb/u_ram_simple/mem_reg | Implied | 4 x 42 | RAM32M x 7 |
zap_cache:/u_zap_tlb | u_lpage_tlb/u_ram_simple/mem_reg | Implied | 8 x 45 | RAM32M x 8 |
zap_cache:/u_zap_tlb | u_spage_tlb/u_ram_simple/mem_reg | Implied | 16 x 52 | RAM32M x 9 |
####### FIFO RAMs
When porting to ASIC, these block RAMs should be replaced with equivalent dual port ASIC memories.
Module Name | RTL Object | Inference | Size (Depth x Width) | Primitives |
---|---|---|---|---|
zap_top | u_zap_wb_adapter/U_STORE_FIFO/mem_reg | Implied | 16 x 70 | RAM32M x 12 |
u_zap_corei_2/U_ZAP_FIFO | USF/mem_reg | Implied | 4 x 67 | RAM32M x 12 |
There are 0 register/latch pins with no clock.
There are 0 register/latch pins with constant_clock.
There are 0 register/latch pins which need pulse_width check
There are 0 pins that are not constrained for maximum delay.
There are 0 pins that are not constrained for maximum delay due to constant clock.
There are 0 input ports with no input delay specified.
There are 0 input ports with no input delay but user has a false path constraint.
There are 0 ports with no output delay specified.
There are 0 ports with no output delay but user has a false path constraint
There are 0 ports with no output delay but with a timing clock defined on it or propagating through it
There are 0 register/latch pins with multiple clocks.
There are 0 generated clocks that are not connected to a clock source.
There are 0 combinational loops in the design.
There are 0 input ports with partial input delay specified.
There are 0 ports with partial output delay specified.
There are 0 combinational latch loops in the design through latch input
Clock | Waveform(ns) | Period(ns) | Frequency(MHz) | WNS(ns) | TNS(ns) | TNS Failing Endpoints | TNS Total Endpoints | WHS(ns) | THS(ns) | THS Failing Endpoints | THS Total Endpoints | WPWS(ns) | TPWS(ns) | TPWS Failing Endpoints | TPWS Total Endpoints |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
i_clk | {0.000 4.546} | 9.091 | 109.999 | -0.885 | -759.965 | 2614 | 35514 | 0.077 | 0.000 | 0 | 35514 | 3.415 | 0.000 | 0 | 11377 |