From 54cccd419fa8f70152cdc221016edb75a818e15d Mon Sep 17 00:00:00 2001 From: goochey Date: Sat, 16 Feb 2019 17:40:18 -0500 Subject: [PATCH] Lots Lots --- lab2CA.cache/wt/webtalk_pa.xml | 81 +- lab2CA.runs/.jobs/vrs_config_17.xml | 11 + lab2CA.runs/.jobs/vrs_config_18.xml | 11 + lab2CA.runs/.jobs/vrs_config_19.xml | 11 + lab2CA.runs/.jobs/vrs_config_20.xml | 8 + lab2CA.runs/impl_1/FetchUnit.tcl | 153 +++ lab2CA.runs/impl_1/FetchUnit.vdi | 451 +++++++++ .../impl_1/FetchUnit_bus_skew_routed.pb | Bin 0 -> 30 bytes .../impl_1/FetchUnit_bus_skew_routed.rpt | 15 + .../FetchUnit_clock_utilization_routed.rpt | 154 +++ .../impl_1/FetchUnit_control_sets_placed.rpt | 65 ++ lab2CA.runs/impl_1/FetchUnit_drc_opted.pb | Bin 0 -> 37 bytes lab2CA.runs/impl_1/FetchUnit_drc_opted.rpt | 61 ++ lab2CA.runs/impl_1/FetchUnit_drc_routed.pb | Bin 0 -> 37 bytes lab2CA.runs/impl_1/FetchUnit_drc_routed.rpt | 61 ++ lab2CA.runs/impl_1/FetchUnit_io_placed.rpt | 526 ++++++++++ .../FetchUnit_methodology_drc_routed.pb | Bin 0 -> 52 bytes .../FetchUnit_methodology_drc_routed.rpt | 80 ++ lab2CA.runs/impl_1/FetchUnit_opt.dcp | Bin 0 -> 14153 bytes lab2CA.runs/impl_1/FetchUnit_placed.dcp | Bin 0 -> 131858 bytes lab2CA.runs/impl_1/FetchUnit_power_routed.rpt | 145 +++ .../impl_1/FetchUnit_power_summary_routed.pb | Bin 0 -> 722 bytes lab2CA.runs/impl_1/FetchUnit_route_status.pb | Bin 0 -> 43 bytes lab2CA.runs/impl_1/FetchUnit_route_status.rpt | 11 + lab2CA.runs/impl_1/FetchUnit_routed.dcp | Bin 0 -> 137423 bytes .../impl_1/FetchUnit_timing_summary_routed.pb | 2 + .../FetchUnit_timing_summary_routed.rpt | 173 ++++ .../impl_1/FetchUnit_utilization_placed.pb | Bin 0 -> 289 bytes .../impl_1/FetchUnit_utilization_placed.rpt | 208 ++++ lab2CA.runs/impl_1/gen_run.xml | 134 +++ lab2CA.runs/impl_1/htr.txt | 9 + lab2CA.runs/impl_1/init_design.pb | Bin 0 -> 1623 bytes lab2CA.runs/impl_1/opt_design.pb | Bin 0 -> 10568 bytes lab2CA.runs/impl_1/place_design.pb | Bin 0 -> 11931 bytes lab2CA.runs/impl_1/route_design.pb | Bin 0 -> 12048 bytes lab2CA.runs/impl_1/vivado.jou | 12 + lab2CA.runs/impl_1/vivado.pb | Bin 0 -> 149 bytes lab2CA.runs/synth_1/FetchUnit.dcp | Bin 13983 -> 13821 bytes lab2CA.runs/synth_1/FetchUnit.tcl | 1 + lab2CA.runs/synth_1/FetchUnit.vds | 78 +- .../synth_1/FetchUnit_utilization_synth.rpt | 2 +- lab2CA.runs/synth_1/gen_run.xml | 3 +- lab2CA.runs/synth_1/vivado.jou | 4 +- lab2CA.runs/synth_1/vivado.pb | Bin 27090 -> 26826 bytes lab2CA.sim/sim_1/behav/xsim/alu_tb.tcl | 11 + lab2CA.sim/sim_1/behav/xsim/alu_tb_vlog.prj | 10 + lab2CA.sim/sim_1/behav/xsim/regFile_tb.tcl | 11 + .../sim_1/behav/xsim/regFile_tb_vlog.prj | 10 + lab2CA.sim/sim_1/behav/xsim/webtalk.jou | 8 +- ...20.backup.jou => webtalk_12116.backup.jou} | 8 +- ...56.backup.jou => webtalk_14280.backup.jou} | 8 +- ...392.backup.jou => webtalk_5360.backup.jou} | 8 +- ...276.backup.jou => webtalk_5680.backup.jou} | 8 +- lab2CA.sim/sim_1/behav/xsim/xelab.pb | Bin 2008 -> 1748 bytes .../xsim.dir/alu_tb_behav/Compile_Options.txt | 1 + .../alu_tb_behav/TempBreakPointFile.txt | 1 + .../xsim/xsim.dir/alu_tb_behav/obj/xsim_1.c | 119 +++ .../webtalk/usage_statistics_ext_xsim.xml | 44 + .../alu_tb_behav/webtalk/xsim_webtalk.tcl | 42 + .../behav/xsim/xsim.dir/alu_tb_behav/xsim.mem | Bin 0 -> 8546 bytes .../regFile_tb_behav/Compile_Options.txt | 1 + .../regFile_tb_behav/TempBreakPointFile.txt | 1 + .../xsim.dir/regFile_tb_behav/obj/xsim_1.c | 124 +++ .../webtalk/usage_statistics_ext_xsim.xml | 44 + .../regFile_tb_behav/webtalk/xsim_webtalk.tcl | 42 + .../xsim/xsim.dir/regFile_tb_behav/xsim.mem | Bin 0 -> 4296 bytes .../webtalk/xsim_webtalk.tcl | 28 +- .../xsim/xsim.dir/register_tb_behav/xsim.mem | Bin 3190 -> 3218 bytes lab2CA.sim/sim_1/behav/xsim/xvlog.pb | Bin 2134 -> 435 bytes lab2CA.sim/sim_1/impl/func/xsim/alu_tb.tcl | 11 + .../sim_1/impl/func/xsim/alu_tb_func_impl.v | 927 +++++++++++++++++ .../sim_1/impl/func/xsim/alu_tb_vlog.prj | 8 + lab2CA.sim/sim_1/impl/func/xsim/webtalk.jou | 12 + lab2CA.sim/sim_1/impl/func/xsim/xelab.pb | Bin 0 -> 3142 bytes .../alu_tb_func_impl/Compile_Options.txt | 1 + .../alu_tb_func_impl/TempBreakPointFile.txt | 1 + .../xsim.dir/alu_tb_func_impl/obj/xsim_1.c | 119 +++ .../webtalk/usage_statistics_ext_xsim.xml | 54 + .../xsim/xsim.dir/alu_tb_func_impl/xsim.mem | Bin 0 -> 8605 bytes lab2CA.sim/sim_1/impl/func/xsim/xvlog.pb | Bin 0 -> 3680 bytes lab2CA.sim/sim_1/impl/timing/xsim/alu_tb.tcl | 11 + .../sim_1/impl/timing/xsim/alu_tb_time_impl.v | 931 ++++++++++++++++++ .../sim_1/impl/timing/xsim/alu_tb_vlog.prj | 8 + .../sim_1/impl/timing/xsim/regFile_tb.tcl | 11 + .../impl/timing/xsim/regFile_tb_time_impl.v | 463 +++++++++ .../impl/timing/xsim/regFile_tb_vlog.prj | 8 + lab2CA.sim/sim_1/impl/timing/xsim/webtalk.jou | 14 +- .../impl/timing/xsim/webtalk_12684.backup.jou | 12 + .../impl/timing/xsim/webtalk_17624.backup.jou | 12 + .../impl/timing/xsim/webtalk_6004.backup.jou | 12 + lab2CA.sim/sim_1/impl/timing/xsim/xelab.pb | Bin 1977 -> 1826 bytes .../alu_tb_time_impl/Compile_Options.txt | 1 + .../alu_tb_time_impl/TempBreakPointFile.txt | 1 + .../xsim.dir/alu_tb_time_impl/obj/xsim_1.c | 119 +++ .../webtalk/usage_statistics_ext_xsim.xml | 44 + .../alu_tb_time_impl/webtalk/xsim_webtalk.tcl | 42 + .../xsim/xsim.dir/alu_tb_time_impl/xsim.mem | Bin 0 -> 8557 bytes .../regFile_tb_time_impl/Compile_Options.txt | 1 + .../TempBreakPointFile.txt | 1 + .../regFile_tb_time_impl/obj/xsim_1.c | 124 +++ .../webtalk/usage_statistics_ext_xsim.xml | 54 + .../xsim.dir/regFile_tb_time_impl/xsim.mem | Bin 0 -> 4303 bytes lab2CA.sim/sim_1/impl/timing/xsim/xvlog.pb | Bin 447 -> 3248 bytes lab2CA.srcs/sources_1/new/ALU.v | 45 + lab2CA.srcs/sources_1/new/BasicModules.v | 2 +- lab2CA.srcs/sources_1/new/RegFile.v | 79 ++ lab2CA.xpr | 26 +- 107 files changed, 6032 insertions(+), 121 deletions(-) create mode 100644 lab2CA.runs/.jobs/vrs_config_17.xml create mode 100644 lab2CA.runs/.jobs/vrs_config_18.xml create mode 100644 lab2CA.runs/.jobs/vrs_config_19.xml create mode 100644 lab2CA.runs/.jobs/vrs_config_20.xml create mode 100644 lab2CA.runs/impl_1/FetchUnit.tcl create mode 100644 lab2CA.runs/impl_1/FetchUnit.vdi create mode 100644 lab2CA.runs/impl_1/FetchUnit_bus_skew_routed.pb create mode 100644 lab2CA.runs/impl_1/FetchUnit_bus_skew_routed.rpt create mode 100644 lab2CA.runs/impl_1/FetchUnit_clock_utilization_routed.rpt create mode 100644 lab2CA.runs/impl_1/FetchUnit_control_sets_placed.rpt create mode 100644 lab2CA.runs/impl_1/FetchUnit_drc_opted.pb create mode 100644 lab2CA.runs/impl_1/FetchUnit_drc_opted.rpt create mode 100644 lab2CA.runs/impl_1/FetchUnit_drc_routed.pb create mode 100644 lab2CA.runs/impl_1/FetchUnit_drc_routed.rpt create mode 100644 lab2CA.runs/impl_1/FetchUnit_io_placed.rpt create mode 100644 lab2CA.runs/impl_1/FetchUnit_methodology_drc_routed.pb create mode 100644 lab2CA.runs/impl_1/FetchUnit_methodology_drc_routed.rpt create mode 100644 lab2CA.runs/impl_1/FetchUnit_opt.dcp create mode 100644 lab2CA.runs/impl_1/FetchUnit_placed.dcp create mode 100644 lab2CA.runs/impl_1/FetchUnit_power_routed.rpt create mode 100644 lab2CA.runs/impl_1/FetchUnit_power_summary_routed.pb create mode 100644 lab2CA.runs/impl_1/FetchUnit_route_status.pb create mode 100644 lab2CA.runs/impl_1/FetchUnit_route_status.rpt create mode 100644 lab2CA.runs/impl_1/FetchUnit_routed.dcp create mode 100644 lab2CA.runs/impl_1/FetchUnit_timing_summary_routed.pb create mode 100644 lab2CA.runs/impl_1/FetchUnit_timing_summary_routed.rpt create mode 100644 lab2CA.runs/impl_1/FetchUnit_utilization_placed.pb create mode 100644 lab2CA.runs/impl_1/FetchUnit_utilization_placed.rpt create mode 100644 lab2CA.runs/impl_1/gen_run.xml create mode 100644 lab2CA.runs/impl_1/htr.txt create mode 100644 lab2CA.runs/impl_1/init_design.pb create mode 100644 lab2CA.runs/impl_1/opt_design.pb create mode 100644 lab2CA.runs/impl_1/place_design.pb create mode 100644 lab2CA.runs/impl_1/route_design.pb create mode 100644 lab2CA.runs/impl_1/vivado.jou create mode 100644 lab2CA.runs/impl_1/vivado.pb create mode 100644 lab2CA.sim/sim_1/behav/xsim/alu_tb.tcl create mode 100644 lab2CA.sim/sim_1/behav/xsim/alu_tb_vlog.prj create mode 100644 lab2CA.sim/sim_1/behav/xsim/regFile_tb.tcl create mode 100644 lab2CA.sim/sim_1/behav/xsim/regFile_tb_vlog.prj rename lab2CA.sim/sim_1/behav/xsim/{webtalk_1120.backup.jou => webtalk_12116.backup.jou} (71%) rename lab2CA.sim/sim_1/behav/xsim/{webtalk_6756.backup.jou => webtalk_14280.backup.jou} (73%) rename lab2CA.sim/sim_1/behav/xsim/{webtalk_13392.backup.jou => webtalk_5360.backup.jou} (73%) rename lab2CA.sim/sim_1/behav/xsim/{webtalk_1276.backup.jou => webtalk_5680.backup.jou} (71%) create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/Compile_Options.txt create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/TempBreakPointFile.txt create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/obj/xsim_1.c create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/usage_statistics_ext_xsim.xml create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/xsim_webtalk.tcl create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/xsim.mem create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/Compile_Options.txt create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/TempBreakPointFile.txt create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/obj/xsim_1.c create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/usage_statistics_ext_xsim.xml create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/xsim_webtalk.tcl create mode 100644 lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/xsim.mem create mode 100644 lab2CA.sim/sim_1/impl/func/xsim/alu_tb.tcl create mode 100644 lab2CA.sim/sim_1/impl/func/xsim/alu_tb_func_impl.v create mode 100644 lab2CA.sim/sim_1/impl/func/xsim/alu_tb_vlog.prj create mode 100644 lab2CA.sim/sim_1/impl/func/xsim/webtalk.jou create mode 100644 lab2CA.sim/sim_1/impl/func/xsim/xelab.pb create mode 100644 lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/Compile_Options.txt create mode 100644 lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/TempBreakPointFile.txt create mode 100644 lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/obj/xsim_1.c create mode 100644 lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/webtalk/usage_statistics_ext_xsim.xml create mode 100644 lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/xsim.mem create mode 100644 lab2CA.sim/sim_1/impl/func/xsim/xvlog.pb create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/alu_tb.tcl create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/alu_tb_time_impl.v create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/alu_tb_vlog.prj create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb.tcl create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb_time_impl.v create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb_vlog.prj create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/webtalk_12684.backup.jou create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/webtalk_17624.backup.jou create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/webtalk_6004.backup.jou create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/Compile_Options.txt create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/TempBreakPointFile.txt create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/obj/xsim_1.c create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/usage_statistics_ext_xsim.xml create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/xsim_webtalk.tcl create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/xsim.mem create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/Compile_Options.txt create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/TempBreakPointFile.txt create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/obj/xsim_1.c create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/webtalk/usage_statistics_ext_xsim.xml create mode 100644 lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/xsim.mem diff --git a/lab2CA.cache/wt/webtalk_pa.xml b/lab2CA.cache/wt/webtalk_pa.xml index 04ee3a5..5991027 100644 --- a/lab2CA.cache/wt/webtalk_pa.xml +++ b/lab2CA.cache/wt/webtalk_pa.xml @@ -3,10 +3,10 @@ - +
- +
@@ -19,47 +19,72 @@ This means code written to parse this file will need to be revisited each subseq - + + - - + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + + + + + + - - - - - + + + + + + + + + - - + + + + - - - - - + + +
diff --git a/lab2CA.runs/.jobs/vrs_config_17.xml b/lab2CA.runs/.jobs/vrs_config_17.xml new file mode 100644 index 0000000..b013dc9 --- /dev/null +++ b/lab2CA.runs/.jobs/vrs_config_17.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/lab2CA.runs/.jobs/vrs_config_18.xml b/lab2CA.runs/.jobs/vrs_config_18.xml new file mode 100644 index 0000000..b013dc9 --- /dev/null +++ b/lab2CA.runs/.jobs/vrs_config_18.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/lab2CA.runs/.jobs/vrs_config_19.xml b/lab2CA.runs/.jobs/vrs_config_19.xml new file mode 100644 index 0000000..b013dc9 --- /dev/null +++ b/lab2CA.runs/.jobs/vrs_config_19.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/lab2CA.runs/.jobs/vrs_config_20.xml b/lab2CA.runs/.jobs/vrs_config_20.xml new file mode 100644 index 0000000..ef5f93d --- /dev/null +++ b/lab2CA.runs/.jobs/vrs_config_20.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/lab2CA.runs/impl_1/FetchUnit.tcl b/lab2CA.runs/impl_1/FetchUnit.tcl new file mode 100644 index 0000000..39826c5 --- /dev/null +++ b/lab2CA.runs/impl_1/FetchUnit.tcl @@ -0,0 +1,153 @@ +# +# Report generation script generated by Vivado +# + +proc create_report { reportName command } { + set status "." + append status $reportName ".fail" + if { [file exists $status] } { + eval file delete [glob $status] + } + send_msg_id runtcl-4 info "Executing : $command" + set retval [eval catch { $command } msg] + if { $retval != 0 } { + set fp [open $status w] + close $fp + send_msg_id runtcl-5 warning "$msg" + } +} +proc start_step { step } { + set stopFile ".stop.rst" + if {[file isfile .stop.rst]} { + puts "" + puts "*** Halting run - EA reset detected ***" + puts "" + puts "" + return -code error + } + set beginFile ".$step.begin.rst" + set platform "$::tcl_platform(platform)" + set user "$::tcl_platform(user)" + set pid [pid] + set host "" + if { [string equal $platform unix] } { + if { [info exist ::env(HOSTNAME)] } { + set host $::env(HOSTNAME) + } + } else { + if { [info exist ::env(COMPUTERNAME)] } { + set host $::env(COMPUTERNAME) + } + } + set ch [open $beginFile w] + puts $ch "" + puts $ch "" + puts $ch " " + puts $ch " " + puts $ch "" + close $ch +} + +proc end_step { step } { + set endFile ".$step.end.rst" + set ch [open $endFile w] + close $ch +} + +proc step_failed { step } { + set endFile ".$step.error.rst" + set ch [open $endFile w] + close $ch +} + +set_msg_config -id {Common 17-41} -limit 10000000 +set_msg_config -id {Synth 8-256} -limit 10000 +set_msg_config -id {Synth 8-638} -limit 10000 + +start_step init_design +set ACTIVE_STEP init_design +set rc [catch { + create_msg_db init_design.pb + create_project -in_memory -part xc7k160tifbg484-2L + set_property design_mode GateLvl [current_fileset] + set_param project.singleFileAddWarning.threshold 0 + set_property webtalk.parent_dir C:/Users/ecelab/ECE3570-Lab/lab2CA.cache/wt [current_project] + set_property parent.project_path C:/Users/ecelab/ECE3570-Lab/lab2CA.xpr [current_project] + set_property ip_output_repo C:/Users/ecelab/ECE3570-Lab/lab2CA.cache/ip [current_project] + set_property ip_cache_permissions {read write} [current_project] + add_files -quiet C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/synth_1/FetchUnit.dcp + link_design -top FetchUnit -part xc7k160tifbg484-2L + close_msg_db -file init_design.pb +} RESULT] +if {$rc} { + step_failed init_design + return -code error $RESULT +} else { + end_step init_design + unset ACTIVE_STEP +} + +start_step opt_design +set ACTIVE_STEP opt_design +set rc [catch { + create_msg_db opt_design.pb + opt_design + write_checkpoint -force FetchUnit_opt.dcp + create_report "impl_1_opt_report_drc_0" "report_drc -file FetchUnit_drc_opted.rpt -pb FetchUnit_drc_opted.pb -rpx FetchUnit_drc_opted.rpx" + close_msg_db -file opt_design.pb +} RESULT] +if {$rc} { + step_failed opt_design + return -code error $RESULT +} else { + end_step opt_design + unset ACTIVE_STEP +} + +start_step place_design +set ACTIVE_STEP place_design +set rc [catch { + create_msg_db place_design.pb + if { [llength [get_debug_cores -quiet] ] > 0 } { + implement_debug_core + } + place_design + write_checkpoint -force FetchUnit_placed.dcp + create_report "impl_1_place_report_io_0" "report_io -file FetchUnit_io_placed.rpt" + create_report "impl_1_place_report_utilization_0" "report_utilization -file FetchUnit_utilization_placed.rpt -pb FetchUnit_utilization_placed.pb" + create_report "impl_1_place_report_control_sets_0" "report_control_sets -verbose -file FetchUnit_control_sets_placed.rpt" + close_msg_db -file place_design.pb +} RESULT] +if {$rc} { + step_failed place_design + return -code error $RESULT +} else { + end_step place_design + unset ACTIVE_STEP +} + +start_step route_design +set ACTIVE_STEP route_design +set rc [catch { + create_msg_db route_design.pb + route_design + write_checkpoint -force FetchUnit_routed.dcp + create_report "impl_1_route_report_drc_0" "report_drc -file FetchUnit_drc_routed.rpt -pb FetchUnit_drc_routed.pb -rpx FetchUnit_drc_routed.rpx" + create_report "impl_1_route_report_methodology_0" "report_methodology -file FetchUnit_methodology_drc_routed.rpt -pb FetchUnit_methodology_drc_routed.pb -rpx FetchUnit_methodology_drc_routed.rpx" + create_report "impl_1_route_report_power_0" "report_power -file FetchUnit_power_routed.rpt -pb FetchUnit_power_summary_routed.pb -rpx FetchUnit_power_routed.rpx" + create_report "impl_1_route_report_route_status_0" "report_route_status -file FetchUnit_route_status.rpt -pb FetchUnit_route_status.pb" + create_report "impl_1_route_report_timing_summary_0" "report_timing_summary -max_paths 10 -file FetchUnit_timing_summary_routed.rpt -pb FetchUnit_timing_summary_routed.pb -rpx FetchUnit_timing_summary_routed.rpx -warn_on_violation " + create_report "impl_1_route_report_incremental_reuse_0" "report_incremental_reuse -file FetchUnit_incremental_reuse_routed.rpt" + create_report "impl_1_route_report_clock_utilization_0" "report_clock_utilization -file FetchUnit_clock_utilization_routed.rpt" + create_report "impl_1_route_report_bus_skew_0" "report_bus_skew -warn_on_violation -file FetchUnit_bus_skew_routed.rpt -pb FetchUnit_bus_skew_routed.pb -rpx FetchUnit_bus_skew_routed.rpx" + close_msg_db -file route_design.pb +} RESULT] +if {$rc} { + write_checkpoint -force FetchUnit_routed_error.dcp + step_failed route_design + return -code error $RESULT +} else { + end_step route_design + unset ACTIVE_STEP +} + diff --git a/lab2CA.runs/impl_1/FetchUnit.vdi b/lab2CA.runs/impl_1/FetchUnit.vdi new file mode 100644 index 0000000..6d11f21 --- /dev/null +++ b/lab2CA.runs/impl_1/FetchUnit.vdi @@ -0,0 +1,451 @@ +#----------------------------------------------------------- +# Vivado v2018.3 (64-bit) +# SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 +# IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 +# Start of session at: Sat Feb 16 17:35:59 2019 +# Process ID: 3548 +# Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1 +# Command line: vivado.exe -log FetchUnit.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source FetchUnit.tcl -notrace +# Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1/FetchUnit.vdi +# Journal file: C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1\vivado.jou +#----------------------------------------------------------- +source FetchUnit.tcl -notrace +Command: link_design -top FetchUnit -part xc7k160tifbg484-2L +Design is defaulting to srcset: sources_1 +Design is defaulting to constrset: constrs_1 +INFO: [Project 1-479] Netlist was created with Vivado 2018.3 +INFO: [Device 21-403] Loading part xc7k160tifbg484-2L +INFO: [Project 1-570] Preparing netlist for logic optimization +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 578.453 ; gain = 0.000 +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +4 Infos, 0 Warnings, 0 Critical Warnings and 0 Errors encountered. +link_design completed successfully +link_design: Time (s): cpu = 00:00:06 ; elapsed = 00:00:16 . Memory (MB): peak = 584.031 ; gain = 333.246 +Command: opt_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7k160ti' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7k160ti' +Running DRC as a precondition to command opt_design + +Starting DRC Task +INFO: [DRC 23-27] Running DRC with 2 threads +INFO: [Project 1-461] DRC finished with 0 Errors +INFO: [Project 1-462] Please refer to the DRC report (report_drc) for more information. + +Time (s): cpu = 00:00:01 ; elapsed = 00:00:00.760 . Memory (MB): peak = 598.289 ; gain = 14.258 + +Starting Cache Timing Information Task +INFO: [Timing 38-35] Done setting XDC timing constraints. +Ending Cache Timing Information Task | Checksum: 3da38fa8 + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:10 . Memory (MB): peak = 1160.113 ; gain = 561.824 + +Starting Logic Optimization Task + +Phase 1 Retarget +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Opt 31-49] Retargeted 0 cell(s). +Phase 1 Retarget | Checksum: 3da38fa8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.054 . Memory (MB): peak = 1256.469 ; gain = 0.000 +INFO: [Opt 31-389] Phase Retarget created 0 cells and removed 0 cells + +Phase 2 Constant propagation +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Phase 2 Constant propagation | Checksum: 3da38fa8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.055 . Memory (MB): peak = 1256.469 ; gain = 0.000 +INFO: [Opt 31-389] Phase Constant propagation created 0 cells and removed 0 cells + +Phase 3 Sweep +Phase 3 Sweep | Checksum: 3da38fa8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.057 . Memory (MB): peak = 1256.469 ; gain = 0.000 +INFO: [Opt 31-389] Phase Sweep created 0 cells and removed 0 cells + +Phase 4 BUFG optimization +Phase 4 BUFG optimization | Checksum: 3da38fa8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.059 . Memory (MB): peak = 1256.469 ; gain = 0.000 +INFO: [Opt 31-662] Phase BUFG optimization created 0 cells of which 0 are BUFGs and removed 0 cells. + +Phase 5 Shift Register Optimization +Phase 5 Shift Register Optimization | Checksum: 3da38fa8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.095 . Memory (MB): peak = 1256.469 ; gain = 0.000 +INFO: [Opt 31-389] Phase Shift Register Optimization created 0 cells and removed 0 cells + +Phase 6 Post Processing Netlist +Phase 6 Post Processing Netlist | Checksum: 3da38fa8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.096 . Memory (MB): peak = 1256.469 ; gain = 0.000 +INFO: [Opt 31-389] Phase Post Processing Netlist created 0 cells and removed 0 cells +Opt_design Change Summary +========================= + + +------------------------------------------------------------------------------------------------------------------------- +| Phase | #Cells created | #Cells Removed | #Constrained objects preventing optimizations | +------------------------------------------------------------------------------------------------------------------------- +| Retarget | 0 | 0 | 0 | +| Constant propagation | 0 | 0 | 0 | +| Sweep | 0 | 0 | 0 | +| BUFG optimization | 0 | 0 | 0 | +| Shift Register Optimization | 0 | 0 | 0 | +| Post Processing Netlist | 0 | 0 | 0 | +------------------------------------------------------------------------------------------------------------------------- + + + +Starting Connectivity Check Task + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.001 . Memory (MB): peak = 1256.469 ; gain = 0.000 +Ending Logic Optimization Task | Checksum: 3da38fa8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.098 . Memory (MB): peak = 1256.469 ; gain = 0.000 + +Starting Power Optimization Task +INFO: [Pwropt 34-132] Skipping clock gating for clocks with a period < 2.00 ns. +Ending Power Optimization Task | Checksum: 3da38fa8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.009 . Memory (MB): peak = 1256.469 ; gain = 0.000 + +Starting Final Cleanup Task +Ending Final Cleanup Task | Checksum: 3da38fa8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1256.469 ; gain = 0.000 + +Starting Netlist Obfuscation Task +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1256.469 ; gain = 0.000 +Ending Netlist Obfuscation Task | Checksum: 3da38fa8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1256.469 ; gain = 0.000 +INFO: [Common 17-83] Releasing license: Implementation +20 Infos, 0 Warnings, 0 Critical Warnings and 0 Errors encountered. +opt_design completed successfully +opt_design: Time (s): cpu = 00:00:12 ; elapsed = 00:00:12 . Memory (MB): peak = 1256.469 ; gain = 672.438 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1256.469 ; gain = 0.000 +WARNING: [Constraints 18-5210] No constraints selected for write. +Resolution: This message can indicate that there are no constraints for the design, or it can indicate that the used_in flags are set such that the constraints are ignored. This later case is used when running synth_design to not write synthesis constraints to the resulting checkpoint. Instead, project constraints are read when the synthesized design is opened. +INFO: [Common 17-1381] The checkpoint 'C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1/FetchUnit_opt.dcp' has been generated. +INFO: [runtcl-4] Executing : report_drc -file FetchUnit_drc_opted.rpt -pb FetchUnit_drc_opted.pb -rpx FetchUnit_drc_opted.rpx +Command: report_drc -file FetchUnit_drc_opted.rpt -pb FetchUnit_drc_opted.pb -rpx FetchUnit_drc_opted.rpx +INFO: [IP_Flow 19-234] Refreshing IP repositories +INFO: [IP_Flow 19-1704] No user IP repositories specified +INFO: [IP_Flow 19-2313] Loaded Vivado IP repository 'C:/Xilinx/Vivado/2018.3/data/ip'. +INFO: [DRC 23-27] Running DRC with 2 threads +INFO: [Coretcl 2-168] The results of DRC are in file C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1/FetchUnit_drc_opted.rpt. +report_drc completed successfully +Command: place_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7k160ti' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7k160ti' +INFO: [DRC 23-27] Running DRC with 2 threads +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. +Running DRC as a precondition to command place_design +INFO: [DRC 23-27] Running DRC with 2 threads +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + +Starting Placer Task +INFO: [Place 30-611] Multithreading enabled for place_design using a maximum of 2 CPUs + +Phase 1 Placer Initialization + +Phase 1.1 Placer Initialization Netlist Sorting +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1256.469 ; gain = 0.000 +Phase 1.1 Placer Initialization Netlist Sorting | Checksum: 2dee624c + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.005 . Memory (MB): peak = 1256.469 ; gain = 0.000 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1256.469 ; gain = 0.000 + +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device +INFO: [Timing 38-35] Done setting XDC timing constraints. +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device | Checksum: c3ac8419 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:01 . Memory (MB): peak = 1260.031 ; gain = 3.563 + +Phase 1.3 Build Placer Netlist Model +Phase 1.3 Build Placer Netlist Model | Checksum: 17eb8b195 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:01 . Memory (MB): peak = 1260.031 ; gain = 3.563 + +Phase 1.4 Constrain Clocks/Macros +Phase 1.4 Constrain Clocks/Macros | Checksum: 17eb8b195 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:01 . Memory (MB): peak = 1260.031 ; gain = 3.563 +Phase 1 Placer Initialization | Checksum: 17eb8b195 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:01 . Memory (MB): peak = 1260.031 ; gain = 3.563 + +Phase 2 Global Placement + +Phase 2.1 Floorplanning +Phase 2.1 Floorplanning | Checksum: 17eb8b195 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:01 . Memory (MB): peak = 1261.789 ; gain = 5.320 +WARNING: [Place 46-29] place_design is not in timing mode. Skip physical synthesis in placer +Phase 2 Global Placement | Checksum: c93401db + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1270.621 ; gain = 14.152 + +Phase 3 Detail Placement + +Phase 3.1 Commit Multi Column Macros +Phase 3.1 Commit Multi Column Macros | Checksum: c93401db + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1270.621 ; gain = 14.152 + +Phase 3.2 Commit Most Macros & LUTRAMs +Phase 3.2 Commit Most Macros & LUTRAMs | Checksum: 13d5628d5 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1270.621 ; gain = 14.152 + +Phase 3.3 Area Swap Optimization +Phase 3.3 Area Swap Optimization | Checksum: 1566ae30c + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1270.621 ; gain = 14.152 + +Phase 3.4 Pipeline Register Optimization +Phase 3.4 Pipeline Register Optimization | Checksum: 1566ae30c + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1270.621 ; gain = 14.152 + +Phase 3.5 Small Shape Detail Placement +Phase 3.5 Small Shape Detail Placement | Checksum: 179d3e6f9 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1280.449 ; gain = 23.980 + +Phase 3.6 Re-assign LUT pins +Phase 3.6 Re-assign LUT pins | Checksum: 179d3e6f9 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1280.449 ; gain = 23.980 + +Phase 3.7 Pipeline Register Optimization +Phase 3.7 Pipeline Register Optimization | Checksum: 179d3e6f9 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1280.449 ; gain = 23.980 +Phase 3 Detail Placement | Checksum: 179d3e6f9 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1280.449 ; gain = 23.980 + +Phase 4 Post Placement Optimization and Clean-Up + +Phase 4.1 Post Commit Optimization +Phase 4.1 Post Commit Optimization | Checksum: 179d3e6f9 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1280.449 ; gain = 23.980 + +Phase 4.2 Post Placement Cleanup +Phase 4.2 Post Placement Cleanup | Checksum: 179d3e6f9 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1280.449 ; gain = 23.980 + +Phase 4.3 Placer Reporting +Phase 4.3 Placer Reporting | Checksum: 179d3e6f9 + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1280.449 ; gain = 23.980 + +Phase 4.4 Final Placement Cleanup +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1280.449 ; gain = 0.000 +Phase 4.4 Final Placement Cleanup | Checksum: 1f8cde3fa + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1280.449 ; gain = 23.980 +Phase 4 Post Placement Optimization and Clean-Up | Checksum: 1f8cde3fa + +Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1280.449 ; gain = 23.980 +Ending Placer Task | Checksum: 12070b279 + +Time (s): cpu = 00:00:03 ; elapsed = 00:00:02 . Memory (MB): peak = 1280.449 ; gain = 23.980 +INFO: [Common 17-83] Releasing license: Implementation +37 Infos, 2 Warnings, 0 Critical Warnings and 0 Errors encountered. +place_design completed successfully +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1280.449 ; gain = 0.000 +WARNING: [Constraints 18-5210] No constraints selected for write. +Resolution: This message can indicate that there are no constraints for the design, or it can indicate that the used_in flags are set such that the constraints are ignored. This later case is used when running synth_design to not write synthesis constraints to the resulting checkpoint. Instead, project constraints are read when the synthesized design is opened. +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.094 . Memory (MB): peak = 1280.449 ; gain = 0.000 +INFO: [Common 17-1381] The checkpoint 'C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1/FetchUnit_placed.dcp' has been generated. +INFO: [runtcl-4] Executing : report_io -file FetchUnit_io_placed.rpt +report_io: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.056 . Memory (MB): peak = 1280.449 ; gain = 0.000 +INFO: [runtcl-4] Executing : report_utilization -file FetchUnit_utilization_placed.rpt -pb FetchUnit_utilization_placed.pb +INFO: [runtcl-4] Executing : report_control_sets -verbose -file FetchUnit_control_sets_placed.rpt +report_control_sets: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.001 . Memory (MB): peak = 1280.449 ; gain = 0.000 +Command: route_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7k160ti' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7k160ti' +Running DRC as a precondition to command route_design +INFO: [DRC 23-27] Running DRC with 2 threads +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + + +Starting Routing Task +INFO: [Route 35-254] Multithreading enabled for route_design using a maximum of 2 CPUs +Checksum: PlaceDB: 80d46943 ConstDB: 0 ShapeSum: 9f9c4936 RouteDB: 0 + +Phase 1 Build RT Design +Phase 1 Build RT Design | Checksum: c942aae2 + +Time (s): cpu = 00:00:30 ; elapsed = 00:00:23 . Memory (MB): peak = 1491.852 ; gain = 211.402 +Post Restoration Checksum: NetGraph: 96738515 NumContArr: 32cf25cd Constraints: 0 Timing: 0 + +Phase 2 Router Initialization +INFO: [Route 35-64] No timing constraints were detected. The router will operate in resource-optimization mode. + +Phase 2.1 Fix Topology Constraints +Phase 2.1 Fix Topology Constraints | Checksum: c942aae2 + +Time (s): cpu = 00:00:30 ; elapsed = 00:00:23 . Memory (MB): peak = 1496.797 ; gain = 216.348 + +Phase 2.2 Pre Route Cleanup +Phase 2.2 Pre Route Cleanup | Checksum: c942aae2 + +Time (s): cpu = 00:00:30 ; elapsed = 00:00:23 . Memory (MB): peak = 1496.797 ; gain = 216.348 + Number of Nodes with overlaps = 0 +Phase 2 Router Initialization | Checksum: a27c41a8 + +Time (s): cpu = 00:00:30 ; elapsed = 00:00:23 . Memory (MB): peak = 1520.801 ; gain = 240.352 + +Phase 3 Initial Routing +Phase 3 Initial Routing | Checksum: 15301da77 + +Time (s): cpu = 00:00:31 ; elapsed = 00:00:24 . Memory (MB): peak = 1520.801 ; gain = 240.352 + +Phase 4 Rip-up And Reroute + +Phase 4.1 Global Iteration 0 + Number of Nodes with overlaps = 1 + Number of Nodes with overlaps = 0 +Phase 4.1 Global Iteration 0 | Checksum: af31d432 + +Time (s): cpu = 00:00:31 ; elapsed = 00:00:24 . Memory (MB): peak = 1520.801 ; gain = 240.352 +Phase 4 Rip-up And Reroute | Checksum: af31d432 + +Time (s): cpu = 00:00:31 ; elapsed = 00:00:24 . Memory (MB): peak = 1520.801 ; gain = 240.352 + +Phase 5 Delay and Skew Optimization +Phase 5 Delay and Skew Optimization | Checksum: af31d432 + +Time (s): cpu = 00:00:31 ; elapsed = 00:00:24 . Memory (MB): peak = 1520.801 ; gain = 240.352 + +Phase 6 Post Hold Fix + +Phase 6.1 Hold Fix Iter +Phase 6.1 Hold Fix Iter | Checksum: af31d432 + +Time (s): cpu = 00:00:31 ; elapsed = 00:00:24 . Memory (MB): peak = 1520.801 ; gain = 240.352 +Phase 6 Post Hold Fix | Checksum: af31d432 + +Time (s): cpu = 00:00:31 ; elapsed = 00:00:24 . Memory (MB): peak = 1520.801 ; gain = 240.352 + +Phase 7 Route finalize + +Router Utilization Summary + Global Vertical Routing Utilization = 0.00297689 % + Global Horizontal Routing Utilization = 0.00221654 % + Routable Net Status* + *Does not include unroutable nets such as driverless and loadless. + Run report_route_status for detailed report. + Number of Failed Nets = 0 + Number of Unrouted Nets = 0 + Number of Partially Routed Nets = 0 + Number of Node Overlaps = 0 + +Congestion Report +North Dir 1x1 Area, Max Cong = 2.7027%, No Congested Regions. +South Dir 1x1 Area, Max Cong = 25.2252%, No Congested Regions. +East Dir 1x1 Area, Max Cong = 8.82353%, No Congested Regions. +West Dir 1x1 Area, Max Cong = 16.1765%, No Congested Regions. + +------------------------------ +Reporting congestion hotspots +------------------------------ +Direction: North +---------------- +Congested clusters found at Level 0 +Effective congestion level: 0 Aspect Ratio: 1 Sparse Ratio: 0 +Direction: South +---------------- +Congested clusters found at Level 0 +Effective congestion level: 0 Aspect Ratio: 1 Sparse Ratio: 0 +Direction: East +---------------- +Congested clusters found at Level 0 +Effective congestion level: 0 Aspect Ratio: 1 Sparse Ratio: 0 +Direction: West +---------------- +Congested clusters found at Level 0 +Effective congestion level: 0 Aspect Ratio: 1 Sparse Ratio: 0 + +Phase 7 Route finalize | Checksum: af31d432 + +Time (s): cpu = 00:00:31 ; elapsed = 00:00:24 . Memory (MB): peak = 1520.801 ; gain = 240.352 + +Phase 8 Verifying routed nets + + Verification completed successfully +Phase 8 Verifying routed nets | Checksum: af31d432 + +Time (s): cpu = 00:00:31 ; elapsed = 00:00:24 . Memory (MB): peak = 1520.801 ; gain = 240.352 + +Phase 9 Depositing Routes +Phase 9 Depositing Routes | Checksum: 4b1641fa + +Time (s): cpu = 00:00:31 ; elapsed = 00:00:24 . Memory (MB): peak = 1520.801 ; gain = 240.352 +INFO: [Route 35-16] Router Completed Successfully + +Time (s): cpu = 00:00:31 ; elapsed = 00:00:24 . Memory (MB): peak = 1520.801 ; gain = 240.352 + +Routing Is Done. +INFO: [Common 17-83] Releasing license: Implementation +49 Infos, 3 Warnings, 0 Critical Warnings and 0 Errors encountered. +route_design completed successfully +route_design: Time (s): cpu = 00:00:32 ; elapsed = 00:00:31 . Memory (MB): peak = 1520.801 ; gain = 240.352 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1520.801 ; gain = 0.000 +WARNING: [Constraints 18-5210] No constraints selected for write. +Resolution: This message can indicate that there are no constraints for the design, or it can indicate that the used_in flags are set such that the constraints are ignored. This later case is used when running synth_design to not write synthesis constraints to the resulting checkpoint. Instead, project constraints are read when the synthesized design is opened. +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.055 . Memory (MB): peak = 1520.801 ; gain = 0.000 +INFO: [Common 17-1381] The checkpoint 'C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1/FetchUnit_routed.dcp' has been generated. +INFO: [runtcl-4] Executing : report_drc -file FetchUnit_drc_routed.rpt -pb FetchUnit_drc_routed.pb -rpx FetchUnit_drc_routed.rpx +Command: report_drc -file FetchUnit_drc_routed.rpt -pb FetchUnit_drc_routed.pb -rpx FetchUnit_drc_routed.rpx +INFO: [IP_Flow 19-1839] IP Catalog is up to date. +INFO: [DRC 23-27] Running DRC with 2 threads +INFO: [Coretcl 2-168] The results of DRC are in file C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1/FetchUnit_drc_routed.rpt. +report_drc completed successfully +INFO: [runtcl-4] Executing : report_methodology -file FetchUnit_methodology_drc_routed.rpt -pb FetchUnit_methodology_drc_routed.pb -rpx FetchUnit_methodology_drc_routed.rpx +Command: report_methodology -file FetchUnit_methodology_drc_routed.rpt -pb FetchUnit_methodology_drc_routed.pb -rpx FetchUnit_methodology_drc_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +INFO: [DRC 23-133] Running Methodology with 2 threads +INFO: [Coretcl 2-1520] The results of Report Methodology are in file C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1/FetchUnit_methodology_drc_routed.rpt. +report_methodology completed successfully +INFO: [runtcl-4] Executing : report_power -file FetchUnit_power_routed.rpt -pb FetchUnit_power_summary_routed.pb -rpx FetchUnit_power_routed.rpx +Command: report_power -file FetchUnit_power_routed.rpt -pb FetchUnit_power_summary_routed.pb -rpx FetchUnit_power_routed.rpx +WARNING: [Power 33-232] No user defined clocks were found in the design! +Resolution: Please specify clocks using create_clock/create_generated_clock for sequential elements. For pure combinatorial circuits, please specify a virtual clock, otherwise the vectorless estimation might be inaccurate +INFO: [Timing 38-35] Done setting XDC timing constraints. +Running Vector-less Activity Propagation... + +Finished Running Vector-less Activity Propagation +60 Infos, 5 Warnings, 0 Critical Warnings and 0 Errors encountered. +report_power completed successfully +INFO: [runtcl-4] Executing : report_route_status -file FetchUnit_route_status.rpt -pb FetchUnit_route_status.pb +INFO: [runtcl-4] Executing : report_timing_summary -max_paths 10 -file FetchUnit_timing_summary_routed.rpt -pb FetchUnit_timing_summary_routed.pb -rpx FetchUnit_timing_summary_routed.rpx -warn_on_violation +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -2L, Delay Type: min_max. +INFO: [Timing 38-191] Multithreading enabled for timing update using a maximum of 2 CPUs +WARNING: [Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis. +INFO: [runtcl-4] Executing : report_incremental_reuse -file FetchUnit_incremental_reuse_routed.rpt +INFO: [Vivado_Tcl 4-1062] Incremental flow is disabled. No incremental reuse Info to report. +INFO: [runtcl-4] Executing : report_clock_utilization -file FetchUnit_clock_utilization_routed.rpt +INFO: [runtcl-4] Executing : report_bus_skew -warn_on_violation -file FetchUnit_bus_skew_routed.rpt -pb FetchUnit_bus_skew_routed.pb -rpx FetchUnit_bus_skew_routed.rpx +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -2L, Delay Type: min_max. +INFO: [Timing 38-191] Multithreading enabled for timing update using a maximum of 2 CPUs +INFO: [Common 17-206] Exiting Vivado at Sat Feb 16 17:37:11 2019... diff --git a/lab2CA.runs/impl_1/FetchUnit_bus_skew_routed.pb b/lab2CA.runs/impl_1/FetchUnit_bus_skew_routed.pb new file mode 100644 index 0000000000000000000000000000000000000000..3390588d5da71a6f6866045d7ae5646edfab7b0e GIT binary patch literal 30 lcmd;LGcqu=&@-IGEZ|gHtWcbtTCPx(T3nh_Qapp10RVJW2(bVF literal 0 HcmV?d00001 diff --git a/lab2CA.runs/impl_1/FetchUnit_bus_skew_routed.rpt b/lab2CA.runs/impl_1/FetchUnit_bus_skew_routed.rpt new file mode 100644 index 0000000..327c37c --- /dev/null +++ b/lab2CA.runs/impl_1/FetchUnit_bus_skew_routed.rpt @@ -0,0 +1,15 @@ +Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2018.3 (win64) Build 2405991 Thu Dec 6 23:38:27 MST 2018 +| Date : Sat Feb 16 17:37:11 2019 +| Host : DESKTOP-8QFGS52 running 64-bit major release (build 9200) +| Command : report_bus_skew -warn_on_violation -file FetchUnit_bus_skew_routed.rpt -pb FetchUnit_bus_skew_routed.pb -rpx FetchUnit_bus_skew_routed.rpx +| Design : FetchUnit +| Device : 7k160ti-fbg484 +| Speed File : -2L PRODUCTION 1.12 2017-02-17 +------------------------------------------------------------------------------------------------------------------------------------------------------------ + +Bus Skew Report + +No bus skew constraints + diff --git a/lab2CA.runs/impl_1/FetchUnit_clock_utilization_routed.rpt b/lab2CA.runs/impl_1/FetchUnit_clock_utilization_routed.rpt new file mode 100644 index 0000000..6bb5cc8 --- /dev/null +++ b/lab2CA.runs/impl_1/FetchUnit_clock_utilization_routed.rpt @@ -0,0 +1,154 @@ +Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. +-------------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2018.3 (win64) Build 2405991 Thu Dec 6 23:38:27 MST 2018 +| Date : Sat Feb 16 17:37:11 2019 +| Host : DESKTOP-8QFGS52 running 64-bit major release (build 9200) +| Command : report_clock_utilization -file FetchUnit_clock_utilization_routed.rpt +| Design : FetchUnit +| Device : 7k160ti-fbg484 +| Speed File : -2L PRODUCTION 1.12 2017-02-17 +| Temperature Grade : I +-------------------------------------------------------------------------------------------- + +Clock Utilization Report + +Table of Contents +----------------- +1. Clock Primitive Utilization +2. Global Clock Resources +3. Global Clock Source Details +4. Clock Regions: Key Resource Utilization +5. Clock Regions : Global Clock Summary +6. Device Cell Placement Summary for Global Clock g0 +7. Clock Region Cell Placement per Global Clock: Region X0Y1 + +1. Clock Primitive Utilization +------------------------------ + ++----------+------+-----------+-----+--------------+--------+ +| Type | Used | Available | LOC | Clock Region | Pblock | ++----------+------+-----------+-----+--------------+--------+ +| BUFGCTRL | 1 | 32 | 0 | 0 | 0 | +| BUFH | 0 | 120 | 0 | 0 | 0 | +| BUFIO | 0 | 32 | 0 | 0 | 0 | +| BUFMR | 0 | 16 | 0 | 0 | 0 | +| BUFR | 0 | 32 | 0 | 0 | 0 | +| MMCM | 0 | 8 | 0 | 0 | 0 | +| PLL | 0 | 8 | 0 | 0 | 0 | ++----------+------+-----------+-----+--------------+--------+ + + +2. Global Clock Resources +------------------------- + ++-----------+-----------+-----------------+------------+---------------+--------------+-------------------+-------------+-----------------+--------------+-------+----------------------+---------------+ +| Global Id | Source Id | Driver Type/Pin | Constraint | Site | Clock Region | Load Clock Region | Clock Loads | Non-Clock Loads | Clock Period | Clock | Driver Pin | Net | ++-----------+-----------+-----------------+------------+---------------+--------------+-------------------+-------------+-----------------+--------------+-------+----------------------+---------------+ +| g0 | src0 | BUFG/O | None | BUFGCTRL_X0Y0 | n/a | 1 | 9 | 0 | | | clk_IBUF_BUFG_inst/O | clk_IBUF_BUFG | ++-----------+-----------+-----------------+------------+---------------+--------------+-------------------+-------------+-----------------+--------------+-------+----------------------+---------------+ +* Clock Loads column represents the clock pin loads (pin count) +** Non-Clock Loads column represents the non-clock pin loads (pin count) + + +3. Global Clock Source Details +------------------------------ + ++-----------+-----------+-----------------+------------+-----------+--------------+-------------+-----------------+---------------------+--------------+-----------------+----------+ +| Source Id | Global Id | Driver Type/Pin | Constraint | Site | Clock Region | Clock Loads | Non-Clock Loads | Source Clock Period | Source Clock | Driver Pin | Net | ++-----------+-----------+-----------------+------------+-----------+--------------+-------------+-----------------+---------------------+--------------+-----------------+----------+ +| src0 | g0 | IBUF/O | None | IOB_X0Y78 | X0Y1 | 1 | 0 | | | clk_IBUF_inst/O | clk_IBUF | ++-----------+-----------+-----------------+------------+-----------+--------------+-------------+-----------------+---------------------+--------------+-----------------+----------+ +* Clock Loads column represents the clock pin loads (pin count) +** Non-Clock Loads column represents the non-clock pin loads (pin count) + + +4. Clock Regions: Key Resource Utilization +------------------------------------------ + ++-------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ +| | Global Clock | BUFRs | BUFMRs | BUFIOs | MMCM | PLL | GT | PCI | ILOGIC | OLOGIC | FF | LUTM | RAMB18 | RAMB36 | DSP48E2 | ++-------------------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+ +| Clock Region Name | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | ++-------------------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+ +| X0Y0 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 2800 | 0 | 850 | 0 | 60 | 0 | 30 | 0 | 60 | +| X1Y0 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 2700 | 0 | 950 | 0 | 80 | 0 | 40 | 0 | 60 | +| X0Y1 | 1 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 9 | 2800 | 0 | 850 | 0 | 60 | 0 | 30 | 0 | 60 | +| X1Y1 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 2700 | 0 | 950 | 0 | 80 | 0 | 40 | 0 | 60 | +| X0Y2 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 2200 | 0 | 850 | 0 | 60 | 0 | 30 | 0 | 60 | +| X1Y2 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 2700 | 0 | 950 | 0 | 80 | 0 | 40 | 0 | 60 | +| X0Y3 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 2200 | 0 | 850 | 0 | 60 | 0 | 30 | 0 | 60 | +| X1Y3 | 0 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 2150 | 0 | 800 | 0 | 50 | 0 | 25 | 0 | 60 | +| X0Y4 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 2800 | 0 | 850 | 0 | 60 | 0 | 30 | 0 | 60 | +| X1Y4 | 0 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2300 | 0 | 850 | 0 | 60 | 0 | 30 | 0 | 60 | ++-------------------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+ +* Global Clock column represents track count; while other columns represents cell counts + + +5. Clock Regions : Global Clock Summary +--------------------------------------- + +All Modules ++----+----+----+ +| | X0 | X1 | ++----+----+----+ +| Y4 | 0 | 0 | +| Y3 | 0 | 0 | +| Y2 | 0 | 0 | +| Y1 | 1 | 0 | +| Y0 | 0 | 0 | ++----+----+----+ + + +6. Device Cell Placement Summary for Global Clock g0 +---------------------------------------------------- + ++-----------+-----------------+-------------------+-------+-------------+---------------+-------------+----------+----------------+----------+---------------+ +| Global Id | Driver Type/Pin | Driver Region (D) | Clock | Period (ns) | Waveform (ns) | Slice Loads | IO Loads | Clocking Loads | GT Loads | Net | ++-----------+-----------------+-------------------+-------+-------------+---------------+-------------+----------+----------------+----------+---------------+ +| g0 | BUFG/O | n/a | | | | 9 | 0 | 0 | 0 | clk_IBUF_BUFG | ++-----------+-----------------+-------------------+-------+-------------+---------------+-------------+----------+----------------+----------+---------------+ +* Logic Loads column represents load cell count of all cell types other than IO, GT and clock resources +** IO Loads column represents load cell count of IO types +*** Clocking Loads column represents load cell count that are clock resources (global clock buffer, MMCM, PLL, etc) +**** GT Loads column represents load cell count of GT types + + ++----+----+----+ +| | X0 | X1 | ++----+----+----+ +| Y4 | 0 | 0 | +| Y3 | 0 | 0 | +| Y2 | 0 | 0 | +| Y1 | 9 | 0 | +| Y0 | 0 | 0 | ++----+----+----+ + + +7. Clock Region Cell Placement per Global Clock: Region X0Y1 +------------------------------------------------------------ + ++-----------+-------+-----------------+------------+-------------+-----------------+----+--------+------+-----+----+------+-----+---------+---------------+ +| Global Id | Track | Driver Type/Pin | Constraint | Clock Loads | Non-Clock Loads | FF | LUTRAM | RAMB | DSP | GT | MMCM | PLL | Hard IP | Net | ++-----------+-------+-----------------+------------+-------------+-----------------+----+--------+------+-----+----+------+-----+---------+---------------+ +| g0 | n/a | BUFG/O | None | 9 | 0 | 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | clk_IBUF_BUFG | ++-----------+-------+-----------------+------------+-------------+-----------------+----+--------+------+-----+----+------+-----+---------+---------------+ +* Clock Loads column represents the clock pin loads (pin count) +** Non-Clock Loads column represents the non-clock pin loads (pin count) +*** Columns FF, LUTRAM, RAMB through 'Hard IP' represents load cell counts + + + +# Location of BUFG Primitives +set_property LOC BUFGCTRL_X0Y0 [get_cells clk_IBUF_BUFG_inst] + +# Location of IO Primitives which is load of clock spine + +# Location of clock ports +set_property LOC IOB_X0Y78 [get_ports clk] + +# Clock net "clk_IBUF_BUFG" driven by instance "clk_IBUF_BUFG_inst" located at site "BUFGCTRL_X0Y0" +#startgroup +create_pblock {CLKAG_clk_IBUF_BUFG} +add_cells_to_pblock [get_pblocks {CLKAG_clk_IBUF_BUFG}] [get_cells -filter { PRIMITIVE_GROUP != I/O && IS_PRIMITIVE==1 && PRIMITIVE_LEVEL !=INTERNAL } -of_object [get_pins -filter {DIRECTION==IN} -of_objects [get_nets -hierarchical -filter {PARENT=="clk_IBUF_BUFG"}]]] +resize_pblock [get_pblocks {CLKAG_clk_IBUF_BUFG}] -add {CLOCKREGION_X0Y1:CLOCKREGION_X0Y1} +#endgroup diff --git a/lab2CA.runs/impl_1/FetchUnit_control_sets_placed.rpt b/lab2CA.runs/impl_1/FetchUnit_control_sets_placed.rpt new file mode 100644 index 0000000..73f98a5 --- /dev/null +++ b/lab2CA.runs/impl_1/FetchUnit_control_sets_placed.rpt @@ -0,0 +1,65 @@ +Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. +-------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2018.3 (win64) Build 2405991 Thu Dec 6 23:38:27 MST 2018 +| Date : Sat Feb 16 17:36:37 2019 +| Host : DESKTOP-8QFGS52 running 64-bit major release (build 9200) +| Command : report_control_sets -verbose -file FetchUnit_control_sets_placed.rpt +| Design : FetchUnit +| Device : xc7k160ti +-------------------------------------------------------------------------------------- + +Control Set Information + +Table of Contents +----------------- +1. Summary +2. Histogram +3. Flip-Flop Distribution +4. Detailed Control Set Information + +1. Summary +---------- + ++----------------------------------------------------------+-------+ +| Status | Count | ++----------------------------------------------------------+-------+ +| Number of unique control sets | 1 | +| Unused register locations in slices containing registers | 7 | ++----------------------------------------------------------+-------+ + + +2. Histogram +------------ + ++--------+--------------+ +| Fanout | Control Sets | ++--------+--------------+ +| 9 | 1 | ++--------+--------------+ + + +3. Flip-Flop Distribution +------------------------- + ++--------------+-----------------------+------------------------+-----------------+--------------+ +| Clock Enable | Synchronous Set/Reset | Asynchronous Set/Reset | Total Registers | Total Slices | ++--------------+-----------------------+------------------------+-----------------+--------------+ +| No | No | No | 0 | 0 | +| No | No | Yes | 0 | 0 | +| No | Yes | No | 9 | 2 | +| Yes | No | No | 0 | 0 | +| Yes | No | Yes | 0 | 0 | +| Yes | Yes | No | 0 | 0 | ++--------------+-----------------------+------------------------+-----------------+--------------+ + + +4. Detailed Control Set Information +----------------------------------- + ++----------------+---------------+------------------+------------------+----------------+ +| Clock Signal | Enable Signal | Set/Reset Signal | Slice Load Count | Bel Load Count | ++----------------+---------------+------------------+------------------+----------------+ +| clk_IBUF_BUFG | | reset_IBUF | 2 | 9 | ++----------------+---------------+------------------+------------------+----------------+ + + diff --git a/lab2CA.runs/impl_1/FetchUnit_drc_opted.pb b/lab2CA.runs/impl_1/FetchUnit_drc_opted.pb new file mode 100644 index 0000000000000000000000000000000000000000..0158a2ad826bcd75c8436a6a29252340aee67559 GIT binary patch literal 37 scmd;LGcqtV(KDRH% + Ruledeck: default + Max violations: + Violations found: 3 ++----------+------------------+-----------------------------------------------------+------------+ +| Rule | Severity | Description | Violations | ++----------+------------------+-----------------------------------------------------+------------+ +| NSTD-1 | Critical Warning | Unspecified I/O Standard | 1 | +| UCIO-1 | Critical Warning | Unconstrained Logical Port | 1 | +| CFGBVS-1 | Warning | Missing CFGBVS and CONFIG_VOLTAGE Design Properties | 1 | ++----------+------------------+-----------------------------------------------------+------------+ + +2. REPORT DETAILS +----------------- +NSTD-1#1 Critical Warning +Unspecified I/O Standard +21 out of 21 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: AddrIn[8:0], AddrOut[8:0], clk, op_idx, reset. +Related violations: + +UCIO-1#1 Critical Warning +Unconstrained Logical Port +21 out of 21 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined. To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: AddrIn[8:0], AddrOut[8:0], clk, op_idx, reset. +Related violations: + +CFGBVS-1#1 Warning +Missing CFGBVS and CONFIG_VOLTAGE Design Properties +Neither the CFGBVS nor CONFIG_VOLTAGE voltage property is set in the current_design. Configuration bank voltage select (CFGBVS) must be set to VCCO or GND, and CONFIG_VOLTAGE must be set to the correct configuration voltage, in order to determine the I/O voltage support for the pins in bank 0. It is suggested to specify these either using the 'Edit Device Properties' function in the GUI or directly in the XDC file using the following syntax: + + set_property CFGBVS value1 [current_design] + #where value1 is either VCCO or GND + + set_property CONFIG_VOLTAGE value2 [current_design] + #where value2 is the voltage provided to configuration bank 0 + +Refer to the device configuration user guide for more information. +Related violations: + + diff --git a/lab2CA.runs/impl_1/FetchUnit_drc_routed.pb b/lab2CA.runs/impl_1/FetchUnit_drc_routed.pb new file mode 100644 index 0000000000000000000000000000000000000000..0158a2ad826bcd75c8436a6a29252340aee67559 GIT binary patch literal 37 scmd;LGcqtV(KDRH% + Ruledeck: default + Max violations: + Violations found: 3 ++----------+------------------+-----------------------------------------------------+------------+ +| Rule | Severity | Description | Violations | ++----------+------------------+-----------------------------------------------------+------------+ +| NSTD-1 | Critical Warning | Unspecified I/O Standard | 1 | +| UCIO-1 | Critical Warning | Unconstrained Logical Port | 1 | +| CFGBVS-1 | Warning | Missing CFGBVS and CONFIG_VOLTAGE Design Properties | 1 | ++----------+------------------+-----------------------------------------------------+------------+ + +2. REPORT DETAILS +----------------- +NSTD-1#1 Critical Warning +Unspecified I/O Standard +21 out of 21 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: AddrIn[8:0], AddrOut[8:0], clk, op_idx, reset. +Related violations: + +UCIO-1#1 Critical Warning +Unconstrained Logical Port +21 out of 21 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined. To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: AddrIn[8:0], AddrOut[8:0], clk, op_idx, reset. +Related violations: + +CFGBVS-1#1 Warning +Missing CFGBVS and CONFIG_VOLTAGE Design Properties +Neither the CFGBVS nor CONFIG_VOLTAGE voltage property is set in the current_design. Configuration bank voltage select (CFGBVS) must be set to VCCO or GND, and CONFIG_VOLTAGE must be set to the correct configuration voltage, in order to determine the I/O voltage support for the pins in bank 0. It is suggested to specify these either using the 'Edit Device Properties' function in the GUI or directly in the XDC file using the following syntax: + + set_property CFGBVS value1 [current_design] + #where value1 is either VCCO or GND + + set_property CONFIG_VOLTAGE value2 [current_design] + #where value2 is the voltage provided to configuration bank 0 + +Refer to the device configuration user guide for more information. +Related violations: + + diff --git a/lab2CA.runs/impl_1/FetchUnit_io_placed.rpt b/lab2CA.runs/impl_1/FetchUnit_io_placed.rpt new file mode 100644 index 0000000..4c071d9 --- /dev/null +++ b/lab2CA.runs/impl_1/FetchUnit_io_placed.rpt @@ -0,0 +1,526 @@ +Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2018.3 (win64) Build 2405991 Thu Dec 6 23:38:27 MST 2018 +| Date : Sat Feb 16 17:36:37 2019 +| Host : DESKTOP-8QFGS52 running 64-bit major release (build 9200) +| Command : report_io -file FetchUnit_io_placed.rpt +| Design : FetchUnit +| Device : xc7k160ti +| Speed File : -2L +| Package : fbg484 +| Package Version : FINAL 2012-06-26 +| Package Pin Delay Version : VERS. 2.0 2012-06-26 +------------------------------------------------------------------------------------------------- + +IO Information + +Table of Contents +----------------- +1. Summary +2. IO Assignments by Package Pin + +1. Summary +---------- + ++---------------+ +| Total User IO | ++---------------+ +| 21 | ++---------------+ + + +2. IO Assignments by Package Pin +-------------------------------- + ++------------+-------------+------------------+------------------------------+---------------+-------------+---------+------------+------+---------------------+----------------------+-----------+------------+-----------+----------+------+------------------+--------------+-------------------+--------------+ +| Pin Number | Signal Name | Bank Type | Pin Name | Use | IO Standard | IO Bank | Drive (mA) | Slew | On-Chip Termination | Off-Chip Termination | Voltage | Constraint | Pull Type | DQS Bias | Vref | Signal Integrity | Pre Emphasis | Lvds Pre Emphasis | Equalization | ++------------+-------------+------------------+------------------------------+---------------+-------------+---------+------------+------+---------------------+----------------------+-----------+------------+-----------+----------+------+------------------+--------------+-------------------+--------------+ +| A1 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| A2 | | | MGTAVTT | Gigabit Power | | | | | | | | | | | | | | | | +| A3 | | | MGTXTXN3_115 | Gigabit | | | | | | | | | | | | | | | | +| A4 | | | MGTXTXP3_115 | Gigabit | | | | | | | | | | | | | | | | +| A5 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| A6 | | | MGTAVCC | Gigabit Power | | | | | | | | | | | | | | | | +| A7 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| A8 | | High Range | IO_L21N_T3_DQS_16 | User IO | | 16 | | | | | | | | | | | | | | +| A9 | | High Range | IO_L21P_T3_DQS_16 | User IO | | 16 | | | | | | | | | | | | | | +| A10 | | High Range | IO_L23N_T3_16 | User IO | | 16 | | | | | | | | | | | | | | +| A11 | | High Range | IO_L23P_T3_16 | User IO | | 16 | | | | | | | | | | | | | | +| A12 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| A13 | | High Range | IO_L4P_T0_AD9P_15 | User IO | | 15 | | | | | | | | | | | | | | +| A14 | | High Range | IO_L4N_T0_AD9N_15 | User IO | | 15 | | | | | | | | | | | | | | +| A15 | | High Range | IO_L9N_T1_DQS_AD11N_15 | User IO | | 15 | | | | | | | | | | | | | | +| A16 | | High Range | IO_L8N_T1_AD3N_15 | User IO | | 15 | | | | | | | | | | | | | | +| A17 | | High Range | VCCO_15 | VCCO | | 15 | | | | | any** | | | | | | | | | +| A18 | | High Range | IO_L10N_T1_AD4N_15 | User IO | | 15 | | | | | | | | | | | | | | +| A19 | | High Range | IO_L20N_T3_A19_15 | User IO | | 15 | | | | | | | | | | | | | | +| A20 | | High Range | IO_L22P_T3_A17_15 | User IO | | 15 | | | | | | | | | | | | | | +| A21 | | High Range | IO_L22N_T3_A16_15 | User IO | | 15 | | | | | | | | | | | | | | +| A22 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| AA1 | | High Performance | IO_L22P_T3_34 | User IO | | 34 | | | | | | | | | | | | | | +| AA2 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| AA3 | | High Performance | IO_L23P_T3_34 | User IO | | 34 | | | | | | | | | | | | | | +| AA4 | | High Performance | IO_L24P_T3_34 | User IO | | 34 | | | | | | | | | | | | | | +| AA5 | | High Performance | IO_L1P_T0_33 | User IO | | 33 | | | | | | | | | | | | | | +| AA6 | | High Performance | IO_L3P_T0_DQS_33 | User IO | | 33 | | | | | | | | | | | | | | +| AA7 | | High Performance | VCCO_33 | VCCO | | 33 | | | | | 0.00-1.80 | | | | | | | | | +| AA8 | | High Performance | IO_L5N_T0_33 | User IO | | 33 | | | | | | | | | | | | | | +| AA9 | | High Performance | IO_L5P_T0_33 | User IO | | 33 | | | | | | | | | | | | | | +| AA10 | | High Performance | IO_L4P_T0_33 | User IO | | 33 | | | | | | | | | | | | | | +| AA11 | | High Performance | IO_L20P_T3_33 | User IO | | 33 | | | | | | | | | | | | | | +| AA12 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| AA13 | | High Performance | IO_L21N_T3_DQS_33 | User IO | | 33 | | | | | | | | | | | | | | +| AA14 | AddrOut[3] | High Range | IO_L18P_T2_13 | OUTPUT | LVCMOS18* | 13 | 12 | SLOW | | FP_VTT_50 | | UNFIXED | | | | NONE | | | | +| AA15 | AddrOut[2] | High Range | IO_L18N_T2_13 | OUTPUT | LVCMOS18* | 13 | 12 | SLOW | | FP_VTT_50 | | UNFIXED | | | | NONE | | | | +| AA16 | AddrOut[5] | High Range | IO_L17P_T2_13 | OUTPUT | LVCMOS18* | 13 | 12 | SLOW | | FP_VTT_50 | | UNFIXED | | | | NONE | | | | +| AA17 | | High Range | VCCO_13 | VCCO | | 13 | | | | | 1.80 | | | | | | | | | +| AA18 | | High Range | IO_L15P_T2_DQS_13 | User IO | | 13 | | | | | | | | | | | | | | +| AA19 | | High Range | IO_L10P_T1_13 | User IO | | 13 | | | | | | | | | | | | | | +| AA20 | | High Range | IO_L8P_T1_13 | User IO | | 13 | | | | | | | | | | | | | | +| AA21 | | High Range | IO_L9P_T1_DQS_13 | User IO | | 13 | | | | | | | | | | | | | | +| AA22 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| AB1 | | High Performance | IO_L22N_T3_34 | User IO | | 34 | | | | | | | | | | | | | | +| AB2 | | High Performance | IO_L23N_T3_34 | User IO | | 34 | | | | | | | | | | | | | | +| AB3 | | High Performance | IO_L24N_T3_34 | User IO | | 34 | | | | | | | | | | | | | | +| AB4 | | High Performance | VCCO_34 | VCCO | | 34 | | | | | 0.00-1.80 | | | | | | | | | +| AB5 | | High Performance | IO_L1N_T0_33 | User IO | | 33 | | | | | | | | | | | | | | +| AB6 | | High Performance | IO_L3N_T0_DQS_33 | User IO | | 33 | | | | | | | | | | | | | | +| AB7 | | High Performance | IO_L2N_T0_33 | User IO | | 33 | | | | | | | | | | | | | | +| AB8 | | High Performance | IO_L2P_T0_33 | User IO | | 33 | | | | | | | | | | | | | | +| AB9 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| AB10 | | High Performance | IO_L4N_T0_33 | User IO | | 33 | | | | | | | | | | | | | | +| AB11 | | High Performance | IO_L20N_T3_33 | User IO | | 33 | | | | | | | | | | | | | | +| AB12 | | High Performance | IO_L22N_T3_33 | User IO | | 33 | | | | | | | | | | | | | | +| AB13 | | High Performance | IO_L22P_T3_33 | User IO | | 33 | | | | | | | | | | | | | | +| AB14 | | High Range | VCCO_13 | VCCO | | 13 | | | | | 1.80 | | | | | | | | | +| AB15 | AddrOut[7] | High Range | IO_L16P_T2_13 | OUTPUT | LVCMOS18* | 13 | 12 | SLOW | | FP_VTT_50 | | UNFIXED | | | | NONE | | | | +| AB16 | AddrOut[6] | High Range | IO_L16N_T2_13 | OUTPUT | LVCMOS18* | 13 | 12 | SLOW | | FP_VTT_50 | | UNFIXED | | | | NONE | | | | +| AB17 | AddrOut[4] | High Range | IO_L17N_T2_13 | OUTPUT | LVCMOS18* | 13 | 12 | SLOW | | FP_VTT_50 | | UNFIXED | | | | NONE | | | | +| AB18 | AddrOut[8] | High Range | IO_L15N_T2_DQS_13 | OUTPUT | LVCMOS18* | 13 | 12 | SLOW | | FP_VTT_50 | | UNFIXED | | | | NONE | | | | +| AB19 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| AB20 | | High Range | IO_L10N_T1_13 | User IO | | 13 | | | | | | | | | | | | | | +| AB21 | | High Range | IO_L8N_T1_13 | User IO | | 13 | | | | | | | | | | | | | | +| AB22 | | High Range | IO_L9N_T1_DQS_13 | User IO | | 13 | | | | | | | | | | | | | | +| B1 | | | MGTXTXN2_115 | Gigabit | | | | | | | | | | | | | | | | +| B2 | | | MGTXTXP2_115 | Gigabit | | | | | | | | | | | | | | | | +| B3 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| B4 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| B5 | | | MGTXRXN3_115 | Gigabit | | | | | | | | | | | | | | | | +| B6 | | | MGTXRXP3_115 | Gigabit | | | | | | | | | | | | | | | | +| B7 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| B8 | | High Range | IO_L22N_T3_16 | User IO | | 16 | | | | | | | | | | | | | | +| B9 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| B10 | | High Range | IO_L20N_T3_16 | User IO | | 16 | | | | | | | | | | | | | | +| B11 | | High Range | IO_L20P_T3_16 | User IO | | 16 | | | | | | | | | | | | | | +| B12 | | High Range | IO_L2N_T0_AD8N_15 | User IO | | 15 | | | | | | | | | | | | | | +| B13 | | High Range | IO_L5N_T0_AD2N_15 | User IO | | 15 | | | | | | | | | | | | | | +| B14 | | High Range | VCCO_15 | VCCO | | 15 | | | | | any** | | | | | | | | | +| B15 | | High Range | IO_L9P_T1_DQS_AD11P_15 | User IO | | 15 | | | | | | | | | | | | | | +| B16 | | High Range | IO_L8P_T1_AD3P_15 | User IO | | 15 | | | | | | | | | | | | | | +| B17 | | High Range | IO_L10P_T1_AD4P_15 | User IO | | 15 | | | | | | | | | | | | | | +| B18 | | High Range | IO_L20P_T3_A20_15 | User IO | | 15 | | | | | | | | | | | | | | +| B19 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| B20 | | High Range | IO_L24P_T3_RS1_15 | User IO | | 15 | | | | | | | | | | | | | | +| B21 | | High Range | IO_L24N_T3_RS0_15 | User IO | | 15 | | | | | | | | | | | | | | +| B22 | | High Range | IO_L21N_T3_DQS_A18_15 | User IO | | 15 | | | | | | | | | | | | | | +| C1 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| C2 | | | MGTAVTT | Gigabit Power | | | | | | | | | | | | | | | | +| C3 | | | MGTXRXN2_115 | Gigabit | | | | | | | | | | | | | | | | +| C4 | | | MGTXRXP2_115 | Gigabit | | | | | | | | | | | | | | | | +| C5 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| C6 | | | MGTAVCC | Gigabit Power | | | | | | | | | | | | | | | | +| C7 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| C8 | | High Range | IO_L22P_T3_16 | User IO | | 16 | | | | | | | | | | | | | | +| C9 | | High Range | IO_L19N_T3_VREF_16 | User IO | | 16 | | | | | | | | | | | | | | +| C10 | | High Range | IO_L7N_T1_16 | User IO | | 16 | | | | | | | | | | | | | | +| C11 | | High Range | VCCO_16 | VCCO | | 16 | | | | | any** | | | | | | | | | +| C12 | | High Range | IO_L2P_T0_AD8P_15 | User IO | | 15 | | | | | | | | | | | | | | +| C13 | | High Range | IO_L5P_T0_AD2P_15 | User IO | | 15 | | | | | | | | | | | | | | +| C14 | | High Range | IO_L7P_T1_AD10P_15 | User IO | | 15 | | | | | | | | | | | | | | +| C15 | | High Range | IO_L7N_T1_AD10N_15 | User IO | | 15 | | | | | | | | | | | | | | +| C16 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| C17 | | High Range | IO_L12P_T1_MRCC_AD5P_15 | User IO | | 15 | | | | | | | | | | | | | | +| C18 | | High Range | IO_L12N_T1_MRCC_AD5N_15 | User IO | | 15 | | | | | | | | | | | | | | +| C19 | | High Range | IO_L19P_T3_A22_15 | User IO | | 15 | | | | | | | | | | | | | | +| C20 | | High Range | IO_L19N_T3_A21_VREF_15 | User IO | | 15 | | | | | | | | | | | | | | +| C21 | | High Range | VCCO_15 | VCCO | | 15 | | | | | any** | | | | | | | | | +| C22 | | High Range | IO_L21P_T3_DQS_15 | User IO | | 15 | | | | | | | | | | | | | | +| D1 | | | MGTXTXN1_115 | Gigabit | | | | | | | | | | | | | | | | +| D2 | | | MGTXTXP1_115 | Gigabit | | | | | | | | | | | | | | | | +| D3 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| D4 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| D5 | | | MGTREFCLK0N_115 | Gigabit | | | | | | | | | | | | | | | | +| D6 | | | MGTREFCLK0P_115 | Gigabit | | | | | | | | | | | | | | | | +| D7 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| D8 | | High Range | VCCO_16 | VCCO | | 16 | | | | | any** | | | | | | | | | +| D9 | | High Range | IO_L19P_T3_16 | User IO | | 16 | | | | | | | | | | | | | | +| D10 | | High Range | IO_L7P_T1_16 | User IO | | 16 | | | | | | | | | | | | | | +| D11 | | High Range | IO_L12N_T1_MRCC_16 | User IO | | 16 | | | | | | | | | | | | | | +| D12 | | High Range | IO_0_15 | User IO | | 15 | | | | | | | | | | | | | | +| D13 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| D14 | | High Range | IO_L6N_T0_VREF_15 | User IO | | 15 | | | | | | | | | | | | | | +| D15 | | High Range | IO_L11P_T1_SRCC_AD12P_15 | User IO | | 15 | | | | | | | | | | | | | | +| D16 | | High Range | IO_L11N_T1_SRCC_AD12N_15 | User IO | | 15 | | | | | | | | | | | | | | +| D17 | | High Range | IO_L14N_T2_SRCC_15 | User IO | | 15 | | | | | | | | | | | | | | +| D18 | | High Range | VCCO_15 | VCCO | | 15 | | | | | any** | | | | | | | | | +| D19 | | High Range | IO_L18P_T2_A24_15 | User IO | | 15 | | | | | | | | | | | | | | +| D20 | | High Range | IO_L18N_T2_A23_15 | User IO | | 15 | | | | | | | | | | | | | | +| D21 | | High Range | IO_L23P_T3_FOE_B_15 | User IO | | 15 | | | | | | | | | | | | | | +| D22 | | High Range | IO_L23N_T3_FWE_B_15 | User IO | | 15 | | | | | | | | | | | | | | +| E1 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| E2 | | | MGTAVTT | Gigabit Power | | | | | | | | | | | | | | | | +| E3 | | | MGTXRXN1_115 | Gigabit | | | | | | | | | | | | | | | | +| E4 | | | MGTXRXP1_115 | Gigabit | | | | | | | | | | | | | | | | +| E5 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| E6 | | | MGTAVCC | Gigabit Power | | | | | | | | | | | | | | | | +| E7 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| E8 | | High Range | IO_24_T3_16 | User IO | | 16 | | | | | | | | | | | | | | +| E9 | | High Range | IO_L15N_T2_DQS_16 | User IO | | 16 | | | | | | | | | | | | | | +| E10 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| E11 | | High Range | IO_L12P_T1_MRCC_16 | User IO | | 16 | | | | | | | | | | | | | | +| E12 | | High Range | IO_L10N_T1_16 | User IO | | 16 | | | | | | | | | | | | | | +| E13 | | High Range | IO_L10P_T1_16 | User IO | | 16 | | | | | | | | | | | | | | +| E14 | | High Range | IO_L6P_T0_15 | User IO | | 15 | | | | | | | | | | | | | | +| E15 | | High Range | VCCO_15 | VCCO | | 15 | | | | | any** | | | | | | | | | +| E16 | | High Range | IO_L14P_T2_SRCC_15 | User IO | | 15 | | | | | | | | | | | | | | +| E17 | | High Range | IO_L13P_T2_MRCC_15 | User IO | | 15 | | | | | | | | | | | | | | +| E18 | | High Range | IO_L13N_T2_MRCC_15 | User IO | | 15 | | | | | | | | | | | | | | +| E19 | | High Range | IO_L17N_T2_A25_15 | User IO | | 15 | | | | | | | | | | | | | | +| E20 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| E21 | | High Range | IO_L7P_T1_D09_14 | User IO | | 14 | | | | | | | | | | | | | | +| E22 | | High Range | IO_L7N_T1_D10_14 | User IO | | 14 | | | | | | | | | | | | | | +| F1 | | | MGTXTXN0_115 | Gigabit | | | | | | | | | | | | | | | | +| F2 | | | MGTXTXP0_115 | Gigabit | | | | | | | | | | | | | | | | +| F3 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| F4 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| F5 | | | MGTREFCLK1N_115 | Gigabit | | | | | | | | | | | | | | | | +| F6 | | | MGTREFCLK1P_115 | Gigabit | | | | | | | | | | | | | | | | +| F7 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| F8 | | High Range | IO_L17N_T2_16 | User IO | | 16 | | | | | | | | | | | | | | +| F9 | | High Range | IO_L15P_T2_DQS_16 | User IO | | 16 | | | | | | | | | | | | | | +| F10 | | High Range | IO_L11N_T1_SRCC_16 | User IO | | 16 | | | | | | | | | | | | | | +| F11 | | High Range | IO_L11P_T1_SRCC_16 | User IO | | 16 | | | | | | | | | | | | | | +| F12 | | High Range | VCCO_16 | VCCO | | 16 | | | | | any** | | | | | | | | | +| F13 | | High Range | IO_L8N_T1_16 | User IO | | 16 | | | | | | | | | | | | | | +| F14 | | High Range | IO_6_T0_VREF_16 | User IO | | 16 | | | | | | | | | | | | | | +| F15 | | High Range | IO_L3P_T0_DQS_AD1P_15 | User IO | | 15 | | | | | | | | | | | | | | +| F16 | | High Range | IO_L3N_T0_DQS_AD1N_15 | User IO | | 15 | | | | | | | | | | | | | | +| F17 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| F18 | | High Range | IO_L17P_T2_A26_15 | User IO | | 15 | | | | | | | | | | | | | | +| F19 | | High Range | IO_L2N_T0_D03_14 | User IO | | 14 | | | | | | | | | | | | | | +| F20 | | High Range | IO_L4N_T0_D05_14 | User IO | | 14 | | | | | | | | | | | | | | +| F21 | | High Range | IO_L9N_T1_DQS_D13_14 | User IO | | 14 | | | | | | | | | | | | | | +| F22 | | High Range | VCCO_14 | VCCO | | 14 | | | | | any** | | | | | | | | | +| G1 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| G2 | | | MGTAVTT | Gigabit Power | | | | | | | | | | | | | | | | +| G3 | | | MGTXRXN0_115 | Gigabit | | | | | | | | | | | | | | | | +| G4 | | | MGTXRXP0_115 | Gigabit | | | | | | | | | | | | | | | | +| G5 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| G6 | | | MGTAVCC | Gigabit Power | | | | | | | | | | | | | | | | +| G7 | | Dedicated | CCLK_0 | Config | | 0 | | | | | | | | | | | | | | +| G8 | | High Range | IO_L17P_T2_16 | User IO | | 16 | | | | | | | | | | | | | | +| G9 | | High Range | VCCO_16 | VCCO | | 16 | | | | | any** | | | | | | | | | +| G10 | | High Range | IO_L13N_T2_MRCC_16 | User IO | | 16 | | | | | | | | | | | | | | +| G11 | | High Range | IO_L13P_T2_MRCC_16 | User IO | | 16 | | | | | | | | | | | | | | +| G12 | | High Range | IO_L14N_T2_SRCC_16 | User IO | | 16 | | | | | | | | | | | | | | +| G13 | | High Range | IO_L8P_T1_16 | User IO | | 16 | | | | | | | | | | | | | | +| G14 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| G15 | | High Range | IO_L1P_T0_AD0P_15 | User IO | | 15 | | | | | | | | | | | | | | +| G16 | | High Range | IO_L1N_T0_AD0N_15 | User IO | | 15 | | | | | | | | | | | | | | +| G17 | | High Range | IO_L15N_T2_DQS_ADV_B_15 | User IO | | 15 | | | | | | | | | | | | | | +| G18 | | High Range | IO_L2P_T0_D02_14 | User IO | | 14 | | | | | | | | | | | | | | +| G19 | | High Range | VCCO_14 | VCCO | | 14 | | | | | any** | | | | | | | | | +| G20 | | High Range | IO_L4P_T0_D04_14 | User IO | | 14 | | | | | | | | | | | | | | +| G21 | | High Range | IO_L9P_T1_DQS_14 | User IO | | 14 | | | | | | | | | | | | | | +| G22 | | High Range | IO_L8N_T1_D12_14 | User IO | | 14 | | | | | | | | | | | | | | +| H1 | | | MGTAVTTRCAL_115 | Gigabit | | | | | | | | | | | | | | | | +| H2 | | | MGTRREF_115 | Gigabit | | | | | | | | | | | | | | | | +| H3 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| H4 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| H5 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| H6 | | Dedicated | M1_0 | Config | | 0 | | | | | | | | | | | | | | +| H7 | | Dedicated | M0_0 | Config | | 0 | | | | | | | | | | | | | | +| H8 | | High Range | IO_L16N_T2_16 | User IO | | 16 | | | | | | | | | | | | | | +| H9 | | High Range | IO_L16P_T2_16 | User IO | | 16 | | | | | | | | | | | | | | +| H10 | | High Range | IO_18_T2_16 | User IO | | 16 | | | | | | | | | | | | | | +| H11 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| H12 | | High Range | IO_L14P_T2_SRCC_16 | User IO | | 16 | | | | | | | | | | | | | | +| H13 | | High Range | IO_L9N_T1_DQS_16 | User IO | | 16 | | | | | | | | | | | | | | +| H14 | | High Range | IO_L9P_T1_DQS_16 | User IO | | 16 | | | | | | | | | | | | | | +| H15 | | High Range | IO_25_15 | User IO | | 15 | | | | | | | | | | | | | | +| H16 | | High Range | VCCO_15 | VCCO | | 15 | | | | | any** | | | | | | | | | +| H17 | | High Range | IO_L15P_T2_DQS_15 | User IO | | 15 | | | | | | | | | | | | | | +| H18 | | High Range | IO_L1P_T0_D00_MOSI_14 | User IO | | 14 | | | | | | | | | | | | | | +| H19 | | High Range | IO_L1N_T0_D01_DIN_14 | User IO | | 14 | | | | | | | | | | | | | | +| H20 | | High Range | IO_L11N_T1_SRCC_14 | User IO | | 14 | | | | | | | | | | | | | | +| H21 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| H22 | | High Range | IO_L8P_T1_D11_14 | User IO | | 14 | | | | | | | | | | | | | | +| J1 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| J2 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| J3 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| J4 | | | MGTVCCAUX | Gigabit Power | | | | | | | | | | | | | | | | +| J5 | | Dedicated | M2_0 | Config | | 0 | | | | | | | | | | | | | | +| J6 | | Dedicated | TDO_0 | Config | | 0 | | | | | | | | | | | | | | +| J7 | | Dedicated | VCCO_0 | VCCO | | 0 | | | | | any** | | | | | | | | | +| J8 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| J9 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| J10 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| J11 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| J12 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| J13 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| J14 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| J15 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| J16 | | High Range | IO_L16P_T2_A28_15 | User IO | | 15 | | | | | | | | | | | | | | +| J17 | | High Range | IO_L16N_T2_A27_15 | User IO | | 15 | | | | | | | | | | | | | | +| J18 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| J19 | | High Range | IO_L3N_T0_DQS_EMCCLK_14 | User IO | | 14 | | | | | | | | | | | | | | +| J20 | | High Range | IO_L11P_T1_SRCC_14 | User IO | | 14 | | | | | | | | | | | | | | +| J21 | | High Range | IO_L10P_T1_D14_14 | User IO | | 14 | | | | | | | | | | | | | | +| J22 | | High Range | IO_L10N_T1_D15_14 | User IO | | 14 | | | | | | | | | | | | | | +| K1 | | High Performance | IO_L2P_T0_34 | User IO | | 34 | | | | | | | | | | | | | | +| K2 | | High Performance | IO_L4N_T0_34 | User IO | | 34 | | | | | | | | | | | | | | +| K3 | | High Performance | IO_L4P_T0_34 | User IO | | 34 | | | | | | | | | | | | | | +| K4 | | High Performance | IO_0_VRN_34 | User IO | | 34 | | | | | | | | | | | | | | +| K5 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| K6 | | Dedicated | TDI_0 | Config | | 0 | | | | | | | | | | | | | | +| K7 | | Dedicated | TCK_0 | Config | | 0 | | | | | | | | | | | | | | +| K8 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| K9 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| K10 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | | | | +| K11 | | Dedicated | GNDADC_0 | XADC | | 0 | | | | | | | | | | | | | | +| K12 | | Dedicated | VCCADC_0 | XADC | | 0 | | | | | | | | | | | | | | +| K13 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| K14 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| K15 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| K16 | | High Range | IO_0_14 | User IO | | 14 | | | | | | | | | | | | | | +| K17 | | High Range | IO_L6N_T0_D08_VREF_14 | User IO | | 14 | | | | | | | | | | | | | | +| K18 | | High Range | IO_L3P_T0_DQS_PUDC_B_14 | User IO | | 14 | | | | | | | | | | | | | | +| K19 | | High Range | IO_L5N_T0_D07_14 | User IO | | 14 | | | | | | | | | | | | | | +| K20 | | High Range | VCCO_14 | VCCO | | 14 | | | | | any** | | | | | | | | | +| K21 | | High Range | IO_L16P_T2_CSI_B_14 | User IO | | 14 | | | | | | | | | | | | | | +| K22 | | High Range | IO_L16N_T2_A15_D31_14 | User IO | | 14 | | | | | | | | | | | | | | +| L1 | | High Performance | IO_L2N_T0_34 | User IO | | 34 | | | | | | | | | | | | | | +| L2 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| L3 | | High Performance | IO_L1P_T0_34 | User IO | | 34 | | | | | | | | | | | | | | +| L4 | | High Performance | IO_L6N_T0_VREF_34 | User IO | | 34 | | | | | | | | | | | | | | +| L5 | | High Performance | IO_L6P_T0_34 | User IO | | 34 | | | | | | | | | | | | | | +| L6 | | Dedicated | TMS_0 | Config | | 0 | | | | | | | | | | | | | | +| L7 | | Dedicated | INIT_B_0 | Config | | 0 | | | | | | | | | | | | | | +| L8 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| L9 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| L10 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| L11 | | Dedicated | VREFN_0 | XADC | | 0 | | | | | | | | | | | | | | +| L12 | | Dedicated | VP_0 | XADC | | 0 | | | | | | | | | | | | | | +| L13 | | | VCCBRAM | VCCBRAM | | | | | | | | | | | | | | | | +| L14 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| L15 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| L16 | | High Range | IO_L6P_T0_FCS_B_14 | User IO | | 14 | | | | | | | | | | | | | | +| L17 | | High Range | VCCO_14 | VCCO | | 14 | | | | | any** | | | | | | | | | +| L18 | | High Range | IO_L5P_T0_D06_14 | User IO | | 14 | | | | | | | | | | | | | | +| L19 | | High Range | IO_L12P_T1_MRCC_14 | User IO | | 14 | | | | | | | | | | | | | | +| L20 | | High Range | IO_L12N_T1_MRCC_14 | User IO | | 14 | | | | | | | | | | | | | | +| L21 | | High Range | IO_L18N_T2_A11_D27_14 | User IO | | 14 | | | | | | | | | | | | | | +| L22 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| M1 | | High Performance | IO_L3N_T0_DQS_34 | User IO | | 34 | | | | | | | | | | | | | | +| M2 | | High Performance | IO_L3P_T0_DQS_34 | User IO | | 34 | | | | | | | | | | | | | | +| M3 | | High Performance | IO_L1N_T0_34 | User IO | | 34 | | | | | | | | | | | | | | +| M4 | | High Performance | VCCO_34 | VCCO | | 34 | | | | | 0.00-1.80 | | | | | | | | | +| M5 | | High Performance | IO_L9P_T1_DQS_34 | User IO | | 34 | | | | | | | | | | | | | | +| M6 | | Dedicated | PROGRAM_B_0 | Config | | 0 | | | | | | | | | | | | | | +| M7 | | Dedicated | CFGBVS_0 | Config | | 0 | | | | | | | | | | | | | | +| M8 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| M9 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| M10 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | | | | +| M11 | | Dedicated | VN_0 | XADC | | 0 | | | | | | | | | | | | | | +| M12 | | Dedicated | VREFP_0 | XADC | | 0 | | | | | | | | | | | | | | +| M13 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| M14 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| M15 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| M16 | | High Range | IO_25_14 | User IO | | 14 | | | | | | | | | | | | | | +| M17 | | High Range | IO_L14P_T2_SRCC_14 | User IO | | 14 | | | | | | | | | | | | | | +| M18 | | High Range | IO_L14N_T2_SRCC_14 | User IO | | 14 | | | | | | | | | | | | | | +| M19 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| M20 | | High Range | IO_L18P_T2_A12_D28_14 | User IO | | 14 | | | | | | | | | | | | | | +| M21 | | High Range | IO_L17N_T2_A13_D29_14 | User IO | | 14 | | | | | | | | | | | | | | +| M22 | | High Range | IO_L15N_T2_DQS_DOUT_CSO_B_14 | User IO | | 14 | | | | | | | | | | | | | | +| N1 | | High Performance | VCCO_34 | VCCO | | 34 | | | | | 0.00-1.80 | | | | | | | | | +| N2 | | High Performance | IO_L5N_T0_34 | User IO | | 34 | | | | | | | | | | | | | | +| N3 | | High Performance | IO_L5P_T0_34 | User IO | | 34 | | | | | | | | | | | | | | +| N4 | | High Performance | IO_L9N_T1_DQS_34 | User IO | | 34 | | | | | | | | | | | | | | +| N5 | | High Performance | IO_L18P_T2_34 | User IO | | 34 | | | | | | | | | | | | | | +| N6 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| N7 | | Dedicated | VCCO_0 | VCCO | | 0 | | | | | any** | | | | | | | | | +| N8 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| N9 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| N10 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| N11 | | Dedicated | DXN_0 | Temp Sensor | | 0 | | | | | | | | | | | | | | +| N12 | | Dedicated | DXP_0 | Temp Sensor | | 0 | | | | | | | | | | | | | | +| N13 | | | VCCBRAM | VCCBRAM | | | | | | | | | | | | | | | | +| N14 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| N15 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| N16 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| N17 | | High Range | IO_L23N_T3_A02_D18_14 | User IO | | 14 | | | | | | | | | | | | | | +| N18 | | High Range | IO_L13P_T2_MRCC_14 | User IO | | 14 | | | | | | | | | | | | | | +| N19 | | High Range | IO_L13N_T2_MRCC_14 | User IO | | 14 | | | | | | | | | | | | | | +| N20 | | High Range | IO_L17P_T2_A14_D30_14 | User IO | | 14 | | | | | | | | | | | | | | +| N21 | | High Range | VCCO_14 | VCCO | | 14 | | | | | any** | | | | | | | | | +| N22 | | High Range | IO_L15P_T2_DQS_RDWR_B_14 | User IO | | 14 | | | | | | | | | | | | | | +| P1 | | High Performance | IO_L8P_T1_34 | User IO | | 34 | | | | | | | | | | | | | | +| P2 | | High Performance | IO_L7P_T1_34 | User IO | | 34 | | | | | | | | | | | | | | +| P3 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| P4 | | High Performance | IO_L11P_T1_SRCC_34 | User IO | | 34 | | | | | | | | | | | | | | +| P5 | | High Performance | IO_L18N_T2_34 | User IO | | 34 | | | | | | | | | | | | | | +| P6 | | Dedicated | DONE_0 | Config | | 0 | | | | | | | | | | | | | | +| P7 | | Dedicated | VCCBATT_0 | Config | | 0 | | | | | | | | | | | | | | +| P8 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | | | | +| P9 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| P10 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | | | | +| P11 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| P12 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | | | | +| P13 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| P14 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| P15 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| P16 | | High Range | IO_L23P_T3_A03_D19_14 | User IO | | 14 | | | | | | | | | | | | | | +| P17 | | High Range | IO_L21N_T3_DQS_A06_D22_14 | User IO | | 14 | | | | | | | | | | | | | | +| P18 | | High Range | VCCO_14 | VCCO | | 14 | | | | | any** | | | | | | | | | +| P19 | | High Range | IO_L20P_T3_A08_D24_14 | User IO | | 14 | | | | | | | | | | | | | | +| P20 | | High Range | IO_L20N_T3_A07_D23_14 | User IO | | 14 | | | | | | | | | | | | | | +| P21 | | High Range | IO_L22P_T3_A05_D21_14 | User IO | | 14 | | | | | | | | | | | | | | +| P22 | | High Range | IO_L22N_T3_A04_D20_14 | User IO | | 14 | | | | | | | | | | | | | | +| R1 | | High Performance | IO_L8N_T1_34 | User IO | | 34 | | | | | | | | | | | | | | +| R2 | | High Performance | IO_L7N_T1_34 | User IO | | 34 | | | | | | | | | | | | | | +| R3 | | High Performance | IO_L12P_T1_MRCC_34 | User IO | | 34 | | | | | | | | | | | | | | +| R4 | | High Performance | IO_L11N_T1_SRCC_34 | User IO | | 34 | | | | | | | | | | | | | | +| R5 | | High Performance | VCCO_34 | VCCO | | 34 | | | | | 0.00-1.80 | | | | | | | | | +| R6 | | High Performance | IO_L8N_T1_33 | User IO | | 33 | | | | | | | | | | | | | | +| R7 | | High Performance | IO_L8P_T1_33 | User IO | | 33 | | | | | | | | | | | | | | +| R8 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| R9 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | | | | +| R10 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| R11 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | | | | +| R12 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| R13 | | | VCCBRAM | VCCBRAM | | | | | | | | | | | | | | | | +| R14 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| R15 | | | VCCINT | VCCINT | | | | | | | | | | | | | | | | +| R16 | reset | High Range | IO_L20P_T3_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| R17 | | High Range | IO_L21P_T3_DQS_14 | User IO | | 14 | | | | | | | | | | | | | | +| R18 | | High Range | IO_L19P_T3_A10_D26_14 | User IO | | 14 | | | | | | | | | | | | | | +| R19 | | High Range | IO_L19N_T3_A09_D25_VREF_14 | User IO | | 14 | | | | | | | | | | | | | | +| R20 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| R21 | | High Range | IO_L24P_T3_A01_D17_14 | User IO | | 14 | | | | | | | | | | | | | | +| R22 | | High Range | IO_L24N_T3_A00_D16_14 | User IO | | 14 | | | | | | | | | | | | | | +| T1 | | High Performance | IO_L10P_T1_34 | User IO | | 34 | | | | | | | | | | | | | | +| T2 | | High Performance | VCCO_34 | VCCO | | 34 | | | | | 0.00-1.80 | | | | | | | | | +| T3 | | High Performance | IO_L12N_T1_MRCC_34 | User IO | | 34 | | | | | | | | | | | | | | +| T4 | | High Performance | IO_L13P_T2_MRCC_34 | User IO | | 34 | | | | | | | | | | | | | | +| T5 | | High Performance | IO_L16P_T2_34 | User IO | | 34 | | | | | | | | | | | | | | +| T6 | | High Performance | IO_0_VRN_33 | User IO | | 33 | | | | | | | | | | | | | | +| T7 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| T8 | | High Performance | IO_L18N_T2_33 | User IO | | 33 | | | | | | | | | | | | | | +| T9 | | High Performance | IO_L18P_T2_33 | User IO | | 33 | | | | | | | | | | | | | | +| T10 | | High Performance | IO_L16N_T2_33 | User IO | | 33 | | | | | | | | | | | | | | +| T11 | | High Performance | IO_L16P_T2_33 | User IO | | 33 | | | | | | | | | | | | | | +| T12 | | High Performance | VCCO_33 | VCCO | | 33 | | | | | 0.00-1.80 | | | | | | | | | +| T13 | | High Performance | IO_L24P_T3_33 | User IO | | 33 | | | | | | | | | | | | | | +| T14 | | High Performance | IO_25_VRP_33 | User IO | | 33 | | | | | | | | | | | | | | +| T15 | AddrIn[2] | High Range | IO_L24P_T3_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| T16 | op_idx | High Range | IO_L20N_T3_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| T17 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| T18 | | High Range | IO_L3P_T0_DQS_13 | User IO | | 13 | | | | | | | | | | | | | | +| T19 | | High Range | IO_0_13 | User IO | | 13 | | | | | | | | | | | | | | +| T20 | | High Range | IO_L6P_T0_13 | User IO | | 13 | | | | | | | | | | | | | | +| T21 | | High Range | IO_L1P_T0_13 | User IO | | 13 | | | | | | | | | | | | | | +| T22 | | High Range | VCCO_13 | VCCO | | 13 | | | | | 1.80 | | | | | | | | | +| U1 | | High Performance | IO_L10N_T1_34 | User IO | | 34 | | | | | | | | | | | | | | +| U2 | | High Performance | IO_L15P_T2_DQS_34 | User IO | | 34 | | | | | | | | | | | | | | +| U3 | | High Performance | IO_L13N_T2_MRCC_34 | User IO | | 34 | | | | | | | | | | | | | | +| U4 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| U5 | | High Performance | IO_L16N_T2_34 | User IO | | 34 | | | | | | | | | | | | | | +| U6 | | High Performance | IO_L10N_T1_33 | User IO | | 33 | | | | | | | | | | | | | | +| U7 | | High Performance | IO_L10P_T1_33 | User IO | | 33 | | | | | | | | | | | | | | +| U8 | | High Performance | IO_L9P_T1_DQS_33 | User IO | | 33 | | | | | | | | | | | | | | +| U9 | | High Performance | VCCO_33 | VCCO | | 33 | | | | | 0.00-1.80 | | | | | | | | | +| U10 | | High Performance | IO_L14P_T2_SRCC_33 | User IO | | 33 | | | | | | | | | | | | | | +| U11 | | High Performance | IO_L17N_T2_33 | User IO | | 33 | | | | | | | | | | | | | | +| U12 | | High Performance | IO_L17P_T2_33 | User IO | | 33 | | | | | | | | | | | | | | +| U13 | | High Performance | IO_L24N_T3_33 | User IO | | 33 | | | | | | | | | | | | | | +| U14 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| U15 | AddrIn[1] | High Range | IO_L24N_T3_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| U16 | AddrOut[1] | High Range | IO_L19P_T3_13 | OUTPUT | LVCMOS18* | 13 | 12 | SLOW | | FP_VTT_50 | | UNFIXED | | | | NONE | | | | +| U17 | | High Range | IO_L5P_T0_13 | User IO | | 13 | | | | | | | | | | | | | | +| U18 | | High Range | IO_L3N_T0_DQS_13 | User IO | | 13 | | | | | | | | | | | | | | +| U19 | | High Range | VCCO_13 | VCCO | | 13 | | | | | 1.80 | | | | | | | | | +| U20 | | High Range | IO_L6N_T0_VREF_13 | User IO | | 13 | | | | | | | | | | | | | | +| U21 | | High Range | IO_L1N_T0_13 | User IO | | 13 | | | | | | | | | | | | | | +| U22 | | High Range | IO_L2P_T0_13 | User IO | | 13 | | | | | | | | | | | | | | +| V1 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| V2 | | High Performance | IO_L15N_T2_DQS_34 | User IO | | 34 | | | | | | | | | | | | | | +| V3 | | High Performance | IO_L17P_T2_34 | User IO | | 34 | | | | | | | | | | | | | | +| V4 | | High Performance | IO_L14P_T2_SRCC_34 | User IO | | 34 | | | | | | | | | | | | | | +| V5 | | High Performance | IO_25_VRP_34 | User IO | | 34 | | | | | | | | | | | | | | +| V6 | | High Performance | VCCO_33 | VCCO | | 33 | | | | | 0.00-1.80 | | | | | | | | | +| V7 | | High Performance | IO_L11P_T1_SRCC_33 | User IO | | 33 | | | | | | | | | | | | | | +| V8 | | High Performance | IO_L9N_T1_DQS_33 | User IO | | 33 | | | | | | | | | | | | | | +| V9 | | High Performance | IO_L14N_T2_SRCC_33 | User IO | | 33 | | | | | | | | | | | | | | +| V10 | | High Performance | IO_L15P_T2_DQS_33 | User IO | | 33 | | | | | | | | | | | | | | +| V11 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| V12 | | High Performance | IO_L23N_T3_33 | User IO | | 33 | | | | | | | | | | | | | | +| V13 | | High Performance | IO_L23P_T3_33 | User IO | | 33 | | | | | | | | | | | | | | +| V14 | AddrIn[0] | High Range | IO_25_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| V15 | AddrIn[4] | High Range | IO_L23P_T3_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| V16 | | High Range | VCCO_13 | VCCO | | 13 | | | | | 1.80 | | | | | | | | | +| V17 | AddrOut[0] | High Range | IO_L19N_T3_VREF_13 | OUTPUT | LVCMOS18* | 13 | 12 | SLOW | | FP_VTT_50 | | UNFIXED | | | | NONE | | | | +| V18 | | High Range | IO_L5N_T0_13 | User IO | | 13 | | | | | | | | | | | | | | +| V19 | | High Range | IO_L12P_T1_MRCC_13 | User IO | | 13 | | | | | | | | | | | | | | +| V20 | clk | High Range | IO_L11P_T1_SRCC_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| V21 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| V22 | | High Range | IO_L2N_T0_13 | User IO | | 13 | | | | | | | | | | | | | | +| W1 | | High Performance | IO_L20P_T3_34 | User IO | | 34 | | | | | | | | | | | | | | +| W2 | | High Performance | IO_L17N_T2_34 | User IO | | 34 | | | | | | | | | | | | | | +| W3 | | High Performance | VCCO_34 | VCCO | | 34 | | | | | 0.00-1.80 | | | | | | | | | +| W4 | | High Performance | IO_L14N_T2_SRCC_34 | User IO | | 34 | | | | | | | | | | | | | | +| W5 | | High Performance | IO_L19P_T3_34 | User IO | | 34 | | | | | | | | | | | | | | +| W6 | | High Performance | IO_L7P_T1_33 | User IO | | 33 | | | | | | | | | | | | | | +| W7 | | High Performance | IO_L11N_T1_SRCC_33 | User IO | | 33 | | | | | | | | | | | | | | +| W8 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| W9 | | High Performance | IO_L13P_T2_MRCC_33 | User IO | | 33 | | | | | | | | | | | | | | +| W10 | | High Performance | IO_L15N_T2_DQS_33 | User IO | | 33 | | | | | | | | | | | | | | +| W11 | | High Performance | IO_L6P_T0_33 | User IO | | 33 | | | | | | | | | | | | | | +| W12 | | High Performance | IO_L19P_T3_33 | User IO | | 33 | | | | | | | | | | | | | | +| W13 | | High Performance | VCCO_33 | VCCO | | 33 | | | | | 0.00-1.80 | | | | | | | | | +| W14 | AddrIn[6] | High Range | IO_L22P_T3_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| W15 | AddrIn[3] | High Range | IO_L23N_T3_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| W16 | AddrIn[8] | High Range | IO_L21P_T3_DQS_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| W17 | | High Range | IO_L14P_T2_SRCC_13 | User IO | | 13 | | | | | | | | | | | | | | +| W18 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| W19 | | High Range | IO_L12N_T1_MRCC_13 | User IO | | 13 | | | | | | | | | | | | | | +| W20 | | High Range | IO_L11N_T1_SRCC_13 | User IO | | 13 | | | | | | | | | | | | | | +| W21 | | High Range | IO_L4P_T0_13 | User IO | | 13 | | | | | | | | | | | | | | +| W22 | | High Range | IO_L4N_T0_13 | User IO | | 13 | | | | | | | | | | | | | | +| Y1 | | High Performance | IO_L20N_T3_34 | User IO | | 34 | | | | | | | | | | | | | | +| Y2 | | High Performance | IO_L21N_T3_DQS_34 | User IO | | 34 | | | | | | | | | | | | | | +| Y3 | | High Performance | IO_L21P_T3_DQS_34 | User IO | | 34 | | | | | | | | | | | | | | +| Y4 | | High Performance | IO_L19N_T3_VREF_34 | User IO | | 34 | | | | | | | | | | | | | | +| Y5 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| Y6 | | High Performance | IO_L7N_T1_33 | User IO | | 33 | | | | | | | | | | | | | | +| Y7 | | High Performance | IO_L12N_T1_MRCC_33 | User IO | | 33 | | | | | | | | | | | | | | +| Y8 | | High Performance | IO_L12P_T1_MRCC_33 | User IO | | 33 | | | | | | | | | | | | | | +| Y9 | | High Performance | IO_L13N_T2_MRCC_33 | User IO | | 33 | | | | | | | | | | | | | | +| Y10 | | High Performance | VCCO_33 | VCCO | | 33 | | | | | 0.00-1.80 | | | | | | | | | +| Y11 | | High Performance | IO_L6N_T0_VREF_33 | User IO | | 33 | | | | | | | | | | | | | | +| Y12 | | High Performance | IO_L19N_T3_VREF_33 | User IO | | 33 | | | | | | | | | | | | | | +| Y13 | | High Performance | IO_L21P_T3_DQS_33 | User IO | | 33 | | | | | | | | | | | | | | +| Y14 | AddrIn[5] | High Range | IO_L22N_T3_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| Y15 | | | GND | GND | | | | | | | 0.0 | | | | | | | | | +| Y16 | AddrIn[7] | High Range | IO_L21N_T3_DQS_13 | INPUT | LVCMOS18* | 13 | | | | NONE | | UNFIXED | | | | NONE | | | | +| Y17 | | High Range | IO_L14N_T2_SRCC_13 | User IO | | 13 | | | | | | | | | | | | | | +| Y18 | | High Range | IO_L13P_T2_MRCC_13 | User IO | | 13 | | | | | | | | | | | | | | +| Y19 | | High Range | IO_L13N_T2_MRCC_13 | User IO | | 13 | | | | | | | | | | | | | | +| Y20 | | High Range | VCCO_13 | VCCO | | 13 | | | | | 1.80 | | | | | | | | | +| Y21 | | High Range | IO_L7P_T1_13 | User IO | | 13 | | | | | | | | | | | | | | +| Y22 | | High Range | IO_L7N_T1_13 | User IO | | 13 | | | | | | | | | | | | | | ++------------+-------------+------------------+------------------------------+---------------+-------------+---------+------------+------+---------------------+----------------------+-----------+------------+-----------+----------+------+------------------+--------------+-------------------+--------------+ +* Default value +** Special VCCO requirements may apply. Please consult the device family datasheet for specific guideline on VCCO requirements. + + diff --git a/lab2CA.runs/impl_1/FetchUnit_methodology_drc_routed.pb b/lab2CA.runs/impl_1/FetchUnit_methodology_drc_routed.pb new file mode 100644 index 0000000000000000000000000000000000000000..c491e055003f7fef7517f3da4b3dd24b80e4cad8 GIT binary patch literal 52 zcmd;LGcqtV(=(jJEajV8l98X1pOc?nso + Max violations: + Violations found: 9 ++-----------+----------+-----------------------------+------------+ +| Rule | Severity | Description | Violations | ++-----------+----------+-----------------------------+------------+ +| TIMING-17 | Warning | Non-clocked sequential cell | 9 | ++-----------+----------+-----------------------------+------------+ + +2. REPORT DETAILS +----------------- +TIMING-17#1 Warning +Non-clocked sequential cell +The clock pin PC/Dout_reg[0]/C is not reached by a timing clock +Related violations: + +TIMING-17#2 Warning +Non-clocked sequential cell +The clock pin PC/Dout_reg[1]/C is not reached by a timing clock +Related violations: + +TIMING-17#3 Warning +Non-clocked sequential cell +The clock pin PC/Dout_reg[2]/C is not reached by a timing clock +Related violations: + +TIMING-17#4 Warning +Non-clocked sequential cell +The clock pin PC/Dout_reg[3]/C is not reached by a timing clock +Related violations: + +TIMING-17#5 Warning +Non-clocked sequential cell +The clock pin PC/Dout_reg[4]/C is not reached by a timing clock +Related violations: + +TIMING-17#6 Warning +Non-clocked sequential cell +The clock pin PC/Dout_reg[5]/C is not reached by a timing clock +Related violations: + +TIMING-17#7 Warning +Non-clocked sequential cell +The clock pin PC/Dout_reg[6]/C is not reached by a timing clock +Related violations: + +TIMING-17#8 Warning +Non-clocked sequential cell +The clock pin PC/Dout_reg[7]/C is not reached by a timing clock +Related violations: + +TIMING-17#9 Warning +Non-clocked sequential cell +The clock pin PC/Dout_reg[8]/C is not reached by a timing clock +Related violations: + + diff --git a/lab2CA.runs/impl_1/FetchUnit_opt.dcp b/lab2CA.runs/impl_1/FetchUnit_opt.dcp new file mode 100644 index 0000000000000000000000000000000000000000..f714e82c22656a144575ccd3aff9209b065eae54 GIT binary patch literal 14153 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 R@3ft~-@j3@)HSmg|33}my + + +1.1 On-Chip Components +---------------------- + ++----------------+-----------+----------+-----------+-----------------+ +| On-Chip | Power (W) | Used | Available | Utilization (%) | ++----------------+-----------+----------+-----------+-----------------+ +| Slice Logic | 0.130 | 31 | --- | --- | +| LUT as Logic | 0.120 | 15 | 101400 | 0.01 | +| BUFG | 0.005 | 1 | 32 | 3.13 | +| Register | 0.005 | 9 | 202800 | <0.01 | +| Others | 0.000 | 1 | --- | --- | +| Signals | 0.183 | 33 | --- | --- | +| I/O | 5.644 | 21 | 285 | 7.37 | +| Static Power | 0.108 | | | | +| Total | 6.065 | | | | ++----------------+-----------+----------+-----------+-----------------+ + + +1.2 Power Supply Summary +------------------------ + ++-----------+-------------+-----------+-------------+------------+ +| Source | Voltage (V) | Total (A) | Dynamic (A) | Static (A) | ++-----------+-------------+-----------+-------------+------------+ +| Vccint | 0.950 | 0.416 | 0.373 | 0.043 | +| Vccaux | 1.800 | 0.476 | 0.459 | 0.018 | +| Vcco33 | 3.300 | 0.000 | 0.000 | 0.000 | +| Vcco25 | 2.500 | 0.000 | 0.000 | 0.000 | +| Vcco18 | 1.800 | 2.655 | 2.654 | 0.001 | +| Vcco15 | 1.500 | 0.000 | 0.000 | 0.000 | +| Vcco135 | 1.350 | 0.000 | 0.000 | 0.000 | +| Vcco12 | 1.200 | 0.000 | 0.000 | 0.000 | +| Vccaux_io | 1.800 | 0.000 | 0.000 | 0.000 | +| Vccbram | 0.950 | 0.001 | 0.000 | 0.001 | +| MGTAVcc | 1.000 | 0.000 | 0.000 | 0.000 | +| MGTAVtt | 1.200 | 0.000 | 0.000 | 0.000 | +| MGTVccaux | 1.800 | 0.000 | 0.000 | 0.000 | +| Vccadc | 1.800 | 0.018 | 0.000 | 0.018 | ++-----------+-------------+-----------+-------------+------------+ + + +1.3 Confidence Level +-------------------- + ++-----------------------------+------------+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+ +| User Input Data | Confidence | Details | Action | ++-----------------------------+------------+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+ +| Design implementation state | High | Design is routed | | +| Clock nodes activity | Low | User specified less than 75% of clocks | Provide missing clock activity with a constraint file, simulation results or by editing the "By Clock Domain" view | +| I/O nodes activity | Low | More than 75% of inputs are missing user specification | Provide missing input activity with simulation results or by editing the "By Resource Type -> I/Os" view | +| Internal nodes activity | Medium | User specified less than 25% of internal nodes | Provide missing internal nodes activity with simulation results or by editing the "By Resource Type" views | +| Device models | High | Device models are Production | | +| | | | | +| Overall confidence level | Low | | | ++-----------------------------+------------+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+ + + +2. Settings +----------- + +2.1 Environment +--------------- + ++-----------------------+--------------------------+ +| Ambient Temp (C) | 25.0 | +| ThetaJA (C/W) | 2.5 | +| Airflow (LFM) | 250 | +| Heat Sink | medium (Medium Profile) | +| ThetaSA (C/W) | 4.2 | +| Board Selection | medium (10"x10") | +| # of Board Layers | 12to15 (12 to 15 Layers) | +| Board Temperature (C) | 25.0 | ++-----------------------+--------------------------+ + + +2.2 Clock Constraints +--------------------- + ++-------+--------+-----------------+ +| Clock | Domain | Constraint (ns) | ++-------+--------+-----------------+ + + +3. Detailed Reports +------------------- + +3.1 By Hierarchy +---------------- + ++-----------+-----------+ +| Name | Power (W) | ++-----------+-----------+ +| FetchUnit | 5.957 | +| PC | 0.270 | ++-----------+-----------+ + + diff --git a/lab2CA.runs/impl_1/FetchUnit_power_summary_routed.pb b/lab2CA.runs/impl_1/FetchUnit_power_summary_routed.pb new file mode 100644 index 0000000000000000000000000000000000000000..0778cecfc3cd4092f3ada76c8e0dcf721ff68792 GIT binary patch literal 722 zcmZ|NL2J}N6bJAbTJ}&BWIYLD=U{uWEV@{&7T0uHMX7~)DD|QclG*LpWM<7IyKX^R zl^i??h3G{Q3IT6|n2W-Ki-Dec5OYv_&_cd|kb|c>Z&suibNKP+%}XBP%~+{=`b@QQ zc5`HHQFN(COl~?o$s}od!X?+;wnJUYeQFav?(URo_UC zBJ`;q9z*KMwDI`E+H9>DN60YJiTU57wP;cu8u=;cNv6QC3TE1Pru=pHQZb_nMtT8q zbP;k6qGT3KYhZL4%o|{G1q`o(nKqo)SsUMkTxio}$k8n@zYQjLz|aOWZG0DUp-tP6 zqkCZ90h2Bm-Ul;n(Sw|>f#HLbW27EG#=C{6r%$lW`g8eHyuZJ`9zMg<^n?+=z|c6@ z!g%?|Ym7GDU^MuEM{bDj-bXxojkQ+Z4)Bo%m8`{y+N&o5warJ{y5;jWo?Mb@?XpcR z)?{j#dNuxv$;tWY2_l-ra)h-iw|4XkzjpAs1>sS0u!He-ptf$Rvdg4oyhVZoAGP!q z7<|E{1!}Xv-OO<1zeB6Tq3Rk@PhCaAg-zw&x4(b#9UpJd4ztuCRdGI>P`y2 H@e`vzoEPGP literal 0 HcmV?d00001 diff --git a/lab2CA.runs/impl_1/FetchUnit_route_status.pb b/lab2CA.runs/impl_1/FetchUnit_route_status.pb new file mode 100644 index 0000000000000000000000000000000000000000..c91052878e82800a991f1de3bf30053f387e1c3b GIT binary patch literal 43 ycmd;LGcqtV(leRFEE1GoT9T>|T#{H)TC5OUnwy(gRC$1h;eilCgQU^|c?JLr01Vmy literal 0 HcmV?d00001 diff --git a/lab2CA.runs/impl_1/FetchUnit_route_status.rpt b/lab2CA.runs/impl_1/FetchUnit_route_status.rpt new file mode 100644 index 0000000..c45cb30 --- /dev/null +++ b/lab2CA.runs/impl_1/FetchUnit_route_status.rpt @@ -0,0 +1,11 @@ +Design Route Status + : # nets : + ------------------------------------------- : ----------- : + # of logical nets.......................... : 64 : + # of nets not needing routing.......... : 30 : + # of internally routed nets........ : 30 : + # of routable nets..................... : 34 : + # of fully routed nets............. : 34 : + # of nets with routing errors.......... : 0 : + ------------------------------------------- : ----------- : + diff --git a/lab2CA.runs/impl_1/FetchUnit_routed.dcp b/lab2CA.runs/impl_1/FetchUnit_routed.dcp new file mode 100644 index 0000000000000000000000000000000000000000..40f9ec07d1b36f96eff950ec7ee01dac31a84b5f GIT binary patch literal 137423 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

a$L>iNs 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 literal 0 HcmV?d00001 diff --git a/lab2CA.runs/impl_1/FetchUnit_timing_summary_routed.pb b/lab2CA.runs/impl_1/FetchUnit_timing_summary_routed.pb new file mode 100644 index 0000000..4526e93 --- /dev/null +++ b/lab2CA.runs/impl_1/FetchUnit_timing_summary_routed.pb @@ -0,0 +1,2 @@ + +2012.4’)Timing analysis from Implemented netlist. \ No newline at end of file diff --git a/lab2CA.runs/impl_1/FetchUnit_timing_summary_routed.rpt b/lab2CA.runs/impl_1/FetchUnit_timing_summary_routed.rpt new file mode 100644 index 0000000..c1f1c2a --- /dev/null +++ b/lab2CA.runs/impl_1/FetchUnit_timing_summary_routed.rpt @@ -0,0 +1,173 @@ +Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2018.3 (win64) Build 2405991 Thu Dec 6 23:38:27 MST 2018 +| Date : Sat Feb 16 17:37:11 2019 +| Host : DESKTOP-8QFGS52 running 64-bit major release (build 9200) +| Command : report_timing_summary -max_paths 10 -file FetchUnit_timing_summary_routed.rpt -pb FetchUnit_timing_summary_routed.pb -rpx FetchUnit_timing_summary_routed.rpx -warn_on_violation +| Design : FetchUnit +| Device : 7k160ti-fbg484 +| Speed File : -2L PRODUCTION 1.12 2017-02-17 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +Timing Summary Report + +------------------------------------------------------------------------------------------------ +| Timer Settings +| -------------- +------------------------------------------------------------------------------------------------ + + Enable Multi Corner Analysis : Yes + Enable Pessimism Removal : Yes + Pessimism Removal Resolution : Nearest Common Node + Enable Input Delay Default Clock : No + Enable Preset / Clear Arcs : No + Disable Flight Delays : No + Ignore I/O Paths : No + Timing Early Launch at Borrowing Latches : false + + Corner Analyze Analyze + Name Max Paths Min Paths + ------ --------- --------- + Slow Yes Yes + Fast Yes Yes + + + +check_timing report + +Table of Contents +----------------- +1. checking no_clock +2. checking constant_clock +3. checking pulse_width_clock +4. checking unconstrained_internal_endpoints +5. checking no_input_delay +6. checking no_output_delay +7. checking multiple_clock +8. checking generated_clocks +9. checking loops +10. checking partial_input_delay +11. checking partial_output_delay +12. checking latch_loops + +1. checking no_clock +-------------------- + There are 9 register/latch pins with no clock driven by root clock pin: clk (HIGH) + + +2. checking constant_clock +-------------------------- + There are 0 register/latch pins with constant_clock. + + +3. checking pulse_width_clock +----------------------------- + There are 0 register/latch pins which need pulse_width check + + +4. checking unconstrained_internal_endpoints +-------------------------------------------- + There are 18 pins that are not constrained for maximum delay. (HIGH) + + There are 0 pins that are not constrained for maximum delay due to constant clock. + + +5. checking no_input_delay +-------------------------- + There are 11 input ports with no input delay specified. (HIGH) + + There are 0 input ports with no input delay but user has a false path constraint. + + +6. checking no_output_delay +--------------------------- + There are 9 ports with no output delay specified. (HIGH) + + There are 0 ports with no output delay but user has a false path constraint + + There are 0 ports with no output delay but with a timing clock defined on it or propagating through it + + +7. checking multiple_clock +-------------------------- + There are 0 register/latch pins with multiple clocks. + + +8. checking generated_clocks +---------------------------- + There are 0 generated clocks that are not connected to a clock source. + + +9. checking loops +----------------- + There are 0 combinational loops in the design. + + +10. checking partial_input_delay +-------------------------------- + There are 0 input ports with partial input delay specified. + + +11. checking partial_output_delay +--------------------------------- + There are 0 ports with partial output delay specified. + + +12. checking latch_loops +------------------------ + There are 0 combinational latch loops in the design through latch input + + + +------------------------------------------------------------------------------------------------ +| Design Timing Summary +| --------------------- +------------------------------------------------------------------------------------------------ + + WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints WPWS(ns) TPWS(ns) TPWS Failing Endpoints TPWS Total Endpoints + ------- ------- --------------------- ------------------- ------- ------- --------------------- ------------------- -------- -------- ---------------------- -------------------- + NA NA NA NA NA NA NA NA NA NA NA NA + + +There are no user specified timing constraints. + + +------------------------------------------------------------------------------------------------ +| Clock Summary +| ------------- +------------------------------------------------------------------------------------------------ + + +------------------------------------------------------------------------------------------------ +| Intra Clock Table +| ----------------- +------------------------------------------------------------------------------------------------ + +Clock WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints WPWS(ns) TPWS(ns) TPWS Failing Endpoints TPWS Total Endpoints +----- ------- ------- --------------------- ------------------- ------- ------- --------------------- ------------------- -------- -------- ---------------------- -------------------- + + +------------------------------------------------------------------------------------------------ +| Inter Clock Table +| ----------------- +------------------------------------------------------------------------------------------------ + +From Clock To Clock WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints +---------- -------- ------- ------- --------------------- ------------------- ------- ------- --------------------- ------------------- + + +------------------------------------------------------------------------------------------------ +| Other Path Groups Table +| ----------------------- +------------------------------------------------------------------------------------------------ + +Path Group From Clock To Clock WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints +---------- ---------- -------- ------- ------- --------------------- ------------------- ------- ------- --------------------- ------------------- + + +------------------------------------------------------------------------------------------------ +| Timing Details +| -------------- +------------------------------------------------------------------------------------------------ + + diff --git a/lab2CA.runs/impl_1/FetchUnit_utilization_placed.pb b/lab2CA.runs/impl_1/FetchUnit_utilization_placed.pb new file mode 100644 index 0000000000000000000000000000000000000000..83594ed8df17e7fa073bd7f04af44fe9cf4897b3 GIT binary patch literal 289 zcmd;LGcqu=&@-OItPxzAo10ivsgR$hP+F3ilUbEml9`_e;%28-Dioy_=a&{Grxxp- z*UdI;M^hz=S!Cgs)9USgUr9kYp z@(c_s9RJEQH1s(iRggOM+TpA!NPMmuL&GBHr)nT}uMvp63nax{mKuZDYb_WU8tnf9 zNd~8*mJAFY4wI}noI>5)okN0r&f0;L%(Vv+j!!`(!&?^+xz`m)IJUZh*uCB$@-C2U ua9HXCVt?|Hau11cHHvrk_x1Jn(}8k49R2)Uebxqol>7yf4faQaKx_bBPE4r) literal 0 HcmV?d00001 diff --git a/lab2CA.runs/impl_1/FetchUnit_utilization_placed.rpt b/lab2CA.runs/impl_1/FetchUnit_utilization_placed.rpt new file mode 100644 index 0000000..9a51d91 --- /dev/null +++ b/lab2CA.runs/impl_1/FetchUnit_utilization_placed.rpt @@ -0,0 +1,208 @@ +Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. +--------------------------------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2018.3 (win64) Build 2405991 Thu Dec 6 23:38:27 MST 2018 +| Date : Sat Feb 16 17:36:37 2019 +| Host : DESKTOP-8QFGS52 running 64-bit major release (build 9200) +| Command : report_utilization -file FetchUnit_utilization_placed.rpt -pb FetchUnit_utilization_placed.pb +| Design : FetchUnit +| Device : 7k160tifbg484-2L +| Design State : Fully Placed +--------------------------------------------------------------------------------------------------------------- + +Utilization Design Information + +Table of Contents +----------------- +1. Slice Logic +1.1 Summary of Registers by Type +2. Slice Logic Distribution +3. Memory +4. DSP +5. IO and GT Specific +6. Clocking +7. Specific Feature +8. Primitives +9. Black Boxes +10. Instantiated Netlists + +1. Slice Logic +-------------- + ++-------------------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-------------------------+------+-------+-----------+-------+ +| Slice LUTs | 15 | 0 | 101400 | 0.01 | +| LUT as Logic | 15 | 0 | 101400 | 0.01 | +| LUT as Memory | 0 | 0 | 35000 | 0.00 | +| Slice Registers | 9 | 0 | 202800 | <0.01 | +| Register as Flip Flop | 9 | 0 | 202800 | <0.01 | +| Register as Latch | 0 | 0 | 202800 | 0.00 | +| F7 Muxes | 0 | 0 | 50700 | 0.00 | +| F8 Muxes | 0 | 0 | 25350 | 0.00 | ++-------------------------+------+-------+-----------+-------+ + + +1.1 Summary of Registers by Type +-------------------------------- + ++-------+--------------+-------------+--------------+ +| Total | Clock Enable | Synchronous | Asynchronous | ++-------+--------------+-------------+--------------+ +| 0 | _ | - | - | +| 0 | _ | - | Set | +| 0 | _ | - | Reset | +| 0 | _ | Set | - | +| 0 | _ | Reset | - | +| 0 | Yes | - | - | +| 0 | Yes | - | Set | +| 0 | Yes | - | Reset | +| 0 | Yes | Set | - | +| 9 | Yes | Reset | - | ++-------+--------------+-------------+--------------+ + + +2. Slice Logic Distribution +--------------------------- + ++------------------------------------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++------------------------------------------+------+-------+-----------+-------+ +| Slice | 4 | 0 | 25350 | 0.02 | +| SLICEL | 4 | 0 | | | +| SLICEM | 0 | 0 | | | +| LUT as Logic | 15 | 0 | 101400 | 0.01 | +| using O5 output only | 0 | | | | +| using O6 output only | 10 | | | | +| using O5 and O6 | 5 | | | | +| LUT as Memory | 0 | 0 | 35000 | 0.00 | +| LUT as Distributed RAM | 0 | 0 | | | +| LUT as Shift Register | 0 | 0 | | | +| Slice Registers | 9 | 0 | 202800 | <0.01 | +| Register driven from within the Slice | 9 | | | | +| Register driven from outside the Slice | 0 | | | | +| Unique Control Sets | 1 | | 25350 | <0.01 | ++------------------------------------------+------+-------+-----------+-------+ +* Note: Available Control Sets calculated as Slice Registers / 8, Review the Control Sets Report for more information regarding control sets. + + +3. Memory +--------- + ++----------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++----------------+------+-------+-----------+-------+ +| Block RAM Tile | 0 | 0 | 325 | 0.00 | +| RAMB36/FIFO* | 0 | 0 | 325 | 0.00 | +| RAMB18 | 0 | 0 | 650 | 0.00 | ++----------------+------+-------+-----------+-------+ +* Note: Each Block RAM Tile only has one FIFO logic available and therefore can accommodate only one FIFO36E1 or one FIFO18E1. However, if a FIFO18E1 occupies a Block RAM Tile, that tile can still accommodate a RAMB18E1 + + +4. DSP +------ + ++-----------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-----------+------+-------+-----------+-------+ +| DSPs | 0 | 0 | 600 | 0.00 | ++-----------+------+-------+-----------+-------+ + + +5. IO and GT Specific +--------------------- + ++-----------------------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-----------------------------+------+-------+-----------+-------+ +| Bonded IOB | 21 | 0 | 285 | 7.37 | +| IOB Master Pads | 10 | | | | +| IOB Slave Pads | 10 | | | | +| Bonded IPADs | 0 | 0 | 14 | 0.00 | +| Bonded OPADs | 0 | 0 | 8 | 0.00 | +| PHY_CONTROL | 0 | 0 | 8 | 0.00 | +| PHASER_REF | 0 | 0 | 8 | 0.00 | +| OUT_FIFO | 0 | 0 | 32 | 0.00 | +| IN_FIFO | 0 | 0 | 32 | 0.00 | +| IDELAYCTRL | 0 | 0 | 8 | 0.00 | +| IBUFDS | 0 | 0 | 275 | 0.00 | +| GTXE2_COMMON | 0 | 0 | 1 | 0.00 | +| GTXE2_CHANNEL | 0 | 0 | 4 | 0.00 | +| PHASER_OUT/PHASER_OUT_PHY | 0 | 0 | 32 | 0.00 | +| PHASER_IN/PHASER_IN_PHY | 0 | 0 | 32 | 0.00 | +| IDELAYE2/IDELAYE2_FINEDELAY | 0 | 0 | 400 | 0.00 | +| ODELAYE2/ODELAYE2_FINEDELAY | 0 | 0 | 150 | 0.00 | +| IBUFDS_GTE2 | 0 | 0 | 2 | 0.00 | +| ILOGIC | 0 | 0 | 285 | 0.00 | +| OLOGIC | 0 | 0 | 285 | 0.00 | ++-----------------------------+------+-------+-----------+-------+ + + +6. Clocking +----------- + ++------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++------------+------+-------+-----------+-------+ +| BUFGCTRL | 1 | 0 | 32 | 3.13 | +| BUFIO | 0 | 0 | 32 | 0.00 | +| MMCME2_ADV | 0 | 0 | 8 | 0.00 | +| PLLE2_ADV | 0 | 0 | 8 | 0.00 | +| BUFMRCE | 0 | 0 | 16 | 0.00 | +| BUFHCE | 0 | 0 | 120 | 0.00 | +| BUFR | 0 | 0 | 32 | 0.00 | ++------------+------+-------+-----------+-------+ + + +7. Specific Feature +------------------- + ++-------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-------------+------+-------+-----------+-------+ +| BSCANE2 | 0 | 0 | 4 | 0.00 | +| CAPTUREE2 | 0 | 0 | 1 | 0.00 | +| DNA_PORT | 0 | 0 | 1 | 0.00 | +| EFUSE_USR | 0 | 0 | 1 | 0.00 | +| FRAME_ECCE2 | 0 | 0 | 1 | 0.00 | +| ICAPE2 | 0 | 0 | 2 | 0.00 | +| PCIE_2_1 | 0 | 0 | 1 | 0.00 | +| STARTUPE2 | 0 | 0 | 1 | 0.00 | +| XADC | 0 | 0 | 1 | 0.00 | ++-------------+------+-------+-----------+-------+ + + +8. Primitives +------------- + ++----------+------+---------------------+ +| Ref Name | Used | Functional Category | ++----------+------+---------------------+ +| IBUF | 12 | IO | +| OBUF | 9 | IO | +| FDRE | 9 | Flop & Latch | +| LUT6 | 6 | LUT | +| LUT5 | 5 | LUT | +| LUT4 | 5 | LUT | +| LUT3 | 2 | LUT | +| LUT2 | 1 | LUT | +| LUT1 | 1 | LUT | +| BUFG | 1 | Clock | ++----------+------+---------------------+ + + +9. Black Boxes +-------------- + ++----------+------+ +| Ref Name | Used | ++----------+------+ + + +10. Instantiated Netlists +------------------------- + ++----------+------+ +| Ref Name | Used | ++----------+------+ + + diff --git a/lab2CA.runs/impl_1/gen_run.xml b/lab2CA.runs/impl_1/gen_run.xml new file mode 100644 index 0000000..a0355da --- /dev/null +++ b/lab2CA.runs/impl_1/gen_run.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lab2CA.runs/impl_1/htr.txt b/lab2CA.runs/impl_1/htr.txt new file mode 100644 index 0000000..b9acc33 --- /dev/null +++ b/lab2CA.runs/impl_1/htr.txt @@ -0,0 +1,9 @@ +REM +REM Vivado(TM) +REM htr.txt: a Vivado-generated description of how-to-repeat the +REM the basic steps of a run. Note that runme.bat/sh needs +REM to be invoked for Vivado to track run status. +REM Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. +REM + +vivado -log FetchUnit.vdi -applog -m64 -product Vivado -messageDb vivado.pb -mode batch -source FetchUnit.tcl -notrace diff --git a/lab2CA.runs/impl_1/init_design.pb b/lab2CA.runs/impl_1/init_design.pb new file mode 100644 index 0000000000000000000000000000000000000000..3f02a034318627f358208d076900f15189a54b2a GIT binary patch literal 1623 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 GRQ>~K=iu}J literal 0 HcmV?d00001 diff --git a/lab2CA.runs/impl_1/vivado.jou b/lab2CA.runs/impl_1/vivado.jou new file mode 100644 index 0000000..9c4da83 --- /dev/null +++ b/lab2CA.runs/impl_1/vivado.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Vivado v2018.3 (64-bit) +# SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 +# IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 +# Start of session at: Sat Feb 16 17:35:59 2019 +# Process ID: 3548 +# Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1 +# Command line: vivado.exe -log FetchUnit.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source FetchUnit.tcl -notrace +# Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1/FetchUnit.vdi +# Journal file: C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/impl_1\vivado.jou +#----------------------------------------------------------- +source FetchUnit.tcl -notrace diff --git a/lab2CA.runs/impl_1/vivado.pb b/lab2CA.runs/impl_1/vivado.pb new file mode 100644 index 0000000000000000000000000000000000000000..98152f96397f3beb8ff6ec2385bed8b4a4ed22da GIT binary patch literal 149 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 delta 13081 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 diff --git a/lab2CA.runs/synth_1/FetchUnit.tcl b/lab2CA.runs/synth_1/FetchUnit.tcl index 90d7f1b..90a441d 100644 --- a/lab2CA.runs/synth_1/FetchUnit.tcl +++ b/lab2CA.runs/synth_1/FetchUnit.tcl @@ -18,6 +18,7 @@ proc create_report { reportName command } { } } set_param synth.incrementalSynthesisCache C:/Users/ecelab/AppData/Roaming/Xilinx/Vivado/.Xil/Vivado-2460-DESKTOP-8QFGS52/incrSyn +set_msg_config -id {Common 17-41} -limit 10000000 set_msg_config -id {Synth 8-256} -limit 10000 set_msg_config -id {Synth 8-638} -limit 10000 create_project -in_memory -part xc7k160tifbg484-2L diff --git a/lab2CA.runs/synth_1/FetchUnit.vds b/lab2CA.runs/synth_1/FetchUnit.vds index 76d3558..9af85e5 100644 --- a/lab2CA.runs/synth_1/FetchUnit.vds +++ b/lab2CA.runs/synth_1/FetchUnit.vds @@ -2,8 +2,8 @@ # Vivado v2018.3 (64-bit) # SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 # IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 -# Start of session at: Sat Feb 16 13:26:21 2019 -# Process ID: 8540 +# Start of session at: Sat Feb 16 17:27:36 2019 +# Process ID: 2948 # Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/synth_1 # Command line: vivado.exe -log FetchUnit.vds -product Vivado -mode batch -messageDb vivado.pb -notrace -source FetchUnit.tcl # Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/synth_1/FetchUnit.vds @@ -15,40 +15,39 @@ Starting synth_design Attempting to get a license for feature 'Synthesis' and/or device 'xc7k160ti' INFO: [Common 17-349] Got license for feature 'Synthesis' and/or device 'xc7k160ti' INFO: Launching helper process for spawning children vivado processes -INFO: Helper process launched with PID 11484 +INFO: Helper process launched with PID 2932 --------------------------------------------------------------------------------- -Starting Synthesize : Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 360.121 ; gain = 102.227 +Starting Synthesize : Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 359.449 ; gain = 101.293 --------------------------------------------------------------------------------- INFO: [Synth 8-6157] synthesizing module 'FetchUnit' [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/FetchUnit.v:3] -INFO: [Synth 8-6157] synthesizing module 'register' [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:419] -INFO: [Synth 8-6155] done synthesizing module 'register' (1#1) [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:419] -INFO: [Synth 8-6157] synthesizing module 'add_9bit' [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:15] +INFO: [Synth 8-6157] synthesizing module 'register' [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:890] +INFO: [Synth 8-6155] done synthesizing module 'register' (1#1) [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:890] +INFO: [Synth 8-6157] synthesizing module 'add_9bit' [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:53] INFO: [Synth 8-6157] synthesizing module 'add_1bit' [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:3] INFO: [Synth 8-6155] done synthesizing module 'add_1bit' (2#1) [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:3] -INFO: [Synth 8-6155] done synthesizing module 'add_9bit' (3#1) [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:15] -WARNING: [Synth 8-350] instance 'PCAdder' of module 'add_9bit' requires 5 connections, but only 4 given [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/FetchUnit.v:18] -INFO: [Synth 8-6157] synthesizing module 'mux_2_1' [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:167] -INFO: [Synth 8-226] default block is never used [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:172] -INFO: [Synth 8-6155] done synthesizing module 'mux_2_1' (4#1) [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:167] +INFO: [Synth 8-6155] done synthesizing module 'add_9bit' (3#1) [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:53] +WARNING: [Synth 8-350] instance 'PCAdder' of module 'add_9bit' requires 5 connections, but only 4 given [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/FetchUnit.v:17] +INFO: [Synth 8-6157] synthesizing module 'mux_2_1' [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:312] +INFO: [Synth 8-226] default block is never used [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:317] +INFO: [Synth 8-6155] done synthesizing module 'mux_2_1' (4#1) [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/BasicModules.v:312] INFO: [Synth 8-6155] done synthesizing module 'FetchUnit' (5#1) [C:/Users/ecelab/ECE3570-Lab/lab2CA.srcs/sources_1/new/FetchUnit.v:3] -WARNING: [Synth 8-3331] design FetchUnit has unconnected port write_index[1] -WARNING: [Synth 8-3331] design FetchUnit has unconnected port write_index[0] --------------------------------------------------------------------------------- -Finished Synthesize : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 416.043 ; gain = 158.148 +Finished Synthesize : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 415.078 ; gain = 156.922 --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -Finished Constraint Validation : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 416.043 ; gain = 158.148 +Finished Constraint Validation : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 415.078 ; gain = 156.922 --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- Start Loading Part and Timing Information --------------------------------------------------------------------------------- Loading part: xc7k160tifbg484-2L --------------------------------------------------------------------------------- -Finished Loading Part and Timing Information : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 416.043 ; gain = 158.148 +Finished Loading Part and Timing Information : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 415.078 ; gain = 156.922 --------------------------------------------------------------------------------- INFO: [Device 21-403] Loading part xc7k160tifbg484-2L +INFO: [Synth 8-5544] ROM "Dout" won't be mapped to Block RAM because address size (2) smaller than threshold (5) --------------------------------------------------------------------------------- -Finished RTL Optimization Phase 2 : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 416.043 ; gain = 158.148 +Finished RTL Optimization Phase 2 : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 415.078 ; gain = 156.922 --------------------------------------------------------------------------------- Report RTL Partitions: @@ -66,7 +65,8 @@ Detailed RTL Component Info : +---Registers : 9 Bit Registers := 1 +---Muxes : - 2 Input 9 Bit Muxes := 2 + 2 Input 9 Bit Muxes := 1 + 2 Input 1 Bit Muxes := 1 --------------------------------------------------------------------------------- Finished RTL Component Statistics --------------------------------------------------------------------------------- @@ -79,7 +79,7 @@ Detailed RTL Component Info : +---Registers : 9 Bit Registers := 1 +---Muxes : - 2 Input 9 Bit Muxes := 1 + 2 Input 1 Bit Muxes := 1 Module add_1bit Detailed RTL Component Info : +---XORs : @@ -105,10 +105,8 @@ No constraint files found. Start Cross Boundary and Area Optimization --------------------------------------------------------------------------------- Warning: Parallel synthesis criteria is not met -WARNING: [Synth 8-3331] design FetchUnit has unconnected port write_index[1] -WARNING: [Synth 8-3331] design FetchUnit has unconnected port write_index[0] --------------------------------------------------------------------------------- -Finished Cross Boundary and Area Optimization : Time (s): cpu = 00:00:06 ; elapsed = 00:00:06 . Memory (MB): peak = 579.223 ; gain = 321.328 +Finished Cross Boundary and Area Optimization : Time (s): cpu = 00:00:06 ; elapsed = 00:00:06 . Memory (MB): peak = 581.293 ; gain = 323.137 --------------------------------------------------------------------------------- Report RTL Partitions: @@ -121,7 +119,7 @@ No constraint files found. Start Timing Optimization --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -Finished Timing Optimization : Time (s): cpu = 00:00:06 ; elapsed = 00:00:06 . Memory (MB): peak = 579.223 ; gain = 321.328 +Finished Timing Optimization : Time (s): cpu = 00:00:06 ; elapsed = 00:00:06 . Memory (MB): peak = 581.293 ; gain = 323.137 --------------------------------------------------------------------------------- Report RTL Partitions: @@ -133,7 +131,7 @@ Report RTL Partitions: Start Technology Mapping --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -Finished Technology Mapping : Time (s): cpu = 00:00:06 ; elapsed = 00:00:06 . Memory (MB): peak = 579.223 ; gain = 321.328 +Finished Technology Mapping : Time (s): cpu = 00:00:06 ; elapsed = 00:00:06 . Memory (MB): peak = 581.293 ; gain = 323.137 --------------------------------------------------------------------------------- Report RTL Partitions: @@ -157,7 +155,7 @@ Start Final Netlist Cleanup Finished Final Netlist Cleanup --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -Finished IO Insertion : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 579.223 ; gain = 321.328 +Finished IO Insertion : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 581.293 ; gain = 323.137 --------------------------------------------------------------------------------- Report Check Netlist: @@ -170,7 +168,7 @@ Report Check Netlist: Start Renaming Generated Instances --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -Finished Renaming Generated Instances : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 579.223 ; gain = 321.328 +Finished Renaming Generated Instances : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 581.293 ; gain = 323.137 --------------------------------------------------------------------------------- Report RTL Partitions: @@ -182,25 +180,25 @@ Report RTL Partitions: Start Rebuilding User Hierarchy --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -Finished Rebuilding User Hierarchy : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 579.223 ; gain = 321.328 +Finished Rebuilding User Hierarchy : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 581.293 ; gain = 323.137 --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- Start Renaming Generated Ports --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -Finished Renaming Generated Ports : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 579.223 ; gain = 321.328 +Finished Renaming Generated Ports : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 581.293 ; gain = 323.137 --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- Start Handling Custom Attributes --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -Finished Handling Custom Attributes : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 579.223 ; gain = 321.328 +Finished Handling Custom Attributes : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 581.293 ; gain = 323.137 --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- Start Renaming Generated Nets --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -Finished Renaming Generated Nets : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 579.223 ; gain = 321.328 +Finished Renaming Generated Nets : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 581.293 ; gain = 323.137 --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- Start Writing Synthesis Report @@ -236,25 +234,25 @@ Report Instance Areas: |2 | PC |register | 29| +------+---------+---------+------+ --------------------------------------------------------------------------------- -Finished Writing Synthesis Report : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 579.223 ; gain = 321.328 +Finished Writing Synthesis Report : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 581.293 ; gain = 323.137 --------------------------------------------------------------------------------- -Synthesis finished with 0 errors, 0 critical warnings and 5 warnings. -Synthesis Optimization Runtime : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 579.223 ; gain = 321.328 -Synthesis Optimization Complete : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 579.223 ; gain = 321.328 +Synthesis finished with 0 errors, 0 critical warnings and 1 warnings. +Synthesis Optimization Runtime : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 581.293 ; gain = 323.137 +Synthesis Optimization Complete : Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 581.293 ; gain = 323.137 INFO: [Project 1-571] Translating synthesized netlist INFO: [Project 1-570] Preparing netlist for logic optimization INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). -Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.001 . Memory (MB): peak = 677.328 ; gain = 0.000 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 680.656 ; gain = 0.000 INFO: [Project 1-111] Unisim Transformation Summary: No Unisim elements were transformed. INFO: [Common 17-83] Releasing license: Synthesis -18 Infos, 5 Warnings, 0 Critical Warnings and 0 Errors encountered. +19 Infos, 1 Warnings, 0 Critical Warnings and 0 Errors encountered. synth_design completed successfully -synth_design: Time (s): cpu = 00:00:11 ; elapsed = 00:00:22 . Memory (MB): peak = 677.328 ; gain = 419.434 -Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 677.328 ; gain = 0.000 +synth_design: Time (s): cpu = 00:00:11 ; elapsed = 00:00:22 . Memory (MB): peak = 680.656 ; gain = 430.656 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 680.656 ; gain = 0.000 WARNING: [Constraints 18-5210] No constraints selected for write. Resolution: This message can indicate that there are no constraints for the design, or it can indicate that the used_in flags are set such that the constraints are ignored. This later case is used when running synth_design to not write synthesis constraints to the resulting checkpoint. Instead, project constraints are read when the synthesized design is opened. INFO: [Common 17-1381] The checkpoint 'C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/synth_1/FetchUnit.dcp' has been generated. INFO: [runtcl-4] Executing : report_utilization -file FetchUnit_utilization_synth.rpt -pb FetchUnit_utilization_synth.pb -INFO: [Common 17-206] Exiting Vivado at Sat Feb 16 13:26:46 2019... +INFO: [Common 17-206] Exiting Vivado at Sat Feb 16 17:28:01 2019... diff --git a/lab2CA.runs/synth_1/FetchUnit_utilization_synth.rpt b/lab2CA.runs/synth_1/FetchUnit_utilization_synth.rpt index 7135af6..7d1befd 100644 --- a/lab2CA.runs/synth_1/FetchUnit_utilization_synth.rpt +++ b/lab2CA.runs/synth_1/FetchUnit_utilization_synth.rpt @@ -1,7 +1,7 @@ Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. ------------------------------------------------------------------------------------------------------------- | Tool Version : Vivado v.2018.3 (win64) Build 2405991 Thu Dec 6 23:38:27 MST 2018 -| Date : Sat Feb 16 13:26:46 2019 +| Date : Sat Feb 16 17:28:01 2019 | Host : DESKTOP-8QFGS52 running 64-bit major release (build 9200) | Command : report_utilization -file FetchUnit_utilization_synth.rpt -pb FetchUnit_utilization_synth.pb | Design : FetchUnit diff --git a/lab2CA.runs/synth_1/gen_run.xml b/lab2CA.runs/synth_1/gen_run.xml index 7b1581b..e2dd59d 100644 --- a/lab2CA.runs/synth_1/gen_run.xml +++ b/lab2CA.runs/synth_1/gen_run.xml @@ -1,5 +1,5 @@ - + @@ -44,6 +44,7 @@ diff --git a/lab2CA.runs/synth_1/vivado.jou b/lab2CA.runs/synth_1/vivado.jou index 432a836..07d2955 100644 --- a/lab2CA.runs/synth_1/vivado.jou +++ b/lab2CA.runs/synth_1/vivado.jou @@ -2,8 +2,8 @@ # Vivado v2018.3 (64-bit) # SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 # IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 -# Start of session at: Sat Feb 16 13:26:21 2019 -# Process ID: 8540 +# Start of session at: Sat Feb 16 17:27:36 2019 +# Process ID: 2948 # Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/synth_1 # Command line: vivado.exe -log FetchUnit.vds -product Vivado -mode batch -messageDb vivado.pb -notrace -source FetchUnit.tcl # Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.runs/synth_1/FetchUnit.vds diff --git a/lab2CA.runs/synth_1/vivado.pb b/lab2CA.runs/synth_1/vivado.pb index 314ae08ed277bfaff70e9610c86e183c436f32d8..cfaa4efa3307c50e6044a2532156e2524a001736 100644 GIT binary patch delta 1022 zcmaiy&ubG=5XX6&O=C8RiAIwU8}mqwtx~u9Bb#Jf#h(YEsY(i7RO&XnO`~bH>24_6 zgQz$0pv+BATEUZ`J``FI?4ceM5hI>N(0@Rvpa-ewCMg(%Y%Y(P`F>{JmwB)L0lj{Y z9&1!slG#*B#v{0>lq&cD<~g1fWD(ZJ<#BuQYeQ@8oLP=sn zBDZ^jj#k{1NZpMQeDOrV>!~|LUa+7gO5__Q^4#k~8?_ev-Pe!cC)x%_17|}L%Vn}{ zW~4ML3xZ|l9-Q8?&_O0^<9&!QL7D0RH2Z&TKX+vnF=z58$8aKPB=Edm={NDDhG&%7 zSxv>Jj*pb}!bO}vJZ6;(O3l!)qN;P6VPK-GYaNJ4)L%uvDlHi+8c*E=NIgBGOBDwaDD1+PnKiTQW~D1Ae4$M zsTTGlBsWvm9fqOF5WG}r_@oAjQCC8tMIsSF6N$p#0DMRxFgY)TR@uFPDwHzIB5v!T}0p zQgI6?4OQ4Jb_Wgd4EN8@xZ~{YcZTmM3h|MJup;7w+}FKiN+gMt*}bQ5iLcwpw8<|x zY_!hNuc1Zi2_s~~(7EIh1MO^t2BYs7Bmq7%33&D{{d{)J3EHFv*M$hxCLWyl-`YAi zwGFf9?~kf8<|FLut1J;wmQtO*!_`l+3DR&w6lly z_D%jA0)Bpsx-Rb>LmdPHl)L)=7>d6Zppm)#!4&1^pAW1GDoa;T684vN?P`N@J_e7M z>w|QfUGXCXa9e-j7dS7*>CO@{2I3BJr@3K8Rjp~kYZRo~>P_n}FheMEQ4n)MXrFSL zdk9wYPRislVtY6#gjw^q5fd`p;et>vgrKf}`m0(F+Nww&7Ji{&IV~yagaSLI^dA?a BT$ca< diff --git a/lab2CA.sim/sim_1/behav/xsim/alu_tb.tcl b/lab2CA.sim/sim_1/behav/xsim/alu_tb.tcl new file mode 100644 index 0000000..1094e45 --- /dev/null +++ b/lab2CA.sim/sim_1/behav/xsim/alu_tb.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/lab2CA.sim/sim_1/behav/xsim/alu_tb_vlog.prj b/lab2CA.sim/sim_1/behav/xsim/alu_tb_vlog.prj new file mode 100644 index 0000000..1efb11b --- /dev/null +++ b/lab2CA.sim/sim_1/behav/xsim/alu_tb_vlog.prj @@ -0,0 +1,10 @@ +# compile verilog/system verilog design source files +verilog xil_defaultlib \ +"../../../../lab2CA.srcs/sources_1/new/BasicModules.v" \ +"../../../../lab2CA.srcs/sources_1/new/ALU.v" \ + +# compile glbl module +verilog xil_defaultlib "glbl.v" + +# Do not sort compile order +nosort diff --git a/lab2CA.sim/sim_1/behav/xsim/regFile_tb.tcl b/lab2CA.sim/sim_1/behav/xsim/regFile_tb.tcl new file mode 100644 index 0000000..1094e45 --- /dev/null +++ b/lab2CA.sim/sim_1/behav/xsim/regFile_tb.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/lab2CA.sim/sim_1/behav/xsim/regFile_tb_vlog.prj b/lab2CA.sim/sim_1/behav/xsim/regFile_tb_vlog.prj new file mode 100644 index 0000000..1d8aabe --- /dev/null +++ b/lab2CA.sim/sim_1/behav/xsim/regFile_tb_vlog.prj @@ -0,0 +1,10 @@ +# compile verilog/system verilog design source files +verilog xil_defaultlib \ +"../../../../lab2CA.srcs/sources_1/new/BasicModules.v" \ +"../../../../lab2CA.srcs/sources_1/new/RegFile.v" \ + +# compile glbl module +verilog xil_defaultlib "glbl.v" + +# Do not sort compile order +nosort diff --git a/lab2CA.sim/sim_1/behav/xsim/webtalk.jou b/lab2CA.sim/sim_1/behav/xsim/webtalk.jou index c42d9ad..783e38b 100644 --- a/lab2CA.sim/sim_1/behav/xsim/webtalk.jou +++ b/lab2CA.sim/sim_1/behav/xsim/webtalk.jou @@ -2,11 +2,11 @@ # Webtalk v2018.3 (64-bit) # SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 # IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 -# Start of session at: Sat Feb 16 16:27:58 2019 -# Process ID: 12116 +# Start of session at: Sat Feb 16 17:37:48 2019 +# Process ID: 11820 # Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim -# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/twos_compliment_tb_behav/webtalk/xsim_webtalk.tcl -notrace +# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/xsim_webtalk.tcl -notrace # Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/webtalk.log # Journal file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim\webtalk.jou #----------------------------------------------------------- -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/twos_compliment_tb_behav/webtalk/xsim_webtalk.tcl -notrace +source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/xsim_webtalk.tcl -notrace diff --git a/lab2CA.sim/sim_1/behav/xsim/webtalk_1120.backup.jou b/lab2CA.sim/sim_1/behav/xsim/webtalk_12116.backup.jou similarity index 71% rename from lab2CA.sim/sim_1/behav/xsim/webtalk_1120.backup.jou rename to lab2CA.sim/sim_1/behav/xsim/webtalk_12116.backup.jou index 5d7c550..c42d9ad 100644 --- a/lab2CA.sim/sim_1/behav/xsim/webtalk_1120.backup.jou +++ b/lab2CA.sim/sim_1/behav/xsim/webtalk_12116.backup.jou @@ -2,11 +2,11 @@ # Webtalk v2018.3 (64-bit) # SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 # IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 -# Start of session at: Sat Feb 16 16:08:33 2019 -# Process ID: 1120 +# Start of session at: Sat Feb 16 16:27:58 2019 +# Process ID: 12116 # Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim -# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/shift_logical_right_tb_behav/webtalk/xsim_webtalk.tcl -notrace +# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/twos_compliment_tb_behav/webtalk/xsim_webtalk.tcl -notrace # Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/webtalk.log # Journal file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim\webtalk.jou #----------------------------------------------------------- -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/shift_logical_right_tb_behav/webtalk/xsim_webtalk.tcl -notrace +source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/twos_compliment_tb_behav/webtalk/xsim_webtalk.tcl -notrace diff --git a/lab2CA.sim/sim_1/behav/xsim/webtalk_6756.backup.jou b/lab2CA.sim/sim_1/behav/xsim/webtalk_14280.backup.jou similarity index 73% rename from lab2CA.sim/sim_1/behav/xsim/webtalk_6756.backup.jou rename to lab2CA.sim/sim_1/behav/xsim/webtalk_14280.backup.jou index 970f9c6..0e82537 100644 --- a/lab2CA.sim/sim_1/behav/xsim/webtalk_6756.backup.jou +++ b/lab2CA.sim/sim_1/behav/xsim/webtalk_14280.backup.jou @@ -2,11 +2,11 @@ # Webtalk v2018.3 (64-bit) # SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 # IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 -# Start of session at: Sat Feb 16 16:24:44 2019 -# Process ID: 6756 +# Start of session at: Sat Feb 16 16:49:53 2019 +# Process ID: 14280 # Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim -# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/sub_9bit_tb_behav/webtalk/xsim_webtalk.tcl -notrace +# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/xsim_webtalk.tcl -notrace # Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/webtalk.log # Journal file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim\webtalk.jou #----------------------------------------------------------- -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/sub_9bit_tb_behav/webtalk/xsim_webtalk.tcl -notrace +source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/xsim_webtalk.tcl -notrace diff --git a/lab2CA.sim/sim_1/behav/xsim/webtalk_13392.backup.jou b/lab2CA.sim/sim_1/behav/xsim/webtalk_5360.backup.jou similarity index 73% rename from lab2CA.sim/sim_1/behav/xsim/webtalk_13392.backup.jou rename to lab2CA.sim/sim_1/behav/xsim/webtalk_5360.backup.jou index 0805a63..9fdaf29 100644 --- a/lab2CA.sim/sim_1/behav/xsim/webtalk_13392.backup.jou +++ b/lab2CA.sim/sim_1/behav/xsim/webtalk_5360.backup.jou @@ -2,11 +2,11 @@ # Webtalk v2018.3 (64-bit) # SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 # IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 -# Start of session at: Sat Feb 16 16:22:35 2019 -# Process ID: 13392 +# Start of session at: Sat Feb 16 16:36:59 2019 +# Process ID: 5360 # Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim -# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/sub_9bit_tb_behav/webtalk/xsim_webtalk.tcl -notrace +# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/xsim_webtalk.tcl -notrace # Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/webtalk.log # Journal file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim\webtalk.jou #----------------------------------------------------------- -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/sub_9bit_tb_behav/webtalk/xsim_webtalk.tcl -notrace +source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/xsim_webtalk.tcl -notrace diff --git a/lab2CA.sim/sim_1/behav/xsim/webtalk_1276.backup.jou b/lab2CA.sim/sim_1/behav/xsim/webtalk_5680.backup.jou similarity index 71% rename from lab2CA.sim/sim_1/behav/xsim/webtalk_1276.backup.jou rename to lab2CA.sim/sim_1/behav/xsim/webtalk_5680.backup.jou index 51fb553..1450c74 100644 --- a/lab2CA.sim/sim_1/behav/xsim/webtalk_1276.backup.jou +++ b/lab2CA.sim/sim_1/behav/xsim/webtalk_5680.backup.jou @@ -2,11 +2,11 @@ # Webtalk v2018.3 (64-bit) # SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 # IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 -# Start of session at: Sat Feb 16 16:09:25 2019 -# Process ID: 1276 +# Start of session at: Sat Feb 16 17:35:22 2019 +# Process ID: 5680 # Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim -# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/shift_logical_right_tb_behav/webtalk/xsim_webtalk.tcl -notrace +# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/xsim_webtalk.tcl -notrace # Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/webtalk.log # Journal file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim\webtalk.jou #----------------------------------------------------------- -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/shift_logical_right_tb_behav/webtalk/xsim_webtalk.tcl -notrace +source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/xsim_webtalk.tcl -notrace diff --git a/lab2CA.sim/sim_1/behav/xsim/xelab.pb b/lab2CA.sim/sim_1/behav/xsim/xelab.pb index 20a959c83e03dd32e28b708fcac0068101419c7d..4ca6d1de278756b312edea22648470ff68feaa19 100644 GIT binary patch delta 194 zcmcb?e}#9#3&s}{Un;R|X5yMRnV<12dr@k-TV_t`g eP*=p4B!P^Y{FW^ps5F$_h)ab_0OrD(?DhZ?gF=A- delta 287 zcmcb@dxL+%3&tN4Un;R2X5v~mnV<2jc}aPGaeQ)qZb43FZfaghd`VJ#QffwGnLx9-6w%%uKaR9C`UA@rFs6C6f) +#include +#ifdef __GNUC__ +#include +#else +#include +#define alloca _alloca +#endif +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2013 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/**********************************************************************/ + + +#include "iki.h" +#include +#include +#ifdef __GNUC__ +#include +#else +#include +#define alloca _alloca +#endif +typedef void (*funcp)(char *, char *); +extern int main(int, char**); +extern void execute_79(char*, char *); +extern void execute_181(char*, char *); +extern void execute_182(char*, char *); +extern void execute_183(char*, char *); +extern void vlog_const_rhs_process_execute_0_fast_no_reg_no_agg(char*, char*, char*); +extern void execute_180(char*, char *); +extern void execute_84(char*, char *); +extern void execute_85(char*, char *); +extern void execute_129(char*, char *); +extern void execute_102(char*, char *); +extern void execute_150(char*, char *); +extern void execute_159(char*, char *); +extern void execute_168(char*, char *); +extern void execute_177(char*, char *); +extern void execute_178(char*, char *); +extern void execute_78(char*, char *); +extern void execute_81(char*, char *); +extern void execute_82(char*, char *); +extern void execute_83(char*, char *); +extern void execute_184(char*, char *); +extern void execute_185(char*, char *); +extern void execute_186(char*, char *); +extern void execute_187(char*, char *); +extern void execute_188(char*, char *); +extern void vlog_transfunc_eventcallback(char*, char*, unsigned, unsigned, unsigned, char *); +funcp funcTab[25] = {(funcp)execute_79, (funcp)execute_181, (funcp)execute_182, (funcp)execute_183, (funcp)vlog_const_rhs_process_execute_0_fast_no_reg_no_agg, (funcp)execute_180, (funcp)execute_84, (funcp)execute_85, (funcp)execute_129, (funcp)execute_102, (funcp)execute_150, (funcp)execute_159, (funcp)execute_168, (funcp)execute_177, (funcp)execute_178, (funcp)execute_78, (funcp)execute_81, (funcp)execute_82, (funcp)execute_83, (funcp)execute_184, (funcp)execute_185, (funcp)execute_186, (funcp)execute_187, (funcp)execute_188, (funcp)vlog_transfunc_eventcallback}; +const int NumRelocateId= 25; + +void relocate(char *dp) +{ + iki_relocate(dp, "xsim.dir/alu_tb_behav/xsim.reloc", (void **)funcTab, 25); + + /*Populate the transaction function pointer field in the whole net structure */ +} + +void sensitize(char *dp) +{ + iki_sensitize(dp, "xsim.dir/alu_tb_behav/xsim.reloc"); +} + +void simulate(char *dp) +{ + iki_schedule_processes_at_time_zero(dp, "xsim.dir/alu_tb_behav/xsim.reloc"); + // Initialize Verilog nets in mixed simulation, for the cases when the value at time 0 should be propagated from the mixed language Vhdl net + iki_execute_processes(); + + // Schedule resolution functions for the multiply driven Verilog nets that have strength + // Schedule transaction functions for the singly driven Verilog nets that have strength + +} +#include "iki_bridge.h" +void relocate(char *); + +void sensitize(char *); + +void simulate(char *); + +extern SYSTEMCLIB_IMP_DLLSPEC void local_register_implicit_channel(int, char*); +extern void implicit_HDL_SCinstatiate(); + +extern SYSTEMCLIB_IMP_DLLSPEC int xsim_argc_copy ; +extern SYSTEMCLIB_IMP_DLLSPEC char** xsim_argv_copy ; + +int main(int argc, char **argv) +{ + iki_heap_initialize("ms", "isimmm", 0, 2147483648) ; + iki_set_sv_type_file_path_name("xsim.dir/alu_tb_behav/xsim.svtype"); + iki_set_crvs_dump_file_path_name("xsim.dir/alu_tb_behav/xsim.crvsdump"); + void* design_handle = iki_create_design("xsim.dir/alu_tb_behav/xsim.mem", (void *)relocate, (void *)sensitize, (void *)simulate, 0, isimBridge_getWdbWriter(), 0, argc, argv); + iki_set_rc_trial_count(100); + (void) design_handle; + return iki_simulate_design(); +} diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/usage_statistics_ext_xsim.xml b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/usage_statistics_ext_xsim.xml new file mode 100644 index 0000000..c05fb8f --- /dev/null +++ b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/usage_statistics_ext_xsim.xml @@ -0,0 +1,44 @@ + + +

+
+ + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+
+
+
+ +
+
+ + + + + +
+
+
+ diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/xsim_webtalk.tcl b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/xsim_webtalk.tcl new file mode 100644 index 0000000..9584e84 --- /dev/null +++ b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/xsim_webtalk.tcl @@ -0,0 +1,42 @@ +webtalk_init -webtalk_dir C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/ +webtalk_register_client -client project +webtalk_add_data -client project -key date_generated -value "Sat Feb 16 16:50:02 2019" -context "software_version_and_target_device" +webtalk_add_data -client project -key product_version -value "XSIM v2018.3 (64-bit)" -context "software_version_and_target_device" +webtalk_add_data -client project -key build_version -value "2405991" -context "software_version_and_target_device" +webtalk_add_data -client project -key os_platform -value "WIN64" -context "software_version_and_target_device" +webtalk_add_data -client project -key registration_id -value "174150793_174150794_210688225_140" -context "software_version_and_target_device" +webtalk_add_data -client project -key tool_flow -value "xsim_vivado" -context "software_version_and_target_device" +webtalk_add_data -client project -key beta -value "FALSE" -context "software_version_and_target_device" +webtalk_add_data -client project -key route_design -value "FALSE" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_family -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_device -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_package -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_speed -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key random_id -value "4e917e26-7591-4435-9135-15bd446b0238" -context "software_version_and_target_device" +webtalk_add_data -client project -key project_id -value "0a5803efda44405bb28bbf43ba22e808" -context "software_version_and_target_device" +webtalk_add_data -client project -key project_iteration -value "3" -context "software_version_and_target_device" +webtalk_add_data -client project -key os_name -value "Microsoft Windows 8 or later , 64-bit" -context "user_environment" +webtalk_add_data -client project -key os_release -value "major release (build 9200)" -context "user_environment" +webtalk_add_data -client project -key cpu_name -value "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz" -context "user_environment" +webtalk_add_data -client project -key cpu_speed -value "3492 MHz" -context "user_environment" +webtalk_add_data -client project -key total_processors -value "1" -context "user_environment" +webtalk_add_data -client project -key system_ram -value "34.000 GB" -context "user_environment" +webtalk_register_client -client xsim +webtalk_add_data -client xsim -key File_Counter -value "3" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Command -value "xelab" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Vhdl2008 -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key GenDLL -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key SDFModeling -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key HWCosim -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key DPI_Used -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Debug -value "typical" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Simulation_Image_Code -value "71 KB" -context "xsim\\usage" +webtalk_add_data -client xsim -key Simulation_Image_Data -value "8 KB" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Nets -value "0" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Processes -value "113" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Instances -value "78" -context "xsim\\usage" +webtalk_add_data -client xsim -key Xilinx_HDL_Libraries_Used -value "secureip unimacro_ver unisims_ver " -context "xsim\\usage" +webtalk_add_data -client xsim -key Compiler_Time -value "0.67_sec" -context "xsim\\usage" +webtalk_add_data -client xsim -key Compiler_Memory -value "38660_KB" -context "xsim\\usage" +webtalk_transmit -clientid 746518105 -regid "174150793_174150794_210688225_140" -xml C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/usage_statistics_ext_xsim.xml -html C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/usage_statistics_ext_xsim.html -wdm C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/webtalk/usage_statistics_ext_xsim.wdm -intro "

XSIM Usage Report


" +webtalk_terminate diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/xsim.mem b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/alu_tb_behav/xsim.mem new file mode 100644 index 0000000000000000000000000000000000000000..ae23e27619fec4058ac8516ccc77b8aa329f5789 GIT binary patch literal 8546 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 +#include +#ifdef __GNUC__ +#include +#else +#include +#define alloca _alloca +#endif +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2013 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/**********************************************************************/ + + +#include "iki.h" +#include +#include +#ifdef __GNUC__ +#include +#else +#include +#define alloca _alloca +#endif +typedef void (*funcp)(char *, char *); +extern int main(int, char**); +extern void execute_2(char*, char *); +extern void execute_3(char*, char *); +extern void execute_17(char*, char *); +extern void execute_31(char*, char *); +extern void execute_32(char*, char *); +extern void execute_33(char*, char *); +extern void execute_34(char*, char *); +extern void execute_35(char*, char *); +extern void execute_36(char*, char *); +extern void execute_22(char*, char *); +extern void execute_23(char*, char *); +extern void execute_24(char*, char *); +extern void execute_25(char*, char *); +extern void execute_26(char*, char *); +extern void execute_27(char*, char *); +extern void execute_28(char*, char *); +extern void execute_29(char*, char *); +extern void execute_30(char*, char *); +extern void execute_6(char*, char *); +extern void execute_14(char*, char *); +extern void execute_19(char*, char *); +extern void execute_20(char*, char *); +extern void execute_21(char*, char *); +extern void execute_37(char*, char *); +extern void execute_38(char*, char *); +extern void execute_39(char*, char *); +extern void execute_40(char*, char *); +extern void execute_41(char*, char *); +extern void vlog_transfunc_eventcallback(char*, char*, unsigned, unsigned, unsigned, char *); +extern void transaction_10(char*, char*, unsigned, unsigned, unsigned); +funcp funcTab[30] = {(funcp)execute_2, (funcp)execute_3, (funcp)execute_17, (funcp)execute_31, (funcp)execute_32, (funcp)execute_33, (funcp)execute_34, (funcp)execute_35, (funcp)execute_36, (funcp)execute_22, (funcp)execute_23, (funcp)execute_24, (funcp)execute_25, (funcp)execute_26, (funcp)execute_27, (funcp)execute_28, (funcp)execute_29, (funcp)execute_30, (funcp)execute_6, (funcp)execute_14, (funcp)execute_19, (funcp)execute_20, (funcp)execute_21, (funcp)execute_37, (funcp)execute_38, (funcp)execute_39, (funcp)execute_40, (funcp)execute_41, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_10}; +const int NumRelocateId= 30; + +void relocate(char *dp) +{ + iki_relocate(dp, "xsim.dir/regFile_tb_behav/xsim.reloc", (void **)funcTab, 30); + + /*Populate the transaction function pointer field in the whole net structure */ +} + +void sensitize(char *dp) +{ + iki_sensitize(dp, "xsim.dir/regFile_tb_behav/xsim.reloc"); +} + +void simulate(char *dp) +{ + iki_schedule_processes_at_time_zero(dp, "xsim.dir/regFile_tb_behav/xsim.reloc"); + // Initialize Verilog nets in mixed simulation, for the cases when the value at time 0 should be propagated from the mixed language Vhdl net + iki_execute_processes(); + + // Schedule resolution functions for the multiply driven Verilog nets that have strength + // Schedule transaction functions for the singly driven Verilog nets that have strength + +} +#include "iki_bridge.h" +void relocate(char *); + +void sensitize(char *); + +void simulate(char *); + +extern SYSTEMCLIB_IMP_DLLSPEC void local_register_implicit_channel(int, char*); +extern void implicit_HDL_SCinstatiate(); + +extern SYSTEMCLIB_IMP_DLLSPEC int xsim_argc_copy ; +extern SYSTEMCLIB_IMP_DLLSPEC char** xsim_argv_copy ; + +int main(int argc, char **argv) +{ + iki_heap_initialize("ms", "isimmm", 0, 2147483648) ; + iki_set_sv_type_file_path_name("xsim.dir/regFile_tb_behav/xsim.svtype"); + iki_set_crvs_dump_file_path_name("xsim.dir/regFile_tb_behav/xsim.crvsdump"); + void* design_handle = iki_create_design("xsim.dir/regFile_tb_behav/xsim.mem", (void *)relocate, (void *)sensitize, (void *)simulate, 0, isimBridge_getWdbWriter(), 0, argc, argv); + iki_set_rc_trial_count(100); + (void) design_handle; + return iki_simulate_design(); +} diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/usage_statistics_ext_xsim.xml b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/usage_statistics_ext_xsim.xml new file mode 100644 index 0000000..2c39c13 --- /dev/null +++ b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/usage_statistics_ext_xsim.xml @@ -0,0 +1,44 @@ + + +
+
+ + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+
+
+
+ +
+
+ + + + + +
+
+
+
diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/xsim_webtalk.tcl b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/xsim_webtalk.tcl new file mode 100644 index 0000000..bb479d5 --- /dev/null +++ b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/xsim_webtalk.tcl @@ -0,0 +1,42 @@ +webtalk_init -webtalk_dir C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/ +webtalk_register_client -client project +webtalk_add_data -client project -key date_generated -value "Sat Feb 16 17:37:59 2019" -context "software_version_and_target_device" +webtalk_add_data -client project -key product_version -value "XSIM v2018.3 (64-bit)" -context "software_version_and_target_device" +webtalk_add_data -client project -key build_version -value "2405991" -context "software_version_and_target_device" +webtalk_add_data -client project -key os_platform -value "WIN64" -context "software_version_and_target_device" +webtalk_add_data -client project -key registration_id -value "174150793_174150794_210688225_140" -context "software_version_and_target_device" +webtalk_add_data -client project -key tool_flow -value "xsim_vivado" -context "software_version_and_target_device" +webtalk_add_data -client project -key beta -value "FALSE" -context "software_version_and_target_device" +webtalk_add_data -client project -key route_design -value "FALSE" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_family -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_device -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_package -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_speed -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key random_id -value "4e917e26-7591-4435-9135-15bd446b0238" -context "software_version_and_target_device" +webtalk_add_data -client project -key project_id -value "0a5803efda44405bb28bbf43ba22e808" -context "software_version_and_target_device" +webtalk_add_data -client project -key project_iteration -value "3" -context "software_version_and_target_device" +webtalk_add_data -client project -key os_name -value "Microsoft Windows 8 or later , 64-bit" -context "user_environment" +webtalk_add_data -client project -key os_release -value "major release (build 9200)" -context "user_environment" +webtalk_add_data -client project -key cpu_name -value "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz" -context "user_environment" +webtalk_add_data -client project -key cpu_speed -value "3492 MHz" -context "user_environment" +webtalk_add_data -client project -key total_processors -value "1" -context "user_environment" +webtalk_add_data -client project -key system_ram -value "34.000 GB" -context "user_environment" +webtalk_register_client -client xsim +webtalk_add_data -client xsim -key File_Counter -value "3" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Command -value "xelab" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Vhdl2008 -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key GenDLL -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key SDFModeling -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key HWCosim -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key DPI_Used -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Debug -value "typical" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Simulation_Image_Code -value "73 KB" -context "xsim\\usage" +webtalk_add_data -client xsim -key Simulation_Image_Data -value "4 KB" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Nets -value "0" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Processes -value "37" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Instances -value "9" -context "xsim\\usage" +webtalk_add_data -client xsim -key Xilinx_HDL_Libraries_Used -value "secureip unimacro_ver unisims_ver " -context "xsim\\usage" +webtalk_add_data -client xsim -key Compiler_Time -value "0.70_sec" -context "xsim\\usage" +webtalk_add_data -client xsim -key Compiler_Memory -value "38824_KB" -context "xsim\\usage" +webtalk_transmit -clientid 1475637981 -regid "174150793_174150794_210688225_140" -xml C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/usage_statistics_ext_xsim.xml -html C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/usage_statistics_ext_xsim.html -wdm C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/webtalk/usage_statistics_ext_xsim.wdm -intro "

XSIM Usage Report


" +webtalk_terminate diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/xsim.mem b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/regFile_tb_behav/xsim.mem new file mode 100644 index 0000000000000000000000000000000000000000..56b8140400972e86f51a8246d7f6ec648b197307 GIT binary patch literal 4296 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 Usage Report


" +webtalk_add_data -client xsim -key File_Counter -value "2" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Command -value "xelab" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Vhdl2008 -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key GenDLL -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key SDFModeling -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key HWCosim -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key DPI_Used -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Debug -value "typical" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Simulation_Image_Code -value "67 KB" -context "xsim\\usage" +webtalk_add_data -client xsim -key Simulation_Image_Data -value "3 KB" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Nets -value "0" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Processes -value "18" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Instances -value "3" -context "xsim\\usage" +webtalk_add_data -client xsim -key Xilinx_HDL_Libraries_Used -value "secureip unimacro_ver unisims_ver " -context "xsim\\usage" +webtalk_add_data -client xsim -key Compiler_Time -value "0.70_sec" -context "xsim\\usage" +webtalk_add_data -client xsim -key Compiler_Memory -value "37616_KB" -context "xsim\\usage" +webtalk_transmit -clientid 1179807410 -regid "174150793_174150794_210688225_140" -xml C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/register_tb_behav/webtalk/usage_statistics_ext_xsim.xml -html C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/register_tb_behav/webtalk/usage_statistics_ext_xsim.html -wdm C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/register_tb_behav/webtalk/usage_statistics_ext_xsim.wdm -intro "

XSIM Usage Report


" webtalk_terminate diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/register_tb_behav/xsim.mem b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/register_tb_behav/xsim.mem index 8d9f00e1af024b1eb95ead92b8fc9128f5e6e987..8bd610b2c1d56ff87d386d28471a1617931bac1b 100644 GIT binary patch delta 1711 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 KqGYlhhXnwrKonyD literal 2134 zcmcJQ$xg#C6h$de3PwT|uwsy+N)&|DhNNX^ccpX(8zjb!l{ijn;n0d zul;VPE(MaV2Dt*(#)QHzMQ!r$GmjSn6 zT8-Npo!7JlPKZ=kn4O!@{76>8y6lr!LA^T&3MiyFHvH2fbCrFtF|8s<(l?Z`i>1s$ ui|9n=EgXPNHR2K?o(?EUF|&!N-3R%tqh{^Z8LMv%fF6sSYmB&v%7r(88*{e+ diff --git a/lab2CA.sim/sim_1/impl/func/xsim/alu_tb.tcl b/lab2CA.sim/sim_1/impl/func/xsim/alu_tb.tcl new file mode 100644 index 0000000..1094e45 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/func/xsim/alu_tb.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/lab2CA.sim/sim_1/impl/func/xsim/alu_tb_func_impl.v b/lab2CA.sim/sim_1/impl/func/xsim/alu_tb_func_impl.v new file mode 100644 index 0000000..0063fe7 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/func/xsim/alu_tb_func_impl.v @@ -0,0 +1,927 @@ +// Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. +// -------------------------------------------------------------------------------- +// Tool Version: Vivado v.2018.3 (win64) Build 2405991 Thu Dec 6 23:38:27 MST 2018 +// Date : Sat Feb 16 16:48:37 2019 +// Host : DESKTOP-8QFGS52 running 64-bit major release (build 9200) +// Command : write_verilog -mode funcsim -nolib -force -file +// C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/func/xsim/alu_tb_func_impl.v +// Design : RegFile +// Purpose : This verilog netlist is a functional simulation representation of the design and should not be modified +// or synthesized. This netlist cannot be used for SDF annotated simulation. +// Device : xc7k160tifbg484-2L +// -------------------------------------------------------------------------------- +`timescale 1 ps / 1 ps + +(* ECO_CHECKSUM = "b4d7812f" *) +(* NotValidForBitStream *) +module RegFile + (clk, + reset, + write_index, + op0_idx, + op1_idx, + write_data, + op0, + op1); + input clk; + input reset; + input [1:0]write_index; + input [1:0]op0_idx; + input [1:0]op1_idx; + input [8:0]write_data; + output [8:0]op0; + output [8:0]op1; + + wire clk; + wire clk_IBUF; + wire clk_IBUF_BUFG; + wire [8:0]op0; + wire [8:0]op0_OBUF; + wire \op0_OBUF[8]_inst_i_10_n_0 ; + wire \op0_OBUF[8]_inst_i_11_n_0 ; + wire \op0_OBUF[8]_inst_i_12_n_0 ; + wire \op0_OBUF[8]_inst_i_6_n_0 ; + wire \op0_OBUF[8]_inst_i_7_n_0 ; + wire \op0_OBUF[8]_inst_i_8_n_0 ; + wire \op0_OBUF[8]_inst_i_9_n_0 ; + wire [1:0]op0_idx; + wire [1:0]op0_idx_IBUF; + wire [8:0]op1; + wire [8:0]op1_OBUF; + wire [1:0]op1_idx; + wire [1:0]op1_idx_IBUF; + wire \r0/_n_0 ; + wire [8:0]r0_out; + wire [8:0]r1_out; + wire [8:0]r2_out; + wire [8:0]r3_out; + wire reset; + wire reset_IBUF; + wire [8:0]write_data; + wire [8:0]write_data_IBUF; + wire [1:0]write_index; + wire [1:0]write_index_IBUF; + + BUFG clk_IBUF_BUFG_inst + (.I(clk_IBUF), + .O(clk_IBUF_BUFG)); + IBUF clk_IBUF_inst + (.I(clk), + .O(clk_IBUF)); + mux_4_1 m0 + (.op0_OBUF(op0_OBUF), + .op0_idx_IBUF(op0_idx_IBUF), + .r0_out(r0_out), + .r1_out(r1_out), + .r2_out(r2_out), + .r3_out(r3_out)); + mux_4_1_0 m1 + (.op1_OBUF(op1_OBUF), + .op1_idx_IBUF(op1_idx_IBUF), + .r0_out(r0_out), + .r1_out(r1_out), + .r2_out(r2_out), + .r3_out(r3_out)); + OBUF \op0_OBUF[0]_inst + (.I(op0_OBUF[0]), + .O(op0[0])); + OBUF \op0_OBUF[1]_inst + (.I(op0_OBUF[1]), + .O(op0[1])); + OBUF \op0_OBUF[2]_inst + (.I(op0_OBUF[2]), + .O(op0[2])); + OBUF \op0_OBUF[3]_inst + (.I(op0_OBUF[3]), + .O(op0[3])); + OBUF \op0_OBUF[4]_inst + (.I(op0_OBUF[4]), + .O(op0[4])); + OBUF \op0_OBUF[5]_inst + (.I(op0_OBUF[5]), + .O(op0[5])); + OBUF \op0_OBUF[6]_inst + (.I(op0_OBUF[6]), + .O(op0[6])); + OBUF \op0_OBUF[7]_inst + (.I(op0_OBUF[7]), + .O(op0[7])); + OBUF \op0_OBUF[8]_inst + (.I(op0_OBUF[8]), + .O(op0[8])); + (* SOFT_HLUTNM = "soft_lutpair18" *) + LUT2 #( + .INIT(4'h4)) + \op0_OBUF[8]_inst_i_10 + (.I0(write_index_IBUF[0]), + .I1(write_index_IBUF[1]), + .O(\op0_OBUF[8]_inst_i_10_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair19" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[8]_inst_i_11 + (.I0(write_index_IBUF[0]), + .I1(write_index_IBUF[1]), + .O(\op0_OBUF[8]_inst_i_11_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair19" *) + LUT2 #( + .INIT(4'h4)) + \op0_OBUF[8]_inst_i_12 + (.I0(write_index_IBUF[1]), + .I1(write_index_IBUF[0]), + .O(\op0_OBUF[8]_inst_i_12_n_0 )); + FDSE #( + .INIT(1'b1)) + \op0_OBUF[8]_inst_i_6 + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(\op0_OBUF[8]_inst_i_10_n_0 ), + .Q(\op0_OBUF[8]_inst_i_6_n_0 ), + .S(reset_IBUF)); + FDSE #( + .INIT(1'b1)) + \op0_OBUF[8]_inst_i_7 + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(\r0/_n_0 ), + .Q(\op0_OBUF[8]_inst_i_7_n_0 ), + .S(reset_IBUF)); + FDSE #( + .INIT(1'b1)) + \op0_OBUF[8]_inst_i_8 + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(\op0_OBUF[8]_inst_i_11_n_0 ), + .Q(\op0_OBUF[8]_inst_i_8_n_0 ), + .S(reset_IBUF)); + FDSE #( + .INIT(1'b1)) + \op0_OBUF[8]_inst_i_9 + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(\op0_OBUF[8]_inst_i_12_n_0 ), + .Q(\op0_OBUF[8]_inst_i_9_n_0 ), + .S(reset_IBUF)); + IBUF \op0_idx_IBUF[0]_inst + (.I(op0_idx[0]), + .O(op0_idx_IBUF[0])); + IBUF \op0_idx_IBUF[1]_inst + (.I(op0_idx[1]), + .O(op0_idx_IBUF[1])); + OBUF \op1_OBUF[0]_inst + (.I(op1_OBUF[0]), + .O(op1[0])); + OBUF \op1_OBUF[1]_inst + (.I(op1_OBUF[1]), + .O(op1[1])); + OBUF \op1_OBUF[2]_inst + (.I(op1_OBUF[2]), + .O(op1[2])); + OBUF \op1_OBUF[3]_inst + (.I(op1_OBUF[3]), + .O(op1[3])); + OBUF \op1_OBUF[4]_inst + (.I(op1_OBUF[4]), + .O(op1[4])); + OBUF \op1_OBUF[5]_inst + (.I(op1_OBUF[5]), + .O(op1[5])); + OBUF \op1_OBUF[6]_inst + (.I(op1_OBUF[6]), + .O(op1[6])); + OBUF \op1_OBUF[7]_inst + (.I(op1_OBUF[7]), + .O(op1[7])); + OBUF \op1_OBUF[8]_inst + (.I(op1_OBUF[8]), + .O(op1[8])); + IBUF \op1_idx_IBUF[0]_inst + (.I(op1_idx[0]), + .O(op1_idx_IBUF[0])); + IBUF \op1_idx_IBUF[1]_inst + (.I(op1_idx[1]), + .O(op1_idx_IBUF[1])); + (* SOFT_HLUTNM = "soft_lutpair18" *) + LUT2 #( + .INIT(4'h1)) + \r0/ + (.I0(write_index_IBUF[0]), + .I1(write_index_IBUF[1]), + .O(\r0/_n_0 )); + register r3 + (.clk_IBUF_BUFG(clk_IBUF_BUFG), + .\op0_OBUF[8]_inst_i_1 (\op0_OBUF[8]_inst_i_7_n_0 ), + .\op0_OBUF[8]_inst_i_1_0 (\op0_OBUF[8]_inst_i_6_n_0 ), + .\op0_OBUF[8]_inst_i_1_1 (\op0_OBUF[8]_inst_i_9_n_0 ), + .\op0_OBUF[8]_inst_i_1_2 (\op0_OBUF[8]_inst_i_8_n_0 ), + .r0_out(r0_out), + .r1_out(r1_out), + .r2_out(r2_out), + .r3_out(r3_out), + .reset_IBUF(reset_IBUF), + .write_data_IBUF(write_data_IBUF)); + IBUF reset_IBUF_inst + (.I(reset), + .O(reset_IBUF)); + IBUF \write_data_IBUF[0]_inst + (.I(write_data[0]), + .O(write_data_IBUF[0])); + IBUF \write_data_IBUF[1]_inst + (.I(write_data[1]), + .O(write_data_IBUF[1])); + IBUF \write_data_IBUF[2]_inst + (.I(write_data[2]), + .O(write_data_IBUF[2])); + IBUF \write_data_IBUF[3]_inst + (.I(write_data[3]), + .O(write_data_IBUF[3])); + IBUF \write_data_IBUF[4]_inst + (.I(write_data[4]), + .O(write_data_IBUF[4])); + IBUF \write_data_IBUF[5]_inst + (.I(write_data[5]), + .O(write_data_IBUF[5])); + IBUF \write_data_IBUF[6]_inst + (.I(write_data[6]), + .O(write_data_IBUF[6])); + IBUF \write_data_IBUF[7]_inst + (.I(write_data[7]), + .O(write_data_IBUF[7])); + IBUF \write_data_IBUF[8]_inst + (.I(write_data[8]), + .O(write_data_IBUF[8])); + IBUF \write_index_IBUF[0]_inst + (.I(write_index[0]), + .O(write_index_IBUF[0])); + IBUF \write_index_IBUF[1]_inst + (.I(write_index[1]), + .O(write_index_IBUF[1])); +endmodule + +module mux_4_1 + (op0_OBUF, + r1_out, + r0_out, + r3_out, + op0_idx_IBUF, + r2_out); + output [8:0]op0_OBUF; + input [8:0]r1_out; + input [8:0]r0_out; + input [8:0]r3_out; + input [1:0]op0_idx_IBUF; + input [8:0]r2_out; + + wire [8:0]op0_OBUF; + wire [1:0]op0_idx_IBUF; + wire [8:0]r0_out; + wire [8:0]r1_out; + wire [8:0]r2_out; + wire [8:0]r3_out; + + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[0]_inst_i_1 + (.I0(r1_out[0]), + .I1(r0_out[0]), + .I2(r3_out[0]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[0]), + .O(op0_OBUF[0])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[1]_inst_i_1 + (.I0(r1_out[1]), + .I1(r0_out[1]), + .I2(r3_out[1]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[1]), + .O(op0_OBUF[1])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[2]_inst_i_1 + (.I0(r1_out[2]), + .I1(r0_out[2]), + .I2(r3_out[2]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[2]), + .O(op0_OBUF[2])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[3]_inst_i_1 + (.I0(r1_out[3]), + .I1(r0_out[3]), + .I2(r3_out[3]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[3]), + .O(op0_OBUF[3])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[4]_inst_i_1 + (.I0(r1_out[4]), + .I1(r0_out[4]), + .I2(r3_out[4]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[4]), + .O(op0_OBUF[4])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[5]_inst_i_1 + (.I0(r1_out[5]), + .I1(r0_out[5]), + .I2(r3_out[5]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[5]), + .O(op0_OBUF[5])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[6]_inst_i_1 + (.I0(r1_out[6]), + .I1(r0_out[6]), + .I2(r3_out[6]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[6]), + .O(op0_OBUF[6])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[7]_inst_i_1 + (.I0(r1_out[7]), + .I1(r0_out[7]), + .I2(r3_out[7]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[7]), + .O(op0_OBUF[7])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[8]_inst_i_1 + (.I0(r1_out[8]), + .I1(r0_out[8]), + .I2(r3_out[8]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[8]), + .O(op0_OBUF[8])); +endmodule + +(* ORIG_REF_NAME = "mux_4_1" *) +module mux_4_1_0 + (op1_OBUF, + r1_out, + r0_out, + r3_out, + op1_idx_IBUF, + r2_out); + output [8:0]op1_OBUF; + input [8:0]r1_out; + input [8:0]r0_out; + input [8:0]r3_out; + input [1:0]op1_idx_IBUF; + input [8:0]r2_out; + + wire [8:0]op1_OBUF; + wire [1:0]op1_idx_IBUF; + wire [8:0]r0_out; + wire [8:0]r1_out; + wire [8:0]r2_out; + wire [8:0]r3_out; + + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[0]_inst_i_1 + (.I0(r1_out[0]), + .I1(r0_out[0]), + .I2(r3_out[0]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[0]), + .O(op1_OBUF[0])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[1]_inst_i_1 + (.I0(r1_out[1]), + .I1(r0_out[1]), + .I2(r3_out[1]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[1]), + .O(op1_OBUF[1])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[2]_inst_i_1 + (.I0(r1_out[2]), + .I1(r0_out[2]), + .I2(r3_out[2]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[2]), + .O(op1_OBUF[2])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[3]_inst_i_1 + (.I0(r1_out[3]), + .I1(r0_out[3]), + .I2(r3_out[3]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[3]), + .O(op1_OBUF[3])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[4]_inst_i_1 + (.I0(r1_out[4]), + .I1(r0_out[4]), + .I2(r3_out[4]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[4]), + .O(op1_OBUF[4])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[5]_inst_i_1 + (.I0(r1_out[5]), + .I1(r0_out[5]), + .I2(r3_out[5]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[5]), + .O(op1_OBUF[5])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[6]_inst_i_1 + (.I0(r1_out[6]), + .I1(r0_out[6]), + .I2(r3_out[6]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[6]), + .O(op1_OBUF[6])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[7]_inst_i_1 + (.I0(r1_out[7]), + .I1(r0_out[7]), + .I2(r3_out[7]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[7]), + .O(op1_OBUF[7])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[8]_inst_i_1 + (.I0(r1_out[8]), + .I1(r0_out[8]), + .I2(r3_out[8]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[8]), + .O(op1_OBUF[8])); +endmodule + +module register + (r0_out, + r1_out, + r2_out, + r3_out, + reset_IBUF, + write_data_IBUF, + clk_IBUF_BUFG, + \op0_OBUF[8]_inst_i_1 , + \op0_OBUF[8]_inst_i_1_0 , + \op0_OBUF[8]_inst_i_1_1 , + \op0_OBUF[8]_inst_i_1_2 ); + output [8:0]r0_out; + output [8:0]r1_out; + output [8:0]r2_out; + output [8:0]r3_out; + input reset_IBUF; + input [8:0]write_data_IBUF; + input clk_IBUF_BUFG; + input \op0_OBUF[8]_inst_i_1 ; + input \op0_OBUF[8]_inst_i_1_0 ; + input \op0_OBUF[8]_inst_i_1_1 ; + input \op0_OBUF[8]_inst_i_1_2 ; + + wire \Dout_tristate_oe_reg_n_0_[0] ; + wire \Dout_tristate_oe_reg_n_0_[1] ; + wire \Dout_tristate_oe_reg_n_0_[2] ; + wire \Dout_tristate_oe_reg_n_0_[3] ; + wire \Dout_tristate_oe_reg_n_0_[4] ; + wire \Dout_tristate_oe_reg_n_0_[5] ; + wire \Dout_tristate_oe_reg_n_0_[6] ; + wire \Dout_tristate_oe_reg_n_0_[7] ; + wire \Dout_tristate_oe_reg_n_0_[8] ; + wire clk_IBUF_BUFG; + wire \op0_OBUF[8]_inst_i_1 ; + wire \op0_OBUF[8]_inst_i_1_0 ; + wire \op0_OBUF[8]_inst_i_1_1 ; + wire \op0_OBUF[8]_inst_i_1_2 ; + wire [8:0]r0_out; + wire [8:0]r1_out; + wire [8:0]r2_out; + wire [8:0]r3_out; + wire reset_IBUF; + wire [8:0]write_data_IBUF; + + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[0] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[0]), + .Q(\Dout_tristate_oe_reg_n_0_[0] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[1] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[1]), + .Q(\Dout_tristate_oe_reg_n_0_[1] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[2] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[2]), + .Q(\Dout_tristate_oe_reg_n_0_[2] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[3] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[3]), + .Q(\Dout_tristate_oe_reg_n_0_[3] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[4] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[4]), + .Q(\Dout_tristate_oe_reg_n_0_[4] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[5] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[5]), + .Q(\Dout_tristate_oe_reg_n_0_[5] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[6] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[6]), + .Q(\Dout_tristate_oe_reg_n_0_[6] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[7] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[7]), + .Q(\Dout_tristate_oe_reg_n_0_[7] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[8] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[8]), + .Q(\Dout_tristate_oe_reg_n_0_[8] ), + .R(reset_IBUF)); + (* SOFT_HLUTNM = "soft_lutpair0" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[0]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[0] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[0])); + (* SOFT_HLUTNM = "soft_lutpair0" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[0]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[0] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[0])); + (* SOFT_HLUTNM = "soft_lutpair9" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[0]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[0] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[0])); + (* SOFT_HLUTNM = "soft_lutpair9" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[0]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[0] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[0])); + (* SOFT_HLUTNM = "soft_lutpair1" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[1]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[1] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[1])); + (* SOFT_HLUTNM = "soft_lutpair1" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[1]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[1] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[1])); + (* SOFT_HLUTNM = "soft_lutpair10" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[1]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[1] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[1])); + (* SOFT_HLUTNM = "soft_lutpair10" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[1]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[1] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[1])); + (* SOFT_HLUTNM = "soft_lutpair2" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[2]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[2] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[2])); + (* SOFT_HLUTNM = "soft_lutpair2" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[2]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[2] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[2])); + (* SOFT_HLUTNM = "soft_lutpair11" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[2]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[2] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[2])); + (* SOFT_HLUTNM = "soft_lutpair11" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[2]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[2] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[2])); + (* SOFT_HLUTNM = "soft_lutpair3" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[3]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[3] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[3])); + (* SOFT_HLUTNM = "soft_lutpair3" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[3]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[3] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[3])); + (* SOFT_HLUTNM = "soft_lutpair12" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[3]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[3] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[3])); + (* SOFT_HLUTNM = "soft_lutpair12" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[3]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[3] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[3])); + (* SOFT_HLUTNM = "soft_lutpair4" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[4]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[4] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[4])); + (* SOFT_HLUTNM = "soft_lutpair4" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[4]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[4] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[4])); + (* SOFT_HLUTNM = "soft_lutpair13" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[4]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[4] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[4])); + (* SOFT_HLUTNM = "soft_lutpair13" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[4]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[4] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[4])); + (* SOFT_HLUTNM = "soft_lutpair5" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[5]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[5] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[5])); + (* SOFT_HLUTNM = "soft_lutpair5" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[5]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[5] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[5])); + (* SOFT_HLUTNM = "soft_lutpair14" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[5]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[5] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[5])); + (* SOFT_HLUTNM = "soft_lutpair14" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[5]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[5] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[5])); + (* SOFT_HLUTNM = "soft_lutpair6" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[6]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[6] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[6])); + (* SOFT_HLUTNM = "soft_lutpair6" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[6]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[6] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[6])); + (* SOFT_HLUTNM = "soft_lutpair15" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[6]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[6] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[6])); + (* SOFT_HLUTNM = "soft_lutpair15" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[6]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[6] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[6])); + (* SOFT_HLUTNM = "soft_lutpair7" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[7]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[7] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[7])); + (* SOFT_HLUTNM = "soft_lutpair7" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[7]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[7] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[7])); + (* SOFT_HLUTNM = "soft_lutpair16" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[7]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[7] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[7])); + (* SOFT_HLUTNM = "soft_lutpair16" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[7]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[7] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[7])); + (* SOFT_HLUTNM = "soft_lutpair8" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[8]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[8] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[8])); + (* SOFT_HLUTNM = "soft_lutpair8" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[8]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[8] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[8])); + (* SOFT_HLUTNM = "soft_lutpair17" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[8]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[8] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[8])); + (* SOFT_HLUTNM = "soft_lutpair17" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[8]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[8] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[8])); +endmodule +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + 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; + +//-------- 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; + + 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 + +endmodule +`endif diff --git a/lab2CA.sim/sim_1/impl/func/xsim/alu_tb_vlog.prj b/lab2CA.sim/sim_1/impl/func/xsim/alu_tb_vlog.prj new file mode 100644 index 0000000..1388b93 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/func/xsim/alu_tb_vlog.prj @@ -0,0 +1,8 @@ +# compile verilog/system verilog design source files +verilog xil_defaultlib \ +"alu_tb_func_impl.v" \ +"../../../../../lab2CA.srcs/sources_1/new/BasicModules.v" \ +"../../../../../lab2CA.srcs/sources_1/new/ALU.v" \ + +# Do not sort compile order +nosort diff --git a/lab2CA.sim/sim_1/impl/func/xsim/webtalk.jou b/lab2CA.sim/sim_1/impl/func/xsim/webtalk.jou new file mode 100644 index 0000000..81f53d6 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/func/xsim/webtalk.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Webtalk v2018.3 (64-bit) +# SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 +# IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 +# Start of session at: Sat Feb 16 16:48:49 2019 +# Process ID: 940 +# Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/func/xsim +# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/webtalk/xsim_webtalk.tcl -notrace +# Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/func/xsim/webtalk.log +# Journal file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/func/xsim\webtalk.jou +#----------------------------------------------------------- +source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/webtalk/xsim_webtalk.tcl -notrace diff --git a/lab2CA.sim/sim_1/impl/func/xsim/xelab.pb b/lab2CA.sim/sim_1/impl/func/xsim/xelab.pb new file mode 100644 index 0000000000000000000000000000000000000000..4983d650ab2f723b1b2ae7db6e4522d35fc5ddc2 GIT binary patch literal 3142 zcmcgu+iue^7~V;nun?LwU}$2J1)DaFwauw*vMaWV3#7rt4hV4*If>I+a_ua3+U^y& z;thBy9tfxDikDGHRcTkLo#s3I2m1#MtnUlBFTm#7&Z=V?M^6OlXB0`ET6^^3vuCxB;tUI-ThX zyzlVjHYMGjgr?`VYNqFT$IvnivzDX7uY?jdI))!vScj*S!i)UB0$yN&(*cg^57~9n zUn}70MaCFm-IF`Fwr%Sgey)J;E1i=@!PF?6HwtTwfUri!hAB!C95sf7wVXO{j4(w( z9gi@q4JC&LYPyDv;|Mv9V>E-na)Tgt>;PF7b`2NSYJ`QUdPF$Lx=`LGBt%rLQw20q z&%T5ftewLVq5dS$lmz)s#)wLc@CR6Ze+~r>vlNp=eIpo3M2|~|Xy(hnk24nfq@U0d zO1*er-tE#rDWJRyb2B_e64&$9!*~|ibR16)>=oF)7AmSLs8CQez)<#5jH05T>~>oZ z@e8nQ&BXO=9rp~pzLY4HIkb>Sl5nbza5k=1+p#q8iMpn%qjbP-hpSLviKAICma7+i z0b_eD9p)1__#>uh1tkJTNFo?hK7@!NdMn7pv}687*S#M23=TD2|3$Rg-UCG2Yw8js zuzyARIPV8eGnvbac?u`ZoG;0=&27ig;H+)1Y9?Z4URs9E(*;|(^1K_nu+O86VwL*w z;bAm&)MN1KeiheI6!~UAB$!3zHSd+cf>hq)P%$na%T-P_k1J6%S1#BqZISe57yJTDRDvsqOd0(Q?bLZyD?Pe;Sad~dZ~{fbueeR*b_ Ybv4_bqfY_P0QkTnHEe`DjW(Bm1E(pjRR910 literal 0 HcmV?d00001 diff --git a/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/Compile_Options.txt b/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/Compile_Options.txt new file mode 100644 index 0000000..47d6fc2 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/Compile_Options.txt @@ -0,0 +1 @@ +-wto "0a5803efda44405bb28bbf43ba22e808" --incr --debug "typical" --relax --mt "2" -L "xil_defaultlib" -L "unisims_ver" -L "secureip" --snapshot "alu_tb_func_impl" "xil_defaultlib.alu_tb" "xil_defaultlib.glbl" -log "elaborate.log" diff --git a/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/TempBreakPointFile.txt b/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/TempBreakPointFile.txt new file mode 100644 index 0000000..fdbc612 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/TempBreakPointFile.txt @@ -0,0 +1 @@ +Breakpoint File Version 1.0 diff --git a/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/obj/xsim_1.c b/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/obj/xsim_1.c new file mode 100644 index 0000000..3366b7b --- /dev/null +++ b/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/obj/xsim_1.c @@ -0,0 +1,119 @@ +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2013 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/**********************************************************************/ + + +#include "iki.h" +#include +#include +#ifdef __GNUC__ +#include +#else +#include +#define alloca _alloca +#endif +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2013 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/**********************************************************************/ + + +#include "iki.h" +#include +#include +#ifdef __GNUC__ +#include +#else +#include +#define alloca _alloca +#endif +typedef void (*funcp)(char *, char *); +extern int main(int, char**); +extern void execute_79(char*, char *); +extern void execute_181(char*, char *); +extern void execute_182(char*, char *); +extern void execute_183(char*, char *); +extern void vlog_const_rhs_process_execute_0_fast_no_reg_no_agg(char*, char*, char*); +extern void execute_180(char*, char *); +extern void execute_84(char*, char *); +extern void execute_85(char*, char *); +extern void execute_129(char*, char *); +extern void execute_102(char*, char *); +extern void execute_150(char*, char *); +extern void execute_159(char*, char *); +extern void execute_168(char*, char *); +extern void execute_177(char*, char *); +extern void execute_178(char*, char *); +extern void execute_78(char*, char *); +extern void execute_81(char*, char *); +extern void execute_82(char*, char *); +extern void execute_83(char*, char *); +extern void execute_184(char*, char *); +extern void execute_185(char*, char *); +extern void execute_186(char*, char *); +extern void execute_187(char*, char *); +extern void execute_188(char*, char *); +extern void vlog_transfunc_eventcallback(char*, char*, unsigned, unsigned, unsigned, char *); +funcp funcTab[25] = {(funcp)execute_79, (funcp)execute_181, (funcp)execute_182, (funcp)execute_183, (funcp)vlog_const_rhs_process_execute_0_fast_no_reg_no_agg, (funcp)execute_180, (funcp)execute_84, (funcp)execute_85, (funcp)execute_129, (funcp)execute_102, (funcp)execute_150, (funcp)execute_159, (funcp)execute_168, (funcp)execute_177, (funcp)execute_178, (funcp)execute_78, (funcp)execute_81, (funcp)execute_82, (funcp)execute_83, (funcp)execute_184, (funcp)execute_185, (funcp)execute_186, (funcp)execute_187, (funcp)execute_188, (funcp)vlog_transfunc_eventcallback}; +const int NumRelocateId= 25; + +void relocate(char *dp) +{ + iki_relocate(dp, "xsim.dir/alu_tb_func_impl/xsim.reloc", (void **)funcTab, 25); + + /*Populate the transaction function pointer field in the whole net structure */ +} + +void sensitize(char *dp) +{ + iki_sensitize(dp, "xsim.dir/alu_tb_func_impl/xsim.reloc"); +} + +void simulate(char *dp) +{ + iki_schedule_processes_at_time_zero(dp, "xsim.dir/alu_tb_func_impl/xsim.reloc"); + // Initialize Verilog nets in mixed simulation, for the cases when the value at time 0 should be propagated from the mixed language Vhdl net + iki_execute_processes(); + + // Schedule resolution functions for the multiply driven Verilog nets that have strength + // Schedule transaction functions for the singly driven Verilog nets that have strength + +} +#include "iki_bridge.h" +void relocate(char *); + +void sensitize(char *); + +void simulate(char *); + +extern SYSTEMCLIB_IMP_DLLSPEC void local_register_implicit_channel(int, char*); +extern void implicit_HDL_SCinstatiate(); + +extern SYSTEMCLIB_IMP_DLLSPEC int xsim_argc_copy ; +extern SYSTEMCLIB_IMP_DLLSPEC char** xsim_argv_copy ; + +int main(int argc, char **argv) +{ + iki_heap_initialize("ms", "isimmm", 0, 2147483648) ; + iki_set_sv_type_file_path_name("xsim.dir/alu_tb_func_impl/xsim.svtype"); + iki_set_crvs_dump_file_path_name("xsim.dir/alu_tb_func_impl/xsim.crvsdump"); + void* design_handle = iki_create_design("xsim.dir/alu_tb_func_impl/xsim.mem", (void *)relocate, (void *)sensitize, (void *)simulate, 0, isimBridge_getWdbWriter(), 0, argc, argv); + iki_set_rc_trial_count(100); + (void) design_handle; + return iki_simulate_design(); +} diff --git a/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/webtalk/usage_statistics_ext_xsim.xml b/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/webtalk/usage_statistics_ext_xsim.xml new file mode 100644 index 0000000..9490939 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/webtalk/usage_statistics_ext_xsim.xml @@ -0,0 +1,54 @@ + + +
+
+ + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+
+
+
+ + + + + + + + +
+
+ + + + + + + + +
+
+
+
diff --git a/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/xsim.mem b/lab2CA.sim/sim_1/impl/func/xsim/xsim.dir/alu_tb_func_impl/xsim.mem new file mode 100644 index 0000000000000000000000000000000000000000..7f25810f6155fab31992f1ee2bd521e4f93b9748 GIT binary patch literal 8605 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 Sa^!6Q263RDAfK|Jru_y(4@I{C literal 0 HcmV?d00001 diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/alu_tb.tcl b/lab2CA.sim/sim_1/impl/timing/xsim/alu_tb.tcl new file mode 100644 index 0000000..1094e45 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/alu_tb.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/lab2CA.sim/sim_1/impl/timing/xsim/alu_tb_time_impl.v b/lab2CA.sim/sim_1/impl/timing/xsim/alu_tb_time_impl.v new file mode 100644 index 0000000..e03e300 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/alu_tb_time_impl.v @@ -0,0 +1,931 @@ +// Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. +// -------------------------------------------------------------------------------- +// Tool Version: Vivado v.2018.3 (win64) Build 2405991 Thu Dec 6 23:38:27 MST 2018 +// Date : Sat Feb 16 16:46:39 2019 +// Host : DESKTOP-8QFGS52 running 64-bit major release (build 9200) +// Command : write_verilog -mode timesim -nolib -sdf_anno true -force -file +// C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/alu_tb_time_impl.v +// Design : RegFile +// Purpose : This verilog netlist is a timing simulation representation of the design and should not be modified or +// synthesized. Please ensure that this netlist is used with the corresponding SDF file. +// Device : xc7k160tifbg484-2L +// -------------------------------------------------------------------------------- +`timescale 1 ps / 1 ps +`define XIL_TIMING + +(* ECO_CHECKSUM = "b4d7812f" *) +(* NotValidForBitStream *) +module RegFile + (clk, + reset, + write_index, + op0_idx, + op1_idx, + write_data, + op0, + op1); + input clk; + input reset; + input [1:0]write_index; + input [1:0]op0_idx; + input [1:0]op1_idx; + input [8:0]write_data; + output [8:0]op0; + output [8:0]op1; + + wire clk; + wire clk_IBUF; + wire clk_IBUF_BUFG; + wire [8:0]op0; + wire [8:0]op0_OBUF; + wire \op0_OBUF[8]_inst_i_10_n_0 ; + wire \op0_OBUF[8]_inst_i_11_n_0 ; + wire \op0_OBUF[8]_inst_i_12_n_0 ; + wire \op0_OBUF[8]_inst_i_6_n_0 ; + wire \op0_OBUF[8]_inst_i_7_n_0 ; + wire \op0_OBUF[8]_inst_i_8_n_0 ; + wire \op0_OBUF[8]_inst_i_9_n_0 ; + wire [1:0]op0_idx; + wire [1:0]op0_idx_IBUF; + wire [8:0]op1; + wire [8:0]op1_OBUF; + wire [1:0]op1_idx; + wire [1:0]op1_idx_IBUF; + wire \r0/_n_0 ; + wire [8:0]r0_out; + wire [8:0]r1_out; + wire [8:0]r2_out; + wire [8:0]r3_out; + wire reset; + wire reset_IBUF; + wire [8:0]write_data; + wire [8:0]write_data_IBUF; + wire [1:0]write_index; + wire [1:0]write_index_IBUF; + +initial begin + $sdf_annotate("alu_tb_time_impl.sdf",,,,"tool_control"); +end + BUFG clk_IBUF_BUFG_inst + (.I(clk_IBUF), + .O(clk_IBUF_BUFG)); + IBUF clk_IBUF_inst + (.I(clk), + .O(clk_IBUF)); + mux_4_1 m0 + (.op0_OBUF(op0_OBUF), + .op0_idx_IBUF(op0_idx_IBUF), + .r0_out(r0_out), + .r1_out(r1_out), + .r2_out(r2_out), + .r3_out(r3_out)); + mux_4_1_0 m1 + (.op1_OBUF(op1_OBUF), + .op1_idx_IBUF(op1_idx_IBUF), + .r0_out(r0_out), + .r1_out(r1_out), + .r2_out(r2_out), + .r3_out(r3_out)); + OBUF \op0_OBUF[0]_inst + (.I(op0_OBUF[0]), + .O(op0[0])); + OBUF \op0_OBUF[1]_inst + (.I(op0_OBUF[1]), + .O(op0[1])); + OBUF \op0_OBUF[2]_inst + (.I(op0_OBUF[2]), + .O(op0[2])); + OBUF \op0_OBUF[3]_inst + (.I(op0_OBUF[3]), + .O(op0[3])); + OBUF \op0_OBUF[4]_inst + (.I(op0_OBUF[4]), + .O(op0[4])); + OBUF \op0_OBUF[5]_inst + (.I(op0_OBUF[5]), + .O(op0[5])); + OBUF \op0_OBUF[6]_inst + (.I(op0_OBUF[6]), + .O(op0[6])); + OBUF \op0_OBUF[7]_inst + (.I(op0_OBUF[7]), + .O(op0[7])); + OBUF \op0_OBUF[8]_inst + (.I(op0_OBUF[8]), + .O(op0[8])); + (* SOFT_HLUTNM = "soft_lutpair18" *) + LUT2 #( + .INIT(4'h4)) + \op0_OBUF[8]_inst_i_10 + (.I0(write_index_IBUF[0]), + .I1(write_index_IBUF[1]), + .O(\op0_OBUF[8]_inst_i_10_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair19" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[8]_inst_i_11 + (.I0(write_index_IBUF[0]), + .I1(write_index_IBUF[1]), + .O(\op0_OBUF[8]_inst_i_11_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair19" *) + LUT2 #( + .INIT(4'h4)) + \op0_OBUF[8]_inst_i_12 + (.I0(write_index_IBUF[1]), + .I1(write_index_IBUF[0]), + .O(\op0_OBUF[8]_inst_i_12_n_0 )); + FDSE #( + .INIT(1'b1)) + \op0_OBUF[8]_inst_i_6 + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(\op0_OBUF[8]_inst_i_10_n_0 ), + .Q(\op0_OBUF[8]_inst_i_6_n_0 ), + .S(reset_IBUF)); + FDSE #( + .INIT(1'b1)) + \op0_OBUF[8]_inst_i_7 + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(\r0/_n_0 ), + .Q(\op0_OBUF[8]_inst_i_7_n_0 ), + .S(reset_IBUF)); + FDSE #( + .INIT(1'b1)) + \op0_OBUF[8]_inst_i_8 + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(\op0_OBUF[8]_inst_i_11_n_0 ), + .Q(\op0_OBUF[8]_inst_i_8_n_0 ), + .S(reset_IBUF)); + FDSE #( + .INIT(1'b1)) + \op0_OBUF[8]_inst_i_9 + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(\op0_OBUF[8]_inst_i_12_n_0 ), + .Q(\op0_OBUF[8]_inst_i_9_n_0 ), + .S(reset_IBUF)); + IBUF \op0_idx_IBUF[0]_inst + (.I(op0_idx[0]), + .O(op0_idx_IBUF[0])); + IBUF \op0_idx_IBUF[1]_inst + (.I(op0_idx[1]), + .O(op0_idx_IBUF[1])); + OBUF \op1_OBUF[0]_inst + (.I(op1_OBUF[0]), + .O(op1[0])); + OBUF \op1_OBUF[1]_inst + (.I(op1_OBUF[1]), + .O(op1[1])); + OBUF \op1_OBUF[2]_inst + (.I(op1_OBUF[2]), + .O(op1[2])); + OBUF \op1_OBUF[3]_inst + (.I(op1_OBUF[3]), + .O(op1[3])); + OBUF \op1_OBUF[4]_inst + (.I(op1_OBUF[4]), + .O(op1[4])); + OBUF \op1_OBUF[5]_inst + (.I(op1_OBUF[5]), + .O(op1[5])); + OBUF \op1_OBUF[6]_inst + (.I(op1_OBUF[6]), + .O(op1[6])); + OBUF \op1_OBUF[7]_inst + (.I(op1_OBUF[7]), + .O(op1[7])); + OBUF \op1_OBUF[8]_inst + (.I(op1_OBUF[8]), + .O(op1[8])); + IBUF \op1_idx_IBUF[0]_inst + (.I(op1_idx[0]), + .O(op1_idx_IBUF[0])); + IBUF \op1_idx_IBUF[1]_inst + (.I(op1_idx[1]), + .O(op1_idx_IBUF[1])); + (* SOFT_HLUTNM = "soft_lutpair18" *) + LUT2 #( + .INIT(4'h1)) + \r0/ + (.I0(write_index_IBUF[0]), + .I1(write_index_IBUF[1]), + .O(\r0/_n_0 )); + register r3 + (.clk_IBUF_BUFG(clk_IBUF_BUFG), + .\op0_OBUF[8]_inst_i_1 (\op0_OBUF[8]_inst_i_7_n_0 ), + .\op0_OBUF[8]_inst_i_1_0 (\op0_OBUF[8]_inst_i_6_n_0 ), + .\op0_OBUF[8]_inst_i_1_1 (\op0_OBUF[8]_inst_i_9_n_0 ), + .\op0_OBUF[8]_inst_i_1_2 (\op0_OBUF[8]_inst_i_8_n_0 ), + .r0_out(r0_out), + .r1_out(r1_out), + .r2_out(r2_out), + .r3_out(r3_out), + .reset_IBUF(reset_IBUF), + .write_data_IBUF(write_data_IBUF)); + IBUF reset_IBUF_inst + (.I(reset), + .O(reset_IBUF)); + IBUF \write_data_IBUF[0]_inst + (.I(write_data[0]), + .O(write_data_IBUF[0])); + IBUF \write_data_IBUF[1]_inst + (.I(write_data[1]), + .O(write_data_IBUF[1])); + IBUF \write_data_IBUF[2]_inst + (.I(write_data[2]), + .O(write_data_IBUF[2])); + IBUF \write_data_IBUF[3]_inst + (.I(write_data[3]), + .O(write_data_IBUF[3])); + IBUF \write_data_IBUF[4]_inst + (.I(write_data[4]), + .O(write_data_IBUF[4])); + IBUF \write_data_IBUF[5]_inst + (.I(write_data[5]), + .O(write_data_IBUF[5])); + IBUF \write_data_IBUF[6]_inst + (.I(write_data[6]), + .O(write_data_IBUF[6])); + IBUF \write_data_IBUF[7]_inst + (.I(write_data[7]), + .O(write_data_IBUF[7])); + IBUF \write_data_IBUF[8]_inst + (.I(write_data[8]), + .O(write_data_IBUF[8])); + IBUF \write_index_IBUF[0]_inst + (.I(write_index[0]), + .O(write_index_IBUF[0])); + IBUF \write_index_IBUF[1]_inst + (.I(write_index[1]), + .O(write_index_IBUF[1])); +endmodule + +module mux_4_1 + (op0_OBUF, + r1_out, + r0_out, + r3_out, + op0_idx_IBUF, + r2_out); + output [8:0]op0_OBUF; + input [8:0]r1_out; + input [8:0]r0_out; + input [8:0]r3_out; + input [1:0]op0_idx_IBUF; + input [8:0]r2_out; + + wire [8:0]op0_OBUF; + wire [1:0]op0_idx_IBUF; + wire [8:0]r0_out; + wire [8:0]r1_out; + wire [8:0]r2_out; + wire [8:0]r3_out; + + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[0]_inst_i_1 + (.I0(r1_out[0]), + .I1(r0_out[0]), + .I2(r3_out[0]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[0]), + .O(op0_OBUF[0])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[1]_inst_i_1 + (.I0(r1_out[1]), + .I1(r0_out[1]), + .I2(r3_out[1]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[1]), + .O(op0_OBUF[1])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[2]_inst_i_1 + (.I0(r1_out[2]), + .I1(r0_out[2]), + .I2(r3_out[2]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[2]), + .O(op0_OBUF[2])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[3]_inst_i_1 + (.I0(r1_out[3]), + .I1(r0_out[3]), + .I2(r3_out[3]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[3]), + .O(op0_OBUF[3])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[4]_inst_i_1 + (.I0(r1_out[4]), + .I1(r0_out[4]), + .I2(r3_out[4]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[4]), + .O(op0_OBUF[4])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[5]_inst_i_1 + (.I0(r1_out[5]), + .I1(r0_out[5]), + .I2(r3_out[5]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[5]), + .O(op0_OBUF[5])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[6]_inst_i_1 + (.I0(r1_out[6]), + .I1(r0_out[6]), + .I2(r3_out[6]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[6]), + .O(op0_OBUF[6])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[7]_inst_i_1 + (.I0(r1_out[7]), + .I1(r0_out[7]), + .I2(r3_out[7]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[7]), + .O(op0_OBUF[7])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op0_OBUF[8]_inst_i_1 + (.I0(r1_out[8]), + .I1(r0_out[8]), + .I2(r3_out[8]), + .I3(op0_idx_IBUF[1]), + .I4(op0_idx_IBUF[0]), + .I5(r2_out[8]), + .O(op0_OBUF[8])); +endmodule + +(* ORIG_REF_NAME = "mux_4_1" *) +module mux_4_1_0 + (op1_OBUF, + r1_out, + r0_out, + r3_out, + op1_idx_IBUF, + r2_out); + output [8:0]op1_OBUF; + input [8:0]r1_out; + input [8:0]r0_out; + input [8:0]r3_out; + input [1:0]op1_idx_IBUF; + input [8:0]r2_out; + + wire [8:0]op1_OBUF; + wire [1:0]op1_idx_IBUF; + wire [8:0]r0_out; + wire [8:0]r1_out; + wire [8:0]r2_out; + wire [8:0]r3_out; + + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[0]_inst_i_1 + (.I0(r1_out[0]), + .I1(r0_out[0]), + .I2(r3_out[0]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[0]), + .O(op1_OBUF[0])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[1]_inst_i_1 + (.I0(r1_out[1]), + .I1(r0_out[1]), + .I2(r3_out[1]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[1]), + .O(op1_OBUF[1])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[2]_inst_i_1 + (.I0(r1_out[2]), + .I1(r0_out[2]), + .I2(r3_out[2]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[2]), + .O(op1_OBUF[2])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[3]_inst_i_1 + (.I0(r1_out[3]), + .I1(r0_out[3]), + .I2(r3_out[3]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[3]), + .O(op1_OBUF[3])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[4]_inst_i_1 + (.I0(r1_out[4]), + .I1(r0_out[4]), + .I2(r3_out[4]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[4]), + .O(op1_OBUF[4])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[5]_inst_i_1 + (.I0(r1_out[5]), + .I1(r0_out[5]), + .I2(r3_out[5]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[5]), + .O(op1_OBUF[5])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[6]_inst_i_1 + (.I0(r1_out[6]), + .I1(r0_out[6]), + .I2(r3_out[6]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[6]), + .O(op1_OBUF[6])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[7]_inst_i_1 + (.I0(r1_out[7]), + .I1(r0_out[7]), + .I2(r3_out[7]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[7]), + .O(op1_OBUF[7])); + LUT6 #( + .INIT(64'hF0AAFFCCF0AA00CC)) + \op1_OBUF[8]_inst_i_1 + (.I0(r1_out[8]), + .I1(r0_out[8]), + .I2(r3_out[8]), + .I3(op1_idx_IBUF[1]), + .I4(op1_idx_IBUF[0]), + .I5(r2_out[8]), + .O(op1_OBUF[8])); +endmodule + +module register + (r0_out, + r1_out, + r2_out, + r3_out, + reset_IBUF, + write_data_IBUF, + clk_IBUF_BUFG, + \op0_OBUF[8]_inst_i_1 , + \op0_OBUF[8]_inst_i_1_0 , + \op0_OBUF[8]_inst_i_1_1 , + \op0_OBUF[8]_inst_i_1_2 ); + output [8:0]r0_out; + output [8:0]r1_out; + output [8:0]r2_out; + output [8:0]r3_out; + input reset_IBUF; + input [8:0]write_data_IBUF; + input clk_IBUF_BUFG; + input \op0_OBUF[8]_inst_i_1 ; + input \op0_OBUF[8]_inst_i_1_0 ; + input \op0_OBUF[8]_inst_i_1_1 ; + input \op0_OBUF[8]_inst_i_1_2 ; + + wire \Dout_tristate_oe_reg_n_0_[0] ; + wire \Dout_tristate_oe_reg_n_0_[1] ; + wire \Dout_tristate_oe_reg_n_0_[2] ; + wire \Dout_tristate_oe_reg_n_0_[3] ; + wire \Dout_tristate_oe_reg_n_0_[4] ; + wire \Dout_tristate_oe_reg_n_0_[5] ; + wire \Dout_tristate_oe_reg_n_0_[6] ; + wire \Dout_tristate_oe_reg_n_0_[7] ; + wire \Dout_tristate_oe_reg_n_0_[8] ; + wire clk_IBUF_BUFG; + wire \op0_OBUF[8]_inst_i_1 ; + wire \op0_OBUF[8]_inst_i_1_0 ; + wire \op0_OBUF[8]_inst_i_1_1 ; + wire \op0_OBUF[8]_inst_i_1_2 ; + wire [8:0]r0_out; + wire [8:0]r1_out; + wire [8:0]r2_out; + wire [8:0]r3_out; + wire reset_IBUF; + wire [8:0]write_data_IBUF; + + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[0] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[0]), + .Q(\Dout_tristate_oe_reg_n_0_[0] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[1] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[1]), + .Q(\Dout_tristate_oe_reg_n_0_[1] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[2] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[2]), + .Q(\Dout_tristate_oe_reg_n_0_[2] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[3] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[3]), + .Q(\Dout_tristate_oe_reg_n_0_[3] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[4] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[4]), + .Q(\Dout_tristate_oe_reg_n_0_[4] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[5] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[5]), + .Q(\Dout_tristate_oe_reg_n_0_[5] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[6] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[6]), + .Q(\Dout_tristate_oe_reg_n_0_[6] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[7] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[7]), + .Q(\Dout_tristate_oe_reg_n_0_[7] ), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_tristate_oe_reg[8] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(write_data_IBUF[8]), + .Q(\Dout_tristate_oe_reg_n_0_[8] ), + .R(reset_IBUF)); + (* SOFT_HLUTNM = "soft_lutpair0" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[0]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[0] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[0])); + (* SOFT_HLUTNM = "soft_lutpair0" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[0]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[0] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[0])); + (* SOFT_HLUTNM = "soft_lutpair9" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[0]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[0] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[0])); + (* SOFT_HLUTNM = "soft_lutpair9" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[0]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[0] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[0])); + (* SOFT_HLUTNM = "soft_lutpair1" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[1]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[1] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[1])); + (* SOFT_HLUTNM = "soft_lutpair1" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[1]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[1] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[1])); + (* SOFT_HLUTNM = "soft_lutpair10" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[1]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[1] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[1])); + (* SOFT_HLUTNM = "soft_lutpair10" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[1]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[1] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[1])); + (* SOFT_HLUTNM = "soft_lutpair2" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[2]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[2] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[2])); + (* SOFT_HLUTNM = "soft_lutpair2" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[2]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[2] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[2])); + (* SOFT_HLUTNM = "soft_lutpair11" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[2]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[2] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[2])); + (* SOFT_HLUTNM = "soft_lutpair11" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[2]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[2] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[2])); + (* SOFT_HLUTNM = "soft_lutpair3" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[3]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[3] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[3])); + (* SOFT_HLUTNM = "soft_lutpair3" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[3]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[3] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[3])); + (* SOFT_HLUTNM = "soft_lutpair12" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[3]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[3] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[3])); + (* SOFT_HLUTNM = "soft_lutpair12" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[3]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[3] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[3])); + (* SOFT_HLUTNM = "soft_lutpair4" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[4]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[4] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[4])); + (* SOFT_HLUTNM = "soft_lutpair4" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[4]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[4] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[4])); + (* SOFT_HLUTNM = "soft_lutpair13" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[4]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[4] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[4])); + (* SOFT_HLUTNM = "soft_lutpair13" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[4]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[4] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[4])); + (* SOFT_HLUTNM = "soft_lutpair5" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[5]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[5] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[5])); + (* SOFT_HLUTNM = "soft_lutpair5" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[5]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[5] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[5])); + (* SOFT_HLUTNM = "soft_lutpair14" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[5]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[5] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[5])); + (* SOFT_HLUTNM = "soft_lutpair14" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[5]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[5] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[5])); + (* SOFT_HLUTNM = "soft_lutpair6" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[6]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[6] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[6])); + (* SOFT_HLUTNM = "soft_lutpair6" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[6]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[6] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[6])); + (* SOFT_HLUTNM = "soft_lutpair15" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[6]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[6] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[6])); + (* SOFT_HLUTNM = "soft_lutpair15" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[6]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[6] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[6])); + (* SOFT_HLUTNM = "soft_lutpair7" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[7]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[7] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[7])); + (* SOFT_HLUTNM = "soft_lutpair7" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[7]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[7] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[7])); + (* SOFT_HLUTNM = "soft_lutpair16" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[7]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[7] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[7])); + (* SOFT_HLUTNM = "soft_lutpair16" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[7]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[7] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[7])); + (* SOFT_HLUTNM = "soft_lutpair8" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[8]_inst_i_2 + (.I0(\Dout_tristate_oe_reg_n_0_[8] ), + .I1(\op0_OBUF[8]_inst_i_1_0 ), + .O(r1_out[8])); + (* SOFT_HLUTNM = "soft_lutpair8" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[8]_inst_i_3 + (.I0(\Dout_tristate_oe_reg_n_0_[8] ), + .I1(\op0_OBUF[8]_inst_i_1 ), + .O(r0_out[8])); + (* SOFT_HLUTNM = "soft_lutpair17" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[8]_inst_i_4 + (.I0(\Dout_tristate_oe_reg_n_0_[8] ), + .I1(\op0_OBUF[8]_inst_i_1_2 ), + .O(r3_out[8])); + (* SOFT_HLUTNM = "soft_lutpair17" *) + LUT2 #( + .INIT(4'h8)) + \op0_OBUF[8]_inst_i_5 + (.I0(\Dout_tristate_oe_reg_n_0_[8] ), + .I1(\op0_OBUF[8]_inst_i_1_1 ), + .O(r2_out[8])); +endmodule +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + 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; + +//-------- 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; + + 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 + +endmodule +`endif diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/alu_tb_vlog.prj b/lab2CA.sim/sim_1/impl/timing/xsim/alu_tb_vlog.prj new file mode 100644 index 0000000..7eaa715 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/alu_tb_vlog.prj @@ -0,0 +1,8 @@ +# compile verilog/system verilog design source files +verilog xil_defaultlib \ +"alu_tb_time_impl.v" \ +"../../../../../lab2CA.srcs/sources_1/new/BasicModules.v" \ +"../../../../../lab2CA.srcs/sources_1/new/ALU.v" \ + +# Do not sort compile order +nosort diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb.tcl b/lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb.tcl new file mode 100644 index 0000000..1094e45 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb.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/lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb_time_impl.v b/lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb_time_impl.v new file mode 100644 index 0000000..2bcaec9 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb_time_impl.v @@ -0,0 +1,463 @@ +// Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. +// -------------------------------------------------------------------------------- +// Tool Version: Vivado v.2018.3 (win64) Build 2405991 Thu Dec 6 23:38:27 MST 2018 +// Date : Sat Feb 16 17:29:30 2019 +// Host : DESKTOP-8QFGS52 running 64-bit major release (build 9200) +// Command : write_verilog -mode timesim -nolib -sdf_anno true -force -file +// C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb_time_impl.v +// Design : FetchUnit +// Purpose : This verilog netlist is a timing simulation representation of the design and should not be modified or +// synthesized. Please ensure that this netlist is used with the corresponding SDF file. +// Device : xc7k160tifbg484-2L +// -------------------------------------------------------------------------------- +`timescale 1 ps / 1 ps +`define XIL_TIMING + +(* ECO_CHECKSUM = "fb52d5c" *) +(* NotValidForBitStream *) +module FetchUnit + (clk, + reset, + op_idx, + AddrIn, + AddrOut); + input clk; + input reset; + input op_idx; + input [8:0]AddrIn; + output [8:0]AddrOut; + + wire [8:0]AddrIn; + wire [8:0]AddrIn_IBUF; + wire [8:0]AddrOut; + wire [8:0]AddrOut_OBUF; + wire clk; + wire clk_IBUF; + wire clk_IBUF_BUFG; + wire op_idx; + wire op_idx_IBUF; + wire reset; + wire reset_IBUF; + +initial begin + $sdf_annotate("regFile_tb_time_impl.sdf",,,,"tool_control"); +end + IBUF \AddrIn_IBUF[0]_inst + (.I(AddrIn[0]), + .O(AddrIn_IBUF[0])); + IBUF \AddrIn_IBUF[1]_inst + (.I(AddrIn[1]), + .O(AddrIn_IBUF[1])); + IBUF \AddrIn_IBUF[2]_inst + (.I(AddrIn[2]), + .O(AddrIn_IBUF[2])); + IBUF \AddrIn_IBUF[3]_inst + (.I(AddrIn[3]), + .O(AddrIn_IBUF[3])); + IBUF \AddrIn_IBUF[4]_inst + (.I(AddrIn[4]), + .O(AddrIn_IBUF[4])); + IBUF \AddrIn_IBUF[5]_inst + (.I(AddrIn[5]), + .O(AddrIn_IBUF[5])); + IBUF \AddrIn_IBUF[6]_inst + (.I(AddrIn[6]), + .O(AddrIn_IBUF[6])); + IBUF \AddrIn_IBUF[7]_inst + (.I(AddrIn[7]), + .O(AddrIn_IBUF[7])); + IBUF \AddrIn_IBUF[8]_inst + (.I(AddrIn[8]), + .O(AddrIn_IBUF[8])); + OBUF \AddrOut_OBUF[0]_inst + (.I(AddrOut_OBUF[0]), + .O(AddrOut[0])); + OBUF \AddrOut_OBUF[1]_inst + (.I(AddrOut_OBUF[1]), + .O(AddrOut[1])); + OBUF \AddrOut_OBUF[2]_inst + (.I(AddrOut_OBUF[2]), + .O(AddrOut[2])); + OBUF \AddrOut_OBUF[3]_inst + (.I(AddrOut_OBUF[3]), + .O(AddrOut[3])); + OBUF \AddrOut_OBUF[4]_inst + (.I(AddrOut_OBUF[4]), + .O(AddrOut[4])); + OBUF \AddrOut_OBUF[5]_inst + (.I(AddrOut_OBUF[5]), + .O(AddrOut[5])); + OBUF \AddrOut_OBUF[6]_inst + (.I(AddrOut_OBUF[6]), + .O(AddrOut[6])); + OBUF \AddrOut_OBUF[7]_inst + (.I(AddrOut_OBUF[7]), + .O(AddrOut[7])); + OBUF \AddrOut_OBUF[8]_inst + (.I(AddrOut_OBUF[8]), + .O(AddrOut[8])); + register PC + (.AddrIn_IBUF(AddrIn_IBUF), + .AddrOut_OBUF(AddrOut_OBUF), + .clk_IBUF_BUFG(clk_IBUF_BUFG), + .op_idx_IBUF(op_idx_IBUF), + .reset_IBUF(reset_IBUF)); + BUFG clk_IBUF_BUFG_inst + (.I(clk_IBUF), + .O(clk_IBUF_BUFG)); + IBUF clk_IBUF_inst + (.I(clk), + .O(clk_IBUF)); + IBUF op_idx_IBUF_inst + (.I(op_idx), + .O(op_idx_IBUF)); + IBUF reset_IBUF_inst + (.I(reset), + .O(reset_IBUF)); +endmodule + +module register + (AddrOut_OBUF, + reset_IBUF, + clk_IBUF_BUFG, + op_idx_IBUF, + AddrIn_IBUF); + output [8:0]AddrOut_OBUF; + input reset_IBUF; + input clk_IBUF_BUFG; + input op_idx_IBUF; + input [8:0]AddrIn_IBUF; + + wire [8:0]AddrIn_IBUF; + wire [8:0]AddrOut_OBUF; + wire \AddrOut_OBUF[8]_inst_i_2_n_0 ; + wire \Dout[8]_i_2_n_0 ; + wire clk_IBUF_BUFG; + wire op_idx_IBUF; + wire [8:0]out; + wire [8:0]progC_out; + wire reset_IBUF; + + LUT1 #( + .INIT(2'h1)) + \AddrOut_OBUF[0]_inst_i_1 + (.I0(progC_out[0]), + .O(AddrOut_OBUF[0])); + (* SOFT_HLUTNM = "soft_lutpair3" *) + LUT2 #( + .INIT(4'h6)) + \AddrOut_OBUF[1]_inst_i_1 + (.I0(progC_out[0]), + .I1(progC_out[1]), + .O(AddrOut_OBUF[1])); + (* SOFT_HLUTNM = "soft_lutpair1" *) + LUT3 #( + .INIT(8'h6A)) + \AddrOut_OBUF[2]_inst_i_1 + (.I0(progC_out[2]), + .I1(progC_out[0]), + .I2(progC_out[1]), + .O(AddrOut_OBUF[2])); + (* SOFT_HLUTNM = "soft_lutpair0" *) + LUT4 #( + .INIT(16'h7F80)) + \AddrOut_OBUF[3]_inst_i_1 + (.I0(progC_out[1]), + .I1(progC_out[0]), + .I2(progC_out[2]), + .I3(progC_out[3]), + .O(AddrOut_OBUF[3])); + (* SOFT_HLUTNM = "soft_lutpair0" *) + LUT5 #( + .INIT(32'h6AAAAAAA)) + \AddrOut_OBUF[4]_inst_i_1 + (.I0(progC_out[4]), + .I1(progC_out[1]), + .I2(progC_out[0]), + .I3(progC_out[2]), + .I4(progC_out[3]), + .O(AddrOut_OBUF[4])); + LUT6 #( + .INIT(64'h6AAAAAAAAAAAAAAA)) + \AddrOut_OBUF[5]_inst_i_1 + (.I0(progC_out[5]), + .I1(progC_out[3]), + .I2(progC_out[2]), + .I3(progC_out[0]), + .I4(progC_out[1]), + .I5(progC_out[4]), + .O(AddrOut_OBUF[5])); + (* SOFT_HLUTNM = "soft_lutpair2" *) + LUT4 #( + .INIT(16'h6AAA)) + \AddrOut_OBUF[6]_inst_i_1 + (.I0(progC_out[6]), + .I1(progC_out[4]), + .I2(\AddrOut_OBUF[8]_inst_i_2_n_0 ), + .I3(progC_out[5]), + .O(AddrOut_OBUF[6])); + (* SOFT_HLUTNM = "soft_lutpair2" *) + LUT5 #( + .INIT(32'h6AAAAAAA)) + \AddrOut_OBUF[7]_inst_i_1 + (.I0(progC_out[7]), + .I1(progC_out[5]), + .I2(\AddrOut_OBUF[8]_inst_i_2_n_0 ), + .I3(progC_out[4]), + .I4(progC_out[6]), + .O(AddrOut_OBUF[7])); + LUT6 #( + .INIT(64'h6AAAAAAAAAAAAAAA)) + \AddrOut_OBUF[8]_inst_i_1 + (.I0(progC_out[8]), + .I1(progC_out[6]), + .I2(progC_out[4]), + .I3(\AddrOut_OBUF[8]_inst_i_2_n_0 ), + .I4(progC_out[5]), + .I5(progC_out[7]), + .O(AddrOut_OBUF[8])); + (* SOFT_HLUTNM = "soft_lutpair3" *) + LUT4 #( + .INIT(16'h8000)) + \AddrOut_OBUF[8]_inst_i_2 + (.I0(progC_out[3]), + .I1(progC_out[2]), + .I2(progC_out[0]), + .I3(progC_out[1]), + .O(\AddrOut_OBUF[8]_inst_i_2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair4" *) + LUT3 #( + .INIT(8'h74)) + \Dout[0]_i_1 + (.I0(progC_out[0]), + .I1(op_idx_IBUF), + .I2(AddrIn_IBUF[0]), + .O(out[0])); + (* SOFT_HLUTNM = "soft_lutpair4" *) + LUT4 #( + .INIT(16'h6F60)) + \Dout[1]_i_1 + (.I0(progC_out[0]), + .I1(progC_out[1]), + .I2(op_idx_IBUF), + .I3(AddrIn_IBUF[1]), + .O(out[1])); + (* SOFT_HLUTNM = "soft_lutpair1" *) + LUT5 #( + .INIT(32'h6AFF6A00)) + \Dout[2]_i_1 + (.I0(progC_out[2]), + .I1(progC_out[0]), + .I2(progC_out[1]), + .I3(op_idx_IBUF), + .I4(AddrIn_IBUF[2]), + .O(out[2])); + LUT6 #( + .INIT(64'h7F80FFFF7F800000)) + \Dout[3]_i_1 + (.I0(progC_out[1]), + .I1(progC_out[0]), + .I2(progC_out[2]), + .I3(progC_out[3]), + .I4(op_idx_IBUF), + .I5(AddrIn_IBUF[3]), + .O(out[3])); + LUT4 #( + .INIT(16'h6F60)) + \Dout[4]_i_1 + (.I0(progC_out[4]), + .I1(\AddrOut_OBUF[8]_inst_i_2_n_0 ), + .I2(op_idx_IBUF), + .I3(AddrIn_IBUF[4]), + .O(out[4])); + LUT5 #( + .INIT(32'h6AFF6A00)) + \Dout[5]_i_1 + (.I0(progC_out[5]), + .I1(\AddrOut_OBUF[8]_inst_i_2_n_0 ), + .I2(progC_out[4]), + .I3(op_idx_IBUF), + .I4(AddrIn_IBUF[5]), + .O(out[5])); + LUT6 #( + .INIT(64'h6AAAFFFF6AAA0000)) + \Dout[6]_i_1 + (.I0(progC_out[6]), + .I1(progC_out[4]), + .I2(\AddrOut_OBUF[8]_inst_i_2_n_0 ), + .I3(progC_out[5]), + .I4(op_idx_IBUF), + .I5(AddrIn_IBUF[6]), + .O(out[6])); + LUT5 #( + .INIT(32'h6AFF6A00)) + \Dout[7]_i_1 + (.I0(progC_out[7]), + .I1(\Dout[8]_i_2_n_0 ), + .I2(progC_out[6]), + .I3(op_idx_IBUF), + .I4(AddrIn_IBUF[7]), + .O(out[7])); + LUT6 #( + .INIT(64'h6AAAFFFF6AAA0000)) + \Dout[8]_i_1 + (.I0(progC_out[8]), + .I1(progC_out[6]), + .I2(\Dout[8]_i_2_n_0 ), + .I3(progC_out[7]), + .I4(op_idx_IBUF), + .I5(AddrIn_IBUF[8]), + .O(out[8])); + LUT6 #( + .INIT(64'h8000000000000000)) + \Dout[8]_i_2 + (.I0(progC_out[5]), + .I1(progC_out[3]), + .I2(progC_out[2]), + .I3(progC_out[0]), + .I4(progC_out[1]), + .I5(progC_out[4]), + .O(\Dout[8]_i_2_n_0 )); + FDRE #( + .INIT(1'b0)) + \Dout_reg[0] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(out[0]), + .Q(progC_out[0]), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_reg[1] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(out[1]), + .Q(progC_out[1]), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_reg[2] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(out[2]), + .Q(progC_out[2]), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_reg[3] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(out[3]), + .Q(progC_out[3]), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_reg[4] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(out[4]), + .Q(progC_out[4]), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_reg[5] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(out[5]), + .Q(progC_out[5]), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_reg[6] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(out[6]), + .Q(progC_out[6]), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_reg[7] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(out[7]), + .Q(progC_out[7]), + .R(reset_IBUF)); + FDRE #( + .INIT(1'b0)) + \Dout_reg[8] + (.C(clk_IBUF_BUFG), + .CE(1'b1), + .D(out[8]), + .Q(progC_out[8]), + .R(reset_IBUF)); +endmodule +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + 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; + +//-------- 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; + + 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 + +endmodule +`endif diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb_vlog.prj b/lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb_vlog.prj new file mode 100644 index 0000000..f20f47b --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/regFile_tb_vlog.prj @@ -0,0 +1,8 @@ +# compile verilog/system verilog design source files +verilog xil_defaultlib \ +"regFile_tb_time_impl.v" \ +"../../../../../lab2CA.srcs/sources_1/new/BasicModules.v" \ +"../../../../../lab2CA.srcs/sources_1/new/RegFile.v" \ + +# Do not sort compile order +nosort diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/webtalk.jou b/lab2CA.sim/sim_1/impl/timing/xsim/webtalk.jou index e01861d..e86cd13 100644 --- a/lab2CA.sim/sim_1/impl/timing/xsim/webtalk.jou +++ b/lab2CA.sim/sim_1/impl/timing/xsim/webtalk.jou @@ -2,11 +2,11 @@ # Webtalk v2018.3 (64-bit) # SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 # IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 -# Start of session at: Fri Feb 15 12:37:49 2019 -# Process ID: 17624 -# Current directory: C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/impl/timing/xsim -# Command line: wbtcv.exe -mode batch -source C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/RegFile_time_impl/webtalk/xsim_webtalk.tcl -notrace -# Log file: C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/impl/timing/xsim/webtalk.log -# Journal file: C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/impl/timing/xsim\webtalk.jou +# Start of session at: Sat Feb 16 17:29:42 2019 +# Process ID: 9128 +# Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim +# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/webtalk/xsim_webtalk.tcl -notrace +# Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/webtalk.log +# Journal file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim\webtalk.jou #----------------------------------------------------------- -source C:/Users/JoseIgnacio/CA -notrace +source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/webtalk/xsim_webtalk.tcl -notrace diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/webtalk_12684.backup.jou b/lab2CA.sim/sim_1/impl/timing/xsim/webtalk_12684.backup.jou new file mode 100644 index 0000000..717b45d --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/webtalk_12684.backup.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Webtalk v2018.3 (64-bit) +# SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 +# IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 +# Start of session at: Sat Feb 16 16:46:35 2019 +# Process ID: 12684 +# Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim +# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/xsim_webtalk.tcl -notrace +# Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/webtalk.log +# Journal file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim\webtalk.jou +#----------------------------------------------------------- +source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/xsim_webtalk.tcl -notrace diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/webtalk_17624.backup.jou b/lab2CA.sim/sim_1/impl/timing/xsim/webtalk_17624.backup.jou new file mode 100644 index 0000000..e01861d --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/webtalk_17624.backup.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Webtalk v2018.3 (64-bit) +# SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 +# IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 +# Start of session at: Fri Feb 15 12:37:49 2019 +# Process ID: 17624 +# Current directory: C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/impl/timing/xsim +# Command line: wbtcv.exe -mode batch -source C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/RegFile_time_impl/webtalk/xsim_webtalk.tcl -notrace +# Log file: C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/impl/timing/xsim/webtalk.log +# Journal file: C:/Users/JoseIgnacio/CA Lab/lab2CA.sim/sim_1/impl/timing/xsim\webtalk.jou +#----------------------------------------------------------- +source C:/Users/JoseIgnacio/CA -notrace diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/webtalk_6004.backup.jou b/lab2CA.sim/sim_1/impl/timing/xsim/webtalk_6004.backup.jou new file mode 100644 index 0000000..b0fb309 --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/webtalk_6004.backup.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Webtalk v2018.3 (64-bit) +# SW Build 2405991 on Thu Dec 6 23:38:27 MST 2018 +# IP Build 2404404 on Fri Dec 7 01:43:56 MST 2018 +# Start of session at: Sat Feb 16 16:44:18 2019 +# Process ID: 6004 +# Current directory: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim +# Command line: wbtcv.exe -mode batch -source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/xsim_webtalk.tcl -notrace +# Log file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/webtalk.log +# Journal file: C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim\webtalk.jou +#----------------------------------------------------------- +source C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/xsim_webtalk.tcl -notrace diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/xelab.pb b/lab2CA.sim/sim_1/impl/timing/xsim/xelab.pb index 938982491a11c89ee93dfd6a861d596838c34b7b..3f9f95058a9f7406776eac259197be37f82fe563 100644 GIT binary patch delta 180 zcmdnVzld+b3&u?oUn;TuW#W1IqnwD6aQ<9UJqzBZHSzMA@GYL0R1vP?EnA( delta 466 zcmZ3)x08Ru3&u4QUn;SDXX1J^nV<0_dr)e+TV_t`nl8!=J zevv{^etwBUZhlHBRFq4ARf^fz*i?(NI5W32C$S{I$Vih*6l!&RNoH9I&&9cc~dZm#QK=6|YM +#include +#ifdef __GNUC__ +#include +#else +#include +#define alloca _alloca +#endif +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2013 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/**********************************************************************/ + + +#include "iki.h" +#include +#include +#ifdef __GNUC__ +#include +#else +#include +#define alloca _alloca +#endif +typedef void (*funcp)(char *, char *); +extern int main(int, char**); +extern void execute_79(char*, char *); +extern void execute_181(char*, char *); +extern void execute_182(char*, char *); +extern void execute_183(char*, char *); +extern void vlog_const_rhs_process_execute_0_fast_no_reg_no_agg(char*, char*, char*); +extern void execute_180(char*, char *); +extern void execute_84(char*, char *); +extern void execute_85(char*, char *); +extern void execute_129(char*, char *); +extern void execute_102(char*, char *); +extern void execute_150(char*, char *); +extern void execute_159(char*, char *); +extern void execute_168(char*, char *); +extern void execute_177(char*, char *); +extern void execute_178(char*, char *); +extern void execute_78(char*, char *); +extern void execute_81(char*, char *); +extern void execute_82(char*, char *); +extern void execute_83(char*, char *); +extern void execute_184(char*, char *); +extern void execute_185(char*, char *); +extern void execute_186(char*, char *); +extern void execute_187(char*, char *); +extern void execute_188(char*, char *); +extern void vlog_transfunc_eventcallback(char*, char*, unsigned, unsigned, unsigned, char *); +funcp funcTab[25] = {(funcp)execute_79, (funcp)execute_181, (funcp)execute_182, (funcp)execute_183, (funcp)vlog_const_rhs_process_execute_0_fast_no_reg_no_agg, (funcp)execute_180, (funcp)execute_84, (funcp)execute_85, (funcp)execute_129, (funcp)execute_102, (funcp)execute_150, (funcp)execute_159, (funcp)execute_168, (funcp)execute_177, (funcp)execute_178, (funcp)execute_78, (funcp)execute_81, (funcp)execute_82, (funcp)execute_83, (funcp)execute_184, (funcp)execute_185, (funcp)execute_186, (funcp)execute_187, (funcp)execute_188, (funcp)vlog_transfunc_eventcallback}; +const int NumRelocateId= 25; + +void relocate(char *dp) +{ + iki_relocate(dp, "xsim.dir/alu_tb_time_impl/xsim.reloc", (void **)funcTab, 25); + + /*Populate the transaction function pointer field in the whole net structure */ +} + +void sensitize(char *dp) +{ + iki_sensitize(dp, "xsim.dir/alu_tb_time_impl/xsim.reloc"); +} + +void simulate(char *dp) +{ + iki_schedule_processes_at_time_zero(dp, "xsim.dir/alu_tb_time_impl/xsim.reloc"); + // Initialize Verilog nets in mixed simulation, for the cases when the value at time 0 should be propagated from the mixed language Vhdl net + iki_execute_processes(); + + // Schedule resolution functions for the multiply driven Verilog nets that have strength + // Schedule transaction functions for the singly driven Verilog nets that have strength + +} +#include "iki_bridge.h" +void relocate(char *); + +void sensitize(char *); + +void simulate(char *); + +extern SYSTEMCLIB_IMP_DLLSPEC void local_register_implicit_channel(int, char*); +extern void implicit_HDL_SCinstatiate(); + +extern SYSTEMCLIB_IMP_DLLSPEC int xsim_argc_copy ; +extern SYSTEMCLIB_IMP_DLLSPEC char** xsim_argv_copy ; + +int main(int argc, char **argv) +{ + iki_heap_initialize("ms", "isimmm", 0, 2147483648) ; + iki_set_sv_type_file_path_name("xsim.dir/alu_tb_time_impl/xsim.svtype"); + iki_set_crvs_dump_file_path_name("xsim.dir/alu_tb_time_impl/xsim.crvsdump"); + void* design_handle = iki_create_design("xsim.dir/alu_tb_time_impl/xsim.mem", (void *)relocate, (void *)sensitize, (void *)simulate, 0, isimBridge_getWdbWriter(), 0, argc, argv); + iki_set_rc_trial_count(100); + (void) design_handle; + return iki_simulate_design(); +} diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/usage_statistics_ext_xsim.xml b/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/usage_statistics_ext_xsim.xml new file mode 100644 index 0000000..9a09bdf --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/usage_statistics_ext_xsim.xml @@ -0,0 +1,44 @@ + + +
+
+ + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+
+
+
+ +
+
+ + + + + +
+
+
+
diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/xsim_webtalk.tcl b/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/xsim_webtalk.tcl new file mode 100644 index 0000000..e5cac4d --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/xsim_webtalk.tcl @@ -0,0 +1,42 @@ +webtalk_init -webtalk_dir C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/ +webtalk_register_client -client project +webtalk_add_data -client project -key date_generated -value "Sat Feb 16 16:46:45 2019" -context "software_version_and_target_device" +webtalk_add_data -client project -key product_version -value "XSIM v2018.3 (64-bit)" -context "software_version_and_target_device" +webtalk_add_data -client project -key build_version -value "2405991" -context "software_version_and_target_device" +webtalk_add_data -client project -key os_platform -value "WIN64" -context "software_version_and_target_device" +webtalk_add_data -client project -key registration_id -value "174150793_174150794_210688225_140" -context "software_version_and_target_device" +webtalk_add_data -client project -key tool_flow -value "xsim_vivado" -context "software_version_and_target_device" +webtalk_add_data -client project -key beta -value "FALSE" -context "software_version_and_target_device" +webtalk_add_data -client project -key route_design -value "FALSE" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_family -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_device -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_package -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key target_speed -value "not_applicable" -context "software_version_and_target_device" +webtalk_add_data -client project -key random_id -value "4e917e26-7591-4435-9135-15bd446b0238" -context "software_version_and_target_device" +webtalk_add_data -client project -key project_id -value "0a5803efda44405bb28bbf43ba22e808" -context "software_version_and_target_device" +webtalk_add_data -client project -key project_iteration -value "3" -context "software_version_and_target_device" +webtalk_add_data -client project -key os_name -value "Microsoft Windows 8 or later , 64-bit" -context "user_environment" +webtalk_add_data -client project -key os_release -value "major release (build 9200)" -context "user_environment" +webtalk_add_data -client project -key cpu_name -value "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz" -context "user_environment" +webtalk_add_data -client project -key cpu_speed -value "3492 MHz" -context "user_environment" +webtalk_add_data -client project -key total_processors -value "1" -context "user_environment" +webtalk_add_data -client project -key system_ram -value "34.000 GB" -context "user_environment" +webtalk_register_client -client xsim +webtalk_add_data -client xsim -key File_Counter -value "3" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Command -value "xelab" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Vhdl2008 -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key GenDLL -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key SDFModeling -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key HWCosim -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key DPI_Used -value "false" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Debug -value "typical" -context "xsim\\command_line_options" +webtalk_add_data -client xsim -key Simulation_Image_Code -value "71 KB" -context "xsim\\usage" +webtalk_add_data -client xsim -key Simulation_Image_Data -value "8 KB" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Nets -value "0" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Processes -value "113" -context "xsim\\usage" +webtalk_add_data -client xsim -key Total_Instances -value "78" -context "xsim\\usage" +webtalk_add_data -client xsim -key Xilinx_HDL_Libraries_Used -value "secureip simprims_ver " -context "xsim\\usage" +webtalk_add_data -client xsim -key Compiler_Time -value "0.69_sec" -context "xsim\\usage" +webtalk_add_data -client xsim -key Compiler_Memory -value "38776_KB" -context "xsim\\usage" +webtalk_transmit -clientid 1649025917 -regid "174150793_174150794_210688225_140" -xml C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/usage_statistics_ext_xsim.xml -html C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/usage_statistics_ext_xsim.html -wdm C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/webtalk/usage_statistics_ext_xsim.wdm -intro "

XSIM Usage Report


" +webtalk_terminate diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/xsim.mem b/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/alu_tb_time_impl/xsim.mem new file mode 100644 index 0000000000000000000000000000000000000000..82640afae1e3d179f4210ca05641b6befe03ba6b GIT binary patch literal 8557 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 +#include +#ifdef __GNUC__ +#include +#else +#include +#define alloca _alloca +#endif +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2013 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/**********************************************************************/ + + +#include "iki.h" +#include +#include +#ifdef __GNUC__ +#include +#else +#include +#define alloca _alloca +#endif +typedef void (*funcp)(char *, char *); +extern int main(int, char**); +extern void execute_2(char*, char *); +extern void execute_3(char*, char *); +extern void execute_17(char*, char *); +extern void execute_31(char*, char *); +extern void execute_32(char*, char *); +extern void execute_33(char*, char *); +extern void execute_34(char*, char *); +extern void execute_35(char*, char *); +extern void execute_36(char*, char *); +extern void execute_22(char*, char *); +extern void execute_23(char*, char *); +extern void execute_24(char*, char *); +extern void execute_25(char*, char *); +extern void execute_26(char*, char *); +extern void execute_27(char*, char *); +extern void execute_28(char*, char *); +extern void execute_29(char*, char *); +extern void execute_30(char*, char *); +extern void execute_6(char*, char *); +extern void execute_14(char*, char *); +extern void execute_19(char*, char *); +extern void execute_20(char*, char *); +extern void execute_21(char*, char *); +extern void execute_37(char*, char *); +extern void execute_38(char*, char *); +extern void execute_39(char*, char *); +extern void execute_40(char*, char *); +extern void execute_41(char*, char *); +extern void vlog_transfunc_eventcallback(char*, char*, unsigned, unsigned, unsigned, char *); +extern void transaction_10(char*, char*, unsigned, unsigned, unsigned); +funcp funcTab[30] = {(funcp)execute_2, (funcp)execute_3, (funcp)execute_17, (funcp)execute_31, (funcp)execute_32, (funcp)execute_33, (funcp)execute_34, (funcp)execute_35, (funcp)execute_36, (funcp)execute_22, (funcp)execute_23, (funcp)execute_24, (funcp)execute_25, (funcp)execute_26, (funcp)execute_27, (funcp)execute_28, (funcp)execute_29, (funcp)execute_30, (funcp)execute_6, (funcp)execute_14, (funcp)execute_19, (funcp)execute_20, (funcp)execute_21, (funcp)execute_37, (funcp)execute_38, (funcp)execute_39, (funcp)execute_40, (funcp)execute_41, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_10}; +const int NumRelocateId= 30; + +void relocate(char *dp) +{ + iki_relocate(dp, "xsim.dir/regFile_tb_time_impl/xsim.reloc", (void **)funcTab, 30); + + /*Populate the transaction function pointer field in the whole net structure */ +} + +void sensitize(char *dp) +{ + iki_sensitize(dp, "xsim.dir/regFile_tb_time_impl/xsim.reloc"); +} + +void simulate(char *dp) +{ + iki_schedule_processes_at_time_zero(dp, "xsim.dir/regFile_tb_time_impl/xsim.reloc"); + // Initialize Verilog nets in mixed simulation, for the cases when the value at time 0 should be propagated from the mixed language Vhdl net + iki_execute_processes(); + + // Schedule resolution functions for the multiply driven Verilog nets that have strength + // Schedule transaction functions for the singly driven Verilog nets that have strength + +} +#include "iki_bridge.h" +void relocate(char *); + +void sensitize(char *); + +void simulate(char *); + +extern SYSTEMCLIB_IMP_DLLSPEC void local_register_implicit_channel(int, char*); +extern void implicit_HDL_SCinstatiate(); + +extern SYSTEMCLIB_IMP_DLLSPEC int xsim_argc_copy ; +extern SYSTEMCLIB_IMP_DLLSPEC char** xsim_argv_copy ; + +int main(int argc, char **argv) +{ + iki_heap_initialize("ms", "isimmm", 0, 2147483648) ; + iki_set_sv_type_file_path_name("xsim.dir/regFile_tb_time_impl/xsim.svtype"); + iki_set_crvs_dump_file_path_name("xsim.dir/regFile_tb_time_impl/xsim.crvsdump"); + void* design_handle = iki_create_design("xsim.dir/regFile_tb_time_impl/xsim.mem", (void *)relocate, (void *)sensitize, (void *)simulate, 0, isimBridge_getWdbWriter(), 0, argc, argv); + iki_set_rc_trial_count(100); + (void) design_handle; + return iki_simulate_design(); +} diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/webtalk/usage_statistics_ext_xsim.xml b/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/webtalk/usage_statistics_ext_xsim.xml new file mode 100644 index 0000000..cf4b9cf --- /dev/null +++ b/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/webtalk/usage_statistics_ext_xsim.xml @@ -0,0 +1,54 @@ + + +
+
+ + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+
+
+
+ + + + + + + + +
+
+ + + + + + + + +
+
+
+
diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/xsim.mem b/lab2CA.sim/sim_1/impl/timing/xsim/xsim.dir/regFile_tb_time_impl/xsim.mem new file mode 100644 index 0000000000000000000000000000000000000000..392cbe0464d4898088aa86f0c482922fb3ccee85 GIT binary patch literal 4303 zcmeHHeLRzU8`trkN+EhRCr3yniFuhJr$~oUYUgQeyEhQ4&QF&-E6u!x=L-Ak7CB}kISNeL*hwkMBZCPeSf=wva9-C zao(^y+wexlI&RMv?kTq`KVwKo^%yR9;lRW z9x>Dxe$+dDoSkFJcL?t=_j^j=Scv8#<{FGmFW{$!kBVFwSR}Ce5G`eo-0crhn^eQy0XARv-CM(`;^csK-TNn|eEMV=+0Q zL(aa%8cOf9y9xe4OZJC=Cs$&0P#~hs?q()%?$;|ES$@+A8? zH!*4c?Gx%hxM$xWX5+803GlfkvzePuTe(p z=NoBC$|PZ>KK>-yv%O8<)80uDu&r8$RRMR!e_a;lFlqoQoFn(NbubUuT;SdZB0#eR z7=U7=P_R=1*#dnD6rf=M5nmr~0{{<8?9zc8nGo5Yp@a^91OW*c;9Y?O&N*?dBv(7G zu_V{oSh6HLj!UgB;4QCatpxyIzwWfe6)x^F2NOKoK`!EFz#Z#+Nm#GQ3j+3iFfTH| zpb!?{i5|Z1L6(6ZKJLE&Jy2HuWH}63=~{8$d9mJ>GgJH$3;U#nDjt2MRMU%#BozzR0N1uODhB;FcU)o{m!KN{93L)Ir1 zY)xHSs&mC;tc6MP0t+>s^SQk_!Z*DJRl(bR6O-UROx%|&2vty+i45$FV9?G{sJfQc zAQ^bkaerS*z?qEjo=I7Gif9elBQh+62aX@0=k*TcLda{EC5-$TPyrUv5(7d3!CcZV z1h`|Me0LW^vq=+bDE59y&J-Oh`zIIp0ByielAvsEc=PtIh{UcmYgLkAh?pcrLF21Z zdrJo#I0asoq0@N?{`HSpyL;*t(v#$y`&8#vxoU;QHTwACTrans+UQQ-LMyzV+oA2g zM_=b|OzEaoGdGijri~yCplxPjIjR{(9nt-eH@`3BkoWIs3P_+|2mABF!>eDM)7&`G z!d9rj>_b;=$S3RW_0_efeqE5+fv7#sRRlVgki@7|r0rlG_s?*LVS?qI9^xHmTA8TV z9HUQh)1ERGoUqm8g?h-F2cBuVMESzr{sOWtB5A+_6@vMJbO`xEumxZ#UhnH@ypnF^ zovu`l3D(Y%K4!aewafq!Pik)C#1~oKvv+!GHGQ+iyB_itWHA8QR@-zfZfFIwaA5q# zRKc8?w71ealGrbqDpsQ*C2KY{d#;dB=#sCLtom(zBOX8Qkd6Q?eKL`o@r#_-7;`c zL!XPJ`tSIGdZ$rgLPdZiEc@U_fNYhfKM@VElSA|*!<@k)9o2z&r{5A}>?7DGfIDd3 zYFZVgP7E~(N_48+4OEh!bb-|pNrO|Ze#nlTrp znF)_BhSAL>UE$tGlL+BmHS0rw7J<&=kbo9Z;oQ5DPbJW{UP=by6F?3xEpN-;5rnVx zHm)0&R0;KD@iDP+)X~-x3Qp|4m8(Yn{tK-=%RDmE3Qp*j-ePeD6>LF{Z~Um+vYE}05T^!clUjo|jQv+dfiI3!T*-0y zMJ+^V7yT(64xLI;@-{C%VrriH>YA{mC7s)XBWT@mG%);+aWTpNA(L7m`+H=nW+W9o0+O3A1jo2$upT3xJPjc{!Idgj?N zu1}B|eBn$CcW_FkF@@(zyPNvjkffs*^?{zJq~q)b2`J6G4mFutJmV^V$1(bAjqXX! Ty&sc4#HiK93qh3C>^J`e!Pd$I literal 0 HcmV?d00001 diff --git a/lab2CA.sim/sim_1/impl/timing/xsim/xvlog.pb b/lab2CA.sim/sim_1/impl/timing/xsim/xvlog.pb index 148e850e823534c38fb3797b4b9510439bcf4199..45c8fdd7c65ada010e16086ccb716f8ac1b3b877 100644 GIT binary patch literal 3248 zcmcIm%Wl&^6m8NxV2~<{b^+lbD^eO%sda3Z5_bb7q$}8z7D_gjA7f|4#1qZfP0AOr zCDaH1^o%p6h$=+=G6W(EeHC(c3R1iS?GyBSNv>Y>B2$l9cI` z_}t^Su%lHQ71Obg5AIC`8Qow`A`)1SQ2hfeDT}Roh$Anf>FMuiI^$*SDX)=p4Re! zL_1SL-30?6z533eZgvhW>%<;zjjPk@x6+nYMxW5G_b2-i3o}T5mg=@`n#-9!L3ht_ z8Vs)zlCD9o0Xls1H~6(Y_+xYjawQ_gTn_tE9{T~R#MGy9xIc>2!!>#%qX!-cL$Hho zSb!)JJTYE-f&}koL_`#X)yvq1Du#FkYCtb8LB)sPaw=Tj!!sjp>p zz`!d^I7xGZG3NM&uuSMMsR;~H!V;ZDx$kJVL|dyhDz@o3%Y(OpYV*mw+N#z+=cYB- z%)HS`Ya%~H+g+!ll~=dArB|hy*|1MK4)}rEv^F;zzWn*LkM4^hiBcDg6$w1*QXEOT zjzB(28|^Mf;UpePhEeNLk@*UJ6w0UY4DF>8CftC5H3W;8sPyaiBF)Zw^z#4A&c)pH qZq(-*&YTrtwAT!GG3`k}?CMaBAF`NgT8>3NCCnfdz8jtUbi)!2hl)7>(2 lQYWqqpL~`@Z?YJV?&O_}5&V2yT&{U33PGvK`9&!Li~xaK8pHqq diff --git a/lab2CA.srcs/sources_1/new/ALU.v b/lab2CA.srcs/sources_1/new/ALU.v index c44f1c6..604c2f5 100644 --- a/lab2CA.srcs/sources_1/new/ALU.v +++ b/lab2CA.srcs/sources_1/new/ALU.v @@ -61,3 +61,48 @@ module ALU( .out(result)); endmodule + +//testbench +//module alu_tb(); +//reg [8:0] a; +//reg [8:0] b; +//reg [2:0] c; +//wire [8:0] d; + +//ALU alu0( +//.operand0(a), +//.operand1(b), +//.opcode(c), +//.result(d)); + +// initial begin +// a = 9'b000000111; +// b = 9'b000111000; +// c = 3'b000; +// #5 +// a = 9'b000011000; +// b = 9'b000011000; +// c = 3'b001; +// #5 +// a = 9'b101010100; +// b = 9'b010101011; +// c = 3'b010; +// #5 +// a = 9'b101010100; +// b = 9'b010101000; +// c = 3'b011; +// #5 +// a = 9'b000110000; +// b = 9'b000111000; +// c = 3'b100; +// #5 +// a = 9'b01011000; +// c = 3'b101; +// #5 +// a = 9'b00001010; +// c = 3'b110; +// #5 +// #5 $finish; + +// end +//endmodule diff --git a/lab2CA.srcs/sources_1/new/BasicModules.v b/lab2CA.srcs/sources_1/new/BasicModules.v index fcbdbd9..6c65aa7 100644 --- a/lab2CA.srcs/sources_1/new/BasicModules.v +++ b/lab2CA.srcs/sources_1/new/BasicModules.v @@ -900,7 +900,7 @@ module register(input wire clk, reset, Dout = Din; end else begin - Dout = 9'bZZZZZZZZZ; + Dout = Dout; end end diff --git a/lab2CA.srcs/sources_1/new/RegFile.v b/lab2CA.srcs/sources_1/new/RegFile.v index 3721957..20b1591 100644 --- a/lab2CA.srcs/sources_1/new/RegFile.v +++ b/lab2CA.srcs/sources_1/new/RegFile.v @@ -54,3 +54,82 @@ module RegFile(input wire clk, reset, .switch(op1_idx)); endmodule + +//testbench +module regFile_tb(); +reg [8:0] write_d; +reg [1:0] w_idx, op0_idx, op1_idx; +reg reset; +wire [8:0] op0,op1; + + reg clk; + initial begin + clk = 1'b0; + end + always begin + #5 clk = ~clk; // Period to be determined + end + +RegFile regFile0( +.clk(clk), +.reset(reset), +.write_index(w_idx), +.op0_idx(op0_idx), +.op1_idx(op1_idx), +.write_data(write_d), +.op0(op0), +.op1(op1)); + + initial begin + reset = 0; + #5 + reset = 1; + #5 + reset = 0; + w_idx = 2'b00; + op0_idx = 2'b00; + op1_idx = 2'b00; + write_d = 9'b000000011; + #5 + w_idx = 2'b01; + #5 + w_idx = 2'b10; + #5 + w_idx = 2'b11; + #5 + reset = 0; + w_idx = 2'b00; + op0_idx = 2'b00; + op1_idx = 2'b00; + write_d = 9'b001111000; + #5 + reset = 0; + w_idx = 2'b01; + op0_idx = 2'b00; + op1_idx = 2'b01; + write_d = 9'b000001111; + #5 + reset = 0; + w_idx = 2'b10; + op0_idx = 2'b00; + op1_idx = 2'b10; + write_d = 9'b111000001; + #5 + reset = 0; + w_idx = 2'b11; + op0_idx = 2'b11; + op1_idx = 2'b10; + write_d = 9'b100110001; + #5 + reset = 1; + w_idx = 2'b00; + #5 + w_idx = 2'b10; + #5 + w_idx = 2'b01; + #5 + w_idx = 2'b11; + #5 $finish; + + end +endmodule \ No newline at end of file diff --git a/lab2CA.xpr b/lab2CA.xpr index d0d9735..1ef8b75 100644 --- a/lab2CA.xpr +++ b/lab2CA.xpr @@ -31,7 +31,7 @@