From e7cd451e7ee4837ecc1b0ca7a32c38cb031e3f32 Mon Sep 17 00:00:00 2001 From: Jose Date: Mon, 2 Mar 2026 23:20:54 +0100 Subject: [PATCH] prototype works --- riscv-ac.sim/sim_1/behav/xsim/compile.sh | 28 + riscv-ac.sim/sim_1/behav/xsim/elaborate.sh | 26 + riscv-ac.sim/sim_1/behav/xsim/glbl.v | 84 + riscv-ac.sim/sim_1/behav/xsim/program.mem | 3 + riscv-ac.sim/sim_1/behav/xsim/simulate.sh | 26 + riscv-ac.sim/sim_1/behav/xsim/tb_top.tcl | 11 + riscv-ac.sim/sim_1/behav/xsim/tb_top.vcd | 7391 +++++++++++++++++ .../sim_1/behav/xsim/tb_top_behav.wdb | Bin 0 -> 48430 bytes riscv-ac.sim/sim_1/behav/xsim/tb_top_vlog.prj | 23 + .../xsim.dir/tb_top_behav/Compile_Options.txt | 1 + .../tb_top_behav/TempBreakPointFile.txt | 1 + .../xsim.dir/tb_top_behav/obj/xsim_0.lnx64.o | Bin 0 -> 70864 bytes .../xsim.dir/tb_top_behav/obj/xsim_1.lnx64.o | Bin 0 -> 12064 bytes .../behav/xsim/xsim.dir/tb_top_behav/xsim.dbg | Bin 0 -> 40208 bytes .../behav/xsim/xsim.dir/tb_top_behav/xsim.mem | Bin 0 -> 8261 bytes .../xsim/xsim.dir/tb_top_behav/xsim.reloc | Bin 0 -> 8225 bytes .../behav/xsim/xsim.dir/tb_top_behav/xsim.rlx | 12 + .../xsim/xsim.dir/tb_top_behav/xsim.rtti | Bin 0 -> 323 bytes .../xsim/xsim.dir/tb_top_behav/xsim.svtype | Bin 0 -> 109 bytes .../xsim/xsim.dir/tb_top_behav/xsim.type | Bin 0 -> 24 bytes .../xsim/xsim.dir/tb_top_behav/xsim.version | 1 + .../xsim/xsim.dir/tb_top_behav/xsim.xdbg | Bin 0 -> 41568 bytes .../xsim.dir/tb_top_behav/xsimSettings.ini | 50 + .../behav/xsim/xsim.dir/tb_top_behav/xsimk | Bin 0 -> 68536 bytes .../xsim/xsim.dir/xil_defaultlib/alu.sdb | Bin 0 -> 2510 bytes .../xsim/xsim.dir/xil_defaultlib/control.sdb | Bin 0 -> 5385 bytes .../xsim/xsim.dir/xil_defaultlib/dmem.sdb | Bin 0 -> 2114 bytes .../xsim/xsim.dir/xil_defaultlib/ex_me.sdb | Bin 0 -> 2295 bytes .../xsim.dir/xil_defaultlib/forwarding.sdb | Bin 0 -> 3565 bytes .../xsim/xsim.dir/xil_defaultlib/glbl.sdb | Bin 0 -> 5306 bytes .../xsim/xsim.dir/xil_defaultlib/hazard.sdb | Bin 0 -> 2004 bytes .../xsim/xsim.dir/xil_defaultlib/id_ex.sdb | Bin 0 -> 3726 bytes .../xsim/xsim.dir/xil_defaultlib/if_id.sdb | Bin 0 -> 2116 bytes .../xsim/xsim.dir/xil_defaultlib/imem.sdb | Bin 0 -> 2175 bytes .../xsim/xsim.dir/xil_defaultlib/imm_gen.sdb | Bin 0 -> 2318 bytes .../xsim/xsim.dir/xil_defaultlib/me_wb.sdb | Bin 0 -> 2128 bytes .../behav/xsim/xsim.dir/xil_defaultlib/pc.sdb | Bin 0 -> 929 bytes .../xsim/xsim.dir/xil_defaultlib/regfile.sdb | Bin 0 -> 2202 bytes .../xsim/xsim.dir/xil_defaultlib/tb_top.sdb | Bin 0 -> 1797 bytes .../xsim/xsim.dir/xil_defaultlib/top.sdb | Bin 0 -> 14059 bytes .../xil_defaultlib/xil_defaultlib.rlx | 20 + .../sim_1/behav/xsim/xsim.dir/xsim.version | 1 + riscv-ac.sim/sim_1/behav/xsim/xsim.ini | 1 + riscv-ac.srcs/constrs_1/new/CmodA7_Master.xdc | 139 + riscv-ac.srcs/sim_1/new/program.mem | 3 + riscv-ac.srcs/sim_1/new/tb_top.v | 58 + riscv-ac.srcs/sources_1/new/alu.v | 40 +- riscv-ac.srcs/sources_1/new/control.v | 66 +- riscv-ac.srcs/sources_1/new/dmem.v | 27 +- riscv-ac.srcs/sources_1/new/ex_me.v | 42 + riscv-ac.srcs/sources_1/new/forwarding.v | 69 + riscv-ac.srcs/sources_1/new/hazard.v | 62 + riscv-ac.srcs/sources_1/new/id_ex.v | 57 + riscv-ac.srcs/sources_1/new/if_id.v | 51 + riscv-ac.srcs/sources_1/new/imem.v | 27 +- riscv-ac.srcs/sources_1/new/imm_gen.v | 41 +- riscv-ac.srcs/sources_1/new/me_wb.v | 42 + riscv-ac.srcs/sources_1/new/pc.v | 16 +- riscv-ac.srcs/sources_1/new/regfile.v | 23 +- riscv-ac.srcs/sources_1/new/top.v | 286 +- riscv-ac.xpr | 81 +- tb_top_behav.wcfg | 335 + 62 files changed, 8924 insertions(+), 220 deletions(-) create mode 100755 riscv-ac.sim/sim_1/behav/xsim/compile.sh create mode 100755 riscv-ac.sim/sim_1/behav/xsim/elaborate.sh create mode 100644 riscv-ac.sim/sim_1/behav/xsim/glbl.v create mode 100755 riscv-ac.sim/sim_1/behav/xsim/program.mem create mode 100755 riscv-ac.sim/sim_1/behav/xsim/simulate.sh create mode 100644 riscv-ac.sim/sim_1/behav/xsim/tb_top.tcl create mode 100644 riscv-ac.sim/sim_1/behav/xsim/tb_top.vcd create mode 100644 riscv-ac.sim/sim_1/behav/xsim/tb_top_behav.wdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/tb_top_vlog.prj create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/Compile_Options.txt create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/TempBreakPointFile.txt create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/obj/xsim_0.lnx64.o create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/obj/xsim_1.lnx64.o create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.dbg create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.mem create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.reloc create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.rlx create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.rtti create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.svtype create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.type create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.version create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.xdbg create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsimSettings.ini create mode 100755 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsimk create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/alu.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/control.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/dmem.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/ex_me.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/forwarding.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/glbl.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/hazard.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/id_ex.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/if_id.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/imem.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/imm_gen.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/me_wb.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/pc.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/regfile.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/tb_top.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/top.sdb create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/xil_defaultlib.rlx create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xsim.version create mode 100644 riscv-ac.sim/sim_1/behav/xsim/xsim.ini create mode 100644 riscv-ac.srcs/constrs_1/new/CmodA7_Master.xdc create mode 100644 riscv-ac.srcs/sim_1/new/program.mem create mode 100644 riscv-ac.srcs/sim_1/new/tb_top.v create mode 100644 riscv-ac.srcs/sources_1/new/ex_me.v create mode 100644 riscv-ac.srcs/sources_1/new/forwarding.v create mode 100644 riscv-ac.srcs/sources_1/new/hazard.v create mode 100644 riscv-ac.srcs/sources_1/new/id_ex.v create mode 100644 riscv-ac.srcs/sources_1/new/if_id.v create mode 100644 riscv-ac.srcs/sources_1/new/me_wb.v create mode 100644 tb_top_behav.wcfg diff --git a/riscv-ac.sim/sim_1/behav/xsim/compile.sh b/riscv-ac.sim/sim_1/behav/xsim/compile.sh new file mode 100755 index 0000000..b388302 --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/compile.sh @@ -0,0 +1,28 @@ +#!/bin/bash -f +# **************************************************************************** +# Vivado (TM) v2025.2 (64-bit) +# +# Filename : compile.sh +# Simulator : AMD Vivado Simulator +# Description : Script for compiling the simulation design source files +# +# Generated by Vivado on Mon Mar 02 22:22:56 CET 2026 +# SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# usage: compile.sh +# +# **************************************************************************** +export SIM_VER_XSIM=2025.2 +export GCC_VER_XSIM=9.3.0 + +# catch pipeline exit status +set -Eeuo pipefail +# compile Verilog/System Verilog design sources +echo "xvlog --incr --relax -prj tb_top_vlog.prj" +xvlog --incr --relax -prj tb_top_vlog.prj 2>&1 | tee compile.log + +echo "Waiting for jobs to finish..." +echo "No pending jobs, compilation finished." diff --git a/riscv-ac.sim/sim_1/behav/xsim/elaborate.sh b/riscv-ac.sim/sim_1/behav/xsim/elaborate.sh new file mode 100755 index 0000000..a912f99 --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/elaborate.sh @@ -0,0 +1,26 @@ +#!/bin/bash -f +# **************************************************************************** +# Vivado (TM) v2025.2 (64-bit) +# +# Filename : elaborate.sh +# Simulator : AMD Vivado Simulator +# Description : Script for elaborating the compiled design +# +# Generated by Vivado on Mon Mar 02 22:22:58 CET 2026 +# SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# usage: elaborate.sh +# +# **************************************************************************** +export SIM_VER_XSIM=2025.2 +export GCC_VER_XSIM=9.3.0 + +# catch pipeline exit status +set -Eeuo pipefail +# elaborate design +echo "xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip --snapshot tb_top_behav xil_defaultlib.tb_top xil_defaultlib.glbl -log elaborate.log" +xelab --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip --snapshot tb_top_behav xil_defaultlib.tb_top xil_defaultlib.glbl -log elaborate.log + diff --git a/riscv-ac.sim/sim_1/behav/xsim/glbl.v b/riscv-ac.sim/sim_1/behav/xsim/glbl.v new file mode 100644 index 0000000..ed3b249 --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/glbl.v @@ -0,0 +1,84 @@ +// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $ +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + wire GRESTORE; + tri1 p_up_tmp; + tri (weak1, strong0) PLL_LOCKG = p_up_tmp; + + wire PROGB_GLBL; + wire CCLKO_GLBL; + wire FCSBO_GLBL; + wire [3:0] DO_GLBL; + wire [3:0] DI_GLBL; + + reg GSR_int; + reg GTS_int; + reg PRLD_int; + reg GRESTORE_int; + +//-------- JTAG Globals -------------- + wire JTAG_TDO_GLBL; + wire JTAG_TCK_GLBL; + wire JTAG_TDI_GLBL; + wire JTAG_TMS_GLBL; + wire JTAG_TRST_GLBL; + + reg JTAG_CAPTURE_GLBL; + reg JTAG_RESET_GLBL; + reg JTAG_SHIFT_GLBL; + reg JTAG_UPDATE_GLBL; + reg JTAG_RUNTEST_GLBL; + + reg JTAG_SEL1_GLBL = 0; + reg JTAG_SEL2_GLBL = 0 ; + reg JTAG_SEL3_GLBL = 0; + reg JTAG_SEL4_GLBL = 0; + + reg JTAG_USER_TDO1_GLBL = 1'bz; + reg JTAG_USER_TDO2_GLBL = 1'bz; + reg JTAG_USER_TDO3_GLBL = 1'bz; + reg JTAG_USER_TDO4_GLBL = 1'bz; + + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; + assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; + + initial begin + GSR_int = 1'b1; + PRLD_int = 1'b1; + #(ROC_WIDTH) + GSR_int = 1'b0; + PRLD_int = 1'b0; + end + + initial begin + GTS_int = 1'b1; + #(TOC_WIDTH) + GTS_int = 1'b0; + end + + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + +endmodule +`endif diff --git a/riscv-ac.sim/sim_1/behav/xsim/program.mem b/riscv-ac.sim/sim_1/behav/xsim/program.mem new file mode 100755 index 0000000..3571c71 --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/program.mem @@ -0,0 +1,3 @@ +000000B3 +00810113 +002080B3 \ No newline at end of file diff --git a/riscv-ac.sim/sim_1/behav/xsim/simulate.sh b/riscv-ac.sim/sim_1/behav/xsim/simulate.sh new file mode 100755 index 0000000..782e214 --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/simulate.sh @@ -0,0 +1,26 @@ +#!/bin/bash -f +# **************************************************************************** +# Vivado (TM) v2025.2 (64-bit) +# +# Filename : simulate.sh +# Simulator : AMD Vivado Simulator +# Description : Script for simulating the design by launching the simulator +# +# Generated by Vivado on Mon Mar 02 22:16:52 CET 2026 +# SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025 +# +# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. +# Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# usage: simulate.sh +# +# **************************************************************************** +export SIM_VER_XSIM=2025.2 +export GCC_VER_XSIM=9.3.0 + +# catch pipeline exit status +set -Eeuo pipefail +# simulate design +echo "xsim tb_top_behav -key {Behavioral:sim_1:Functional:tb_top} -tclbatch tb_top.tcl -log simulate.log" +xsim tb_top_behav -key {Behavioral:sim_1:Functional:tb_top} -tclbatch tb_top.tcl -log simulate.log + diff --git a/riscv-ac.sim/sim_1/behav/xsim/tb_top.tcl b/riscv-ac.sim/sim_1/behav/xsim/tb_top.tcl new file mode 100644 index 0000000..1094e45 --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/tb_top.tcl @@ -0,0 +1,11 @@ +set curr_wave [current_wave_config] +if { [string length $curr_wave] == 0 } { + if { [llength [get_objects]] > 0} { + add_wave / + set_property needs_save false [current_wave_config] + } else { + send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console." + } +} + +run 1000ns diff --git a/riscv-ac.sim/sim_1/behav/xsim/tb_top.vcd b/riscv-ac.sim/sim_1/behav/xsim/tb_top.vcd new file mode 100644 index 0000000..704e984 --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/tb_top.vcd @@ -0,0 +1,7391 @@ +$date + Sun Mar 1 19:39:07 2026 +$end + +$version + 2025.2 + $dumpfile ("tb_top.vcd") +$end + +$timescale + 1ps +$end + +$scope module tb_top $end +$var reg 1 ! clk $end +$var reg 1 " rst $end +$scope module uut $end +$var wire 1 # clk $end +$var wire 1 $ rst $end +$var wire 32 % pc_F [31:0] $end +$var wire 32 & pc4_F [31:0] $end +$var wire 32 ' instr_F [31:0] $end +$var wire 32 ( next_pc_F [31:0] $end +$var wire 1 ) PC_En $end +$var wire 1 * IF_ID_En $end +$var wire 1 + IF_ID_Clr $end +$var wire 32 , pc_D [31:0] $end +$var wire 32 - pc4_D [31:0] $end +$var wire 32 . instr_D [31:0] $end +$var wire 5 / rs1_D [4:0] $end +$var wire 5 0 rs2_D [4:0] $end +$var wire 5 1 rd_D [4:0] $end +$var wire 32 2 imm_D [31:0] $end +$var wire 32 3 regA_D [31:0] $end +$var wire 32 4 regB_D [31:0] $end +$var wire 1 5 we_reg_D $end +$var wire 1 6 we_mem_D $end +$var wire 1 7 mem_to_reg_D $end +$var wire 1 8 alu_src_D $end +$var wire 1 9 branch_D $end +$var wire 4 : alu_op_D [3:0] $end +$var wire 1 ; Branch_Taken $end +$var wire 32 < branch_target_D [31:0] $end +$var wire 2 = ID_ForwardA [1:0] $end +$var wire 2 > ID_ForwardB [1:0] $end +$var wire 32 ? cmp_A [31:0] $end +$var wire 32 @ cmp_B [31:0] $end +$var wire 1 A ID_EX_Clr $end +$var wire 32 B pc_E [31:0] $end +$var wire 32 C pc4_E [31:0] $end +$var wire 32 D regA_E [31:0] $end +$var wire 32 E regB_E [31:0] $end +$var wire 32 F imm_E [31:0] $end +$var wire 5 G rs1_E [4:0] $end +$var wire 5 H rs2_E [4:0] $end +$var wire 5 I rd_E [4:0] $end +$var wire 1 J we_reg_E $end +$var wire 1 K we_mem_E $end +$var wire 1 L mem_to_reg_E $end +$var wire 1 M alu_src_E $end +$var wire 1 N branch_E $end +$var wire 4 O alu_op_E [3:0] $end +$var wire 2 P EX_ForwardA [1:0] $end +$var wire 2 Q EX_ForwardB [1:0] $end +$var wire 32 R alu_A [31:0] $end +$var wire 32 S alu_B_temp [31:0] $end +$var wire 32 T alu_B [31:0] $end +$var wire 32 U alu_res_E [31:0] $end +$var wire 1 V alu_zero_E $end +$var wire 32 W alu_res_M [31:0] $end +$var wire 32 X regB_M [31:0] $end +$var wire 32 Y pc4_M [31:0] $end +$var wire 5 Z rd_M [4:0] $end +$var wire 1 [ we_reg_M $end +$var wire 1 \ we_mem_M $end +$var wire 1 ] mem_to_reg_M $end +$var wire 32 ^ mem_data_M [31:0] $end +$var wire 32 _ alu_res_W [31:0] $end +$var wire 32 ` mem_data_W [31:0] $end +$var wire 32 a pc4_W [31:0] $end +$var wire 5 b rd_W [4:0] $end +$var wire 1 c we_reg_W $end +$var wire 1 d mem_to_reg_W $end +$var wire 32 e write_data_W [31:0] $end +$scope module u_pc $end +$var wire 1 # clk $end +$var wire 1 f rst $end +$var wire 32 ( next_pc [31:0] $end +$var reg 32 g imem_addr [31:0] $end +$upscope $end +$scope module u_imem $end +$var wire 1 # clk $end +$var wire 32 % address [31:0] $end +$var wire 1 h we $end +$var wire 32 i write_data [31:0] $end +$var wire 8 j write_addr [7:0] $end +$var wire 32 ' instruction [31:0] $end +$upscope $end +$scope module u_if_id $end +$var wire 1 # clk $end +$var wire 1 $ rst $end +$var wire 1 * en $end +$var wire 1 + clr $end +$var wire 32 % pc_in [31:0] $end +$var wire 32 & pc4_in [31:0] $end +$var wire 32 ' inst_in [31:0] $end +$var reg 32 k pc_out [31:0] $end +$var reg 32 l pc4_out [31:0] $end +$var reg 32 m inst_out [31:0] $end +$upscope $end +$scope module u_control $end +$var wire 7 n opcode [6:0] $end +$var wire 3 o aux [14:12] $end +$var wire 7 p func [31:25] $end +$var reg 1 q we_reg $end +$var reg 1 r we_mem $end +$var reg 1 s mem_to_reg $end +$var reg 1 t alu_src $end +$var reg 4 u alu_op [3:0] $end +$var reg 1 v branch $end +$upscope $end +$scope module u_regfile $end +$var wire 1 w clk $end +$var wire 1 c regwrite $end +$var wire 5 / rs1 [4:0] $end +$var wire 5 0 rs2 [4:0] $end +$var wire 5 b rd [4:0] $end +$var wire 32 e write_data [31:0] $end +$var wire 32 3 read_data_1 [31:0] $end +$var wire 32 4 read_data_2 [31:0] $end +$upscope $end +$scope module u_imm_gen $end +$var wire 32 . instr [31:0] $end +$var reg 32 x imm_out [31:0] $end +$upscope $end +$scope module u_hazard $end +$var wire 5 / IF_ID_Rs1 [4:0] $end +$var wire 5 0 IF_ID_Rs2 [4:0] $end +$var wire 5 I ID_EX_Rd [4:0] $end +$var wire 1 L ID_EX_MemRead $end +$var wire 1 ; Branch_Taken $end +$var reg 1 y PC_En $end +$var reg 1 z IF_ID_En $end +$var reg 1 { IF_ID_Clr $end +$var reg 1 | ID_EX_Clr $end +$upscope $end +$scope module u_id_ex $end +$var wire 1 # clk $end +$var wire 1 $ rst $end +$var wire 1 A clr $end +$var wire 1 5 we_reg_in $end +$var wire 1 6 we_mem_in $end +$var wire 1 7 mem_to_reg_in $end +$var wire 1 8 alu_src_in $end +$var wire 1 9 branch_in $end +$var wire 4 : alu_op_in [3:0] $end +$var reg 1 } we_reg_out $end +$var reg 1 ~ we_mem_out $end +$var reg 1 !! mem_to_reg_out $end +$var reg 1 "! alu_src_out $end +$var reg 1 #! branch_out $end +$var reg 4 $! alu_op_out [3:0] $end +$var wire 32 , pc_in [31:0] $end +$var wire 32 - pc4_in [31:0] $end +$var wire 32 3 regA_in [31:0] $end +$var wire 32 4 regB_in [31:0] $end +$var wire 32 2 imm_in [31:0] $end +$var wire 5 / rs1_in [4:0] $end +$var wire 5 0 rs2_in [4:0] $end +$var wire 5 1 rd_in [4:0] $end +$var reg 32 %! pc_out [31:0] $end +$var reg 32 &! pc4_out [31:0] $end +$var reg 32 '! regA_out [31:0] $end +$var reg 32 (! regB_out [31:0] $end +$var reg 32 )! imm_out [31:0] $end +$var reg 5 *! rs1_out [4:0] $end +$var reg 5 +! rs2_out [4:0] $end +$var reg 5 ,! rd_out [4:0] $end +$upscope $end +$scope module u_forwarding $end +$var wire 5 G ID_EX_Rs1 [4:0] $end +$var wire 5 H ID_EX_Rs2 [4:0] $end +$var wire 5 / IF_ID_Rs1 [4:0] $end +$var wire 5 0 IF_ID_Rs2 [4:0] $end +$var wire 5 Z EX_ME_Rd [4:0] $end +$var wire 1 [ EX_ME_RegWrite $end +$var wire 5 b ME_WB_Rd [4:0] $end +$var wire 1 c ME_WB_RegWrite $end +$var reg 2 -! EX_ForwardA [1:0] $end +$var reg 2 .! EX_ForwardB [1:0] $end +$var reg 2 /! ID_ForwardA [1:0] $end +$var reg 2 0! ID_ForwardB [1:0] $end +$upscope $end +$scope module u_alu $end +$var wire 32 R A [31:0] $end +$var wire 32 T B [31:0] $end +$var wire 4 O sel [3:0] $end +$var reg 32 1! R [31:0] $end +$var wire 1 V zero $end +$upscope $end +$scope module u_ex_me $end +$var wire 1 # clk $end +$var wire 1 $ rst $end +$var wire 1 J we_reg_in $end +$var wire 1 K we_mem_in $end +$var wire 1 L mem_to_reg_in $end +$var reg 1 2! we_reg_out $end +$var reg 1 3! we_mem_out $end +$var reg 1 4! mem_to_reg_out $end +$var wire 32 U alu_res_in [31:0] $end +$var wire 32 S regB_in [31:0] $end +$var wire 32 C pc4_in [31:0] $end +$var wire 5 I rd_in [4:0] $end +$var reg 32 5! alu_res_out [31:0] $end +$var reg 32 6! regB_out [31:0] $end +$var reg 32 7! pc4_out [31:0] $end +$var reg 5 8! rd_out [4:0] $end +$upscope $end +$scope module u_dmem $end +$var wire 1 # clk $end +$var wire 1 \ we $end +$var wire 32 W address [31:0] $end +$var wire 32 X write_data [31:0] $end +$var wire 32 ^ read_data [31:0] $end +$upscope $end +$scope module u_me_wb $end +$var wire 1 # clk $end +$var wire 1 $ rst $end +$var wire 1 [ we_reg_in $end +$var wire 1 ] mem_to_reg_in $end +$var reg 1 9! we_reg_out $end +$var reg 1 :! mem_to_reg_out $end +$var wire 32 W alu_res_in [31:0] $end +$var wire 32 ^ mem_data_in [31:0] $end +$var wire 32 Y pc4_in [31:0] $end +$var wire 5 Z rd_in [4:0] $end +$var reg 32 ;! alu_res_out [31:0] $end +$var reg 32 ! rd_out [4:0] $end +$upscope $end +$upscope $end +$upscope $end +$enddefinitions $end + +#0 +$dumpvars +0! +0!! +1" +0"! +0# +0#! +1$ +b0 $! +b0 % +b0 %! +b100 & +b0 &! +b10100010011 ' +b0 '! +b100 ( +b0 (! +1) +b0 )! +1* +b0 *! +0+ +b0 +! +b0 , +b0 ,! +b0 - +b0 -! +b0 . +b0 .! +b0 / +b0 /! +b0 0 +b0 0! +b0 1 +b0 1! +b0 2 +02! +b0 3 +03! +b0 4 +04! +05 +b0 5! +06 +b0 6! +07 +b0 7! +08 +b0 8! +09 +09! +b0 : +0:! +0; +b0 ;! +b0 < +b0 +b0 >! +b0 ? +b0 @ +0A +b0 B +b0 C +b0 D +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0K +0L +0M +0N +b0 O +b0 P +b0 Q +b0 R +b0 S +b0 T +b0 U +1V +b0 W +b0 X +b0 Y +b0 Z +0[ +0\ +0] +bx ^ +b0 _ +b0 ` +b0 a +b0 b +0c +0d +b0 e +1f +b0 g +0h +b0 i +b0 j +b0 k +b0 l +b0 m +b0 n +b0 o +b0 p +0q +0r +0s +0t +b0 u +0v +1w +b0 x +1y +1z +0{ +0| +0} +0~ +$end + +#5000 +1! +1# +0w + +#10000 +0! +0# +1w + +#15000 +1! +1# +0w + +#20000 +0! +0" +0# +0$ +0f +1w + +#25000 +1! +1# +b100 % +b1000 & +b1100000000000110010011 ' +b1000 ( +b100 - +b10100010011 . +b1010 1 +15 +18 +bx ! +b0 ? +b1000 B +b1100 C +b100100 F +b100 H +b10 I +b100100 T +b100100 U +b11 W +bx X +b1000 Y +b11 Z +b100 a +b1010 b +1c +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#60000 +0! +0# +b0 3 +1w + +#65000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b100100 5! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#70000 +0! +0# +b11 4 +1w + +#75000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#80000 +0! +0# +1w + +#85000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#90000 +0! +0# +1w + +#95000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#100000 +0! +0# +1w + +#105000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#110000 +0! +0# +1w + +#115000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#120000 +0! +0# +1w + +#125000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#130000 +0! +0# +1w + +#135000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#140000 +0! +0# +1w + +#145000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#150000 +0! +0# +1w + +#155000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#160000 +0! +0# +1w + +#165000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#170000 +0! +0# +1w + +#175000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#180000 +0! +0# +1w + +#185000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#190000 +0! +0# +1w + +#195000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#200000 +0! +0# +1w + +#205000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#210000 +0! +0# +1w + +#215000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#220000 +0! +0# +1w + +#225000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#230000 +0! +0# +1w + +#235000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#240000 +0! +0# +1w + +#245000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#250000 +0! +0# +1w + +#255000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#260000 +0! +0# +1w + +#265000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#270000 +0! +0# +1w + +#275000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#280000 +0! +0# +1w + +#285000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#290000 +0! +0# +1w + +#295000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#300000 +0! +0# +1w + +#305000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#310000 +0! +0# +1w + +#315000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#320000 +0! +0# +1w + +#325000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#330000 +0! +0# +1w + +#335000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#340000 +0! +0# +1w + +#345000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#350000 +0! +0# +1w + +#355000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#360000 +0! +0# +1w + +#365000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#370000 +0! +0# +1w + +#375000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#380000 +0! +0# +1w + +#385000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#390000 +0! +0# +1w + +#395000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#400000 +0! +0# +1w + +#405000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#410000 +0! +0# +1w + +#415000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#420000 +0! +0# +1w + +#425000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#430000 +0! +0# +1w + +#435000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#440000 +0! +0# +1w + +#445000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#450000 +0! +0# +1w + +#455000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#460000 +0! +0# +1w + +#465000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#470000 +0! +0# +1w + +#475000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#480000 +0! +0# +1w + +#485000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#490000 +0! +0# +1w + +#495000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#500000 +0! +0# +1w + +#505000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#510000 +0! +0# +1w + +#515000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#520000 +0! +0# +1w + +#525000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#530000 +0! +0# +1w + +#535000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#540000 +0! +0# +1w + +#545000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#550000 +0! +0# +1w + +#555000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#560000 +0! +0# +1w + +#565000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#570000 +0! +0# +1w + +#575000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#580000 +0! +0# +1w + +#585000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#590000 +0! +0# +1w + +#595000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#600000 +0! +0# +1w + +#605000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#610000 +0! +0# +1w + +#615000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#620000 +0! +0# +1w + +#625000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#630000 +0! +0# +1w + +#635000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#640000 +0! +0# +1w + +#645000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#650000 +0! +0# +1w + +#655000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#660000 +0! +0# +1w + +#665000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#670000 +0! +0# +1w + +#675000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#680000 +0! +0# +1w + +#685000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#690000 +0! +0# +1w + +#695000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#700000 +0! +0# +1w + +#705000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#710000 +0! +0# +1w + +#715000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#720000 +0! +0# +1w + +#725000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#730000 +0! +0# +1w + +#735000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#740000 +0! +0# +1w + +#745000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#750000 +0! +0# +1w + +#755000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#760000 +0! +0# +1w + +#765000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#770000 +0! +0# +1w + +#775000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#780000 +0! +0# +1w + +#785000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#790000 +0! +0# +1w + +#795000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#800000 +0! +0# +1w + +#805000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#810000 +0! +0# +1w + +#815000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#820000 +0! +0# +1w + +#825000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#830000 +0! +0# +1w + +#835000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#840000 +0! +0# +1w + +#845000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#850000 +0! +0# +1w + +#855000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#860000 +0! +0# +1w + +#865000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#870000 +0! +0# +1w + +#875000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#880000 +0! +0# +1w + +#885000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#890000 +0! +0# +1w + +#895000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#900000 +0! +0# +1w + +#905000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#910000 +0! +0# +1w + +#915000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#920000 +0! +0# +1w + +#925000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#930000 +0! +0# +1w + +#935000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#940000 +0! +0# +1w + +#945000 +1! +1# +b1100 % +b100 %! +b10000 & +b1000 &! +b10001010010001010000011 ' +b10000 ( +b11 (! +b11 )! +b11 +! +b1000 , +b11 ,! +b1100 - +b10010000000000000100010011 . +b100 0 +b10 1 +b11 1! +b100100 2 +bx 4 +b0 5! +b0 6! +b100 7! +b1010 8! +19! +bx ;! +b101100 < +b10100 =! +b1 >! +bx @ +b100 B +b1000 C +b11 E +b11 F +b11 H +b11 I +b11 S +b11 T +b11 U +0V +b0 W +b0 X +b100 Y +b1010 Z +bx _ +b10100 a +b1 b +1c +bx e +b1100 g +b1000 k +b1100 l +b10010000000000000100010011 m +b10011 n +b0 o +b1 p +1q +1t +0w +b100100 x + +#950000 +0! +0# +1w + +#955000 +1! +1# +b10000 % +b1000 %! +b10100 & +b1100 &! +b1100101000000010110011 ' +b10100 ( +bx (! +b100100 )! +b100 +! +b1100 , +b10 ,! +b10000 - +b10001010010001010000011 . +b1010 / +b1 /! +b101 1 +b100100 1! +b100 2 +b11 5! +b11 6! +17 +b1000 7! +b11 8! +b0 ;! +b10000 < +b1 = +b100 =! +b1010 >! +b1000 B +b1100 C +bx E +b100100 F +b100 H +b10 I +bx S +b100100 T +b100100 U +b11 W +b11 X +b1000 Y +b11 Z +b0 _ +b100 a +b1010 b +b0 e +b10000 g +b1100 k +b10000 l +b10001010010001010000011 m +b11 n +b10 o +b0 p +1q +1s +1t +0w +b100 x + +#960000 +0! +0# +1w + +#965000 +1! +1!! +1# +b0 % +b1100 %! +b100 & +b10000 &! +b10100010011 ' +b100 ( +0) +b100 )! +0* +b1010 *! +b10000 , +b101 ,! +b10100 - +b1100101000000010110011 . +b101 / +b0 /! +b11 0 +b1 0! +b1 1 +b100 1! +b0 2 +bx 3 +b11 4 +b100100 5! +bx 6! +07 +b1100 7! +08 +b10 8! +b11 ;! +b10000 < +b0 = +b1000 =! +b1 > +b11 >! +bx ? +b11 @ +1A +b1100 B +b10000 C +b100 F +b1010 G +b101 I +1L +b100 T +b100 U +b100100 W +bx X +b1100 Y +b10 Z +b11 _ +b1000 a +b11 b +b11 e +1f +b0 g +b10000 k +b10100 l +b1100101000000010110011 m +b110011 n +b0 o +b0 p +1q +0s +0t +0w +b0 x +0y +0z +1| + +#970000 +0! +0# +1w + +#975000 +1! +0!! +0"! +1# +b0 %! +b0 &! +b0 (! +1) +b0 )! +1* +b0 *! +b0 +! +b0 ,! +b10 /! +b0 0! +b0 1! +14! +b100 5! +b10000 7! +b101 8! +b100100 ;! +b10 = +b1100 =! +b0 > +b10 >! +b100 ? +b11 @ +0A +b0 B +b0 C +b0 E +b0 F +b0 G +b0 H +b0 I +0J +0L +0M +b0 S +b0 T +b0 U +1V +b100 W +b10000 Y +b101 Z +1] +b100100 _ +b1100 a +b10 b +b100100 e +0f +0w +1y +1z +0| +0} + +#980000 +0! +0# +1w + +#985000 +1! +1# +b100 % +b10000 %! +b1000 & +b10100 &! +b1100000000000110010011 ' +bx '! +b1000 ( +b11 (! +b101 *! +b11 +! +b0 , +b1 ,! +b100 - +b1 -! +b10100010011 . +b0 / +b0 /! +b0 0 +b1010 1 +bx 1! +02! +b0 3 +b0 4 +04! +b0 5! +b0 6! +b0 7! +18 +b0 8! +1:! +b100 ;! +b0 < +b0 = +b10000 =! +b101 >! +b0 ? +b0 @ +b10000 B +b10100 C +bx D +b11 E +b101 G +b11 H +b1 I +1J +b1 P +bx R +b11 S +b11 T +bx U +xV +b0 W +b0 X +b0 Y +b0 Z +0[ +0] +b100 _ +b10000 a +b101 b +1d +bx e +b100 g +b0 k +b100 l +b10100010011 m +b10011 n +b0 o +b0 p +1q +1t +0w +1} + +#990000 +0! +0# +1w + +#995000 +1! +1"! +1# +b1000 % +b0 %! +b1100 & +b100 &! +b10010000000000000100010011 ' +b0 '! +b1100 ( +b0 (! +b0 *! +b0 +! +b100 , +b1010 ,! +b1000 - +b0 -! +b1100000000000110010011 . +b11 0 +b11 1 +b0 1! +b11 2 +12! +b11 4 +bx 5! +b11 6! +b10100 7! +b1 8! +09! +0:! +b0 ;! +b111 < +b0 =! +b0 >! +b11 @ +b0 B +b100 C +b0 D +b0 E +b0 G +b0 H +b1010 I +1M +b0 P +b0 R +b0 S +b0 T +b0 U +1V +bx W +b11 X +b10100 Y +b1 Z +1[ +b0 _ +b0 a +b0 b +0c +0d +b0 e +b1000 g +b100 k +b1000 l +b1100000000000110010011 m +b10011 n +b0 o +b0 p +0w +b11 x + +#1000000 +0! +0# +1w diff --git a/riscv-ac.sim/sim_1/behav/xsim/tb_top_behav.wdb b/riscv-ac.sim/sim_1/behav/xsim/tb_top_behav.wdb new file mode 100644 index 0000000000000000000000000000000000000000..95b798b8a4f8795342234728a0765964fa6d24e2 GIT binary patch literal 48430 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 literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/tb_top_vlog.prj b/riscv-ac.sim/sim_1/behav/xsim/tb_top_vlog.prj new file mode 100644 index 0000000..3c6b9ee --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/tb_top_vlog.prj @@ -0,0 +1,23 @@ +# compile verilog/system verilog design source files +verilog xil_defaultlib --include "../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef" \ +"../../../../riscv-ac.srcs/sources_1/new/alu.v" \ +"../../../../riscv-ac.srcs/sources_1/new/control.v" \ +"../../../../riscv-ac.srcs/sources_1/new/dmem.v" \ +"../../../../riscv-ac.srcs/sources_1/new/ex_me.v" \ +"../../../../riscv-ac.srcs/sources_1/new/forwarding.v" \ +"../../../../riscv-ac.srcs/sources_1/new/hazard.v" \ +"../../../../riscv-ac.srcs/sources_1/new/id_ex.v" \ +"../../../../riscv-ac.srcs/sources_1/new/if_id.v" \ +"../../../../riscv-ac.srcs/sources_1/new/imem.v" \ +"../../../../riscv-ac.srcs/sources_1/new/imm_gen.v" \ +"../../../../riscv-ac.srcs/sources_1/new/me_wb.v" \ +"../../../../riscv-ac.srcs/sources_1/new/pc.v" \ +"../../../../riscv-ac.srcs/sources_1/new/regfile.v" \ +"../../../../riscv-ac.srcs/sources_1/new/top.v" \ +"../../../../riscv-ac.srcs/sim_1/new/tb_top.v" \ + +# compile glbl module +verilog xil_defaultlib "glbl.v" + +# Do not sort compile order +nosort diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/Compile_Options.txt b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/Compile_Options.txt new file mode 100644 index 0000000..1ba54ab --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/Compile_Options.txt @@ -0,0 +1 @@ +--incr --debug "typical" --relax --mt "8" -L "xil_defaultlib" -L "unisims_ver" -L "unimacro_ver" -L "secureip" --snapshot "tb_top_behav" "xil_defaultlib.tb_top" "xil_defaultlib.glbl" -log "elaborate.log" diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/TempBreakPointFile.txt b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/TempBreakPointFile.txt new file mode 100644 index 0000000..fdbc612 --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/TempBreakPointFile.txt @@ -0,0 +1 @@ +Breakpoint File Version 1.0 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/obj/xsim_0.lnx64.o b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/obj/xsim_0.lnx64.o new file mode 100644 index 0000000000000000000000000000000000000000..37ddb8120d061369c6b4797397a852eced4ab264 GIT binary patch literal 70864 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 CAjGi% literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/obj/xsim_1.lnx64.o b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/obj/xsim_1.lnx64.o new file mode 100644 index 0000000000000000000000000000000000000000..fc30c61235d232ee616651955094554163c07992 GIT binary patch literal 12064 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 literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.dbg b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.dbg new file mode 100644 index 0000000000000000000000000000000000000000..d7a88f009a3f336895367fab7e9ee2e24f2912b0 GIT binary patch literal 40208 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 I=hx4F2g@eyZU6uP literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.mem b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.mem new file mode 100644 index 0000000000000000000000000000000000000000..1806ff80a3903abce2b43436b8c7e11edafe75f5 GIT binary patch literal 8261 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 C`?JRY literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.reloc b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.reloc new file mode 100644 index 0000000000000000000000000000000000000000..49a6444a6e43c699e6f579c540ee153e971dfcbc GIT binary patch literal 8225 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 literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.rlx b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.rlx new file mode 100644 index 0000000..5e00684 --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.rlx @@ -0,0 +1,12 @@ + +{ + crc : 1048859293793588504 , + ccp_crc : 0 , + cmdline : " --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip --snapshot tb_top_behav xil_defaultlib.tb_top xil_defaultlib.glbl" , + buildDate : "Nov 14 2025" , + buildTime : "12:36:23" , + linkCmd : "/opt/Xilinx/2025.2/Vivado/lib/lnx64.o/../../tps/lnx64/gcc-9.3.0/bin/g++ -Wa,-W -O -fPIC -m64 -Wl,--no-as-needed -Wl,--unresolved-symbols=ignore-all -o \"xsim.dir/tb_top_behav/xsimk\" \"xsim.dir/tb_top_behav/obj/xsim_0.lnx64.o\" \"xsim.dir/tb_top_behav/obj/xsim_1.lnx64.o\" -L\"/opt/Xilinx/2025.2/Vivado/lib/lnx64.o\" -lxv_simulator_kernel -L/opt/Xilinx/2025.2/Vivado/lib/lnx64.o/../../tps/lnx64/gcc-9.3.0/bin/../lib64 -Wl,--disable-new-dtags -Wl,-rpath=/opt/Xilinx/2025.2/Vivado/lib/lnx64.o/../../tps/lnx64/gcc-9.3.0/bin/../lib64 -lxv_simbridge_kernel" , + aggregate_nets : + [ + ] +} \ No newline at end of file diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.rtti b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsim.rtti new file mode 100644 index 0000000000000000000000000000000000000000..cd0577ffa08532f4a610f1e5d2d029747f73f5c1 GIT binary patch literal 323 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 literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsimSettings.ini b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsimSettings.ini new file mode 100644 index 0000000..5bc733c --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsimSettings.ini @@ -0,0 +1,50 @@ +[General] +ARRAY_DISPLAY_LIMIT=512 +RADIX=hex +TIME_UNIT=ns +TRACE_LIMIT=2147483647 +VHDL_ENTITY_SCOPE_FILTER=true +VHDL_PACKAGE_SCOPE_FILTER=false +VHDL_BLOCK_SCOPE_FILTER=true +VHDL_PROCESS_SCOPE_FILTER=false +VHDL_PROCEDURE_SCOPE_FILTER=false +VERILOG_MODULE_SCOPE_FILTER=true +VERILOG_PACKAGE_SCOPE_FILTER=false +VERILOG_BLOCK_SCOPE_FILTER=false +VERILOG_TASK_SCOPE_FILTER=false +VERILOG_PROCESS_SCOPE_FILTER=false +INPUT_OBJECT_FILTER=true +OUTPUT_OBJECT_FILTER=true +INOUT_OBJECT_FILTER=true +INTERNAL_OBJECT_FILTER=true +CONSTANT_OBJECT_FILTER=true +VARIABLE_OBJECT_FILTER=true +INPUT_PROTOINST_FILTER=true +OUTPUT_PROTOINST_FILTER=true +INOUT_PROTOINST_FILTER=true +INTERNAL_PROTOINST_FILTER=true +CONSTANT_PROTOINST_FILTER=true +VARIABLE_PROTOINST_FILTER=true +SCOPE_NAME_COLUMN_WIDTH=93 +SCOPE_DESIGN_UNIT_COLUMN_WIDTH=83 +SCOPE_BLOCK_TYPE_COLUMN_WIDTH=103 +OBJECT_NAME_COLUMN_WIDTH=121 +OBJECT_VALUE_COLUMN_WIDTH=72 +OBJECT_DATA_TYPE_COLUMN_WIDTH=75 +PROCESS_NAME_COLUMN_WIDTH=75 +PROCESS_TYPE_COLUMN_WIDTH=75 +FRAME_INDEX_COLUMN_WIDTH=75 +FRAME_NAME_COLUMN_WIDTH=75 +FRAME_FILE_NAME_COLUMN_WIDTH=75 +FRAME_LINE_NUM_COLUMN_WIDTH=75 +LOCAL_NAME_COLUMN_WIDTH=75 +LOCAL_VALUE_COLUMN_WIDTH=75 +LOCAL_DATA_TYPE_COLUMN_WIDTH=0 +PROTO_NAME_COLUMN_WIDTH=0 +PROTO_VALUE_COLUMN_WIDTH=0 +INPUT_LOCAL_FILTER=1 +OUTPUT_LOCAL_FILTER=1 +INOUT_LOCAL_FILTER=1 +INTERNAL_LOCAL_FILTER=1 +CONSTANT_LOCAL_FILTER=1 +VARIABLE_LOCAL_FILTER=1 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsimk b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/tb_top_behav/xsimk new file mode 100755 index 0000000000000000000000000000000000000000..3257b770c33f591d1b577c3e176b927b7472ad92 GIT binary patch literal 68536 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 z z0~7B+F#t?^M^d~4#d~6AwC`-8tgl;Bq+&N9*3D(l4VW`HLD{HCCi;1sfV(-vh~rHFVn@6Q7Cq}=#tb^^U}7C8Qb5l-x&LQeDB;P< z=*#|JLM(sQ9PqXPN)O=Qd*DLc0|mFaYB{WC#1U1CsPsY>z4+XcMFgc0Y{SGgITYMd da1(rS#OJgeIQHO>!_R)79s3|FDH_9<+#if@Oq&1z literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/control.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/control.sdb new file mode 100644 index 0000000000000000000000000000000000000000..ef9f466ed2492f7f61e4c10d5ef7629646c7569d GIT binary patch literal 5385 zcmbuD%Wqso8pZ3nZ@TSjdYNJt3DFteCp!5Sp~jM)$Wf%$!>s;_T#mqgICl$`qNJLmLQ&wJZD zUY%}icW%w`@&A2yx-q`G^5y2Yh3j;j|K*3DzxU_dM!US~=N`HB6xx2J{u{(3&Om}&9X{~CU zo;|iUGc(sezSf)TKe6_I%Fj{4F8&$5!zkRibA|sY_7ra7z4NPQ*WY{p+!w9&i=FN3 zA9U^vl4=x)3g_u1qBpKgulbBCEUyRh=)Xkxc(9_uan-btlCdI7JW$AZ_5t~uA6%cl0YwyFB3J&aN1Ue`K% zY5nk5=R+ll>$Gbw_WjEI%&4s6noo2WW|oeQrfzcO;@rydBr#@laf{n_=l1C zKW=xMo9f=@wq29yzSXsMPVU)tczVwef4>|5^q(8w|J#4JF_gK@P3)f9J9%iwsOW%e ze*WPnqmqNJb!gY*wTXaINEuc+3pQ?E>^(>1EK1GO5zbq&T(yHO9qm~2qn zQ_oJ#)7tf~zbd8PRHItEPQALK7UTYTzAbL-0T#|rLh=8x>8%KCa}huYQ=4@Lzj1&AUuBTs@hH+9mq9E`+Kdlp4e=vz#PK({0N0k;Ib-Po^xa zHK9B~d4hRQ5@l&Jc|MwW61B@#RVSf5L3x6CPZDLx^&UJAC!R#@vRQc&$`h0)nD-=6 z>N%}Ck0hQ%?JzM~T|#++@&xmqBudkTIv-0siP|L5{c?3OqY70=bLL^_e_h6q<8KOSl~1W`jLU5iSjp@I5N z5OL;$AW?2z5WHa4EQuOga9IvsK0#T6c}o(tv&^rNnk7*~`%;!fsuGkXn71TRJIeEk zB~inM5Oy<>EJ0aO{p3`_w8uvEY=GC&64rad=}&tm_!garXOhy08oGN`8j(f|sx&Yut+FIh zJG##%mP8F*y|N^dB`8ZUZ%HCKxqmiONoXOl*G`>WLOK2oyzG zQZ^@{z; zYue7T@0DBo4d3?5Eq|!&4jz>KYRe9dcJ;OGy7k5@+p9O;*#CpwMe#FuSYJi+lqC}K zhw%u?c{R7}d-ZC&-`{g=zv(P$h;AMTL3Bv+*U{%GfZ~#f$P^6|S=k$mK1-?HS{YbL zxhImuaEg?FjI7dA<<7_5b<;`-&-ujC=r}8LiRb%k#9i)I`Gq zT^kS;K){F~nMVPQ4Cx(2xr`Id7Orl3b_M;zj_9#40{X#T`e{U&embIuORlNz;RnhN zQ6ro=V-V+QHn{{0sNmGeJ|33(uA~b?ix3M8n#IHVTo>kw##jZ1@-^?JTU*|1G-~{P zcHlatUEY4P+HN+=%8gJUs+|~fvYl&+nsXEFT<13C@ECo;=ozCsdQ)Oc9*5bf_dF$e zH$ppU*eo4AJgHnxDqk~=J#2goeA@d;aPLCx@9_v3A2stx<=M;34t6#*! z`ZCQWm#8;pJn~UMg>1Zyx*YV^5W(>l$m;qUK%5xAHOQ3ncvvr(m&O{be7Q^+cMw*) z6Qn_#-8sR{S4nvIkQts1*tz%uhZ!RE)x+mc4_=e23q&<>2}#@xwAvVG6z2m)s(RAT zJSVslO#u=10Xu36i{7SaiK{P~E?DC}Duqkc6TIk&FR9p4wJ7@3CaIaKS5;S|zR&c3 Og04RS4#`pcd-wz5XfxFS literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/ex_me.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/ex_me.sdb new file mode 100644 index 0000000000000000000000000000000000000000..0ecd600b93e9566992c64f42f98a832b17910f27 GIT binary patch literal 2295 zcmbtWPfrs;6o114ZGmDzjq<+=_=k%p-S(3-RI8TcvR#(; zno{q-fKw-Zu2Y`6fDA>eN40gSCV}c^n4-azoU9hJ-S3{F7`z+D)uME4_Bp@Wt(v9* zn7xTGnxRA-rJm#N1K9S_S}-aE0!JDF8+ zYV{%@W;2p^6(>#uoUvKvn#bcwbr0;p$tBkb8e@8ZxirrWc1u{N!)IRb+<;VWK*9~q zc!!xW%8h6+SH`))ZUt#K{=w{)h6#29&VlywasGhc@QfhUO(Au_jXgICb=PRP3b_I2 zmeK>Rf^NXM`6&2J&lyOihSXs<_S`0Vz*XQ4I5(6Ya20w3&aI~hTm|2NtIh(qMM`~b gs{BKJHPkUfZBF&3P&0AAe)mTv^yiXB8RD1cFIulxB>(^b literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/forwarding.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/forwarding.sdb new file mode 100644 index 0000000000000000000000000000000000000000..1ed0a82046914f7624559ed3a796914a85e5ac86 GIT binary patch literal 3565 zcmb_fO>b0X6h3!4!c04NoVFxF`RHv6evl|eQ3F_f3(TU$6cShNh&3b-e}Su+IFUiy zy1)$!67LWaAThz%xM0EFgrDJF{y}-pdB4tkJ9Xtv+H=nPob#Ofyyt$+%y;t>Ini%~ z!~FC8{6wR7>(TBX85ISYS1(>ZHv@V$S#MwNuHRn2wQ_ZJ&8&BCPF}gzUE5gscH_oX zGS^T#ZC3FAY5VT>;D=G~$!P1R{K;@TFP6(;fAn~(%*+0$Z1;Pur~Ps;%7gQ8a5wMu zHn)DvhnrhJ=l>7O9h}Nr_+#6JENT#C=5M!>QFC~w*Dr^ggNFypUy8ikF3#8zEemxS z(K9mtzWDtFO7)Q-W`a84Z+*rbhpAbVA1z-vygYjd42Gt@F_d*CNYEqHT-+a>v$eB_ zmgmOQ9<{ampvS1O_NTf3!2ET8Z`s@%aW428 zDc@1W2Ome^W61Ntk9;u^N>_1%gYm#7TlygM0Kfnm{d%)?L#i9th5RGdKr zPC^C&D=_SM4FKFAP?5C^KiuR)QNHfvlT5y&UIUoy>M8&L literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/glbl.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/glbl.sdb new file mode 100644 index 0000000000000000000000000000000000000000..7141f40edef578eb1405cba720d5a076bd3e34fd GIT binary patch literal 5306 zcmbuD&u?2r5XZ;0+c<9R*ohlEX`HzE)g%o~9H%8eWY`b_l+v`QTo4CP4wYJQf*V4} zDWOT#6jU`p6Ci2`2NZ-9H5`Hul{g~x58w~r4o411;k!G#e!KR2Z6z!vn)jXg%*>l- z@2=haepfh7^nmaZe}2>zj+U?eu)GnXe4fPLj~-XV679w!iP^dN>+{!UE}VZ|%+Fno z%+JohOyUxtRB0!%d}H}me06E-r}$3!_R5WTzJv=YBo@oZb{4mmzK>Up?WJ4sa(VU6 z&G^ddo!jyMM?Yvr2S@Oyj4QYWiV}sy??#GH!o}-i;hI=b?2UKP$G?YkA8BfAJD$pAN|{U-rpoZ3pT3Q@ADgyw>@*X0ot+fDerZlrhv|B|=$Q0619c<1DXx1imfDiVR-ev$bja~k zU`VeHNw)-s^y!d7M_@=lCDik&?C({?+TF_6KFthJO7)u^n<#cAQ(n(yXJ&)cq{52X zLUt@DXvhS$r%x1uf=*LXHML&3yYcW>uPwLUux_hZ$QC;%0xO=;ceu5=zVD@4bXp(L zG22gw8PzdAJ|U){V|JbpQ=}F(rhE<$ZY*1v@TTB4HLe4@pB8vl2cCRd;5i-G6C4;4 zGo%+*tf}I`%@7vWs?-Rdbs0lM@{}VT)e-__Y>!&R(nJR&n&e7a|FZI(k%(7q#JwDK zFAM7OGXAR?SaU;12#Y#ug+x^z_m|K5%jYavX3{Ur;5qRYF7zhg86gr!a9iRXS=bAa zb5gM|5Ypfig4uBh41`2|LNH4Xfq{_5YDie+P8fHB#1+pbv7)8`1yD>vT41cngf>|i zL=&a3qji{kcB(A$RjWaCuw!*t%3vuAgXm!KI!x~Hs#>#!L3FT09fozDu@(!1C_b@9 zBHxE5503=zPsY*~22p%$VaY0%P@N$b9}W^9$QaIpm7MdmT6yI1Zab4+=&I4|jkn;iWF<6g0}l9rI1F&baSMd#fP+3DjtdN) zwLpjtIOGH3K*8WS3xw!^IPPj;TFqm^Koi7U%>;=LRAc~-ysY% zp?3P3JA{Xu;KzT_v;c!q7(msxfZr@9-=z%an)Aj7gFzSpHQ}+RddZ+L7=-~;eL1Pt sw4-#*%LatOAdG;T@aSQOBK+k^eLYe&@WKITa@<5$c70DGzAG5`Po literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/hazard.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/hazard.sdb new file mode 100644 index 0000000000000000000000000000000000000000..9c6043568701a1d976ec2398d93a834b075585d2 GIT binary patch literal 2004 zcmbtV-%Aux6h7D8)g9egTov;74ygt8V3`nQD|ZPcP28ZTUK0$Xzo4gCTynzI9;}Co zpjjzO2#lf!AAAq|GkUN8z`lF#o!L99fzXBBbM8Ig_uYHWxii!Aq?mGv-V=uW^|YAE z`fDGKzY6j^l79}54rGn?JJb2wbIXsH*UEPn7UlBXYWw0!`B8bEWCgTBX)nLt@IU&S z?&o0J^-5t-ZG74a-LTpS^Ho2$R}E_oH+FVw&t2cIZ#{E^`qrlVf9wDUIESCIvq*um zL_+>FD}tP0!>@)xy|&vCzVO^|+ndysC_7Dbv=|Mx>Ll_0dmg&J32_&#c%S*Yx(BYN$L=}>wYj*4~9!K{m?&&7^Ylh zVX1r|=kHX?D?29vBb3?hFBOU$*?E9-9kuCmjZ(Ivwv})7&WT`=oW@4MN+}WbbhLS< zC~DU$@`ZCr7m4J3tQjAkTxw2bx#_3v36|9mLbj`l%a?6LtT%v3qz4}()>ENK4}Mcm z;}jNp9Z9`GOAkIqtfxYe9{i@B#wjfHvPr!mz3L=ahxKY_a&^SoTluTFgghYI#nA6j z+PIZ*+RC?~xg=EeJgSiLZK#`sdKOgqHZ&hYg_u>{8^cf8TQrfJlA!UHmBjNTGfIk( z3P~S-dWg)lB8}r`?3l5~#M#StsvPoO6Cl!9IcC~~S%qa9ENH3{Ei?oy+66;{Wg0AK zswyos1VkEOz1u}YgJl{lXsSXjGz2s)r*fGzv>C!HNY7<2QbGtz9jQNqclr;)Id^B*v-WyxiIIHo+_`7&9M9hCyI%b|8Cz7U zqcHS850bIDM*Zj0KOB`xDgFHEv%mDddNLnhx}GoZmFu}Lid(vz-<|%gm3_Fc^fq>_ ze0IORThv?m&b{Jxr>kqlLbYD0b!vrbtzF0+-7nPg)s8>e%irkaa;3_xPO((E+4*0a zAL00O_)vce{%TGsNB?bB9F=GtG@9Mk;eLO%+fFTZk5gCOErvg~I7&TH`roI&Z(x@_ z0v;Vx%Ltvk#_i`-?AwDT_G*>b(aKqlDQ~^s?aBJW(0b3{1M6!lalD^>)aqqhzl`p3 zy@##CG2TV9_o$x*C~W`yc3$Hd=z2L9=H}twH;)^=Z^FE@@U{<6z8m$e3+?t%_T->3 z>fKQDd-aOGQLO6XJ#jz2i#vKY<=&BTmx`q^?j>(`WlsYY7Ga@(a+GcMx;}xh6K)o^ zbJgo%+vj+~PN{xt)R}b2?^OId3xrOq8C>bFg&o-$c$R6!3tPs+9Oqk&@U4XUGICtE zRviuLy87X+X)t*h!edj-^5!zl_UJd?RB|mp;JJ-;K8|w!6zaU>9+@&_5x7m`ONaYr z_>{JSWKeq(4kvNhtyC0kOwXWr^(@64%UJ(7rIh&B5YCy=3A*Mf7AVe8EK)2%Snzci zcd&(_F~`uiA&jX}W!^ky8w6rFj(#Z^4?j76JkEFVVWf9@iTToTNxmydg*U z_kGDag7cvxxa1vy`QQt{@Q#S-Gy`WSF8a|O=W`~~oA^+FqBeu3a;7er75$Z?RK^&m zO7dH&ab70AQWuA!1v;Oe7R(fIx&h%1$2r4Im+_&#rc}b%`m9F)P7vS`!pAjPWpbXk z^(wa8{ZyCbJgf%JTiRg!x9~AqV#3A|tcStX5)%Pt-AoK-eT9JEHZ-7x1~h1}4hLXj zghn`+^*S-wt!poLUJ%(W*e?eZ<8jPSh07JQ3N6H;L7Z7V;6h9UnAtxum{l?{*sUh- zTlzHKF`S`=Gc-7}Oa_sO5zgUYmea&wx9mI`4Cp58yM_mHee#5T&uoGg^3YzwS~i=E z&<}@8%35%?BZ0qfqC<-t8qpL z+l+uq@>+0qMS*{4$Uuu58e}AMEt}0n;2#+{w78)Gm)x~%wxI~PWUmEh!-{}Q{#tOh zHi3U^$Uuu58e}AcEt{Py0xmgh!P(;?;F84_T)H86ILV<`p6E9mc`ebAFC6lQ5Z2a* XdU06u9PW1R|I492lqsY%{)zqv%6=uW literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/if_id.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/if_id.sdb new file mode 100644 index 0000000000000000000000000000000000000000..835d2f8d9795bdf6a531002418083756b5e44774 GIT binary patch literal 2116 zcmbtWNoy2A6n;IOb+Q<9(X7)UiA!AKauC5t4ca=BZ3IsqgdrngCh-?|%HT*sFqwn? zfSv?F1R;Va54j8Z8Q%3D#P7YT>SY=sU_s4Wzpviws;=qb*Ex59C?E{=>rKw>*{Xdy z{pOJ8k@|Cd@u@Bi)z(h?|j=>*lmz10d@YtW^>V3OMdXGSPELI zS}as*VzACKY*KkqHnoBI;`@B$^DWOT`%j!oB_>DUx?ZPd!D;wM7!M-=K#c1}MSJR?VS z@v~ANGeqJYK^nZ>N$;rk_9VSy+S{A-j)U$wBD@B447H3OW2$_l=i&w@VqooTl5Zl$ z2OT5iF>^9)~qk}ntIV}0G>ypWS!mJ@o! z3BwH3I3S$g?JjsRPS)Ev*=0GQN1QOs0Ow$mb1KHkdK)LZEGP7c6Gp^&F64BahrFdT zm@MzmY|9VYb#fWxVyZ3t=;1j144TDcdE2ZB z8*4JFaN6)yq{MFxbzeB)O>nxC%ykLVNa+JMIQ6DIi(*~}bRMUIx(tm`kb;5)N^grr z!PkbmVo;ERf&@xGc#DEBLXou1{lwdb4H&?~QVL|MZTO;6r0r`4 z1t}=VRNL^ip{^Sgq@W;EZNnF#blcp|E~edW*nsgxC2hyTXK(wa;e?b@AZ^<*o3AP9 zciyB!N*L1i8?*TqlJr|99a6%Ow$Yd^mkcuTHzx0k9AN27_Ehoead ORnYbs;E@`}_rqTt0xNU? literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/imem.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/imem.sdb new file mode 100644 index 0000000000000000000000000000000000000000..d385a6c18d0bde79c5e397eb9b9c817560ab6f0b GIT binary patch literal 2175 zcmbtWOKTHR6h1SlNt1MHTS5Dx8T#YLMHEPyJuVvZG zzUQ`go4)0{ZGX^p2KHRP*0v&{Q+sVWPNVtC@*2%;>wj{$QT#L(^UG+S`iTtjJ+K&* z_3Do6qq9!N-?1&fWiP4})jTo`qJ0uS4?ayHNvDKIq-co9%wFT{Gn9H+cabY7`&f`M zlp<*#rHt=;?X4|G`trJOjLhu3D)S|Ky&ee5+aOxV!C+ z->OOUQ+m+?rJq(GVVmG0+IoPWLsRu?lUXetHBXblI7Hv>3bNmtq{tMvAn>;r;4Q{- zLJ?g!FwZ0z>3KCY_zaQeIf^#`mex@y_Ylt!kU>!;c7>H77j#8NO1w-GZwww(=}%h6 zwJMN7Q5ANDRUpSzR2;_wFPp@h(C{FGB0P45c#t!?A|oYUE{Qj(;X&5%*cIYIj{8$_ z9E<+)67LJ9YNW+|*n+JJcr;?(y>)|=qK11mG%f%~Kn95c6i}HFybUjxvEv+mmxu<(LJV@^$ZpQ(xX`HtT%eyD*(pCU3V@>$IA#G{Y5=Y)3;*wsT!V zb8MoWE8NB$R>02(d?w&swJDm);|O-@9ZyNziL>oK$V^=v7YQBq11>SZ0VzkSvcp~D zz$_PqAo2k24c7t%kM$o5M40KnV;XdWt6#ukeu?IiD(Z~|7V$8ILNvZcJ~rw!#Oe47 zMD?5o04K(84lv|A7W0MRqoD(pAD5}X9J=N1gkj+N?kH7VdA>(#fXXT#772DSs0A(u z3=R;!7$m`ycE&lz%&%c|vyl;9J;+&I!Ak)W>h+XO(b6_7i&!DYyHbu+*%Q3zi60wH hl`Z1g;bBWaIUxCD3jSyrPwEdv&p!y8#0dU+{01vHKRo~d literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/imm_gen.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/imm_gen.sdb new file mode 100644 index 0000000000000000000000000000000000000000..505461a393373ae0c46f647e7c7551820bce63cb GIT binary patch literal 2318 zcmb_e%}*0S6o1oQx+r20s$ev94G_VP_z{$NkW3@hRw2ks{P8Q%3jsK56*J3C9kkl-Yn_x+pqely)}|I57BOB4~7{`ETVb+0ac zZhcb}hNS=O?EcVo+CJ`|yjPrCo?9wBDnHb7#l>J_?cLo*qfUArb*H9RHs{MTx>6}d z&&%^sQ`gF+>e50js+Fp>%~D}~rBo|cBdaVIXQD!(vhW}(R~GI^M=Wokg)?|q-oX^q zO{DZs<56^M?d|HD=31k^6*M=)-sVPltzBZLK#?NaCjEQo>oDrvm5OMO`T(ApVt_&F z`n1*DsH0j_&ofP`&m)NpQLy!8T?pdX`=^NQW?WPTxzq+B{R9!CL({W~sSAmocMZ6C zDW$XAk^TU5!5e}R#hB0&Oc-VXGZ4)0z*K6QJ3EJm&dgnb3Gw@UcfWS^%qPfq%;JHhL{@t5zW$sNm7}d(QH3R%_$}0q^tR`+^l?i z!hkJT|PrABjgAGkB0P5@hE{a4Jtmf@XJu9*+dosZNcA zkUP>onej*nx!B1?MBr>Pk}z|4m>w51NMMAS@f0(#0>2tFGhvv4l-VFVnSoPfg&Ame zC+Gv_u%SBDDP|CInfYItfpdZO!Hn5P$nAI7HTJT7c$kE3)ZnFy)&9Z8w-0XR!`l-6 zucY{g75J}W{;wjdfd^6;gzV%WPQyPmI|B3`!#`A~I>kRiF8@c$j9CSU+r@xuoWL-K z4!Ohs-Z1AJ<35=OY?vG)YECB`+E*Oh4*%C-Wo!&q;7@^O>$$<6!T3aO0*_AwQaFX| zJP|lmM&?VW3H5Q;2w7&JCqH!<4o$WXcJr+<*Jcu$ypV4};f^4sBgj-o765@z02l)g Wk1ZX^|62R|X3qyrNV*?iLVp2d6g%et literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/me_wb.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/me_wb.sdb new file mode 100644 index 0000000000000000000000000000000000000000..82e8b99296431148ccf804f9e180aba37fc5e1d4 GIT binary patch literal 2128 zcmbtW%}!H66h1?tr9dm-Liw)({;+Z3!i_cO2CBVi%fgillZFz~7N5XX5ezk>1<>$y_zf5idEyOxz5Gh_RyQtY~zr416~skcUr4kY!<97bHi$L z#mtwhrHWO_mn*Hj(cH;ba%Ia?YPmJbFbbt7mRTr0w*JexiRG`Mi(EncG)$!UyECIG z**K{0wi}20okY8pNwtqM_iPs@ez+*2Gvc4;pXcEfY#|HBXdKk(2jYI6Vs8(2;mefV zWK!cXa_2kkV?93_oS&lP(SG(_<2c(mjk2a3YqOI*L{fz}+Wh_n zmc1CTmz}1xYcAEeU>15IGZf#*akXgllF!g6mali}d(n&AuAlOoy{@w~1lPTY9nVps zbJEP79MpSbnWHfY*Qgom(ZM>-i@U8}=Xr{Y^LjaCLQSHZO03ugL+u7Qjv8`83dtV^ zaA3qVg$~oOn37@BG;q&h7MSSU3W_w~M+85r@n2o4nE)O-8b8BF+{I-0`a*DkX=y6P zV?vsePg*m3LCyx4p`&@sVse?G4+aMs31-Dt!hCZ9KGE%+d7Lukazgi`#lYo^@wfy! zA)iUj?&Sd&$;+GQUFXD@I2D-?*v>YCy98=B=zf?qv&ft=C z!BOHrSoKMur7pJ6i@-w?2BE^lb$slm)R;KkL>GC-SrcQdDXf~)H7^4ad`tMg=EQ7> zGd?d|i|CHj`@k5Sa@zc)38oL&K9z2UJ@Asl45^tR!7N4enFXVnqrp<_e+Ju!!VTju z%yzYdU^|DBJ152ep2J&?6QtfLq?^OQSZ=)DYcyPEF#wmhLBnr5?2y_F>E*Vzof_3cO4D(ydk{)^|oWnB-Del<9J&Fy<>{~>h!5@hfY H;9uf500={^ literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/pc.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/pc.sdb new file mode 100644 index 0000000000000000000000000000000000000000..694fb9a45973e4fac742f4668e1f783501353a29 GIT binary patch literal 929 zcmbVLyJ{Oj6uqNWA}P@bTTLv1r6rFhjZ5P~;fi3elOPwVQlwEKaL5;=+C@sd#(EU? z2Y6Nl{J>y?D;Mem`i%7PAIRsC4Z#PgQ0dCCh)_vfzief zP09C)7ryC*`mZzY9cs_(4}R#NKRD9=-#NtKXZU1&4%w6^Qv559C@KU8o^OJFZ=5qD zSDT@`5w(bH)GMNE;y;tC8c@Xt)`E3^kk+NqmA*o2meOM5UC$ zhw%seV#v*fUrz!lgek@OG+#BrCw>PfmEe@noD=?n6CgHl7A)s2G%EE*q^#qU)umTy zh;3Ek2!F$ZBGOV!|JEEv4O>*zD*5jGLm?^BaWEx>B tDN0BCn(tpIY%w@eT)^P6#kM)Z_MkC8ySPVt_)%f>>2EgbZ(cW#NNxg`UD<29rNa8E zTlTiyO|K&>Zn3<(Rq-mta;06&xAuyaLfH!@)xxTm&u?tq^W2TCyWW4o+mLV>58EZ| zf|5i+{xA_isb-_L-)X+BANP0K&S2-zxuGG!E&vilCnSHJex3r(9+8ZU(+E*4eTxaM zQ2bS6A6QALXOhH7oJ>6FRtx2Av_mB`c5OaqVFFpoX`^631*6$WLFCpQ1!X%O^T`B8kpodT$PiI_QYLKa}LWkC8uO@;;{A z7Bo=i!+FHXq0NyY67#y1cx5r!hwjRLZn1m^YLyy?^T^O)juEWHDSsu*6Sku&K^m7y zCQb2AI?6m@F=K8sbINDNJZC#Tvyho6-=xKdxy{EZpAYkpPuFoRwm-lk2Nmg8Y+v-r z$4Ho-8XNS2+q@$f8T6y4^WiGtnHD66col^V=pD0+6Sf*5xvuDu18O)xWm(WwgP5gj zQ5P_vPRyqyFY#`GN4SO`J%m_b&@>*l*LpCE8WYPolxZ|y)*8$0R;$rPWf!4g9cq3$ ztREk?_Ei`ue<(Q?b5zcfqUPF&oSQ6T29L3G#?Bbq)m^h(Zii{*2erEgA=*h`&ZA30 zC~991tm1$LrD~~0=TXgTabe0#WCp~&JHR`kTh*h9=3}#8+9Ra+(hJ4zwxMsOuprC z>U-*=2UUMJD2pD{0R}DLF;?voz8v$HfP*FY4h?eIXpV2e;9W4+R1c|Y0urhTnlEUA mcJ)QdLAyv@hu{;*@FMTIebtp|-E;cCM$exMhvX>!mHYu7wL}^K literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/tb_top.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/tb_top.sdb new file mode 100644 index 0000000000000000000000000000000000000000..7ac098fd879e55eb0d108032328194e0b6543b3e GIT binary patch literal 1797 zcmbtVO-~b16um=BDd-@e#wcK`kPss>eno`@^C}cu5HJxJt}Kj&X|ZCc(Zp2?RR#sR zb7wL`H9-;++`1rfWlZ=HF5K%s!1Lbgbfz_K^d-~Wd(S=ZoOfrY)AlgrQ;96XVn3dT ze8F7m{r)F~!eL^+cK1HB0_`;Un}?zk>4{WiEI!I6qO*aSM4AnyiA{pm+P~dgTrUkS zmDCUBh8iARE7+=?-?W?axr5tzyRfNNf>L2s&E?kCU#jNX`fK&ynN};5kK+=-0L)X6 zsE&Q*h6d(~Flar9Pg*uJ;xRpyFf1dc8^u^;eLiMHb*mDjqr+AtGM>0;#m5sP)_+i~ z7HHSeA+z|dR5CXPODkKsSLQOCQiv4x&GCAS8qJkl-Zs|?r3SkgR_%?jRz8k1R~!eV z9b!LsKb{29yQ&c8C#Wj*SH%V=$oFC;&u2l)_wchvr3twNN=*>65E~Tc5;a* zRuQ>xS?~$94u{m?A)&}jp~h~xII)N)QK~Wke8Cw%dYMd8q7#77>hwsU_=g0qRV0vv zsxl!UB>4Coi2<>5$dTwKIcF4nc&|A}QP=@7@9Uzq$7$`M-r9mk9&PoP|G?$uz{-yY zd&{SE-sxjUk=FK5tANiqy8YB$Tfn(NbY2-25O&c|EXRMvQW~V4v&aM=fs{f}WyhTw z@0F}xhlN105P&5f2XP3O1w>)P4ngw-!IAO!_-G`qD|PI)r_R2^es?CB>B~$n&MhoH z)}AFFX&3HiQduplFJ}An>2pu@Y-&-f1W!_P+Vpg0A+04d3kDb2XLr3@dK2jwO>oTb zWdJs!EF}|=0!clA5+aPO5C5g|&R#?+MuosV9+D&MiwCOolxKCx!4ODg1b>+o@0DU# t92Npsj3;k^xPsn3a>snlp(6;47}3e-7_l2T3SaWGR`VST6Klf<@Hh2COTYjC literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/top.sdb b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/top.sdb new file mode 100644 index 0000000000000000000000000000000000000000..1cea5adeb27d63111783d50054f66e43b83d9f78 GIT binary patch literal 14059 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 He{=g^HmB_5 literal 0 HcmV?d00001 diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/xil_defaultlib.rlx b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/xil_defaultlib.rlx new file mode 100644 index 0000000..c5d7a2b --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xil_defaultlib/xil_defaultlib.rlx @@ -0,0 +1,20 @@ +0.7 +2020.2 +Nov 14 2025 +12:36:23 +/home/jomaa/git/riscv-ac/riscv-ac.sim/sim_1/behav/xsim/glbl.v,1756381829,verilog,,,,glbl,,,,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sim_1/new/tb_top.v,1772486573,verilog,,,,tb_top,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/alu.v,1772483312,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/control.v,,alu,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/control.v,1772483371,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/dmem.v,,control,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/dmem.v,1772485582,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/ex_me.v,,dmem,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/ex_me.v,1772468735,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/forwarding.v,,ex_me,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/forwarding.v,1772467332,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/hazard.v,,forwarding,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/hazard.v,1772467244,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/id_ex.v,,hazard,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/id_ex.v,1772472446,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/if_id.v,,id_ex,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/if_id.v,1772468688,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imem.v,,if_id,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imem.v,1772485445,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imm_gen.v,,imem,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imm_gen.v,1772470571,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/me_wb.v,,imm_gen,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/me_wb.v,1772468767,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/pc.v,,me_wb,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/pc.v,1772289140,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/regfile.v,,pc,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/regfile.v,1772483280,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/top.v,,regfile,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, +/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/top.v,1772486142,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sim_1/new/tb_top.v,,top,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xsim.version b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xsim.version new file mode 100644 index 0000000..6327f31 --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/xsim.dir/xsim.version @@ -0,0 +1 @@ +hjhoth \ No newline at end of file diff --git a/riscv-ac.sim/sim_1/behav/xsim/xsim.ini b/riscv-ac.sim/sim_1/behav/xsim/xsim.ini new file mode 100644 index 0000000..e8199b2 --- /dev/null +++ b/riscv-ac.sim/sim_1/behav/xsim/xsim.ini @@ -0,0 +1 @@ +xil_defaultlib=xsim.dir/xil_defaultlib diff --git a/riscv-ac.srcs/constrs_1/new/CmodA7_Master.xdc b/riscv-ac.srcs/constrs_1/new/CmodA7_Master.xdc new file mode 100644 index 0000000..1a936ad --- /dev/null +++ b/riscv-ac.srcs/constrs_1/new/CmodA7_Master.xdc @@ -0,0 +1,139 @@ +## This file is a general .xdc for the CmodA7 rev. B +## To use it in a project: +## - uncomment the lines corresponding to used pins +## - rename the used ports (in each line, after get_ports) according to the top level signal names in the project + +# Clock signal 12 MHz +set_property -dict { PACKAGE_PIN L17 IOSTANDARD LVCMOS33 } [get_ports { clk }]; #IO_L12P_T1_MRCC_14 Sch=gclk +create_clock -add -name sys_clk_pin -period 83.33 -waveform {0 41.66} [get_ports {clk}]; + + +## LEDs +set_property -dict { PACKAGE_PIN A17 IOSTANDARD LVCMOS33 } [get_ports { leds[0] }]; #IO_L12N_T1_MRCC_16 Sch=led[1] +set_property -dict { PACKAGE_PIN C16 IOSTANDARD LVCMOS33 } [get_ports { leds[1] }]; #IO_L13P_T2_MRCC_16 Sch=led[2] + +#set_property -dict { PACKAGE_PIN B17 IOSTANDARD LVCMOS33 } [get_ports { led_b}]; #IO_L14N_T2_SRCC_16 Sch=led0_b +#set_property -dict { PACKAGE_PIN B16 IOSTANDARD LVCMOS33 } [get_ports { led_g }]; #IO_L13N_T2_MRCC_16 Sch=led0_g +#set_property -dict { PACKAGE_PIN C17 IOSTANDARD LVCMOS33 } [get_ports { led }]; #IO_L14P_T2_SRCC_16 Sch=led0_r + + +# Buttons +set_property -dict { PACKAGE_PIN A18 IOSTANDARD LVCMOS33 } [get_ports { rst }]; #IO_L19N_T3_VREF_16 Sch=btn[0] +#set_property -dict { PACKAGE_PIN B18 IOSTANDARD LVCMOS33 } [get_ports { btn[1] }]; #IO_L19P_T3_16 Sch=btn[1] + + +## Pmod Header JA +#set_property -dict { PACKAGE_PIN G17 IOSTANDARD LVCMOS33 } [get_ports { ja[0] }]; #IO_L5N_T0_D07_14 Sch=ja[1] +#set_property -dict { PACKAGE_PIN G19 IOSTANDARD LVCMOS33 } [get_ports { ja[1] }]; #IO_L4N_T0_D05_14 Sch=ja[2] +#set_property -dict { PACKAGE_PIN N18 IOSTANDARD LVCMOS33 } [get_ports { ja[2] }]; #IO_L9P_T1_DQS_14 Sch=ja[3] +#set_property -dict { PACKAGE_PIN L18 IOSTANDARD LVCMOS33 } [get_ports { ja[3] }]; #IO_L8P_T1_D11_14 Sch=ja[4] +#set_property -dict { PACKAGE_PIN H17 IOSTANDARD LVCMOS33 } [get_ports { ja[4] }]; #IO_L5P_T0_D06_14 Sch=ja[7] +#set_property -dict { PACKAGE_PIN H19 IOSTANDARD LVCMOS33 } [get_ports { ja[5] }]; #IO_L4P_T0_D04_14 Sch=ja[8] +#set_property -dict { PACKAGE_PIN J19 IOSTANDARD LVCMOS33 } [get_ports { ja[6] }]; #IO_L6N_T0_D08_VREF_14 Sch=ja[9] +#set_property -dict { PACKAGE_PIN K18 IOSTANDARD LVCMOS33 } [get_ports { ja[7] }]; #IO_L8N_T1_D12_14 Sch=ja[10] + + +# Analog XADC Pins +# Only declare these if you want to use pins 15 and 16 as single ended analog inputs. pin 15 -> vaux4, pin16 -> vaux12 +#set_property -dict { PACKAGE_PIN G2 IOSTANDARD LVCMOS33 } [get_ports { xa_n[0] }]; #IO_L1N_T0_AD4N_35 Sch=ain_n[15] +#set_property -dict { PACKAGE_PIN G3 IOSTANDARD LVCMOS33 } [get_ports { xa_p[0] }]; #IO_L1P_T0_AD4P_35 Sch=ain_p[15] +#set_property -dict { PACKAGE_PIN J2 IOSTANDARD LVCMOS33 } [get_ports { xa_n[1] }]; #IO_L2N_T0_AD12N_35 Sch=ain_n[16] +#set_property -dict { PACKAGE_PIN H2 IOSTANDARD LVCMOS33 } [get_ports { xa_p[1] }]; #IO_L2P_T0_AD12P_35 Sch=ain_p[16] + + +## GPIO Pins +## Pins 15 and 16 should remain commented if using them as analog inputs +set_property -dict { PACKAGE_PIN M3 IOSTANDARD LVCMOS33 } [get_ports { debug[0] }]; #IO_L8N_T1_AD14N_35 Sch=pio[01] +set_property -dict { PACKAGE_PIN L3 IOSTANDARD LVCMOS33 } [get_ports { debug[1] }]; #IO_L8P_T1_AD14P_35 Sch=pio[02] +set_property -dict { PACKAGE_PIN A16 IOSTANDARD LVCMOS33 } [get_ports { debug[2] }]; #IO_L12P_T1_MRCC_16 Sch=pio[03] +set_property -dict { PACKAGE_PIN K3 IOSTANDARD LVCMOS33 } [get_ports { debug[3] }]; #IO_L7N_T1_AD6N_35 Sch=pio[04] +set_property -dict { PACKAGE_PIN C15 IOSTANDARD LVCMOS33 } [get_ports { debug[4] }]; #IO_L11P_T1_SRCC_16 Sch=pio[05] +set_property -dict { PACKAGE_PIN H1 IOSTANDARD LVCMOS33 } [get_ports { debug[5] }]; #IO_L3P_T0_DQS_AD5P_35 Sch=pio[06] +set_property -dict { PACKAGE_PIN A15 IOSTANDARD LVCMOS33 } [get_ports { debug[6] }]; #IO_L6N_T0_VREF_16 Sch=pio[07] +set_property -dict { PACKAGE_PIN B15 IOSTANDARD LVCMOS33 } [get_ports { debug[7] }]; #IO_L11N_T1_SRCC_16 Sch=pio[08] +set_property -dict { PACKAGE_PIN A14 IOSTANDARD LVCMOS33 } [get_ports { debug[8] }]; #IO_L6P_T0_16 Sch=pio[09] +set_property -dict { PACKAGE_PIN J3 IOSTANDARD LVCMOS33 } [get_ports { debug[9] }]; #IO_L7P_T1_AD6P_35 Sch=pio[10] +set_property -dict { PACKAGE_PIN J1 IOSTANDARD LVCMOS33 } [get_ports { debug[10] }]; #IO_L3N_T0_DQS_AD5N_35 Sch=pio[11] +set_property -dict { PACKAGE_PIN K2 IOSTANDARD LVCMOS33 } [get_ports { debug[11] }]; #IO_L5P_T0_AD13P_35 Sch=pio[12] +set_property -dict { PACKAGE_PIN L1 IOSTANDARD LVCMOS33 } [get_ports { debug[12] }]; #IO_L6N_T0_VREF_35 Sch=pio[13] +set_property -dict { PACKAGE_PIN L2 IOSTANDARD LVCMOS33 } [get_ports { debug[13] }]; #IO_L5N_T0_AD13N_35 Sch=pio[14] +set_property -dict { PACKAGE_PIN M1 IOSTANDARD LVCMOS33 } [get_ports { debug[14] }]; #IO_L9N_T1_DQS_AD7N_35 Sch=pio[17] +set_property -dict { PACKAGE_PIN N3 IOSTANDARD LVCMOS33 } [get_ports { debug[15] }]; #IO_L12P_T1_MRCC_35 Sch=pio[18] +set_property -dict { PACKAGE_PIN P3 IOSTANDARD LVCMOS33 } [get_ports { debug[16] }]; #IO_L12N_T1_MRCC_35 Sch=pio[19] +set_property -dict { PACKAGE_PIN M2 IOSTANDARD LVCMOS33 } [get_ports { debug[17] }]; #IO_L9P_T1_DQS_AD7P_35 Sch=pio[20] +set_property -dict { PACKAGE_PIN N1 IOSTANDARD LVCMOS33 } [get_ports { debug[18] }]; #IO_L10N_T1_AD15N_35 Sch=pio[21] +set_property -dict { PACKAGE_PIN N2 IOSTANDARD LVCMOS33 } [get_ports { debug[19] }]; #IO_L10P_T1_AD15P_35 Sch=pio[22] +set_property -dict { PACKAGE_PIN P1 IOSTANDARD LVCMOS33 } [get_ports { debug[20] }]; #IO_L19N_T3_VREF_35 Sch=pio[23] +set_property -dict { PACKAGE_PIN R3 IOSTANDARD LVCMOS33 } [get_ports { debug[21] }]; #IO_L2P_T0_34 Sch=pio[26] +set_property -dict { PACKAGE_PIN T3 IOSTANDARD LVCMOS33 } [get_ports { debug[22] }]; #IO_L2N_T0_34 Sch=pio[27] +set_property -dict { PACKAGE_PIN R2 IOSTANDARD LVCMOS33 } [get_ports { debug[23] }]; #IO_L1P_T0_34 Sch=pio[28] +set_property -dict { PACKAGE_PIN T1 IOSTANDARD LVCMOS33 } [get_ports { debug[24] }]; #IO_L3P_T0_DQS_34 Sch=pio[29] +set_property -dict { PACKAGE_PIN T2 IOSTANDARD LVCMOS33 } [get_ports { debug[25] }]; #IO_L1N_T0_34 Sch=pio[30] +set_property -dict { PACKAGE_PIN U1 IOSTANDARD LVCMOS33 } [get_ports { debug[26] }]; #IO_L3N_T0_DQS_34 Sch=pio[31] +set_property -dict { PACKAGE_PIN W2 IOSTANDARD LVCMOS33 } [get_ports { debug[27] }]; #IO_L5N_T0_34 Sch=pio[32] +set_property -dict { PACKAGE_PIN V2 IOSTANDARD LVCMOS33 } [get_ports { debug[28] }]; #IO_L5P_T0_34 Sch=pio[33] +set_property -dict { PACKAGE_PIN W3 IOSTANDARD LVCMOS33 } [get_ports { debug[29] }]; #IO_L6N_T0_VREF_34 Sch=pio[34] +set_property -dict { PACKAGE_PIN V3 IOSTANDARD LVCMOS33 } [get_ports { debug[30] }]; #IO_L6P_T0_34 Sch=pio[35] +set_property -dict { PACKAGE_PIN W5 IOSTANDARD LVCMOS33 } [get_ports { debug[31] }]; #IO_L12P_T1_MRCC_34 Sch=pio[36] +#set_property -dict { PACKAGE_PIN V4 IOSTANDARD LVCMOS33 } [get_ports { pio[37] }]; #IO_L11N_T1_SRCC_34 Sch=pio[37] +#set_property -dict { PACKAGE_PIN U4 IOSTANDARD LVCMOS33 } [get_ports { pio[38] }]; #IO_L11P_T1_SRCC_34 Sch=pio[38] +#set_property -dict { PACKAGE_PIN V5 IOSTANDARD LVCMOS33 } [get_ports { pio[39] }]; #IO_L16N_T2_34 Sch=pio[39] +#set_property -dict { PACKAGE_PIN W4 IOSTANDARD LVCMOS33 } [get_ports { pio[40] }]; #IO_L12N_T1_MRCC_34 Sch=pio[40] +#set_property -dict { PACKAGE_PIN U5 IOSTANDARD LVCMOS33 } [get_ports { pio[41] }]; #IO_L16P_T2_34 Sch=pio[41] +#set_property -dict { PACKAGE_PIN U2 IOSTANDARD LVCMOS33 } [get_ports { pio[42] }]; #IO_L9N_T1_DQS_34 Sch=pio[42] +#set_property -dict { PACKAGE_PIN W6 IOSTANDARD LVCMOS33 } [get_ports { pio[43] }]; #IO_L13N_T2_MRCC_34 Sch=pio[43] +#set_property -dict { PACKAGE_PIN U3 IOSTANDARD LVCMOS33 } [get_ports { pio[44] }]; #IO_L9P_T1_DQS_34 Sch=pio[44] +#set_property -dict { PACKAGE_PIN U7 IOSTANDARD LVCMOS33 } [get_ports { pio[45] }]; #IO_L19P_T3_34 Sch=pio[45] +#set_property -dict { PACKAGE_PIN W7 IOSTANDARD LVCMOS33 } [get_ports { pio[46] }]; #IO_L13P_T2_MRCC_34 Sch=pio[46] +#set_property -dict { PACKAGE_PIN U8 IOSTANDARD LVCMOS33 } [get_ports { pio[47] }]; #IO_L14P_T2_SRCC_34 Sch=pio[47] +#set_property -dict { PACKAGE_PIN V8 IOSTANDARD LVCMOS33 } [get_ports { pio[48] }]; #IO_L14N_T2_SRCC_34 Sch=pio[48] + + +## UART +#set_property -dict { PACKAGE_PIN J18 IOSTANDARD LVCMOS33 } [get_ports { uart_rxd_out }]; #IO_L7N_T1_D10_14 Sch=uart_rxd_out +#set_property -dict { PACKAGE_PIN J17 IOSTANDARD LVCMOS33 } [get_ports { uart_txd_in }]; #IO_L7P_T1_D09_14 Sch=uart_txd_in + + +## Crypto 1 Wire Interface +#set_property -dict { PACKAGE_PIN D17 IOSTANDARD LVCMOS33 } [get_ports { crypto_sda }]; #IO_0_14 Sch=crypto_sda + + +## QSPI +#set_property -dict { PACKAGE_PIN K19 IOSTANDARD LVCMOS33 } [get_ports { qspi_cs }]; #IO_L6P_T0_FCS_B_14 Sch=qspi_cs +#set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports { qspi_dq[0] }]; #IO_L1P_T0_D00_MOSI_14 Sch=qspi_dq[0] +#set_property -dict { PACKAGE_PIN D19 IOSTANDARD LVCMOS33 } [get_ports { qspi_dq[1] }]; #IO_L1N_T0_D01_DIN_14 Sch=qspi_dq[1] +#set_property -dict { PACKAGE_PIN G18 IOSTANDARD LVCMOS33 } [get_ports { qspi_dq[2] }]; #IO_L2P_T0_D02_14 Sch=qspi_dq[2] +#set_property -dict { PACKAGE_PIN F18 IOSTANDARD LVCMOS33 } [get_ports { qspi_dq[3] }]; #IO_L2N_T0_D03_14 Sch=qspi_dq[3] + + +## Cellular RAM +#set_property -dict { PACKAGE_PIN M18 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[0] }]; #IO_L11P_T1_SRCC_14 Sch=sram- a[0] +#set_property -dict { PACKAGE_PIN M19 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[1] }]; #IO_L11N_T1_SRCC_14 Sch=sram- a[1] +#set_property -dict { PACKAGE_PIN K17 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[2] }]; #IO_L12N_T1_MRCC_14 Sch=sram- a[2] +#set_property -dict { PACKAGE_PIN N17 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[3] }]; #IO_L13P_T2_MRCC_14 Sch=sram- a[3] +#set_property -dict { PACKAGE_PIN P17 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[4] }]; #IO_L13N_T2_MRCC_14 Sch=sram- a[4] +#set_property -dict { PACKAGE_PIN P18 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[5] }]; #IO_L14P_T2_SRCC_14 Sch=sram- a[5] +#set_property -dict { PACKAGE_PIN R18 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[6] }]; #IO_L14N_T2_SRCC_14 Sch=sram- a[6] +#set_property -dict { PACKAGE_PIN W19 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[7] }]; #IO_L16N_T2_A15_D31_14 Sch=sram- a[7] +#set_property -dict { PACKAGE_PIN U19 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[8] }]; #IO_L15P_T2_DQS_RDWR_B_14 Sch=sram- a[8] +#set_property -dict { PACKAGE_PIN V19 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[9] }]; #IO_L15N_T2_DQS_DOUT_CSO_B_14 Sch=sram- a[9] +#set_property -dict { PACKAGE_PIN W18 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[10] }]; #IO_L16P_T2_CSI_B_14 Sch=sram- a[10] +#set_property -dict { PACKAGE_PIN T17 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[11] }]; #IO_L17P_T2_A14_D30_14 Sch=sram- a[11] +#set_property -dict { PACKAGE_PIN T18 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[12] }]; #IO_L17N_T2_A13_D29_14 Sch=sram- a[12] +#set_property -dict { PACKAGE_PIN U17 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[13] }]; #IO_L18P_T2_A12_D28_14 Sch=sram- a[13] +#set_property -dict { PACKAGE_PIN U18 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[14] }]; #IO_L18N_T2_A11_D27_14 Sch=sram- a[14] +#set_property -dict { PACKAGE_PIN V16 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[15] }]; #IO_L19P_T3_A10_D26_14 Sch=sram- a[15] +#set_property -dict { PACKAGE_PIN W16 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[16] }]; #IO_L20P_T3_A08_D24_14 Sch=sram- a[16] +#set_property -dict { PACKAGE_PIN W17 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[17] }]; #IO_L20N_T3_A07_D23_14 Sch=sram- a[17] +#set_property -dict { PACKAGE_PIN V15 IOSTANDARD LVCMOS33 } [get_ports { MemAdr[18] }]; #IO_L21P_T3_DQS_14 Sch=sram- a[18] +#set_property -dict { PACKAGE_PIN W15 IOSTANDARD LVCMOS33 } [get_ports { MemDB[0] }]; #IO_L21N_T3_DQS_A06_D22_14 Sch=sram-dq[0] +#set_property -dict { PACKAGE_PIN W13 IOSTANDARD LVCMOS33 } [get_ports { MemDB[1] }]; #IO_L22P_T3_A05_D21_14 Sch=sram-dq[1] +#set_property -dict { PACKAGE_PIN W14 IOSTANDARD LVCMOS33 } [get_ports { MemDB[2] }]; #IO_L22N_T3_A04_D20_14 Sch=sram-dq[2] +#set_property -dict { PACKAGE_PIN U15 IOSTANDARD LVCMOS33 } [get_ports { MemDB[3] }]; #IO_L23P_T3_A03_D19_14 Sch=sram-dq[3] +#set_property -dict { PACKAGE_PIN U16 IOSTANDARD LVCMOS33 } [get_ports { MemDB[4] }]; #IO_L23N_T3_A02_D18_14 Sch=sram-dq[4] +#set_property -dict { PACKAGE_PIN V13 IOSTANDARD LVCMOS33 } [get_ports { MemDB[5] }]; #IO_L24P_T3_A01_D17_14 Sch=sram-dq[5] +#set_property -dict { PACKAGE_PIN V14 IOSTANDARD LVCMOS33 } [get_ports { MemDB[6] }]; #IO_L24N_T3_A00_D16_14 Sch=sram-dq[6] +#set_property -dict { PACKAGE_PIN U14 IOSTANDARD LVCMOS33 } [get_ports { MemDB[7] }]; #IO_25_14 Sch=sram-dq[7] +#set_property -dict { PACKAGE_PIN P19 IOSTANDARD LVCMOS33 } [get_ports { RamOEn }]; #IO_L10P_T1_D14_14 Sch=sram-oe +#set_property -dict { PACKAGE_PIN R19 IOSTANDARD LVCMOS33 } [get_ports { RamWEn }]; #IO_L10N_T1_D15_14 Sch=sram-we +#set_property -dict { PACKAGE_PIN N19 IOSTANDARD LVCMOS33 } [get_ports { RamCEn }]; #IO_L9N_T1_DQS_D13_14 Sch=sram-ce \ No newline at end of file diff --git a/riscv-ac.srcs/sim_1/new/program.mem b/riscv-ac.srcs/sim_1/new/program.mem new file mode 100644 index 0000000..3571c71 --- /dev/null +++ b/riscv-ac.srcs/sim_1/new/program.mem @@ -0,0 +1,3 @@ +000000B3 +00810113 +002080B3 \ No newline at end of file diff --git a/riscv-ac.srcs/sim_1/new/tb_top.v b/riscv-ac.srcs/sim_1/new/tb_top.v new file mode 100644 index 0000000..6b4c1d2 --- /dev/null +++ b/riscv-ac.srcs/sim_1/new/tb_top.v @@ -0,0 +1,58 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: +// +// Create Date: 03/01/2026 07:26:34 PM +// Design Name: +// Module Name: tb_top +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +`timescale 1ns / 1ps + +module tb_top(); + reg clk; + reg rst; + wire [1:0] leds; + wire [31:0] debug; + + top uut ( + .clk(clk), + .rst(rst), + .leds(leds), + .debug(debug) + ); + + // T_CLK = 10ns + always #5 clk = ~clk; + + initial begin + // inicializamos señales + clk = 0; + rst = 1; + + // cargamos programa + $readmemh("/home/jomaa/git/riscv-ac/riscv-ac.srcs/sim_1/new/program.mem", uut.u_imem.memory); + + // activamos reset 20ns + #20; + rst = 0; + + // ejecución de 100 ciclos + #150; + + $finish; + end +endmodule \ No newline at end of file diff --git a/riscv-ac.srcs/sources_1/new/alu.v b/riscv-ac.srcs/sources_1/new/alu.v index 9f1f57a..a7257b0 100644 --- a/riscv-ac.srcs/sources_1/new/alu.v +++ b/riscv-ac.srcs/sources_1/new/alu.v @@ -1,19 +1,19 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: +// Company: nope +// Engineer: Jose // // Create Date: 02/20/2026 09:21:52 AM -// Design Name: +// Design Name: Arithmetic-Logic Unit // Module Name: alu -// Project Name: -// Target Devices: -// Tool Versions: -// Description: +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Main functional unit of the EX stage // // Dependencies: // -// Revision: +// Revision: 1.0 // Revision 0.01 - File Created // Additional Comments: // @@ -29,18 +29,18 @@ module alu( always @(*) begin case(sel) - 4'b0000: R <= A + B; // add - 4'b0001: R <= A - B; // sub - 4'b0010: R <= A & B; // and - 4'b0011: R <= A | B; // or - 4'b0100: R <= A ^ B; // xor - 4'b0101: R <= A << B[4:0]; // sll (shamt = 5 bits) - 4'b0110: R <= A >> B[4:0]; // srl (logical) - 4'b0111: R <= ($signed(A) < $signed(B)) ? 1 : 0; // slt signed - 4'b1000: R <= (A < B) ? 1 : 0; // sltu unsigned - 4'b1001: R <= $signed(A) >>> B[4:0]; // sra arithmetic right - 4'b1010: R <= 32'b0; // default / nop opcional - default: R <= 32'b0; + 4'b0000: R = A + B; // add + 4'b0001: R = A - B; // sub + 4'b0010: R = A & B; // and + 4'b0011: R = A | B; // or + 4'b0100: R = A ^ B; // xor + 4'b0101: R = A << B[4:0]; // sll + 4'b0110: R = A >> B[4:0]; // srl + 4'b0111: R = ($signed(A) < $signed(B)) ? 1 : 0; // slt (shift if less than signed) + 4'b1000: R = (A < B) ? 1 : 0; // sltu (shift if less than unsigned) + 4'b1001: R = $signed(A) >>> B[4:0]; // sra (shift right arithmetic) + 4'b1010: R = 32'b0; // nop + default: R = 32'b0; // default: nop endcase end diff --git a/riscv-ac.srcs/sources_1/new/control.v b/riscv-ac.srcs/sources_1/new/control.v index 16d7ec6..cfacd76 100644 --- a/riscv-ac.srcs/sources_1/new/control.v +++ b/riscv-ac.srcs/sources_1/new/control.v @@ -1,19 +1,19 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: +// Company: nope +// Engineer: Jose // // Create Date: 02/20/2026 09:21:52 AM -// Design Name: +// Design Name: Control Unit // Module Name: control -// Project Name: -// Target Devices: -// Tool Versions: -// Description: +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Manages the logic in the ID stage // // Dependencies: // -// Revision: +// Revision: 1.0 // Revision 0.01 - File Created // Additional Comments: // @@ -22,22 +22,25 @@ module control( input [6:0] opcode, - input [2:0] funct3, - input [6:0] funct7, + input [2:0] aux, + input [6:0] func, output reg we_reg, output reg we_mem, output reg mem_to_reg, output reg alu_src, output reg [3:0] alu_op, - output reg branch + output reg branch, + output reg jump ); -localparam OP_R = 7'b0110011; -localparam OP_I = 7'b0010011; -localparam OP_LOAD= 7'b0000011; -localparam OP_STORE=7'b0100011; -localparam OP_BRANCH=7'b1100011; -localparam OP_JAL = 7'b1101111; +// formatos de instrucciones +localparam ALU_R = 7'b0110011; +localparam ALU_I = 7'b0010011; +localparam OP_LOAD = 7'b0000011; +localparam OP_STORE = 7'b0100011; +localparam OP_BRANCH = 7'b1100011; +localparam OP_JAL = 7'b1101111; +localparam OP_JALR = 7'b1100111; always @(*) begin we_reg = 0; @@ -46,12 +49,13 @@ always @(*) begin alu_src = 0; alu_op = 4'b0000; branch = 0; + jump = 0; case(opcode) - OP_R: begin + ALU_R: begin we_reg = 1; alu_src = 0; - case({funct7,funct3}) + case({func,aux}) 10'b0000000000: alu_op = 4'b0000; // ADD 10'b0100000000: alu_op = 4'b0001; // SUB 10'b0000000111: alu_op = 4'b0010; // AND @@ -65,16 +69,16 @@ always @(*) begin endcase end - OP_I: begin + ALU_I: begin we_reg = 1; alu_src = 1; - case(funct3) + case(aux) 3'b000: alu_op = 4'b0000; // ADDI 3'b111: alu_op = 4'b0010; // ANDI 3'b110: alu_op = 4'b0011; // ORI 3'b100: alu_op = 4'b0100; // XORI 3'b001: alu_op = 4'b0101; // SLLI - 3'b101: alu_op = (funct7==7'b0000000)?4'b0110:4'b0111; // SRLI/SRAI + 3'b101: alu_op = (func==7'b0000000)?4'b0110:4'b1001; // SRLI/SRAI 3'b010: alu_op = 4'b1000; // SLTI 3'b011: alu_op = 4'b1001; // SLTIU endcase @@ -82,32 +86,32 @@ always @(*) begin OP_LOAD: begin we_reg = 1; - we_mem = 0; mem_to_reg = 1; - alu_src = 1; // addr = rs1 + immediate - alu_op = 4'b0000; + alu_src = 1; end OP_STORE: begin we_mem = 1; - alu_src = 1; // addr = rs1 + immediate - alu_op = 4'b0000; + alu_src = 1; end OP_BRANCH: begin branch = 1; - alu_src = 0; alu_op = 4'b0001; end OP_JAL: begin - we_reg = 1; // rd <- PC+4 + we_reg = 1; // para guardar la dirección de retorno + jump = 1; + end + + OP_JALR: begin + we_reg = 1; alu_src = 1; - alu_op = 4'b0000; + jump = 1; end default: begin end - endcase end diff --git a/riscv-ac.srcs/sources_1/new/dmem.v b/riscv-ac.srcs/sources_1/new/dmem.v index 6371fe0..06ae330 100644 --- a/riscv-ac.srcs/sources_1/new/dmem.v +++ b/riscv-ac.srcs/sources_1/new/dmem.v @@ -1,19 +1,19 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: +// Company: nope +// Engineer: Jose // // Create Date: 02/20/2026 09:21:52 AM -// Design Name: +// Design Name: Data Memory // Module Name: dmem -// Project Name: -// Target Devices: -// Tool Versions: -// Description: +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Stores data // // Dependencies: // -// Revision: +// Revision: 1.0 // Revision 0.01 - File Created // Additional Comments: // @@ -29,12 +29,21 @@ module dmem( ); reg [31:0] memory[0:255]; +reg [31:0] data; + +integer i; +initial begin + for (i = 0; i < 256; i = i + 1) begin + memory[i] = 32'b0; + end +end always @(posedge clk) begin if (we) memory[address[9:2]] <= write_data; + data <= memory[address[9:2]]; end -assign read_data = memory[address[9:2]]; +assign read_data = data; endmodule \ No newline at end of file diff --git a/riscv-ac.srcs/sources_1/new/ex_me.v b/riscv-ac.srcs/sources_1/new/ex_me.v new file mode 100644 index 0000000..71f4743 --- /dev/null +++ b/riscv-ac.srcs/sources_1/new/ex_me.v @@ -0,0 +1,42 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: nope +// Engineer: Jose +// +// Create Date: 02/20/2026 09:21:52 AM +// Design Name: EX/ME register +// Module Name: ex_me +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Register between EX/ME stages +// +// Dependencies: +// +// Revision: 1.0 +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module ex_me ( + input clk, rst, + input we_reg_in, we_mem_in, mem_to_reg_in, + output reg we_reg_out, we_mem_out, mem_to_reg_out, + input [31:0] alu_in, regB_in, pc4_in, + input [4:0] rd_in, + output reg [31:0] alu_out, regB_out, pc4_out, + output reg [4:0] rd_out +); + + always @(posedge clk or posedge rst) begin + if (rst) begin + we_reg_out <= 0; we_mem_out <= 0; mem_to_reg_out <= 0; + alu_out <= 0; regB_out <= 0; pc4_out <= 0; rd_out <= 0; + end else begin + we_reg_out <= we_reg_in; we_mem_out <= we_mem_in; mem_to_reg_out <= mem_to_reg_in; + alu_out <= alu_in; regB_out <= regB_in; pc4_out <= pc4_in; rd_out <= rd_in; + end + end +endmodule \ No newline at end of file diff --git a/riscv-ac.srcs/sources_1/new/forwarding.v b/riscv-ac.srcs/sources_1/new/forwarding.v new file mode 100644 index 0000000..6fce5b9 --- /dev/null +++ b/riscv-ac.srcs/sources_1/new/forwarding.v @@ -0,0 +1,69 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: nope +// Engineer: Jose +// +// Create Date: 02/20/2026 09:21:52 AM +// Design Name: Forwarding +// Module Name: forwarding +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Manages forwarding MUXes selection inputs +// +// Dependencies: +// +// Revision: 1.0 +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module forwarding ( + input [4:0] ID_EX_Rs1, + input [4:0] ID_EX_Rs2, + input [4:0] IF_ID_Rs1, + input [4:0] IF_ID_Rs2, + input [4:0] EX_ME_Rd, + input EX_ME_RegWrite, + input [4:0] ME_WB_Rd, + input ME_WB_RegWrite, + output reg [1:0] EX_ForwardA, + output reg [1:0] EX_ForwardB, + output reg [1:0] ID_ForwardA, + output reg [1:0] ID_ForwardB +); + + always @(*) begin + EX_ForwardA = 2'b00; + EX_ForwardB = 2'b00; + ID_ForwardA = 2'b00; + ID_ForwardB = 2'b00; + + // Bypass A (EX) + if (EX_ME_RegWrite && (EX_ME_Rd != 0) && (EX_ME_Rd == ID_EX_Rs1)) + EX_ForwardA = 2'b10; + else if (ME_WB_RegWrite && (ME_WB_Rd != 0) && (ME_WB_Rd == ID_EX_Rs1)) + EX_ForwardA = 2'b01; + + // Bypass B (EX) + if (EX_ME_RegWrite && (EX_ME_Rd != 0) && (EX_ME_Rd == ID_EX_Rs2)) + EX_ForwardB = 2'b10; + else if (ME_WB_RegWrite && (ME_WB_Rd != 0) && (ME_WB_Rd == ID_EX_Rs2)) + EX_ForwardB = 2'b01; + + // Bypass A (ID) + if (EX_ME_RegWrite && (EX_ME_Rd != 0) && (EX_ME_Rd == IF_ID_Rs1)) + ID_ForwardA = 2'b10; + else if (ME_WB_RegWrite && (ME_WB_Rd != 0) && (ME_WB_Rd == IF_ID_Rs1)) + ID_ForwardA = 2'b01; + + // Bypass B (ID) + if (EX_ME_RegWrite && (EX_ME_Rd != 0) && (EX_ME_Rd == IF_ID_Rs2)) + ID_ForwardB = 2'b10; + else if (ME_WB_RegWrite && (ME_WB_Rd != 0) && (ME_WB_Rd == IF_ID_Rs2)) + ID_ForwardB = 2'b01; + end + +endmodule diff --git a/riscv-ac.srcs/sources_1/new/hazard.v b/riscv-ac.srcs/sources_1/new/hazard.v new file mode 100644 index 0000000..4d7ce2a --- /dev/null +++ b/riscv-ac.srcs/sources_1/new/hazard.v @@ -0,0 +1,62 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: nope +// Engineer: Jose +// +// Create Date: 02/20/2026 09:21:52 AM +// Design Name: Hazard Unit +// Module Name: hazard +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Manages hazards between memory instructions and any other +// +// Dependencies: +// +// Revision: 1.0 +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module hazard ( + input [4:0] IF_ID_Rs1, + input [4:0] IF_ID_Rs2, + input [4:0] ID_EX_Rd, + input ID_EX_MemRead, + input Branch_Taken, + output reg PC_En, + output reg IF_ID_En, + output reg IF_ID_Clr, + output reg ID_EX_Clr +); + + always @(*) begin + PC_En = 1'b1; + IF_ID_En = 1'b1; + IF_ID_Clr = 1'b0; + ID_EX_Clr = 1'b0; + + // si: + // - se lee de memoria + // - el Rd no es x0 + // - el Rd es Rs1 o Rs2 + // entonces: + // bloqueamos para que el dato generado en ME lo pueda coger EX + if (ID_EX_MemRead && (ID_EX_Rd != 5'b0) && + ((ID_EX_Rd == IF_ID_Rs1) || (ID_EX_Rd == IF_ID_Rs2))) begin + PC_En = 1'b0; + IF_ID_En = 1'b0; + ID_EX_Clr = 1'b1; + end + // si: + // - salto tomado + // entonces: + // flush síncrono al reg IF/ID + else if (Branch_Taken) begin + IF_ID_Clr = 1'b1; + end + end + +endmodule \ No newline at end of file diff --git a/riscv-ac.srcs/sources_1/new/id_ex.v b/riscv-ac.srcs/sources_1/new/id_ex.v new file mode 100644 index 0000000..2d99b23 --- /dev/null +++ b/riscv-ac.srcs/sources_1/new/id_ex.v @@ -0,0 +1,57 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: nope +// Engineer: Jose +// +// Create Date: 02/20/2026 09:21:52 AM +// Design Name: ID/EX register +// Module Name: id_ex +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Register between ID/EX stages +// +// Dependencies: +// +// Revision: 1.0 +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module id_ex ( + input clk, rst, clr, + + // señales de la UC y ALU + input we_reg_in, we_mem_in, mem_to_reg_in, alu_src_in, branch_in, jump_in, + input [3:0] alu_op_in, + + output reg we_reg_out, we_mem_out, mem_to_reg_out, alu_src_out, branch_out, jump_out, + output reg [3:0] alu_op_out, + + // PC4, A, B, C, Rd + input [31:0] pc4_in, regA_in, regB_in, regC_in, + input [4:0] rs1_in, rs2_in, rd_in, + + output reg [31:0] pc4_out, regA_out, regB_out, regC_out, + output reg [4:0] rs1_out, rs2_out, rd_out +); + + always @(posedge clk or posedge rst) begin + if (rst || clr) begin + we_reg_out <= 0; we_mem_out <= 0; mem_to_reg_out <= 0; + alu_src_out <= 0; branch_out <= 0; jump_out <= 0; alu_op_out <= 4'b0; + pc4_out <= 0; regA_out <= 0; regB_out <= 0; regC_out <= 0; + rs1_out <= 0; rs2_out <= 0; rd_out <= 0; + end + else begin + we_reg_out <= we_reg_in; we_mem_out <= we_mem_in; + mem_to_reg_out <= mem_to_reg_in; alu_src_out <= alu_src_in; + branch_out <= branch_in; jump_out <= jump_in; alu_op_out <= alu_op_in; + pc4_out <= pc4_in; + regA_out <= regA_in; regB_out <= regB_in; regC_out <= regC_in; + rs1_out <= rs1_in; rs2_out <= rs2_in; rd_out <= rd_in; + end + end +endmodule \ No newline at end of file diff --git a/riscv-ac.srcs/sources_1/new/if_id.v b/riscv-ac.srcs/sources_1/new/if_id.v new file mode 100644 index 0000000..a54ab48 --- /dev/null +++ b/riscv-ac.srcs/sources_1/new/if_id.v @@ -0,0 +1,51 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: nope +// Engineer: Jose +// +// Create Date: 02/20/2026 09:21:52 AM +// Design Name: IF/ID register +// Module Name: if_id +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Register between IF/ID stages +// +// Dependencies: +// +// Revision: 1.0 +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module if_id ( + input clk, + input rst, + input en, + input clr, + input [31:0] npc_in, + input [31:0] pc4_in, + input [31:0] ir_in, + output reg [31:0] npc_out, + output reg [31:0] pc4_out, + output reg [31:0] ir_out +); + + always @(posedge clk or posedge rst) begin + if (rst) begin + npc_out <= 32'b0; + pc4_out <= 32'b0; + ir_out <= 32'b0; + end else if (clr) begin + npc_out <= 32'b0; + pc4_out <= 32'b0; + ir_out <= 32'b0; + end else if (en) begin + npc_out <= npc_in; + pc4_out <= pc4_in; + ir_out <= ir_in; + end + end +endmodule \ No newline at end of file diff --git a/riscv-ac.srcs/sources_1/new/imem.v b/riscv-ac.srcs/sources_1/new/imem.v index a524e3a..1fba927 100644 --- a/riscv-ac.srcs/sources_1/new/imem.v +++ b/riscv-ac.srcs/sources_1/new/imem.v @@ -1,19 +1,19 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: +// Company: nope +// Engineer: Jose // // Create Date: 02/20/2026 09:21:52 AM -// Design Name: +// Design Name: Instruction Memory // Module Name: imem -// Project Name: -// Target Devices: -// Tool Versions: -// Description: +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Stores instructions // // Dependencies: // -// Revision: +// Revision: 1.0 // Revision 0.01 - File Created // Additional Comments: // @@ -29,12 +29,21 @@ module imem( ); reg [31:0] memory[0:255]; +reg [31:0] ir; + +integer i; +initial begin + for (i = 0; i < 256; i = i + 1) begin + memory[i] = 32'b0; + end +end always @(posedge clk) begin if(we) memory[write_addr] <= write_data; + ir <= memory[address[9:2]]; end -assign instruction = memory[address[9:2]]; +assign instruction = ir; endmodule diff --git a/riscv-ac.srcs/sources_1/new/imm_gen.v b/riscv-ac.srcs/sources_1/new/imm_gen.v index c136e35..2be97c0 100644 --- a/riscv-ac.srcs/sources_1/new/imm_gen.v +++ b/riscv-ac.srcs/sources_1/new/imm_gen.v @@ -1,37 +1,54 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: +// Company: nope +// Engineer: Jose // // Create Date: 02/20/2026 09:21:52 AM -// Design Name: +// Design Name: Immediate Generator // Module Name: imm_gen -// Project Name: -// Target Devices: -// Tool Versions: -// Description: +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Retrieves the immediate from the instruction (uses verilog concat) // // Dependencies: // -// Revision: +// Revision: 1.0 // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// - module imm_gen( - input [31:0] instr, + input [31:0] instr, output reg [31:0] imm_out ); always @(*) begin case(instr[6:0]) - 7'b0010011, - 7'b0000011: + // Formato I + 7'b0010011, + 7'b0000011, + 7'b1100111: imm_out = {{20{instr[31]}}, instr[31:20]}; + + // Formato S + 7'b0100011: + imm_out = {{20{instr[31]}}, instr[31:25], instr[11:7]}; + + // Formato B + 7'b1100011: + imm_out = {{19{instr[31]}}, instr[31], instr[7], instr[30:25], instr[11:8], 1'b0}; + + // Formato J 7'b1101111: imm_out = {{11{instr[31]}}, instr[31], instr[19:12], instr[20], instr[30:21], 1'b0}; + + // Formato U + 7'b0110111, + 7'b0010111: + imm_out = {instr[31:12], 12'b0}; + default: imm_out = 32'b0; endcase diff --git a/riscv-ac.srcs/sources_1/new/me_wb.v b/riscv-ac.srcs/sources_1/new/me_wb.v new file mode 100644 index 0000000..d272a1d --- /dev/null +++ b/riscv-ac.srcs/sources_1/new/me_wb.v @@ -0,0 +1,42 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: nope +// Engineer: Jose +// +// Create Date: 02/20/2026 09:21:52 AM +// Design Name: ME/WB register +// Module Name: me_wb +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Register between ME/WB stages +// +// Dependencies: +// +// Revision: 1.0 +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module me_wb ( + input clk, rst, + input we_reg_in, mem_to_reg_in, + output reg we_reg_out, mem_to_reg_out, + input [31:0] alu_in, mem_data_in, pc4_in, + input [4:0] rd_in, + output reg [31:0] alu_out, mem_data_out, pc4_out, + output reg [4:0] rd_out +); + + always @(posedge clk or posedge rst) begin + if (rst) begin + we_reg_out <= 0; mem_to_reg_out <= 0; + alu_out <= 0; mem_data_out <= 0; pc4_out <= 0; rd_out <= 0; + end else begin + we_reg_out <= we_reg_in; mem_to_reg_out <= mem_to_reg_in; + alu_out <= alu_in; mem_data_out <= mem_data_in; pc4_out <= pc4_in; rd_out <= rd_in; + end + end +endmodule \ No newline at end of file diff --git a/riscv-ac.srcs/sources_1/new/pc.v b/riscv-ac.srcs/sources_1/new/pc.v index 4a61970..c42e336 100644 --- a/riscv-ac.srcs/sources_1/new/pc.v +++ b/riscv-ac.srcs/sources_1/new/pc.v @@ -1,19 +1,19 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: +// Company: nope +// Engineer: Jose // // Create Date: 02/20/2026 09:21:52 AM -// Design Name: +// Design Name: Program Counter // Module Name: pc -// Project Name: -// Target Devices: -// Tool Versions: -// Description: +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Points to the next instruction // // Dependencies: // -// Revision: +// Revision: 1.0 // Revision 0.01 - File Created // Additional Comments: // diff --git a/riscv-ac.srcs/sources_1/new/regfile.v b/riscv-ac.srcs/sources_1/new/regfile.v index 09ad50d..590e8c4 100644 --- a/riscv-ac.srcs/sources_1/new/regfile.v +++ b/riscv-ac.srcs/sources_1/new/regfile.v @@ -1,19 +1,19 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: +// Company: nope +// Engineer: Jose // // Create Date: 02/20/2026 09:21:52 AM -// Design Name: +// Design Name: Register File // Module Name: regfile -// Project Name: -// Target Devices: -// Tool Versions: -// Description: +// Project Name: riscv-ac +// Target Devices: Artix 7 +// Tool Versions: 2025.2 +// Description: Stores temporal values // // Dependencies: // -// Revision: +// Revision: 1.0 // Revision 0.01 - File Created // Additional Comments: // @@ -29,6 +29,13 @@ module regfile( reg [31:0] regs[0:31]; +integer i; +initial begin + for (i = 0; i < 32; i = i + 1) begin + regs[i] = 32'b0; + end +end + assign read_data_1 = (rs1 == 0) ? 0 : regs[rs1]; assign read_data_2 = (rs2 == 0) ? 0 : regs[rs2]; diff --git a/riscv-ac.srcs/sources_1/new/top.v b/riscv-ac.srcs/sources_1/new/top.v index e525507..fa8a752 100644 --- a/riscv-ac.srcs/sources_1/new/top.v +++ b/riscv-ac.srcs/sources_1/new/top.v @@ -1,135 +1,197 @@ `timescale 1ns / 1ps -////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: -// -// Create Date: 02/20/2026 09:21:52 AM -// Design Name: -// Module Name: top -// Project Name: -// Target Devices: -// Tool Versions: -// Description: -// -// Dependencies: -// -// Revision: -// Revision 0.01 - File Created -// Additional Comments: -// -////////////////////////////////////////////////////////////////////////////////// +`default_nettype none - -module top( - input clk, rst, - input [31:0] uart_data, - output [31:0] pc_out, alu_out, mem_data +module top ( + input clk, + input rst, + output [1:0] leds, + output [31:0] debug ); -// = PC =================================== -wire [31:0] pc_next, pc; -wire branch_taken; + // ========================================== + // ETAPA IF + // ========================================== + wire [31:0] npc_IF, pc4_IF, ir_IF, next_pc_IF, pc_stall; + wire PC_En, IF_ID_En, IF_ID_Clr; -pc pc_inst( - .clk(clk), - .rst(rst), - .next_pc(pc_next), - .imem_addr(pc_curr) -); + assign next_pc_IF = (Branch_Taken) ? branch_target_ID : pc4_IF; + assign pc4_IF = npc_IF + 4; + assign pc_stall = (PC_En) ? next_pc_IF : npc_IF; -assign pc_out = pc_curr; -// ======================================== + pc u_pc ( + .clk(clk), + .rst(rst), + .next_pc(pc_stall), + .imem_addr(npc_IF) + ); -// = IMEM ================================= -wire [31:0] instr; + imem u_imem ( + .clk(clk), .address(npc_IF), .we(1'b0), + .write_data(32'b0), .write_addr(8'b0), .instruction(ir_IF) + ); -imem imem_inst( - .address(pc_curr), - .instruction(instr) -); -// ======================================== + // ========================================== + // REGISTRO IF/ID + // ========================================== + wire [31:0] npc_ID, pc4_ID, ir_ID; -// = DECODE =============================== -wire [6:0] opcode = instr[6:0]; -wire [4:0] rd = instr[11:7]; -wire [2:0] funct3 = instr[14:12]; -wire [4:0] rs1 = instr[19:15]; -wire [4:0] rs2 = instr[24:20]; -wire [6:0] funct7 = instr[31:25]; -// ======================================== + if_id u_if_id ( + .clk(clk), .rst(rst), .en(IF_ID_En), .clr(IF_ID_Clr), + .npc_in(npc_IF), .pc4_in(pc4_IF), .ir_in(ir_IF), + .npc_out(npc_ID), .pc4_out(pc4_ID), .ir_out(ir_ID) + ); -// regfile mux -wire [31:0] reg_write_data; -assign reg_write_data = mem_to_reg ? dmem_read_data : alu_out; + // ========================================== + // ETAPA ID + // ========================================== + wire [4:0] rs1_ID = ir_ID[19:15]; + wire [4:0] rs2_ID = ir_ID[24:20]; + wire [4:0] rd_ID = ir_ID[11:7]; + wire [31:0] imm_ID, regA_ID, regB_ID; + + // Señales de Control + wire we_reg_ID, we_mem_ID, mem_to_reg_ID, alu_src_ID, branch_ID, jump_ID; + wire [3:0] alu_op_ID; + wire Branch_Taken; + wire [31:0] branch_target_ID; -// = REGFILE =============================== -wire [31:0] reg_r1, reg_r2; -wire we_reg; + control u_control ( + .opcode(ir_ID[6:0]), .aux(ir_ID[14:12]), .func(ir_ID[31:25]), + .we_reg(we_reg_ID), .we_mem(we_mem_ID), .mem_to_reg(mem_to_reg_ID), + .alu_src(alu_src_ID), .alu_op(alu_op_ID), .branch(branch_ID), .jump(jump_ID) + ); + + wire [31:0] write_data_WB; -regfile regfile_inst( - .clk(clk), - .regwrite(we_reg), - .rs1(rs1), - .rs2(rs2), - .rd(rd), - .write_data(reg_write_data), - .read_data_1(reg_r1), - .read_data_2(reg_r2) -); -// ======================================== + regfile u_regfile ( + .clk(~clk), + .regwrite(we_reg_WB), .rs1(rs1_ID), .rs2(rs2_ID), .rd(rd_WB), + .write_data(write_data_WB), .read_data_1(regA_ID), .read_data_2(regB_ID) + ); -// = IMMGEN =============================== -wire [31:0] imm_out; + imm_gen u_imm_gen ( + .instr(ir_ID), .imm_out(imm_ID) + ); -imm_gen imm_gen_inst( - .instr(instr), - .imm_out(imm_out) -); -// ======================================== + wire [1:0] ID_ForwardA, ID_ForwardB; + wire [31:0] cmp_A = (ID_ForwardA == 2'b10) ? alu_res_ME : (ID_ForwardA == 2'b01) ? write_data_WB : regA_ID; + wire [31:0] cmp_B = (ID_ForwardB == 2'b10) ? alu_res_ME : (ID_ForwardB == 2'b01) ? write_data_WB : regB_ID; + + // salto si JAL/JALR o si condición de BRANCH ok + assign Branch_Taken = jump_ID | (branch_ID & (cmp_A == cmp_B)); + + // MUX DirSalto + wire is_jalr = (ir_ID[6:0] == 7'b1100111); + wire [31:0] base_salto = is_jalr ? cmp_A : npc_ID; + + assign branch_target_ID = (base_salto + imm_ID) & ~32'b1; -// = CONTROL =============================== -wire we_mem, mem_to_reg, alu_src; -wire [3:0] alu_op; + // detector de riesgos + wire ID_EX_Clr; + hazard u_hazard ( + .IF_ID_Rs1(rs1_ID), .IF_ID_Rs2(rs2_ID), + .ID_EX_Rd(rd_EX), .ID_EX_MemRead(mem_to_reg_EX), + .Branch_Taken(Branch_Taken), + .PC_En(PC_En), .IF_ID_En(IF_ID_En), .IF_ID_Clr(IF_ID_Clr), .ID_EX_Clr(ID_EX_Clr) + ); -control control_inst( - .opcode(opcode), - .funct3(funct3), - .funct7(funct7), - .we_reg(we_reg), - .we_mem(we_mem), - .mem_to_reg(mem_to_reg), - .alu_src(alu_src), - .alu_op(alu_op), - .branch(branch_taken) -); -// ======================================== + // ========================================== + // REGISTRO ID/EX + // ========================================== + wire [31:0] pc_EX, pc4_EX, regA_EX, regB_EX, imm_EX; + wire [4:0] rs1_EX, rs2_EX, rd_EX; + wire we_reg_EX, we_mem_EX, mem_to_reg_EX, alu_src_EX, branch_EX, jump_EX; + wire [3:0] alu_op_EX; -// = ALU ================================== -wire [31:0] alu_b = alu_src ? imm_out : reg_r2; + id_ex u_id_ex ( + .clk(clk), .rst(rst), .clr(ID_EX_Clr), + .we_reg_in(we_reg_ID), .we_mem_in(we_mem_ID), .mem_to_reg_in(mem_to_reg_ID), + .alu_src_in(alu_src_ID), .branch_in(branch_ID), .alu_op_in(alu_op_ID), + .jump_in(jump_ID), + .we_reg_out(we_reg_EX), .we_mem_out(we_mem_EX), .mem_to_reg_out(mem_to_reg_EX), + .alu_src_out(alu_src_EX), .branch_out(branch_EX), .alu_op_out(alu_op_EX), + .jump_out(jump_EX), + .pc4_in(pc4_ID), .regA_in(regA_ID), .regB_in(regB_ID), .regC_in(imm_ID), + .rs1_in(rs1_ID), .rs2_in(rs2_ID), .rd_in(rd_ID), + .pc4_out(pc4_EX), .regA_out(regA_EX), .regB_out(regB_EX), .regC_out(imm_EX), + .rs1_out(rs1_EX), .rs2_out(rs2_EX), .rd_out(rd_EX) + ); -alu alu_inst( - .A(reg_r1), - .B(alu_b), - .sel(alu_op), - .R(alu_out) -); -// ======================================== + // ========================================== + // ETAPA EX + // ========================================== + wire [1:0] EX_ForwardA, EX_ForwardB; + wire [31:0] alu_A, alu_B_temp, alu_B, alu_res_EX_raw, alu_res_EX; + wire alu_zero_EX; + wire [31:0] alu_res_ME; -// = DMEM ================================= -wire [31:0] dmem_read_data; + forwarding u_forwarding ( + .ID_EX_Rs1(rs1_EX), .ID_EX_Rs2(rs2_EX), .IF_ID_Rs1(rs1_ID), .IF_ID_Rs2(rs2_ID), + .EX_ME_Rd(rd_ME), .EX_ME_RegWrite(we_reg_ME), .ME_WB_Rd(rd_WB), .ME_WB_RegWrite(we_reg_WB), + .EX_ForwardA(EX_ForwardA), .EX_ForwardB(EX_ForwardB), + .ID_ForwardA(ID_ForwardA), .ID_ForwardB(ID_ForwardB) + ); -dmem dmem_inst( - .clk(clk), - .we(we_mem), - .address(alu_out), - .write_data(reg_r2), - .read_data(dmem_read_data) -); + assign alu_A = (EX_ForwardA == 2'b10) ? alu_res_ME : (EX_ForwardA == 2'b01) ? write_data_WB : regA_EX; + assign alu_B_temp = (EX_ForwardB == 2'b10) ? alu_res_ME : (EX_ForwardB == 2'b01) ? write_data_WB : regB_EX; + assign alu_B = (alu_src_EX) ? imm_EX : alu_B_temp; -assign mem_data = dmem_read_data; -// ======================================== + alu u_alu ( + .A(alu_A), .B(alu_B), .sel(alu_op_EX), .R(alu_res_EX_raw), .zero(alu_zero_EX) + ); -// PC increment -assign pc_next = branch_taken ? (pc_curr + imm_out) : (pc_curr + 4); + // MUX post-ALU para guardar PC+4 si es un salto (JAL/JALR) + assign alu_res_EX = jump_EX ? pc4_EX : alu_res_EX_raw; -endmodule + // ========================================== + // REGISTRO EX/ME + // ========================================== + wire [31:0] regB_ME, pc4_ME; + wire [4:0] rd_ME; + wire we_reg_ME, we_mem_ME, mem_to_reg_ME; + + ex_me u_ex_me ( + .clk(clk), .rst(rst), + .we_reg_in(we_reg_EX), .we_mem_in(we_mem_EX), .mem_to_reg_in(mem_to_reg_EX), + .we_reg_out(we_reg_ME), .we_mem_out(we_mem_ME), .mem_to_reg_out(mem_to_reg_ME), + .alu_in(alu_res_EX), .regB_in(alu_B_temp), .pc4_in(pc4_EX), .rd_in(rd_EX), + .alu_out(alu_res_ME), .regB_out(regB_ME), .pc4_out(pc4_ME), .rd_out(rd_ME) + ); + + // ========================================== + // ETAPA ME & WB + // ========================================== + wire [31:0] mem_data_ME; + dmem u_dmem ( + .clk(clk), .we(we_mem_ME), .address(alu_res_ME), + .write_data(regB_ME), .read_data(mem_data_ME) + ); + + wire [31:0] alu_res_WB, mem_data_WB, pc4_WB; + wire [4:0] rd_WB; + wire we_reg_WB, mem_to_reg_WB; + + me_wb u_me_wb ( + .clk(clk), .rst(rst), + .we_reg_in(we_reg_ME), .mem_to_reg_in(mem_to_reg_ME), + .we_reg_out(we_reg_WB), .mem_to_reg_out(mem_to_reg_WB), + .alu_in(alu_res_ME), .mem_data_in(mem_data_ME), .pc4_in(pc4_ME), .rd_in(rd_ME), + .alu_out(alu_res_WB), .mem_data_out(mem_data_WB), .pc4_out(pc4_WB), .rd_out(rd_WB) + ); + + assign write_data_WB = (mem_to_reg_WB) ? mem_data_WB : alu_res_WB; + + // ========================================== + // DEBUG + // ========================================== + assign leds[0] = Branch_Taken; // se enciende cuando hay salto + assign leds[1] = ID_EX_Clr; // se enciende en bloqueos + + assign debug = { + alu_res_EX[15:0], + rd_WB, + rs1_ID, + npc_IF[7:2] + }; + +endmodule \ No newline at end of file diff --git a/riscv-ac.xpr b/riscv-ac.xpr index 7aa4913..0157eac 100644 --- a/riscv-ac.xpr +++ b/riscv-ac.xpr @@ -4,7 +4,7 @@ - +