From 67fbb1afeaad41f4df45bb3e0501fff56715b07f Mon Sep 17 00:00:00 2001 From: Eric Lewis Date: Fri, 9 Sep 2022 19:33:26 -0700 Subject: [PATCH] Initial commit --- README.md | 14 + .../lunarlander/ericlewis.LunarLander/.keep | 0 dist/Cores/ericlewis.LunarLander/audio.json | 5 + .../ericlewis.LunarLander/bitstream.rbf_r | Bin 0 -> 1653588 bytes dist/Cores/ericlewis.LunarLander/core.json | 34 + dist/Cores/ericlewis.LunarLander/data.json | 17 + dist/Cores/ericlewis.LunarLander/icon.bin | Bin 0 -> 2592 bytes dist/Cores/ericlewis.LunarLander/info.txt | 1 + dist/Cores/ericlewis.LunarLander/input.json | 42 + .../Cores/ericlewis.LunarLander/interact.json | 7 + .../Cores/ericlewis.LunarLander/variants.json | 6 + dist/Cores/ericlewis.LunarLander/video.json | 15 + dist/Platforms/_images/lunarlander.bin | Bin 0 -> 171930 bytes dist/Platforms/lunarlander.json | 8 + src/fpga/.gitignore | 28 + src/fpga/ap_core.qpf | 31 + src/fpga/ap_core.qsf | 767 +++++++++++ src/fpga/ap_core_assignment_defaults.qdf | 806 ++++++++++++ src/fpga/apf/apf.qip | 7 + src/fpga/apf/apf_constraints.sdc | 20 + src/fpga/apf/apf_top.v | 475 +++++++ src/fpga/apf/build_id.mif | 16 + src/fpga/apf/build_id_gen.tcl | 171 +++ src/fpga/apf/common.v | 156 +++ src/fpga/apf/io_bridge_peripheral.v | 334 +++++ src/fpga/apf/io_pad_controller.v | 328 +++++ src/fpga/apf/mf_datatable.qip | 4 + src/fpga/apf/mf_datatable.v | 247 ++++ src/fpga/apf/mf_ddio_bidir_12.ppf | 15 + src/fpga/apf/mf_ddio_bidir_12.qip | 5 + src/fpga/apf/mf_ddio_bidir_12.v | 133 ++ src/fpga/core/core_bridge_cmd.v | 445 +++++++ src/fpga/core/core_constraints.sdc | 15 + src/fpga/core/core_top.sv | 747 +++++++++++ src/fpga/core/data_loader_8.v | 174 +++ src/fpga/core/mf_pllbase.bsf | 126 ++ src/fpga/core/mf_pllbase.ppf | 17 + src/fpga/core/mf_pllbase.qip | 337 +++++ src/fpga/core/mf_pllbase.sip | 6 + src/fpga/core/mf_pllbase.spd | 6 + src/fpga/core/mf_pllbase.v | 261 ++++ src/fpga/core/mf_pllbase/mf_pllbase_0002.qip | 4 + src/fpga/core/mf_pllbase/mf_pllbase_0002.v | 99 ++ src/fpga/core/mf_pllbase_sim.f | 1 + .../mf_pllbase_sim/aldec/rivierapro_setup.tcl | 278 ++++ src/fpga/core/mf_pllbase_sim/cadence/cds.lib | 19 + src/fpga/core/mf_pllbase_sim/cadence/hdl.var | 2 + .../mf_pllbase_sim/cadence/ncsim_setup.sh | 195 +++ .../core/mf_pllbase_sim/mentor/msim_setup.tcl | 272 ++++ src/fpga/core/mf_pllbase_sim/mf_pllbase.vo | 309 +++++ .../mf_pllbase_sim/synopsys/vcs/vcs_setup.sh | 152 +++ .../synopsys/vcsmx/synopsys_sim.setup | 13 + .../synopsys/vcsmx/vcsmx_setup.sh | 195 +++ src/fpga/core/pin_ddio_clk.ppf | 11 + src/fpga/core/pin_ddio_clk.qip | 6 + src/fpga/core/pin_ddio_clk.v | 108 ++ src/fpga/core/rtl/T65/T65.vhd | 551 ++++++++ src/fpga/core/rtl/T65/T65_ALU.vhd | 260 ++++ src/fpga/core/rtl/T65/T65_MCode.vhd | 1050 +++++++++++++++ src/fpga/core/rtl/T65/T65_Pack.vhd | 117 ++ src/fpga/core/rtl/altera/RAM256.qip | 5 + src/fpga/core/rtl/altera/RAM256.vhd | 155 +++ src/fpga/core/rtl/altera/clk_pll.qip | 5 + src/fpga/core/rtl/altera/clk_pll.vhd | 397 ++++++ src/fpga/core/rtl/altera/ram_1k.vhd | 181 +++ src/fpga/core/rtl/asteroids_dw.vhd | 442 +++++++ src/fpga/core/rtl/base_pack.vhd | 593 +++++++++ src/fpga/core/rtl/deltasigma.vhd | 61 + src/fpga/core/rtl/dpram.vhd | 75 ++ src/fpga/core/rtl/llander.vhd | 711 +++++++++++ src/fpga/core/rtl/llander_ram.vhd | 96 ++ src/fpga/core/rtl/llander_top.vhd | 243 ++++ src/fpga/core/rtl/llander_vg.vhd | 797 ++++++++++++ src/fpga/core/rtl/llander_vtg.vhd | 677 ++++++++++ src/fpga/core/rtl/ovo.vhd | 188 +++ src/fpga/core/stp1.stp | 1135 +++++++++++++++++ src/fpga/output_files/.gitignore | 2 + src/fpga/output_files/ap_core.jdi | 8 + src/fpga/output_files/ap_core.rbf | Bin 0 -> 1653588 bytes src/fpga/output_files/ap_core.sof | Bin 0 -> 2451335 bytes src/fpga/output_files/bitstream.rbf_r | Bin 0 -> 1653588 bytes src/fpga/output_files/reverse_bits.exe | Bin 0 -> 86528 bytes src/fpga/output_files/run.bat | 3 + 83 files changed, 15242 insertions(+) create mode 100644 README.md create mode 100644 dist/Assets/lunarlander/ericlewis.LunarLander/.keep create mode 100644 dist/Cores/ericlewis.LunarLander/audio.json create mode 100644 dist/Cores/ericlewis.LunarLander/bitstream.rbf_r create mode 100644 dist/Cores/ericlewis.LunarLander/core.json create mode 100644 dist/Cores/ericlewis.LunarLander/data.json create mode 100644 dist/Cores/ericlewis.LunarLander/icon.bin create mode 100644 dist/Cores/ericlewis.LunarLander/info.txt create mode 100644 dist/Cores/ericlewis.LunarLander/input.json create mode 100644 dist/Cores/ericlewis.LunarLander/interact.json create mode 100644 dist/Cores/ericlewis.LunarLander/variants.json create mode 100644 dist/Cores/ericlewis.LunarLander/video.json create mode 100644 dist/Platforms/_images/lunarlander.bin create mode 100644 dist/Platforms/lunarlander.json create mode 100644 src/fpga/.gitignore create mode 100644 src/fpga/ap_core.qpf create mode 100644 src/fpga/ap_core.qsf create mode 100644 src/fpga/ap_core_assignment_defaults.qdf create mode 100644 src/fpga/apf/apf.qip create mode 100644 src/fpga/apf/apf_constraints.sdc create mode 100644 src/fpga/apf/apf_top.v create mode 100644 src/fpga/apf/build_id.mif create mode 100644 src/fpga/apf/build_id_gen.tcl create mode 100644 src/fpga/apf/common.v create mode 100644 src/fpga/apf/io_bridge_peripheral.v create mode 100644 src/fpga/apf/io_pad_controller.v create mode 100644 src/fpga/apf/mf_datatable.qip create mode 100644 src/fpga/apf/mf_datatable.v create mode 100644 src/fpga/apf/mf_ddio_bidir_12.ppf create mode 100644 src/fpga/apf/mf_ddio_bidir_12.qip create mode 100644 src/fpga/apf/mf_ddio_bidir_12.v create mode 100644 src/fpga/core/core_bridge_cmd.v create mode 100644 src/fpga/core/core_constraints.sdc create mode 100644 src/fpga/core/core_top.sv create mode 100644 src/fpga/core/data_loader_8.v create mode 100644 src/fpga/core/mf_pllbase.bsf create mode 100644 src/fpga/core/mf_pllbase.ppf create mode 100644 src/fpga/core/mf_pllbase.qip create mode 100644 src/fpga/core/mf_pllbase.sip create mode 100644 src/fpga/core/mf_pllbase.spd create mode 100644 src/fpga/core/mf_pllbase.v create mode 100644 src/fpga/core/mf_pllbase/mf_pllbase_0002.qip create mode 100644 src/fpga/core/mf_pllbase/mf_pllbase_0002.v create mode 100644 src/fpga/core/mf_pllbase_sim.f create mode 100644 src/fpga/core/mf_pllbase_sim/aldec/rivierapro_setup.tcl create mode 100644 src/fpga/core/mf_pllbase_sim/cadence/cds.lib create mode 100644 src/fpga/core/mf_pllbase_sim/cadence/hdl.var create mode 100644 src/fpga/core/mf_pllbase_sim/cadence/ncsim_setup.sh create mode 100644 src/fpga/core/mf_pllbase_sim/mentor/msim_setup.tcl create mode 100644 src/fpga/core/mf_pllbase_sim/mf_pllbase.vo create mode 100644 src/fpga/core/mf_pllbase_sim/synopsys/vcs/vcs_setup.sh create mode 100644 src/fpga/core/mf_pllbase_sim/synopsys/vcsmx/synopsys_sim.setup create mode 100644 src/fpga/core/mf_pllbase_sim/synopsys/vcsmx/vcsmx_setup.sh create mode 100644 src/fpga/core/pin_ddio_clk.ppf create mode 100644 src/fpga/core/pin_ddio_clk.qip create mode 100644 src/fpga/core/pin_ddio_clk.v create mode 100644 src/fpga/core/rtl/T65/T65.vhd create mode 100644 src/fpga/core/rtl/T65/T65_ALU.vhd create mode 100644 src/fpga/core/rtl/T65/T65_MCode.vhd create mode 100644 src/fpga/core/rtl/T65/T65_Pack.vhd create mode 100644 src/fpga/core/rtl/altera/RAM256.qip create mode 100644 src/fpga/core/rtl/altera/RAM256.vhd create mode 100644 src/fpga/core/rtl/altera/clk_pll.qip create mode 100644 src/fpga/core/rtl/altera/clk_pll.vhd create mode 100644 src/fpga/core/rtl/altera/ram_1k.vhd create mode 100644 src/fpga/core/rtl/asteroids_dw.vhd create mode 100644 src/fpga/core/rtl/base_pack.vhd create mode 100644 src/fpga/core/rtl/deltasigma.vhd create mode 100644 src/fpga/core/rtl/dpram.vhd create mode 100644 src/fpga/core/rtl/llander.vhd create mode 100644 src/fpga/core/rtl/llander_ram.vhd create mode 100644 src/fpga/core/rtl/llander_top.vhd create mode 100644 src/fpga/core/rtl/llander_vg.vhd create mode 100644 src/fpga/core/rtl/llander_vtg.vhd create mode 100644 src/fpga/core/rtl/ovo.vhd create mode 100644 src/fpga/core/stp1.stp create mode 100644 src/fpga/output_files/.gitignore create mode 100644 src/fpga/output_files/ap_core.jdi create mode 100644 src/fpga/output_files/ap_core.rbf create mode 100644 src/fpga/output_files/ap_core.sof create mode 100644 src/fpga/output_files/bitstream.rbf_r create mode 100644 src/fpga/output_files/reverse_bits.exe create mode 100644 src/fpga/output_files/run.bat diff --git a/README.md b/README.md new file mode 100644 index 0000000..7bc5f4b --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# Lunar Lander for Analogue Pocket + ++ FPGA implementation of Arcade _Lunar Lander_ (Atari, 1979) for Analogue Pocket. ++ Based on Rev.2 schematics. ++ Ported from the [original MiSTer implementation.](https://github.com/MiSTer-devel/Arcade-LunarLander_MiSTer) ++ Multiplayer support via dock. + +## Known Issues + ++ DIP switches are not implemented. + +## ROM Instructions + +ROM files are not included, you must use [mra-tools-c](https://github.com/sebdel/mra-tools-c/) to convert to a singular `llander.rom` file, then place the ROM file in `/Assets/lunarlander/ericlewis.LunarLander`. \ No newline at end of file diff --git a/dist/Assets/lunarlander/ericlewis.LunarLander/.keep b/dist/Assets/lunarlander/ericlewis.LunarLander/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dist/Cores/ericlewis.LunarLander/audio.json b/dist/Cores/ericlewis.LunarLander/audio.json new file mode 100644 index 0000000..7c5daf9 --- /dev/null +++ b/dist/Cores/ericlewis.LunarLander/audio.json @@ -0,0 +1,5 @@ +{ + "audio": { + "magic": "APF_VER_1" + } +} \ No newline at end of file diff --git a/dist/Cores/ericlewis.LunarLander/bitstream.rbf_r b/dist/Cores/ericlewis.LunarLander/bitstream.rbf_r new file mode 100644 index 0000000000000000000000000000000000000000..4b7eaba1967eaf97f6943c967c7b5785087420a2 GIT binary patch literal 1653588 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�}g-hBe!EtGEtJGbxwp( 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

R-(2|Nskc9P_Z-A#V^Ruq^o;}E*laON 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 ~2hO=Uo#g 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 literal 0 HcmV?d00001 diff --git a/dist/Cores/ericlewis.LunarLander/core.json b/dist/Cores/ericlewis.LunarLander/core.json new file mode 100644 index 0000000..150f958 --- /dev/null +++ b/dist/Cores/ericlewis.LunarLander/core.json @@ -0,0 +1,34 @@ +{ + "core": { + "magic": "APF_VER_1", + "metadata": { + "platform_ids": ["lunarlander"], + "shortname": "LunarLander", + "description": "Atari's 1979 Lunar Lander.", + "author": "ericlewis", + "url": "https://github.com/ericlewis/openfpga-lunarlander", + "version": "0.0.1", + "date_release": "2022-09-12" + }, + "framework": { + "target_product": "Analogue Pocket", + "version_required": "1.1", + "sleep_supported": false, + "dock": { + "supported": true, + "analog_output": false + }, + "hardware": { + "link_port": false, + "cartridge_adapter": -1 + } + }, + "cores": [ + { + "name": "default", + "id": 0, + "filename": "bitstream.rbf_r" + } + ] + } +} diff --git a/dist/Cores/ericlewis.LunarLander/data.json b/dist/Cores/ericlewis.LunarLander/data.json new file mode 100644 index 0000000..93304f8 --- /dev/null +++ b/dist/Cores/ericlewis.LunarLander/data.json @@ -0,0 +1,17 @@ +{ + "data": { + "magic": "APF_VER_1", + "data_slots": [ + { + "name": "ROM", + "id": 101, + "required": true, + "parameters": 2, + "filename": "llander.rom", + "size_exact": 0, + "size_maximum": 131072, + "address": "0x00000000" + } + ] + } +} \ No newline at end of file diff --git a/dist/Cores/ericlewis.LunarLander/icon.bin b/dist/Cores/ericlewis.LunarLander/icon.bin new file mode 100644 index 0000000000000000000000000000000000000000..7e6007c43cef75ca6b4bb78c01011fdd8cb38fbc GIT binary patch literal 2592 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 bFGcrX&*FJh+;YM`Pt%&?$2g-^<4ogUF3C@* literal 0 HcmV?d00001 diff --git a/dist/Platforms/lunarlander.json b/dist/Platforms/lunarlander.json new file mode 100644 index 0000000..604218c --- /dev/null +++ b/dist/Platforms/lunarlander.json @@ -0,0 +1,8 @@ +{ + "platform": { + "category": "Arcade", + "name": "Lunar Lander", + "year": 1979, + "manufacturer": "Atari" + } +} diff --git a/src/fpga/.gitignore b/src/fpga/.gitignore new file mode 100644 index 0000000..9d946bf --- /dev/null +++ b/src/fpga/.gitignore @@ -0,0 +1,28 @@ +*/db/ +*/incremental_db/ +*/simulation/ +*/greybox_tmp/ +incremental_db/ +db/ +PLLJ_PLLSPE_INFO.txt +c5_pin_model_dump.txt +cr_ie_info.json +*.pin +*.pof +*.ptf.* +*.qar +*.qarlog +*.qws +*.rpt +*.smsg +*.sof +*.sopc_builder +*.summary +*.txt +*.bak +*.cmp +*.done +*.xml +*.sld +*.cdf + diff --git a/src/fpga/ap_core.qpf b/src/fpga/ap_core.qpf new file mode 100644 index 0000000..dce59fc --- /dev/null +++ b/src/fpga/ap_core.qpf @@ -0,0 +1,31 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 2019 Intel Corporation. All rights reserved. +# Your use of Intel Corporation's design tools, logic functions +# and other software and tools, and any 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, at +# https://fpgasoftware.intel.com/eula. +# +# -------------------------------------------------------------------------- # +# +# Quartus Prime +# Version 18.1.1 Build 646 04/11/2019 SJ Lite Edition +# Date created = 21:31:36 January 22, 2020 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "18.1" +DATE = "21:31:36 January 22, 2020" + +# Revisions + +PROJECT_REVISION = "ap_core" diff --git a/src/fpga/ap_core.qsf b/src/fpga/ap_core.qsf new file mode 100644 index 0000000..ef22729 --- /dev/null +++ b/src/fpga/ap_core.qsf @@ -0,0 +1,767 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 2019 Intel Corporation. All rights reserved. +# Your use of Intel Corporation's design tools, logic functions +# and other software and tools, and any 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, at +# https://fpgasoftware.intel.com/eula. +# +# -------------------------------------------------------------------------- # +# +# Quartus Prime +# Version 18.1.1 Build 646 04/11/2019 SJ Lite Edition +# Date created = 19:22:02 April 19, 2022 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# ap_core_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus Prime software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + + +# Project-Wide Assignments +# ======================== +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 18.1.1 +set_global_assignment -name PROJECT_CREATION_TIME_DATE "21:31:36 JANUARY 22, 2020" +set_global_assignment -name LAST_QUARTUS_VERSION "21.1.1 Lite Edition" +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:apf/build_id_gen.tcl" +set_global_assignment -name SMART_RECOMPILE ON + +# Pin & Location Assignments +# ========================== +set_location_assignment PIN_T17 -to bridge_spiclk +set_location_assignment PIN_M21 -to bridge_spimiso +set_location_assignment PIN_M20 -to bridge_spimosi +set_location_assignment PIN_AA9 -to cart_tran_bank0[7] +set_location_assignment PIN_AB8 -to cart_tran_bank0[6] +set_location_assignment PIN_AA8 -to cart_tran_bank0[5] +set_location_assignment PIN_AB7 -to cart_tran_bank0[4] +set_location_assignment PIN_AB6 -to cart_tran_bank0_dir +set_location_assignment PIN_AA10 -to cart_tran_bank1[7] +set_location_assignment PIN_AB10 -to cart_tran_bank1[6] +set_location_assignment PIN_Y10 -to cart_tran_bank1[5] +set_location_assignment PIN_AB11 -to cart_tran_bank1[4] +set_location_assignment PIN_Y11 -to cart_tran_bank1[3] +set_location_assignment PIN_AB12 -to cart_tran_bank1[2] +set_location_assignment PIN_AA12 -to cart_tran_bank1[1] +set_location_assignment PIN_AB13 -to cart_tran_bank1[0] +set_location_assignment PIN_AA13 -to cart_tran_bank1_dir +set_location_assignment PIN_AB15 -to cart_tran_bank2[7] +set_location_assignment PIN_AA15 -to cart_tran_bank2[6] +set_location_assignment PIN_AB17 -to cart_tran_bank2[5] +set_location_assignment PIN_AA17 -to cart_tran_bank2[4] +set_location_assignment PIN_AB18 -to cart_tran_bank2[3] +set_location_assignment PIN_AB20 -to cart_tran_bank2[0] +set_location_assignment PIN_AA19 -to cart_tran_bank2[1] +set_location_assignment PIN_AA18 -to cart_tran_bank2[2] +set_location_assignment PIN_AA14 -to cart_tran_bank2_dir +set_location_assignment PIN_AA20 -to cart_tran_bank3[7] +set_location_assignment PIN_AB21 -to cart_tran_bank3[6] +set_location_assignment PIN_AB22 -to cart_tran_bank3[5] +set_location_assignment PIN_AA22 -to cart_tran_bank3[4] +set_location_assignment PIN_Y21 -to cart_tran_bank3[3] +set_location_assignment PIN_Y22 -to cart_tran_bank3[2] +set_location_assignment PIN_W21 -to cart_tran_bank3[1] +set_location_assignment PIN_W22 -to cart_tran_bank3[0] +set_location_assignment PIN_V21 -to cart_tran_bank3_dir +set_location_assignment PIN_AB5 -to cart_tran_pin30_dir +set_location_assignment PIN_L8 -to cart_tran_pin30 +set_location_assignment PIN_K9 -to cart_tran_pin31 +set_location_assignment PIN_V15 -to clk_74a +set_location_assignment PIN_H16 -to clk_74b +set_location_assignment PIN_H8 -to cram0_a[21] +set_location_assignment PIN_H9 -to cram0_a[20] +set_location_assignment PIN_B7 -to cram0_a[19] +set_location_assignment PIN_B6 -to cram0_a[18] +set_location_assignment PIN_C6 -to cram0_a[17] +set_location_assignment PIN_H6 -to cram0_a[16] +set_location_assignment PIN_J8 -to cram0_adv_n +set_location_assignment PIN_B5 -to cram0_ce0_n +set_location_assignment PIN_E10 -to cram0_ce1_n +set_location_assignment PIN_G10 -to cram0_clk +set_location_assignment PIN_F7 -to cram0_cre +set_location_assignment PIN_J9 -to cram0_dq[15] +set_location_assignment PIN_L7 -to cram0_dq[14] +set_location_assignment PIN_F9 -to cram0_dq[13] +set_location_assignment PIN_E7 -to cram0_dq[12] +set_location_assignment PIN_A8 -to cram0_dq[11] +set_location_assignment PIN_D9 -to cram0_dq[10] +set_location_assignment PIN_A10 -to cram0_dq[9] +set_location_assignment PIN_C9 -to cram0_dq[8] +set_location_assignment PIN_J7 -to cram0_dq[7] +set_location_assignment PIN_G6 -to cram0_dq[6] +set_location_assignment PIN_F10 -to cram0_dq[5] +set_location_assignment PIN_E9 -to cram0_dq[4] +set_location_assignment PIN_D7 -to cram0_dq[3] +set_location_assignment PIN_A9 -to cram0_dq[2] +set_location_assignment PIN_C8 -to cram0_dq[1] +set_location_assignment PIN_B10 -to cram0_dq[0] +set_location_assignment PIN_A5 -to cram0_lb_n +set_location_assignment PIN_D6 -to cram0_oe_n +set_location_assignment PIN_A7 -to cram0_ub_n +set_location_assignment PIN_K7 -to cram0_wait +set_location_assignment PIN_G8 -to cram0_we_n +set_location_assignment PIN_Y3 -to cram1_a[21] +set_location_assignment PIN_AA2 -to cram1_a[20] +set_location_assignment PIN_L2 -to cram1_a[19] +set_location_assignment PIN_N1 -to cram1_a[18] +set_location_assignment PIN_U1 -to cram1_a[17] +set_location_assignment PIN_U2 -to cram1_a[16] +set_location_assignment PIN_U8 -to cram1_adv_n +set_location_assignment PIN_N2 -to cram1_ce0_n +set_location_assignment PIN_T8 -to cram1_ce1_n +set_location_assignment PIN_W2 -to cram1_clk +set_location_assignment PIN_T7 -to cram1_cre +set_location_assignment PIN_W8 -to cram1_dq[15] +set_location_assignment PIN_U6 -to cram1_dq[14] +set_location_assignment PIN_R7 -to cram1_dq[13] +set_location_assignment PIN_R6 -to cram1_dq[12] +set_location_assignment PIN_P7 -to cram1_dq[11] +set_location_assignment PIN_N6 -to cram1_dq[10] +set_location_assignment PIN_C2 -to cram1_dq[9] +set_location_assignment PIN_D3 -to cram1_dq[8] +set_location_assignment PIN_V6 -to cram1_dq[7] +set_location_assignment PIN_U7 -to cram1_dq[6] +set_location_assignment PIN_M6 -to cram1_dq[5] +set_location_assignment PIN_R5 -to cram1_dq[4] +set_location_assignment PIN_P6 -to cram1_dq[3] +set_location_assignment PIN_E2 -to cram1_dq[2] +set_location_assignment PIN_G2 -to cram1_dq[1] +set_location_assignment PIN_C1 -to cram1_dq[0] +set_location_assignment PIN_L1 -to cram1_lb_n +set_location_assignment PIN_M7 -to cram1_oe_n +set_location_assignment PIN_G1 -to cram1_ub_n +set_location_assignment PIN_W9 -to cram1_wait +set_location_assignment PIN_AA1 -to cram1_we_n +set_location_assignment PIN_J17 -to dram_a[12] +set_location_assignment PIN_F15 -to dram_a[11] +set_location_assignment PIN_C13 -to dram_a[10] +set_location_assignment PIN_G17 -to dram_a[9] +set_location_assignment PIN_J18 -to dram_a[8] +set_location_assignment PIN_F14 -to dram_a[7] +set_location_assignment PIN_E15 -to dram_a[6] +set_location_assignment PIN_E16 -to dram_a[5] +set_location_assignment PIN_F13 -to dram_a[4] +set_location_assignment PIN_E14 -to dram_a[3] +set_location_assignment PIN_F12 -to dram_a[2] +set_location_assignment PIN_D12 -to dram_a[1] +set_location_assignment PIN_D17 -to dram_a[0] +set_location_assignment PIN_E12 -to dram_ba[1] +set_location_assignment PIN_C16 -to dram_ba[0] +set_location_assignment PIN_B16 -to dram_cas_n +set_location_assignment PIN_G18 -to dram_cke +set_location_assignment PIN_G12 -to dram_clk +set_location_assignment PIN_K20 -to dram_dq[15] +set_location_assignment PIN_G11 -to dram_dq[14] +set_location_assignment PIN_J19 -to dram_dq[13] +set_location_assignment PIN_H13 -to dram_dq[12] +set_location_assignment PIN_G13 -to dram_dq[11] +set_location_assignment PIN_G16 -to dram_dq[10] +set_location_assignment PIN_G15 -to dram_dq[9] +set_location_assignment PIN_J13 -to dram_dq[8] +set_location_assignment PIN_A12 -to dram_dq[7] +set_location_assignment PIN_A13 -to dram_dq[6] +set_location_assignment PIN_B12 -to dram_dq[5] +set_location_assignment PIN_A14 -to dram_dq[4] +set_location_assignment PIN_B13 -to dram_dq[3] +set_location_assignment PIN_A15 -to dram_dq[2] +set_location_assignment PIN_B15 -to dram_dq[1] +set_location_assignment PIN_C15 -to dram_dq[0] +set_location_assignment PIN_B11 -to dram_ras_n +set_location_assignment PIN_C11 -to dram_we_n +set_location_assignment PIN_H10 -to port_ir_rx +set_location_assignment PIN_H11 -to port_ir_tx +set_location_assignment PIN_AA7 -to port_tran_sck +set_location_assignment PIN_R9 -to port_tran_sd +set_location_assignment PIN_V10 -to port_tran_si +set_location_assignment PIN_T13 -to port_tran_so_dir +set_location_assignment PIN_V9 -to port_tran_si_dir +set_location_assignment PIN_T9 -to port_tran_sd_dir +set_location_assignment PIN_Y9 -to port_tran_sck_dir +set_location_assignment PIN_J11 -to port_tran_so +set_location_assignment PIN_H15 -to scal_audadc +set_location_assignment PIN_K19 -to scal_auddac +set_location_assignment PIN_K17 -to scal_audlrck +set_location_assignment PIN_K16 -to scal_audmclk +set_location_assignment PIN_R17 -to scal_clk +set_location_assignment PIN_N20 -to scal_de +set_location_assignment PIN_P17 -to scal_hs +set_location_assignment PIN_N21 -to scal_skip +set_location_assignment PIN_T15 -to scal_vs +set_location_assignment PIN_U10 -to bist +set_location_assignment PIN_V16 -to sram_a[16] +set_location_assignment PIN_U12 -to sram_a[15] +set_location_assignment PIN_U15 -to sram_a[14] +set_location_assignment PIN_R10 -to sram_a[13] +set_location_assignment PIN_V14 -to sram_a[12] +set_location_assignment PIN_T10 -to sram_a[11] +set_location_assignment PIN_U11 -to sram_a[10] +set_location_assignment PIN_Y14 -to sram_a[9] +set_location_assignment PIN_U13 -to sram_a[8] +set_location_assignment PIN_Y19 -to sram_a[7] +set_location_assignment PIN_P8 -to sram_a[6] +set_location_assignment PIN_V19 -to sram_a[5] +set_location_assignment PIN_N9 -to sram_a[4] +set_location_assignment PIN_U21 -to sram_a[3] +set_location_assignment PIN_M8 -to sram_a[2] +set_location_assignment PIN_M9 -to sram_a[1] +set_location_assignment PIN_T14 -to sram_a[0] +set_location_assignment PIN_Y15 -to sram_dq[15] +set_location_assignment PIN_W16 -to sram_dq[14] +set_location_assignment PIN_Y16 -to sram_dq[13] +set_location_assignment PIN_Y17 -to sram_dq[12] +set_location_assignment PIN_V20 -to sram_dq[11] +set_location_assignment PIN_V18 -to sram_dq[10] +set_location_assignment PIN_U20 -to sram_dq[9] +set_location_assignment PIN_U16 -to sram_dq[8] +set_location_assignment PIN_R12 -to sram_dq[7] +set_location_assignment PIN_V13 -to sram_dq[6] +set_location_assignment PIN_T12 -to sram_dq[5] +set_location_assignment PIN_W19 -to sram_dq[4] +set_location_assignment PIN_Y20 -to sram_dq[3] +set_location_assignment PIN_P14 -to sram_dq[2] +set_location_assignment PIN_P9 -to sram_dq[1] +set_location_assignment PIN_N8 -to sram_dq[0] +set_location_assignment PIN_U17 -to sram_ub_n +set_location_assignment PIN_R11 -to sram_we_n +set_location_assignment PIN_N19 -to vblank +set_location_assignment PIN_R14 -to sram_oe_n +set_location_assignment PIN_P12 -to sram_lb_n +set_location_assignment PIN_H14 -to bridge_spiss +set_location_assignment PIN_M22 -to user1 +set_location_assignment PIN_L22 -to user2 +set_location_assignment PIN_K21 -to dbg_tx +set_location_assignment PIN_K22 -to dbg_rx +set_location_assignment PIN_L19 -to bridge_1wire +set_location_assignment PIN_R16 -to scal_vid[11] +set_location_assignment PIN_R15 -to scal_vid[10] +set_location_assignment PIN_R22 -to scal_vid[9] +set_location_assignment PIN_T22 -to scal_vid[8] +set_location_assignment PIN_T18 -to scal_vid[7] +set_location_assignment PIN_T19 -to scal_vid[6] +set_location_assignment PIN_T20 -to scal_vid[5] +set_location_assignment PIN_P19 -to scal_vid[4] +set_location_assignment PIN_P18 -to scal_vid[3] +set_location_assignment PIN_N16 -to scal_vid[2] +set_location_assignment PIN_P22 -to scal_vid[1] +set_location_assignment PIN_R21 -to scal_vid[0] +set_location_assignment PIN_P16 -to vpll_feed +set_location_assignment PIN_L18 -to port_ir_rx_disable +set_location_assignment PIN_D13 -to dram_dqm[0] +set_location_assignment PIN_H18 -to dram_dqm[1] +set_location_assignment PIN_U22 -to cart_tran_pin31_dir +set_location_assignment PIN_L17 -to cart_pin30_pwroff_reset +set_location_assignment PIN_M16 -to aux_scl +set_location_assignment PIN_M18 -to aux_sda + +# Classic Timing Assignments +# ========================== +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS ON + +# Compiler Assignments +# ==================== +set_global_assignment -name OPTIMIZATION_MODE "HIGH PERFORMANCE EFFORT" + +# Analysis & Synthesis Assignments +# ================================ +set_global_assignment -name FAMILY "Cyclone V" +set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA +set_global_assignment -name DEVICE_FILTER_PIN_COUNT 484 +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8 +set_global_assignment -name TOP_LEVEL_ENTITY apf_top +set_global_assignment -name SAFE_STATE_MACHINE ON +set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP ON +set_global_assignment -name SYNTH_PROTECT_SDC_CONSTRAINT ON +set_global_assignment -name PRE_MAPPING_RESYNTHESIS ON +set_global_assignment -name OPTIMIZATION_TECHNIQUE SPEED +set_global_assignment -name MUX_RESTRUCTURE OFF +set_global_assignment -name ALM_REGISTER_PACKING_EFFORT LOW + +# Fitter Assignments +# ================== +set_global_assignment -name DEVICE 5CEBA4F23C8 +set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256 +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "PASSIVE SERIAL" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN ON +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHZ +set_global_assignment -name ROUTER_CLOCKING_TOPOLOGY_ANALYSIS ON +set_global_assignment -name ECO_OPTIMIZE_TIMING ON +set_global_assignment -name PERIPHERY_TO_CORE_PLACEMENT_AND_ROUTING_OPTIMIZATION ON +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC ON +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION ON +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING ON +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING ON +set_global_assignment -name FITTER_EFFORT "AUTO FIT" +set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION ON + +# Assembler Assignments +# ===================== +set_global_assignment -name ENABLE_OCT_DONE OFF +set_global_assignment -name USE_CONFIGURATION_DEVICE ON +set_global_assignment -name GENERATE_RBF_FILE ON + +# Signal Tap Assignments +# ====================== +set_global_assignment -name ENABLE_SIGNALTAP ON +set_global_assignment -name USE_SIGNALTAP_FILE core/stp1.stp + +# Power Estimation Assignments +# ============================ +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)" + +# Advanced I/O Timing Assignments +# =============================== +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall + +# --------------------- +# start ENTITY(apf_top) + + # Fitter Assignments + # ================== +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank0[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_we_n +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_lb_n +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[10] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[11] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[13] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[15] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to bist +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to port_tran_si_dir +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to port_tran_si +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to port_tran_sd_dir +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to port_tran_sd +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to port_tran_sck_dir +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to port_tran_sck +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_pin30_dir +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank1[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank1[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank1[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank1[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank1[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank1[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank0_dir +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank0[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank0[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank0[6] +set_instance_assignment -name IO_STANDARD "1.8 V" -to vblank +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_ub_n +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_oe_n +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[8] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[9] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[10] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[11] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[12] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[13] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[14] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_dq[15] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[8] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[9] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[12] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[14] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to sram_a[16] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to port_tran_so_dir +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to clk_74a +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank3_dir +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank3[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank3[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank3[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank3[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank3[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank3[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank3[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank3[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank2_dir +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank2[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank2[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank2[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank2[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank2[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank2[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank2[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank2[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank1_dir +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank1[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_bank1[2] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vs +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_skip +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_hs +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_de +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_clk +set_instance_assignment -name IO_STANDARD "1.8 V" -to bridge_spimosi +set_instance_assignment -name IO_STANDARD "1.8 V" -to bridge_spimiso +set_instance_assignment -name IO_STANDARD "1.8 V" -to bridge_spiclk +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_audmclk +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_audlrck +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_auddac +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_audadc +set_instance_assignment -name IO_STANDARD "1.8 V" -to port_tran_so +set_instance_assignment -name IO_STANDARD "1.8 V" -to port_ir_tx +set_instance_assignment -name IO_STANDARD "1.8 V" -to port_ir_rx +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_we_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_ras_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[0] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[1] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[2] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[3] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[4] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[5] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[6] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[7] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[8] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[9] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[10] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[11] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[12] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[13] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[14] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dq[15] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_clk +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_cke +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_cas_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_ba[0] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_ba[1] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[0] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[1] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[2] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[3] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[4] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[5] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[6] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[7] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[8] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[9] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[10] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[11] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_a[12] +set_instance_assignment -name IO_STANDARD "1.8 V" -to clk_74b +set_instance_assignment -name IO_STANDARD "1.8 V" -to cart_tran_pin31 +set_instance_assignment -name IO_STANDARD "1.8 V" -to cart_tran_pin30 +set_instance_assignment -name IO_STANDARD "1.8 V" -to bridge_spiss +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_we_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_wait +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_ub_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_oe_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_lb_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[0] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[1] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[2] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[3] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[4] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[5] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[6] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[7] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[8] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[9] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[10] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[11] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[12] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[13] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[14] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_dq[15] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_cre +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_clk +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_ce1_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_ce0_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_adv_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_a[16] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_a[17] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_a[18] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_a[19] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_a[20] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram0_a[21] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_we_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_ub_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_lb_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[0] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[1] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[2] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[8] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[9] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_clk +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_ce0_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_a[16] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_a[17] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_a[18] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_a[19] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_a[20] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_a[21] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_wait +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_oe_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[3] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[4] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[5] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[6] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[7] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[10] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[11] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[12] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[13] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[14] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_dq[15] +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_cre +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_ce1_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to cram1_adv_n +set_instance_assignment -name IO_STANDARD "1.8 V" -to user1 +set_instance_assignment -name IO_STANDARD "1.8 V" -to user2 +set_instance_assignment -name IO_STANDARD "1.8 V" -to dbg_rx +set_instance_assignment -name IO_STANDARD "1.8 V" -to dbg_tx +set_instance_assignment -name IO_STANDARD "1.8 V" -to bridge_1wire +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[11] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[10] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[9] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[8] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[7] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[6] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[5] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[4] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[3] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[2] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[1] +set_instance_assignment -name IO_STANDARD "1.8 V" -to scal_vid[0] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dqm[0] +set_instance_assignment -name IO_STANDARD "1.8 V" -to dram_dqm[1] +set_instance_assignment -name IO_STANDARD "1.8 V" -to aux_sda +set_instance_assignment -name IO_STANDARD "1.8 V" -to aux_scl +set_instance_assignment -name IO_STANDARD "1.8 V" -to cart_pin30_pwroff_reset +set_instance_assignment -name IO_STANDARD "1.8 V" -to port_ir_rx_disable +set_instance_assignment -name IO_STANDARD "1.8 V" -to vpll_feed +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to cart_tran_pin31_dir +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to cram0_clk +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to dram_clk +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_audmclk +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_auddac +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_audlrck +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to vpll_feed +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to cram1_clk +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_clk +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dqm[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dqm[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[4] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[5] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[6] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[7] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[8] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[9] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[10] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[11] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[12] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[13] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[14] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[15] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_we_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_cas_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_ras_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_dq[15] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_cke +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[12] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_ba[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_ba[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[4] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[5] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[6] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[7] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[8] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[9] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[10] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to dram_a[11] +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to dbg_tx +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_we_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_wait +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_ub_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_oe_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_lb_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[4] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[5] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[6] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[7] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[8] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[9] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[10] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[11] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[12] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[13] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_dq[14] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_cre +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_ce1_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_ce0_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_adv_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_a[16] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_a[17] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_a[18] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_a[19] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_a[20] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram1_a[21] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_we_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_wait +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_ub_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_oe_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_lb_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[4] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[5] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[6] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[7] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[8] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[9] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[10] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[11] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[12] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[13] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[14] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_dq[15] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_cre +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_ce1_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_ce0_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_adv_n +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_a[16] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_a[17] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_a[18] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_a[19] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_a[20] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cram0_a[21] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cart_tran_pin31 +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cart_tran_pin30 +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to cart_pin30_pwroff_reset +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to bridge_spimosi +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to bridge_spimiso +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to bridge_1wire +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to aux_sda +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to aux_scl +set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to bridge_spiclk +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_de +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vs +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[0] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[1] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[2] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[3] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[4] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[5] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[6] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[7] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[8] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[9] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[10] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_vid[11] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_hs +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to scal_skip +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to port_tran_so +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to port_ir_tx +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to port_ir_rx_disable +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to port_ir_rx + + # start DESIGN_PARTITION(Top) + # --------------------------- + + # Incremental Compilation Assignments + # =================================== +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 + + # end DESIGN_PARTITION(Top) + # ------------------------- + +# end ENTITY(apf_top) +# ------------------- + +# ------------------------ +# start ENTITY(mf_pllbase) + + # Project-Wide Assignments + # ======================== + +# end ENTITY(mf_pllbase) +# ---------------------- + +# ----------------------------- +# start ENTITY(mf_pllbase_0002) + + # Project-Wide Assignments + # ======================== + +# end ENTITY(mf_pllbase_0002) +# --------------------------- +set_global_assignment -name VERILOG_FILE core/data_loader_8.v +set_global_assignment -name SYSTEMVERILOG_FILE core/core_top.sv +set_global_assignment -name VHDL_FILE core/rtl/altera/ram_1k.vhd +set_global_assignment -name VHDL_FILE core/rtl/T65/T65_Pack.vhd +set_global_assignment -name VHDL_FILE core/rtl/T65/T65_MCode.vhd +set_global_assignment -name VHDL_FILE core/rtl/T65/T65_ALU.vhd +set_global_assignment -name VHDL_FILE core/rtl/T65/T65.vhd +set_global_assignment -name VHDL_FILE core/rtl/ovo.vhd +set_global_assignment -name VHDL_FILE core/rtl/llander_vtg.vhd +set_global_assignment -name VHDL_FILE core/rtl/llander_vg.vhd +set_global_assignment -name VHDL_FILE core/rtl/llander_top.vhd +set_global_assignment -name VHDL_FILE core/rtl/llander_ram.vhd +set_global_assignment -name VHDL_FILE core/rtl/llander.vhd +set_global_assignment -name VHDL_FILE core/rtl/dpram.vhd +set_global_assignment -name VHDL_FILE core/rtl/deltasigma.vhd +set_global_assignment -name VHDL_FILE core/rtl/base_pack.vhd +set_global_assignment -name VHDL_FILE core/rtl/asteroids_dw.vhd +set_global_assignment -name QIP_FILE core/rtl/altera/RAM256.qip +set_global_assignment -name QIP_FILE apf/apf.qip +set_global_assignment -name QIP_FILE apf/mf_ddio_bidir_12.qip +set_global_assignment -name VERILOG_FILE core/core_bridge_cmd.v +set_global_assignment -name SDC_FILE core/core_constraints.sdc +set_global_assignment -name SIGNALTAP_FILE core/stp1.stp +set_global_assignment -name QIP_FILE core/mf_pllbase.qip +set_global_assignment -name SIP_FILE core/mf_pllbase.sip +set_global_assignment -name SLD_FILE db/stp1_auto_stripped.stp +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/src/fpga/ap_core_assignment_defaults.qdf b/src/fpga/ap_core_assignment_defaults.qdf new file mode 100644 index 0000000..0a4dbc0 --- /dev/null +++ b/src/fpga/ap_core_assignment_defaults.qdf @@ -0,0 +1,806 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 2022 Intel Corporation. All rights reserved. +# Your use of Intel Corporation's design tools, logic functions +# and other software and tools, and any 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, at +# https://fpgasoftware.intel.com/eula. +# +# -------------------------------------------------------------------------- # +# +# Quartus Prime +# Version 21.1.1 Build 850 06/23/2022 SJ Lite Edition +# Date created = 19:36:42 September 09, 2022 +# +# -------------------------------------------------------------------------- # +# +# Note: +# +# 1) Do not modify this file. This file was generated +# automatically by the Quartus Prime software and is used +# to preserve global assignments across Quartus Prime versions. +# +# -------------------------------------------------------------------------- # + +set_global_assignment -name IP_COMPONENT_REPORT_HIERARCHY Off +set_global_assignment -name IP_COMPONENT_INTERNAL Off +set_global_assignment -name PROJECT_SHOW_ENTITY_NAME On +set_global_assignment -name PROJECT_USE_SIMPLIFIED_NAMES Off +set_global_assignment -name ENABLE_REDUCED_MEMORY_MODE Off +set_global_assignment -name VER_COMPATIBLE_DB_DIR export_db +set_global_assignment -name AUTO_EXPORT_VER_COMPATIBLE_DB Off +set_global_assignment -name FLOW_DISABLE_ASSEMBLER Off +set_global_assignment -name FLOW_ENABLE_POWER_ANALYZER Off +set_global_assignment -name FLOW_ENABLE_HC_COMPARE Off +set_global_assignment -name HC_OUTPUT_DIR hc_output +set_global_assignment -name SAVE_MIGRATION_INFO_DURING_COMPILATION Off +set_global_assignment -name FLOW_ENABLE_IO_ASSIGNMENT_ANALYSIS Off +set_global_assignment -name RUN_FULL_COMPILE_ON_DEVICE_CHANGE On +set_global_assignment -name FLOW_ENABLE_RTL_VIEWER Off +set_global_assignment -name READ_OR_WRITE_IN_BYTE_ADDRESS "Use global settings" +set_global_assignment -name FLOW_HARDCOPY_DESIGN_READINESS_CHECK On +set_global_assignment -name FLOW_ENABLE_PARALLEL_MODULES On +set_global_assignment -name ENABLE_COMPACT_REPORT_TABLE Off +set_global_assignment -name REVISION_TYPE Base -family "Arria V" +set_global_assignment -name REVISION_TYPE Base -family "Stratix V" +set_global_assignment -name REVISION_TYPE Base -family "Arria V GZ" +set_global_assignment -name REVISION_TYPE Base -family "Cyclone V" +set_global_assignment -name DEFAULT_HOLD_MULTICYCLE "Same as Multicycle" +set_global_assignment -name CUT_OFF_PATHS_BETWEEN_CLOCK_DOMAINS On +set_global_assignment -name CUT_OFF_READ_DURING_WRITE_PATHS On +set_global_assignment -name CUT_OFF_IO_PIN_FEEDBACK On +set_global_assignment -name DO_COMBINED_ANALYSIS Off +set_global_assignment -name TDC_AGGRESSIVE_HOLD_CLOSURE_EFFORT Off +set_global_assignment -name ENABLE_HPS_INTERNAL_TIMING Off +set_global_assignment -name EMIF_SOC_PHYCLK_ADVANCE_MODELING Off +set_global_assignment -name USE_DLL_FREQUENCY_FOR_DQS_DELAY_CHAIN Off +set_global_assignment -name ANALYZE_LATCHES_AS_SYNCHRONOUS_ELEMENTS On +set_global_assignment -name TIMING_ANALYZER_REPORT_SCRIPT_INCLUDE_DEFAULT_ANALYSIS On +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS Off -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS Off -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone V" +set_global_assignment -name TIMING_ANALYZER_DO_REPORT_TIMING Off +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Cyclone V" +set_global_assignment -name TIMING_ANALYZER_REPORT_NUM_WORST_CASE_TIMING_PATHS 100 +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL Off -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL Off -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone V" +set_global_assignment -name OPTIMIZATION_MODE Balanced +set_global_assignment -name ALLOW_REGISTER_MERGING On +set_global_assignment -name ALLOW_REGISTER_DUPLICATION On +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER ON -family "Cyclone 10 LP" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX 10" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Stratix IV" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone IV E" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER ON -family "Arria 10" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Stratix V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria V GZ" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX II" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria II GX" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria II GZ" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone IV GX" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone V" +set_global_assignment -name MUX_RESTRUCTURE Auto +set_global_assignment -name MLAB_ADD_TIMING_CONSTRAINTS_FOR_MIXED_PORT_FEED_THROUGH_MODE_SETTING_DONT_CARE Off +set_global_assignment -name ENABLE_IP_DEBUG Off +set_global_assignment -name SAVE_DISK_SPACE On +set_global_assignment -name OCP_HW_EVAL Enable +set_global_assignment -name DEVICE_FILTER_PACKAGE Any +set_global_assignment -name DEVICE_FILTER_PIN_COUNT Any +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE Any +set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "" +set_global_assignment -name VERILOG_INPUT_VERSION Verilog_2001 +set_global_assignment -name VHDL_INPUT_VERSION VHDL_1993 +set_global_assignment -name FAMILY "Cyclone V" +set_global_assignment -name TRUE_WYSIWYG_FLOW Off +set_global_assignment -name SMART_COMPILE_IGNORES_TDC_FOR_STRATIX_PLL_CHANGES Off +set_global_assignment -name STATE_MACHINE_PROCESSING Auto +set_global_assignment -name SAFE_STATE_MACHINE Off +set_global_assignment -name EXTRACT_VERILOG_STATE_MACHINES On +set_global_assignment -name EXTRACT_VHDL_STATE_MACHINES On +set_global_assignment -name IGNORE_VERILOG_INITIAL_CONSTRUCTS Off +set_global_assignment -name VERILOG_CONSTANT_LOOP_LIMIT 5000 +set_global_assignment -name VERILOG_NON_CONSTANT_LOOP_LIMIT 250 +set_global_assignment -name INFER_RAMS_FROM_RAW_LOGIC On +set_global_assignment -name PARALLEL_SYNTHESIS On +set_global_assignment -name DSP_BLOCK_BALANCING Auto +set_global_assignment -name MAX_BALANCING_DSP_BLOCKS "-1 (Unlimited)" +set_global_assignment -name NOT_GATE_PUSH_BACK On +set_global_assignment -name ALLOW_POWER_UP_DONT_CARE On +set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS Off +set_global_assignment -name REMOVE_DUPLICATE_REGISTERS On +set_global_assignment -name IGNORE_CARRY_BUFFERS Off +set_global_assignment -name IGNORE_CASCADE_BUFFERS Off +set_global_assignment -name IGNORE_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_ROW_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_LCELL_BUFFERS Off +set_global_assignment -name MAX7000_IGNORE_LCELL_BUFFERS AUTO +set_global_assignment -name IGNORE_SOFT_BUFFERS On +set_global_assignment -name MAX7000_IGNORE_SOFT_BUFFERS Off +set_global_assignment -name LIMIT_AHDL_INTEGERS_TO_32_BITS Off +set_global_assignment -name AUTO_GLOBAL_CLOCK_MAX On +set_global_assignment -name AUTO_GLOBAL_OE_MAX On +set_global_assignment -name MAX_AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name AUTO_IMPLEMENT_IN_ROM Off +set_global_assignment -name APEX20K_TECHNOLOGY_MAPPER Lut +set_global_assignment -name OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAX7000_OPTIMIZATION_TECHNIQUE Speed +set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MERCURY_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX6K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX10K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name ALLOW_XOR_GATE_USAGE On +set_global_assignment -name AUTO_LCELL_INSERTION On +set_global_assignment -name CARRY_CHAIN_LENGTH 48 +set_global_assignment -name FLEX6K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name FLEX10K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name MERCURY_CARRY_CHAIN_LENGTH 48 +set_global_assignment -name STRATIX_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name STRATIXII_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name CASCADE_CHAIN_LENGTH 2 +set_global_assignment -name PARALLEL_EXPANDER_CHAIN_LENGTH 16 +set_global_assignment -name MAX7000_PARALLEL_EXPANDER_CHAIN_LENGTH 4 +set_global_assignment -name AUTO_CARRY_CHAINS On +set_global_assignment -name AUTO_CASCADE_CHAINS On +set_global_assignment -name AUTO_PARALLEL_EXPANDERS On +set_global_assignment -name AUTO_OPEN_DRAIN_PINS On +set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP Off +set_global_assignment -name AUTO_ROM_RECOGNITION On +set_global_assignment -name AUTO_RAM_RECOGNITION On +set_global_assignment -name AUTO_DSP_RECOGNITION On +set_global_assignment -name AUTO_SHIFT_REGISTER_RECOGNITION Auto +set_global_assignment -name ALLOW_SHIFT_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name AUTO_CLOCK_ENABLE_RECOGNITION On +set_global_assignment -name STRICT_RAM_RECOGNITION Off +set_global_assignment -name ALLOW_SYNCH_CTRL_USAGE On +set_global_assignment -name FORCE_SYNCH_CLEAR Off +set_global_assignment -name AUTO_RAM_BLOCK_BALANCING On +set_global_assignment -name AUTO_RAM_TO_LCELL_CONVERSION Off +set_global_assignment -name AUTO_RESOURCE_SHARING Off +set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION Off +set_global_assignment -name MAX7000_FANIN_PER_CELL 100 +set_global_assignment -name USE_LOGICLOCK_CONSTRAINTS_IN_BALANCING On +set_global_assignment -name MAX_RAM_BLOCKS_M512 "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_M4K "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_MRAM "-1 (Unlimited)" +set_global_assignment -name IGNORE_TRANSLATE_OFF_AND_SYNTHESIS_OFF Off +set_global_assignment -name STRATIXGX_BYPASS_REMAPPING_OF_FORCE_SIGNAL_DETECT_SIGNAL_THRESHOLD_SELECT Off +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria II GZ" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone 10 LP" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "MAX 10" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Stratix IV" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone IV E" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria 10" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Stratix V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria V GZ" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria II GX" +set_global_assignment -name REPORT_PARAMETER_SETTINGS On +set_global_assignment -name REPORT_SOURCE_ASSIGNMENTS On +set_global_assignment -name REPORT_CONNECTIVITY_CHECKS On +set_global_assignment -name IGNORE_MAX_FANOUT_ASSIGNMENTS Off +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone 10 LP" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX 10" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone IV E" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Stratix IV" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria 10" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Stratix V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX II" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria V GZ" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria II GX" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria II GZ" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone IV GX" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Cyclone V" +set_global_assignment -name OPTIMIZE_POWER_DURING_SYNTHESIS "Normal compilation" +set_global_assignment -name HDL_MESSAGE_LEVEL Level2 +set_global_assignment -name USE_HIGH_SPEED_ADDER Auto +set_global_assignment -name NUMBER_OF_PROTECTED_REGISTERS_REPORTED 100 +set_global_assignment -name NUMBER_OF_REMOVED_REGISTERS_REPORTED 5000 +set_global_assignment -name NUMBER_OF_SYNTHESIS_MIGRATION_ROWS 5000 +set_global_assignment -name SYNTHESIS_S10_MIGRATION_CHECKS Off +set_global_assignment -name NUMBER_OF_SWEPT_NODES_REPORTED 5000 +set_global_assignment -name NUMBER_OF_INVERTED_REGISTERS_REPORTED 100 +set_global_assignment -name SYNTH_CLOCK_MUX_PROTECTION On +set_global_assignment -name SYNTH_GATED_CLOCK_CONVERSION Off +set_global_assignment -name BLOCK_DESIGN_NAMING Auto +set_global_assignment -name SYNTH_PROTECT_SDC_CONSTRAINT Off +set_global_assignment -name SYNTHESIS_EFFORT Auto +set_global_assignment -name SHIFT_REGISTER_RECOGNITION_ACLR_SIGNAL On +set_global_assignment -name PRE_MAPPING_RESYNTHESIS Off +set_global_assignment -name SYNTH_MESSAGE_LEVEL Medium +set_global_assignment -name DISABLE_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GZ" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone 10 LP" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "MAX 10" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix IV" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV E" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria 10" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria V GZ" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GX" +set_global_assignment -name MAX_LABS "-1 (Unlimited)" +set_global_assignment -name RBCGEN_CRITICAL_WARNING_TO_ERROR On +set_global_assignment -name MAX_NUMBER_OF_REGISTERS_FROM_UNINFERRED_RAMS "-1 (Unlimited)" +set_global_assignment -name AUTO_PARALLEL_SYNTHESIS On +set_global_assignment -name PRPOF_ID Off +set_global_assignment -name DISABLE_DSP_NEGATE_INFERENCING Off +set_global_assignment -name REPORT_PARAMETER_SETTINGS_PRO On +set_global_assignment -name REPORT_SOURCE_ASSIGNMENTS_PRO On +set_global_assignment -name ENABLE_STATE_MACHINE_INFERENCE Off +set_global_assignment -name FLEX10K_ENABLE_LOCK_OUTPUT Off +set_global_assignment -name AUTO_MERGE_PLLS On +set_global_assignment -name IGNORE_MODE_FOR_MERGE Off +set_global_assignment -name TXPMA_SLEW_RATE Low +set_global_assignment -name ADCE_ENABLED Auto +set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL Normal +set_global_assignment -name ROUTER_CLOCKING_TOPOLOGY_ANALYSIS Off +set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name ROUTER_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name FIT_ATTEMPTS_TO_SKIP 0.0 +set_global_assignment -name PHYSICAL_SYNTHESIS Off +set_global_assignment -name ECO_ALLOW_ROUTING_CHANGES Off +set_global_assignment -name DEVICE AUTO +set_global_assignment -name BASE_PIN_OUT_FILE_ON_SAMEFRAME_DEVICE Off +set_global_assignment -name ENABLE_JTAG_BST_SUPPORT Off +set_global_assignment -name MAX7000_ENABLE_JTAG_BST_SUPPORT On +set_global_assignment -name ENABLE_NCEO_OUTPUT Off +set_global_assignment -name RESERVE_NCEO_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name STRATIXIII_UPDATE_MODE Standard +set_global_assignment -name STRATIX_UPDATE_MODE Standard +set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "Single Image" +set_global_assignment -name CVP_MODE Off +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria V" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria 10" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Stratix V" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria V GZ" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Cyclone V" +set_global_assignment -name VID_OPERATION_MODE "PMBus Slave" +set_global_assignment -name USE_CONF_DONE AUTO +set_global_assignment -name USE_PWRMGT_SCL AUTO +set_global_assignment -name USE_PWRMGT_SDA AUTO +set_global_assignment -name USE_PWRMGT_ALERT AUTO +set_global_assignment -name USE_INIT_DONE AUTO +set_global_assignment -name USE_CVP_CONFDONE AUTO +set_global_assignment -name USE_SEU_ERROR AUTO +set_global_assignment -name RESERVE_AVST_CLK_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_VALID_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_DATA15_THROUGH_DATA0_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_DATA31_THROUGH_DATA16_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name STRATIXIII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name MAX10FPGA_CONFIGURATION_SCHEME "Internal Configuration" +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name STRATIXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONEII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name APEX20K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name STRATIX_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name MERCURY_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX6K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX10K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name APEXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name USER_START_UP_CLOCK Off +set_global_assignment -name ENABLE_UNUSED_RX_CLOCK_WORKAROUND Off +set_global_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL Off +set_global_assignment -name IGNORE_HSSI_COLUMN_POWER_WHEN_PRESERVING_UNUSED_XCVR_CHANNELS On +set_global_assignment -name AUTO_RESERVE_CLKUSR_FOR_CALIBRATION On +set_global_assignment -name DEVICE_INITIALIZATION_CLOCK INIT_INTOSC +set_global_assignment -name ENABLE_VREFA_PIN Off +set_global_assignment -name ENABLE_VREFB_PIN Off +set_global_assignment -name ALWAYS_ENABLE_INPUT_BUFFERS Off +set_global_assignment -name ENABLE_ASMI_FOR_FLASH_LOADER Off +set_global_assignment -name ENABLE_DEVICE_WIDE_RESET Off +set_global_assignment -name ENABLE_DEVICE_WIDE_OE Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "As output driving ground" +set_global_assignment -name ENABLE_INIT_DONE_OUTPUT Off +set_global_assignment -name INIT_DONE_OPEN_DRAIN On +set_global_assignment -name RESERVE_NWS_NRS_NCS_CS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_RDYNBUSY_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA31_THROUGH_DATA16_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA15_THROUGH_DATA8_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA2_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA5_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_OTHER_AP_PINS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name ENABLE_CONFIGURATION_PINS On +set_global_assignment -name ENABLE_JTAG_PIN_SHARING Off +set_global_assignment -name ENABLE_NCE_PIN Off +set_global_assignment -name ENABLE_BOOT_SEL_PIN On +set_global_assignment -name CRC_ERROR_CHECKING Off +set_global_assignment -name INTERNAL_SCRUBBING Off +set_global_assignment -name PR_ERROR_OPEN_DRAIN On +set_global_assignment -name PR_READY_OPEN_DRAIN On +set_global_assignment -name ENABLE_CVP_CONFDONE Off +set_global_assignment -name CVP_CONFDONE_OPEN_DRAIN On +set_global_assignment -name ENABLE_NCONFIG_FROM_CORE On +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GZ" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone 10 LP" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "MAX 10" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix IV" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria 10" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria V GZ" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone 10 LP" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "MAX 10" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Stratix IV" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria 10" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off -family "MAX V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Stratix V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria V GZ" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off -family "MAX II" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria II GZ" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone V" +set_global_assignment -name BLOCK_RAM_TO_MLAB_CELL_CONVERSION On +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_POWER_UP_CONDITIONS Auto +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_PAUSED_READ_CAPABILITIES Care +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Stratix IV" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Arria 10" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Stratix V" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Arria V GZ" +set_global_assignment -name PROGRAMMABLE_POWER_MAXIMUM_HIGH_SPEED_FRACTION_OF_USED_LAB_TILES 1.0 +set_global_assignment -name GUARANTEE_MIN_DELAY_CORNER_IO_ZERO_HOLD_TIME On +set_global_assignment -name OPTIMIZE_POWER_DURING_FITTING "Normal compilation" +set_global_assignment -name OPTIMIZE_SSN Off +set_global_assignment -name OPTIMIZE_TIMING "Normal compilation" +set_global_assignment -name ECO_OPTIMIZE_TIMING Off +set_global_assignment -name ECO_REGENERATE_REPORT Off +set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING Normal +set_global_assignment -name FIT_ONLY_ONE_ATTEMPT Off +set_global_assignment -name FINAL_PLACEMENT_OPTIMIZATION Automatically +set_global_assignment -name FITTER_AGGRESSIVE_ROUTABILITY_OPTIMIZATION Automatically +set_global_assignment -name SEED 1 +set_global_assignment -name PERIPHERY_TO_CORE_PLACEMENT_AND_ROUTING_OPTIMIZATION OFF +set_global_assignment -name RESERVE_ROUTING_OUTPUT_FLEXIBILITY Off +set_global_assignment -name SLOW_SLEW_RATE Off +set_global_assignment -name PCI_IO Off +set_global_assignment -name TURBO_BIT On +set_global_assignment -name WEAK_PULL_UP_RESISTOR Off +set_global_assignment -name ENABLE_BUS_HOLD_CIRCUITRY Off +set_global_assignment -name AUTO_GLOBAL_MEMORY_CONTROLS Off +set_global_assignment -name MIGRATION_CONSTRAIN_CORE_RESOURCES On +set_global_assignment -name QII_AUTO_PACKED_REGISTERS Auto +set_global_assignment -name AUTO_PACKED_REGISTERS_MAX Auto +set_global_assignment -name NORMAL_LCELL_INSERT On +set_global_assignment -name CARRY_OUT_PINS_LCELL_INSERT On +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone 10 LP" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX 10" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Stratix IV" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone IV E" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria 10" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Stratix V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX II" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria V GZ" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria II GX" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria II GZ" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone IV GX" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone V" +set_global_assignment -name AUTO_DELAY_CHAINS_FOR_HIGH_FANOUT_INPUT_PINS OFF +set_global_assignment -name XSTL_INPUT_ALLOW_SE_BUFFER Off +set_global_assignment -name TREAT_BIDIR_AS_OUTPUT Off +set_global_assignment -name AUTO_TURBO_BIT ON +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC Off +set_global_assignment -name PHYSICAL_SYNTHESIS_LOG_FILE Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION Off +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING Off +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING Off +set_global_assignment -name IO_PLACEMENT_OPTIMIZATION On +set_global_assignment -name ALLOW_LVTTL_LVCMOS_INPUT_LEVELS_TO_OVERDRIVE_INPUT_BUFFER Off +set_global_assignment -name OVERRIDE_DEFAULT_ELECTROMIGRATION_PARAMETERS Off +set_global_assignment -name FITTER_EFFORT "Auto Fit" +set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN 0ns +set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT Normal +set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION Auto +set_global_assignment -name ROUTER_REGISTER_DUPLICATION Auto +set_global_assignment -name STRATIXGX_ALLOW_CLOCK_FANOUT_WITH_ANALOG_RESET Off +set_global_assignment -name AUTO_GLOBAL_CLOCK On +set_global_assignment -name AUTO_GLOBAL_OE On +set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name FITTER_EARLY_TIMING_ESTIMATE_MODE Realistic +set_global_assignment -name STRATIXGX_ALLOW_GIGE_UNDER_FULL_DATARATE_RANGE Off +set_global_assignment -name STRATIXGX_ALLOW_RX_CORECLK_FROM_NON_RX_CLKOUT_SOURCE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_PARALLEL_LOOPBACK_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_IN_SINGLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITHOUT_8B10B Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_POST8B10B_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_REVERSE_PARALLEL_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_USE_OF_GXB_COUPLED_IOS Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF_WITH_PLL Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_WEAK_PULLUP "As input tri-stated with weak pull-up" +set_global_assignment -name ENABLE_HOLD_BACK_OFF On +set_global_assignment -name CONFIGURATION_VCCIO_LEVEL Auto +set_global_assignment -name FORCE_CONFIGURATION_VCCIO Off +set_global_assignment -name SYNCHRONIZER_IDENTIFICATION Auto +set_global_assignment -name ENABLE_BENEFICIAL_SKEW_OPTIMIZATION On +set_global_assignment -name OPTIMIZE_FOR_METASTABILITY On +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria V" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "Cyclone 10 LP" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "MAX 10" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "Cyclone IV E" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria 10" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Stratix V" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria V GZ" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Cyclone V" +set_global_assignment -name MAX_GLOBAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_REGIONAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_PERIPHERY_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria 10" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Stratix V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz -family "Cyclone IV GX" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria V GZ" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Cyclone V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz -family "Arria II GX" +set_global_assignment -name M144K_BLOCK_READ_CLOCK_DUTY_CYCLE_DEPENDENCY Off +set_global_assignment -name STRATIXIII_MRAM_COMPATIBILITY On +set_global_assignment -name FORCE_FITTER_TO_AVOID_PERIPHERY_PLACEMENT_WARNINGS Off +set_global_assignment -name AUTO_C3_M9K_BIT_SKIP Off +set_global_assignment -name PR_DONE_OPEN_DRAIN On +set_global_assignment -name NCEO_OPEN_DRAIN On +set_global_assignment -name ENABLE_CRC_ERROR_PIN Off +set_global_assignment -name ENABLE_PR_PINS Off +set_global_assignment -name RESERVE_PR_PINS Off +set_global_assignment -name CONVERT_PR_WARNINGS_TO_ERRORS Off +set_global_assignment -name PR_PINS_OPEN_DRAIN Off +set_global_assignment -name CLAMPING_DIODE Off +set_global_assignment -name TRI_STATE_SPI_PINS Off +set_global_assignment -name UNUSED_TSD_PINS_GND Off +set_global_assignment -name IMPLEMENT_MLAB_IN_16_BIT_DEEP_MODE Off +set_global_assignment -name FORM_DDR_CLUSTERING_CLIQUE Off +set_global_assignment -name ALM_REGISTER_PACKING_EFFORT Medium +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria V" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION Off -family "Stratix IV" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria 10" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Stratix V" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria V GZ" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Cyclone V" +set_global_assignment -name RELATIVE_NEUTRON_FLUX 1.0 +set_global_assignment -name SEU_FIT_REPORT Off +set_global_assignment -name HYPER_RETIMER Off -family "Arria 10" +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ADD_PIPELINING_MAX "-1" +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ASYNCH_CLEAR Auto +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_USER_PRESERVE_RESTRICTION Auto +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_DSP_BLOCKS On +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_RAM_BLOCKS On +set_global_assignment -name EDA_SIMULATION_TOOL "" +set_global_assignment -name EDA_TIMING_ANALYSIS_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TIMING_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SYMBOL_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SIGNAL_INTEGRITY_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_BOUNDARY_SCAN_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TOOL "" +set_global_assignment -name EDA_FORMAL_VERIFICATION_TOOL "" +set_global_assignment -name EDA_RESYNTHESIS_TOOL "" +set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION On +set_global_assignment -name COMPRESSION_MODE Off +set_global_assignment -name CLOCK_SOURCE Internal +set_global_assignment -name CONFIGURATION_CLOCK_FREQUENCY "10 MHz" +set_global_assignment -name CONFIGURATION_CLOCK_DIVISOR 1 +set_global_assignment -name ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name FLEX6K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE Off +set_global_assignment -name FLEX10K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name MAX7000S_JTAG_USER_CODE FFFF +set_global_assignment -name STRATIX_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name APEX20K_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_JTAG_USER_CODE 7F +set_global_assignment -name MAX7000_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MAX7000_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name USE_CHECKSUM_AS_USERCODE On +set_global_assignment -name SECURITY_BIT Off +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone 10 LP" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX 10" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV E" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Stratix IV" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX V" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GZ" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV GX" +set_global_assignment -name CYCLONEIII_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIXII_CONFIGURATION_DEVICE Auto +set_global_assignment -name PWRMGT_SLAVE_DEVICE_TYPE "PV3102 or EM1130" +set_global_assignment -name PWRMGT_SLAVE_DEVICE0_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE1_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE2_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE3_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE4_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE5_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE6_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE7_ADDRESS 0000000 +set_global_assignment -name PWRMGT_VOLTAGE_OUTPUT_FORMAT "Auto discovery" +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_M 0 +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_B 0 +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_R 0 +set_global_assignment -name APEX20K_CONFIGURATION_DEVICE Auto +set_global_assignment -name MERCURY_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE Auto +set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIX_CONFIGURATION_DEVICE Auto +set_global_assignment -name APEX20K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name STRATIX_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE On +set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE Off +set_global_assignment -name GENERATE_TTF_FILE Off +set_global_assignment -name GENERATE_RBF_FILE Off +set_global_assignment -name GENERATE_HEX_FILE Off +set_global_assignment -name HEXOUT_FILE_START_ADDRESS 0 +set_global_assignment -name HEXOUT_FILE_COUNT_DIRECTION Up +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND "As output driving an unspecified signal" +set_global_assignment -name RELEASE_CLEARS_BEFORE_TRI_STATES Off +set_global_assignment -name AUTO_RESTART_CONFIGURATION On +set_global_assignment -name HARDCOPYII_POWER_ON_EXTRA_DELAY Off +set_global_assignment -name STRATIXII_MRAM_COMPATIBILITY Off +set_global_assignment -name CYCLONEII_M4K_COMPATIBILITY On +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria V" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone 10 LP" +set_global_assignment -name ENABLE_OCT_DONE On -family "MAX 10" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone IV E" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria 10" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Stratix V" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria V GZ" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria II GX" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone IV GX" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone V" +set_global_assignment -name USE_CHECKERED_PATTERN_AS_UNINITIALIZED_RAM_CONTENT OFF +set_global_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE Off +set_global_assignment -name ENABLE_AUTONOMOUS_PCIE_HIP Off +set_global_assignment -name ENABLE_ADV_SEU_DETECTION Off +set_global_assignment -name POR_SCHEME "Instant ON" +set_global_assignment -name EN_USER_IO_WEAK_PULLUP On +set_global_assignment -name EN_SPI_IO_WEAK_PULLUP On +set_global_assignment -name POF_VERIFY_PROTECT Off +set_global_assignment -name ENABLE_SPI_MODE_CHECK Off +set_global_assignment -name FORCE_SSMCLK_TO_ISMCLK On +set_global_assignment -name FALLBACK_TO_EXTERNAL_FLASH Off +set_global_assignment -name EXTERNAL_FLASH_FALLBACK_ADDRESS 0 +set_global_assignment -name GENERATE_PMSF_FILES On +set_global_assignment -name START_TIME 0ns +set_global_assignment -name SIMULATION_MODE TIMING +set_global_assignment -name AUTO_USE_SIMULATION_PDB_NETLIST Off +set_global_assignment -name ADD_DEFAULT_PINS_TO_SIMULATION_OUTPUT_WAVEFORMS On +set_global_assignment -name SETUP_HOLD_DETECTION Off +set_global_assignment -name SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off +set_global_assignment -name CHECK_OUTPUTS Off +set_global_assignment -name SIMULATION_COVERAGE On +set_global_assignment -name SIMULATION_COMPLETE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_1_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_0_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name GLITCH_DETECTION Off +set_global_assignment -name GLITCH_INTERVAL 1ns +set_global_assignment -name SIMULATOR_GENERATE_SIGNAL_ACTIVITY_FILE Off +set_global_assignment -name SIMULATION_WITH_GLITCH_FILTERING_WHEN_GENERATING_SAF On +set_global_assignment -name SIMULATION_BUS_CHANNEL_GROUPING Off +set_global_assignment -name SIMULATION_VDB_RESULT_FLUSH On +set_global_assignment -name VECTOR_COMPARE_TRIGGER_MODE INPUT_EDGE +set_global_assignment -name SIMULATION_NETLIST_VIEWER Off +set_global_assignment -name SIMULATION_INTERCONNECT_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATION_CELL_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATOR_GENERATE_POWERPLAY_VCD_FILE Off +set_global_assignment -name SIMULATOR_PVT_TIMING_MODEL_TYPE AUTO +set_global_assignment -name SIMULATION_WITH_AUTO_GLITCH_FILTERING AUTO +set_global_assignment -name DRC_TOP_FANOUT 50 +set_global_assignment -name DRC_FANOUT_EXCEEDING 30 +set_global_assignment -name DRC_GATED_CLOCK_FEED 30 +set_global_assignment -name HARDCOPY_FLOW_AUTOMATION MIGRATION_ONLY +set_global_assignment -name ENABLE_DRC_SETTINGS Off +set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES_THRESHOLD 25 +set_global_assignment -name DRC_DETAIL_MESSAGE_LIMIT 10 +set_global_assignment -name DRC_VIOLATION_MESSAGE_LIMIT 30 +set_global_assignment -name DRC_DEADLOCK_STATE_LIMIT 2 +set_global_assignment -name MERGE_HEX_FILE Off +set_global_assignment -name GENERATE_SVF_FILE Off +set_global_assignment -name GENERATE_ISC_FILE Off +set_global_assignment -name GENERATE_JAM_FILE Off +set_global_assignment -name GENERATE_JBC_FILE Off +set_global_assignment -name GENERATE_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_SVF_FILE Off +set_global_assignment -name GENERATE_CONFIG_ISC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JAM_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_HEXOUT_FILE Off +set_global_assignment -name ISP_CLAMP_STATE_DEFAULT "Tri-state" +set_global_assignment -name HPS_EARLY_IO_RELEASE Off +set_global_assignment -name SIGNALPROBE_ALLOW_OVERUSE Off +set_global_assignment -name SIGNALPROBE_DURING_NORMAL_COMPILATION Off +set_global_assignment -name POWER_DEFAULT_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_DEFAULT_INPUT_IO_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_USE_PVA On +set_global_assignment -name POWER_USE_INPUT_FILE "No File" +set_global_assignment -name POWER_USE_INPUT_FILES Off +set_global_assignment -name POWER_VCD_FILTER_GLITCHES On +set_global_assignment -name POWER_REPORT_SIGNAL_ACTIVITY Off +set_global_assignment -name POWER_REPORT_POWER_DISSIPATION Off +set_global_assignment -name POWER_USE_DEVICE_CHARACTERISTICS TYPICAL +set_global_assignment -name POWER_AUTO_COMPUTE_TJ On +set_global_assignment -name POWER_TJ_VALUE 25 +set_global_assignment -name POWER_USE_TA_VALUE 25 +set_global_assignment -name POWER_USE_CUSTOM_COOLING_SOLUTION Off +set_global_assignment -name POWER_BOARD_TEMPERATURE 25 +set_global_assignment -name POWER_HPS_ENABLE Off +set_global_assignment -name POWER_HPS_PROC_FREQ 0.0 +set_global_assignment -name ENABLE_SMART_VOLTAGE_ID Off +set_global_assignment -name IGNORE_PARTITIONS Off +set_global_assignment -name AUTO_EXPORT_INCREMENTAL_COMPILATION Off +set_global_assignment -name RAPID_RECOMPILE_ASSIGNMENT_CHECKING On +set_global_assignment -name OUTPUT_IO_TIMING_ENDPOINT "Near End" +set_global_assignment -name RTLV_REMOVE_FANOUT_FREE_REGISTERS On +set_global_assignment -name RTLV_SIMPLIFIED_LOGIC On +set_global_assignment -name RTLV_GROUP_RELATED_NODES On +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD Off +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD_TMV Off +set_global_assignment -name RTLV_GROUP_RELATED_NODES_TMV On +set_global_assignment -name EQC_CONSTANT_DFF_DETECTION On +set_global_assignment -name EQC_DUPLICATE_DFF_DETECTION On +set_global_assignment -name EQC_BBOX_MERGE On +set_global_assignment -name EQC_LVDS_MERGE On +set_global_assignment -name EQC_RAM_UNMERGING On +set_global_assignment -name EQC_DFF_SS_EMULATION On +set_global_assignment -name EQC_RAM_REGISTER_UNPACK On +set_global_assignment -name EQC_MAC_REGISTER_UNPACK On +set_global_assignment -name EQC_SET_PARTITION_BB_TO_VCC_GND On +set_global_assignment -name EQC_STRUCTURE_MATCHING On +set_global_assignment -name EQC_AUTO_BREAK_CONE On +set_global_assignment -name EQC_POWER_UP_COMPARE Off +set_global_assignment -name EQC_AUTO_COMP_LOOP_CUT On +set_global_assignment -name EQC_AUTO_INVERSION On +set_global_assignment -name EQC_AUTO_TERMINATE On +set_global_assignment -name EQC_SUB_CONE_REPORT Off +set_global_assignment -name EQC_RENAMING_RULES On +set_global_assignment -name EQC_PARAMETER_CHECK On +set_global_assignment -name EQC_AUTO_PORTSWAP On +set_global_assignment -name EQC_DETECT_DONT_CARES On +set_global_assignment -name EQC_SHOW_ALL_MAPPED_POINTS Off +set_global_assignment -name EDA_INPUT_GND_NAME GND -section_id ? +set_global_assignment -name EDA_INPUT_VCC_NAME VCC -section_id ? +set_global_assignment -name EDA_INPUT_DATA_FORMAT NONE -section_id ? +set_global_assignment -name EDA_SHOW_LMF_MAPPING_MESSAGES Off -section_id ? +set_global_assignment -name EDA_RUN_TOOL_AUTOMATICALLY Off -section_id ? +set_global_assignment -name RESYNTHESIS_RETIMING FULL -section_id ? +set_global_assignment -name RESYNTHESIS_OPTIMIZATION_EFFORT Normal -section_id ? +set_global_assignment -name RESYNTHESIS_PHYSICAL_SYNTHESIS Normal -section_id ? +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS On -section_id ? +set_global_assignment -name VCCPD_VOLTAGE 3.3V -section_id ? +set_global_assignment -name EDA_USER_COMPILED_SIMULATION_LIBRARY_DIRECTORY "" -section_id ? +set_global_assignment -name EDA_LAUNCH_CMD_LINE_TOOL Off -section_id ? +set_global_assignment -name EDA_ENABLE_IPUTF_MODE On -section_id ? +set_global_assignment -name EDA_NATIVELINK_PORTABLE_FILE_PATHS Off -section_id ? +set_global_assignment -name EDA_NATIVELINK_GENERATE_SCRIPT_ONLY Off -section_id ? +set_global_assignment -name EDA_WAIT_FOR_GUI_TOOL_COMPLETION Off -section_id ? +set_global_assignment -name EDA_TRUNCATE_LONG_HIERARCHY_PATHS Off -section_id ? +set_global_assignment -name EDA_FLATTEN_BUSES Off -section_id ? +set_global_assignment -name EDA_MAP_ILLEGAL_CHARACTERS Off -section_id ? +set_global_assignment -name EDA_GENERATE_TIMING_CLOSURE_DATA Off -section_id ? +set_global_assignment -name EDA_GENERATE_POWER_INPUT_FILE Off -section_id ? +set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS NOT_USED -section_id ? +set_global_assignment -name EDA_RTL_SIM_MODE NOT_USED -section_id ? +set_global_assignment -name EDA_MAINTAIN_DESIGN_HIERARCHY OFF -section_id ? +set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST On -section_id ? +set_global_assignment -name EDA_WRITE_DEVICE_CONTROL_PORTS Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_TCL_FILE Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_SIGNALS_TO_TCL_FILE "All Except Combinational Logic Element Outputs" -section_id ? +set_global_assignment -name EDA_ENABLE_GLITCH_FILTERING Off -section_id ? +set_global_assignment -name EDA_WRITE_NODES_FOR_POWER_ESTIMATION OFF -section_id ? +set_global_assignment -name EDA_SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off -section_id ? +set_global_assignment -name EDA_WRITER_DONT_WRITE_TOP_ENTITY Off -section_id ? +set_global_assignment -name EDA_VHDL_ARCH_NAME structure -section_id ? +set_global_assignment -name EDA_IBIS_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_EXTENDED_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_MUTUAL_COUPLING Off -section_id ? +set_global_assignment -name EDA_FORMAL_VERIFICATION_ALLOW_RETIMING Off -section_id ? +set_global_assignment -name EDA_BOARD_BOUNDARY_SCAN_OPERATION PRE_CONFIG -section_id ? +set_global_assignment -name EDA_GENERATE_RTL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_GENERATE_GATE_LEVEL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_IBIS_SPECIFICATION_VERSION 4p2 -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_OFFSET 0ns -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_DUTY_CYCLE 50 -section_id ? +set_global_assignment -name APEX20K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MAX7K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MERCURY_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX6K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX10K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name PARTITION_PRESERVE_HIGH_SPEED_TILES On -section_id ? -entity ? +set_global_assignment -name PARTITION_IGNORE_SOURCE_FILE_CHANGES Off -section_id ? -entity ? +set_global_assignment -name PARTITION_ALWAYS_USE_QXP_NETLIST Off -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_ASSIGNMENTS REPLACE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_LOGICLOCK_REGIONS UPDATE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_PROMOTE_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name ALLOW_MULTIPLE_PERSONAS Off -section_id ? -entity ? +set_global_assignment -name PARTITION_ASD_REGION_ID 1 -section_id ? -entity ? +set_global_assignment -name CROSS_BOUNDARY_OPTIMIZATIONS Off -section_id ? -entity ? +set_global_assignment -name PROPAGATE_CONSTANTS_ON_INPUTS On -section_id ? -entity ? +set_global_assignment -name PROPAGATE_INVERSIONS_ON_INPUTS On -section_id ? -entity ? +set_global_assignment -name REMOVE_LOGIC_ON_UNCONNECTED_OUTPUTS On -section_id ? -entity ? +set_global_assignment -name MERGE_EQUIVALENT_INPUTS On -section_id ? -entity ? +set_global_assignment -name MERGE_EQUIVALENT_BIDIRS On -section_id ? -entity ? +set_global_assignment -name ABSORB_PATHS_FROM_OUTPUTS_TO_INPUTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_ENABLE_STRICT_PRESERVATION Off -section_id ? -entity ? diff --git a/src/fpga/apf/apf.qip b/src/fpga/apf/apf.qip new file mode 100644 index 0000000..f6786a8 --- /dev/null +++ b/src/fpga/apf/apf.qip @@ -0,0 +1,7 @@ +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "apf_top.v"] +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "common.v"] +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "io_bridge_peripheral.v"] +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "io_pad_controller.v"] +set_global_assignment -name SDC_FILE [file join $::quartus(qip_path) "apf_constraints.sdc"] +set_global_assignment -name QIP_FILE [file join $::quartus(qip_path) "mf_ddio_bidir_12.qip"] +set_global_assignment -name QIP_FILE [file join $::quartus(qip_path) "mf_datatable.qip"] diff --git a/src/fpga/apf/apf_constraints.sdc b/src/fpga/apf/apf_constraints.sdc new file mode 100644 index 0000000..048ddcf --- /dev/null +++ b/src/fpga/apf/apf_constraints.sdc @@ -0,0 +1,20 @@ +# +# APF constraints +# Do not edit this file. +# +# Add your own constraints in the \core_constraints.sdc in the core directory, which will also be loaded. + +create_clock -name clk_74a -period 13.468 [get_ports clk_74a] +create_clock -name clk_74b -period 13.468 [get_ports clk_74b] +create_clock -name bridge_spiclk -period 13.468 [get_ports bridge_spiclk] + +# autogenerate PLL clock names for use down below +derive_pll_clocks + + +# io constraints go here +# + + +# load in user constraints +read_sdc "core/core_constraints.sdc" \ No newline at end of file diff --git a/src/fpga/apf/apf_top.v b/src/fpga/apf/apf_top.v new file mode 100644 index 0000000..e82f37b --- /dev/null +++ b/src/fpga/apf/apf_top.v @@ -0,0 +1,475 @@ +// Software License Agreement + +// The software supplied herewith by Analogue Enterprises Limited (the "Company”), +// the Analogue Pocket Framework (“APF”), is provided and licensed to you, the +// Company's customer, solely for use in designing, testing and creating +// applications for use with Company's Products or Services. The software is +// owned by the Company and/or its licensors, and is protected under applicable +// laws, including, but not limited to, U.S. copyright law. All rights are +// reserved. By using the APF code you are agreeing to the terms of the End User +// License Agreement (“EULA”) located at [https://www.analogue.link/pocket-eula] +// and incorporated herein by reference. To the extent any use of the APF requires +// application of the MIT License or the GNU General Public License and terms of +// this APF Software License Agreement and EULA are inconsistent with such license, +// the applicable terms of the MIT License or the GNU General Public License, as +// applicable, will prevail. + +// THE SOFTWARE IS PROVIDED "AS-IS" AND WE EXPRESSLY DISCLAIM ANY IMPLIED +// WARRANTIES TO THE FULLEST EXTENT PROVIDED BY LAW, INCLUDING BUT NOT LIMITED TO, +// ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR +// NON-INFRINGEMENT. TO THE EXTENT APPLICABLE LAWS PROHIBIT TERMS OF USE FROM +// DISCLAIMING ANY IMPLIED WARRANTY, SUCH IMPLIED WARRANTY SHALL BE LIMITED TO THE +// MINIMUM WARRANTY PERIOD REQUIRED BY LAW, AND IF NO SUCH PERIOD IS REQUIRED, +// THEN THIRTY (30) DAYS FROM FIRST USE OF THE SOFTWARE. WE CANNOT GUARANTEE AND +// DO NOT PROMISE ANY SPECIFIC RESULTS FROM USE OF THE SOFTWARE. WITHOUT LIMITING +// THE FOREGOING, WE DO NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR +// ERROR-FREE. IN NO EVENT WILL WE BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY +// INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL OR PUNITIVE DAMAGES, +// INCLUDING BUT NOT LIMITED TO, LOST PROFITS ARISING OUT OF YOUR USE, OR +// INABILITY TO USE, THE SOFTWARE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY +// OF SUCH DAMAGES. UNDER NO CIRCUMSTANCES SHALL OUR LIABILITY TO YOU FOR ANY +// CLAIM OR CAUSE OF ACTION WHATSOEVER, AND REGARDLESS OF THE FORM OF THE ACTION, +// WHETHER ARISING IN CONTRACT, TORT OR OTHERWISE, EXCEED THE AMOUNT PAID BY YOU +// TO US, IF ANY, DURING THE 90 DAY PERIOD IMMEDIATELY PRECEDING THE DATE ON WHICH +// YOU FIRST ASSERT ANY SUCH CLAIM. THE FOREGOING LIMITATIONS SHALL APPLY TO THE +// FULLEST EXTENT PERMITTED BY APPLICABLE LAW. +// +// 6515C - Analogue Pocket main unit +// SOCRATES FPGA +// +// 2022-08-17 Analogue + +`default_nettype none + +module apf_top ( +/////////////////////////////////////////////////// +// clock inputs 74.25mhz. not phase aligned, so treat these domains as asynchronous + +input wire clk_74a, // mainclk1 +input wire clk_74b, // mainclk1 + +/////////////////////////////////////////////////// +// cartridge interface +// switches between 3.3v and 5v mechanically +// output enable for multibit translators controlled by PIC32 + +// GBA AD[15:8] +inout wire [7:0] cart_tran_bank2, +output wire cart_tran_bank2_dir, + +// GBA AD[7:0] +inout wire [7:0] cart_tran_bank3, +output wire cart_tran_bank3_dir, + +// GBA A[23:16] +inout wire [7:0] cart_tran_bank1, +output wire cart_tran_bank1_dir, + +// GBA [7] PHI# +// GBA [6] WR# +// GBA [5] RD# +// GBA [4] CS1#/CS# +// [3:0] unwired +inout wire [7:4] cart_tran_bank0, +output wire cart_tran_bank0_dir, + +// GBA CS2#/RES# +inout wire cart_tran_pin30, +output wire cart_tran_pin30_dir, +// when GBC cart is inserted, this signal when low or weak will pull GBC /RES low with a special circuit +// the goal is that when unconfigured, the FPGA weak pullups won't interfere. +// thus, if GBC cart is inserted, FPGA must drive this high in order to let the level translators +// and general IO drive this pin. +output wire cart_pin30_pwroff_reset, + +// GBA IRQ/DRQ +inout wire cart_tran_pin31, +output wire cart_tran_pin31_dir, + +// infrared +// avoid driving the TX LED with DC or leaving it stuck on. pulsed usage is fine +input wire port_ir_rx, +output wire port_ir_tx, +output wire port_ir_rx_disable, + +// GBA link port +inout wire port_tran_si, +output wire port_tran_si_dir, +inout wire port_tran_so, +output wire port_tran_so_dir, +inout wire port_tran_sck, +output wire port_tran_sck_dir, +inout wire port_tran_sd, +output wire port_tran_sd_dir, + +/////////////////////////////////////////////////// +// video output to the scaler + +inout wire [11:0] scal_vid, +inout wire scal_clk, +inout wire scal_de, +inout wire scal_skip, +inout wire scal_vs, +inout wire scal_hs, + +output wire scal_audmclk, +input wire scal_audadc, +output wire scal_auddac, +output wire scal_audlrck, + +/////////////////////////////////////////////////// +// communication between main and scaler (aristotle) fpga. +// spi bus with aristotle as controller. + +inout wire bridge_spimosi, +inout wire bridge_spimiso, +inout wire bridge_spiclk, +input wire bridge_spiss, +inout wire bridge_1wire, + +/////////////////////////////////////////////////// +// cellular psram 0 and 1, two chips (64mbit x2 dual die per chip) + +output wire [21:16] cram0_a, +inout wire [15:0] cram0_dq, +input wire cram0_wait, +output wire cram0_clk, +output wire cram0_adv_n, +output wire cram0_cre, +output wire cram0_ce0_n, +output wire cram0_ce1_n, +output wire cram0_oe_n, +output wire cram0_we_n, +output wire cram0_ub_n, +output wire cram0_lb_n, + +output wire [21:16] cram1_a, +inout wire [15:0] cram1_dq, +input wire cram1_wait, +output wire cram1_clk, +output wire cram1_adv_n, +output wire cram1_cre, +output wire cram1_ce0_n, +output wire cram1_ce1_n, +output wire cram1_oe_n, +output wire cram1_we_n, +output wire cram1_ub_n, +output wire cram1_lb_n, + +/////////////////////////////////////////////////// +// sdram, 512mbit x16 + +output wire [12:0] dram_a, +output wire [1:0] dram_ba, +inout wire [15:0] dram_dq, +output wire [1:0] dram_dqm, +output wire dram_clk, +output wire dram_cke, +output wire dram_ras_n, +output wire dram_cas_n, +output wire dram_we_n, + +/////////////////////////////////////////////////// +// sram, 1mbit x16 + +output wire [16:0] sram_a, +inout wire [15:0] sram_dq, +output wire sram_oe_n, +output wire sram_we_n, +output wire sram_ub_n, +output wire sram_lb_n, + +/////////////////////////////////////////////////// +// vblank output to scaler + +input wire vblank, + +/////////////////////////////////////////////////// +// i/o to 6515D breakout usb uart + +output wire dbg_tx, +input wire dbg_rx, + +/////////////////////////////////////////////////// +// i/o pads near jtag connector user can solder to + +output wire user1, +input wire user2, + +/////////////////////////////////////////////////// +// powerup self test, do not use + +inout wire bist, +output wire vpll_feed, + +/////////////////////////////////////////////////// +// RFU internal i2c bus (DNU) + +inout wire aux_sda, +output wire aux_scl + +); + +assign bist = 1'bZ; + +// reset generation + + reg [24:0] count; + reg reset_n; + +initial begin + count <= 0; + reset_n <= 0; +end +always @(posedge clk_74a) begin + count <= count + 1'b1; + + if(count[15]) begin + // exit reset + reset_n <= 1; + end + +end + + + + +// convert 24-bit rgb data to 12-bit DDR for ARISTOTLE + + wire [23:0] video_rgb; + wire video_rgb_clock; + wire video_rgb_clock_90; + wire video_de; + wire video_skip; + wire video_vs; + wire video_hs; + +mf_ddio_bidir_12 isco ( + .oe ( 1'b1 ), + .datain_h ( video_rgb[23:12] ), + .datain_l ( video_rgb[11: 0] ), + .outclock ( video_rgb_clock ), + .padio ( scal_ddio_12 ) +); + +wire [11:0] scal_ddio_12; +assign scal_vid = scal_ddio_12; + +mf_ddio_bidir_12 iscc ( + .oe ( 1'b1 ), + .datain_h ( {video_vs, video_hs, video_de, video_skip} ), + .datain_l ( {video_vs, video_hs, video_de, video_skip} ), + .outclock ( video_rgb_clock ), + .padio ( scal_ddio_ctrl ) +); + +wire [3:0] scal_ddio_ctrl; +assign scal_vs = scal_ddio_ctrl[3]; +assign scal_hs = scal_ddio_ctrl[2]; +assign scal_de = scal_ddio_ctrl[1]; +assign scal_skip = scal_ddio_ctrl[0]; + +mf_ddio_bidir_12 isclk( + .oe ( 1'b1 ), + .datain_h ( 1'b1 ), + .datain_l ( 1'b0 ), + .outclock ( video_rgb_clock_90 ), + .padio ( scal_clk ) +); + + + +// controller data (pad) controller. + wire [15:0] cont1_key; + wire [15:0] cont2_key; + wire [15:0] cont3_key; + wire [15:0] cont4_key; + wire [31:0] cont1_joy; + wire [31:0] cont2_joy; + wire [31:0] cont3_joy; + wire [31:0] cont4_joy; + wire [15:0] cont1_trig; + wire [15:0] cont2_trig; + wire [15:0] cont3_trig; + wire [15:0] cont4_trig; + +io_pad_controller ipm ( + .clk ( clk_74a ), + .reset_n ( reset_n ), + + .pad_1wire ( bridge_1wire ), + + .cont1_key ( cont1_key ), + .cont2_key ( cont2_key ), + .cont3_key ( cont3_key ), + .cont4_key ( cont4_key ), + .cont1_joy ( cont1_joy ), + .cont2_joy ( cont2_joy ), + .cont3_joy ( cont3_joy ), + .cont4_joy ( cont4_joy ), + .cont1_trig ( cont1_trig ), + .cont2_trig ( cont2_trig ), + .cont3_trig ( cont3_trig ), + .cont4_trig ( cont4_trig ) +); + + +// virtual pmp bridge + wire bridge_endian_little; + wire [31:0] bridge_addr; + wire bridge_rd; + wire [31:0] bridge_rd_data; + wire bridge_wr; + wire [31:0] bridge_wr_data; + +io_bridge_peripheral ibs ( + + .clk ( clk_74a ), + .reset_n ( reset_n ), + + .endian_little ( bridge_endian_little ), + + .pmp_addr ( bridge_addr ), + .pmp_rd ( bridge_rd ), + .pmp_rd_data ( bridge_rd_data ), + .pmp_wr ( bridge_wr ), + .pmp_wr_data ( bridge_wr_data ), + + .phy_spimosi ( bridge_spimosi ), + .phy_spimiso ( bridge_spimiso ), + .phy_spiclk ( bridge_spiclk ), + .phy_spiss ( bridge_spiss ) + +); + + +/////////////////////////////////////////////////// +// instantiate the user core top-level + +core_top ic ( + + // physical connections + // + .clk_74a ( clk_74a ), + .clk_74b ( clk_74b ), + + .cart_tran_bank2 ( cart_tran_bank2 ), + .cart_tran_bank2_dir ( cart_tran_bank2_dir ), + .cart_tran_bank3 ( cart_tran_bank3 ), + .cart_tran_bank3_dir ( cart_tran_bank3_dir ), + .cart_tran_bank1 ( cart_tran_bank1 ), + .cart_tran_bank1_dir ( cart_tran_bank1_dir ), + .cart_tran_bank0 ( cart_tran_bank0 ), + .cart_tran_bank0_dir ( cart_tran_bank0_dir ), + .cart_tran_pin30 ( cart_tran_pin30 ), + .cart_tran_pin30_dir ( cart_tran_pin30_dir ), + .cart_pin30_pwroff_reset ( cart_pin30_pwroff_reset ), + .cart_tran_pin31 ( cart_tran_pin31 ), + .cart_tran_pin31_dir ( cart_tran_pin31_dir ), + + .port_ir_rx ( port_ir_rx ), + .port_ir_tx ( port_ir_tx ), + .port_ir_rx_disable ( port_ir_rx_disable ), + + .port_tran_si ( port_tran_si ), + .port_tran_si_dir ( port_tran_si_dir ), + .port_tran_so ( port_tran_so ), + .port_tran_so_dir ( port_tran_so_dir ), + .port_tran_sck ( port_tran_sck ), + .port_tran_sck_dir ( port_tran_sck_dir ), + .port_tran_sd ( port_tran_sd ), + .port_tran_sd_dir ( port_tran_sd_dir ), + + .cram0_a ( cram0_a ), + .cram0_dq ( cram0_dq ), + .cram0_wait ( cram0_wait ), + .cram0_clk ( cram0_clk ), + .cram0_adv_n ( cram0_adv_n ), + .cram0_cre ( cram0_cre ), + .cram0_ce0_n ( cram0_ce0_n ), + .cram0_ce1_n ( cram0_ce1_n ), + .cram0_oe_n ( cram0_oe_n ), + .cram0_we_n ( cram0_we_n ), + .cram0_ub_n ( cram0_ub_n ), + .cram0_lb_n ( cram0_lb_n ), + .cram1_a ( cram1_a ), + .cram1_dq ( cram1_dq ), + .cram1_wait ( cram1_wait ), + .cram1_clk ( cram1_clk ), + .cram1_adv_n ( cram1_adv_n ), + .cram1_cre ( cram1_cre ), + .cram1_ce0_n ( cram1_ce0_n ), + .cram1_ce1_n ( cram1_ce1_n ), + .cram1_oe_n ( cram1_oe_n ), + .cram1_we_n ( cram1_we_n ), + .cram1_ub_n ( cram1_ub_n ), + .cram1_lb_n ( cram1_lb_n ), + + .dram_a ( dram_a ), + .dram_ba ( dram_ba ), + .dram_dq ( dram_dq ), + .dram_dqm ( dram_dqm ), + .dram_clk ( dram_clk ), + .dram_cke ( dram_cke ), + .dram_ras_n ( dram_ras_n ), + .dram_cas_n ( dram_cas_n ), + .dram_we_n ( dram_we_n ), + + .sram_a ( sram_a ), + .sram_dq ( sram_dq ), + .sram_oe_n ( sram_oe_n ), + .sram_we_n ( sram_we_n ), + .sram_ub_n ( sram_ub_n ), + .sram_lb_n ( sram_lb_n ), + + .vblank ( vblank ), + .vpll_feed ( vpll_feed ), + + .dbg_tx ( dbg_tx ), + .dbg_rx ( dbg_rx ), + .user1 ( user1 ), + .user2 ( user2 ), + + .aux_sda ( aux_sda ), + .aux_scl ( aux_scl ), + + + // logical connections with user core + // + .video_rgb ( video_rgb ), + .video_rgb_clock ( video_rgb_clock ), + .video_rgb_clock_90 ( video_rgb_clock_90 ), + .video_de ( video_de ), + .video_skip ( video_skip ), + .video_vs ( video_vs ), + .video_hs ( video_hs ), + + .audio_mclk ( scal_audmclk ), + .audio_adc ( scal_audadc ), + .audio_dac ( scal_auddac ), + .audio_lrck ( scal_audlrck ), + + .bridge_endian_little ( bridge_endian_little ), + .bridge_addr ( bridge_addr ), + .bridge_rd ( bridge_rd ), + .bridge_rd_data ( bridge_rd_data ), + .bridge_wr ( bridge_wr ), + .bridge_wr_data ( bridge_wr_data ), + + .cont1_key ( cont1_key ), + .cont2_key ( cont2_key ), + .cont3_key ( cont3_key ), + .cont4_key ( cont4_key ), + .cont1_joy ( cont1_joy ), + .cont2_joy ( cont2_joy ), + .cont3_joy ( cont3_joy ), + .cont4_joy ( cont4_joy ), + .cont1_trig ( cont1_trig ), + .cont2_trig ( cont2_trig ), + .cont3_trig ( cont3_trig ), + .cont4_trig ( cont4_trig ) + +); + +endmodule + diff --git a/src/fpga/apf/build_id.mif b/src/fpga/apf/build_id.mif new file mode 100644 index 0000000..9d7154a --- /dev/null +++ b/src/fpga/apf/build_id.mif @@ -0,0 +1,16 @@ +-- Build ID Memory Initialization File +-- + +DEPTH = 256; +WIDTH = 32; +ADDRESS_RADIX = HEX; +DATA_RADIX = HEX; + +CONTENT +BEGIN + + 0E0 : 20220912; + 0E1 : 00094658; + 0E2 : 8f0c9934; + +END; diff --git a/src/fpga/apf/build_id_gen.tcl b/src/fpga/apf/build_id_gen.tcl new file mode 100644 index 0000000..eb598fd --- /dev/null +++ b/src/fpga/apf/build_id_gen.tcl @@ -0,0 +1,171 @@ +# ================================================================================ +# (c) 2011 Altera Corporation. All rights reserved. +# Altera products are protected under numerous U.S. and foreign patents, maskwork +# rights, copyrights and other intellectual property laws. +# +# This reference design file, and your use thereof, is subject to and governed +# by the terms and conditions of the applicable Altera Reference Design License +# Agreement (either as signed by you, agreed by you upon download or as a +# "click-through" agreement upon installation andor found at www.altera.com). +# By using this reference design file, you indicate your acceptance of such terms +# and conditions between you and Altera Corporation. In the event that you do +# not agree with such terms and conditions, you may not use the reference design +# file and please promptly destroy any copies you have made. +# +# This reference design file is being provided on an "as-is" basis and as an +# accommodation and therefore all warranties, representations or guarantees of +# any kind (whether express, implied or statutory) including, without limitation, +# warranties of merchantability, non-infringement, or fitness for a particular +# purpose, are specifically disclaimed. By making this reference design file +# available, Altera expressly does not recommend, suggest or require that this +# reference design file be used in combination with any other product not +# provided by Altera. +# ================================================================================ +# +# Build ID Verilog Module Script +# Jeff Wiencrot - 8/1/2011 +# +# Generates a Verilog module that contains a timestamp, physical address, and host name +# from the current build. These values are available from the build_date, build_time, +# physical_address, and host_name output ports of the build_id module in the build_id.v +# Verilog source file. +# +# The format for each value is as follows: +# Date - 32-bit decimal number of the format mmddyyyy +# Time - 32-bit decimal number of the format hhmmss +# Phyiscal Address - 48-bit hexadecimal number +# Host name - 120-bit hexadecimal number with pairs of digits equal to the +# hexadecimal code for the first 15 ASCII characters of the host +# name. For added clarity, host names that have fewer than 30 +# hexadecimal digits (15 characters) are padded on the left with +# zeros. +# +# Usage: +# +# To manually execute this script, source this file using the following Tcl commands: +# source build_id_verilog.tcl +# +# To have this script automatically execute each time your project is built, use the +# following command (see: http://www.altera.com/support/examples/tcl/auto_processing.html): +# set_global_assignment -name PRE_FLOW_SCRIPT_FILE quartus_sh:build_id_verilog.tcl +# +# Comment out the last line to prevent the process from automatically executing when +# the file is sourced. The process can then be executed with the following command: +# generateBuildID_Verilog +# +# +# For more information, see "build_identification.pdf" +# +# ================================================================================ +# +# 2021-01-21 Analogue +# +# Only care about generating build date/time, so the rest was removed. +# The original can be downloaded from the Intel resource page +# + +proc generateBuildID_Verilog {} { + + # Get the timestamp (see: http://www.altera.com/support/examples/tcl/tcl-date-time-stamp.html) + set buildDate [ clock format [ clock seconds ] -format %Y%m%d ] + set buildTime [ clock format [ clock seconds ] -format %H%M%S ] + + # Create a Verilog file for output + set outputFileName "apf/build_id.v" + set outputFile [open $outputFileName "w"] + + # Output the Verilog source + puts $outputFile "// Build ID Verilog Module" + puts $outputFile "//" + puts $outputFile "// Note - these are stored as binary coded decimal" + puts $outputFile "// Date: $buildDate" + puts $outputFile "// Time: $buildTime" + puts $outputFile "" + puts $outputFile "module build_id" + puts $outputFile "(" + puts $outputFile " output \[31:0\] build_date," + puts $outputFile " output \[31:0\] build_time" + puts $outputFile ");" + puts $outputFile "" + puts $outputFile " assign build_date = 32'h$buildDate;" + puts $outputFile " assign build_time = 32'h$buildTime;" + puts $outputFile "" + puts $outputFile "endmodule" + close $outputFile + + + + # Send confirmation message to the Messages window + #post_message "APF core build date/time generated: [pwd]/$outputFileName" + #post_message "Date: $buildDate" + #post_message "Time: $buildTime" +} + + +proc generateBuildID_MIF {} { + + # Get the timestamp (see: http://www.altera.com/support/examples/tcl/tcl-date-time-stamp.html) + set buildDate [ clock format [ clock seconds ] -format %Y%m%d ] + set buildTime [ clock format [ clock seconds ] -format %H%M%S ] + set buildUnique [expr {int(rand()*(4294967295))}] + + set buildDateNoLeadingZeros [string trimleft $buildDate "0"] + set buildTimeNoLeadingZeros [string trimleft $buildTime "0"] + set buildDate4Byte [format "%08d" $buildDateNoLeadingZeros] + set buildTime4Byte [format "%08d" $buildTimeNoLeadingZeros] + set buildUnique4Byte [format "%08x" $buildUnique] + + #set buildDate4Byte \ + [concat [string range $buildDate 0 1] \ + [string range $buildDate 2 3] \ + [string range $buildDate 4 5] \ + [string range $buildDate 6 7] ] + + + set buildDateNumBytes 4 + set buildTimeNumBytes 4 + + # Calculate depth of the memory (8-bit) words + set memoryDepth [expr $buildDateNumBytes + $buildTimeNumBytes] + + # Create a Memory Initialization File for output + set outputFileName "apf/build_id.mif" + set outputFile [open $outputFileName "w"] + + # Output the MIF header (see: http://quartushelp.altera.com/current/mergedProjects/reference/glossary/def_mif.htm) + puts $outputFile "-- Build ID Memory Initialization File" + puts $outputFile "--" + puts $outputFile "" + puts $outputFile "DEPTH = 256;" + puts $outputFile "WIDTH = 32;" + puts $outputFile "ADDRESS_RADIX = HEX;" + puts $outputFile "DATA_RADIX = HEX;" + puts $outputFile "" + puts $outputFile "CONTENT" + puts $outputFile "BEGIN" + puts $outputFile "" + puts $outputFile " 0E0 : $buildDate4Byte;" + puts $outputFile " 0E1 : $buildTime4Byte;" + puts $outputFile " 0E2 : $buildUnique4Byte;" + puts $outputFile "" + puts $outputFile "END;" + + # Close file to complete write + close $outputFile + + # Send confirmation message to the Messages window + post_message "APF core build date/time generated: [pwd]/$outputFileName" +} + +generateBuildID_MIF + +# 2021-01-21 Analogue +# +# There are some circumstances where you want all parts of a FPGA flow to be deterministic, especially +# when trying to hash out timing issues. +# You should comment this line out and temporarily bypass buildid generation so that synthesis/par +# have consistent working input. MIF bram contents like above won't affect the random seed or trigger +# recompilation. +# Don't forget to re-enable before you release. +# +# generateBuildID_Verilog diff --git a/src/fpga/apf/common.v b/src/fpga/apf/common.v new file mode 100644 index 0000000..6481788 --- /dev/null +++ b/src/fpga/apf/common.v @@ -0,0 +1,156 @@ +// Software License Agreement + +// The software supplied herewith by Analogue Enterprises Limited (the "Company”), +// the Analogue Pocket Framework (“APF”), is provided and licensed to you, the +// Company's customer, solely for use in designing, testing and creating +// applications for use with Company's Products or Services. The software is +// owned by the Company and/or its licensors, and is protected under applicable +// laws, including, but not limited to, U.S. copyright law. All rights are +// reserved. By using the APF code you are agreeing to the terms of the End User +// License Agreement (“EULA”) located at [https://www.analogue.link/pocket-eula] +// and incorporated herein by reference. To the extent any use of the APF requires +// application of the MIT License or the GNU General Public License and terms of +// this APF Software License Agreement and EULA are inconsistent with such license, +// the applicable terms of the MIT License or the GNU General Public License, as +// applicable, will prevail. + +// THE SOFTWARE IS PROVIDED "AS-IS" AND WE EXPRESSLY DISCLAIM ANY IMPLIED +// WARRANTIES TO THE FULLEST EXTENT PROVIDED BY LAW, INCLUDING BUT NOT LIMITED TO, +// ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR +// NON-INFRINGEMENT. TO THE EXTENT APPLICABLE LAWS PROHIBIT TERMS OF USE FROM +// DISCLAIMING ANY IMPLIED WARRANTY, SUCH IMPLIED WARRANTY SHALL BE LIMITED TO THE +// MINIMUM WARRANTY PERIOD REQUIRED BY LAW, AND IF NO SUCH PERIOD IS REQUIRED, +// THEN THIRTY (30) DAYS FROM FIRST USE OF THE SOFTWARE. WE CANNOT GUARANTEE AND +// DO NOT PROMISE ANY SPECIFIC RESULTS FROM USE OF THE SOFTWARE. WITHOUT LIMITING +// THE FOREGOING, WE DO NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR +// ERROR-FREE. IN NO EVENT WILL WE BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY +// INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL OR PUNITIVE DAMAGES, +// INCLUDING BUT NOT LIMITED TO, LOST PROFITS ARISING OUT OF YOUR USE, OR +// INABILITY TO USE, THE SOFTWARE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY +// OF SUCH DAMAGES. UNDER NO CIRCUMSTANCES SHALL OUR LIABILITY TO YOU FOR ANY +// CLAIM OR CAUSE OF ACTION WHATSOEVER, AND REGARDLESS OF THE FORM OF THE ACTION, +// WHETHER ARISING IN CONTRACT, TORT OR OTHERWISE, EXCEED THE AMOUNT PAID BY YOU +// TO US, IF ANY, DURING THE 90 DAY PERIOD IMMEDIATELY PRECEDING THE DATE ON WHICH +// YOU FIRST ASSERT ANY SUCH CLAIM. THE FOREGOING LIMITATIONS SHALL APPLY TO THE +// FULLEST EXTENT PERMITTED BY APPLICABLE LAW. +// +// 2-stage synchronizer +// +module synch_2 #(parameter WIDTH = 1) ( + input wire [WIDTH-1:0] i, // input signal + output reg [WIDTH-1:0] o, // synchronized output + input wire clk, // clock to synchronize on + output wire rise, // one-cycle rising edge pulse + output wire fall // one-cycle falling edge pulse +); + +reg [WIDTH-1:0] stage_1; +reg [WIDTH-1:0] stage_2; +reg [WIDTH-1:0] stage_3; + +assign rise = (WIDTH == 1) ? (o & ~stage_2) : 1'b0; +assign fall = (WIDTH == 1) ? (~o & stage_2) : 1'b0; +always @(posedge clk) + {stage_2, o, stage_1} <= {o, stage_1, i}; + +endmodule + + +// +// 3-stage synchronizer +// +module synch_3 #(parameter WIDTH = 1) ( + input wire [WIDTH-1:0] i, // input signal + output reg [WIDTH-1:0] o, // synchronized output + input wire clk, // clock to synchronize on + output wire rise, // one-cycle rising edge pulse + output wire fall // one-cycle falling edge pulse +); + +reg [WIDTH-1:0] stage_1; +reg [WIDTH-1:0] stage_2; +reg [WIDTH-1:0] stage_3; + +assign rise = (WIDTH == 1) ? (o & ~stage_3) : 1'b0; +assign fall = (WIDTH == 1) ? (~o & stage_3) : 1'b0; +always @(posedge clk) + {stage_3, o, stage_2, stage_1} <= {o, stage_2, stage_1, i}; + +endmodule + + +module bram_block_dp #( + parameter DATA = 32, + parameter ADDR = 7 +) ( + input wire a_clk, + input wire a_wr, + input wire [ADDR-1:0] a_addr, + input wire [DATA-1:0] a_din, + output reg [DATA-1:0] a_dout, + + input wire b_clk, + input wire b_wr, + input wire [ADDR-1:0] b_addr, + input wire [DATA-1:0] b_din, + output reg [DATA-1:0] b_dout +); + +reg [DATA-1:0] mem [(2**ADDR)-1:0]; + +always @(posedge a_clk) begin + if(a_wr) begin + a_dout <= a_din; + mem[a_addr] <= a_din; + end else + a_dout <= mem[a_addr]; +end + +always @(posedge b_clk) begin + if(b_wr) begin + b_dout <= b_din; + mem[b_addr] <= b_din; + end else + b_dout <= mem[b_addr]; +end + +endmodule + + +module bram_block_dp_nonstd #( + parameter DATA = 32, + parameter ADDR = 7, + parameter DEPTH = 128 +) ( + input wire a_clk, + input wire a_wr, + input wire [ADDR-1:0] a_addr, + input wire [DATA-1:0] a_din, + output reg [DATA-1:0] a_dout, + + input wire b_clk, + input wire b_wr, + input wire [ADDR-1:0] b_addr, + input wire [DATA-1:0] b_din, + output reg [DATA-1:0] b_dout +); + +reg [DATA-1:0] mem [DEPTH-1:0]; + +always @(posedge a_clk) begin + if(a_wr) begin + a_dout <= a_din; + mem[a_addr] <= a_din; + end else + a_dout <= mem[a_addr]; +end + +always @(posedge b_clk) begin + if(b_wr) begin + b_dout <= b_din; + mem[b_addr] <= b_din; + end else + b_dout <= mem[b_addr]; +end + +endmodule diff --git a/src/fpga/apf/io_bridge_peripheral.v b/src/fpga/apf/io_bridge_peripheral.v new file mode 100644 index 0000000..eda3bb0 --- /dev/null +++ b/src/fpga/apf/io_bridge_peripheral.v @@ -0,0 +1,334 @@ +// Software License Agreement + +// The software supplied herewith by Analogue Enterprises Limited (the "Company”), +// the Analogue Pocket Framework (“APF”), is provided and licensed to you, the +// Company's customer, solely for use in designing, testing and creating +// applications for use with Company's Products or Services. The software is +// owned by the Company and/or its licensors, and is protected under applicable +// laws, including, but not limited to, U.S. copyright law. All rights are +// reserved. By using the APF code you are agreeing to the terms of the End User +// License Agreement (“EULA”) located at [https://www.analogue.link/pocket-eula] +// and incorporated herein by reference. To the extent any use of the APF requires +// application of the MIT License or the GNU General Public License and terms of +// this APF Software License Agreement and EULA are inconsistent with such license, +// the applicable terms of the MIT License or the GNU General Public License, as +// applicable, will prevail. + +// THE SOFTWARE IS PROVIDED "AS-IS" AND WE EXPRESSLY DISCLAIM ANY IMPLIED +// WARRANTIES TO THE FULLEST EXTENT PROVIDED BY LAW, INCLUDING BUT NOT LIMITED TO, +// ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR +// NON-INFRINGEMENT. TO THE EXTENT APPLICABLE LAWS PROHIBIT TERMS OF USE FROM +// DISCLAIMING ANY IMPLIED WARRANTY, SUCH IMPLIED WARRANTY SHALL BE LIMITED TO THE +// MINIMUM WARRANTY PERIOD REQUIRED BY LAW, AND IF NO SUCH PERIOD IS REQUIRED, +// THEN THIRTY (30) DAYS FROM FIRST USE OF THE SOFTWARE. WE CANNOT GUARANTEE AND +// DO NOT PROMISE ANY SPECIFIC RESULTS FROM USE OF THE SOFTWARE. WITHOUT LIMITING +// THE FOREGOING, WE DO NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR +// ERROR-FREE. IN NO EVENT WILL WE BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY +// INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL OR PUNITIVE DAMAGES, +// INCLUDING BUT NOT LIMITED TO, LOST PROFITS ARISING OUT OF YOUR USE, OR +// INABILITY TO USE, THE SOFTWARE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY +// OF SUCH DAMAGES. UNDER NO CIRCUMSTANCES SHALL OUR LIABILITY TO YOU FOR ANY +// CLAIM OR CAUSE OF ACTION WHATSOEVER, AND REGARDLESS OF THE FORM OF THE ACTION, +// WHETHER ARISING IN CONTRACT, TORT OR OTHERWISE, EXCEED THE AMOUNT PAID BY YOU +// TO US, IF ANY, DURING THE 90 DAY PERIOD IMMEDIATELY PRECEDING THE DATE ON WHICH +// YOU FIRST ASSERT ANY SUCH CLAIM. THE FOREGOING LIMITATIONS SHALL APPLY TO THE +// FULLEST EXTENT PERMITTED BY APPLICABLE LAW. +// +// bridge peripheral for socrates PMP bridge to heraclitus+aristotle +// 2020-2022 Analogue +// +// please note that while writes are immediate, +// reads are buffered by 1 word. this is necessary to maintain +// data throughput while reading from slower data sources like +// sdram. +// reads should always return the current bus value, and kickstart +// into the next read immediately. this way, you have the entire +// next word time to retrieve the data, instead of just a few +// cycles. +// +// the worst-case read/write timing is every 88 cycles @ 74.25mhz +// which is about 1180ns. + +module io_bridge_peripheral ( + +input wire clk, +input wire reset_n, + +input wire endian_little, + +output reg [31:0] pmp_addr, +output reg pmp_addr_valid, +output reg pmp_rd, +input wire [31:0] pmp_rd_data, +output reg pmp_wr, +output reg [31:0] pmp_wr_data, + +inout reg phy_spimosi, +inout reg phy_spimiso, +inout reg phy_spiclk, +input wire phy_spiss + +); + +// +// clock domain: clk (74.25mhz) rising edge +// + wire reset_n_s; +synch_3 s00(reset_n, reset_n_s, clk); + + wire endian_little_s; +synch_3 s01(endian_little, endian_little_s, clk); + + wire phy_spiss_s, phy_spiss_r, phy_spiss_f; +synch_3 s02(phy_spiss, phy_spiss_s, clk, phy_spiss_r, phy_spiss_f); + + + reg [4:0] state; + localparam ST_RESET = 'd0; + localparam ST_IDLE = 'd1; + localparam ST_READ_0 = 'd2; + localparam ST_READ_1 = 'd3; + localparam ST_READ_2 = 'd4; + localparam ST_READ_3 = 'd5; + localparam ST_WRITE_0 = 'd6; + localparam ST_WRITE_1 = 'd7; + localparam ST_WRITE_2 = 'd8; + localparam ST_ADDR_0 = 'd9; + + reg [1:0] addr_cnt; + reg [1:0] data_cnt; + reg [6:0] read_cnt; + + // synchronize rd byte flag's rising edge into clk + wire rx_byte_done_s, rx_byte_done_r; +synch_3 s03(rx_byte_done, rx_byte_done_s, clk, rx_byte_done_r); + + reg [4:0] spis; + localparam ST_SIDLE = 'd1; + localparam ST_SEND_N = 'd6; + localparam ST_SEND_0 = 'd2; + localparam ST_SEND_1 = 'd3; + localparam ST_SEND_2 = 'd4; + localparam ST_SEND_3 = 'd5; + reg spis_tx; + reg [31:0] spis_word_tx; + reg [31:0] spis_word; + reg [4:0] spis_count; + reg spis_done; + + reg rx_byte_done_r_1, rx_byte_done_r_2; + reg [7:0] rx_byte_1, rx_byte_2; + + // handle reversing endianness on both ports + reg [31:0] pmp_wr_data_latch; + reg [31:0] pmp_rd_data_e; // asynchronous + reg [31:0] pmp_rd_data_buf; // buffer the last word for immediate response +always @(*) begin + pmp_wr_data <= endian_little_s ? { pmp_wr_data_latch[7:0], + pmp_wr_data_latch[15:8], + pmp_wr_data_latch[23:16], + pmp_wr_data_latch[31:24] + } : pmp_wr_data_latch; + + pmp_rd_data_e <= endian_little_s ? {pmp_rd_data[7:0], + pmp_rd_data[15:8], + pmp_rd_data[23:16], + pmp_rd_data[31:24] + } : pmp_rd_data; +end + +always @(posedge clk) begin + + rx_byte_2 <= rx_byte_1; + rx_byte_1 <= rx_byte; + + rx_byte_done_r_1 <= rx_byte_done_r; + rx_byte_done_r_2 <= rx_byte_done_r_1; + + case(state) + ST_RESET: begin + addr_cnt <= 0; + data_cnt <= 0; + pmp_wr <= 0; + pmp_rd <= 0; + pmp_addr_valid <= 0; + spis_tx <= 0; + + state <= ST_ADDR_0; + end + ST_ADDR_0: begin + // transaction has started + + if(rx_byte_done_r_2) begin + case(addr_cnt) + 0: pmp_addr[31:24] <= rx_byte_2; + 1: pmp_addr[23:16] <= rx_byte_2; + 2: pmp_addr[15: 8] <= rx_byte_2; + 3: begin + pmp_addr[ 7: 0] <= {rx_byte_2[7:2], 2'b00}; + // address is latched + if( rx_byte_2[0] ) begin + data_cnt <= 0; + state <= ST_WRITE_0; + end else begin + data_cnt <= 0; + read_cnt <= 0; + state <= ST_READ_0; + end + end + endcase + + addr_cnt <= addr_cnt + 1'b1; + end + end + ST_WRITE_0: begin + // give notice, address has become valid + pmp_addr_valid <= 1; + + if(rx_byte_done_r_2) begin + case(data_cnt) + 0: pmp_wr_data_latch[31:24] <= rx_byte_2; + 1: pmp_wr_data_latch[23:16] <= rx_byte_2; + 2: pmp_wr_data_latch[15: 8] <= rx_byte_2; + 3: begin + pmp_wr_data_latch[ 7: 0] <= rx_byte_2; + state <= ST_WRITE_1; + end + endcase + data_cnt <= data_cnt + 1'b1; + end + end + ST_WRITE_1: begin + pmp_wr <= 1; + state <= ST_WRITE_2; + end + ST_WRITE_2: begin + // exited upon new transaction + pmp_wr <= 0; + end + ST_READ_0: begin + pmp_addr_valid <= 1; + + // delay a few cycles + read_cnt <= read_cnt + 1'b1; + if(read_cnt == 4-1) begin + // load the buffer with the current data + // and give the current buffer contents to bridge + spis_word_tx <= pmp_rd_data_e; + spis_tx <= 1; + + state <= ST_READ_1; + end + end + ST_READ_1: begin + pmp_rd <= 1; + state <= ST_READ_2; + end + ST_READ_2: begin + pmp_rd <= 0; + if(spis_done) begin + spis_tx <= 0; + state <= ST_READ_3; + end + end + ST_READ_3: begin + // exited upon new transaction + end + endcase + + + + + // + // word transmit + // + spis_done <= 0; + case(spis) + ST_SIDLE: begin + spis_count <= 0; + + phy_spiclk <= 1'bZ; + phy_spimosi <= 1'bZ; + phy_spimiso <= 1'bZ; + + if(spis_tx) begin + spis_word <= spis_word_tx; + spis <= ST_SEND_N; + end + end + // drive high first + ST_SEND_N: begin + phy_spiclk <= 1'b1; + phy_spimosi <= 1'b1; + phy_spimiso <= 1'b1; + spis <= ST_SEND_0; + end + // tx, shift out bits + ST_SEND_0: begin + phy_spiclk <= 0; + spis <= ST_SEND_1; + phy_spimosi <= spis_word[31]; + phy_spimiso <= spis_word[30]; + spis_word <= {spis_word[29:0], 2'b00}; + end + ST_SEND_1: begin + phy_spiclk <= 1; + spis <= ST_SEND_0; + spis_count <= spis_count + 1'b1; + if(spis_count == 15) spis <= ST_SEND_2; + end + ST_SEND_2: begin + phy_spiclk <= 1'b1; + phy_spimosi <= 1'b1; + phy_spimiso <= 1'b1; + spis <= ST_SEND_3; + spis_done <= 1; + end + ST_SEND_3: begin + spis <= ST_SIDLE; + end + endcase + + if(phy_spiss_s) begin + // select is high, go back to reset + state <= ST_RESET; + spis <= ST_SIDLE; + end + +end + + +// +// clock domain: phy_spiclk rising edge +// + reg [1:0] rx_latch_idx; + reg [7:0] rx_dat; + reg [7:0] rx_byte; // latched by clk, but upon a synchronized trigger + reg rx_byte_done; + +always @(posedge phy_spiclk or posedge phy_spiss) begin + + if(phy_spiss) begin + // reset + rx_byte_done <= 0; + rx_latch_idx <= 0; + + end else begin + // spiclk rising edge, latch data + rx_byte_done <= 0; + + case(rx_latch_idx) + 0: begin rx_dat[7:6] <= {phy_spimosi, phy_spimiso}; rx_latch_idx <= 1; end + 1: begin rx_dat[5:4] <= {phy_spimosi, phy_spimiso}; rx_latch_idx <= 2; end + 2: begin rx_dat[3:2] <= {phy_spimosi, phy_spimiso}; rx_latch_idx <= 3; end + 3: begin + // final 2 bits + rx_byte <= {rx_dat[7:2], phy_spimosi, phy_spimiso}; + rx_latch_idx <= 0; + rx_byte_done <= 1; + end + endcase + end +end + +endmodule diff --git a/src/fpga/apf/io_pad_controller.v b/src/fpga/apf/io_pad_controller.v new file mode 100644 index 0000000..c3886ac --- /dev/null +++ b/src/fpga/apf/io_pad_controller.v @@ -0,0 +1,328 @@ +// Software License Agreement + +// The software supplied herewith by Analogue Enterprises Limited (the "Company”), +// the Analogue Pocket Framework (“APF”), is provided and licensed to you, the +// Company's customer, solely for use in designing, testing and creating +// applications for use with Company's Products or Services. The software is +// owned by the Company and/or its licensors, and is protected under applicable +// laws, including, but not limited to, U.S. copyright law. All rights are +// reserved. By using the APF code you are agreeing to the terms of the End User +// License Agreement (“EULA”) located at [https://www.analogue.link/pocket-eula] +// and incorporated herein by reference. To the extent any use of the APF requires +// application of the MIT License or the GNU General Public License and terms of +// this APF Software License Agreement and EULA are inconsistent with such license, +// the applicable terms of the MIT License or the GNU General Public License, as +// applicable, will prevail. + +// THE SOFTWARE IS PROVIDED "AS-IS" AND WE EXPRESSLY DISCLAIM ANY IMPLIED +// WARRANTIES TO THE FULLEST EXTENT PROVIDED BY LAW, INCLUDING BUT NOT LIMITED TO, +// ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR +// NON-INFRINGEMENT. TO THE EXTENT APPLICABLE LAWS PROHIBIT TERMS OF USE FROM +// DISCLAIMING ANY IMPLIED WARRANTY, SUCH IMPLIED WARRANTY SHALL BE LIMITED TO THE +// MINIMUM WARRANTY PERIOD REQUIRED BY LAW, AND IF NO SUCH PERIOD IS REQUIRED, +// THEN THIRTY (30) DAYS FROM FIRST USE OF THE SOFTWARE. WE CANNOT GUARANTEE AND +// DO NOT PROMISE ANY SPECIFIC RESULTS FROM USE OF THE SOFTWARE. WITHOUT LIMITING +// THE FOREGOING, WE DO NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR +// ERROR-FREE. IN NO EVENT WILL WE BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY +// INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL OR PUNITIVE DAMAGES, +// INCLUDING BUT NOT LIMITED TO, LOST PROFITS ARISING OUT OF YOUR USE, OR +// INABILITY TO USE, THE SOFTWARE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY +// OF SUCH DAMAGES. UNDER NO CIRCUMSTANCES SHALL OUR LIABILITY TO YOU FOR ANY +// CLAIM OR CAUSE OF ACTION WHATSOEVER, AND REGARDLESS OF THE FORM OF THE ACTION, +// WHETHER ARISING IN CONTRACT, TORT OR OTHERWISE, EXCEED THE AMOUNT PAID BY YOU +// TO US, IF ANY, DURING THE 90 DAY PERIOD IMMEDIATELY PRECEDING THE DATE ON WHICH +// YOU FIRST ASSERT ANY SUCH CLAIM. THE FOREGOING LIMITATIONS SHALL APPLY TO THE +// FULLEST EXTENT PERMITTED BY APPLICABLE LAW. +// +// pad controller +// 2020-08-17 Analogue +// + +module io_pad_controller ( + +input wire clk, +input wire reset_n, + +inout reg pad_1wire, + +output reg [15:0] cont1_key, +output reg [15:0] cont2_key, +output reg [15:0] cont3_key, +output reg [15:0] cont4_key, +output reg [31:0] cont1_joy, +output reg [31:0] cont2_joy, +output reg [31:0] cont3_joy, +output reg [31:0] cont4_joy, +output reg [15:0] cont1_trig, +output reg [15:0] cont2_trig, +output reg [15:0] cont3_trig, +output reg [15:0] cont4_trig, + +output reg rx_timed_out +); + + wire reset_n_s; +synch_3 s00(reset_n, reset_n_s, clk); + + wire pad_1wire_s, pad_1wire_r, pad_1wire_f; +synch_3 s01(pad_1wire, pad_1wire_s, clk, pad_1wire_r, pad_1wire_f); + + +// +// protocol fsm +// + + reg [20:0] rx_timeout; // ~28ms + + reg [15:0] auto_poll_cnt; // 882us + reg auto_poll_queue; + + reg [18:0] heartbeat_cnt; // 7ms + reg heartbeat_queue; + + + localparam ST_RESET = 'd0; + localparam ST_IDLE = 'd1; + localparam ST_RX_BUTTON_1 = 'd2; + localparam ST_RX_BUTTON_2 = 'd3; + localparam ST_TX_SCALER = 'd4; + localparam ST_END_TX = 'd5; + + reg [3:0] state; + reg [3:0] cnt; + +always @(posedge clk) begin + tx_word_start <= 0; + + auto_poll_cnt <= auto_poll_cnt + 1'b1; + heartbeat_cnt <= heartbeat_cnt + 1'b1; + + // increment rx timeout, override and reset when idle below + rx_timeout <= rx_timeout + 1'b1; + + case(state) + ST_RESET: begin + reset_tr_n <= 0; + rx_timed_out <= 0; + + if(&rx_timeout[19:0]) begin + state <= ST_IDLE; + end + end + ST_IDLE: begin + // idle state + reset_tr_n <= 1; + rx_timeout <= 0; + cnt <= 0; + if(auto_poll_queue) begin + auto_poll_queue <= 0; + + tx_word_start <= 1; + tx_word <= 32'h4A10000C; + + state <= ST_RX_BUTTON_1; + end else if(heartbeat_queue) begin + heartbeat_queue <= 0; + + tx_word_start <= 1; + tx_word <= 32'h4AFE0000; + + state <= ST_END_TX; + end + end + // receive button words + ST_RX_BUTTON_1: begin + if(tx_word_done) begin + state <= ST_RX_BUTTON_2; + end + end + ST_RX_BUTTON_2: begin + if(rx_word_done) begin + cnt <= cnt + 1'b1; + case(cnt) + 0: cont1_key <= rx_word[15:0]; + 1: cont1_joy <= rx_word; + 2: cont1_trig <= rx_word[15:0]; + + 3: cont2_key <= rx_word[15:0]; + 4: cont2_joy <= rx_word; + 5: cont2_trig <= rx_word[15:0]; + + 6: cont3_key <= rx_word[15:0]; + 7: cont3_joy <= rx_word; + 8: cont3_trig <= rx_word[15:0]; + + 9: cont4_key <= rx_word[15:0]; + 10: cont4_joy <= rx_word; + 11: begin + cont4_trig <= rx_word[15:0]; + state <= ST_IDLE; + end + endcase + end + end + // do nothing + ST_END_TX: begin + // done sending, idle again + if(tx_word_done) begin + state <= ST_IDLE; + end + end + endcase + + + if(&auto_poll_cnt) begin + auto_poll_queue <= 1; + end + if(&heartbeat_cnt) begin + heartbeat_queue <= 1; + end + + if(&rx_timeout) begin + // reset protocol FSM which will also reset t/r engine + rx_timed_out <= 1; + rx_timeout <= 0; + state <= ST_RESET; + end + + if(~reset_n_s) begin + state <= ST_RESET; + end +end + + + + + +// +// word receive/transmit engine +// + reg reset_tr_n; + localparam BITLEN = 60; + + reg rx_word_done; + reg [31:0] rx_word_shift; + reg [31:0] rx_word; + + reg tx_word_start, tx_word_start_1; + reg tx_word_done; + reg [31:0] tx_word; + reg [31:0] tx_word_shift; + + reg [7:0] tr_cnt; + reg [5:0] tr_bit; + + localparam TR_IDLE = 'd1; + localparam TR_TX_START = 'd2; + localparam TR_TX_CONTINUE = 'd3; + localparam TR_TX_DONE = 'd4; + localparam TR_RX_START = 'd5; + localparam TR_RX_WAITEDGE = 'd6; + localparam TR_RX_DONE = 'd7; + + reg [3:0] tr_state; + +always @(posedge clk) begin + + rx_word_done <= 0; + tx_word_done <= 0; + + tx_word_start_1 <= tx_word_start; + + case(tr_state) + TR_IDLE: begin + tr_bit <= 0; + tr_cnt <= 0; + + pad_1wire <= 1'bZ; + + if(tx_word_start & ~tx_word_start_1) begin + // transmit word + tx_word_shift <= tx_word; + tr_state <= TR_TX_START; + end + + if(pad_1wire_f) begin + // receive word + tr_state <= TR_RX_START; + end + end + + // transmit 32bit + TR_TX_START: begin + // insert delay + tr_cnt <= tr_cnt + 1'b1; + if(&tr_cnt) begin + // drive from tristate(high) to explicitly high to prevent glitching + pad_1wire <= 1'b1; + tr_state <= TR_TX_CONTINUE; + end + end + TR_TX_CONTINUE: begin + tr_cnt <= tr_cnt + 1'b1; + case(tr_cnt) + 0: begin + pad_1wire <= 1'b0; + end + (BITLEN/3): begin + pad_1wire <= tx_word_shift[31]; + end + (BITLEN*2/3): begin + pad_1wire <= 1'b1; + end + (BITLEN-1): begin + tr_cnt <= 0; + tx_word_shift <= {tx_word_shift[30:0], 1'b1}; + + tr_bit <= tr_bit + 1'b1; + if(tr_bit == 31) begin + tr_state <= TR_TX_DONE; + end + end + endcase + end + TR_TX_DONE: begin + tx_word_done <= 1; + tr_state <= TR_IDLE; + end + + // receive 32bit + TR_RX_START: begin + tr_cnt <= tr_cnt + 1'b1; + case(tr_cnt) + (BITLEN/2-4): begin + rx_word_shift <= {rx_word_shift[30:0], pad_1wire_s}; + end + (BITLEN*5/6): begin + tr_cnt <= 0; + + // wait for next falling edge + tr_state <= TR_RX_WAITEDGE; + tr_bit <= tr_bit + 1'b1; + if(tr_bit == 31) begin + // if this is bit32, don't wait and finish + tr_state <= TR_RX_DONE; + end + end + endcase + end + TR_RX_WAITEDGE: begin + if(pad_1wire_f) begin + tr_state <= TR_RX_START; + end + end + TR_RX_DONE: begin + rx_word <= rx_word_shift; + rx_word_done <= 1; + tr_state <= TR_IDLE; + end + + default: begin + tr_state <= TR_IDLE; + end + endcase + + if(~reset_n_s | ~reset_tr_n) tr_state <= TR_IDLE; +end + +endmodule diff --git a/src/fpga/apf/mf_datatable.qip b/src/fpga/apf/mf_datatable.qip new file mode 100644 index 0000000..e7e597d --- /dev/null +++ b/src/fpga/apf/mf_datatable.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "RAM: 2-PORT" +set_global_assignment -name IP_TOOL_VERSION "21.1" +set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{Cyclone V}" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "mf_datatable.v"] diff --git a/src/fpga/apf/mf_datatable.v b/src/fpga/apf/mf_datatable.v new file mode 100644 index 0000000..dfdbe86 --- /dev/null +++ b/src/fpga/apf/mf_datatable.v @@ -0,0 +1,247 @@ +// megafunction wizard: %RAM: 2-PORT% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altsyncram + +// ============================================================ +// File Name: mf_datatable.v +// Megafunction Name(s): +// altsyncram +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 21.1.1 Build 850 06/23/2022 SJ Lite Edition +// ************************************************************ + + +//Copyright (C) 2022 Intel Corporation. All rights reserved. +//Your use of Intel Corporation's design tools, logic functions +//and other software and tools, and any 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, at +//https://fpgasoftware.intel.com/eula. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module mf_datatable ( + address_a, + address_b, + clock_a, + clock_b, + data_a, + data_b, + wren_a, + wren_b, + q_a, + q_b); + + input [7:0] address_a; + input [7:0] address_b; + input clock_a; + input clock_b; + input [31:0] data_a; + input [31:0] data_b; + input wren_a; + input wren_b; + output [31:0] q_a; + output [31:0] q_b; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri1 clock_a; + tri0 wren_a; + tri0 wren_b; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire [31:0] sub_wire0; + wire [31:0] sub_wire1; + wire [31:0] q_a = sub_wire0[31:0]; + wire [31:0] q_b = sub_wire1[31:0]; + + altsyncram altsyncram_component ( + .address_a (address_a), + .address_b (address_b), + .clock0 (clock_a), + .clock1 (clock_b), + .data_a (data_a), + .data_b (data_b), + .wren_a (wren_a), + .wren_b (wren_b), + .q_a (sub_wire0), + .q_b (sub_wire1), + .aclr0 (1'b0), + .aclr1 (1'b0), + .addressstall_a (1'b0), + .addressstall_b (1'b0), + .byteena_a (1'b1), + .byteena_b (1'b1), + .clocken0 (1'b1), + .clocken1 (1'b1), + .clocken2 (1'b1), + .clocken3 (1'b1), + .eccstatus (), + .rden_a (1'b1), + .rden_b (1'b1)); + defparam + altsyncram_component.address_reg_b = "CLOCK1", + altsyncram_component.clock_enable_input_a = "BYPASS", + altsyncram_component.clock_enable_input_b = "BYPASS", + altsyncram_component.clock_enable_output_a = "BYPASS", + altsyncram_component.clock_enable_output_b = "BYPASS", + altsyncram_component.indata_reg_b = "CLOCK1", + altsyncram_component.init_file = "./apf/build_id.mif", + altsyncram_component.intended_device_family = "Cyclone V", + altsyncram_component.lpm_type = "altsyncram", + altsyncram_component.numwords_a = 256, + altsyncram_component.numwords_b = 256, + altsyncram_component.operation_mode = "BIDIR_DUAL_PORT", + altsyncram_component.outdata_aclr_a = "NONE", + altsyncram_component.outdata_aclr_b = "NONE", + altsyncram_component.outdata_reg_a = "CLOCK0", + altsyncram_component.outdata_reg_b = "CLOCK1", + altsyncram_component.power_up_uninitialized = "FALSE", + altsyncram_component.read_during_write_mode_port_a = "NEW_DATA_NO_NBE_READ", + altsyncram_component.read_during_write_mode_port_b = "NEW_DATA_NO_NBE_READ", + altsyncram_component.widthad_a = 8, + altsyncram_component.widthad_b = 8, + altsyncram_component.width_a = 32, + altsyncram_component.width_b = 32, + altsyncram_component.width_byteena_a = 1, + altsyncram_component.width_byteena_b = 1, + altsyncram_component.wrcontrol_wraddress_reg_b = "CLOCK1"; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +// Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +// Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +// Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +// Retrieval info: PRIVATE: BlankMemory NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +// Retrieval info: PRIVATE: CLRdata NUMERIC "0" +// Retrieval info: PRIVATE: CLRq NUMERIC "0" +// Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +// Retrieval info: PRIVATE: CLRrren NUMERIC "0" +// Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +// Retrieval info: PRIVATE: CLRwren NUMERIC "0" +// Retrieval info: PRIVATE: Clock NUMERIC "5" +// Retrieval info: PRIVATE: Clock_A NUMERIC "0" +// Retrieval info: PRIVATE: Clock_B NUMERIC "0" +// Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +// Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +// Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone V" +// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +// Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +// Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +// Retrieval info: PRIVATE: MEMSIZE NUMERIC "8192" +// Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +// Retrieval info: PRIVATE: MIFfilename STRING "./apf/build_id.mif" +// Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +// Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "3" +// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "3" +// Retrieval info: PRIVATE: REGdata NUMERIC "1" +// Retrieval info: PRIVATE: REGq NUMERIC "1" +// Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +// Retrieval info: PRIVATE: REGrren NUMERIC "0" +// Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +// Retrieval info: PRIVATE: REGwren NUMERIC "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +// Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +// Retrieval info: PRIVATE: VarWidth NUMERIC "0" +// Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "32" +// Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "32" +// Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "32" +// Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "32" +// Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +// Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +// Retrieval info: PRIVATE: enable NUMERIC "0" +// Retrieval info: PRIVATE: rden NUMERIC "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +// Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: INIT_FILE STRING "./apf/build_id.mif" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone V" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +// Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "256" +// Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "256" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +// Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +// Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +// Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +// Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK1" +// Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "NEW_DATA_NO_NBE_READ" +// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "NEW_DATA_NO_NBE_READ" +// Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "8" +// Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "8" +// Retrieval info: CONSTANT: WIDTH_A NUMERIC "32" +// Retrieval info: CONSTANT: WIDTH_B NUMERIC "32" +// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +// Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +// Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK1" +// Retrieval info: USED_PORT: address_a 0 0 8 0 INPUT NODEFVAL "address_a[7..0]" +// Retrieval info: USED_PORT: address_b 0 0 8 0 INPUT NODEFVAL "address_b[7..0]" +// Retrieval info: USED_PORT: clock_a 0 0 0 0 INPUT VCC "clock_a" +// Retrieval info: USED_PORT: clock_b 0 0 0 0 INPUT NODEFVAL "clock_b" +// Retrieval info: USED_PORT: data_a 0 0 32 0 INPUT NODEFVAL "data_a[31..0]" +// Retrieval info: USED_PORT: data_b 0 0 32 0 INPUT NODEFVAL "data_b[31..0]" +// Retrieval info: USED_PORT: q_a 0 0 32 0 OUTPUT NODEFVAL "q_a[31..0]" +// Retrieval info: USED_PORT: q_b 0 0 32 0 OUTPUT NODEFVAL "q_b[31..0]" +// Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT GND "wren_a" +// Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT GND "wren_b" +// Retrieval info: CONNECT: @address_a 0 0 8 0 address_a 0 0 8 0 +// Retrieval info: CONNECT: @address_b 0 0 8 0 address_b 0 0 8 0 +// Retrieval info: CONNECT: @clock0 0 0 0 0 clock_a 0 0 0 0 +// Retrieval info: CONNECT: @clock1 0 0 0 0 clock_b 0 0 0 0 +// Retrieval info: CONNECT: @data_a 0 0 32 0 data_a 0 0 32 0 +// Retrieval info: CONNECT: @data_b 0 0 32 0 data_b 0 0 32 0 +// Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +// Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +// Retrieval info: CONNECT: q_a 0 0 32 0 @q_a 0 0 32 0 +// Retrieval info: CONNECT: q_b 0 0 32 0 @q_b 0 0 32 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_datatable.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_datatable.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_datatable.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_datatable.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_datatable_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_datatable_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf diff --git a/src/fpga/apf/mf_ddio_bidir_12.ppf b/src/fpga/apf/mf_ddio_bidir_12.ppf new file mode 100644 index 0000000..1dac726 --- /dev/null +++ b/src/fpga/apf/mf_ddio_bidir_12.ppf @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/fpga/apf/mf_ddio_bidir_12.qip b/src/fpga/apf/mf_ddio_bidir_12.qip new file mode 100644 index 0000000..86120bf --- /dev/null +++ b/src/fpga/apf/mf_ddio_bidir_12.qip @@ -0,0 +1,5 @@ +set_global_assignment -name IP_TOOL_NAME "ALTDDIO_BIDIR" +set_global_assignment -name IP_TOOL_VERSION "21.1" +set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{Cyclone V}" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "mf_ddio_bidir_12.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "mf_ddio_bidir_12.ppf"] diff --git a/src/fpga/apf/mf_ddio_bidir_12.v b/src/fpga/apf/mf_ddio_bidir_12.v new file mode 100644 index 0000000..3b00634 --- /dev/null +++ b/src/fpga/apf/mf_ddio_bidir_12.v @@ -0,0 +1,133 @@ +// megafunction wizard: %ALTDDIO_BIDIR% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: ALTDDIO_BIDIR + +// ============================================================ +// File Name: mf_ddio_bidir_12.v +// Megafunction Name(s): +// ALTDDIO_BIDIR +// +// Simulation Library Files(s): +// +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 21.1.1 Build 850 06/23/2022 SJ Lite Edition +// ************************************************************ + + +//Copyright (C) 2022 Intel Corporation. All rights reserved. +//Your use of Intel Corporation's design tools, logic functions +//and other software and tools, and any 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, at +//https://fpgasoftware.intel.com/eula. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module mf_ddio_bidir_12 ( + datain_h, + datain_l, + inclock, + oe, + outclock, + dataout_h, + dataout_l, + padio); + + input [11:0] datain_h; + input [11:0] datain_l; + input inclock; + input oe; + input outclock; + output [11:0] dataout_h; + output [11:0] dataout_l; + inout [11:0] padio; + + wire [11:0] sub_wire0; + wire [11:0] sub_wire1; + wire [11:0] dataout_h = sub_wire0[11:0]; + wire [11:0] dataout_l = sub_wire1[11:0]; + + altddio_bidir ALTDDIO_BIDIR_component ( + .datain_h (datain_h), + .datain_l (datain_l), + .inclock (inclock), + .oe (oe), + .outclock (outclock), + .padio (padio), + .dataout_h (sub_wire0), + .dataout_l (sub_wire1), + .aclr (1'b0), + .aset (1'b0), + .combout (), + .dqsundelayedout (), + .inclocken (1'b1), + .oe_out (), + .outclocken (1'b1), + .sclr (1'b0), + .sset (1'b0)); + defparam + ALTDDIO_BIDIR_component.extend_oe_disable = "OFF", + ALTDDIO_BIDIR_component.implement_input_in_lcell = "OFF", + ALTDDIO_BIDIR_component.intended_device_family = "Cyclone V", + ALTDDIO_BIDIR_component.invert_output = "OFF", + ALTDDIO_BIDIR_component.lpm_hint = "UNUSED", + ALTDDIO_BIDIR_component.lpm_type = "altddio_bidir", + ALTDDIO_BIDIR_component.oe_reg = "UNREGISTERED", + ALTDDIO_BIDIR_component.power_up_high = "OFF", + ALTDDIO_BIDIR_component.width = 12; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone V" +// Retrieval info: CONSTANT: EXTEND_OE_DISABLE STRING "OFF" +// Retrieval info: CONSTANT: IMPLEMENT_INPUT_IN_LCELL STRING "OFF" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone V" +// Retrieval info: CONSTANT: INVERT_OUTPUT STRING "OFF" +// Retrieval info: CONSTANT: LPM_HINT STRING "UNUSED" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altddio_bidir" +// Retrieval info: CONSTANT: OE_REG STRING "UNREGISTERED" +// Retrieval info: CONSTANT: POWER_UP_HIGH STRING "OFF" +// Retrieval info: CONSTANT: WIDTH NUMERIC "12" +// Retrieval info: USED_PORT: datain_h 0 0 12 0 INPUT NODEFVAL "datain_h[11..0]" +// Retrieval info: CONNECT: @datain_h 0 0 12 0 datain_h 0 0 12 0 +// Retrieval info: USED_PORT: datain_l 0 0 12 0 INPUT NODEFVAL "datain_l[11..0]" +// Retrieval info: CONNECT: @datain_l 0 0 12 0 datain_l 0 0 12 0 +// Retrieval info: USED_PORT: dataout_h 0 0 12 0 OUTPUT NODEFVAL "dataout_h[11..0]" +// Retrieval info: CONNECT: dataout_h 0 0 12 0 @dataout_h 0 0 12 0 +// Retrieval info: USED_PORT: dataout_l 0 0 12 0 OUTPUT NODEFVAL "dataout_l[11..0]" +// Retrieval info: CONNECT: dataout_l 0 0 12 0 @dataout_l 0 0 12 0 +// Retrieval info: USED_PORT: inclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL "inclock" +// Retrieval info: CONNECT: @inclock 0 0 0 0 inclock 0 0 0 0 +// Retrieval info: USED_PORT: oe 0 0 0 0 INPUT NODEFVAL "oe" +// Retrieval info: CONNECT: @oe 0 0 0 0 oe 0 0 0 0 +// Retrieval info: USED_PORT: outclock 0 0 0 0 INPUT_CLK_EXT NODEFVAL "outclock" +// Retrieval info: CONNECT: @outclock 0 0 0 0 outclock 0 0 0 0 +// Retrieval info: USED_PORT: padio 0 0 12 0 BIDIR NODEFVAL "padio[11..0]" +// Retrieval info: CONNECT: padio 0 0 12 0 @padio 0 0 12 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_ddio_bidir_12.v TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_ddio_bidir_12.qip TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_ddio_bidir_12.bsf FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_ddio_bidir_12_inst.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_ddio_bidir_12_bb.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_ddio_bidir_12.inc FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_ddio_bidir_12.cmp FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL mf_ddio_bidir_12.ppf TRUE FALSE diff --git a/src/fpga/core/core_bridge_cmd.v b/src/fpga/core/core_bridge_cmd.v new file mode 100644 index 0000000..1039089 --- /dev/null +++ b/src/fpga/core/core_bridge_cmd.v @@ -0,0 +1,445 @@ +// +// bridge host/target command handler +// 2022 Analogue +// + +// mapped to 0xF8xxxxxx on bridge +// the spec is loose enough to allow implementation with either +// block rams and a soft CPU, or simply hard logic with some case statements. +// +// the implementation spec is documented, and depending on your application you +// may want to completely replace this module. this is only one of many +// possible ways to accomplish the host/target command system and data table. +// +// this module should always be clocked by a direct clock input and never a PLL, +// because it should report PLL lock status +// + +module core_bridge_cmd ( + +input wire clk, +output reg reset_n, + +input wire bridge_endian_little, +input wire [31:0] bridge_addr, +input wire bridge_rd, +output reg [31:0] bridge_rd_data, +input wire bridge_wr, +input wire [31:0] bridge_wr_data, + +// all these signals should be synchronous to clk +// add synchronizers if these need to be used in other clock domains +input wire status_boot_done, // assert when PLLs lock and logic is ready +input wire status_setup_done, // assert when core is happy with what's been loaded into it +input wire status_running, // assert when pocket's taken core out of reset and is running + +output reg dataslot_requestread, +output reg [15:0] dataslot_requestread_id, +input wire dataslot_requestread_ack, +input wire dataslot_requestread_ok, + +output reg dataslot_requestwrite, +output reg [15:0] dataslot_requestwrite_id, +input wire dataslot_requestwrite_ack, +input wire dataslot_requestwrite_ok, + +output reg dataslot_allcomplete, + +input wire savestate_supported, +input wire [31:0] savestate_addr, +input wire [31:0] savestate_size, +input wire [31:0] savestate_maxloadsize, + +output reg osnotify_inmenu, + +output reg savestate_start, // core should detect rising edge on this, +input wire savestate_start_ack, // and then assert ack for at least 1 cycle +input wire savestate_start_busy, // assert constantly while in progress after ack +input wire savestate_start_ok, // assert continuously when done, and clear when new process is started +input wire savestate_start_err, // assert continuously on error, and clear when new process is started + +output reg savestate_load, +input wire savestate_load_ack, +input wire savestate_load_busy, +input wire savestate_load_ok, +input wire savestate_load_err, + +input wire [9:0] datatable_addr, +input wire datatable_wren, +input wire [31:0] datatable_data, +output wire [31:0] datatable_q + +); + +// handle endianness + reg [31:0] bridge_wr_data_in; + reg [31:0] bridge_rd_data_out; + + wire endian_little_s; +synch_3 s01(bridge_endian_little, endian_little_s, clk); + +always @(*) begin + bridge_rd_data <= endian_little_s ? { + bridge_rd_data_out[7:0], + bridge_rd_data_out[15:8], + bridge_rd_data_out[23:16], + bridge_rd_data_out[31:24] + } : bridge_rd_data_out; + + bridge_wr_data_in <= endian_little_s ? { + bridge_wr_data[7:0], + bridge_wr_data[15:8], + bridge_wr_data[23:16], + bridge_wr_data[31:24] + } : bridge_wr_data; +end + + +// minimalistic approach here - +// keep the commonly used registers in logic, but data table in BRAM. +// implementation could be changed quite a bit for a more advanced use case + +// host + + reg [31:0] host_0; + reg [31:0] host_4 = 'h20; // host cmd parameter data at 0x20 + reg [31:0] host_8 = 'h40; // host cmd response data at 0x40 + + reg [31:0] host_20; // parameter data + reg [31:0] host_24; + reg [31:0] host_28; + reg [31:0] host_2C; + + reg [31:0] host_40; // response data + reg [31:0] host_44; + reg [31:0] host_48; + reg [31:0] host_4C; + + reg host_cmd_start; + reg [15:0] host_cmd_startval; + reg [15:0] host_cmd; + reg [15:0] host_resultcode; + +localparam [3:0] ST_IDLE = 'd0; +localparam [3:0] ST_PARSE = 'd1; +localparam [3:0] ST_WORK = 'd2; +localparam [3:0] ST_DONE_OK = 'd13; +localparam [3:0] ST_DONE_CODE = 'd14; +localparam [3:0] ST_DONE_ERR = 'd15; + reg [3:0] hstate; + +// target + + reg [31:0] target_0; + reg [31:0] target_4 = 'h20; + reg [31:0] target_8 = 'h40; + + reg [31:0] target_20; // parameter data + reg [31:0] target_24; + reg [31:0] target_28; + reg [31:0] target_2C; + + reg [31:0] target_40; // response data + reg [31:0] target_44; + reg [31:0] target_48; + reg [31:0] target_4C; + +localparam [3:0] TARG_ST_IDLE = 'd0; +localparam [3:0] TARG_ST_READYTORUN = 'd1; +localparam [3:0] TARG_ST_DISPMSG = 'd2; +localparam [3:0] TARG_ST_SLOTREAD = 'd3; +localparam [3:0] TARG_ST_SLOTRELOAD = 'd4; +localparam [3:0] TARG_ST_SLOTWRITE = 'd5; +localparam [3:0] TARG_ST_SLOTFLUSH = 'd6; +localparam [3:0] TARG_ST_WAITRESULT = 'd15; + reg [3:0] tstate; + + reg status_setup_done_1; + reg status_setup_done_queue; + + +initial begin + reset_n <= 0; + dataslot_requestread <= 0; + dataslot_requestwrite <= 0; + dataslot_allcomplete <= 0; + savestate_start <= 0; + savestate_load <= 0; + osnotify_inmenu <= 0; + status_setup_done_queue <= 0; +end + +always @(posedge clk) begin + + // detect a rising edge on the input signal + // and flag a queue that will be cleared later + status_setup_done_1 <= status_setup_done; + if(status_setup_done & ~status_setup_done_1) begin + status_setup_done_queue <= 1; + end + + b_datatable_wren <= 0; + b_datatable_addr <= bridge_addr >> 2; + + if(bridge_wr) begin + casex(bridge_addr) + 32'hF8xx00xx: begin + case(bridge_addr[7:0]) + 8'h0: begin + host_0 <= bridge_wr_data_in; // command/status + // check for command + if(bridge_wr_data_in[31:16] == 16'h434D) begin + // host wants us to do a command + host_cmd_startval <= bridge_wr_data_in[15:0]; + host_cmd_start <= 1; + end + end + 8'h20: host_20 <= bridge_wr_data_in; // parameter data regs + 8'h24: host_24 <= bridge_wr_data_in; + 8'h28: host_28 <= bridge_wr_data_in; + 8'h2C: host_2C <= bridge_wr_data_in; + endcase + end + 32'hF8xx10xx: begin + case(bridge_addr[7:0]) + 8'h0: target_0 <= bridge_wr_data_in; // command/status + 8'h4: target_4 <= bridge_wr_data_in; // parameter data pointer + 8'h8: target_8 <= bridge_wr_data_in; // response data pointer + 8'h40: target_40 <= bridge_wr_data_in; // response data regs + 8'h44: target_44 <= bridge_wr_data_in; + 8'h48: target_48 <= bridge_wr_data_in; + 8'h4C: target_4C <= bridge_wr_data_in; + endcase + end + 32'hF8xx2xxx: begin + b_datatable_wren <= 1; + end + endcase + end + if(bridge_rd) begin + casex(bridge_addr) + 32'hF8xx00xx: begin + case(bridge_addr[7:0]) + 8'h0: bridge_rd_data_out <= host_0; // command/status + 8'h4: bridge_rd_data_out <= host_4; // parameter data pointer + 8'h8: bridge_rd_data_out <= host_8; // response data pointer + 8'h40: bridge_rd_data_out <= host_40; // response data regs + 8'h44: bridge_rd_data_out <= host_44; + 8'h48: bridge_rd_data_out <= host_48; + 8'h4C: bridge_rd_data_out <= host_4C; + endcase + end + 32'hF8xx10xx: begin + case(bridge_addr[7:0]) + 8'h0: bridge_rd_data_out <= target_0; + 8'h4: bridge_rd_data_out <= target_4; + 8'h8: bridge_rd_data_out <= target_8; + 8'h20: bridge_rd_data_out <= target_20; // parameter data regs + 8'h24: bridge_rd_data_out <= target_24; + 8'h28: bridge_rd_data_out <= target_28; + 8'h2C: bridge_rd_data_out <= target_2C; + endcase + end + 32'hF8xx2xxx: begin + bridge_rd_data_out <= b_datatable_q; + + end + endcase + end + + + + + + // host > target command executer + case(hstate) + ST_IDLE: begin + + dataslot_requestread <= 0; + dataslot_requestwrite <= 0; + savestate_start <= 0; + savestate_load <= 0; + + // there is no queueing. pocket will always make sure any outstanding host + // commands are finished before starting another + if(host_cmd_start) begin + host_cmd_start <= 0; + // save the command in case it gets clobbered later + host_cmd <= host_cmd_startval; + hstate <= ST_PARSE; + end + + end + ST_PARSE: begin + // overwrite command semaphore with busy flag + host_0 <= {16'h4255, host_cmd}; + + case(host_cmd) + 16'h0000: begin + // Request Status + host_resultcode <= 1; // default: booting + if(status_boot_done) begin + host_resultcode <= 2; // setup + if(status_setup_done) begin + host_resultcode <= 3; // idle + end else if(status_running) begin + host_resultcode <= 4; // running + end + end + hstate <= ST_DONE_CODE; + end + 16'h0010: begin + // Reset Enter + reset_n <= 0; + hstate <= ST_DONE_OK; + end + 16'h0011: begin + // Reset Exit + reset_n <= 1; + hstate <= ST_DONE_OK; + end + 16'h0080: begin + // Data slot request read + dataslot_allcomplete <= 0; + dataslot_requestread <= 1; + dataslot_requestread_id <= host_20[15:0]; + if(dataslot_requestread_ack) begin + host_resultcode <= 0; + if(!dataslot_requestread_ok) host_resultcode <= 2; + hstate <= ST_DONE_CODE; + end + end + 16'h0082: begin + // Data slot request write + dataslot_allcomplete <= 0; + dataslot_requestwrite <= 1; + dataslot_requestwrite_id <= host_20[15:0]; + if(dataslot_requestwrite_ack) begin + host_resultcode <= 0; + if(!dataslot_requestwrite_ok) host_resultcode <= 2; + hstate <= ST_DONE_CODE; + end + end + 16'h008F: begin + // Data slot access all complete + dataslot_allcomplete <= 1; + hstate <= ST_DONE_OK; + end + 16'h00A0: begin + // Savestate: Start/Query + host_40 <= savestate_supported; + host_44 <= savestate_addr; + host_48 <= savestate_size; + + host_resultcode <= 0; + if(savestate_start_busy) host_resultcode <= 1; + if(savestate_start_ok) host_resultcode <= 2; + if(savestate_start_err) host_resultcode <= 3; + + if(host_20[0]) begin + // Request Start! + savestate_start <= 1; + // stay in this state until ack'd + if(savestate_start_ack) begin + hstate <= ST_DONE_CODE; + end + end else begin + hstate <= ST_DONE_CODE; + end + end + 16'h00A4: begin + // Savestate: Load/Query + host_40 <= savestate_supported; + host_44 <= savestate_addr; + host_48 <= savestate_maxloadsize; + + host_resultcode <= 0; + if(savestate_load_busy) host_resultcode <= 1; + if(savestate_load_ok) host_resultcode <= 2; + if(savestate_load_err) host_resultcode <= 3; + + if(host_20[0]) begin + // Request Load! + savestate_load <= 1; + // stay in this state until ack'd + if(savestate_load_ack) begin + hstate <= ST_DONE_CODE; + end + end else begin + hstate <= ST_DONE_CODE; + end + end + 16'h00B0: begin + // OS Notify: Menu State + osnotify_inmenu <= host_20[0]; + hstate <= ST_DONE_OK; + end + default: begin + hstate <= ST_DONE_ERR; + end + endcase + end + ST_WORK: begin + hstate <= ST_IDLE; + end + ST_DONE_OK: begin + host_0 <= 32'h4F4B0000; // result code 0 + hstate <= ST_IDLE; + end + ST_DONE_CODE: begin + host_0 <= {16'h4F4B, host_resultcode}; + hstate <= ST_IDLE; + end + ST_DONE_ERR: begin + host_0 <= 32'h4F4BFFFF; // result code FFFF = unknown command + hstate <= ST_IDLE; + end + endcase + + + + + // target > host command executer + case(tstate) + TARG_ST_IDLE: begin + if(status_setup_done_queue) begin + status_setup_done_queue <= 0; + tstate <= TARG_ST_READYTORUN; + end + + end + TARG_ST_READYTORUN: begin + target_0 <= 32'h636D_0140; + tstate <= TARG_ST_WAITRESULT; + end + TARG_ST_WAITRESULT: begin + if(target_0[31:16] == 16'h6F6B) begin + // done + tstate <= TARG_ST_IDLE; + end + + end + endcase + + +end + + wire [31:0] b_datatable_q; + reg [9:0] b_datatable_addr; + reg b_datatable_wren; + +mf_datatable idt ( + .address_a ( datatable_addr ), + .address_b ( b_datatable_addr ), + .clock_a ( clk ), + .clock_b ( clk ), + .data_a ( datatable_data ), + .data_b ( bridge_wr_data_in ), + .wren_a ( datatable_wren ), + .wren_b ( b_datatable_wren ), + .q_a ( datatable_q ), + .q_b ( b_datatable_q ) +); + + +endmodule diff --git a/src/fpga/core/core_constraints.sdc b/src/fpga/core/core_constraints.sdc new file mode 100644 index 0000000..c82a7f1 --- /dev/null +++ b/src/fpga/core/core_constraints.sdc @@ -0,0 +1,15 @@ +# +# user core constraints +# +# put your clock groups in here as well as any net assignments +# + +set_clock_groups -asynchronous \ + -group { bridge_spiclk } \ + -group { clk_74a } \ + -group { clk_74b } \ + -group { ic|mp1|mf_pllbase_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk } \ + -group { ic|mp1|mf_pllbase_inst|altera_pll_i|general[1].gpll~PLL_OUTPUT_COUNTER|divclk } \ + -group { ic|mp1|mf_pllbase_inst|altera_pll_i|general[2].gpll~PLL_OUTPUT_COUNTER|divclk } \ + -group { ic|mp1|mf_pllbase_inst|altera_pll_i|general[3].gpll~PLL_OUTPUT_COUNTER|divclk } \ + -group { ic|mp1|mf_pllbase_inst|altera_pll_i|general[4].gpll~PLL_OUTPUT_COUNTER|divclk } diff --git a/src/fpga/core/core_top.sv b/src/fpga/core/core_top.sv new file mode 100644 index 0000000..d34da55 --- /dev/null +++ b/src/fpga/core/core_top.sv @@ -0,0 +1,747 @@ +// +// User core top-level +// +// Instantiated by the real top-level: apf_top +// + +`default_nettype none + +module core_top ( + +// +// physical connections +// + +/////////////////////////////////////////////////// +// clock inputs 74.25mhz. not phase aligned, so treat these domains as asynchronous + +input wire clk_74a, // mainclk1 +input wire clk_74b, // mainclk1 + +/////////////////////////////////////////////////// +// cartridge interface +// switches between 3.3v and 5v mechanically +// output enable for multibit translators controlled by pic32 + +// GBA AD[15:8] +inout wire [7:0] cart_tran_bank2, +output wire cart_tran_bank2_dir, + +// GBA AD[7:0] +inout wire [7:0] cart_tran_bank3, +output wire cart_tran_bank3_dir, + +// GBA A[23:16] +inout wire [7:0] cart_tran_bank1, +output wire cart_tran_bank1_dir, + +// GBA [7] PHI# +// GBA [6] WR# +// GBA [5] RD# +// GBA [4] CS1#/CS# +// [3:0] unwired +inout wire [7:4] cart_tran_bank0, +output wire cart_tran_bank0_dir, + +// GBA CS2#/RES# +inout wire cart_tran_pin30, +output wire cart_tran_pin30_dir, +// when GBC cart is inserted, this signal when low or weak will pull GBC /RES low with a special circuit +// the goal is that when unconfigured, the FPGA weak pullups won't interfere. +// thus, if GBC cart is inserted, FPGA must drive this high in order to let the level translators +// and general IO drive this pin. +output wire cart_pin30_pwroff_reset, + +// GBA IRQ/DRQ +inout wire cart_tran_pin31, +output wire cart_tran_pin31_dir, + +// infrared +input wire port_ir_rx, +output wire port_ir_tx, +output wire port_ir_rx_disable, + +// GBA link port +inout wire port_tran_si, +output wire port_tran_si_dir, +inout wire port_tran_so, +output wire port_tran_so_dir, +inout wire port_tran_sck, +output wire port_tran_sck_dir, +inout wire port_tran_sd, +output wire port_tran_sd_dir, + +/////////////////////////////////////////////////// +// cellular psram 0 and 1, two chips (64mbit x2 dual die per chip) + +output wire [21:16] cram0_a, +inout wire [15:0] cram0_dq, +input wire cram0_wait, +output wire cram0_clk, +output wire cram0_adv_n, +output wire cram0_cre, +output wire cram0_ce0_n, +output wire cram0_ce1_n, +output wire cram0_oe_n, +output wire cram0_we_n, +output wire cram0_ub_n, +output wire cram0_lb_n, + +output wire [21:16] cram1_a, +inout wire [15:0] cram1_dq, +input wire cram1_wait, +output wire cram1_clk, +output wire cram1_adv_n, +output wire cram1_cre, +output wire cram1_ce0_n, +output wire cram1_ce1_n, +output wire cram1_oe_n, +output wire cram1_we_n, +output wire cram1_ub_n, +output wire cram1_lb_n, + +/////////////////////////////////////////////////// +// sdram, 512mbit 16bit + +output wire [12:0] dram_a, +output wire [1:0] dram_ba, +inout wire [15:0] dram_dq, +output wire [1:0] dram_dqm, +output wire dram_clk, +output wire dram_cke, +output wire dram_ras_n, +output wire dram_cas_n, +output wire dram_we_n, + +/////////////////////////////////////////////////// +// sram, 1mbit 16bit + +output wire [16:0] sram_a, +inout wire [15:0] sram_dq, +output wire sram_oe_n, +output wire sram_we_n, +output wire sram_ub_n, +output wire sram_lb_n, + +/////////////////////////////////////////////////// +// vblank driven by dock for sync in a certain mode + +input wire vblank, + +/////////////////////////////////////////////////// +// i/o to 6515D breakout usb uart + +output wire dbg_tx, +input wire dbg_rx, + +/////////////////////////////////////////////////// +// i/o pads near jtag connector user can solder to + +output wire user1, +input wire user2, + +/////////////////////////////////////////////////// +// RFU internal i2c bus + +inout wire aux_sda, +output wire aux_scl, + +/////////////////////////////////////////////////// +// RFU, do not use +output wire vpll_feed, + + +// +// logical connections +// + +/////////////////////////////////////////////////// +// video, audio output to scaler +output wire [23:0] video_rgb, +output wire video_rgb_clock, +output wire video_rgb_clock_90, +output wire video_de, +output wire video_skip, +output wire video_vs, +output wire video_hs, + +output wire audio_mclk, +input wire audio_adc, +output wire audio_dac, +output wire audio_lrck, + +/////////////////////////////////////////////////// +// bridge bus connection +// synchronous to clk_74a +output wire bridge_endian_little, +input wire [31:0] bridge_addr, +input wire bridge_rd, +output reg [31:0] bridge_rd_data, +input wire bridge_wr, +input wire [31:0] bridge_wr_data, + +/////////////////////////////////////////////////// +// controller data +// +// key bitmap: +// [0] dpad_up +// [1] dpad_down +// [2] dpad_left +// [3] dpad_right +// [4] face_a +// [5] face_b +// [6] face_x +// [7] face_y +// [8] trig_l1 +// [9] trig_r1 +// [10] trig_l2 +// [11] trig_r2 +// [12] trig_l3 +// [13] trig_r3 +// [14] face_select +// [15] face_start +// joy values - unsigned +// [ 7: 0] lstick_x +// [15: 8] lstick_y +// [23:16] rstick_x +// [31:24] rstick_y +// trigger values - unsigned +// [ 7: 0] ltrig +// [15: 8] rtrig +// +input wire [15:0] cont1_key, +input wire [15:0] cont2_key, +input wire [15:0] cont3_key, +input wire [15:0] cont4_key, +input wire [31:0] cont1_joy, +input wire [31:0] cont2_joy, +input wire [31:0] cont3_joy, +input wire [31:0] cont4_joy, +input wire [15:0] cont1_trig, +input wire [15:0] cont2_trig, +input wire [15:0] cont3_trig, +input wire [15:0] cont4_trig + +); + +// not using the IR port, so turn off both the LED, and +// disable the receive circuit to save power +assign port_ir_tx = 0; +assign port_ir_rx_disable = 1; + +// bridge endianness +assign bridge_endian_little = 0; + +// cart is unused, so set all level translators accordingly +// directions are 0:IN, 1:OUT +assign cart_tran_bank3 = 8'hzz; +assign cart_tran_bank3_dir = 1'b0; +assign cart_tran_bank2 = 8'hzz; +assign cart_tran_bank2_dir = 1'b0; +assign cart_tran_bank1 = 8'hzz; +assign cart_tran_bank1_dir = 1'b0; +assign cart_tran_bank0 = 4'hf; +assign cart_tran_bank0_dir = 1'b1; +assign cart_tran_pin30 = 1'b0; // reset or cs2, we let the hw control it by itself +assign cart_tran_pin30_dir = 1'bz; +assign cart_pin30_pwroff_reset = 1'b0; // hardware can control this +assign cart_tran_pin31 = 1'bz; // input +assign cart_tran_pin31_dir = 1'b0; // input + +// link port is input only +assign port_tran_so = 1'bz; +assign port_tran_so_dir = 1'b0; // SO is output only +assign port_tran_si = 1'bz; +assign port_tran_si_dir = 1'b0; // SI is input only +assign port_tran_sck = 1'bz; +assign port_tran_sck_dir = 1'b0; // clock direction can change +assign port_tran_sd = 1'bz; +assign port_tran_sd_dir = 1'b0; // SD is input and not used + +// tie off the rest of the pins we are not using +assign cram0_a = 'h0; +assign cram0_dq = {16{1'bZ}}; +assign cram0_clk = 0; +assign cram0_adv_n = 1; +assign cram0_cre = 0; +assign cram0_ce0_n = 1; +assign cram0_ce1_n = 1; +assign cram0_oe_n = 1; +assign cram0_we_n = 1; +assign cram0_ub_n = 1; +assign cram0_lb_n = 1; + +assign cram1_a = 'h0; +assign cram1_dq = {16{1'bZ}}; +assign cram1_clk = 0; +assign cram1_adv_n = 1; +assign cram1_cre = 0; +assign cram1_ce0_n = 1; +assign cram1_ce1_n = 1; +assign cram1_oe_n = 1; +assign cram1_we_n = 1; +assign cram1_ub_n = 1; +assign cram1_lb_n = 1; + +assign dram_a = 'h0; +assign dram_ba = 'h0; +assign dram_dq = {16{1'bZ}}; +assign dram_dqm = 'h0; +assign dram_clk = 'h0; +assign dram_cke = 'h0; +assign dram_ras_n = 'h1; +assign dram_cas_n = 'h1; +assign dram_we_n = 'h1; + +assign sram_a = 'h0; +assign sram_dq = {16{1'bZ}}; +assign sram_oe_n = 1; +assign sram_we_n = 1; +assign sram_ub_n = 1; +assign sram_lb_n = 1; + +assign dbg_tx = 1'bZ; +assign user1 = 1'bZ; +assign aux_scl = 1'bZ; +assign vpll_feed = 1'bZ; + + +// for bridge write data, we just broadcast it to all bus devices +// for bridge read data, we have to mux it +// add your own devices here +always @(*) begin + casex(bridge_addr) + default: begin + bridge_rd_data <= 0; + end + 32'h10xxxxxx: begin + // example + // bridge_rd_data <= example_device_data; + bridge_rd_data <= 0; + end + 32'hF8xxxxxx: begin + bridge_rd_data <= cmd_bridge_rd_data; + end + endcase +end + + +// +// host/target command handler +// + wire reset_n; // driven by host commands, can be used as core-wide reset + wire [31:0] cmd_bridge_rd_data; + +// bridge host commands +// synchronous to clk_74a + wire status_boot_done = pll_core_locked; + wire status_setup_done = pll_core_locked; // rising edge triggers a target command + wire status_running = reset_n; // we are running as soon as reset_n goes high + + wire dataslot_requestread; + wire [15:0] dataslot_requestread_id; + wire dataslot_requestread_ack = 1; + wire dataslot_requestread_ok = 1; + + wire dataslot_requestwrite; + wire [15:0] dataslot_requestwrite_id; + wire dataslot_requestwrite_ack = 1; + wire dataslot_requestwrite_ok = 1; + + wire dataslot_allcomplete; + + wire savestate_supported; + wire [31:0] savestate_addr; + wire [31:0] savestate_size; + wire [31:0] savestate_maxloadsize; + + wire savestate_start; + wire savestate_start_ack; + wire savestate_start_busy; + wire savestate_start_ok; + wire savestate_start_err; + + wire savestate_load; + wire savestate_load_ack; + wire savestate_load_busy; + wire savestate_load_ok; + wire savestate_load_err; + + wire osnotify_inmenu; + +// bridge target commands +// synchronous to clk_74a + + +// bridge data slot access + + wire [9:0] datatable_addr; + wire datatable_wren; + wire [31:0] datatable_data; + wire [31:0] datatable_q; + +core_bridge_cmd icb ( + + .clk ( clk_74a ), + .reset_n ( reset_n ), + + .bridge_endian_little ( bridge_endian_little ), + .bridge_addr ( bridge_addr ), + .bridge_rd ( bridge_rd ), + .bridge_rd_data ( cmd_bridge_rd_data ), + .bridge_wr ( bridge_wr ), + .bridge_wr_data ( bridge_wr_data ), + + .status_boot_done ( status_boot_done ), + .status_setup_done ( status_setup_done ), + .status_running ( status_running ), + + .dataslot_requestread ( dataslot_requestread ), + .dataslot_requestread_id ( dataslot_requestread_id ), + .dataslot_requestread_ack ( dataslot_requestread_ack ), + .dataslot_requestread_ok ( dataslot_requestread_ok ), + + .dataslot_requestwrite ( dataslot_requestwrite ), + .dataslot_requestwrite_id ( dataslot_requestwrite_id ), + .dataslot_requestwrite_ack ( dataslot_requestwrite_ack ), + .dataslot_requestwrite_ok ( dataslot_requestwrite_ok ), + + .dataslot_allcomplete ( dataslot_allcomplete ), + + .savestate_supported ( savestate_supported ), + .savestate_addr ( savestate_addr ), + .savestate_size ( savestate_size ), + .savestate_maxloadsize ( savestate_maxloadsize ), + + .savestate_start ( savestate_start ), + .savestate_start_ack ( savestate_start_ack ), + .savestate_start_busy ( savestate_start_busy ), + .savestate_start_ok ( savestate_start_ok ), + .savestate_start_err ( savestate_start_err ), + + .savestate_load ( savestate_load ), + .savestate_load_ack ( savestate_load_ack ), + .savestate_load_busy ( savestate_load_busy ), + .savestate_load_ok ( savestate_load_ok ), + .savestate_load_err ( savestate_load_err ), + + .osnotify_inmenu ( osnotify_inmenu ), + + .datatable_addr ( datatable_addr ), + .datatable_wren ( datatable_wren ), + .datatable_data ( datatable_data ), + .datatable_q ( datatable_q ), + +); + + + +//////////////////////////////////////////////////////////////////////////////////////// + +wire clk_6, clk_25_175_90deg, clk_25, clk_50, clk_25_175; + +wire pll_core_locked; + +mf_pllbase mp1 ( + .refclk ( clk_74a ), + .rst ( 0 ), + + .outclk_0 ( clk_6 ), + .outclk_1 ( clk_25_175_90deg ), + .outclk_2 ( clk_50 ), + .outclk_3 ( clk_25 ), + .outclk_4 ( clk_25_175 ), + + .locked ( pll_core_locked ) +); + + +////////////////////////////////////////////// +// Core Data +////////////////////////////////////////////// + +wire ioctl_wr; +wire [24:0] ioctl_addr; +wire [7:0] ioctl_dout; + +data_loader_8 #( + .ADDRESS_MASK_UPPER_4(0), + .WRITE_MEM_CLOCK_DELAY(1), + .WRITE_MEM_EN_CYCLE_LENGTH(1) +) rom_loader ( + .clk_74a(clk_74a), + .clk_memory(clk_25), + + .reset_n(status_setup_done), + + .bridge_wr(bridge_wr), + .bridge_endian_little(bridge_endian_little), + .bridge_addr(bridge_addr), + .bridge_wr_data(bridge_wr_data), + + .write_en(ioctl_wr), + .write_addr(ioctl_addr), + .write_data(ioctl_dout) +); + +////////////////////////////////////////////// +// Core Audio +////////////////////////////////////////////// + + wire [7:0] audio; + + assign audio_mclk = audgen_mclk; + assign audio_dac = audgen_dac; + assign audio_lrck = audgen_lrck; + + reg audgen_nextsamp; + + // generate MCLK = 12.288mhz with fractional accumulator + reg [21:0] audgen_accum; + reg audgen_mclk; + parameter [20:0] CYCLE_48KHZ = 21'd122880 * 2; + always @(posedge clk_74a) + begin + audgen_accum <= audgen_accum + CYCLE_48KHZ; + if(audgen_accum >= 21'd742500) + begin + audgen_mclk <= ~audgen_mclk; + audgen_accum <= audgen_accum - 21'd742500 + CYCLE_48KHZ; + end + end + + // generate SCLK = 3.072mhz by dividing MCLK by 4 + reg [1:0] aud_mclk_divider; + wire audgen_sclk = aud_mclk_divider[1] /* synthesis keep*/; + always @(posedge audgen_mclk) + begin + aud_mclk_divider <= aud_mclk_divider + 1'b1; + end + + // shift out audio data as I2S + // 32 total bits per channel, but only 16 active bits at the start and then 16 dummy bits + // + // synchronize audio samples coming from the core + wire [31:0] audgen_sampdata_s; + synch_3 #(.WIDTH(32)) s5(({audio, audio}), audgen_sampdata_s, audgen_sclk); + reg [31:0] audgen_sampshift; + reg [4:0] audgen_lrck_cnt; + reg audgen_lrck; + reg audgen_dac; + always @(negedge audgen_sclk) + begin + // output the next bit + audgen_dac <= audgen_sampshift[31]; + + // 48khz * 64 + audgen_lrck_cnt <= audgen_lrck_cnt + 1'b1; + if(audgen_lrck_cnt == 31) + begin + // switch channels + audgen_lrck <= ~audgen_lrck; + + // Reload sample shifter + if(~audgen_lrck) + begin + audgen_sampshift <= audgen_sampdata_s; + end + end + else if(audgen_lrck_cnt < 16) + begin + // only shift for 16 clocks per channel + audgen_sampshift <= {audgen_sampshift[30:0], 1'b0}; + end + end + +////////////////////////////////////////////// +// Core Video +////////////////////////////////////////////// + +wire hblank, vblank_lunarlander; +wire ohblank, ovblank; +wire vgade; + +wire hs, vs; +wire ohs, ovs, ode; +wire [2:0] r,g,b; +wire [7:0] outr,outg,outb; + +reg [3:0] r2; +reg [3:0] g2; +reg [3:0] b2; + +always @(posedge clk_50) begin + r2 <= outr[7:5]; + g2 <= outg[7:5]; + b2 <= outb[7:5]; +end + +ovo #(.COLS(1), .LINES(1), .RGB(24'hFF00FF)) diff ( + .i_r({r,r,r[2:1]}), + .i_g({g,g,g[2:1]}), + .i_b({b,b,b[2:1]}), + .i_hs(~hs), + .i_vs(~vs), + .i_de(vgade), + .i_hblank(hblank), + .i_vblank(vblank_lunarlander), + .i_en(clk_25), + .i_clk(clk_50), + + .o_r(outr), + .o_g(outg), + .o_b(outb), + .o_hs(ohs), + .o_vs(ovs), + .o_de(ode), + .o_hblank(ohblank), + .o_vblank(ovblank), + + .ena(diff_count > 0), + + .in0(difficulty), + .in1(), +); + + assign video_rgb_clock = clk_25_175; + assign video_rgb_clock_90 = clk_25_175_90deg; + + reg video_de_reg; + reg video_hs_reg; + reg video_vs_reg; + reg [23:0] video_rgb_reg; + reg video_skip_reg; + + assign video_de = video_de_reg; + assign video_hs = video_hs_reg; + assign video_vs = video_vs_reg; + assign video_rgb = video_rgb_reg; + assign video_skip = video_skip_reg; + + reg hs_prev; + reg vs_prev; + reg de_prev; + + always @(posedge clk_25_175) + begin + video_de_reg <= 0; + video_rgb_reg <= 24'h0; + + if (~(ovblank || ohblank)) begin + video_de_reg <= 1; + + video_rgb_reg[23:16] <= {2{r2}}; + video_rgb_reg[15:8] <= {2{g2}}; + video_rgb_reg[7:0] <= {2{b2}}; + end + + video_hs_reg <= ~hs_prev && ohs; + video_vs_reg <= ~vs_prev && ovs; + hs_prev <= ohs; + vs_prev <= ovs; + end + +////////////////////////////////////////////// +// Core Controls +////////////////////////////////////////////// + +reg [7:0] dpad_thrust = 0; + +// 1 second = 50,000,000 cycles (duh) +// If we want to go from zero to full throttle in 1 second we tick every +// 196,850 cycles. +always @(posedge clk_50) begin :thrust_count + int thrust_count; + thrust_count <= thrust_count + 1'd1; + + if (thrust_count == 'd196_850) begin + thrust_count <= 0; + if ((cont1_key[5] | cont2_key[5]) && dpad_thrust > 0) + dpad_thrust <= dpad_thrust - 1'd1; + + if ((cont1_key[4] | cont2_key[4]) && dpad_thrust < 'd254) + dpad_thrust <= dpad_thrust + 1'd1; + end +end + +//4 5 6 7 8 9 +//Start,Select,Coin,Abort,Turn Right,Turn Left + +wire in_select = ~(cont1_key[14] | cont2_key[14]); +wire in_start = ~(cont1_key[15] | cont2_key[15]); +wire in_turn_l = ~(cont1_key[2] | cont2_key[2]); +wire in_turn_r = ~(cont1_key[3] | cont2_key[3]); +wire in_coin = ~(cont1_key[9] | cont2_key[9]); +wire in_abort = ~(cont1_key[8] | cont2_key[8]); + +wire [7:0] in_thrust = dpad_thrust; + +////////////////////////////////////////////// +// Core Instance +////////////////////////////////////////////// + +wire lamp2, lamp3, lamp4, lamp5; + +wire [1:0] difficulty; + +always_comb begin + if(lamp5) + difficulty = 2'd3; + else if(lamp4) + difficulty = 2'd2; + else if(lamp3) + difficulty = 2'd1; + else + difficulty = 2'd0; +end + +int diff_count = 0; +always @(posedge clk_50) begin + if (diff_count > 0) + diff_count <= diff_count - 1; + + if (~in_select) + diff_count <= 'd500_000_000; // 10 seconds +end + +wire is_starting; +wire [7:0] m_dip = {1'b0,1'b0,1'b1,1'b1,1'b0,1'b1,1'b1,1'b1}; + +LLANDER_TOP LLANDER_TOP +( + .ROT_LEFT_L(in_turn_l), + .ROT_RIGHT_L(in_turn_r), + .ABORT_L(in_abort), + .GAME_SEL_L(in_select), + .START_L(in_start), + .COIN1_L(in_coin), + .COIN2_L(in_coin), + .THRUST(in_thrust), + .DIAG_STEP_L(1'b1), + .SLAM_L(1'b1), + .SELF_TEST_L(1'b1), + .START_SEL_L(is_starting), + .LAMP2(lamp2), + .LAMP3(lamp3), + .LAMP4(lamp4), + .LAMP5(lamp5), + + .AUDIO_OUT(audio), + .dn_addr(ioctl_addr[15:0]), + .dn_data(ioctl_dout), + .dn_wr(ioctl_wr), + .VIDEO_R_OUT(r), + .VIDEO_G_OUT(g), + .VIDEO_B_OUT(b), + .HSYNC_OUT(hs), + .VSYNC_OUT(vs), + .VGA_DE(vgade), + .VID_HBLANK(hblank), + .VID_VBLANK(vblank_lunarlander), + .DIP(m_dip), + .RESET_L (reset_n), + .clk_6(clk_6), + .clk_25(clk_25) +); + +endmodule diff --git a/src/fpga/core/data_loader_8.v b/src/fpga/core/data_loader_8.v new file mode 100644 index 0000000..d877d4a --- /dev/null +++ b/src/fpga/core/data_loader_8.v @@ -0,0 +1,174 @@ +// MIT License + +// Copyright (c) 2022 Adam Gastineau + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +// A data loader for consuming APF bridge writes and directing them to some storage medium +// +// This takes the 32 bit words from APF, and splits it into four bytes. You can configure the cycle delay +// by setting WRITE_MEM_CLOCK_DELAY +module data_loader_8 #( + // Upper 4 bits of address + parameter ADDRESS_MASK_UPPER_4 = 0, + parameter ADDRESS_SIZE = 14, + + // Number of clk_memory cycles to delay each write output. + // Be aware that APF sends data every ~75 74MHz cycles, so you cannot send data slower than this + parameter WRITE_MEM_CLOCK_DELAY = 10, + + // Number of clk_memory cycles to hold the write_en signal high + parameter WRITE_MEM_EN_CYCLE_LENGTH = 1 +) ( + input wire clk_74a, + input wire clk_memory, + + // DO NOT USE THE CORE RESET SIGNAL + // That signal only goes high after data finishes loading, but you are using this to load data + input wire reset_n, + + input wire bridge_wr, + input wire bridge_endian_little, + input wire [31:0] bridge_addr, + input wire [31:0] bridge_wr_data, + + // These outputs are synced to the memory clock + output reg write_en, + output reg [ADDRESS_SIZE:0] write_addr, + output reg [7:0] write_data +); + + reg start_memory_write; + reg [1:0] start_memory_write_count; + reg [ADDRESS_SIZE:0] buffered_addr; + reg [31:0] buffered_data; + + wire start_memory_write_s; + wire [ADDRESS_SIZE:0] buffered_addr_s; + wire [31:0] buffered_data_s; + + synch_3 start_write_s ( + start_memory_write, + start_memory_write_s, + clk_memory + ); + + synch_3 #( + .WIDTH(ADDRESS_SIZE + 1) + ) addr_s ( + buffered_addr, + buffered_addr_s, + clk_memory + ); + + synch_3 #( + .WIDTH(32) + ) data_s ( + buffered_data, + buffered_data_s, + clk_memory + ); + + // Receive APF writes and buffer them into the memory clock domain + always @(posedge clk_74a) begin + if (~reset_n) begin + start_memory_write <= 0; + end else if (bridge_wr && bridge_addr[31:28] == ADDRESS_MASK_UPPER_4) begin + // Set up buffered writes + start_memory_write <= 1; + start_memory_write_count <= 3; + + buffered_addr <= bridge_addr[ADDRESS_SIZE:0]; + + if (bridge_endian_little) begin + buffered_data <= bridge_wr_data; + end else begin + buffered_data <= { + bridge_wr_data[7:0], bridge_wr_data[15:8], bridge_wr_data[23:16], bridge_wr_data[31:24] + }; + end + end else begin + start_memory_write_count <= start_memory_write_count - 1; + + if (start_memory_write_count == 0) begin + start_memory_write <= 0; + end + end + end + + reg prev_has_data; + reg needs_write_data; + reg [1:0] write_byte; + reg [7:0] write_delay_count; + reg [31:0] data_shift_buffer; + + // Consume buffered and synced data, sending out to memory + always @(posedge clk_memory) begin + if (~reset_n) begin + prev_has_data <= 0; + needs_write_data <= 0; + write_byte <= 0; + write_delay_count <= 0; + + write_addr <= 0; + write_data <= 0; + write_en <= 0; + end else begin + prev_has_data <= start_memory_write_s; + + if (~prev_has_data && start_memory_write_s) begin + // Newly received buffer data + needs_write_data <= 1; + write_byte <= 0; + write_delay_count <= 0; + // ack_memory_write <= 1; + + data_shift_buffer <= buffered_data_s; + end + + if (write_delay_count != 0) begin + write_delay_count <= write_delay_count - 1; + end + + if (write_delay_count <= WRITE_MEM_CLOCK_DELAY - WRITE_MEM_EN_CYCLE_LENGTH) begin + // Leave write_en on for WRITE_MEM_EN_CYCLE_LENGTH + write_en <= 0; + end + + if (needs_write_data && write_delay_count == 0) begin + write_delay_count <= WRITE_MEM_CLOCK_DELAY - 1; + write_en <= 1; + + if (write_byte == 3) begin + needs_write_data <= 0; + end + + write_addr <= buffered_addr_s + write_byte; + + write_data <= data_shift_buffer[7:0]; + + write_byte <= write_byte + 1; + data_shift_buffer <= data_shift_buffer[31:8]; + end + end + end + +endmodule \ No newline at end of file diff --git a/src/fpga/core/mf_pllbase.bsf b/src/fpga/core/mf_pllbase.bsf new file mode 100644 index 0000000..101956a --- /dev/null +++ b/src/fpga/core/mf_pllbase.bsf @@ -0,0 +1,126 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 2022 Intel Corporation. All rights reserved. +Your use of Intel Corporation's design tools, logic functions +and other software and tools, and any 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, at +https://fpgasoftware.intel.com/eula. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 160 304) + (text "mf_pllbase" (rect 48 -1 91 11)(font "Arial" (font_size 10))) + (text "inst" (rect 8 288 20 300)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "refclk" (rect 0 0 22 12)(font "Arial" (font_size 8))) + (text "refclk" (rect 4 61 40 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 48 72)(line_width 1)) + ) + (port + (pt 0 112) + (input) + (text "rst" (rect 0 0 10 12)(font "Arial" (font_size 8))) + (text "rst" (rect 4 101 22 112)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 48 112)(line_width 1)) + ) + (port + (pt 160 72) + (output) + (text "outclk_0" (rect 0 0 33 12)(font "Arial" (font_size 8))) + (text "outclk_0" (rect 117 61 165 72)(font "Arial" (font_size 8))) + (line (pt 160 72)(pt 112 72)(line_width 1)) + ) + (port + (pt 160 112) + (output) + (text "outclk_1" (rect 0 0 31 12)(font "Arial" (font_size 8))) + (text "outclk_1" (rect 119 101 167 112)(font "Arial" (font_size 8))) + (line (pt 160 112)(pt 112 112)(line_width 1)) + ) + (port + (pt 160 152) + (output) + (text "outclk_2" (rect 0 0 33 12)(font "Arial" (font_size 8))) + (text "outclk_2" (rect 117 141 165 152)(font "Arial" (font_size 8))) + (line (pt 160 152)(pt 112 152)(line_width 1)) + ) + (port + (pt 160 192) + (output) + (text "outclk_3" (rect 0 0 33 12)(font "Arial" (font_size 8))) + (text "outclk_3" (rect 117 181 165 192)(font "Arial" (font_size 8))) + (line (pt 160 192)(pt 112 192)(line_width 1)) + ) + (port + (pt 160 232) + (output) + (text "outclk_4" (rect 0 0 34 12)(font "Arial" (font_size 8))) + (text "outclk_4" (rect 117 221 165 232)(font "Arial" (font_size 8))) + (line (pt 160 232)(pt 112 232)(line_width 1)) + ) + (port + (pt 160 272) + (output) + (text "locked" (rect 0 0 24 12)(font "Arial" (font_size 8))) + (text "locked" (rect 127 261 163 272)(font "Arial" (font_size 8))) + (line (pt 160 272)(pt 112 272)(line_width 1)) + ) + (drawing + (text "refclk" (rect 16 43 68 99)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 53 67 124 144)(font "Arial" (color 0 0 0))) + (text "reset" (rect 19 83 68 179)(font "Arial" (color 128 0 0)(font_size 9))) + (text "reset" (rect 53 107 136 224)(font "Arial" (color 0 0 0))) + (text "outclk0" (rect 113 43 268 99)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 97 67 212 144)(font "Arial" (color 0 0 0))) + (text "outclk1" (rect 113 83 268 179)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 97 107 212 224)(font "Arial" (color 0 0 0))) + (text "outclk2" (rect 113 123 268 259)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 97 147 212 304)(font "Arial" (color 0 0 0))) + (text "outclk3" (rect 113 163 268 339)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 97 187 212 384)(font "Arial" (color 0 0 0))) + (text "outclk4" (rect 113 203 268 419)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 97 227 212 464)(font "Arial" (color 0 0 0))) + (text "locked" (rect 113 243 262 499)(font "Arial" (color 128 0 0)(font_size 9))) + (text "export" (rect 82 267 200 544)(font "Arial" (color 0 0 0))) + (text " altera_pll " (rect 118 288 308 586)(font "Arial" )) + (line (pt 48 32)(pt 112 32)(line_width 1)) + (line (pt 112 32)(pt 112 288)(line_width 1)) + (line (pt 48 288)(pt 112 288)(line_width 1)) + (line (pt 48 32)(pt 48 288)(line_width 1)) + (line (pt 49 52)(pt 49 76)(line_width 1)) + (line (pt 50 52)(pt 50 76)(line_width 1)) + (line (pt 49 92)(pt 49 116)(line_width 1)) + (line (pt 50 92)(pt 50 116)(line_width 1)) + (line (pt 111 52)(pt 111 76)(line_width 1)) + (line (pt 110 52)(pt 110 76)(line_width 1)) + (line (pt 111 92)(pt 111 116)(line_width 1)) + (line (pt 110 92)(pt 110 116)(line_width 1)) + (line (pt 111 132)(pt 111 156)(line_width 1)) + (line (pt 110 132)(pt 110 156)(line_width 1)) + (line (pt 111 172)(pt 111 196)(line_width 1)) + (line (pt 110 172)(pt 110 196)(line_width 1)) + (line (pt 111 212)(pt 111 236)(line_width 1)) + (line (pt 110 212)(pt 110 236)(line_width 1)) + (line (pt 111 252)(pt 111 276)(line_width 1)) + (line (pt 110 252)(pt 110 276)(line_width 1)) + (line (pt 0 0)(pt 160 0)(line_width 1)) + (line (pt 160 0)(pt 160 304)(line_width 1)) + (line (pt 0 304)(pt 160 304)(line_width 1)) + (line (pt 0 0)(pt 0 304)(line_width 1)) + ) +) diff --git a/src/fpga/core/mf_pllbase.ppf b/src/fpga/core/mf_pllbase.ppf new file mode 100644 index 0000000..8e1d7c2 --- /dev/null +++ b/src/fpga/core/mf_pllbase.ppf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/src/fpga/core/mf_pllbase.qip b/src/fpga/core/mf_pllbase.qip new file mode 100644 index 0000000..b3025aa --- /dev/null +++ b/src/fpga/core/mf_pllbase.qip @@ -0,0 +1,337 @@ +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_TOOL_NAME "altera_pll" +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_TOOL_VERSION "21.1" +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_TOOL_ENV "mwpim" +set_global_assignment -library "mf_pllbase" -name MISC_FILE [file join $::quartus(qip_path) "mf_pllbase.cmp"] +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_TARGETED_DEVICE_FAMILY "Cyclone V" +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_GENERATED_DEVICE_FAMILY "{Cyclone V}" +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_QSYS_MODE "UNKNOWN" +set_global_assignment -name SYNTHESIS_ONLY_QIP ON +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_COMPONENT_NAME "bWZfcGxsYmFzZQ==" +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_COMPONENT_DISPLAY_NAME "UExMIEludGVsIEZQR0EgSVA=" +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_COMPONENT_REPORT_HIERARCHY "Off" +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_COMPONENT_INTERNAL "Off" +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_COMPONENT_AUTHOR "SW50ZWwgQ29ycG9yYXRpb24=" +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_COMPONENT_VERSION "MjEuMQ==" +set_global_assignment -entity "mf_pllbase" -library "mf_pllbase" -name IP_COMPONENT_DESCRIPTION "SW50ZWwgUGhhc2UtTG9ja2VkIExvb3A=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_NAME "bWZfcGxsYmFzZV8wMDAy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_DISPLAY_NAME "UExMIEludGVsIEZQR0EgSVA=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_REPORT_HIERARCHY "Off" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_INTERNAL "Off" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_AUTHOR "SW50ZWwgQ29ycG9yYXRpb24=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_VERSION "MjEuMQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_DESCRIPTION "SW50ZWwgUGhhc2UtTG9ja2VkIExvb3A=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZGVidWdfcHJpbnRfb3V0cHV0::ZmFsc2U=::ZGVidWdfcHJpbnRfb3V0cHV0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZGVidWdfdXNlX3JiY190YWZfbWV0aG9k::ZmFsc2U=::ZGVidWdfdXNlX3JiY190YWZfbWV0aG9k" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZGV2aWNl::NUNFQkEyRjE3QTc=::ZGV2aWNl" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BsbF9tb2Rl::RnJhY3Rpb25hbC1OIFBMTA==::UExMIE1vZGU=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZnJhY3Rpb25hbF92Y29fbXVsdGlwbGllcg==::dHJ1ZQ==::ZnJhY3Rpb25hbF92Y29fbXVsdGlwbGllcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3JlZmVyZW5jZV9jbG9ja19mcmVxdWVuY3k=::NzQuMjU=::UmVmZXJlbmNlIENsb2NrIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cmVmZXJlbmNlX2Nsb2NrX2ZyZXF1ZW5jeQ==::NzQuMjUgTUh6::cmVmZXJlbmNlX2Nsb2NrX2ZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2NoYW5uZWxfc3BhY2luZw==::MC4w::Q2hhbm5lbCBTcGFjaW5n" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX29wZXJhdGlvbl9tb2Rl::bm9ybWFs::T3BlcmF0aW9uIE1vZGU=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2ZlZWRiYWNrX2Nsb2Nr::R2xvYmFsIENsb2Nr::RmVlZGJhY2sgQ2xvY2s=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2ZyYWN0aW9uYWxfY291dA==::MzI=::RnJhY3Rpb25hbCBjYXJyeSBvdXQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RzbV9vdXRfc2Vs::MXN0X29yZGVy::RFNNIE9yZGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3BlcmF0aW9uX21vZGU=::bm9ybWFs::b3BlcmF0aW9uX21vZGU=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3VzZV9sb2NrZWQ=::dHJ1ZQ==::RW5hYmxlIGxvY2tlZCBvdXRwdXQgcG9ydA==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2VuX2Fkdl9wYXJhbXM=::ZmFsc2U=::RW5hYmxlIHBoeXNpY2FsIG91dHB1dCBjbG9jayBwYXJhbWV0ZXJz" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX251bWJlcl9vZl9jbG9ja3M=::NQ==::TnVtYmVyIE9mIENsb2Nrcw==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "bnVtYmVyX29mX2Nsb2Nrcw==::NQ==::bnVtYmVyX29mX2Nsb2Nrcw==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX211bHRpcGx5X2ZhY3Rvcg==::MQ==::TXVsdGlwbHkgRmFjdG9yIChNLUNvdW50ZXIp" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2ZyYWNfbXVsdGlwbHlfZmFjdG9y::MQ==::RnJhY3Rpb25hbCBNdWx0aXBseSBGYWN0b3IgKEsp" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3Jfbg==::MQ==::RGl2aWRlIEZhY3RvciAoTi1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjA=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kw::Ni4w::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzA=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Iw::MTU=::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjA=::MjU1OTYxODcwMw==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMA==::MTkz::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MA==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMA==::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MA==::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzA=::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDA=::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUw::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjE=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kx::MjUuMTc1::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzE=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Ix::MTU=::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjE=::MjU1OTYxODcwMw==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMQ==::NDY=::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MQ==::Mjc2Ljc0MDY0MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMQ==::ZGVncmVlcw==::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MQ==::MjAzNDU=::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzE=::OTAuMA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDE=::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUx::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjI=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3ky::NTAuMA==::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzI=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Iy::MTU=::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjI=::MjU1OTYxODcwMw==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMg==::MjM=::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5Mg==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMg==::ZGVncmVlcw==::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0Mg==::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzI=::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDI=::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUy::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjM=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kz::MjUuMA==::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzM=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Iz::MTU=::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjM=::MjU1OTYxODcwMw==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMw==::NDY=::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5Mw==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMw==::ZGVncmVlcw==::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0Mw==::NTgxMQ==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzM=::LTQ1LjA=::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDM=::MjI1LjAgZGVn::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUz::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjQ=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3k0::MjUuMTc1::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzQ=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3I0::MTU=::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjQ=::MjU1OTYxODcwMw==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yNA==::NDY=::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5NA==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzNA==::ZGVncmVlcw==::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0NA==::NTY0Mg==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzQ=::MjcwLjA=::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDQ=::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGU0::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjU=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3k1::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzU=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3I1::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjU=::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yNQ==::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5NQ==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzNQ==::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0NQ==::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzU=::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDU=::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGU1::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjY=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3k2::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzY=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3I2::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjY=::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yNg==::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5Ng==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzNg==::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0Ng==::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzY=::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDY=::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGU2::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjc=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3k3::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzc=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3I3::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3Rvcjc=::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yNw==::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5Nw==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzNw==::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0Nw==::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzc=::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDc=::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGU3::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjg=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3k4::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzg=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3I4::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3Rvcjg=::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yOA==::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5OA==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzOA==::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0OA==::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzg=::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDg=::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGU4::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjk=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3k5::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzk=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3I5::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3Rvcjk=::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yOQ==::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5OQ==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzOQ==::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0OQ==::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzk=::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDk=::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGU5::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjEw::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kxMA==::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzEw::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3IxMA==::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjEw::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMTA=::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MTA=::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMTA=::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MTA=::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzEw::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDEw::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUxMA==::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjEx::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kxMQ==::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzEx::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3IxMQ==::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjEx::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMTE=::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MTE=::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMTE=::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MTE=::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzEx::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDEx::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUxMQ==::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjEy::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kxMg==::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzEy::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3IxMg==::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjEy::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMTI=::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MTI=::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMTI=::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MTI=::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzEy::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDEy::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUxMg==::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjEz::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kxMw==::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzEz::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3IxMw==::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjEz::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMTM=::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MTM=::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMTM=::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MTM=::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzEz::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDEz::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUxMw==::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjE0::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kxNA==::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzE0::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3IxNA==::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjE0::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMTQ=::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MTQ=::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMTQ=::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MTQ=::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzE0::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDE0::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUxNA==::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjE1::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kxNQ==::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzE1::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3IxNQ==::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjE1::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMTU=::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MTU=::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMTU=::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MTU=::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzE1::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDE1::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUxNQ==::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjE2::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kxNg==::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzE2::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3IxNg==::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjE2::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMTY=::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MTY=::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMTY=::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MTY=::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzE2::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDE2::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUxNg==::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjE3::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kxNw==::MTAwLjA=::RGVzaXJlZCBGcmVxdWVuY3k=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzE3::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3IxNw==::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjE3::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMTc=::MQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MTc=::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMTc=::cHM=::UGhhc2UgU2hpZnQgdW5pdHM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MTc=::MA==::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzE3::MC4w::UGhhc2UgU2hpZnQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDE3::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUxNw==::NTA=::RHV0eSBDeWNsZQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTA=::NS45OTk5OTkgTUh6::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTA=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQw::MCBwcw==::cGhhc2Vfc2hpZnQw" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTA=::NTA=::ZHV0eV9jeWNsZTA=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE=::MjUuMTczOTExIE1Ieg==::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQx::OTkzMSBwcw==::cGhhc2Vfc2hpZnQx" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTE=::NTA=::ZHV0eV9jeWNsZTE=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTI=::NTAuMzQ3ODIyIE1Ieg==::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTI=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQy::MCBwcw==::cGhhc2Vfc2hpZnQy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTI=::NTA=::ZHV0eV9jeWNsZTI=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTM=::MjUuMTczOTEwIE1Ieg==::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQz::MzQ3NTggcHM=::cGhhc2Vfc2hpZnQz" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTM=::NTA=::ZHV0eV9jeWNsZTM=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTQ=::MjUuMTczOTEwIE1Ieg==::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQ0::Mjk3OTMgcHM=::cGhhc2Vfc2hpZnQ0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTQ=::NTA=::ZHV0eV9jeWNsZTQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTU=::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTU=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQ1::MCBwcw==::cGhhc2Vfc2hpZnQ1" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTU=::NTA=::ZHV0eV9jeWNsZTU=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTY=::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTY=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQ2::MCBwcw==::cGhhc2Vfc2hpZnQ2" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTY=::NTA=::ZHV0eV9jeWNsZTY=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTc=::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTc=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQ3::MCBwcw==::cGhhc2Vfc2hpZnQ3" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTc=::NTA=::ZHV0eV9jeWNsZTc=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTg=::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTg=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQ4::MCBwcw==::cGhhc2Vfc2hpZnQ4" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTg=::NTA=::ZHV0eV9jeWNsZTg=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTk=::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTk=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQ5::MCBwcw==::cGhhc2Vfc2hpZnQ5" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTk=::NTA=::ZHV0eV9jeWNsZTk=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTEw::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTEw" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQxMA==::MCBwcw==::cGhhc2Vfc2hpZnQxMA==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTEw::NTA=::ZHV0eV9jeWNsZTEw" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTEx::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTEx" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQxMQ==::MCBwcw==::cGhhc2Vfc2hpZnQxMQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTEx::NTA=::ZHV0eV9jeWNsZTEx" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTEy::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTEy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQxMg==::MCBwcw==::cGhhc2Vfc2hpZnQxMg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTEy::NTA=::ZHV0eV9jeWNsZTEy" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTEz::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTEz" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQxMw==::MCBwcw==::cGhhc2Vfc2hpZnQxMw==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTEz::NTA=::ZHV0eV9jeWNsZTEz" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE0::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQxNA==::MCBwcw==::cGhhc2Vfc2hpZnQxNA==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTE0::NTA=::ZHV0eV9jeWNsZTE0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE1::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE1" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQxNQ==::MCBwcw==::cGhhc2Vfc2hpZnQxNQ==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTE1::NTA=::ZHV0eV9jeWNsZTE1" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE2::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE2" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQxNg==::MCBwcw==::cGhhc2Vfc2hpZnQxNg==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTE2::NTA=::ZHV0eV9jeWNsZTE2" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE3::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE3" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQxNw==::MCBwcw==::cGhhc2Vfc2hpZnQxNw==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTE3::NTA=::ZHV0eV9jeWNsZTE3" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BsbF9hdXRvX3Jlc2V0::T2Zm::UExMIEF1dG8gUmVzZXQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BsbF9iYW5kd2lkdGhfcHJlc2V0::QXV0bw==::UExMIEJhbmR3aWR0aCBQcmVzZXQ=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2VuX3JlY29uZg==::ZmFsc2U=::RW5hYmxlIGR5bmFtaWMgcmVjb25maWd1cmF0aW9uIG9mIFBMTA==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2VuX2Rwc19wb3J0cw==::ZmFsc2U=::RW5hYmxlIGFjY2VzcyB0byBkeW5hbWljIHBoYXNlIHNoaWZ0IHBvcnRz" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2VuX3Bob3V0X3BvcnRz::ZmFsc2U=::RW5hYmxlIGFjY2VzcyB0byBQTEwgRFBBIG91dHB1dCBwb3J0" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGxsX3R5cGU=::R2VuZXJhbA==::UExMIFRZUEU=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "cGxsX3N1YnR5cGU=::R2VuZXJhbA==::UExMIFNVQlRZUEU=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BhcmFtZXRlcl9saXN0::TS1Db3VudGVyIEhpIERpdmlkZSxNLUNvdW50ZXIgTG93IERpdmlkZSxOLUNvdW50ZXIgSGkgRGl2aWRlLE4tQ291bnRlciBMb3cgRGl2aWRlLE0tQ291bnRlciBCeXBhc3MgRW5hYmxlLE4tQ291bnRlciBCeXBhc3MgRW5hYmxlLE0tQ291bnRlciBPZGQgRGl2aWRlIEVuYWJsZSxOLUNvdW50ZXIgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTAgSGkgRGl2aWRlLEMtQ291bnRlci0wIExvdyBEaXZpZGUsQy1Db3VudGVyLTAgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0wIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTAgSW5wdXQgU291cmNlLEMtQ291bnRlci0wIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTAgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTEgSGkgRGl2aWRlLEMtQ291bnRlci0xIExvdyBEaXZpZGUsQy1Db3VudGVyLTEgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0xIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTEgSW5wdXQgU291cmNlLEMtQ291bnRlci0xIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTEgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTIgSGkgRGl2aWRlLEMtQ291bnRlci0yIExvdyBEaXZpZGUsQy1Db3VudGVyLTIgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0yIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTIgSW5wdXQgU291cmNlLEMtQ291bnRlci0yIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTIgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTMgSGkgRGl2aWRlLEMtQ291bnRlci0zIExvdyBEaXZpZGUsQy1Db3VudGVyLTMgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0zIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTMgSW5wdXQgU291cmNlLEMtQ291bnRlci0zIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTMgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTQgSGkgRGl2aWRlLEMtQ291bnRlci00IExvdyBEaXZpZGUsQy1Db3VudGVyLTQgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci00IFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTQgSW5wdXQgU291cmNlLEMtQ291bnRlci00IEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTQgT2RkIERpdmlkZSBFbmFibGUsVkNPIFBvc3QgRGl2aWRlIENvdW50ZXIgRW5hYmxlLENoYXJnZSBQdW1wIGN1cnJlbnQgKHVBKSxMb29wIEZpbHRlciBCYW5kd2lkdGggUmVzaXN0b3IgKE9obXMpICxQTEwgT3V0cHV0IFZDTyBGcmVxdWVuY3ksSy1GcmFjdGlvbmFsIERpdmlzaW9uIFZhbHVlIChEU00pLEZlZWRiYWNrIENsb2NrIFR5cGUsRmVlZGJhY2sgQ2xvY2sgTVVYIDEsRmVlZGJhY2sgQ2xvY2sgTVVYIDIsTSBDb3VudGVyIFNvdXJjZSBNVVgsUExMIEF1dG8gUmVzZXQ=::UGFyYW1ldGVyIE5hbWVz" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3BhcmFtZXRlcl92YWx1ZXM=::OCw3LDI1NiwyNTYsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLDk3LDk2LDEsMCxwaF9tdXhfY2xrLGZhbHNlLHRydWUsMjMsMjMsMTIsNCxwaF9tdXhfY2xrLGZhbHNlLGZhbHNlLDEyLDExLDEsMCxwaF9tdXhfY2xrLGZhbHNlLHRydWUsMjMsMjMsNDEsMixwaF9tdXhfY2xrLGZhbHNlLGZhbHNlLDIzLDIzLDM1LDQscGhfbXV4X2NsayxmYWxzZSxmYWxzZSwxLDIwLDQwMDAsMTE1Ny45OTk4NTcgTUh6LDI1NTk2MTg3MDMsZ2NsayxnbGIsZmJfMSxwaF9tdXhfY2xrLGZhbHNl::UGFyYW1ldGVyIFZhbHVlcw==" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX21pZl9nZW5lcmF0ZQ==::ZmFsc2U=::R2VuZXJhdGUgTUlGIGZpbGU=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9taWZfZHBz::ZmFsc2U=::RW5hYmxlIER5bmFtaWMgUGhhc2UgU2hpZnQgZm9yIE1JRiBzdHJlYW1pbmc=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Rwc19jbnRy::QzA=::RFBTIENvdW50ZXIgU2VsZWN0aW9u" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Rwc19udW0=::MQ==::TnVtYmVyIG9mIER5bmFtaWMgUGhhc2UgU2hpZnRz" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2Rwc19kaXI=::UG9zaXRpdmU=::RHluYW1pYyBQaGFzZSBTaGlmdCBEaXJlY3Rpb24=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX3JlZmNsa19zd2l0Y2g=::ZmFsc2U=::Q3JlYXRlIGEgc2Vjb25kIGlucHV0IGNsayAncmVmY2xrMSc=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9jYXNjYWRlX291dA==::ZmFsc2U=::Q3JlYXRlIGEgJ2Nhc2NhZGVfb3V0JyBzaWduYWwgdG8gY29ubmVjdCB3aXRoIGEgZG93bnN0cmVhbSBQTEw=" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9jYXNjYWRlX2lu::ZmFsc2U=::Q3JlYXRlIGFuIGFkanBsbGluIG9yIGNjbGsgc2lnbmFsIHRvIGNvbm5lY3Qgd2l0aCBhbiB1cHN0cmVhbSBQTEw=" + +set_global_assignment -library "mf_pllbase" -name VERILOG_FILE [file join $::quartus(qip_path) "mf_pllbase.v"] +set_global_assignment -library "mf_pllbase" -name VERILOG_FILE [file join $::quartus(qip_path) "mf_pllbase/mf_pllbase_0002.v"] +set_global_assignment -library "mf_pllbase" -name QIP_FILE [file join $::quartus(qip_path) "mf_pllbase/mf_pllbase_0002.qip"] + +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_TOOL_NAME "altera_pll" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_TOOL_VERSION "21.1" +set_global_assignment -entity "mf_pllbase_0002" -library "mf_pllbase" -name IP_TOOL_ENV "mwpim" diff --git a/src/fpga/core/mf_pllbase.sip b/src/fpga/core/mf_pllbase.sip new file mode 100644 index 0000000..dfd33b0 --- /dev/null +++ b/src/fpga/core/mf_pllbase.sip @@ -0,0 +1,6 @@ +set_global_assignment -entity "mf_pllbase" -library "lib_mf_pllbase" -name IP_TOOL_NAME "altera_pll" +set_global_assignment -entity "mf_pllbase" -library "lib_mf_pllbase" -name IP_TOOL_VERSION "21.1" +set_global_assignment -entity "mf_pllbase" -library "lib_mf_pllbase" -name IP_TOOL_ENV "mwpim" +set_global_assignment -library "lib_mf_pllbase" -name SPD_FILE [file join $::quartus(sip_path) "mf_pllbase.spd"] + +set_global_assignment -library "lib_mf_pllbase" -name MISC_FILE [file join $::quartus(sip_path) "mf_pllbase_sim/mf_pllbase.vo"] diff --git a/src/fpga/core/mf_pllbase.spd b/src/fpga/core/mf_pllbase.spd new file mode 100644 index 0000000..025504e --- /dev/null +++ b/src/fpga/core/mf_pllbase.spd @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/fpga/core/mf_pllbase.v b/src/fpga/core/mf_pllbase.v new file mode 100644 index 0000000..2d451e7 --- /dev/null +++ b/src/fpga/core/mf_pllbase.v @@ -0,0 +1,261 @@ +// megafunction wizard: %PLL Intel FPGA IP v21.1% +// GENERATION: XML +// mf_pllbase.v + +// Generated using ACDS version 21.1 850 + +`timescale 1 ps / 1 ps +module mf_pllbase ( + input wire refclk, // refclk.clk + input wire rst, // reset.reset + output wire outclk_0, // outclk0.clk + output wire outclk_1, // outclk1.clk + output wire outclk_2, // outclk2.clk + output wire outclk_3, // outclk3.clk + output wire outclk_4, // outclk4.clk + output wire locked // locked.export + ); + + mf_pllbase_0002 mf_pllbase_inst ( + .refclk (refclk), // refclk.clk + .rst (rst), // reset.reset + .outclk_0 (outclk_0), // outclk0.clk + .outclk_1 (outclk_1), // outclk1.clk + .outclk_2 (outclk_2), // outclk2.clk + .outclk_3 (outclk_3), // outclk3.clk + .outclk_4 (outclk_4), // outclk4.clk + .locked (locked) // locked.export + ); + +endmodule +// Retrieval info: +// +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// Retrieval info: +// IPFS_FILES : mf_pllbase.vo +// RELATED_FILES: mf_pllbase.v, mf_pllbase_0002.v diff --git a/src/fpga/core/mf_pllbase/mf_pllbase_0002.qip b/src/fpga/core/mf_pllbase/mf_pllbase_0002.qip new file mode 100644 index 0000000..5578caa --- /dev/null +++ b/src/fpga/core/mf_pllbase/mf_pllbase_0002.qip @@ -0,0 +1,4 @@ +set_instance_assignment -name PLL_COMPENSATION_MODE NORMAL -to "*mf_pllbase_0002*|altera_pll:altera_pll_i*|*" +set_instance_assignment -name PLL_CHANNEL_SPACING "0.0 KHz" -to "*mf_pllbase_0002*|altera_pll:altera_pll_i*|*" +set_instance_assignment -name PLL_AUTO_RESET OFF -to "*mf_pllbase_0002*|altera_pll:altera_pll_i*|*" +set_instance_assignment -name PLL_BANDWIDTH_PRESET AUTO -to "*mf_pllbase_0002*|altera_pll:altera_pll_i*|*" diff --git a/src/fpga/core/mf_pllbase/mf_pllbase_0002.v b/src/fpga/core/mf_pllbase/mf_pllbase_0002.v new file mode 100644 index 0000000..8703baf --- /dev/null +++ b/src/fpga/core/mf_pllbase/mf_pllbase_0002.v @@ -0,0 +1,99 @@ +`timescale 1ns/10ps +module mf_pllbase_0002( + + // interface 'refclk' + input wire refclk, + + // interface 'reset' + input wire rst, + + // interface 'outclk0' + output wire outclk_0, + + // interface 'outclk1' + output wire outclk_1, + + // interface 'outclk2' + output wire outclk_2, + + // interface 'outclk3' + output wire outclk_3, + + // interface 'outclk4' + output wire outclk_4, + + // interface 'locked' + output wire locked +); + + altera_pll #( + .fractional_vco_multiplier("true"), + .reference_clock_frequency("74.25 MHz"), + .operation_mode("normal"), + .number_of_clocks(5), + .output_clock_frequency0("5.999999 MHz"), + .phase_shift0("0 ps"), + .duty_cycle0(50), + .output_clock_frequency1("25.173911 MHz"), + .phase_shift1("9931 ps"), + .duty_cycle1(50), + .output_clock_frequency2("50.347822 MHz"), + .phase_shift2("0 ps"), + .duty_cycle2(50), + .output_clock_frequency3("25.173910 MHz"), + .phase_shift3("34758 ps"), + .duty_cycle3(50), + .output_clock_frequency4("25.173910 MHz"), + .phase_shift4("29793 ps"), + .duty_cycle4(50), + .output_clock_frequency5("0 MHz"), + .phase_shift5("0 ps"), + .duty_cycle5(50), + .output_clock_frequency6("0 MHz"), + .phase_shift6("0 ps"), + .duty_cycle6(50), + .output_clock_frequency7("0 MHz"), + .phase_shift7("0 ps"), + .duty_cycle7(50), + .output_clock_frequency8("0 MHz"), + .phase_shift8("0 ps"), + .duty_cycle8(50), + .output_clock_frequency9("0 MHz"), + .phase_shift9("0 ps"), + .duty_cycle9(50), + .output_clock_frequency10("0 MHz"), + .phase_shift10("0 ps"), + .duty_cycle10(50), + .output_clock_frequency11("0 MHz"), + .phase_shift11("0 ps"), + .duty_cycle11(50), + .output_clock_frequency12("0 MHz"), + .phase_shift12("0 ps"), + .duty_cycle12(50), + .output_clock_frequency13("0 MHz"), + .phase_shift13("0 ps"), + .duty_cycle13(50), + .output_clock_frequency14("0 MHz"), + .phase_shift14("0 ps"), + .duty_cycle14(50), + .output_clock_frequency15("0 MHz"), + .phase_shift15("0 ps"), + .duty_cycle15(50), + .output_clock_frequency16("0 MHz"), + .phase_shift16("0 ps"), + .duty_cycle16(50), + .output_clock_frequency17("0 MHz"), + .phase_shift17("0 ps"), + .duty_cycle17(50), + .pll_type("General"), + .pll_subtype("General") + ) altera_pll_i ( + .rst (rst), + .outclk ({outclk_4, outclk_3, outclk_2, outclk_1, outclk_0}), + .locked (locked), + .fboutclk ( ), + .fbclk (1'b0), + .refclk (refclk) + ); +endmodule + diff --git a/src/fpga/core/mf_pllbase_sim.f b/src/fpga/core/mf_pllbase_sim.f new file mode 100644 index 0000000..a4f4055 --- /dev/null +++ b/src/fpga/core/mf_pllbase_sim.f @@ -0,0 +1 @@ +mf_pllbase_sim/mf_pllbase.vo diff --git a/src/fpga/core/mf_pllbase_sim/aldec/rivierapro_setup.tcl b/src/fpga/core/mf_pllbase_sim/aldec/rivierapro_setup.tcl new file mode 100644 index 0000000..e875edf --- /dev/null +++ b/src/fpga/core/mf_pllbase_sim/aldec/rivierapro_setup.tcl @@ -0,0 +1,278 @@ + +# (C) 2001-2022 Altera Corporation. All rights reserved. +# Your use of Altera Corporation's design tools, logic functions and +# other software and tools, and its AMPP partner logic functions, and +# any output files 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 Altera +# Program License Subscription Agreement, Altera MegaCore Function +# License Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by Altera +# or its authorized distributors. Please refer to the applicable +# agreement for further details. + +# ACDS 21.1 850 win32 2022.09.12.08:09:19 +# ---------------------------------------- +# Auto-generated simulation script rivierapro_setup.tcl +# ---------------------------------------- +# This script provides commands to simulate the following IP detected in +# your Quartus project: +# mf_pllbase +# +# Altera recommends that you source this Quartus-generated IP simulation +# script from your own customized top-level script, and avoid editing this +# generated script. +# +# To write a top-level script that compiles Altera simulation libraries and +# the Quartus-generated IP in your project, along with your design and +# testbench files, copy the text from the TOP-LEVEL TEMPLATE section below +# into a new file, e.g. named "aldec.do", and modify the text as directed. +# +# ---------------------------------------- +# # TOP-LEVEL TEMPLATE - BEGIN +# # +# # QSYS_SIMDIR is used in the Quartus-generated IP simulation script to +# # construct paths to the files required to simulate the IP in your Quartus +# # project. By default, the IP script assumes that you are launching the +# # simulator from the IP script location. If launching from another +# # location, set QSYS_SIMDIR to the output directory you specified when you +# # generated the IP script, relative to the directory from which you launch +# # the simulator. +# # +# set QSYS_SIMDIR