From 369c2c625c32116eabe8ac2cf5e79a07f7a31d87 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Thu, 5 Mar 2020 06:58:51 -0500 Subject: [PATCH] synthesis fixes --- rtl/VX_back_end.v | 2 - rtl/VX_cache/VX_bank.v | 12 +- rtl/VX_cache/VX_cache.v | 1 - rtl/VX_cache/VX_cache_config.v | 8 +- rtl/VX_cache/VX_cache_core_req_bank_sel.v | 5 +- rtl/VX_cache/VX_cache_dram_req_arb.v | 6 +- rtl/VX_cache/VX_cache_req_queue.v | 1 - rtl/VX_cache/VX_cache_wb_sel_merge.v | 15 +- rtl/VX_cache/quartus/Makefile | 72 + rtl/VX_cache/quartus/project.sdc | 1 + rtl/VX_cache/quartus/project.tcl | 41 + rtl/VX_csr_data.v | 1 - rtl/VX_csr_pipe.v | 130 +- rtl/VX_define.v | 17 +- rtl/VX_define_synth.v | 8 +- rtl/VX_dmem_controller.v | 7 +- rtl/VX_execute_unit.v | 280 ++-- rtl/VX_fetch.v | 1 - rtl/VX_generic_priority_encoder.v | 7 +- rtl/VX_generic_queue.v | 4 +- rtl/VX_generic_register.v | 4 - rtl/VX_generic_stack.v | 1 + rtl/VX_gpr_stage.v | 1 - rtl/VX_lsu.v | 38 +- rtl/VX_scheduler.v | 2 - rtl/VX_writeback.v | 124 +- rtl/Vortex.v | 102 +- rtl/byte_enabled_simple_dual_port_ram.v | 1 - rtl/cache/VX_Cache_Bank.v | 2 - rtl/cache/VX_cache_data.v | 2 - rtl/cache/VX_cache_data_per_index.v | 2 - rtl/cache/VX_d_cache.v | 5 +- rtl/cache/VX_d_cache_encapsulate.v | 1 - rtl/cache/quartus/Makefile | 70 + rtl/cache/quartus/project.sdc | 1 + rtl/cache/quartus/project.tcl | 41 + rtl/pipe_regs/VX_d_e_reg.v | 2 - rtl/quartus/Makefile | 41 +- rtl/quartus/VX_gpr_syn.qpf | 30 - rtl/quartus/VX_gpr_syn.qsf | 1615 --------------------- rtl/quartus/asm.chg | 1 - rtl/quartus/make_pins_virtual.tcl | 29 - rtl/quartus/map.chg | 2 +- rtl/quartus/project.tcl | 113 +- rtl/quartus/smart.log | 15 +- rtl/quartus/vortex.ini | 40 - rtl/quartus/vortex.sdc | 2 +- 47 files changed, 633 insertions(+), 2273 deletions(-) create mode 100755 rtl/VX_cache/quartus/Makefile create mode 100755 rtl/VX_cache/quartus/project.sdc create mode 100644 rtl/VX_cache/quartus/project.tcl create mode 100755 rtl/cache/quartus/Makefile create mode 100755 rtl/cache/quartus/project.sdc create mode 100644 rtl/cache/quartus/project.tcl delete mode 100644 rtl/quartus/VX_gpr_syn.qpf delete mode 100644 rtl/quartus/VX_gpr_syn.qsf delete mode 100644 rtl/quartus/asm.chg delete mode 100644 rtl/quartus/make_pins_virtual.tcl delete mode 100644 rtl/quartus/vortex.ini diff --git a/rtl/VX_back_end.v b/rtl/VX_back_end.v index 9a6445a9..9b51e9ed 100644 --- a/rtl/VX_back_end.v +++ b/rtl/VX_back_end.v @@ -18,7 +18,6 @@ module VX_back_end ( VX_gpu_dcache_res_inter VX_dcache_rsp, VX_gpu_dcache_req_inter VX_dcache_req - ); @@ -31,7 +30,6 @@ assign VX_writeback_inter.wb_warp_num = VX_writeback_temp.wb_warp_num; // assign VX_writeback_inter(VX_writeback_temp); - VX_mw_wb_inter VX_mw_wb(); wire no_slot_mem; wire no_slot_exec; diff --git a/rtl/VX_cache/VX_bank.v b/rtl/VX_cache/VX_bank.v index 9896efe6..a7778af9 100644 --- a/rtl/VX_cache/VX_bank.v +++ b/rtl/VX_cache/VX_bank.v @@ -176,14 +176,14 @@ module VX_bank ( integer st1_cycle; always @(*) begin - assign dfpq_hazard_st0 = 0; - assign mrvq_hazard_st0 = 0; - assign reqq_hazard_st0 = 0; + dfpq_hazard_st0 = 0; + mrvq_hazard_st0 = 0; + reqq_hazard_st0 = 0; for (st1_cycle = 0; st1_cycle < `STAGE_1_CYCLES; st1_cycle = st1_cycle + 1) begin if (valid_st1[st1_cycle] && going_to_write_st1[st1_cycle]) begin - if (dfpq_addr_st0 [31:`LINE_SELECT_ADDR_START] == addr_st1[st1_cycle][31:`LINE_SELECT_ADDR_START]) assign dfpq_hazard_st0 = 1; - if (mrvq_addr_st0 [31:`LINE_SELECT_ADDR_START] == addr_st1[st1_cycle][31:`LINE_SELECT_ADDR_START]) assign mrvq_hazard_st0 = 1; - if (reqq_req_addr_st0[31:`LINE_SELECT_ADDR_START] == addr_st1[st1_cycle][31:`LINE_SELECT_ADDR_START]) assign reqq_hazard_st0 = 1; + if (dfpq_addr_st0 [31:`LINE_SELECT_ADDR_START] == addr_st1[st1_cycle][31:`LINE_SELECT_ADDR_START]) dfpq_hazard_st0 = 1; + if (mrvq_addr_st0 [31:`LINE_SELECT_ADDR_START] == addr_st1[st1_cycle][31:`LINE_SELECT_ADDR_START]) mrvq_hazard_st0 = 1; + if (reqq_req_addr_st0[31:`LINE_SELECT_ADDR_START] == addr_st1[st1_cycle][31:`LINE_SELECT_ADDR_START]) reqq_hazard_st0 = 1; end end end diff --git a/rtl/VX_cache/VX_cache.v b/rtl/VX_cache/VX_cache.v index 661eb12b..4eb25663 100644 --- a/rtl/VX_cache/VX_cache.v +++ b/rtl/VX_cache/VX_cache.v @@ -1,6 +1,5 @@ `include "VX_cache_config.v" - module VX_cache ( input wire clk, input wire reset, diff --git a/rtl/VX_cache/VX_cache_config.v b/rtl/VX_cache/VX_cache_config.v index 44c993b0..18ca6616 100644 --- a/rtl/VX_cache/VX_cache_config.v +++ b/rtl/VX_cache/VX_cache_config.v @@ -1,12 +1,10 @@ +`ifndef VX_CACHE_CONFIG +`define VX_CACHE_CONFIG `include "../VX_define.v" - -`ifndef VX_CACHE_CONFIG - -`define VX_CACHE_CONFIG - // ========================================= Configurable Knobs ========================================= + // General Cache Knobs // Size of cache in bytes `define CACHE_SIZE_BYTES 1024 diff --git a/rtl/VX_cache/VX_cache_core_req_bank_sel.v b/rtl/VX_cache/VX_cache_core_req_bank_sel.v index 841138b5..adef7953 100644 --- a/rtl/VX_cache/VX_cache_core_req_bank_sel.v +++ b/rtl/VX_cache/VX_cache_core_req_bank_sel.v @@ -1,5 +1,4 @@ - module VX_cache_core_req_bank_sel ( input wire [`NUMBER_REQUESTS-1:0] core_req_valid, input wire [`NUMBER_REQUESTS-1:0][31:0] core_req_addr, @@ -16,9 +15,9 @@ module VX_cache_core_req_bank_sel ( for (curr_req = 0; curr_req < `NUMBER_REQUESTS; curr_req = curr_req + 1) begin if (`NUMBER_BANKS == 1) begin // If there is only one bank, then only map requests to that bank - assign per_bank_valids[0][curr_req] = core_req_valid[curr_req]; + per_bank_valids[0][curr_req] = core_req_valid[curr_req]; end else begin - assign per_bank_valids[core_req_addr[curr_req][`BANK_SELECT_ADDR_RNG]][curr_req] = core_req_valid[curr_req]; + per_bank_valids[core_req_addr[curr_req][`BANK_SELECT_ADDR_RNG]][curr_req] = core_req_valid[curr_req]; end end end diff --git a/rtl/VX_cache/VX_cache_dram_req_arb.v b/rtl/VX_cache/VX_cache_dram_req_arb.v index 6b143824..747a2ac6 100644 --- a/rtl/VX_cache/VX_cache_dram_req_arb.v +++ b/rtl/VX_cache/VX_cache_dram_req_arb.v @@ -1,6 +1,5 @@ `include "VX_cache_config.v" - module VX_cache_dram_req_arb ( input wire clk, input wire reset, @@ -27,12 +26,13 @@ module VX_cache_dram_req_arb ( ); - wire dfqq_req; wire[31:0] dfqq_req_addr; wire dfqq_empty; + wire dwb_valid; wire dfqq_pop = !dwb_valid && dfqq_req; // If no dwb, and dfqq has valids, then pop wire dfqq_push = (|per_bank_dram_fill_req); + VX_cache_dfq_queue VX_cache_dfq_queue( .clk (clk), .reset (reset), @@ -46,8 +46,6 @@ module VX_cache_dram_req_arb ( .dfqq_full (dfqq_full) ); - - wire dwb_valid; wire[`vx_clog2(`NUMBER_BANKS)-1:0] dwb_bank; VX_generic_priority_encoder #(.N(`NUMBER_BANKS)) VX_sel_dwb( .valids(per_bank_dram_wb_req), diff --git a/rtl/VX_cache/VX_cache_req_queue.v b/rtl/VX_cache/VX_cache_req_queue.v index 7fce8ac5..7ebadfaa 100644 --- a/rtl/VX_cache/VX_cache_req_queue.v +++ b/rtl/VX_cache/VX_cache_req_queue.v @@ -1,4 +1,3 @@ - `include "VX_cache_config.v" module VX_cache_req_queue ( diff --git a/rtl/VX_cache/VX_cache_wb_sel_merge.v b/rtl/VX_cache/VX_cache_wb_sel_merge.v index 08d97350..0898d66e 100644 --- a/rtl/VX_cache/VX_cache_wb_sel_merge.v +++ b/rtl/VX_cache/VX_cache_wb_sel_merge.v @@ -1,6 +1,5 @@ `include "VX_cache_config.v" - module VX_cache_wb_sel_merge ( // Per Bank WB @@ -48,18 +47,18 @@ module VX_cache_wb_sel_merge ( assign core_wb_req_wb = per_bank_wb_wb [main_bank_index]; assign core_wb_warp_num = per_bank_wb_warp_num[main_bank_index]; - genvar this_bank; + integer this_bank; generate always @(*) begin - assign core_wb_valid = 0; - assign core_wb_readdata = 0; + core_wb_valid = 0; + core_wb_readdata = 0; for (this_bank = 0; this_bank < `NUMBER_BANKS; this_bank = this_bank + 1) begin if (found_bank && (per_bank_wb_valid[this_bank]) && (per_bank_wb_rd[this_bank] == per_bank_wb_rd[main_bank_index]) && (per_bank_wb_warp_num[this_bank] == per_bank_wb_warp_num[main_bank_index])) begin - assign core_wb_valid[per_bank_wb_tid[this_bank]] = 1; - assign core_wb_readdata[per_bank_wb_tid[this_bank]] = per_bank_wb_data[this_bank]; - assign per_bank_wb_pop_unqual[this_bank] = 1; + core_wb_valid[per_bank_wb_tid[this_bank]] = 1; + core_wb_readdata[per_bank_wb_tid[this_bank]] = per_bank_wb_data[this_bank]; + per_bank_wb_pop_unqual[this_bank] = 1; end else begin - assign per_bank_wb_pop_unqual[this_bank] = 0; + per_bank_wb_pop_unqual[this_bank] = 0; end end end diff --git a/rtl/VX_cache/quartus/Makefile b/rtl/VX_cache/quartus/Makefile new file mode 100755 index 00000000..1e1715cd --- /dev/null +++ b/rtl/VX_cache/quartus/Makefile @@ -0,0 +1,72 @@ +PROJECT = VX_cache +TOP_LEVEL_ENTITY = VX_cache +SRC_FILE = ../VX_cache.v +PROJECT_FILES = $(PROJECT).qpf $(PROJECT).qsf + +QUARTUS_ROOT ?= /tools/reconfig/intel/18.0 + +# Part, Family +FAMILY = "Arria 10" +DEVICE = 10AX115N3F40E2SG + +# Executable Configuration +SYN_ARGS = --parallel --read_settings_files=on +FIT_ARGS = --part=$(DEVICE) --read_settings_files=on +ASM_ARGS = +STA_ARGS = --do_report_timing + +# Build targets +all: $(PROJECT).sta.rpt + +syn: $(PROJECT).syn.rpt + +fit: $(PROJECT).fit.rpt + +asm: $(PROJECT).asm.rpt + +sta: $(PROJECT).sta.rpt + +smart: smart.log + +# Target implementations +STAMP = echo done > + +$(PROJECT).syn.rpt: smart.log syn.chg $(SOURCE_FILES) + quartus_syn $(PROJECT) $(SYN_ARGS) + $(STAMP) fit.chg + +$(PROJECT).fit.rpt: smart.log fit.chg $(PROJECT).syn.rpt + quartus_fit $(PROJECT) $(FIT_ARGS) + $(STAMP) asm.chg + $(STAMP) sta.chg + +$(PROJECT).asm.rpt: smart.log asm.chg $(PROJECT).fit.rpt + quartus_asm $(PROJECT) $(ASM_ARGS) + +$(PROJECT).sta.rpt: smart.log sta.chg $(PROJECT).fit.rpt + quartus_sta $(PROJECT) $(STA_ARGS) + +smart.log: $(PROJECT_FILES) + quartus_sh --determine_smart_action $(PROJECT) > smart.log + +# Project initialization +$(PROJECT_FILES): + quartus_sh -t project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src $(SRC_FILE) -sdc project.sdc -inc "../;../../" + +syn.chg: + $(STAMP) syn.chg + +fit.chg: + $(STAMP) fit.chg + +sta.chg: + $(STAMP) sta.chg + +asm.chg: + $(STAMP) asm.chg + +program: $(PROJECT).sof + quartus_pgm --no_banner --mode=jtag -o "P;$(PROJECT).sof" + +clean: + rm -rf bin *.rpt *.chg *.qsf *.qpf smart.log *.htm *.eqn *.pin *.sof *.pof qdb incremental_db tmp-clearbox diff --git a/rtl/VX_cache/quartus/project.sdc b/rtl/VX_cache/quartus/project.sdc new file mode 100755 index 00000000..16582e56 --- /dev/null +++ b/rtl/VX_cache/quartus/project.sdc @@ -0,0 +1 @@ +create_clock -name {clk} -period "250 MHz" -waveform { 0.0 1.0 } [get_ports {clk}] diff --git a/rtl/VX_cache/quartus/project.tcl b/rtl/VX_cache/quartus/project.tcl new file mode 100644 index 00000000..afe69d48 --- /dev/null +++ b/rtl/VX_cache/quartus/project.tcl @@ -0,0 +1,41 @@ +load_package flow +package require cmdline + +set options { \ + { "project.arg" "" "Project name" } \ + { "family.arg" "" "Device family name" } \ + { "device.arg" "" "Device name" } \ + { "top.arg" "" "Top level module" } \ + { "sdc.arg" "" "Timing Design Constraints file" } \ + { "src.arg" "" "Verilog source file" } \ + { "inc.arg" "." "Include path" } \ +} + +array set opts [::cmdline::getoptions quartus(args) $options] + +project_new $opts(project) -overwrite + +set_global_assignment -name FAMILY $opts(family) +set_global_assignment -name DEVICE $opts(device) +set_global_assignment -name TOP_LEVEL_ENTITY $opts(top) +set_global_assignment -name VERILOG_FILE $opts(src) +set_global_assignment -name SEARCH_PATH $opts(inc) +set_global_assignment -name SDC_FILE $opts(sdc) +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY bin +set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL +set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2009 + +proc make_all_pins_virtual {} { + execute_module -tool map + set name_ids [get_names -filter * -node_type pin] + foreach_in_collection name_id $name_ids { + set pin_name [get_name_info -info full_path $name_id] + post_message "Making VIRTUAL_PIN assignment to $pin_name" + set_instance_assignment -to $pin_name -name VIRTUAL_PIN ON + } + export_assignments +} + +make_all_pins_virtual + +project_close \ No newline at end of file diff --git a/rtl/VX_csr_data.v b/rtl/VX_csr_data.v index 2a3c5641..6dc899a1 100644 --- a/rtl/VX_csr_data.v +++ b/rtl/VX_csr_data.v @@ -17,7 +17,6 @@ module VX_csr_data ( ); - // wire[`NT_M1:0][31:0] thread_ids; // wire[`NT_M1:0][31:0] warp_ids; diff --git a/rtl/VX_csr_pipe.v b/rtl/VX_csr_pipe.v index f5abfc57..e9194f53 100644 --- a/rtl/VX_csr_pipe.v +++ b/rtl/VX_csr_pipe.v @@ -7,94 +7,92 @@ module VX_csr_pipe ( VX_csr_req_inter VX_csr_req, VX_wb_inter VX_writeback, VX_csr_wb_inter VX_csr_wb, - output wire stall_gpr_csr - + output wire stall_gpr_csr ); - wire[`NT_M1:0] valid_s2; - wire[`NW_M1:0] warp_num_s2; - wire[4:0] rd_s2; - wire[1:0] wb_s2; - wire[4:0] alu_op_s2; - wire is_csr_s2; - wire[11:0] csr_address_s2; - wire[31:0] csr_read_data_s2; - wire[31:0] csr_updated_data_s2; + wire[`NT_M1:0] valid_s2; + wire[`NW_M1:0] warp_num_s2; + wire[4:0] rd_s2; + wire[1:0] wb_s2; + wire[4:0] alu_op_s2; + wire is_csr_s2; + wire[11:0] csr_address_s2; + wire[31:0] csr_read_data_s2; + wire[31:0] csr_updated_data_s2; - wire[31:0] csr_read_data_unqual; - wire[31:0] csr_read_data; + wire[31:0] csr_read_data_unqual; + wire[31:0] csr_read_data; - assign stall_gpr_csr = no_slot_csr && VX_csr_req.is_csr && |(VX_csr_req.valid); + assign stall_gpr_csr = no_slot_csr && VX_csr_req.is_csr && |(VX_csr_req.valid); - assign csr_read_data = (csr_address_s2 == VX_csr_req.csr_address) ? csr_updated_data_s2 : csr_read_data_unqual; + assign csr_read_data = (csr_address_s2 == VX_csr_req.csr_address) ? csr_updated_data_s2 : csr_read_data_unqual; - wire writeback = |VX_writeback.wb_valid; - VX_csr_data VX_csr_data( - .clk (clk), - .reset (reset), - .in_read_csr_address (VX_csr_req.csr_address), + wire writeback = |VX_writeback.wb_valid; + VX_csr_data VX_csr_data( + .clk (clk), + .reset (reset), + .in_read_csr_address (VX_csr_req.csr_address), - .in_write_valid (is_csr_s2), - .in_write_csr_data (csr_updated_data_s2), - .in_write_csr_address(csr_address_s2), + .in_write_valid (is_csr_s2), + .in_write_csr_data (csr_updated_data_s2), + .in_write_csr_address(csr_address_s2), - .out_read_csr_data (csr_read_data_unqual), + .out_read_csr_data (csr_read_data_unqual), - .in_writeback_valid (writeback) - ); + .in_writeback_valid (writeback) + ); - reg[31:0] csr_updated_data; - always @(*) begin - case(VX_csr_req.alu_op) - `CSR_ALU_RW: csr_updated_data = VX_csr_req.csr_mask; - `CSR_ALU_RS: csr_updated_data = csr_read_data | VX_csr_req.csr_mask; - `CSR_ALU_RC: csr_updated_data = csr_read_data & (32'hFFFFFFFF - VX_csr_req.csr_mask); - default: csr_updated_data = 32'hdeadbeef; - endcase - end + reg[31:0] csr_updated_data; + always @(*) begin + case(VX_csr_req.alu_op) + `CSR_ALU_RW: csr_updated_data = VX_csr_req.csr_mask; + `CSR_ALU_RS: csr_updated_data = csr_read_data | VX_csr_req.csr_mask; + `CSR_ALU_RC: csr_updated_data = csr_read_data & (32'hFFFFFFFF - VX_csr_req.csr_mask); + default: csr_updated_data = 32'hdeadbeef; + endcase + end - wire zero = 0; + wire zero = 0; - VX_generic_register #(.N(`NT + `NW_M1 + 1 + 5 + 2 + 5 + 12 + 64)) csr_reg_s2 ( - .clk (clk), - .reset(reset), - .stall(no_slot_csr), - .flush(zero), - .in ({VX_csr_req.valid, VX_csr_req.warp_num, VX_csr_req.rd, VX_csr_req.wb, VX_csr_req.is_csr, VX_csr_req.csr_address, csr_read_data , csr_updated_data }), - .out ({valid_s2 , warp_num_s2 , rd_s2 , wb_s2 , is_csr_s2 , csr_address_s2 , csr_read_data_s2, csr_updated_data_s2}) - ); + VX_generic_register #(.N(`NT + `NW_M1 + 1 + 5 + 2 + 5 + 12 + 64)) csr_reg_s2 ( + .clk (clk), + .reset(reset), + .stall(no_slot_csr), + .flush(zero), + .in ({VX_csr_req.valid, VX_csr_req.warp_num, VX_csr_req.rd, VX_csr_req.wb, VX_csr_req.is_csr, VX_csr_req.csr_address, csr_read_data , csr_updated_data }), + .out ({valid_s2 , warp_num_s2 , rd_s2 , wb_s2 , is_csr_s2 , csr_address_s2 , csr_read_data_s2, csr_updated_data_s2}) + ); - wire[`NT_M1:0][31:0] final_csr_data; + wire[`NT_M1:0][31:0] final_csr_data; - wire[`NT_M1:0][31:0] thread_ids; - wire[`NT_M1:0][31:0] warp_ids; - wire[`NT_M1:0][31:0] csr_vec_read_data_s2; + wire[`NT_M1:0][31:0] thread_ids; + wire[`NT_M1:0][31:0] warp_ids; + wire[`NT_M1:0][31:0] csr_vec_read_data_s2; - genvar cur_t; - for (cur_t = 0; cur_t < `NT; cur_t = cur_t + 1) begin - assign thread_ids[cur_t] = cur_t; - end + genvar cur_t; + for (cur_t = 0; cur_t < `NT; cur_t = cur_t + 1) begin + assign thread_ids[cur_t] = cur_t; + end - genvar cur_tw; - for (cur_tw = 0; cur_tw < `NT; cur_tw = cur_tw + 1) begin - assign warp_ids[cur_tw] = {{(31-`NW_M1){1'b0}}, warp_num_s2}; - end + genvar cur_tw; + for (cur_tw = 0; cur_tw < `NT; cur_tw = cur_tw + 1) begin + assign warp_ids[cur_tw] = {{(31-`NW_M1){1'b0}}, warp_num_s2}; + end - genvar cur_v; - for (cur_v = 0; cur_v < `NT; cur_v = cur_v + 1) begin - assign csr_vec_read_data_s2[cur_v] = csr_read_data_s2; - end + genvar cur_v; + for (cur_v = 0; cur_v < `NT; cur_v = cur_v + 1) begin + assign csr_vec_read_data_s2[cur_v] = csr_read_data_s2; + end - wire thread_select = csr_address_s2 == 12'h20; - wire warp_select = csr_address_s2 == 12'h21; - - assign final_csr_data = thread_select ? thread_ids : - warp_select ? warp_ids : - csr_vec_read_data_s2; + wire thread_select = csr_address_s2 == 12'h20; + wire warp_select = csr_address_s2 == 12'h21; + assign final_csr_data = thread_select ? thread_ids : + warp_select ? warp_ids : + csr_vec_read_data_s2; assign VX_csr_wb.valid = valid_s2; diff --git a/rtl/VX_define.v b/rtl/VX_define.v index c92ce429..45efae34 100644 --- a/rtl/VX_define.v +++ b/rtl/VX_define.v @@ -1,9 +1,7 @@ +`ifndef VX_DEFINE +`define VX_DEFINE + `include "./VX_define_synth.v" -// `include "./VX_cache/VX_cache_config.v" - -// `ifndef VX_DEFINE - -// `define VX_DEFINE `define NT_M1 (`NT-1) @@ -91,8 +89,6 @@ `define REM 5'd22 `define REMU 5'd23 - - // WRITEBACK `define WB_ALU 2'h1 `define WB_MEM 2'h2 @@ -128,7 +124,6 @@ (x <= 1024) ? 10 : \ -199 - // `define PARAM // oooooo @@ -244,8 +239,6 @@ `define DCACHE_MEM_REQ_ADDR_MASK (32'hffffffff - (`DCACHE_BLOCK-1)) `define ICACHE_MEM_REQ_ADDR_MASK (32'hffffffff - (`ICACHE_BLOCK-1)) - - /////// //`define SHARED_MEMORY_SIZE 4096 @@ -271,6 +264,4 @@ `define SHARED_MEMORY_INDEX_OFFSET_ST (`SHARED_MEMORY_BLOCK_OFFSET_ED + 1) `define SHARED_MEMORY_INDEX_OFFSET_ED (`SHARED_MEMORY_INDEX_OFFSET_ST + $clog2(`SHARED_MEMORY_HEIGHT)-1) - - -// `endif +`endif diff --git a/rtl/VX_define_synth.v b/rtl/VX_define_synth.v index dcb3a609..ac029146 100644 --- a/rtl/VX_define_synth.v +++ b/rtl/VX_define_synth.v @@ -1,9 +1,7 @@ - -// `ifndef VX_DEFINE_SYNTH - -// `define VX_DEFINE_SYNTH +`ifndef VX_DEFINE_SYNTH +`define VX_DEFINE_SYNTH `define NT 2 `define NW 8 -// `endif +`endif diff --git a/rtl/VX_dmem_controller.v b/rtl/VX_dmem_controller.v index 93f26e62..d029a123 100644 --- a/rtl/VX_dmem_controller.v +++ b/rtl/VX_dmem_controller.v @@ -1,4 +1,3 @@ - `include "VX_define.v" module VX_dmem_controller ( @@ -16,23 +15,19 @@ module VX_dmem_controller ( VX_gpu_dcache_res_inter VX_dcache_rsp ); - wire to_shm = VX_dcache_req.core_req_addr[0][31:24] == 8'hFF; wire[`NT_M1:0] cache_driver_in_valid = VX_dcache_req.core_req_valid & {`NT{~to_shm}}; - wire[`NT_M1:0] sm_driver_in_valid = VX_dcache_req.core_req_valid & {`NT{to_shm}}; wire[2:0] sm_driver_in_mem_read = !(|sm_driver_in_valid) ? `NO_MEM_READ : VX_dcache_req.core_req_mem_read; wire[2:0] sm_driver_in_mem_write = !(|sm_driver_in_valid) ? `NO_MEM_WRITE : VX_dcache_req.core_req_mem_write; - wire[`NT_M1:0][31:0] cache_driver_out_data; wire[`NT_M1:0][31:0] sm_driver_out_data; wire[`NT_M1:0] cache_driver_out_valid; // Not used for now wire sm_delay; - // I_Cache Signals wire[31:0] icache_instruction_out; @@ -169,7 +164,7 @@ module VX_dmem_controller ( // ); -VX_d_cache#( +VX_d_cache #( .CACHE_SIZE (`ICACHE_SIZE), .CACHE_WAYS (`ICACHE_WAYS), .CACHE_BLOCK (`ICACHE_BLOCK), diff --git a/rtl/VX_execute_unit.v b/rtl/VX_execute_unit.v index f262e0b4..60c7441a 100644 --- a/rtl/VX_execute_unit.v +++ b/rtl/VX_execute_unit.v @@ -18,161 +18,159 @@ module VX_execute_unit ( output wire out_delay ); + wire[`NT_M1:0][31:0] in_a_reg_data; + wire[`NT_M1:0][31:0] in_b_reg_data; + wire[4:0] in_alu_op; + wire in_rs2_src; + wire[31:0] in_itype_immed; + wire[2:0] in_branch_type; + wire[19:0] in_upper_immed; + wire in_jal; + wire[31:0] in_jal_offset; + wire[31:0] in_curr_PC; + + assign in_a_reg_data = VX_exec_unit_req.a_reg_data; + assign in_b_reg_data = VX_exec_unit_req.b_reg_data; + assign in_alu_op = VX_exec_unit_req.alu_op; + assign in_rs2_src = VX_exec_unit_req.rs2_src; + assign in_itype_immed = VX_exec_unit_req.itype_immed; + assign in_branch_type = VX_exec_unit_req.branch_type; + assign in_upper_immed = VX_exec_unit_req.upper_immed; + assign in_jal = VX_exec_unit_req.jal; + assign in_jal_offset = VX_exec_unit_req.jal_offset; + assign in_curr_PC = VX_exec_unit_req.curr_PC; - wire[`NT_M1:0][31:0] in_a_reg_data; - wire[`NT_M1:0][31:0] in_b_reg_data; - wire[4:0] in_alu_op; - wire in_rs2_src; - wire[31:0] in_itype_immed; - wire[2:0] in_branch_type; - wire[19:0] in_upper_immed; - wire in_jal; - wire[31:0] in_jal_offset; - wire[31:0] in_curr_PC; - - assign in_a_reg_data = VX_exec_unit_req.a_reg_data; - assign in_b_reg_data = VX_exec_unit_req.b_reg_data; - assign in_alu_op = VX_exec_unit_req.alu_op; - assign in_rs2_src = VX_exec_unit_req.rs2_src; - assign in_itype_immed = VX_exec_unit_req.itype_immed; - assign in_branch_type = VX_exec_unit_req.branch_type; - assign in_upper_immed = VX_exec_unit_req.upper_immed; - assign in_jal = VX_exec_unit_req.jal; - assign in_jal_offset = VX_exec_unit_req.jal_offset; - assign in_curr_PC = VX_exec_unit_req.curr_PC; - - - wire[`NT_M1:0][31:0] alu_result; - wire[`NT_M1:0] alu_stall; - genvar index_out_reg; - generate - for (index_out_reg = 0; index_out_reg < `NT; index_out_reg = index_out_reg + 1) begin : alu_defs - VX_alu vx_alu( - .clk(clk), - .reset(reset), - // .in_reg_data (in_reg_data[1:0]), - .in_1 (in_a_reg_data[index_out_reg]), - .in_2 (in_b_reg_data[index_out_reg]), - .in_rs2_src (in_rs2_src), - .in_itype_immed(in_itype_immed), - .in_upper_immed(in_upper_immed), - .in_alu_op (in_alu_op), - .in_curr_PC (in_curr_PC), - .out_alu_result(alu_result[index_out_reg]), - .out_alu_stall(alu_stall[index_out_reg]) - ); - end - endgenerate - - wire internal_stall; - assign internal_stall = |alu_stall; - - assign out_delay = no_slot_exec || internal_stall; - - - wire [$clog2(`NT)-1:0] jal_branch_use_index; - wire jal_branch_found_valid; - VX_generic_priority_encoder #(.N(`NT)) choose_alu_result( - .valids(VX_exec_unit_req.valid), - .index (jal_branch_use_index), - .found (jal_branch_found_valid) + wire[`NT_M1:0][31:0] alu_result; + wire[`NT_M1:0] alu_stall; + genvar index_out_reg; + generate + for (index_out_reg = 0; index_out_reg < `NT; index_out_reg = index_out_reg + 1) begin : alu_defs + VX_alu vx_alu( + .clk(clk), + .reset(reset), + // .in_reg_data (in_reg_data[1:0]), + .in_1 (in_a_reg_data[index_out_reg]), + .in_2 (in_b_reg_data[index_out_reg]), + .in_rs2_src (in_rs2_src), + .in_itype_immed(in_itype_immed), + .in_upper_immed(in_upper_immed), + .in_alu_op (in_alu_op), + .in_curr_PC (in_curr_PC), + .out_alu_result(alu_result[index_out_reg]), + .out_alu_stall(alu_stall[index_out_reg]) ); - - wire[31:0] branch_use_alu_result = alu_result[jal_branch_use_index]; - - reg temp_branch_dir; - always @(*) - begin - case(VX_exec_unit_req.branch_type) - `BEQ: temp_branch_dir = (branch_use_alu_result == 0) ? `TAKEN : `NOT_TAKEN; - `BNE: temp_branch_dir = (branch_use_alu_result == 0) ? `NOT_TAKEN : `TAKEN; - `BLT: temp_branch_dir = (branch_use_alu_result[31] == 0) ? `NOT_TAKEN : `TAKEN; - `BGT: temp_branch_dir = (branch_use_alu_result[31] == 0) ? `TAKEN : `NOT_TAKEN; - `BLTU: temp_branch_dir = (branch_use_alu_result[31] == 0) ? `NOT_TAKEN : `TAKEN; - `BGTU: temp_branch_dir = (branch_use_alu_result[31] == 0) ? `TAKEN : `NOT_TAKEN; - `NO_BRANCH: temp_branch_dir = `NOT_TAKEN; - default: temp_branch_dir = `NOT_TAKEN; - endcase // in_branch_type end + endgenerate + + wire internal_stall; + assign internal_stall = |alu_stall; + + assign out_delay = no_slot_exec || internal_stall; - wire[`NT_M1:0][31:0] duplicate_PC_data; - genvar i; - generate - for (i = 0; i < `NT; i=i+1) begin : pc_data_setup - assign duplicate_PC_data[i] = VX_exec_unit_req.PC_next; - end - endgenerate + wire [$clog2(`NT)-1:0] jal_branch_use_index; + wire jal_branch_found_valid; + VX_generic_priority_encoder #(.N(`NT)) choose_alu_result( + .valids(VX_exec_unit_req.valid), + .index (jal_branch_use_index), + .found (jal_branch_found_valid) + ); + + wire[31:0] branch_use_alu_result = alu_result[jal_branch_use_index]; + + reg temp_branch_dir; + always @(*) + begin + case(VX_exec_unit_req.branch_type) + `BEQ: temp_branch_dir = (branch_use_alu_result == 0) ? `TAKEN : `NOT_TAKEN; + `BNE: temp_branch_dir = (branch_use_alu_result == 0) ? `NOT_TAKEN : `TAKEN; + `BLT: temp_branch_dir = (branch_use_alu_result[31] == 0) ? `NOT_TAKEN : `TAKEN; + `BGT: temp_branch_dir = (branch_use_alu_result[31] == 0) ? `TAKEN : `NOT_TAKEN; + `BLTU: temp_branch_dir = (branch_use_alu_result[31] == 0) ? `NOT_TAKEN : `TAKEN; + `BGTU: temp_branch_dir = (branch_use_alu_result[31] == 0) ? `TAKEN : `NOT_TAKEN; + `NO_BRANCH: temp_branch_dir = `NOT_TAKEN; + default: temp_branch_dir = `NOT_TAKEN; + endcase // in_branch_type + end - // VX_inst_exec_wb_inter VX_inst_exec_wb_temp(); - // JAL Response - VX_jal_response_inter VX_jal_rsp_temp(); - // Branch Response - VX_branch_response_inter VX_branch_rsp_temp(); - - // Actual Writeback - assign VX_inst_exec_wb.rd = VX_exec_unit_req.rd; - assign VX_inst_exec_wb.wb = VX_exec_unit_req.wb; - assign VX_inst_exec_wb.wb_valid = VX_exec_unit_req.valid & {`NT{!internal_stall}}; - assign VX_inst_exec_wb.wb_warp_num = VX_exec_unit_req.warp_num; - assign VX_inst_exec_wb.alu_result = VX_exec_unit_req.jal ? duplicate_PC_data : alu_result; - - assign VX_inst_exec_wb.exec_wb_pc = in_curr_PC; - // Jal rsp - assign VX_jal_rsp_temp.jal = in_jal; - assign VX_jal_rsp_temp.jal_dest = $signed(in_a_reg_data[jal_branch_use_index]) + $signed(in_jal_offset); - assign VX_jal_rsp_temp.jal_warp_num = VX_exec_unit_req.warp_num; - - // Branch rsp - assign VX_branch_rsp_temp.valid_branch = (VX_exec_unit_req.branch_type != `NO_BRANCH) && (|VX_exec_unit_req.valid); - assign VX_branch_rsp_temp.branch_dir = temp_branch_dir; - assign VX_branch_rsp_temp.branch_warp_num = VX_exec_unit_req.warp_num; - assign VX_branch_rsp_temp.branch_dest = $signed(VX_exec_unit_req.curr_PC) + ($signed(VX_exec_unit_req.itype_immed) << 1); // itype_immed = branch_offset + wire[`NT_M1:0][31:0] duplicate_PC_data; + genvar i; + generate + for (i = 0; i < `NT; i=i+1) begin : pc_data_setup + assign duplicate_PC_data[i] = VX_exec_unit_req.PC_next; + end + endgenerate - wire zero = 0; + // VX_inst_exec_wb_inter VX_inst_exec_wb_temp(); + // JAL Response + VX_jal_response_inter VX_jal_rsp_temp(); + // Branch Response + VX_branch_response_inter VX_branch_rsp_temp(); - // VX_generic_register #(.N(174)) exec_reg( - // .clk (clk), - // .reset(reset), - // .stall(zero), - // .flush(zero), - // .in ({VX_inst_exec_wb_temp.rd, VX_inst_exec_wb_temp.wb, VX_inst_exec_wb_temp.wb_valid, VX_inst_exec_wb_temp.wb_warp_num, VX_inst_exec_wb_temp.alu_result, VX_inst_exec_wb_temp.exec_wb_pc}), - // .out ({VX_inst_exec_wb.rd , VX_inst_exec_wb.wb , VX_inst_exec_wb.wb_valid , VX_inst_exec_wb.wb_warp_num , VX_inst_exec_wb.alu_result , VX_inst_exec_wb.exec_wb_pc }) - // ); + // Actual Writeback + assign VX_inst_exec_wb.rd = VX_exec_unit_req.rd; + assign VX_inst_exec_wb.wb = VX_exec_unit_req.wb; + assign VX_inst_exec_wb.wb_valid = VX_exec_unit_req.valid & {`NT{!internal_stall}}; + assign VX_inst_exec_wb.wb_warp_num = VX_exec_unit_req.warp_num; + assign VX_inst_exec_wb.alu_result = VX_exec_unit_req.jal ? duplicate_PC_data : alu_result; - VX_generic_register #(.N(33 + `NW_M1 + 1)) jal_reg( - .clk (clk), - .reset(reset), - .stall(zero), - .flush(zero), - .in ({VX_jal_rsp_temp.jal, VX_jal_rsp_temp.jal_dest, VX_jal_rsp_temp.jal_warp_num}), - .out ({VX_jal_rsp.jal , VX_jal_rsp.jal_dest , VX_jal_rsp.jal_warp_num}) - ); + assign VX_inst_exec_wb.exec_wb_pc = in_curr_PC; + // Jal rsp + assign VX_jal_rsp_temp.jal = in_jal; + assign VX_jal_rsp_temp.jal_dest = $signed(in_a_reg_data[jal_branch_use_index]) + $signed(in_jal_offset); + assign VX_jal_rsp_temp.jal_warp_num = VX_exec_unit_req.warp_num; - VX_generic_register #(.N(34 + `NW_M1 + 1)) branch_reg( - .clk (clk), - .reset(reset), - .stall(zero), - .flush(zero), - .in ({VX_branch_rsp_temp.valid_branch, VX_branch_rsp_temp.branch_dir, VX_branch_rsp_temp.branch_warp_num, VX_branch_rsp_temp.branch_dest}), - .out ({VX_branch_rsp.valid_branch , VX_branch_rsp.branch_dir , VX_branch_rsp.branch_warp_num , VX_branch_rsp.branch_dest }) - ); - - // always @(*) begin - // case(in_alu_op) - // `CSR_ALU_RW: out_csr_result = in_csr_mask; - // `CSR_ALU_RS: out_csr_result = in_csr_data | in_csr_mask; - // `CSR_ALU_RC: out_csr_result = in_csr_data & (32'hFFFFFFFF - in_csr_mask); - // default: out_csr_result = 32'hdeadbeef; - // endcase - - // end + // Branch rsp + assign VX_branch_rsp_temp.valid_branch = (VX_exec_unit_req.branch_type != `NO_BRANCH) && (|VX_exec_unit_req.valid); + assign VX_branch_rsp_temp.branch_dir = temp_branch_dir; + assign VX_branch_rsp_temp.branch_warp_num = VX_exec_unit_req.warp_num; + assign VX_branch_rsp_temp.branch_dest = $signed(VX_exec_unit_req.curr_PC) + ($signed(VX_exec_unit_req.itype_immed) << 1); // itype_immed = branch_offset - // assign out_is_csr = VX_exec_unit_req.is_csr; - // assign out_csr_address = VX_exec_unit_req.csr_address; + wire zero = 0; + + // VX_generic_register #(.N(174)) exec_reg( + // .clk (clk), + // .reset(reset), + // .stall(zero), + // .flush(zero), + // .in ({VX_inst_exec_wb_temp.rd, VX_inst_exec_wb_temp.wb, VX_inst_exec_wb_temp.wb_valid, VX_inst_exec_wb_temp.wb_warp_num, VX_inst_exec_wb_temp.alu_result, VX_inst_exec_wb_temp.exec_wb_pc}), + // .out ({VX_inst_exec_wb.rd , VX_inst_exec_wb.wb , VX_inst_exec_wb.wb_valid , VX_inst_exec_wb.wb_warp_num , VX_inst_exec_wb.alu_result , VX_inst_exec_wb.exec_wb_pc }) + // ); + + VX_generic_register #(.N(33 + `NW_M1 + 1)) jal_reg( + .clk (clk), + .reset(reset), + .stall(zero), + .flush(zero), + .in ({VX_jal_rsp_temp.jal, VX_jal_rsp_temp.jal_dest, VX_jal_rsp_temp.jal_warp_num}), + .out ({VX_jal_rsp.jal , VX_jal_rsp.jal_dest , VX_jal_rsp.jal_warp_num}) + ); + + VX_generic_register #(.N(34 + `NW_M1 + 1)) branch_reg( + .clk (clk), + .reset(reset), + .stall(zero), + .flush(zero), + .in ({VX_branch_rsp_temp.valid_branch, VX_branch_rsp_temp.branch_dir, VX_branch_rsp_temp.branch_warp_num, VX_branch_rsp_temp.branch_dest}), + .out ({VX_branch_rsp.valid_branch , VX_branch_rsp.branch_dir , VX_branch_rsp.branch_warp_num , VX_branch_rsp.branch_dest }) + ); + + // always @(*) begin + // case(in_alu_op) + // `CSR_ALU_RW: out_csr_result = in_csr_mask; + // `CSR_ALU_RS: out_csr_result = in_csr_data | in_csr_mask; + // `CSR_ALU_RC: out_csr_result = in_csr_data & (32'hFFFFFFFF - in_csr_mask); + // default: out_csr_result = 32'hdeadbeef; + // endcase + + // end + + + // assign out_is_csr = VX_exec_unit_req.is_csr; + // assign out_csr_address = VX_exec_unit_req.csr_address; endmodule : VX_execute_unit \ No newline at end of file diff --git a/rtl/VX_fetch.v b/rtl/VX_fetch.v index 35278807..00330676 100644 --- a/rtl/VX_fetch.v +++ b/rtl/VX_fetch.v @@ -1,4 +1,3 @@ - `include "VX_define.v" module VX_fetch ( diff --git a/rtl/VX_generic_priority_encoder.v b/rtl/VX_generic_priority_encoder.v index b1fa2966..80df3d43 100644 --- a/rtl/VX_generic_priority_encoder.v +++ b/rtl/VX_generic_priority_encoder.v @@ -1,3 +1,6 @@ +`ifndef VX_GENERIC_PRIORITY_ENCODER +`define VX_GENERIC_PRIORITY_ENCODER + `include "VX_define.v" module VX_generic_priority_encoder @@ -24,4 +27,6 @@ module VX_generic_priority_encoder end end end -endmodule \ No newline at end of file +endmodule + +`endif \ No newline at end of file diff --git a/rtl/VX_generic_queue.v b/rtl/VX_generic_queue.v index f388c6d3..dd312dbb 100644 --- a/rtl/VX_generic_queue.v +++ b/rtl/VX_generic_queue.v @@ -1,5 +1,4 @@ - module VX_generic_queue #( parameter DATAW = 4, @@ -17,7 +16,6 @@ module VX_generic_queue output wire full ); - reg[DATAW-1:0] data[SIZE-1:0]; reg[$clog2(SIZE)-1:0] head; reg[$clog2(SIZE)-1:0] tail; @@ -31,7 +29,7 @@ module VX_generic_queue head <= 0; tail <= 0; for (i = 0; i < SIZE; i=i+1) begin - data[i] <= {DATAW{1'0}}; + data[i] <= 0; end end else begin if (push && !full) begin diff --git a/rtl/VX_generic_register.v b/rtl/VX_generic_register.v index 04de60ac..a26c09b3 100644 --- a/rtl/VX_generic_register.v +++ b/rtl/VX_generic_register.v @@ -10,11 +10,8 @@ module VX_generic_register output wire[(N-1):0] out ); - reg[(N-1):0] value; - - always @(posedge clk or posedge reset) begin if (reset) begin value <= 0; @@ -25,7 +22,6 @@ module VX_generic_register end end - assign out = value; endmodule \ No newline at end of file diff --git a/rtl/VX_generic_stack.v b/rtl/VX_generic_stack.v index cdac974f..1ecf6409 100644 --- a/rtl/VX_generic_stack.v +++ b/rtl/VX_generic_stack.v @@ -1,3 +1,4 @@ + module VX_generic_stack #( parameter WIDTH = 40, diff --git a/rtl/VX_gpr_stage.v b/rtl/VX_gpr_stage.v index ab027e19..e9ffc48d 100644 --- a/rtl/VX_gpr_stage.v +++ b/rtl/VX_gpr_stage.v @@ -1,4 +1,3 @@ - `include "VX_define.v" module VX_gpr_stage ( diff --git a/rtl/VX_lsu.v b/rtl/VX_lsu.v index 86694851..c177480e 100644 --- a/rtl/VX_lsu.v +++ b/rtl/VX_lsu.v @@ -1,7 +1,5 @@ - `include "VX_define.v" - module VX_lsu ( input wire clk, input wire reset, @@ -16,9 +14,6 @@ module VX_lsu ( output wire out_delay ); - - - // Generate Addresses wire[`NT_M1:0][31:0] address; VX_lsu_addr_gen VX_lsu_addr_gen @@ -28,7 +23,6 @@ module VX_lsu ( .address (address) ); - wire[`NT_M1:0][31:0] use_address; wire[`NT_M1:0][31:0] use_store_data; wire[`NT_M1:0] use_valid; @@ -37,9 +31,7 @@ module VX_lsu ( wire[4:0] use_rd; wire[`NW_M1:0] use_warp_num; wire[1:0] use_wb; - wire[31:0] use_pc; - - + wire[31:0] use_pc; wire zero = 0; @@ -66,8 +58,6 @@ module VX_lsu ( // Cache can't accept request assign out_delay = VX_dcache_rsp.delay_req; - - // Core Response assign VX_mem_wb.rd = VX_dcache_rsp.core_wb_req_rd; assign VX_mem_wb.wb = VX_dcache_rsp.core_wb_req_wb; @@ -79,21 +69,19 @@ module VX_lsu ( // Core can't accept response assign VX_dcache_req.core_no_wb_slot = no_slot_mem; + // integer curr_t; + // always @(negedge clk) begin + // for (int curr_t = 0; curr_t < `NT; curr_t=curr_t+1) + // if ((VX_dcache_req.out_cache_driver_in_valid[curr_t]) && !out_delay) begin + // if (VX_dcache_req.out_cache_driver_in_mem_read != `NO_MEM_READ) begin + // $display("Reading addr: %x val: %x", address[0], VX_mem_wb.loaded_data[0]); + // end - - // integer curr_t; - // always @(negedge clk) begin - // for (int curr_t = 0; curr_t < `NT; curr_t=curr_t+1) - // if ((VX_dcache_req.out_cache_driver_in_valid[curr_t]) && !out_delay) begin - // if (VX_dcache_req.out_cache_driver_in_mem_read != `NO_MEM_READ) begin - // $display("Reading addr: %x val: %x", address[0], VX_mem_wb.loaded_data[0]); - // end - - // if (VX_dcache_req.out_cache_driver_in_mem_write != `NO_MEM_WRITE) begin - // $display("Writing addr: %x val: %x", address[0], VX_dcache_req.out_cache_driver_in_data[0]); - // end - // end - // end + // if (VX_dcache_req.out_cache_driver_in_mem_write != `NO_MEM_WRITE) begin + // $display("Writing addr: %x val: %x", address[0], VX_dcache_req.out_cache_driver_in_data[0]); + // end + // end + // end // wire zero_temp = 0; // VX_generic_register #(.N(142)) register_wb_data diff --git a/rtl/VX_scheduler.v b/rtl/VX_scheduler.v index e7308f9c..c6247ab8 100644 --- a/rtl/VX_scheduler.v +++ b/rtl/VX_scheduler.v @@ -1,5 +1,3 @@ - - `include "VX_define.v" module VX_scheduler ( diff --git a/rtl/VX_writeback.v b/rtl/VX_writeback.v index 5be10a16..ee65dca8 100644 --- a/rtl/VX_writeback.v +++ b/rtl/VX_writeback.v @@ -1,90 +1,88 @@ - `include "VX_define.v" - module VX_writeback ( - input wire clk, - input wire reset, - // Mem WB info - VX_inst_mem_wb_inter VX_mem_wb, - // EXEC Unit WB info - VX_inst_exec_wb_inter VX_inst_exec_wb, - // CSR Unit WB info - VX_csr_wb_inter VX_csr_wb, + input wire clk, + input wire reset, + // Mem WB info + VX_inst_mem_wb_inter VX_mem_wb, + // EXEC Unit WB info + VX_inst_exec_wb_inter VX_inst_exec_wb, + // CSR Unit WB info + VX_csr_wb_inter VX_csr_wb, - // Actual WB to GPR - VX_wb_inter VX_writeback_inter, - output wire no_slot_mem, - output wire no_slot_exec, - output wire no_slot_csr - ); + // Actual WB to GPR + VX_wb_inter VX_writeback_inter, + output wire no_slot_mem, + output wire no_slot_exec, + output wire no_slot_csr +); - VX_wb_inter VX_writeback_tempp(); + VX_wb_inter VX_writeback_tempp(); - wire exec_wb = (VX_inst_exec_wb.wb != 0) && (|VX_inst_exec_wb.wb_valid); - wire mem_wb = (VX_mem_wb.wb != 0) && (|VX_mem_wb.wb_valid); - wire csr_wb = (VX_csr_wb.wb != 0) && (|VX_csr_wb.valid); + wire exec_wb = (VX_inst_exec_wb.wb != 0) && (|VX_inst_exec_wb.wb_valid); + wire mem_wb = (VX_mem_wb.wb != 0) && (|VX_mem_wb.wb_valid); + wire csr_wb = (VX_csr_wb.wb != 0) && (|VX_csr_wb.valid); - assign no_slot_mem = mem_wb && (exec_wb || csr_wb); - assign no_slot_csr = csr_wb && (exec_wb); - assign no_slot_exec = 0; + assign no_slot_mem = mem_wb && (exec_wb || csr_wb); + assign no_slot_csr = csr_wb && (exec_wb); + assign no_slot_exec = 0; - assign VX_writeback_tempp.write_data = exec_wb ? VX_inst_exec_wb.alu_result : - csr_wb ? VX_csr_wb.csr_result : - mem_wb ? VX_mem_wb.loaded_data : - 0; + assign VX_writeback_tempp.write_data = exec_wb ? VX_inst_exec_wb.alu_result : + csr_wb ? VX_csr_wb.csr_result : + mem_wb ? VX_mem_wb.loaded_data : + 0; - assign VX_writeback_tempp.wb_valid = exec_wb ? VX_inst_exec_wb.wb_valid : - csr_wb ? VX_csr_wb.valid : - mem_wb ? VX_mem_wb.wb_valid : - 0; + assign VX_writeback_tempp.wb_valid = exec_wb ? VX_inst_exec_wb.wb_valid : + csr_wb ? VX_csr_wb.valid : + mem_wb ? VX_mem_wb.wb_valid : + 0; - assign VX_writeback_tempp.rd = exec_wb ? VX_inst_exec_wb.rd : - csr_wb ? VX_csr_wb.rd : - mem_wb ? VX_mem_wb.rd : - 0; + assign VX_writeback_tempp.rd = exec_wb ? VX_inst_exec_wb.rd : + csr_wb ? VX_csr_wb.rd : + mem_wb ? VX_mem_wb.rd : + 0; - assign VX_writeback_tempp.wb = exec_wb ? VX_inst_exec_wb.wb : - csr_wb ? VX_csr_wb.wb : - mem_wb ? VX_mem_wb.wb : - 0; + assign VX_writeback_tempp.wb = exec_wb ? VX_inst_exec_wb.wb : + csr_wb ? VX_csr_wb.wb : + mem_wb ? VX_mem_wb.wb : + 0; - assign VX_writeback_tempp.wb_warp_num = exec_wb ? VX_inst_exec_wb.wb_warp_num : - csr_wb ? VX_csr_wb.warp_num : - mem_wb ? VX_mem_wb.wb_warp_num : - 0; + assign VX_writeback_tempp.wb_warp_num = exec_wb ? VX_inst_exec_wb.wb_warp_num : + csr_wb ? VX_csr_wb.warp_num : + mem_wb ? VX_mem_wb.wb_warp_num : + 0; - assign VX_writeback_tempp.wb_pc = exec_wb ? VX_inst_exec_wb.exec_wb_pc : - csr_wb ? 32'hdeadbeef : - mem_wb ? VX_mem_wb.mem_wb_pc : - 32'hdeadbeef; + assign VX_writeback_tempp.wb_pc = exec_wb ? VX_inst_exec_wb.exec_wb_pc : + csr_wb ? 32'hdeadbeef : + mem_wb ? VX_mem_wb.mem_wb_pc : + 32'hdeadbeef; - wire zero = 0; + wire zero = 0; - wire[`NT-1:0][31:0] use_wb_data; + wire[`NT-1:0][31:0] use_wb_data; - VX_generic_register #(.N(39 + `NW_M1 + 1 + `NT*33)) wb_register( - .clk (clk), - .reset(reset), - .stall(zero), - .flush(zero), - .in ({VX_writeback_tempp.write_data, VX_writeback_tempp.wb_valid, VX_writeback_tempp.rd, VX_writeback_tempp.wb, VX_writeback_tempp.wb_warp_num, VX_writeback_tempp.wb_pc}), - .out ({use_wb_data , VX_writeback_inter.wb_valid, VX_writeback_inter.rd, VX_writeback_inter.wb, VX_writeback_inter.wb_warp_num, VX_writeback_inter.wb_pc}) - ); + VX_generic_register #(.N(39 + `NW_M1 + 1 + `NT*33)) wb_register( + .clk (clk), + .reset(reset), + .stall(zero), + .flush(zero), + .in ({VX_writeback_tempp.write_data, VX_writeback_tempp.wb_valid, VX_writeback_tempp.rd, VX_writeback_tempp.wb, VX_writeback_tempp.wb_warp_num, VX_writeback_tempp.wb_pc}), + .out ({use_wb_data , VX_writeback_inter.wb_valid, VX_writeback_inter.rd, VX_writeback_inter.wb, VX_writeback_inter.wb_warp_num, VX_writeback_inter.wb_pc}) + ); - reg[31:0] last_data_wb; - always @(posedge clk) begin - if ((|VX_writeback_inter.wb_valid) && (VX_writeback_inter.wb != 0) && (VX_writeback_inter.rd == 28)) begin - last_data_wb <= use_wb_data[0]; - end + reg[31:0] last_data_wb; + always @(posedge clk) begin + if ((|VX_writeback_inter.wb_valid) && (VX_writeback_inter.wb != 0) && (VX_writeback_inter.rd == 28)) begin + last_data_wb <= use_wb_data[0]; end + end - assign VX_writeback_inter.write_data = use_wb_data; + assign VX_writeback_inter.write_data = use_wb_data; endmodule : VX_writeback diff --git a/rtl/Vortex.v b/rtl/Vortex.v index 5a420873..78ffa535 100644 --- a/rtl/Vortex.v +++ b/rtl/Vortex.v @@ -1,6 +1,5 @@ - -// `include "VX_define.v" -`include "./VX_cache/VX_cache_config.v" +`include "VX_define.v" +`include "VX_cache_config.v" module Vortex /*#( @@ -49,60 +48,56 @@ module Vortex ); -reg[31:0] icache_banks = `ICACHE_BANKS; -reg[31:0] icache_num_words_per_block = `ICACHE_NUM_WORDS_PER_BLOCK; -reg[31:0] number_threads = `NT; -reg[31:0] number_warps = `NW; + reg[31:0] icache_banks = `ICACHE_BANKS; + reg[31:0] icache_num_words_per_block = `ICACHE_NUM_WORDS_PER_BLOCK; + reg[31:0] number_threads = `NT; + reg[31:0] number_warps = `NW; -always @(posedge clk) begin - icache_banks <= icache_banks; - icache_num_words_per_block <= icache_num_words_per_block; + always @(posedge clk) begin + icache_banks <= icache_banks; + icache_num_words_per_block <= icache_num_words_per_block; - number_threads <= number_threads; - number_warps <= number_warps; -end - -wire memory_delay; -wire exec_delay; -wire gpr_stage_delay; -wire schedule_delay; - - -// Dcache Interface -VX_gpu_dcache_res_inter VX_dcache_rsp(); -VX_gpu_dcache_req_inter VX_dcache_req(); - -VX_gpu_dcache_dram_req_inter VX_gpu_dcache_dram_req(); -VX_gpu_dcache_dram_res_inter VX_gpu_dcache_dram_res(); - - -assign VX_gpu_dcache_dram_res.dram_fill_rsp = dram_fill_rsp; -assign VX_gpu_dcache_dram_res.dram_fill_rsp_addr = dram_fill_rsp_addr; - -assign dram_req = VX_gpu_dcache_dram_req.dram_req; -assign dram_req_write = VX_gpu_dcache_dram_req.dram_req_write; -assign dram_req_read = VX_gpu_dcache_dram_req.dram_req_read; -assign dram_req_addr = VX_gpu_dcache_dram_req.dram_req_addr; -assign dram_req_size = VX_gpu_dcache_dram_req.dram_req_size; -assign dram_expected_lat = `SIMULATED_DRAM_LATENCY_CYCLES; -assign dram_fill_accept = VX_gpu_dcache_dram_req.dram_fill_accept; - -genvar wordy; -generate - for (wordy = 0; wordy < `BANK_LINE_SIZE_WORDS; wordy=wordy+1) begin - assign VX_gpu_dcache_dram_res.dram_fill_rsp_data[wordy] = dram_fill_rsp_data[wordy]; - assign dram_req_data[wordy] = VX_gpu_dcache_dram_req.dram_req_data[wordy]; + number_threads <= number_threads; + number_warps <= number_warps; end -endgenerate + + wire memory_delay; + wire exec_delay; + wire gpr_stage_delay; + wire schedule_delay; + // Dcache Interface + VX_gpu_dcache_res_inter VX_dcache_rsp(); + VX_gpu_dcache_req_inter VX_dcache_req(); -wire temp_io_valid = (!memory_delay) && (|VX_dcache_req.core_req_valid) && (VX_dcache_req.core_req_mem_write != `NO_MEM_WRITE) && (VX_dcache_req.core_req_addr[0] == 32'h00010000); -wire[31:0] temp_io_data = VX_dcache_req.core_req_valid[0]; -assign io_valid = temp_io_valid; -assign io_data = temp_io_data; + VX_gpu_dcache_dram_req_inter VX_gpu_dcache_dram_req(); + VX_gpu_dcache_dram_res_inter VX_gpu_dcache_dram_res(); + assign VX_gpu_dcache_dram_res.dram_fill_rsp = dram_fill_rsp; + assign VX_gpu_dcache_dram_res.dram_fill_rsp_addr = dram_fill_rsp_addr; + + assign dram_req = VX_gpu_dcache_dram_req.dram_req; + assign dram_req_write = VX_gpu_dcache_dram_req.dram_req_write; + assign dram_req_read = VX_gpu_dcache_dram_req.dram_req_read; + assign dram_req_addr = VX_gpu_dcache_dram_req.dram_req_addr; + assign dram_req_size = VX_gpu_dcache_dram_req.dram_req_size; + assign dram_expected_lat = `SIMULATED_DRAM_LATENCY_CYCLES; + assign dram_fill_accept = VX_gpu_dcache_dram_req.dram_fill_accept; + + genvar wordy; + generate + for (wordy = 0; wordy < `BANK_LINE_SIZE_WORDS; wordy=wordy+1) begin + assign VX_gpu_dcache_dram_res.dram_fill_rsp_data[wordy] = dram_fill_rsp_data[wordy]; + assign dram_req_data[wordy] = VX_gpu_dcache_dram_req.dram_req_data[wordy]; + end + endgenerate + + wire temp_io_valid = (!memory_delay) && (|VX_dcache_req.core_req_valid) && (VX_dcache_req.core_req_mem_write != `NO_MEM_WRITE) && (VX_dcache_req.core_req_addr[0] == 32'h00010000); + wire[31:0] temp_io_data = VX_dcache_req.core_req_valid[0]; + assign io_valid = temp_io_valid; + assign io_data = temp_io_data; VX_icache_response_inter icache_response_fe(); @@ -114,8 +109,6 @@ assign io_data = temp_io_data; //assign icache_response_fe.instruction = icache_response_instruction; assign icache_request_pc_address = icache_request_fe.pc_address; - - assign o_m_valid_i = VX_dram_req_rsp_icache.o_m_valid; assign o_m_read_addr_i = VX_dram_req_rsp_icache.o_m_read_addr; assign o_m_evict_addr_i = VX_dram_req_rsp_icache.o_m_evict_addr; @@ -132,11 +125,8 @@ for (curr_bank = 0; curr_bank < `ICACHE_BANKS; curr_bank = curr_bank + 1) begin end end - ///////////////////////////////////////////////////////////////////////// - - // Front-end to Back-end VX_frE_to_bckE_req_inter VX_bckE_req(); // New instruction request to EXE/MEM @@ -204,6 +194,7 @@ VX_dmem_controller VX_dmem_controller( .VX_dcache_req (VX_dcache_req), .VX_dcache_rsp (VX_dcache_rsp) ); + // VX_csr_handler vx_csr_handler( // .clk (clk), // .in_decode_csr_address(decode_csr_address), @@ -213,9 +204,6 @@ VX_dmem_controller VX_dmem_controller( // .out_decode_csr_data (csr_decode_csr_data) // ); - - - endmodule // Vortex diff --git a/rtl/byte_enabled_simple_dual_port_ram.v b/rtl/byte_enabled_simple_dual_port_ram.v index bc5f82f1..73b923f4 100644 --- a/rtl/byte_enabled_simple_dual_port_ram.v +++ b/rtl/byte_enabled_simple_dual_port_ram.v @@ -1,7 +1,6 @@ `include "VX_define.v" - module byte_enabled_simple_dual_port_ram ( input we, clk, diff --git a/rtl/cache/VX_Cache_Bank.v b/rtl/cache/VX_Cache_Bank.v index b3701b68..62d53f3a 100644 --- a/rtl/cache/VX_Cache_Bank.v +++ b/rtl/cache/VX_Cache_Bank.v @@ -3,8 +3,6 @@ // Also make sure all possible output states are transmitted back to the bank correctly `include "VX_define.v" -// `include "VX_cache_data.v" - module VX_Cache_Bank #( diff --git a/rtl/cache/VX_cache_data.v b/rtl/cache/VX_cache_data.v index b4aac41e..b9c523c1 100644 --- a/rtl/cache/VX_cache_data.v +++ b/rtl/cache/VX_cache_data.v @@ -1,5 +1,3 @@ - - `include "VX_define.v" module VX_cache_data diff --git a/rtl/cache/VX_cache_data_per_index.v b/rtl/cache/VX_cache_data_per_index.v index 4fffd329..6d1dc89a 100644 --- a/rtl/cache/VX_cache_data_per_index.v +++ b/rtl/cache/VX_cache_data_per_index.v @@ -1,5 +1,3 @@ - - `include "VX_define.v" module VX_cache_data_per_index diff --git a/rtl/cache/VX_d_cache.v b/rtl/cache/VX_d_cache.v index ccb266a8..cce71c98 100644 --- a/rtl/cache/VX_d_cache.v +++ b/rtl/cache/VX_d_cache.v @@ -9,9 +9,10 @@ // - Send in a response from memory of what the data is from the test bench `include "VX_define.v" +//`include "VX_Cache_Bank.v" +//`include "VX_cache_bank_valid.v" //`include "VX_priority_encoder.v" -// `include "VX_Cache_Bank.v" -//`include "cache_set.v" +//`include "VX_priority_encoder_w_mask.v" module VX_d_cache #( diff --git a/rtl/cache/VX_d_cache_encapsulate.v b/rtl/cache/VX_d_cache_encapsulate.v index ca488152..b7560436 100644 --- a/rtl/cache/VX_d_cache_encapsulate.v +++ b/rtl/cache/VX_d_cache_encapsulate.v @@ -1,4 +1,3 @@ - `include "VX_define.v" `define NUM_WORDS_PER_BLOCK 4 diff --git a/rtl/cache/quartus/Makefile b/rtl/cache/quartus/Makefile new file mode 100755 index 00000000..49d0d173 --- /dev/null +++ b/rtl/cache/quartus/Makefile @@ -0,0 +1,70 @@ +PROJECT = VX_d_cache +TOP_LEVEL_ENTITY = VX_d_cache +SRC_FILE = ../VX_d_cache.v +PROJECT_FILES = $(PROJECT).qpf $(PROJECT).qsf + +# Part, Family +FAMILY = "Arria 10" +DEVICE = 10AX115N3F40E2SG + +# Executable Configuration +SYN_ARGS = --parallel --read_settings_files=on +FIT_ARGS = --part=$(DEVICE) --read_settings_files=on +ASM_ARGS = +STA_ARGS = --do_report_timing + +# Build targets +all: $(PROJECT).sta.rpt + +syn: $(PROJECT).syn.rpt + +fit: $(PROJECT).fit.rpt + +asm: $(PROJECT).asm.rpt + +sta: $(PROJECT).sta.rpt + +smart: smart.log + +# Target implementations +STAMP = echo done > + +$(PROJECT).syn.rpt: smart.log syn.chg $(SOURCE_FILES) + quartus_syn $(PROJECT) $(SYN_ARGS) + $(STAMP) fit.chg + +$(PROJECT).fit.rpt: smart.log fit.chg $(PROJECT).syn.rpt + quartus_fit $(PROJECT) $(FIT_ARGS) + $(STAMP) asm.chg + $(STAMP) sta.chg + +$(PROJECT).asm.rpt: smart.log asm.chg $(PROJECT).fit.rpt + quartus_asm $(PROJECT) $(ASM_ARGS) + +$(PROJECT).sta.rpt: smart.log sta.chg $(PROJECT).fit.rpt + quartus_sta $(PROJECT) $(STA_ARGS) + +smart.log: $(PROJECT_FILES) + quartus_sh --determine_smart_action $(PROJECT) > smart.log + +# Project initialization +$(PROJECT_FILES): + quartus_sh -t project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src $(SRC_FILE) -sdc project.sdc -inc "../;../../" + +syn.chg: + $(STAMP) syn.chg + +fit.chg: + $(STAMP) fit.chg + +sta.chg: + $(STAMP) sta.chg + +asm.chg: + $(STAMP) asm.chg + +program: $(PROJECT).sof + quartus_pgm --no_banner --mode=jtag -o "P;$(PROJECT).sof" + +clean: + rm -rf bin *.rpt *.chg *.qsf *.qpf smart.log *.htm *.eqn *.pin *.sof *.pof qdb incremental_db tmp-clearbox diff --git a/rtl/cache/quartus/project.sdc b/rtl/cache/quartus/project.sdc new file mode 100755 index 00000000..16582e56 --- /dev/null +++ b/rtl/cache/quartus/project.sdc @@ -0,0 +1 @@ +create_clock -name {clk} -period "250 MHz" -waveform { 0.0 1.0 } [get_ports {clk}] diff --git a/rtl/cache/quartus/project.tcl b/rtl/cache/quartus/project.tcl new file mode 100644 index 00000000..afe69d48 --- /dev/null +++ b/rtl/cache/quartus/project.tcl @@ -0,0 +1,41 @@ +load_package flow +package require cmdline + +set options { \ + { "project.arg" "" "Project name" } \ + { "family.arg" "" "Device family name" } \ + { "device.arg" "" "Device name" } \ + { "top.arg" "" "Top level module" } \ + { "sdc.arg" "" "Timing Design Constraints file" } \ + { "src.arg" "" "Verilog source file" } \ + { "inc.arg" "." "Include path" } \ +} + +array set opts [::cmdline::getoptions quartus(args) $options] + +project_new $opts(project) -overwrite + +set_global_assignment -name FAMILY $opts(family) +set_global_assignment -name DEVICE $opts(device) +set_global_assignment -name TOP_LEVEL_ENTITY $opts(top) +set_global_assignment -name VERILOG_FILE $opts(src) +set_global_assignment -name SEARCH_PATH $opts(inc) +set_global_assignment -name SDC_FILE $opts(sdc) +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY bin +set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL +set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2009 + +proc make_all_pins_virtual {} { + execute_module -tool map + set name_ids [get_names -filter * -node_type pin] + foreach_in_collection name_id $name_ids { + set pin_name [get_name_info -info full_path $name_id] + post_message "Making VIRTUAL_PIN assignment to $pin_name" + set_instance_assignment -to $pin_name -name VIRTUAL_PIN ON + } + export_assignments +} + +make_all_pins_virtual + +project_close \ No newline at end of file diff --git a/rtl/pipe_regs/VX_d_e_reg.v b/rtl/pipe_regs/VX_d_e_reg.v index e25a0d88..6fed097e 100644 --- a/rtl/pipe_regs/VX_d_e_reg.v +++ b/rtl/pipe_regs/VX_d_e_reg.v @@ -1,5 +1,3 @@ - - `include "../VX_define.v" module VX_d_e_reg ( diff --git a/rtl/quartus/Makefile b/rtl/quartus/Makefile index b968c608..8d6fe2f3 100644 --- a/rtl/quartus/Makefile +++ b/rtl/quartus/Makefile @@ -1,60 +1,57 @@ PROJECT = Vortex TOP_LEVEL_ENTITY = Vortex -SRC_FILE = Vortex.v +SRC_FILE = ../Vortex.v PROJECT_FILES = $(PROJECT).qpf $(PROJECT).qsf QUARTUS_ROOT ?= /tools/reconfig/intel/18.0 # Part, Family FAMILY = "Arria 10" -DEVICE = 10AX115N4F45I3SG +DEVICE = 10AX115N3F40E2SG # Executable Configuration -SYN_ARGS = --read_settings_files=on +SYN_ARGS = --parallel --read_settings_files=on FIT_ARGS = --part=$(DEVICE) --read_settings_files=on ASM_ARGS = STA_ARGS = --do_report_timing # Build targets -all: smart.log $(PROJECT).asm.rpt $(PROJECT).sta.rpt +all: $(PROJECT).sta.rpt -syn: smart.log $(PROJECT).syn.rpt +syn: $(PROJECT).syn.rpt -fit: smart.log $(PROJECT).fit.rpt +fit: $(PROJECT).fit.rpt -asm: smart.log $(PROJECT).asm.rpt +asm: $(PROJECT).asm.rpt -sta: smart.log $(PROJECT).sta.rpt +sta: $(PROJECT).sta.rpt smart: smart.log # Target implementations STAMP = echo done > -$(PROJECT).syn.rpt: syn.chg $(SOURCE_FILES) - $(QUARTUS_ROOT)/quartus/bin/quartus_sh -t make_pins_virtual.tcl - $(QUARTUS_ROOT)/quartus/bin/quartus_syn $(PROJECT) $(SYN_ARGS) - # $(QUARTUS_ROOT)/quartus/bin/quartus_sh -t make_pins_virtual.tcl +$(PROJECT).syn.rpt: smart.log syn.chg $(SOURCE_FILES) + quartus_syn $(PROJECT) $(SYN_ARGS) $(STAMP) fit.chg -$(PROJECT).fit.rpt: fit.chg $(PROJECT).syn.rpt - $(QUARTUS_ROOT)/quartus/bin/quartus_fit $(PROJECT) $(FIT_ARGS) +$(PROJECT).fit.rpt: smart.log fit.chg $(PROJECT).syn.rpt + quartus_fit $(PROJECT) $(FIT_ARGS) $(STAMP) asm.chg $(STAMP) sta.chg -$(PROJECT).asm.rpt: asm.chg $(PROJECT).fit.rpt - $(QUARTUS_ROOT)/quartus/bin/quartus_asm $(PROJECT) $(ASM_ARGS) +$(PROJECT).asm.rpt: smart.log asm.chg $(PROJECT).fit.rpt + quartus_asm $(PROJECT) $(ASM_ARGS) -$(PROJECT).sta.rpt: sta.chg $(PROJECT).fit.rpt - $(QUARTUS_ROOT)/quartus/bin/quartus_sta $(PROJECT) $(STA_ARGS) - $(QUARTUS_ROOT)/quartus/bin/quartus_sta -t VX_timing.tcl +$(PROJECT).sta.rpt: smart.log sta.chg $(PROJECT).fit.rpt + quartus_sta $(PROJECT) $(STA_ARGS) smart.log: $(PROJECT_FILES) - $(QUARTUS_ROOT)/quartus/bin/quartus_sh --determine_smart_action $(PROJECT) > smart.log + quartus_sh --determine_smart_action $(PROJECT) > smart.log # Project initialization $(PROJECT_FILES): - $(QUARTUS_ROOT)/quartus/bin/quartus_sh -t project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src $(SRC_FILE) -sdc ../project.sdc + quartus_sh -t project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src $(SRC_FILE) -sdc vortex.sdc -inc "..;../interfaces;../pipe_regs;../cache;../VX_cache;../shared_memory;../compat" syn.chg: $(STAMP) syn.chg @@ -72,4 +69,4 @@ program: $(PROJECT).sof quartus_pgm --no_banner --mode=jtag -o "P;$(PROJECT).sof" clean: - rm -rf *.rpt *.chg *.qsf *.qpf smart.log *.htm *.eqn *.pin *.sof *.pof qdb incremental_db output_files tmp-clearbox bin/ + rm -rf bin *.rpt *.chg *.qsf *.qpf smart.log *.htm *.eqn *.pin *.sof *.pof qdb incremental_db tmp-clearbox diff --git a/rtl/quartus/VX_gpr_syn.qpf b/rtl/quartus/VX_gpr_syn.qpf deleted file mode 100644 index 8938d2a9..00000000 --- a/rtl/quartus/VX_gpr_syn.qpf +++ /dev/null @@ -1,30 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 2018 Intel Corporation. All rights reserved. -# Your use of Intel Corporation's design tools, logic functions -# and other software and tools, and its AMPP partner logic -# functions, and any output files from any of the foregoing -# (including device programming or simulation files), and any -# associated documentation or information are expressly subject -# to the terms and conditions of the Intel Program License -# Subscription Agreement, the Intel Quartus Prime License Agreement, -# the Intel FPGA IP License Agreement, or other applicable license -# agreement, including, without limitation, that your use is for -# the sole purpose of programming logic devices manufactured by -# Intel and sold by Intel or its authorized distributors. Please -# refer to the applicable agreement for further details. -# -# -------------------------------------------------------------------------- # -# -# Quartus Prime -# Version 18.0.0 Build 219 04/25/2018 SJ Pro Edition -# Date created = 00:18:19 September 11, 2019 -# -# -------------------------------------------------------------------------- # - -QUARTUS_VERSION = "18.0" -DATE = "00:18:19 September 11, 2019" - -# Revisions - -PROJECT_REVISION = "VX_gpr_syn" diff --git a/rtl/quartus/VX_gpr_syn.qsf b/rtl/quartus/VX_gpr_syn.qsf deleted file mode 100644 index 62b5701d..00000000 --- a/rtl/quartus/VX_gpr_syn.qsf +++ /dev/null @@ -1,1615 +0,0 @@ -set_global_assignment -name ORIGINAL_QUARTUS_VERSION 18.0.0 -set_global_assignment -name PROJECT_CREATION_TIME_DATE "00:18:19 SEPTEMBER 11, 2019" -set_global_assignment -name LAST_QUARTUS_VERSION "18.0.0 Standard Edition" -set_global_assignment -name FAMILY "Arria 10" -set_global_assignment -name DEVICE 10AX115N4F45I3SG -set_global_assignment -name TOP_LEVEL_ENTITY Vortex -set_global_assignment -name SEARCH_PATH ../ -set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 100 -set_global_assignment -name PROJECT_OUTPUT_DIRECTORY bin -set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL - -set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top -set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top -set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top -set_global_assignment -name MIN_CORE_JUNCTION_TEMP "-40" -set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" -set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" -set_global_assignment -name VERILOG_FILE ../cache/cache_set.v -set_global_assignment -name VERILOG_FILE ../VX_define.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_dram_req_rsp_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_wstall_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_join_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_data_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_csr_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_inst_exec_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_csr_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpu_inst_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_lsu_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_exec_unit_req_inter.v -set_global_assignment -name VERILOG_FILE ../byte_enabled_simple_dual_port_ram.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_branch_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_csr_write_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_dcache_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_dcache_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_csr_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_exe_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_mem_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_reqeust_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_frE_to_bckE_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_clone_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_jal_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_read_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_wspawn_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_icache_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_icache_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_inst_mem_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_inst_meta_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_jal_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_mem_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_mw_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_warp_ctl_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_wb_inter.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_d_e_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_e_m_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_f_d_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_m_w_reg.v -set_global_assignment -name VERILOG_FILE ../cache/VX_generic_pe.v -set_global_assignment -name VERILOG_FILE ../cache/VX_cache_data_per_index.v -set_global_assignment -name VERILOG_FILE ../cache/VX_cache_data.v -set_global_assignment -name VERILOG_FILE ../cache/VX_cache_bank_valid.v -set_global_assignment -name VERILOG_FILE ../cache/VX_Cache_Bank.v -set_global_assignment -name VERILOG_FILE ../cache/VX_d_cache.v -set_global_assignment -name VERILOG_FILE ../shared_memory/VX_shared_memory_block.v -set_global_assignment -name VERILOG_FILE ../shared_memory/VX_shared_memory.v -set_global_assignment -name VERILOG_FILE ../shared_memory/VX_priority_encoder_sm.v -set_global_assignment -name VERILOG_FILE ../shared_memory/VX_bank_valids.v -set_global_assignment -name VERILOG_FILE ../VX_alu.v -set_global_assignment -name VERILOG_FILE ../VX_back_end.v -set_global_assignment -name VERILOG_FILE ../VX_context.v -set_global_assignment -name VERILOG_FILE ../VX_context_slave.v -set_global_assignment -name VERILOG_FILE ../VX_decode.v -set_global_assignment -name VERILOG_FILE ../VX_execute.v -set_global_assignment -name VERILOG_FILE ../VX_fetch.v -set_global_assignment -name VERILOG_FILE ../VX_forwarding.v -set_global_assignment -name VERILOG_FILE ../VX_front_end.v -set_global_assignment -name VERILOG_FILE ../VX_generic_register.v -set_global_assignment -name VERILOG_FILE ../VX_gpr.v -set_global_assignment -name VERILOG_FILE ../VX_gpr_stage.v -set_global_assignment -name VERILOG_FILE ../VX_gpr_wrapper.v -set_global_assignment -name VERILOG_FILE ../VX_gpr_syn.v -set_global_assignment -name VERILOG_FILE ../VX_inst_multiplex.v -set_global_assignment -name VERILOG_FILE ../VX_memory.v -set_global_assignment -name VERILOG_FILE ../VX_register_file.v -set_global_assignment -name VERILOG_FILE ../VX_register_file_master_slave.v -set_global_assignment -name VERILOG_FILE ../VX_register_file_slave.v -set_global_assignment -name VERILOG_FILE ../VX_warp.v -set_global_assignment -name VERILOG_FILE ../VX_writeback.v -set_global_assignment -name VERILOG_FILE ../VX_csr_wrapper.v -set_global_assignment -name VERILOG_FILE ../VX_gpgpu_inst.v -set_global_assignment -name VERILOG_FILE ../VX_execute_unit.v -set_global_assignment -name VERILOG_FILE ../VX_lsu.v -set_global_assignment -name VERILOG_FILE ../VX_scheduler.v -set_global_assignment -name VERILOG_FILE ../VX_dmem_controller.v -set_global_assignment -name VERILOG_FILE ../Vortex.v -set_global_assignment -name SDC_FILE vortex.sdc -set_global_assignment -name DEVICE_FILTER_PIN_COUNT 1932 -set_global_assignment -name TCL_SCRIPT_FILE make_pins_virtual.tcl -set_instance_assignment -name VIRTUAL_PIN ON -to clk -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][0][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][1][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][2][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[0][3][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][0][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][1][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][2][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[1][3][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][0][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][1][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][2][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[2][3][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][0][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][1][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][2][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_d[3][3][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][0][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][1][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][2][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][0] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][1] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][2] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][3] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][4] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][5] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][6] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][7] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][8] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][9] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][10] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][11] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][12] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][13] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][14] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][15] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][16] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][17] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][18] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][19] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][20] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][21] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][22] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][23] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][24] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][25] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][26] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][27] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][28] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][29] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][30] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_readdata_i[0][3][31] -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_ready_d -set_instance_assignment -name VIRTUAL_PIN ON -to i_m_ready_i -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[0] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[1] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[2] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[3] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[4] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[5] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[6] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[7] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[8] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[9] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[10] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[11] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[12] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[13] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[14] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[15] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[16] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[17] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[18] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[19] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[20] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[21] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[22] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[23] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[24] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[25] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[26] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[27] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[28] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[29] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[30] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_request_pc_address[31] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[0] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[1] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[2] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[3] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[4] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[5] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[6] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[7] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[8] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[9] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[10] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[11] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[12] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[13] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[14] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[15] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[16] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[17] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[18] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[19] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[20] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[21] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[22] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[23] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[24] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[25] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[26] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[27] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[28] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[29] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[30] -set_instance_assignment -name VIRTUAL_PIN ON -to icache_response_instruction[31] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[0] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[1] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[2] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[3] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[4] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[5] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[6] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[7] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[8] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[9] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[10] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[11] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[12] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[13] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[14] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[15] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[16] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[17] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[18] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[19] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[20] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[21] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[22] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[23] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[24] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[25] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[26] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[27] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[28] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[29] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[30] -set_instance_assignment -name VIRTUAL_PIN ON -to io_data[31] -set_instance_assignment -name VIRTUAL_PIN ON -to io_valid -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_d[31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_evict_addr_i[31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_d[31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_addr_i[31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_or_write_d -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_read_or_write_i -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_valid_d -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_valid_i -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][0][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][1][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][2][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[0][3][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][0][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][1][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][2][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[1][3][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][0][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][1][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][2][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[2][3][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][0][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][1][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][2][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_d[3][3][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][0][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][1][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][2][31] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][0] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][1] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][2] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][3] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][4] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][5] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][6] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][7] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][8] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][9] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][10] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][11] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][12] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][13] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][14] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][15] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][16] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][17] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][18] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][19] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][20] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][21] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][22] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][23] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][24] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][25] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][26] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][27] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][28] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][29] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][30] -set_instance_assignment -name VIRTUAL_PIN ON -to o_m_writedata_i[0][3][31] -set_instance_assignment -name VIRTUAL_PIN ON -to out_ebreak -set_global_assignment -name TIMING_ANALYZER_DO_REPORT_TIMING ON -set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/rtl/quartus/asm.chg b/rtl/quartus/asm.chg deleted file mode 100644 index 19f86f49..00000000 --- a/rtl/quartus/asm.chg +++ /dev/null @@ -1 +0,0 @@ -done diff --git a/rtl/quartus/make_pins_virtual.tcl b/rtl/quartus/make_pins_virtual.tcl deleted file mode 100644 index 976e639d..00000000 --- a/rtl/quartus/make_pins_virtual.tcl +++ /dev/null @@ -1,29 +0,0 @@ -load_package flow - -package require cmdline - -project_open Vortex - -proc make_all_pins_virtual { args } { - - remove_all_instance_assignments -name VIRTUAL_PIN - execute_module -tool map - set name_ids [get_names -filter * -node_type pin] - - foreach_in_collection name_id $name_ids { - set pin_name [get_name_info -info full_path $name_id] - - if { -1 == [lsearch -exact { clk, reset } $pin_name] } { - post_message "Making VIRTUAL_PIN assignment to $pin_name" - set_instance_assignment -to $pin_name -name VIRTUAL_PIN ON - } else { - post_message "Skipping VIRTUAL_PIN assignment to $pin_name" - } - } - export_assignments -} - - -make_all_pins_virtual - - diff --git a/rtl/quartus/map.chg b/rtl/quartus/map.chg index d155914e..62711209 100644 --- a/rtl/quartus/map.chg +++ b/rtl/quartus/map.chg @@ -1 +1 @@ -Wed Sep 11 00:18:22 2019 +Thu Mar 05 06:08:03 2020 diff --git a/rtl/quartus/project.tcl b/rtl/quartus/project.tcl index 3a19b62e..afe69d48 100644 --- a/rtl/quartus/project.tcl +++ b/rtl/quartus/project.tcl @@ -1,3 +1,4 @@ +load_package flow package require cmdline set options { \ @@ -7,6 +8,7 @@ set options { \ { "top.arg" "" "Top level module" } \ { "sdc.arg" "" "Timing Design Constraints file" } \ { "src.arg" "" "Verilog source file" } \ + { "inc.arg" "." "Include path" } \ } array set opts [::cmdline::getoptions quartus(args) $options] @@ -16,103 +18,24 @@ project_new $opts(project) -overwrite set_global_assignment -name FAMILY $opts(family) set_global_assignment -name DEVICE $opts(device) set_global_assignment -name TOP_LEVEL_ENTITY $opts(top) - -set_global_assignment -name SEARCH_PATH ../ - -set_global_assignment -name VERILOG_FILE ../VX_define.v -set_global_assignment -name VERILOG_FILE ../cache/cache_set.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_dram_req_rsp_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_wstall_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_join_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_data_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_csr_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_inst_exec_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_csr_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpu_inst_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_lsu_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_exec_unit_req_inter.v -set_global_assignment -name VERILOG_FILE ../byte_enabled_simple_dual_port_ram.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_branch_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_csr_write_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_dcache_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_dcache_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_csr_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_exe_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_mem_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_reqeust_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_forward_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_frE_to_bckE_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_clone_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_jal_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_read_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_gpr_wspawn_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_icache_request_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_icache_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_inst_mem_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_inst_meta_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_jal_response_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_mem_req_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_mw_wb_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_warp_ctl_inter.v -set_global_assignment -name VERILOG_FILE ../interfaces/VX_wb_inter.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_d_e_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_e_m_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_f_d_reg.v -set_global_assignment -name VERILOG_FILE ../pipe_regs/VX_m_w_reg.v -set_global_assignment -name VERILOG_FILE ../cache/VX_generic_pe.v -set_global_assignment -name VERILOG_FILE ../cache/VX_cache_data_per_index.v -set_global_assignment -name VERILOG_FILE ../cache/VX_cache_data.v -set_global_assignment -name VERILOG_FILE ../cache/VX_cache_bank_valid.v -set_global_assignment -name VERILOG_FILE ../cache/VX_Cache_Bank.v -set_global_assignment -name VERILOG_FILE ../cache/VX_d_cache.v -set_global_assignment -name VERILOG_FILE ../shared_memory/VX_shared_memory_block.v -set_global_assignment -name VERILOG_FILE ../shared_memory/VX_shared_memory.v -set_global_assignment -name VERILOG_FILE ../shared_memory/VX_priority_encoder_sm.v -set_global_assignment -name VERILOG_FILE ../shared_memory/VX_bank_valids.v -set_global_assignment -name VERILOG_FILE ../compat/VX_divide.v -set_global_assignment -name VERILOG_FILE ../compat/VX_mult.v -set_global_assignment -name VERILOG_FILE ../VX_alu.v -set_global_assignment -name VERILOG_FILE ../VX_back_end.v -set_global_assignment -name VERILOG_FILE ../VX_context.v -set_global_assignment -name VERILOG_FILE ../VX_context_slave.v -set_global_assignment -name VERILOG_FILE ../VX_decode.v -set_global_assignment -name VERILOG_FILE ../VX_execute.v -set_global_assignment -name VERILOG_FILE ../VX_fetch.v -set_global_assignment -name VERILOG_FILE ../VX_forwarding.v -set_global_assignment -name VERILOG_FILE ../VX_front_end.v -set_global_assignment -name VERILOG_FILE ../VX_generic_register.v -set_global_assignment -name VERILOG_FILE ../VX_gpr.v -set_global_assignment -name VERILOG_FILE ../VX_gpr_stage.v -set_global_assignment -name VERILOG_FILE ../VX_gpr_wrapper.v -set_global_assignment -name VERILOG_FILE ../VX_gpr_syn.v -set_global_assignment -name VERILOG_FILE ../VX_inst_multiplex.v -set_global_assignment -name VERILOG_FILE ../VX_memory.v -set_global_assignment -name VERILOG_FILE ../VX_register_file.v -set_global_assignment -name VERILOG_FILE ../VX_register_file_master_slave.v -set_global_assignment -name VERILOG_FILE ../VX_register_file_slave.v -set_global_assignment -name VERILOG_FILE ../VX_warp.v -set_global_assignment -name VERILOG_FILE ../VX_writeback.v -set_global_assignment -name VERILOG_FILE ../VX_csr_wrapper.v -set_global_assignment -name VERILOG_FILE ../VX_gpgpu_inst.v -set_global_assignment -name VERILOG_FILE ../VX_execute_unit.v -set_global_assignment -name VERILOG_FILE ../VX_lsu.v -set_global_assignment -name VERILOG_FILE ../VX_scheduler.v -set_global_assignment -name VERILOG_FILE ../VX_dmem_controller.v -set_global_assignment -name VERILOG_FILE ../Vortex.v - - -set_global_assignment -name SDC_FILE vortex.sdc -set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2009 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 100 +set_global_assignment -name VERILOG_FILE $opts(src) +set_global_assignment -name SEARCH_PATH $opts(inc) +set_global_assignment -name SDC_FILE $opts(sdc) set_global_assignment -name PROJECT_OUTPUT_DIRECTORY bin set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL +set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2009 +proc make_all_pins_virtual {} { + execute_module -tool map + set name_ids [get_names -filter * -node_type pin] + foreach_in_collection name_id $name_ids { + set pin_name [get_name_info -info full_path $name_id] + post_message "Making VIRTUAL_PIN assignment to $pin_name" + set_instance_assignment -to $pin_name -name VIRTUAL_PIN ON + } + export_assignments +} -# set where [file dirname [info script]] -# source [file join $where make_pins_virtual.tcl] - -project_close - -# set_global_assignment -name VERILOG_FILE $opts(src) +make_all_pins_virtual +project_close \ No newline at end of file diff --git a/rtl/quartus/smart.log b/rtl/quartus/smart.log index 540778b5..2fedba0b 100644 --- a/rtl/quartus/smart.log +++ b/rtl/quartus/smart.log @@ -1,4 +1,3 @@ -Info (292036): Thank you for using the Quartus Prime software 30-day evaluation. You have 0 days remaining (until Sep 11, 2019) to use the Quartus Prime software with compilation and simulation support. Info: ******************************************************************* Info: Running Quartus Prime Shell Info: Version 18.0.0 Build 219 04/25/2018 SJ Pro Edition @@ -15,13 +14,13 @@ Info: Running Quartus Prime Shell Info: the sole purpose of programming logic devices manufactured by Info: Intel and sold by Intel or its authorized distributors. Please Info: refer to the applicable agreement for further details. - Info: Processing started: Wed Sep 11 00:18:22 2019 -Info: Command: quartus_sh --determine_smart_action VX_gpr_syn -Info: Quartus(args): VX_gpr_syn + Info: Processing started: Thu Mar 5 06:08:03 2020 +Info: Command: quartus_sh --determine_smart_action Vortex +Info: Quartus(args): Vortex Info: SMART_ACTION = SOURCE Info (23030): Evaluation of Tcl script /tools/reconfig/intel/18.0/quartus/common/tcl/internal/qsh_smart.tcl was successful Info: Quartus Prime Shell was successful. 0 errors, 0 warnings - Info: Peak virtual memory: 687 megabytes - Info: Processing ended: Wed Sep 11 00:18:22 2019 - Info: Elapsed time: 00:00:00 - Info: Total CPU time (on all processors): 00:00:00 + Info: Peak virtual memory: 689 megabytes + Info: Processing ended: Thu Mar 5 06:08:04 2020 + Info: Elapsed time: 00:00:01 + Info: Total CPU time (on all processors): 00:00:01 diff --git a/rtl/quartus/vortex.ini b/rtl/quartus/vortex.ini deleted file mode 100644 index e2fb4516..00000000 --- a/rtl/quartus/vortex.ini +++ /dev/null @@ -1,40 +0,0 @@ -load_package flow - - -set_global_assignment -name VERILOG_FILE ../VX_gpr_wrapper.v -set_global_assignment -name VERILOG_FILE ../VX_gpr.v -set_global_assignment -name SDC_FILE vortex.sdc -set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2009 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 80 -set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files -set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL - -# pins configuration -package require cmdline - -proc make_all_pins_virtual { args } { - - set options {\ - { "exclude.arg" "" "List of signals to exclude" } \ - } - array set opts [::cmdline::getoptions quartus(args) $options] - - remove_all_instance_assignments -name VIRTUAL_PIN - execute_module -tool map - set name_ids [get_names -filter * -node_type pin] - - foreach_in_collection name_id $name_ids { - set pin_name [get_name_info -info full_path $name_id] - - if { -1 == [lsearch -exact $opts(excludes) $pin_name] } { - post_message "Making VIRTUAL_PIN assignment to $pin_name" - set_instance_assignment -to $pin_name -name VIRTUAL_PIN ON - } else { - post_message "Skipping VIRTUAL_PIN assignment to $pin_name" - } - } - export_assignments -} - - -make_all_pins_virtual -exclude { clk, reset } \ No newline at end of file diff --git a/rtl/quartus/vortex.sdc b/rtl/quartus/vortex.sdc index b1fc92c0..3c588f3b 100644 --- a/rtl/quartus/vortex.sdc +++ b/rtl/quartus/vortex.sdc @@ -1,6 +1,6 @@ set_time_format -unit ns -decimal_places 3 -create_clock -name {clk} -period "400 MHz" -waveform { 0.0 1.0 } [get_ports {clk}] +create_clock -name {clk} -period "250 MHz" -waveform { 0.0 1.0 } [get_ports {clk}] derive_pll_clocks -create_base_clocks derive_clock_uncertainty