diff --git a/libraries/dsp/bf/designs/unb1_fn_bf/hdllib.cfg b/libraries/dsp/bf/designs/unb1_fn_bf/hdllib.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4bb1c670e0143f3de7a3bbb2ec58e05cf6113519
--- /dev/null
+++ b/libraries/dsp/bf/designs/unb1_fn_bf/hdllib.cfg
@@ -0,0 +1,35 @@
+hdl_lib_name = unb1_fn_bf
+hdl_library_clause_name = unb1_fn_bf_lib
+hdl_lib_uses_synth = common technology mm i2c unb1_board bf
+hdl_lib_uses_sim = 
+
+hdl_lib_technology = ip_stratixiv
+
+build_dir_sim = $HDL_BUILD_DIR
+build_dir_synth = $HDL_BUILD_DIR
+
+synth_top_level_entity =
+
+synth_files =   
+    $HDL_BUILD_DIR/quartus/unb1_fn_bf/sopc_unb1_fn_bf.vhd
+    src/vhdl/mmm_unb1_fn_bf.vhd
+    src/vhdl/node_unb1_fn_bf.vhd
+    src/vhdl/unb1_fn_bf.vhd
+    
+test_bench_files = 
+    tb/vhdl/tb_unb1_fn_bf.vhd
+
+modelsim_copy_files = src/hex hex                                                   
+
+quartus_copy_files = quartus/sopc_unb1_fn_bf.sopc .
+
+quartus_qsf_files =                                                       
+    $RADIOHDL/boards/uniboard1/libraries/unb1_board/quartus/unb1_board.qsf
+
+quartus_tcl_files =
+    ../../libraries/dsp/bf/src/tcl/bf_constraints.tcl  
+    quartus/unb1_fn_bf_pins.tcl
+    
+quartus_qip_files =
+    $HDL_BUILD_DIR/quartus/unb1_fn_bf/sopc_unb1_fn_bf.qip
+
diff --git a/libraries/dsp/bf/designs/unb1_fn_bf/quartus/sopc_unb1_fn_bf.sopc b/libraries/dsp/bf/designs/unb1_fn_bf/quartus/sopc_unb1_fn_bf.sopc
new file mode 100644
index 0000000000000000000000000000000000000000..db9f51a8545c8bd1295f5a5e534c36151e9765c5
--- /dev/null
+++ b/libraries/dsp/bf/designs/unb1_fn_bf/quartus/sopc_unb1_fn_bf.sopc
@@ -0,0 +1,1196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<system name="sopc_unb1_fn_bf">
+ <parameter name="bonusData"><![CDATA[bonusData 
+{
+   element altpll_0
+   {
+      datum _sortIndex
+      {
+         value = "0";
+         type = "int";
+      }
+   }
+   element jtag_uart_0.avalon_jtag_slave
+   {
+      datum baseAddress
+      {
+         value = "464";
+         type = "long";
+      }
+   }
+   element avs_eth_0
+   {
+      datum _sortIndex
+      {
+         value = "21";
+         type = "int";
+      }
+   }
+   element altpll_0.c0
+   {
+      datum _clockDomain
+      {
+         value = "mm_clk";
+         type = "String";
+      }
+   }
+   element altpll_0.c1
+   {
+      datum _clockDomain
+      {
+         value = "cal_clk";
+         type = "String";
+      }
+   }
+   element altpll_0.c2
+   {
+      datum _clockDomain
+      {
+         value = "tse_clk";
+         type = "String";
+      }
+   }
+   element clk_0
+   {
+      datum _sortIndex
+      {
+         value = "4";
+         type = "int";
+      }
+   }
+   element cpu_0
+   {
+      datum _sortIndex
+      {
+         value = "3";
+         type = "int";
+      }
+      datum megawizard_uipreferences
+      {
+         value = "{output_language=VHDL, output_directory=D:\\svnroot\\UniBoard_FP7\\UniBoard\\trunk\\Firmware\\designs\\fn_bf\\build\\synth\\quartus}";
+         type = "String";
+      }
+   }
+   element cpu_0.jtag_debug_module
+   {
+      datum baseAddress
+      {
+         value = "14336";
+         type = "long";
+      }
+   }
+   element jtag_uart_0
+   {
+      datum _sortIndex
+      {
+         value = "2";
+         type = "int";
+      }
+      datum megawizard_uipreferences
+      {
+         value = "{}";
+         type = "String";
+      }
+   }
+   element ram_ss_ss_wide.mem
+   {
+      datum baseAddress
+      {
+         value = "524288";
+         type = "long";
+      }
+   }
+   element reg_diag_bg.mem
+   {
+      datum baseAddress
+      {
+         value = "352";
+         type = "long";
+      }
+   }
+   element reg_st_sst.mem
+   {
+      datum baseAddress
+      {
+         value = "192";
+         type = "long";
+      }
+   }
+   element ram_st_sst.mem
+   {
+      datum baseAddress
+      {
+         value = "16384";
+         type = "long";
+      }
+   }
+   element ram_bf_weights.mem
+   {
+      datum baseAddress
+      {
+         value = "262144";
+         type = "long";
+      }
+   }
+   element pio_pps.mem
+   {
+      datum baseAddress
+      {
+         value = "472";
+         type = "long";
+      }
+   }
+   element reg_wdi.mem
+   {
+      datum _lockedAddress
+      {
+         value = "1";
+         type = "boolean";
+      }
+      datum baseAddress
+      {
+         value = "12288";
+         type = "long";
+      }
+   }
+   element pio_system_info.mem
+   {
+      datum _lockedAddress
+      {
+         value = "1";
+         type = "boolean";
+      }
+      datum baseAddress
+      {
+         value = "0";
+         type = "long";
+      }
+   }
+   element ram_dp_ram_from_mm.mem
+   {
+      datum baseAddress
+      {
+         value = "128";
+         type = "long";
+      }
+   }
+   element reg_dp_ram_from_mm.mem
+   {
+      datum baseAddress
+      {
+         value = "480";
+         type = "long";
+      }
+   }
+   element rom_system_info.mem
+   {
+      datum _lockedAddress
+      {
+         value = "1";
+         type = "boolean";
+      }
+      datum baseAddress
+      {
+         value = "4096";
+         type = "long";
+      }
+   }
+   element reg_unb_sens.mem
+   {
+      datum baseAddress
+      {
+         value = "384";
+         type = "long";
+      }
+   }
+   element ram_diag_bg.mem
+   {
+      datum baseAddress
+      {
+         value = "32768";
+         type = "long";
+      }
+   }
+   element avs_eth_0.mms_ram
+   {
+      datum baseAddress
+      {
+         value = "65536";
+         type = "long";
+      }
+   }
+   element avs_eth_0.mms_reg
+   {
+      datum baseAddress
+      {
+         value = "256";
+         type = "long";
+      }
+   }
+   element avs_eth_0.mms_tse
+   {
+      datum baseAddress
+      {
+         value = "8192";
+         type = "long";
+      }
+   }
+   element onchip_memory2_0
+   {
+      datum _sortIndex
+      {
+         value = "1";
+         type = "int";
+      }
+      datum megawizard_uipreferences
+      {
+         value = "{}";
+         type = "String";
+      }
+   }
+   element pio_debug_wave
+   {
+      datum _sortIndex
+      {
+         value = "7";
+         type = "int";
+      }
+      datum megawizard_uipreferences
+      {
+         value = "{}";
+         type = "String";
+      }
+   }
+   element pio_pps
+   {
+      datum _sortIndex
+      {
+         value = "15";
+         type = "int";
+      }
+   }
+   element pio_system_info
+   {
+      datum _sortIndex
+      {
+         value = "13";
+         type = "int";
+      }
+   }
+   element pio_wdi
+   {
+      datum _sortIndex
+      {
+         value = "6";
+         type = "int";
+      }
+      datum megawizard_uipreferences
+      {
+         value = "{}";
+         type = "String";
+      }
+   }
+   element altpll_0.pll_slave
+   {
+      datum _lockedAddress
+      {
+         value = "0";
+         type = "boolean";
+      }
+      datum baseAddress
+      {
+         value = "416";
+         type = "long";
+      }
+   }
+   element ram_bf_weights
+   {
+      datum _sortIndex
+      {
+         value = "8";
+         type = "int";
+      }
+   }
+   element ram_diag_bg
+   {
+      datum _sortIndex
+      {
+         value = "10";
+         type = "int";
+      }
+   }
+   element ram_dp_ram_from_mm
+   {
+      datum _sortIndex
+      {
+         value = "18";
+         type = "int";
+      }
+   }
+   element ram_ss_ss_wide
+   {
+      datum _sortIndex
+      {
+         value = "20";
+         type = "int";
+      }
+   }
+   element ram_st_sst
+   {
+      datum _sortIndex
+      {
+         value = "9";
+         type = "int";
+      }
+   }
+   element reg_diag_bg
+   {
+      datum _sortIndex
+      {
+         value = "11";
+         type = "int";
+      }
+   }
+   element reg_dp_ram_from_mm
+   {
+      datum _sortIndex
+      {
+         value = "17";
+         type = "int";
+      }
+   }
+   element reg_st_sst
+   {
+      datum _sortIndex
+      {
+         value = "19";
+         type = "int";
+      }
+   }
+   element reg_unb_sens
+   {
+      datum _sortIndex
+      {
+         value = "12";
+         type = "int";
+      }
+   }
+   element reg_wdi
+   {
+      datum _sortIndex
+      {
+         value = "16";
+         type = "int";
+      }
+   }
+   element rom_system_info
+   {
+      datum _sortIndex
+      {
+         value = "14";
+         type = "int";
+      }
+   }
+   element onchip_memory2_0.s1
+   {
+      datum _lockedAddress
+      {
+         value = "1";
+         type = "boolean";
+      }
+      datum baseAddress
+      {
+         value = "131072";
+         type = "long";
+      }
+   }
+   element timer_0.s1
+   {
+      datum baseAddress
+      {
+         value = "320";
+         type = "long";
+      }
+   }
+   element pio_debug_wave.s1
+   {
+      datum baseAddress
+      {
+         value = "432";
+         type = "long";
+      }
+   }
+   element pio_wdi.s1
+   {
+      datum baseAddress
+      {
+         value = "448";
+         type = "long";
+      }
+   }
+   element sopc_unb1_fn_bf
+   {
+   }
+   element timer_0
+   {
+      datum _sortIndex
+      {
+         value = "5";
+         type = "int";
+      }
+      datum megawizard_uipreferences
+      {
+         value = "{}";
+         type = "String";
+      }
+   }
+}
+]]></parameter>
+ <parameter name="clockCrossingAdapter" value="HANDSHAKE" />
+ <parameter name="device" value="EP4SGX230KF40C2" />
+ <parameter name="deviceFamily" value="STRATIXIV" />
+ <parameter name="deviceSpeedGrade" value="" />
+ <parameter name="fabricMode" value="SOPC" />
+ <parameter name="generateLegacySim" value="true" />
+ <parameter name="generationId" value="0" />
+ <parameter name="globalResetBus" value="true" />
+ <parameter name="hdlLanguage" value="VHDL" />
+ <parameter name="maxAdditionalLatency" value="0" />
+ <parameter name="projectName" value="unb1_fn_bf.qpf" />
+ <parameter name="sopcBorderPoints" value="true" />
+ <parameter name="systemHash" value="-61772755527" />
+ <parameter name="timeStamp" value="1423150120590" />
+ <parameter name="useTestBenchNamingPattern" value="false" />
+ <module kind="clock_source" version="11.1" enabled="1" name="clk_0">
+  <parameter name="clockFrequency" value="25000000" />
+  <parameter name="clockFrequencyKnown" value="true" />
+  <parameter name="inputClockFrequency" value="0" />
+  <parameter name="resetSynchronousEdges" value="NONE" />
+ </module>
+ <module kind="altera_nios2" version="11.1" enabled="1" name="cpu_0">
+  <parameter name="userDefinedSettings" value="" />
+  <parameter name="tightlyCoupledInstructionMaster3MapParam" value="" />
+  <parameter name="tightlyCoupledInstructionMaster3AddrWidth" value="1" />
+  <parameter name="tightlyCoupledInstructionMaster2MapParam" value="" />
+  <parameter name="tightlyCoupledInstructionMaster2AddrWidth" value="1" />
+  <parameter name="tightlyCoupledInstructionMaster1MapParam" value="" />
+  <parameter name="tightlyCoupledInstructionMaster1AddrWidth" value="1" />
+  <parameter name="tightlyCoupledInstructionMaster0MapParam" value="" />
+  <parameter name="tightlyCoupledInstructionMaster0AddrWidth" value="1" />
+  <parameter name="tightlyCoupledDataMaster3MapParam" value="" />
+  <parameter name="tightlyCoupledDataMaster3AddrWidth" value="1" />
+  <parameter name="tightlyCoupledDataMaster2MapParam" value="" />
+  <parameter name="tightlyCoupledDataMaster2AddrWidth" value="1" />
+  <parameter name="tightlyCoupledDataMaster1MapParam" value="" />
+  <parameter name="tightlyCoupledDataMaster1AddrWidth" value="1" />
+  <parameter name="tightlyCoupledDataMaster0MapParam" value="" />
+  <parameter name="tightlyCoupledDataMaster0AddrWidth" value="1" />
+  <parameter name="setting_showUnpublishedSettings" value="false" />
+  <parameter name="setting_showInternalSettings" value="false" />
+  <parameter name="setting_shadowRegisterSets" value="0" />
+  <parameter name="setting_preciseSlaveAccessErrorException" value="false" />
+  <parameter name="setting_preciseIllegalMemAccessException" value="false" />
+  <parameter name="setting_preciseDivisionErrorException" value="false" />
+  <parameter name="setting_performanceCounter" value="false" />
+  <parameter name="setting_perfCounterWidth" value="_32" />
+  <parameter name="setting_interruptControllerType" value="Internal" />
+  <parameter name="setting_illegalMemAccessDetection" value="false" />
+  <parameter name="setting_illegalInstructionsTrap" value="false" />
+  <parameter name="setting_fullWaveformSignals" value="false" />
+  <parameter name="setting_extraExceptionInfo" value="false" />
+  <parameter name="setting_exportPCB" value="false" />
+  <parameter name="setting_debugSimGen" value="false" />
+  <parameter name="setting_clearXBitsLDNonBypass" value="true" />
+  <parameter name="setting_branchPredictionType" value="Automatic" />
+  <parameter name="setting_bit31BypassDCache" value="true" />
+  <parameter name="setting_bigEndian" value="false" />
+  <parameter name="setting_bhtPtrSz" value="_8" />
+  <parameter name="setting_bhtIndexPcOnly" value="false" />
+  <parameter name="setting_avalonDebugPortPresent" value="false" />
+  <parameter name="setting_alwaysEncrypt" value="true" />
+  <parameter name="setting_allowFullAddressRange" value="false" />
+  <parameter name="setting_activateTrace" value="true" />
+  <parameter name="setting_activateTestEndChecker" value="false" />
+  <parameter name="setting_activateMonitors" value="true" />
+  <parameter name="setting_activateModelChecker" value="false" />
+  <parameter name="setting_HDLSimCachesCleared" value="true" />
+  <parameter name="setting_HBreakTest" value="false" />
+  <parameter name="resetSlave" value="onchip_memory2_0.s1" />
+  <parameter name="resetOffset" value="0" />
+  <parameter name="muldiv_multiplierType" value="NoneSmall" />
+  <parameter name="muldiv_divider" value="false" />
+  <parameter name="mpu_useLimit" value="false" />
+  <parameter name="mpu_numOfInstRegion" value="8" />
+  <parameter name="mpu_numOfDataRegion" value="8" />
+  <parameter name="mpu_minInstRegionSize" value="_12" />
+  <parameter name="mpu_minDataRegionSize" value="_12" />
+  <parameter name="mpu_enabled" value="false" />
+  <parameter name="mmu_uitlbNumEntries" value="_4" />
+  <parameter name="mmu_udtlbNumEntries" value="_6" />
+  <parameter name="mmu_tlbPtrSz" value="_7" />
+  <parameter name="mmu_tlbNumWays" value="_16" />
+  <parameter name="mmu_processIDNumBits" value="_8" />
+  <parameter name="mmu_enabled" value="false" />
+  <parameter name="mmu_autoAssignTlbPtrSz" value="true" />
+  <parameter name="mmu_TLBMissExcSlave" value="" />
+  <parameter name="mmu_TLBMissExcOffset" value="0" />
+  <parameter name="manuallyAssignCpuID" value="false" />
+  <parameter name="internalIrqMaskSystemInfo" value="7" />
+  <parameter name="instSlaveMapParam"><![CDATA[<address-map><slave name='cpu_0.jtag_debug_module' start='0x3800' end='0x4000' /><slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' /></address-map>]]></parameter>
+  <parameter name="instAddrWidth" value="18" />
+  <parameter name="impl" value="Small" />
+  <parameter name="icache_size" value="_4096" />
+  <parameter name="icache_ramBlockType" value="Automatic" />
+  <parameter name="icache_numTCIM" value="_0" />
+  <parameter name="icache_burstType" value="None" />
+  <parameter name="exceptionSlave" value="onchip_memory2_0.s1" />
+  <parameter name="exceptionOffset" value="32" />
+  <parameter name="deviceFeaturesSystemInfo">ADDRESS_STALL 1 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 1 DUMP_ASM_LAB_BITS_FOR_POWER 1 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 1 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FITTER_USE_FALLING_EDGE_DELAY 1 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 1 HARDCOPY 0 HAS_18_BIT_MULTS 1 HAS_ACE_SUPPORT 1 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 1 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 1 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 1 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 1 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 1 HAS_BSDL_FILE_GENERATION 1 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 1 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 0 HAS_DDB_FDI_SUPPORT 0 HAS_DESIGN_ANALYZER_SUPPORT 1 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 1 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_EARLY_TIMING_ESTIMATE_SUPPORT 1 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 1 HAS_FPGA_XCHANGE_SUPPORT 1 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 0 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 1 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HC_READY_SUPPORT 1 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 1 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 1 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 1 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 1 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 1 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 1 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 0 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 1 HAS_PVA_SUPPORT 1 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TECHNOLOGY_MIGRATION_SUPPORT 1 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 1 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 1 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 1 HAS_USE_FITTER_INFO_SUPPORT 0 HAS_VCCPD_POWER_RAIL 1 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 1 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 1 INSTALLED 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_HARDCOPY_FAMILY 0 LVDS_IO 1 M10K_MEMORY 0 M144K_MEMORY 1 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 1 MLAB_MEMORY 1 MRAM_MEMORY 0 NOT_LISTED 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 1 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 1 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 1 PROGRAMMER_SUPPORT 1 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 1 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 1 SUPPORTS_MAC_CHAIN_OUT_ADDER 1 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 TMV_RUN_CUSTOMIZABLE_VIEWER 1 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 1 TRANSCEIVER_6G_BLOCK 1 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 0 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 1 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 1 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1</parameter>
+  <parameter name="deviceFamilyName" value="Stratix IV" />
+  <parameter name="debug_triggerArming" value="true" />
+  <parameter name="debug_level" value="Level1" />
+  <parameter name="debug_jtagInstanceID" value="0" />
+  <parameter name="debug_embeddedPLL" value="true" />
+  <parameter name="debug_debugReqSignals" value="false" />
+  <parameter name="debug_assignJtagInstanceID" value="false" />
+  <parameter name="debug_OCIOnchipTrace" value="_128" />
+  <parameter name="dcache_size" value="_2048" />
+  <parameter name="dcache_ramBlockType" value="Automatic" />
+  <parameter name="dcache_omitDataMaster" value="false" />
+  <parameter name="dcache_numTCDM" value="_0" />
+  <parameter name="dcache_lineSize" value="_32" />
+  <parameter name="dcache_bursts" value="false" />
+  <parameter name="dataSlaveMapParam"><![CDATA[<address-map><slave name='pio_system_info.mem' start='0x0' end='0x80' /><slave name='ram_dp_ram_from_mm.mem' start='0x80' end='0xC0' /><slave name='reg_st_sst.mem' start='0xC0' end='0x100' /><slave name='avs_eth_0.mms_reg' start='0x100' end='0x140' /><slave name='timer_0.s1' start='0x140' end='0x160' /><slave name='reg_diag_bg.mem' start='0x160' end='0x180' /><slave name='reg_unb_sens.mem' start='0x180' end='0x1A0' /><slave name='altpll_0.pll_slave' start='0x1A0' end='0x1B0' /><slave name='pio_debug_wave.s1' start='0x1B0' end='0x1C0' /><slave name='pio_wdi.s1' start='0x1C0' end='0x1D0' /><slave name='jtag_uart_0.avalon_jtag_slave' start='0x1D0' end='0x1D8' /><slave name='pio_pps.mem' start='0x1D8' end='0x1E0' /><slave name='reg_dp_ram_from_mm.mem' start='0x1E0' end='0x1E8' /><slave name='rom_system_info.mem' start='0x1000' end='0x2000' /><slave name='avs_eth_0.mms_tse' start='0x2000' end='0x3000' /><slave name='reg_wdi.mem' start='0x3000' end='0x3008' /><slave name='cpu_0.jtag_debug_module' start='0x3800' end='0x4000' /><slave name='ram_st_sst.mem' start='0x4000' end='0x8000' /><slave name='ram_diag_bg.mem' start='0x8000' end='0x10000' /><slave name='avs_eth_0.mms_ram' start='0x10000' end='0x11000' /><slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' /><slave name='ram_bf_weights.mem' start='0x40000' end='0x80000' /><slave name='ram_ss_ss_wide.mem' start='0x80000' end='0xC0000' /></address-map>]]></parameter>
+  <parameter name="dataAddrWidth" value="20" />
+  <parameter name="customInstSlavesSystemInfo" value="&lt;info/&gt;" />
+  <parameter name="cpuReset" value="false" />
+  <parameter name="cpuID" value="0" />
+  <parameter name="clockFrequency" value="125000000" />
+  <parameter name="breakSlave">cpu_0.jtag_debug_module</parameter>
+  <parameter name="breakOffset" value="32" />
+ </module>
+ <module
+   kind="altera_avalon_onchip_memory2"
+   version="11.1"
+   enabled="1"
+   name="onchip_memory2_0">
+  <parameter name="allowInSystemMemoryContentEditor" value="false" />
+  <parameter name="autoInitializationFileName" value="onchip_memory2_0" />
+  <parameter name="blockType" value="M144K" />
+  <parameter name="dataWidth" value="32" />
+  <parameter name="deviceFamily" value="Stratix IV" />
+  <parameter name="dualPort" value="false" />
+  <parameter name="initMemContent" value="true" />
+  <parameter name="initializationFileName" value="onchip_memory2_0" />
+  <parameter name="instanceID" value="NONE" />
+  <parameter name="memorySize" value="131072" />
+  <parameter name="readDuringWriteMode" value="DONT_CARE" />
+  <parameter name="simAllowMRAMContentsFile" value="false" />
+  <parameter name="simMemInitOnlyFilename" value="0" />
+  <parameter name="singleClockOperation" value="false" />
+  <parameter name="slave1Latency" value="1" />
+  <parameter name="slave2Latency" value="1" />
+  <parameter name="useNonDefaultInitFile" value="false" />
+  <parameter name="useShallowMemBlocks" value="false" />
+  <parameter name="writable" value="true" />
+ </module>
+ <module
+   kind="altera_avalon_jtag_uart"
+   version="11.1"
+   enabled="1"
+   name="jtag_uart_0">
+  <parameter name="allowMultipleConnections" value="false" />
+  <parameter name="hubInstanceID" value="0" />
+  <parameter name="readBufferDepth" value="64" />
+  <parameter name="readIRQThreshold" value="8" />
+  <parameter name="simInputCharacterStream"><![CDATA[a
+q]]></parameter>
+  <parameter name="simInteractiveOptions">INTERACTIVE_ASCII_OUTPUT</parameter>
+  <parameter name="useRegistersForReadBuffer" value="false" />
+  <parameter name="useRegistersForWriteBuffer" value="false" />
+  <parameter name="useRelativePathForSimFile" value="false" />
+  <parameter name="writeBufferDepth" value="64" />
+  <parameter name="writeIRQThreshold" value="8" />
+ </module>
+ <module kind="altpll" version="11.1" enabled="1" name="altpll_0">
+  <parameter name="HIDDEN_CUSTOM_ELABORATION">altpll_avalon_elaboration</parameter>
+  <parameter name="HIDDEN_CUSTOM_POST_EDIT">altpll_avalon_post_edit</parameter>
+  <parameter name="INTENDED_DEVICE_FAMILY" value="Stratix IV" />
+  <parameter name="WIDTH_CLOCK" value="10" />
+  <parameter name="WIDTH_PHASECOUNTERSELECT" value="" />
+  <parameter name="PRIMARY_CLOCK" value="" />
+  <parameter name="INCLK0_INPUT_FREQUENCY" value="40000" />
+  <parameter name="INCLK1_INPUT_FREQUENCY" value="" />
+  <parameter name="OPERATION_MODE" value="NORMAL" />
+  <parameter name="PLL_TYPE" value="AUTO" />
+  <parameter name="QUALIFY_CONF_DONE" value="" />
+  <parameter name="COMPENSATE_CLOCK" value="CLK0" />
+  <parameter name="SCAN_CHAIN" value="" />
+  <parameter name="GATE_LOCK_SIGNAL" value="" />
+  <parameter name="GATE_LOCK_COUNTER" value="" />
+  <parameter name="LOCK_HIGH" value="" />
+  <parameter name="LOCK_LOW" value="" />
+  <parameter name="VALID_LOCK_MULTIPLIER" value="" />
+  <parameter name="INVALID_LOCK_MULTIPLIER" value="" />
+  <parameter name="SWITCH_OVER_ON_LOSSCLK" value="" />
+  <parameter name="SWITCH_OVER_ON_GATED_LOCK" value="" />
+  <parameter name="ENABLE_SWITCH_OVER_COUNTER" value="" />
+  <parameter name="SKIP_VCO" value="" />
+  <parameter name="SWITCH_OVER_COUNTER" value="" />
+  <parameter name="SWITCH_OVER_TYPE" value="" />
+  <parameter name="FEEDBACK_SOURCE" value="" />
+  <parameter name="BANDWIDTH" value="" />
+  <parameter name="BANDWIDTH_TYPE" value="AUTO" />
+  <parameter name="SPREAD_FREQUENCY" value="" />
+  <parameter name="DOWN_SPREAD" value="" />
+  <parameter name="SELF_RESET_ON_GATED_LOSS_LOCK" value="" />
+  <parameter name="SELF_RESET_ON_LOSS_LOCK" value="" />
+  <parameter name="CLK0_MULTIPLY_BY" value="5" />
+  <parameter name="CLK1_MULTIPLY_BY" value="8" />
+  <parameter name="CLK2_MULTIPLY_BY" value="5" />
+  <parameter name="CLK3_MULTIPLY_BY" value="" />
+  <parameter name="CLK4_MULTIPLY_BY" value="" />
+  <parameter name="CLK5_MULTIPLY_BY" value="" />
+  <parameter name="CLK6_MULTIPLY_BY" value="" />
+  <parameter name="CLK7_MULTIPLY_BY" value="" />
+  <parameter name="CLK8_MULTIPLY_BY" value="" />
+  <parameter name="CLK9_MULTIPLY_BY" value="" />
+  <parameter name="EXTCLK0_MULTIPLY_BY" value="" />
+  <parameter name="EXTCLK1_MULTIPLY_BY" value="" />
+  <parameter name="EXTCLK2_MULTIPLY_BY" value="" />
+  <parameter name="EXTCLK3_MULTIPLY_BY" value="" />
+  <parameter name="CLK0_DIVIDE_BY" value="1" />
+  <parameter name="CLK1_DIVIDE_BY" value="5" />
+  <parameter name="CLK2_DIVIDE_BY" value="1" />
+  <parameter name="CLK3_DIVIDE_BY" value="" />
+  <parameter name="CLK4_DIVIDE_BY" value="" />
+  <parameter name="CLK5_DIVIDE_BY" value="" />
+  <parameter name="CLK6_DIVIDE_BY" value="" />
+  <parameter name="CLK7_DIVIDE_BY" value="" />
+  <parameter name="CLK8_DIVIDE_BY" value="" />
+  <parameter name="CLK9_DIVIDE_BY" value="" />
+  <parameter name="EXTCLK0_DIVIDE_BY" value="" />
+  <parameter name="EXTCLK1_DIVIDE_BY" value="" />
+  <parameter name="EXTCLK2_DIVIDE_BY" value="" />
+  <parameter name="EXTCLK3_DIVIDE_BY" value="" />
+  <parameter name="CLK0_PHASE_SHIFT" value="0" />
+  <parameter name="CLK1_PHASE_SHIFT" value="0" />
+  <parameter name="CLK2_PHASE_SHIFT" value="0" />
+  <parameter name="CLK3_PHASE_SHIFT" value="" />
+  <parameter name="CLK4_PHASE_SHIFT" value="" />
+  <parameter name="CLK5_PHASE_SHIFT" value="" />
+  <parameter name="CLK6_PHASE_SHIFT" value="" />
+  <parameter name="CLK7_PHASE_SHIFT" value="" />
+  <parameter name="CLK8_PHASE_SHIFT" value="" />
+  <parameter name="CLK9_PHASE_SHIFT" value="" />
+  <parameter name="EXTCLK0_PHASE_SHIFT" value="" />
+  <parameter name="EXTCLK1_PHASE_SHIFT" value="" />
+  <parameter name="EXTCLK2_PHASE_SHIFT" value="" />
+  <parameter name="EXTCLK3_PHASE_SHIFT" value="" />
+  <parameter name="CLK0_DUTY_CYCLE" value="50" />
+  <parameter name="CLK1_DUTY_CYCLE" value="50" />
+  <parameter name="CLK2_DUTY_CYCLE" value="50" />
+  <parameter name="CLK3_DUTY_CYCLE" value="" />
+  <parameter name="CLK4_DUTY_CYCLE" value="" />
+  <parameter name="CLK5_DUTY_CYCLE" value="" />
+  <parameter name="CLK6_DUTY_CYCLE" value="" />
+  <parameter name="CLK7_DUTY_CYCLE" value="" />
+  <parameter name="CLK8_DUTY_CYCLE" value="" />
+  <parameter name="CLK9_DUTY_CYCLE" value="" />
+  <parameter name="EXTCLK0_DUTY_CYCLE" value="" />
+  <parameter name="EXTCLK1_DUTY_CYCLE" value="" />
+  <parameter name="EXTCLK2_DUTY_CYCLE" value="" />
+  <parameter name="EXTCLK3_DUTY_CYCLE" value="" />
+  <parameter name="PORT_clkena0" value="PORT_UNUSED" />
+  <parameter name="PORT_clkena1" value="PORT_UNUSED" />
+  <parameter name="PORT_clkena2" value="PORT_UNUSED" />
+  <parameter name="PORT_clkena3" value="PORT_UNUSED" />
+  <parameter name="PORT_clkena4" value="PORT_UNUSED" />
+  <parameter name="PORT_clkena5" value="PORT_UNUSED" />
+  <parameter name="PORT_extclkena0" value="" />
+  <parameter name="PORT_extclkena1" value="" />
+  <parameter name="PORT_extclkena2" value="" />
+  <parameter name="PORT_extclkena3" value="" />
+  <parameter name="PORT_extclk0" value="" />
+  <parameter name="PORT_extclk1" value="" />
+  <parameter name="PORT_extclk2" value="" />
+  <parameter name="PORT_extclk3" value="" />
+  <parameter name="PORT_CLKBAD0" value="PORT_UNUSED" />
+  <parameter name="PORT_CLKBAD1" value="PORT_UNUSED" />
+  <parameter name="PORT_clk0" value="PORT_USED" />
+  <parameter name="PORT_clk1" value="PORT_USED" />
+  <parameter name="PORT_clk2" value="PORT_USED" />
+  <parameter name="PORT_clk3" value="PORT_UNUSED" />
+  <parameter name="PORT_clk4" value="PORT_UNUSED" />
+  <parameter name="PORT_clk5" value="PORT_UNUSED" />
+  <parameter name="PORT_clk6" value="PORT_UNUSED" />
+  <parameter name="PORT_clk7" value="PORT_UNUSED" />
+  <parameter name="PORT_clk8" value="PORT_UNUSED" />
+  <parameter name="PORT_clk9" value="PORT_UNUSED" />
+  <parameter name="PORT_SCANDATA" value="PORT_UNUSED" />
+  <parameter name="PORT_SCANDATAOUT" value="PORT_UNUSED" />
+  <parameter name="PORT_SCANDONE" value="PORT_UNUSED" />
+  <parameter name="PORT_SCLKOUT1" value="" />
+  <parameter name="PORT_SCLKOUT0" value="" />
+  <parameter name="PORT_ACTIVECLOCK" value="PORT_UNUSED" />
+  <parameter name="PORT_CLKLOSS" value="PORT_UNUSED" />
+  <parameter name="PORT_INCLK1" value="PORT_UNUSED" />
+  <parameter name="PORT_INCLK0" value="PORT_USED" />
+  <parameter name="PORT_FBIN" value="PORT_UNUSED" />
+  <parameter name="PORT_PLLENA" value="PORT_UNUSED" />
+  <parameter name="PORT_CLKSWITCH" value="PORT_UNUSED" />
+  <parameter name="PORT_ARESET" value="PORT_UNUSED" />
+  <parameter name="PORT_PFDENA" value="PORT_UNUSED" />
+  <parameter name="PORT_SCANCLK" value="PORT_UNUSED" />
+  <parameter name="PORT_SCANACLR" value="PORT_UNUSED" />
+  <parameter name="PORT_SCANREAD" value="PORT_UNUSED" />
+  <parameter name="PORT_SCANWRITE" value="PORT_UNUSED" />
+  <parameter name="PORT_ENABLE0" value="" />
+  <parameter name="PORT_ENABLE1" value="" />
+  <parameter name="PORT_LOCKED" value="PORT_USED" />
+  <parameter name="PORT_CONFIGUPDATE" value="PORT_UNUSED" />
+  <parameter name="PORT_FBOUT" value="PORT_UNUSED" />
+  <parameter name="PORT_PHASEDONE" value="PORT_UNUSED" />
+  <parameter name="PORT_PHASESTEP" value="PORT_UNUSED" />
+  <parameter name="PORT_PHASEUPDOWN" value="PORT_UNUSED" />
+  <parameter name="PORT_SCANCLKENA" value="PORT_UNUSED" />
+  <parameter name="PORT_PHASECOUNTERSELECT" value="PORT_UNUSED" />
+  <parameter name="PORT_VCOOVERRANGE" value="" />
+  <parameter name="PORT_VCOUNDERRANGE" value="" />
+  <parameter name="DPA_MULTIPLY_BY" value="" />
+  <parameter name="DPA_DIVIDE_BY" value="" />
+  <parameter name="DPA_DIVIDER" value="" />
+  <parameter name="VCO_MULTIPLY_BY" value="" />
+  <parameter name="VCO_DIVIDE_BY" value="" />
+  <parameter name="SCLKOUT0_PHASE_SHIFT" value="" />
+  <parameter name="SCLKOUT1_PHASE_SHIFT" value="" />
+  <parameter name="VCO_FREQUENCY_CONTROL" value="" />
+  <parameter name="VCO_PHASE_SHIFT_STEP" value="" />
+  <parameter name="USING_FBMIMICBIDIR_PORT" value="OFF" />
+  <parameter name="SCAN_CHAIN_MIF_FILE" value="" />
+  <parameter name="AVALON_USE_SEPARATE_SYSCLK" value="NO" />
+  <parameter name="HIDDEN_CONSTANTS">CT#CLK2_DIVIDE_BY 1 CT#PORT_clk9 PORT_UNUSED CT#PORT_clk8 PORT_UNUSED CT#PORT_clk7 PORT_UNUSED CT#PORT_clk6 PORT_UNUSED CT#PORT_clk5 PORT_UNUSED CT#PORT_clk4 PORT_UNUSED CT#PORT_clk3 PORT_UNUSED CT#PORT_clk2 PORT_USED CT#PORT_clk1 PORT_USED CT#PORT_clk0 PORT_USED CT#CLK0_MULTIPLY_BY 5 CT#PORT_SCANWRITE PORT_UNUSED CT#PORT_SCANACLR PORT_UNUSED CT#PORT_PFDENA PORT_UNUSED CT#PORT_PLLENA PORT_UNUSED CT#PORT_SCANDATA PORT_UNUSED CT#PORT_SCANCLKENA PORT_UNUSED CT#WIDTH_CLOCK 10 CT#PORT_SCANDATAOUT PORT_UNUSED CT#LPM_TYPE altpll CT#PLL_TYPE AUTO CT#CLK0_PHASE_SHIFT 0 CT#CLK1_DUTY_CYCLE 50 CT#PORT_PHASEDONE PORT_UNUSED CT#OPERATION_MODE NORMAL CT#PORT_CONFIGUPDATE PORT_UNUSED CT#CLK1_MULTIPLY_BY 8 CT#COMPENSATE_CLOCK CLK0 CT#PORT_CLKSWITCH PORT_UNUSED CT#INCLK0_INPUT_FREQUENCY 40000 CT#PORT_SCANDONE PORT_UNUSED CT#PORT_CLKLOSS PORT_UNUSED CT#PORT_INCLK1 PORT_UNUSED CT#AVALON_USE_SEPARATE_SYSCLK NO CT#PORT_INCLK0 PORT_USED CT#PORT_clkena5 PORT_UNUSED CT#PORT_clkena4 PORT_UNUSED CT#PORT_clkena3 PORT_UNUSED CT#PORT_clkena2 PORT_UNUSED CT#PORT_clkena1 PORT_UNUSED CT#PORT_FBOUT PORT_UNUSED CT#PORT_clkena0 PORT_UNUSED CT#CLK1_PHASE_SHIFT 0 CT#PORT_ARESET PORT_UNUSED CT#BANDWIDTH_TYPE AUTO CT#CLK2_MULTIPLY_BY 5 CT#INTENDED_DEVICE_FAMILY {Stratix IV} CT#PORT_SCANREAD PORT_UNUSED CT#CLK2_DUTY_CYCLE 50 CT#PORT_PHASESTEP PORT_UNUSED CT#PORT_SCANCLK PORT_UNUSED CT#PORT_CLKBAD1 PORT_UNUSED CT#PORT_CLKBAD0 PORT_UNUSED CT#PORT_FBIN PORT_UNUSED CT#PORT_PHASEUPDOWN PORT_UNUSED CT#PORT_PHASECOUNTERSELECT PORT_UNUSED CT#PORT_ACTIVECLOCK PORT_UNUSED CT#CLK2_PHASE_SHIFT 0 CT#CLK0_DUTY_CYCLE 50 CT#CLK0_DIVIDE_BY 1 CT#CLK1_DIVIDE_BY 5 CT#USING_FBMIMICBIDIR_PORT OFF CT#PORT_LOCKED PORT_USED</parameter>
+  <parameter name="HIDDEN_PRIVATES">PT#GLOCKED_FEATURE_ENABLED 0 PT#SPREAD_FEATURE_ENABLED 0 PT#BANDWIDTH_FREQ_UNIT MHz PT#CUR_DEDICATED_CLK c0 PT#INCLK0_FREQ_EDIT 25.000 PT#BANDWIDTH_PRESET Low PT#PLL_LVDS_PLL_CHECK 0 PT#BANDWIDTH_USE_PRESET 0 PT#AVALON_USE_SEPARATE_SYSCLK NO PT#PLL_ENHPLL_CHECK 0 PT#OUTPUT_FREQ_UNIT2 MHz PT#OUTPUT_FREQ_UNIT1 MHz PT#OUTPUT_FREQ_UNIT0 MHz PT#PHASE_RECONFIG_FEATURE_ENABLED 1 PT#CREATE_CLKBAD_CHECK 0 PT#CLKSWITCH_CHECK 0 PT#INCLK1_FREQ_EDIT 100.000 PT#NORMAL_MODE_RADIO 1 PT#SRC_SYNCH_COMP_RADIO 0 PT#PLL_ARESET_CHECK 0 PT#LONG_SCAN_RADIO 1 PT#SCAN_FEATURE_ENABLED 1 PT#USE_CLK2 1 PT#PHASE_RECONFIG_INPUTS_CHECK 0 PT#USE_CLK1 1 PT#USE_CLK0 1 PT#PRIMARY_CLK_COMBO inclk0 PT#BANDWIDTH 1.000 PT#GLOCKED_COUNTER_EDIT_CHANGED 1 PT#PLL_FASTPLL_CHECK 0 PT#SPREAD_FREQ_UNIT KHz PT#PLL_AUTOPLL_CHECK 1 PT#LVDS_PHASE_SHIFT_UNIT2 deg PT#LVDS_PHASE_SHIFT_UNIT1 deg PT#OUTPUT_FREQ_MODE2 1 PT#LVDS_PHASE_SHIFT_UNIT0 deg PT#OUTPUT_FREQ_MODE1 1 PT#SWITCHOVER_FEATURE_ENABLED 0 PT#MIG_DEVICE_SPEED_GRADE Any PT#OUTPUT_FREQ_MODE0 1 PT#BANDWIDTH_FEATURE_ENABLED 1 PT#INCLK0_FREQ_UNIT_COMBO MHz PT#ZERO_DELAY_RADIO 0 PT#OUTPUT_FREQ2 125.00000000 PT#OUTPUT_FREQ1 40.00000000 PT#OUTPUT_FREQ0 125.00000000 PT#SHORT_SCAN_RADIO 0 PT#LVDS_MODE_DATA_RATE_DIRTY 0 PT#CUR_FBIN_CLK c0 PT#PLL_ADVANCED_PARAM_CHECK 0 PT#CLKBAD_SWITCHOVER_CHECK 0 PT#PHASE_SHIFT_STEP_ENABLED_CHECK 0 PT#DEVICE_SPEED_GRADE Any PT#PLL_FBMIMIC_CHECK 0 PT#LVDS_MODE_DATA_RATE {Not Available} PT#LOCKED_OUTPUT_CHECK 1 PT#SPREAD_PERCENT 0.500 PT#PHASE_SHIFT2 0.00000000 PT#PHASE_SHIFT1 0.00000000 PT#DIV_FACTOR2 1 PT#PHASE_SHIFT0 0.00000000 PT#DIV_FACTOR1 1 PT#DIV_FACTOR0 1 PT#CNX_NO_COMPENSATE_RADIO 0 PT#CREATE_INCLK1_CHECK 0 PT#GLOCK_COUNTER_EDIT 1048575 PT#INCLK1_FREQ_UNIT_COMBO MHz PT#EFF_OUTPUT_FREQ_VALUE2 125.000000 PT#EFF_OUTPUT_FREQ_VALUE1 40.000000 PT#EFF_OUTPUT_FREQ_VALUE0 125.000000 PT#SPREAD_FREQ 50.000 PT#USE_MIL_SPEED_GRADE 0 PT#EXPLICIT_SWITCHOVER_COUNTER 0 PT#STICKY_CLK2 1 PT#STICKY_CLK1 1 PT#STICKY_CLK0 1 PT#EXT_FEEDBACK_RADIO 0 PT#SWITCHOVER_COUNT_EDIT 1 PT#SELF_RESET_LOCK_LOSS 0 PT#PLL_PFDENA_CHECK 0 PT#INT_FEEDBACK__MODE_RADIO 1 PT#INCLK1_FREQ_EDIT_CHANGED 1 PT#SYNTH_WRAPPER_GEN_POSTFIX 0 PT#CLKLOSS_CHECK 0 PT#PHASE_SHIFT_UNIT2 deg PT#PHASE_SHIFT_UNIT1 deg PT#PHASE_SHIFT_UNIT0 deg PT#BANDWIDTH_USE_AUTO 1 PT#HAS_MANUAL_SWITCHOVER 1 PT#MULT_FACTOR2 1 PT#MULT_FACTOR1 1 PT#MULT_FACTOR0 1 PT#SPREAD_USE 0 PT#GLOCKED_MODE_CHECK 0 PT#DUTY_CYCLE2 50.00000000 PT#SACN_INPUTS_CHECK 0 PT#DUTY_CYCLE1 50.00000000 PT#INTENDED_DEVICE_FAMILY {Stratix IV} PT#DUTY_CYCLE0 50.00000000 PT#PLL_TARGET_HARCOPY_CHECK 0 PT#INCLK1_FREQ_UNIT_CHANGED 1 PT#RECONFIG_FILE ALTPLL1256297171721465.mif PT#ACTIVECLK_CHECK 0</parameter>
+  <parameter name="HIDDEN_USED_PORTS">UP#locked used UP#c2 used UP#c1 used UP#c0 used UP#areset used UP#inclk0 used</parameter>
+  <parameter name="HIDDEN_IS_NUMERIC">IN#WIDTH_CLOCK 1 IN#CLK0_DUTY_CYCLE 1 IN#CLK2_DIVIDE_BY 1 IN#PLL_TARGET_HARCOPY_CHECK 1 IN#CLK1_MULTIPLY_BY 1 IN#SWITCHOVER_COUNT_EDIT 1 IN#INCLK0_INPUT_FREQUENCY 1 IN#PLL_LVDS_PLL_CHECK 1 IN#PLL_AUTOPLL_CHECK 1 IN#PLL_FASTPLL_CHECK 1 IN#CLK1_DUTY_CYCLE 1 IN#PLL_ENHPLL_CHECK 1 IN#CLK2_MULTIPLY_BY 1 IN#DIV_FACTOR2 1 IN#DIV_FACTOR1 1 IN#DIV_FACTOR0 1 IN#LVDS_MODE_DATA_RATE_DIRTY 1 IN#GLOCK_COUNTER_EDIT 1 IN#CLK2_DUTY_CYCLE 1 IN#CLK0_DIVIDE_BY 1 IN#MULT_FACTOR2 1 IN#MULT_FACTOR1 1 IN#MULT_FACTOR0 1 IN#CLK0_MULTIPLY_BY 1 IN#USE_MIL_SPEED_GRADE 1 IN#CLK1_DIVIDE_BY 1</parameter>
+  <parameter name="HIDDEN_MF_PORTS">MF#areset 1 MF#clk 1 MF#locked 1 MF#inclk 1</parameter>
+  <parameter name="HIDDEN_IF_PORTS">IF#locked {output 0} IF#reset {input 0} IF#clk {input 0} IF#readdata {output 32} IF#write {input 0} IF#phasedone {output 0} IF#address {input 2} IF#c2 {output 0} IF#c1 {output 0} IF#c0 {output 0} IF#writedata {input 32} IF#read {input 0} IF#areset {input 0}</parameter>
+  <parameter name="HIDDEN_IS_FIRST_EDIT" value="0" />
+  <parameter name="AUTO_INCLK_INTERFACE_CLOCK_RATE" value="25000000" />
+  <parameter name="AUTO_DEVICE_FAMILY" value="Stratix IV" />
+ </module>
+ <module
+   kind="altera_avalon_pio"
+   version="11.1"
+   enabled="1"
+   name="pio_debug_wave">
+  <parameter name="bitClearingEdgeCapReg" value="false" />
+  <parameter name="bitModifyingOutReg" value="false" />
+  <parameter name="captureEdge" value="false" />
+  <parameter name="clockRate" value="125000000" />
+  <parameter name="direction" value="Output" />
+  <parameter name="edgeType" value="RISING" />
+  <parameter name="generateIRQ" value="false" />
+  <parameter name="irqType" value="LEVEL" />
+  <parameter name="resetValue" value="0" />
+  <parameter name="simDoTestBenchWiring" value="false" />
+  <parameter name="simDrivenValue" value="0" />
+  <parameter name="width" value="32" />
+ </module>
+ <module kind="altera_avalon_timer" version="11.1" enabled="1" name="timer_0">
+  <parameter name="alwaysRun" value="true" />
+  <parameter name="counterSize" value="32" />
+  <parameter name="fixedPeriod" value="true" />
+  <parameter name="period" value="1" />
+  <parameter name="periodUnits" value="MSEC" />
+  <parameter name="resetOutput" value="false" />
+  <parameter name="snapshot" value="false" />
+  <parameter name="systemFrequency" value="125000000" />
+  <parameter name="timeoutPulseOutput" value="false" />
+  <parameter name="timerPreset">SIMPLE_PERIODIC_INTERRUPT</parameter>
+ </module>
+ <module kind="altera_avalon_pio" version="11.1" enabled="1" name="pio_wdi">
+  <parameter name="bitClearingEdgeCapReg" value="false" />
+  <parameter name="bitModifyingOutReg" value="false" />
+  <parameter name="captureEdge" value="false" />
+  <parameter name="clockRate" value="125000000" />
+  <parameter name="direction" value="Output" />
+  <parameter name="edgeType" value="RISING" />
+  <parameter name="generateIRQ" value="false" />
+  <parameter name="irqType" value="LEVEL" />
+  <parameter name="resetValue" value="0" />
+  <parameter name="simDoTestBenchWiring" value="false" />
+  <parameter name="simDrivenValue" value="0" />
+  <parameter name="width" value="1" />
+ </module>
+ <module kind="avs_common_mm" version="1.0" enabled="1" name="ram_bf_weights">
+  <parameter name="g_adr_w" value="16" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module kind="avs_common_mm" version="1.0" enabled="1" name="ram_st_sst">
+  <parameter name="g_adr_w" value="12" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module kind="avs_common_mm" version="1.0" enabled="1" name="ram_diag_bg">
+  <parameter name="g_adr_w" value="13" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module kind="avs_common_mm" version="1.0" enabled="1" name="reg_diag_bg">
+  <parameter name="g_adr_w" value="3" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module kind="avs_common_mm" version="1.0" enabled="1" name="reg_unb_sens">
+  <parameter name="g_adr_w" value="3" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module kind="avs_common_mm" version="1.0" enabled="1" name="pio_system_info">
+  <parameter name="g_adr_w" value="5" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module kind="avs_common_mm" version="1.0" enabled="1" name="rom_system_info">
+  <parameter name="g_adr_w" value="10" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module kind="avs_common_mm" version="1.0" enabled="1" name="pio_pps">
+  <parameter name="g_adr_w" value="1" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module kind="avs_common_mm" version="1.0" enabled="1" name="reg_wdi">
+  <parameter name="g_adr_w" value="1" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module
+   kind="avs_common_mm"
+   version="1.0"
+   enabled="1"
+   name="reg_dp_ram_from_mm">
+  <parameter name="g_adr_w" value="1" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module
+   kind="avs_common_mm"
+   version="1.0"
+   enabled="1"
+   name="ram_dp_ram_from_mm">
+  <parameter name="g_adr_w" value="4" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module kind="avs_common_mm" version="1.0" enabled="1" name="reg_st_sst">
+  <parameter name="g_adr_w" value="4" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module kind="avs_common_mm" version="1.0" enabled="1" name="ram_ss_ss_wide">
+  <parameter name="g_adr_w" value="16" />
+  <parameter name="g_dat_w" value="32" />
+  <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
+ </module>
+ <module kind="avs2_eth_coe" version="1.0" enabled="1" name="avs_eth_0">
+  <parameter name="AUTO_MM_CLOCK_RATE" value="125000000" />
+ </module>
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.instruction_master"
+   end="cpu_0.jtag_debug_module">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x3800" />
+ </connection>
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="cpu_0.jtag_debug_module">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x3800" />
+ </connection>
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.instruction_master"
+   end="onchip_memory2_0.s1">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x00020000" />
+ </connection>
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="onchip_memory2_0.s1">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x00020000" />
+ </connection>
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="jtag_uart_0.avalon_jtag_slave">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x01d0" />
+ </connection>
+ <connection
+   kind="interrupt"
+   version="11.1"
+   start="cpu_0.d_irq"
+   end="jtag_uart_0.irq">
+  <parameter name="irqNumber" value="0" />
+ </connection>
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="altpll_0.pll_slave">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x01a0" />
+ </connection>
+ <connection kind="clock" version="11.1" start="altpll_0.c0" end="cpu_0.clk" />
+ <connection kind="clock" version="11.1" start="altpll_0.c0" end="jtag_uart_0.clk" />
+ <connection
+   kind="clock"
+   version="11.1"
+   start="clk_0.clk"
+   end="altpll_0.inclk_interface" />
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="pio_debug_wave.clk" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="pio_debug_wave.s1">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x01b0" />
+ </connection>
+ <connection kind="clock" version="11.1" start="altpll_0.c0" end="timer_0.clk" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="timer_0.s1">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x0140" />
+ </connection>
+ <connection kind="interrupt" version="11.1" start="cpu_0.d_irq" end="timer_0.irq">
+  <parameter name="irqNumber" value="1" />
+ </connection>
+ <connection kind="clock" version="11.1" start="altpll_0.c0" end="pio_wdi.clk" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="pio_wdi.s1">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x01c0" />
+ </connection>
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="onchip_memory2_0.clk1" />
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="ram_bf_weights.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="ram_bf_weights.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x00040000" />
+ </connection>
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="ram_st_sst.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="ram_st_sst.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x4000" />
+ </connection>
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="ram_diag_bg.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="ram_diag_bg.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x8000" />
+ </connection>
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="reg_diag_bg.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="reg_diag_bg.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x0160" />
+ </connection>
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="reg_unb_sens.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="reg_unb_sens.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x0180" />
+ </connection>
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="pio_system_info.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="pio_system_info.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x0000" />
+ </connection>
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="rom_system_info.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="rom_system_info.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x1000" />
+ </connection>
+ <connection kind="clock" version="11.1" start="altpll_0.c0" end="pio_pps.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="pio_pps.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x01d8" />
+ </connection>
+ <connection kind="clock" version="11.1" start="altpll_0.c0" end="reg_wdi.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="reg_wdi.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x3000" />
+ </connection>
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="reg_dp_ram_from_mm.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="reg_dp_ram_from_mm.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x01e0" />
+ </connection>
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="ram_dp_ram_from_mm.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="ram_dp_ram_from_mm.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x0080" />
+ </connection>
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="reg_st_sst.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="reg_st_sst.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x00c0" />
+ </connection>
+ <connection
+   kind="clock"
+   version="11.1"
+   start="altpll_0.c0"
+   end="ram_ss_ss_wide.system" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="ram_ss_ss_wide.mem">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x00080000" />
+ </connection>
+ <connection kind="clock" version="11.1" start="altpll_0.c0" end="avs_eth_0.mm" />
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="avs_eth_0.mms_tse">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x2000" />
+ </connection>
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="avs_eth_0.mms_reg">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x0100" />
+ </connection>
+ <connection
+   kind="avalon"
+   version="11.1"
+   start="cpu_0.data_master"
+   end="avs_eth_0.mms_ram">
+  <parameter name="arbitrationPriority" value="1" />
+  <parameter name="baseAddress" value="0x00010000" />
+ </connection>
+ <connection
+   kind="interrupt"
+   version="11.1"
+   start="cpu_0.d_irq"
+   end="avs_eth_0.interrupt">
+  <parameter name="irqNumber" value="2" />
+ </connection>
+</system>
diff --git a/libraries/dsp/bf/designs/unb1_fn_bf/quartus/unb1_fn_bf_pins.tcl b/libraries/dsp/bf/designs/unb1_fn_bf/quartus/unb1_fn_bf_pins.tcl
new file mode 100644
index 0000000000000000000000000000000000000000..14269479e73f36b1c577213c4d4438c7d8409b05
--- /dev/null
+++ b/libraries/dsp/bf/designs/unb1_fn_bf/quartus/unb1_fn_bf_pins.tcl
@@ -0,0 +1,26 @@
+###############################################################################
+#
+# Copyright (C) 2014
+# ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+###############################################################################
+
+source $::env(UNB)/Firmware/designs/unb_common/src/tcl/COMMON_NODE_general_pins.tcl
+source $::env(UNB)/Firmware/designs/unb_common/src/tcl/COMMON_NODE_other_pins.tcl
+source $::env(UNB)/Firmware/designs/unb_common/src/tcl/COMMON_NODE_1Gbe_pins.tcl
+source $::env(UNB)/Firmware/designs/unb_common/src/tcl/COMMON_NODE_sensor_pins.tcl
+
diff --git a/libraries/dsp/bf/designs/unb1_fn_bf/src/vhdl/mmm_unb1_fn_bf.vhd b/libraries/dsp/bf/designs/unb1_fn_bf/src/vhdl/mmm_unb1_fn_bf.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..6d33133cea30cbedc92d58dd960d8670564b89cd
--- /dev/null
+++ b/libraries/dsp/bf/designs/unb1_fn_bf/src/vhdl/mmm_unb1_fn_bf.vhd
@@ -0,0 +1,469 @@
+------------------------------------------------------------------------------
+--
+-- Copyright (C) 2012
+-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-------------------------------------------------------------------------------
+
+LIBRARY IEEE, common_lib, unb1_board_lib, mm_lib, eth_lib, technology_lib, tech_tse_lib, bf_lib;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.NUMERIC_STD.ALL;
+USE common_lib.common_pkg.ALL;
+USE common_lib.common_mem_pkg.ALL;
+USE common_lib.tb_common_mem_pkg.ALL;
+USE common_lib.common_network_layers_pkg.ALL;
+USE common_lib.common_network_total_header_pkg.ALL;
+USE unb1_board_lib.unb1_board_pkg.ALL;
+USE unb1_board_lib.unb1_board_peripherals_pkg.ALL;
+USE mm_lib.mm_file_pkg.ALL;
+USE mm_lib.mm_file_unb_pkg.ALL;
+USE eth_lib.eth_pkg.ALL; 
+USE technology_lib.technology_pkg.ALL;
+USE tech_tse_lib.tech_tse_pkg.ALL;
+USE tech_tse_lib.tb_tech_tse_pkg.ALL;
+USE bf_lib.bf_pkg.ALL;
+
+ENTITY mmm_fn_bf IS
+  GENERIC (
+    g_sim         : BOOLEAN := FALSE; --FALSE: use SOPC; TRUE: use mm_file I/O
+    g_sim_unb_nr  : NATURAL := 0;
+    g_sim_node_nr : NATURAL := 0;
+    g_bf          : t_c_bf  := c_bf
+  );
+  PORT (
+    xo_clk                   : IN  STD_LOGIC;
+    xo_rst_n                 : IN  STD_LOGIC;
+    xo_rst                   : IN  STD_LOGIC;
+
+    mm_rst                   : IN  STD_LOGIC;
+    mm_clk                   : OUT STD_LOGIC;
+    mm_locked                : OUT STD_LOGIC;
+
+    pout_wdi                 : OUT STD_LOGIC;
+                             
+    -- Manual WDI override
+    reg_wdi_mosi             : OUT t_mem_mosi;
+    reg_wdi_miso             : IN  t_mem_miso;
+                             
+    -- system_info
+    reg_unb_system_info_mosi : OUT t_mem_mosi;
+    reg_unb_system_info_miso : IN  t_mem_miso;
+    rom_unb_system_info_mosi : OUT t_mem_mosi;
+    rom_unb_system_info_miso : IN  t_mem_miso;
+                             
+    -- UniBoard I2C sensors
+    reg_unb_sens_mosi        : OUT t_mem_mosi; 
+    reg_unb_sens_miso        : IN  t_mem_miso; 
+                             
+    -- Diagnostics
+    reg_diagnostics_mosi     : OUT t_mem_mosi; 
+    reg_diagnostics_miso     : IN  t_mem_miso;
+
+    -- Beamformer Node
+    -- . block generator
+    reg_diag_bg_mosi         : OUT t_mem_mosi; 
+    reg_diag_bg_miso         : IN  t_mem_miso; 
+    ram_diag_bg_mosi         : OUT t_mem_mosi; 
+    ram_diag_bg_miso         : IN  t_mem_miso; 
+    -- . beam former
+    ram_ss_ss_wide_mosi      : OUT t_mem_mosi;
+    ram_ss_ss_wide_miso      : IN  t_mem_miso;  
+    ram_bf_weights_mosi      : OUT t_mem_mosi;
+    ram_bf_weights_miso      : IN  t_mem_miso; 
+    ram_st_sst_bf_mosi       : OUT t_mem_mosi;
+    ram_st_sst_bf_miso       : IN  t_mem_miso;
+    reg_st_sst_bf_mosi       : OUT t_mem_mosi;
+    reg_st_sst_bf_miso       : IN  t_mem_miso;
+
+    -- dp_offload
+    reg_dp_ram_from_mm_mosi  : OUT t_mem_mosi; 
+    reg_dp_ram_from_mm_miso  : IN  t_mem_miso;
+    ram_dp_ram_from_mm_mosi  : OUT t_mem_mosi; 
+    ram_dp_ram_from_mm_miso  : IN  t_mem_miso;
+    -- . Nof words to offload selection
+    reg_dp_split_mosi        : OUT t_mem_mosi := c_mem_mosi_rst;
+    reg_dp_split_miso        : IN  t_mem_miso;
+    reg_dp_pkt_merge_mosi    : OUT t_mem_mosi := c_mem_mosi_rst;
+    reg_dp_pkt_merge_miso    : IN  t_mem_miso;
+
+    -- eth1g
+    eth1g_tse_clk            : OUT STD_LOGIC;
+    eth1g_mm_rst             : OUT STD_LOGIC;
+    eth1g_tse_mosi           : OUT t_mem_mosi;  
+    eth1g_tse_miso           : IN  t_mem_miso;  
+    eth1g_reg_mosi           : OUT t_mem_mosi;  
+    eth1g_reg_miso           : IN  t_mem_miso;  
+    eth1g_reg_interrupt      : IN  STD_LOGIC; 
+    eth1g_ram_mosi           : OUT t_mem_mosi;  
+    eth1g_ram_miso           : IN  t_mem_miso 
+
+  );
+END mmm_fn_bf;
+
+
+ARCHITECTURE str OF mmm_fn_bf IS   
+   
+  -- Application specific constants (or generics)   
+  CONSTANT c_bg_diag_wave_period    : NATURAL := 4; 
+     
+  -- Actual MM address widths, the MM data width is fixed at the default c_word_w=32
+  CONSTANT c_reg_diag_bg_addr_w     : NATURAL := 3;
+  CONSTANT c_ram_diag_bg_addr_w     : NATURAL := ceil_log2(c_bg_diag_wave_period) + ceil_log2(g_bf.nof_subbands*g_bf.nof_signal_paths/g_bf.nof_input_streams)+ceil_log2(g_bf.nof_input_streams); 
+  CONSTANT c_ram_bf_weights_addr_w  : NATURAL := ceil_log2(c_bf_max_nof_bf_units*g_bf.nof_signal_paths*g_bf.nof_weights); 
+  CONSTANT c_ram_st_sst_bf_addr_w   : NATURAL := ceil_log2(c_bf_max_nof_bf_units*g_bf.stat_data_sz*g_bf.nof_weights*c_nof_complex);     
+  CONSTANT c_reg_st_sst_bf_addr_w   : NATURAL := ceil_log2(c_bf_max_nof_bf_units)*2;  -- 2 bits reserved for single reg_st_sst.  
+  CONSTANT c_ram_ss_ss_wide_addr_w  : NATURAL := ceil_log2(c_bf_max_nof_bf_units*g_bf.nof_weights*g_bf.nof_signal_paths);
+  -- BF offload                                                                                                       
+  CONSTANT c_hdr_nof_words          : NATURAL := c_network_total_header_32b_nof_words;
+  CONSTANT c_dp_ram_mm_nof_words    : NATURAL := c_hdr_nof_words * (c_eth_data_w/c_word_w);
+  CONSTANT c_dp_ram_mm_adr_w        : NATURAL := ceil_log2(c_dp_ram_mm_nof_words);
+  
+  -- Simulation
+  CONSTANT c_mm_clk_period   : TIME := 100 ps;
+  CONSTANT c_tse_clk_period  : TIME := 8 ns;
+
+  CONSTANT c_sim_node_type : STRING(1 TO 2):= sel_a_b(g_sim_node_nr<4, "FN", "BN");
+  CONSTANT c_sim_node_nr   : NATURAL := sel_a_b(c_sim_node_type="BN", g_sim_node_nr-4, g_sim_node_nr);
+
+  SIGNAL i_mm_clk  : STD_LOGIC := '1';
+  SIGNAL i_tse_clk : STD_LOGIC := '1';
+  
+  ----------------------------------------------------------------------------
+  -- mm_file component
+  ----------------------------------------------------------------------------
+  COMPONENT mm_file
+  GENERIC(
+    g_file_prefix       : STRING;
+    g_mm_clk_period     : TIME := c_mm_clk_period;
+    g_update_on_change  : BOOLEAN := FALSE;
+    g_mm_rd_latency     : NATURAL := 1
+  );
+  PORT (
+    mm_rst        : IN  STD_LOGIC;
+    mm_clk        : IN  STD_LOGIC;
+    mm_master_out : OUT t_mem_mosi;
+    mm_master_in  : IN  t_mem_miso 
+  );
+  END COMPONENT;               
+
+  CONSTANT c_dut_src_mac           : STD_LOGIC_VECTOR(c_network_eth_mac_slv'RANGE) := X"002286080001";
+  SIGNAL eth_psc_access            : STD_LOGIC;
+                                   
+                                   
+  SIGNAL reg_ppsh_mosi             : t_mem_mosi := c_mem_mosi_rst;
+  SIGNAL reg_ppsh_miso             : t_mem_miso := c_mem_miso_rst;
+                                   
+  SIGNAL i_eth1g_reg_mosi          : t_mem_mosi;
+  SIGNAL i_eth1g_reg_miso          : t_mem_miso;
+                                   
+  SIGNAL eth1g_reg_proc_mosi       : t_mem_mosi;
+  SIGNAL eth1g_reg_proc_miso       : t_mem_miso;
+
+  CONSTANT c_sim_eth_src_mac       : STD_LOGIC_VECTOR(c_network_eth_mac_slv'RANGE) := X"00228608" & TO_UVEC(g_sim_unb_nr, c_byte_w) & TO_UVEC(g_sim_node_nr, c_byte_w);
+  CONSTANT c_sim_eth_control_rx_en : NATURAL := 2**c_eth_mm_reg_control_bi.rx_en;
+
+  SIGNAL sim_eth_mm_bus_switch     : STD_LOGIC;
+  SIGNAL sim_eth_psc_access        : STD_LOGIC;
+                                   
+  SIGNAL sim_eth1g_reg_mosi        : t_mem_mosi;
+  
+BEGIN
+  
+  mm_clk        <= i_mm_clk;
+  eth1g_tse_clk <= i_tse_clk;
+
+  ----------------------------------------------------------------------------
+  -- MM <-> file I/O for simulation. The files are created in $UPE/sim.
+  ----------------------------------------------------------------------------
+  gen_mm_file_io : IF g_sim = TRUE GENERATE
+
+    i_mm_clk  <= NOT i_mm_clk AFTER c_mm_clk_period/2;
+    mm_locked <= '0', '1' AFTER c_mm_clk_period*5;
+
+    i_tse_clk    <= NOT i_tse_clk AFTER c_tse_clk_period/2;
+    eth1g_mm_rst <= '1', '0' AFTER c_tse_clk_period*5;
+
+    u_mm_file_reg_unb_system_info : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "PIO_SYSTEM_INFO")
+                                               PORT MAP(mm_rst, i_mm_clk, reg_unb_system_info_mosi, reg_unb_system_info_miso );
+
+    u_mm_file_rom_unb_system_info : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "ROM_SYSTEM_INFO")
+                                               PORT MAP(mm_rst, i_mm_clk, rom_unb_system_info_mosi, rom_unb_system_info_miso );
+
+    u_mm_file_reg_wdi             : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_WDI")
+                                               PORT MAP(mm_rst, i_mm_clk, reg_wdi_mosi, reg_wdi_miso );
+
+    u_mm_file_reg_unb_sens        : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_UNB_SENS")
+                                               PORT MAP(mm_rst, i_mm_clk, reg_unb_sens_mosi, reg_unb_sens_miso );
+
+    u_mm_file_reg_diagnostics     : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DIAGNOSTICS")
+                                               PORT MAP(mm_rst, i_mm_clk, reg_diagnostics_mosi, reg_diagnostics_miso );
+
+    u_mm_file_reg_dp_ram_from_mm  : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DP_RAM_FROM_MM")
+                                               PORT MAP(mm_rst, i_mm_clk, reg_dp_ram_from_mm_mosi, reg_dp_ram_from_mm_miso );
+
+    u_mm_file_ram_dp_ram_from_mm  : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_DP_RAM_FROM_MM")
+                                               PORT MAP(mm_rst, i_mm_clk, ram_dp_ram_from_mm_mosi, ram_dp_ram_from_mm_miso );
+
+--    u_mm_file_ram_dp_ram_to_mm    : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_DP_RAM_TO_MM")
+--                                               PORT MAP(mm_rst, i_mm_clk, ram_dp_ram_to_mm_mosi, ram_dp_ram_to_mm_miso );
+
+    u_mm_file_reg_dp_split        : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DP_SPLIT")
+                                               PORT MAP(mm_rst, i_mm_clk, reg_dp_split_mosi, reg_dp_split_miso );
+
+    u_mm_file_reg_dp_pkt_merge    : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DP_PKT_MERGE")
+                                               PORT MAP(mm_rst, i_mm_clk, reg_dp_pkt_merge_mosi, reg_dp_pkt_merge_miso );
+
+    u_mm_file_reg_eth             : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "AVS_ETH_0_MMS_REG")
+                                               PORT MAP(mm_rst, i_mm_clk, i_eth1g_reg_mosi, eth1g_reg_miso );
+
+    u_mm_file_ram_bf_weights      : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_BF_WEIGHTS")
+                                               PORT MAP(mm_rst, i_mm_clk, ram_bf_weights_mosi, ram_bf_weights_miso );
+
+    u_mm_file_ram_ss_ss_wide      : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_SS_SS_WIDE")
+                                               PORT MAP(mm_rst, i_mm_clk, ram_ss_ss_wide_mosi, ram_ss_ss_wide_miso );
+
+    u_mm_file_ram_st_sst_bf       : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_ST_SST")
+                                               PORT MAP(mm_rst, i_mm_clk, ram_st_sst_bf_mosi, ram_st_sst_bf_miso );
+
+    u_mm_file_reg_st_sst_bf       : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_ST_SST")
+                                               PORT MAP(mm_rst, i_mm_clk, reg_st_sst_bf_mosi, reg_st_sst_bf_miso );
+
+    u_mm_file_reg_diag_bg       : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DIAG_BG")
+                                               PORT MAP(mm_rst, i_mm_clk, reg_diag_bg_mosi, reg_diag_bg_miso );
+
+    u_mm_file_ram_diag_bg       : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_DIAG_BG")
+                                               PORT MAP(mm_rst, i_mm_clk, ram_diag_bg_mosi, ram_diag_bg_miso );
+
+
+    ----------------------------------------------------------------------------
+    -- 1GbE setup sequence normally performed by unb_os@NIOS
+    ----------------------------------------------------------------------------
+    p_eth_setup : PROCESS
+    BEGIN
+      sim_eth_mm_bus_switch <= '1';
+
+      eth1g_tse_mosi.wr <= '0';
+      eth1g_tse_mosi.rd <= '0';
+      WAIT FOR 400 ns;
+      WAIT UNTIL rising_edge(i_mm_clk);
+      proc_tech_tse_setup(c_tech_stratixiv, FALSE, c_tech_tse_tx_fifo_depth, c_tech_tse_rx_fifo_depth, c_tech_tse_tx_ready_latency, c_sim_eth_src_mac, sim_eth_psc_access, i_mm_clk, eth1g_tse_miso, eth1g_tse_mosi);
+
+      -- Enable RX
+      proc_mem_mm_bus_wr(c_eth_reg_control_wi+0, c_sim_eth_control_rx_en, i_mm_clk, eth1g_reg_miso, sim_eth1g_reg_mosi);  -- control rx en
+      sim_eth_mm_bus_switch <= '0';
+
+      WAIT;
+    END PROCESS;
+
+    p_switch : PROCESS(sim_eth_mm_bus_switch, sim_eth1g_reg_mosi, i_eth1g_reg_mosi)
+    BEGIN
+      IF sim_eth_mm_bus_switch = '1' THEN
+          eth1g_reg_mosi <= sim_eth1g_reg_mosi;
+        ELSE
+          eth1g_reg_mosi <= i_eth1g_reg_mosi;
+        END IF;
+    END PROCESS;
+
+    ----------------------------------------------------------------------------
+    -- Procedure that polls a sim control file that can be used to e.g. get
+    -- the simulation time in ns
+    ----------------------------------------------------------------------------
+    mmf_poll_sim_ctrl_file(c_mmf_unb_file_path & "sim.ctrl", c_mmf_unb_file_path & "sim.stat");
+
+  END GENERATE;
+
+  -----------------------------------------------------------------------------
+  -- SOPC system
+  -----------------------------------------------------------------------------
+  ----------------------------------------------------------------------------
+  -- SOPC for synthesis
+  ----------------------------------------------------------------------------
+  gen_sopc : IF g_sim = FALSE GENERATE
+  
+    u_sopc : ENTITY work.sopc_unb1_fn_bf
+    PORT MAP (
+      -- 1) global signals:
+      clk_0                                         => xo_clk,        -- PLL reference = 25 MHz from ETH_clk pin
+      reset_n                                       => xo_rst_n,
+      mm_clk                                        => i_mm_clk,      -- PLL clk[0] = 125 MHz system clock that the NIOS2 and the MM bus run on
+      cal_clk                                       => OPEN,          -- PLL clk[1] =  40 MHz calibration clock for the IO reconfiguration
+      tse_clk                                       => i_tse_clk,     -- PLL clk[2] = 125 MHz dedicated clock for the 1 Gbit Ethernet unit 
+  
+      -- the_altpll_0
+      areset_to_the_altpll_0                        => '0',
+      locked_from_the_altpll_0                      => mm_locked,
+      phasedone_from_the_altpll_0                   => OPEN,
+  
+      -- the_avs2_eth_0
+      coe_clk_export_from_the_avs_eth_0            => OPEN,
+      coe_reset_export_from_the_avs_eth_0          => eth1g_mm_rst,
+      coe_tse_address_export_from_the_avs_eth_0    => eth1g_tse_mosi.address(c_unb1_board_peripherals_mm_reg_default.reg_tse_adr_w-1 DOWNTO 0),
+      coe_tse_write_export_from_the_avs_eth_0      => eth1g_tse_mosi.wr,
+      coe_tse_writedata_export_from_the_avs_eth_0  => eth1g_tse_mosi.wrdata(c_word_w-1 DOWNTO 0),
+      coe_tse_read_export_from_the_avs_eth_0       => eth1g_tse_mosi.rd,
+      coe_tse_readdata_export_to_the_avs_eth_0     => eth1g_tse_miso.rddata(c_word_w-1 DOWNTO 0),
+      coe_tse_waitrequest_export_to_the_avs_eth_0  => eth1g_tse_miso.waitrequest,
+      coe_reg_address_export_from_the_avs_eth_0    => eth1g_reg_mosi.address(c_unb1_board_peripherals_mm_reg_default.reg_eth_adr_w-1 DOWNTO 0),
+      coe_reg_write_export_from_the_avs_eth_0      => eth1g_reg_mosi.wr,
+      coe_reg_writedata_export_from_the_avs_eth_0  => eth1g_reg_mosi.wrdata(c_word_w-1 DOWNTO 0),
+      coe_reg_read_export_from_the_avs_eth_0       => eth1g_reg_mosi.rd,
+      coe_reg_readdata_export_to_the_avs_eth_0     => eth1g_reg_miso.rddata(c_word_w-1 DOWNTO 0),
+      coe_irq_export_to_the_avs_eth_0              => eth1g_reg_interrupt,
+      coe_ram_address_export_from_the_avs_eth_0    => eth1g_ram_mosi.address(c_unb1_board_peripherals_mm_reg_default.ram_eth_adr_w-1 DOWNTO 0),
+      coe_ram_write_export_from_the_avs_eth_0      => eth1g_ram_mosi.wr,
+      coe_ram_writedata_export_from_the_avs_eth_0  => eth1g_ram_mosi.wrdata(c_word_w-1 DOWNTO 0),
+      coe_ram_read_export_from_the_avs_eth_0       => eth1g_ram_mosi.rd,
+      coe_ram_readdata_export_to_the_avs_eth_0     => eth1g_ram_miso.rddata(c_word_w-1 DOWNTO 0),
+  
+      -- the_reg_unb_sens
+      coe_address_export_from_the_reg_unb_sens   => reg_unb_sens_mosi.address(c_unb1_board_peripherals_mm_reg_default.reg_unb_sens_adr_w-1 DOWNTO 0),
+      coe_clk_export_from_the_reg_unb_sens       => OPEN,                                            
+      coe_read_export_from_the_reg_unb_sens      => reg_unb_sens_mosi.rd,                                  
+      coe_readdata_export_to_the_reg_unb_sens    => reg_unb_sens_miso.rddata(c_word_w-1 DOWNTO 0),         
+      coe_reset_export_from_the_reg_unb_sens     => OPEN,                                            
+      coe_write_export_from_the_reg_unb_sens     => reg_unb_sens_mosi.wr,                                  
+      coe_writedata_export_from_the_reg_unb_sens => reg_unb_sens_mosi.wrdata(c_word_w-1 DOWNTO 0),         
+      
+      -- the_ram_st_sst
+      coe_address_export_from_the_ram_st_sst    => ram_st_sst_bf_mosi.address(c_ram_st_sst_bf_addr_w-1 DOWNTO 0),
+      coe_clk_export_from_the_ram_st_sst        => OPEN,                                           
+      coe_read_export_from_the_ram_st_sst       => ram_st_sst_bf_mosi.rd,                                 
+      coe_readdata_export_to_the_ram_st_sst     => ram_st_sst_bf_miso.rddata(c_word_w-1 DOWNTO 0),        
+      coe_reset_export_from_the_ram_st_sst      => OPEN,                                           
+      coe_write_export_from_the_ram_st_sst      => ram_st_sst_bf_mosi.wr,                                 
+      coe_writedata_export_from_the_ram_st_sst  => ram_st_sst_bf_mosi.wrdata(c_word_w-1 DOWNTO 0),        
+  
+      -- the_reg_st_sst
+      coe_address_export_from_the_reg_st_sst    => reg_st_sst_bf_mosi.address(c_reg_st_sst_bf_addr_w-1 DOWNTO 0),
+      coe_clk_export_from_the_reg_st_sst        => OPEN,                                           
+      coe_read_export_from_the_reg_st_sst       => reg_st_sst_bf_mosi.rd,                                 
+      coe_readdata_export_to_the_reg_st_sst     => reg_st_sst_bf_miso.rddata(c_word_w-1 DOWNTO 0),        
+      coe_reset_export_from_the_reg_st_sst      => OPEN,                                           
+      coe_write_export_from_the_reg_st_sst      => reg_st_sst_bf_mosi.wr,                                 
+      coe_writedata_export_from_the_reg_st_sst  => reg_st_sst_bf_mosi.wrdata(c_word_w-1 DOWNTO 0),        
+  
+      -- the_ram_ss_ss_wide
+      coe_address_export_from_the_ram_ss_ss_wide   => ram_ss_ss_wide_mosi.address(c_ram_ss_ss_wide_addr_w-1 DOWNTO 0), 
+      coe_clk_export_from_the_ram_ss_ss_wide       => OPEN,                                            
+      coe_read_export_from_the_ram_ss_ss_wide      => ram_ss_ss_wide_mosi.rd,                                  
+      coe_readdata_export_to_the_ram_ss_ss_wide    => ram_ss_ss_wide_miso.rddata(c_word_w-1 DOWNTO 0),         
+      coe_reset_export_from_the_ram_ss_ss_wide     => OPEN,                                            
+      coe_write_export_from_the_ram_ss_ss_wide     => ram_ss_ss_wide_mosi.wr,                                  
+      coe_writedata_export_from_the_ram_ss_ss_wide => ram_ss_ss_wide_mosi.wrdata(c_word_w-1 DOWNTO 0),         
+  
+      -- the_ram_bf_weights
+      coe_address_export_from_the_ram_bf_weights   => ram_bf_weights_mosi.address(c_ram_bf_weights_addr_w-1 DOWNTO 0), 
+      coe_clk_export_from_the_ram_bf_weights       => OPEN,                                                    
+      coe_read_export_from_the_ram_bf_weights      => ram_bf_weights_mosi.rd,                                      
+      coe_readdata_export_to_the_ram_bf_weights    => ram_bf_weights_miso.rddata(c_word_w-1 DOWNTO 0),             
+      coe_reset_export_from_the_ram_bf_weights     => OPEN,                                                    
+      coe_write_export_from_the_ram_bf_weights     => ram_bf_weights_mosi.wr,                                      
+      coe_writedata_export_from_the_ram_bf_weights => ram_bf_weights_mosi.wrdata(c_word_w-1 DOWNTO 0),             
+  
+      -- the_reg_bg_diag_bg
+      coe_address_export_from_the_reg_diag_bg   => reg_diag_bg_mosi.address(c_reg_diag_bg_addr_w-1 DOWNTO 0),  
+      coe_clk_export_from_the_reg_diag_bg       => OPEN,                                                   
+      coe_read_export_from_the_reg_diag_bg      => reg_diag_bg_mosi.rd,                                      
+      coe_readdata_export_to_the_reg_diag_bg    => reg_diag_bg_miso.rddata(c_word_w-1 DOWNTO 0),             
+      coe_reset_export_from_the_reg_diag_bg     => OPEN,                                                   
+      coe_write_export_from_the_reg_diag_bg     => reg_diag_bg_mosi.wr,                                      
+      coe_writedata_export_from_the_reg_diag_bg => reg_diag_bg_mosi.wrdata(c_word_w-1 DOWNTO 0),             
+  
+      -- the_ram_diag_bg
+      coe_address_export_from_the_ram_diag_bg   => ram_diag_bg_mosi.address(c_ram_diag_bg_addr_w-1 DOWNTO 0),
+      coe_clk_export_from_the_ram_diag_bg       => OPEN,                                                   
+      coe_read_export_from_the_ram_diag_bg      => ram_diag_bg_mosi.rd,                                     
+      coe_readdata_export_to_the_ram_diag_bg    => ram_diag_bg_miso.rddata(c_word_w-1 DOWNTO 0),            
+      coe_reset_export_from_the_ram_diag_bg     => OPEN,                                                   
+      coe_write_export_from_the_ram_diag_bg     => ram_diag_bg_mosi.wr,                                     
+      coe_writedata_export_from_the_ram_diag_bg => ram_diag_bg_mosi.wrdata(c_word_w-1 DOWNTO 0),            
+                        
+      -- the_pio_debug_wave
+      out_port_from_the_pio_debug_wave            => OPEN,
+  
+      -- the_pio_pps
+      coe_clk_export_from_the_pio_pps               => OPEN,
+      coe_reset_export_from_the_pio_pps             => OPEN,
+      coe_address_export_from_the_pio_pps           => reg_ppsh_mosi.address(c_unb1_board_peripherals_mm_reg_default.reg_ppsh_adr_w-1),  -- 1 bit address width so must use (0) instead of (0 DOWNTO 0)
+      coe_read_export_from_the_pio_pps              => reg_ppsh_mosi.rd,
+      coe_readdata_export_to_the_pio_pps            => reg_ppsh_miso.rddata(c_word_w-1 DOWNTO 0),
+      coe_write_export_from_the_pio_pps             => reg_ppsh_mosi.wr,
+      coe_writedata_export_from_the_pio_pps         => reg_ppsh_mosi.wrdata(c_word_w-1 DOWNTO 0),
+  
+      -- the_pio_system_info: actually a avs_common_mm instance
+      coe_clk_export_from_the_pio_system_info         => OPEN,
+      coe_reset_export_from_the_pio_system_info       => OPEN,
+      coe_address_export_from_the_pio_system_info     => reg_unb_system_info_mosi.address(c_unb1_board_peripherals_mm_reg_default.reg_unb_system_info_adr_w-1 DOWNTO 0), 
+      coe_read_export_from_the_pio_system_info        => reg_unb_system_info_mosi.rd,
+      coe_readdata_export_to_the_pio_system_info      => reg_unb_system_info_miso.rddata(c_word_w-1 DOWNTO 0),
+      coe_write_export_from_the_pio_system_info       => reg_unb_system_info_mosi.wr,
+      coe_writedata_export_from_the_pio_system_info   => reg_unb_system_info_mosi.wrdata(c_word_w-1 DOWNTO 0),
+  
+      -- the_rom_system_info
+      coe_clk_export_from_the_rom_system_info         => OPEN,
+      coe_reset_export_from_the_rom_system_info       => OPEN,
+      coe_address_export_from_the_rom_system_info     => rom_unb_system_info_mosi.address(c_unb1_board_peripherals_mm_reg_default.rom_unb_system_info_adr_w-1 DOWNTO 0), 
+      coe_read_export_from_the_rom_system_info        => rom_unb_system_info_mosi.rd,
+      coe_readdata_export_to_the_rom_system_info      => rom_unb_system_info_miso.rddata(c_word_w-1 DOWNTO 0),
+      coe_write_export_from_the_rom_system_info       => rom_unb_system_info_mosi.wr,
+      coe_writedata_export_from_the_rom_system_info   => rom_unb_system_info_mosi.wrdata(c_word_w-1 DOWNTO 0),
+      
+      -- the_pio_wdi
+      out_port_from_the_pio_wdi                       => pout_wdi,
+  
+      -- the_reg_wdi
+      coe_clk_export_from_the_reg_wdi                 => OPEN,
+      coe_reset_export_from_the_reg_wdi               => OPEN,
+      coe_address_export_from_the_reg_wdi             => reg_wdi_mosi.address(0), 
+      coe_read_export_from_the_reg_wdi                => reg_wdi_mosi.rd,
+      coe_readdata_export_to_the_reg_wdi              => reg_wdi_miso.rddata(c_word_w-1 DOWNTO 0),
+      coe_write_export_from_the_reg_wdi               => reg_wdi_mosi.wr,
+      coe_writedata_export_from_the_reg_wdi           => reg_wdi_mosi.wrdata(c_word_w-1 DOWNTO 0),
+  
+      -- the_reg_dp_ram_from_mm 
+      coe_clk_export_from_the_reg_dp_ram_from_mm        => OPEN,
+      coe_reset_export_from_the_reg_dp_ram_from_mm      => OPEN,
+      coe_address_export_from_the_reg_dp_ram_from_mm    => reg_dp_ram_from_mm_mosi.address(0),
+      coe_read_export_from_the_reg_dp_ram_from_mm       => reg_dp_ram_from_mm_mosi.rd,
+      coe_readdata_export_to_the_reg_dp_ram_from_mm     => reg_dp_ram_from_mm_miso.rddata(c_word_w-1 DOWNTO 0),
+      coe_write_export_from_the_reg_dp_ram_from_mm      => reg_dp_ram_from_mm_mosi.wr,
+      coe_writedata_export_from_the_reg_dp_ram_from_mm  => reg_dp_ram_from_mm_mosi.wrdata(c_word_w-1 DOWNTO 0), 
+  
+      -- the_ram_dp_ram_from_mm 
+      coe_clk_export_from_the_ram_dp_ram_from_mm        => OPEN,
+      coe_reset_export_from_the_ram_dp_ram_from_mm      => OPEN,
+      coe_address_export_from_the_ram_dp_ram_from_mm    => ram_dp_ram_from_mm_mosi.address(c_dp_ram_mm_adr_w-1 DOWNTO 0),
+      coe_read_export_from_the_ram_dp_ram_from_mm       => ram_dp_ram_from_mm_mosi.rd,
+      coe_readdata_export_to_the_ram_dp_ram_from_mm     => ram_dp_ram_from_mm_miso.rddata(c_word_w-1 DOWNTO 0),
+      coe_write_export_from_the_ram_dp_ram_from_mm      => ram_dp_ram_from_mm_mosi.wr,
+      coe_writedata_export_from_the_ram_dp_ram_from_mm  => ram_dp_ram_from_mm_mosi.wrdata(c_word_w-1 DOWNTO 0)
+    );
+  END GENERATE;
+END;
+    
+    
+    
+    
+             
+             
+             
+             
+             
+             
+             
+             
+             
diff --git a/libraries/dsp/bf/designs/unb1_fn_bf/src/vhdl/node_unb1_fn_bf.vhd b/libraries/dsp/bf/designs/unb1_fn_bf/src/vhdl/node_unb1_fn_bf.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..983302f31137681a045c4e42feca6a26d6c05b1c
--- /dev/null
+++ b/libraries/dsp/bf/designs/unb1_fn_bf/src/vhdl/node_unb1_fn_bf.vhd
@@ -0,0 +1,219 @@
+-------------------------------------------------------------------------------
+--
+-- Copyright (C) 2011
+-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-------------------------------------------------------------------------------
+
+LIBRARY IEEE, common_lib, dp_lib, diag_lib, eth_lib, tech_tse_lib, bf_lib;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.NUMERIC_STD.ALL;
+USE common_lib.common_pkg.ALL;
+USE common_lib.common_mem_pkg.ALL;
+USE common_lib.common_network_total_header_pkg.ALL;
+USE dp_lib.dp_stream_pkg.ALL;
+USE diag_lib.diag_pkg.ALL;
+USE eth_lib.eth_pkg.ALL; 
+USE tech_tse_lib.tech_tse_pkg.ALL;
+USE tech_tse_lib.tb_tech_tse_pkg.ALL;
+USE bf_lib.ALL;
+USE bf_lib.bf_pkg.ALL;
+
+ENTITY node_unb1_fn_bf IS
+  GENERIC(
+    g_use_bf                : BOOLEAN  := TRUE; -- FALSE skips instantiation of the BF
+    g_bf                    : t_c_bf   := c_bf;
+    g_bf_weights_file_name  : STRING   := "../../../../../dsp/bf/build/data/weights";              -- default file location for synthesis
+    g_ss_wide_file_prefix   : STRING   := "UNUSED"; -- path_to_file    
+    g_bf_offload            : BOOLEAN  := FALSE; -- Use DP TX offload to stream BF output towards LCU
+    g_use_block_gen         : BOOLEAN  := TRUE;  -- FALSE uses external input.
+    g_block_gen_file_prefix : STRING   := "../../../../../modules/Lofar/diag/src/data/bf_in_data"; -- default file location for synthesis
+    g_bg_diag_wave_period   : POSITIVE := 4;     -- This generic defines the period of the waveform that is generated with the block generator.  
+    g_weights_write_only    : BOOLEAN  := FALSE     -- When set to TRUE the M9K blocks are forced to Simple Dual Port mode. When FALSE it is True Dual Port.
+  );
+  PORT(
+    -- System
+    mm_rst                  : IN  STD_LOGIC;
+    mm_clk                  : IN  STD_LOGIC;   -- 125 MHz from xo_clk PLL in SOPC system
+    dp_rst                  : IN  STD_LOGIC;
+    dp_clk                  : IN  STD_LOGIC;   -- 200 MHz from CLK system clock
+    -- MM interface         
+    -- . block generator    
+    reg_diag_bg_mosi        : IN  t_mem_mosi; 
+    reg_diag_bg_miso        : OUT t_mem_miso; 
+    ram_diag_bg_mosi        : IN  t_mem_mosi; 
+    ram_diag_bg_miso        : OUT t_mem_miso; 
+    -- . beam former       
+    ram_ss_ss_wide_mosi     : IN  t_mem_mosi;
+    ram_ss_ss_wide_miso     : OUT t_mem_miso := c_mem_miso_rst;  
+    ram_bf_weights_mosi     : IN  t_mem_mosi;
+    ram_bf_weights_miso     : OUT t_mem_miso; 
+    ram_st_sst_bf_mosi      : IN  t_mem_mosi;
+    ram_st_sst_bf_miso      : OUT t_mem_miso;
+    reg_st_sst_bf_mosi      : IN  t_mem_mosi;
+    reg_st_sst_bf_miso      : OUT t_mem_miso;
+    -- . hdr_insert and hdr_remove for bf_out_offload
+    reg_hdr_insert_mosi     : IN  t_mem_mosi := c_mem_mosi_rst;
+    ram_hdr_insert_mosi     : IN  t_mem_mosi := c_mem_mosi_rst;
+    -- . Nof words to offload selection
+    reg_dp_split_mosi       : IN  t_mem_mosi := c_mem_mosi_rst;
+    reg_dp_split_miso       : OUT t_mem_miso;
+    reg_dp_pkt_merge_mosi   : IN  t_mem_mosi := c_mem_mosi_rst;
+    reg_dp_pkt_merge_miso   : OUT t_mem_miso;
+
+    -- ST interface, BF subbands in
+    ext_in_sosi_arr         : IN  t_dp_sosi_arr( g_bf.nof_input_streams-1 DOWNTO 0) := (OTHERS=>c_dp_sosi_rst); 
+    ext_in_siso_arr         : OUT t_dp_siso_arr( g_bf.nof_input_streams-1 DOWNTO 0) := (OTHERS=>c_dp_siso_rst);     
+
+    -- ST interface, BF beamlets out
+    out_raw_sosi_arr        : OUT t_dp_sosi_arr( g_bf.nof_bf_units-1 DOWNTO 0);  -- raw beamlets
+    out_bst_sosi_arr        : OUT t_dp_sosi_arr( g_bf.nof_bf_units-1 DOWNTO 0);  -- 16b beamlets; a selection can be offloaded via bf_out_offload_tx_sosi_arr.
+    out_qua_sosi_arr        : OUT t_dp_sosi_arr( g_bf.nof_bf_units-1 DOWNTO 0);  --  8b beamlets
+
+    -- DP offload for 1GbE
+    bf_out_offload_tx_sosi_arr : OUT t_dp_sosi_arr(c_eth_nof_udp_ports-1 DOWNTO 0);  -- 16b beamlets
+    bf_out_offload_tx_siso_arr : IN  t_dp_siso_arr(c_eth_nof_udp_ports-1 DOWNTO 0) := (OTHERS => c_dp_siso_rst)
+  );
+END node_unb1_fn_bf;
+
+ARCHITECTURE str OF node_unb1_fn_bf IS   
+  
+  CONSTANT c_buf_addr_w     : NATURAL  := ceil_log2(g_bg_diag_wave_period) + ceil_log2(g_bf.nof_subbands*g_bf.nof_signal_paths/g_bf.nof_input_streams);
+  
+  SIGNAL bf_in_sosi_arr     : t_dp_sosi_arr( g_bf.nof_input_streams-1 DOWNTO 0); 
+  SIGNAL bg_out_sosi_arr    : t_dp_sosi_arr( g_bf.nof_input_streams-1 DOWNTO 0); 
+
+  SIGNAL i_out_bst_sosi_arr : t_dp_sosi_arr(g_bf.nof_bf_units-1 DOWNTO 0);
+  
+BEGIN
+
+  out_bst_sosi_arr <= i_out_bst_sosi_arr;
+
+  ---------------------------------------------------------------------------------------
+  -- Use Block Generator input by default
+  ---------------------------------------------------------------------------------------              
+  gen_block_gen : IF g_use_block_gen = TRUE GENERATE
+    u_bg : ENTITY diag_lib.mms_diag_block_gen 
+    GENERIC MAP(    
+      g_blk_sync           => TRUE,
+      g_nof_output_streams => g_bf.nof_input_streams,
+      g_buf_dat_w          => c_nof_complex*g_bf.in_dat_w, 
+      g_buf_addr_w         => c_buf_addr_w,              -- Waveform buffer size 2**g_buf_addr_w nof samples
+      g_file_name_prefix   => g_block_gen_file_prefix
+    )
+    PORT MAP(
+      -- System
+      mm_rst           => mm_rst, 
+      mm_clk           => mm_clk, 
+      dp_rst           => dp_rst, 
+      dp_clk           => dp_clk,
+      -- MM interface
+      reg_bg_ctrl_mosi => reg_diag_bg_mosi, 
+      reg_bg_ctrl_miso => reg_diag_bg_miso, 
+      ram_bg_data_mosi => ram_diag_bg_mosi, 
+      ram_bg_data_miso => ram_diag_bg_miso, 
+      -- ST interface
+      out_sosi_arr     => bg_out_sosi_arr
+    );
+    
+    bf_in_sosi_arr <= bg_out_sosi_arr;
+  END GENERATE;
+
+  ---------------------------------------------------------------------------------------
+  -- Override Block Generator output and use external input instead
+  ---------------------------------------------------------------------------------------              
+  gen_ext_in : IF g_use_block_gen = FALSE GENERATE
+    bf_in_sosi_arr <= ext_in_sosi_arr;
+  END GENERATE;
+
+  ---------------------------------------------------------------------------------------
+  -- Beam Former
+  ---------------------------------------------------------------------------------------  
+  gen_bf : IF g_use_bf = TRUE GENERATE
+    u_bf : ENTITY bf_lib.bf 
+    GENERIC MAP (
+      g_bf                    => g_bf,
+      g_bf_weights_file_name  => g_bf_weights_file_name,
+      g_ss_wide_file_prefix   => g_ss_wide_file_prefix,   
+      g_weights_write_only    => g_weights_write_only
+    )
+    PORT MAP ( 
+      -- System
+      dp_rst                  =>  dp_rst,
+      dp_clk                  =>  dp_clk,
+      mm_rst                  =>  mm_rst,
+      mm_clk                  =>  mm_clk,
+      
+      -- MM interface
+      ram_ss_ss_wide_mosi     => ram_ss_ss_wide_mosi,
+      ram_ss_ss_wide_miso     => ram_ss_ss_wide_miso,  
+      ram_bf_weights_mosi     => ram_bf_weights_mosi,
+      ram_bf_weights_miso     => ram_bf_weights_miso,
+      ram_st_sst_mosi         => ram_st_sst_bf_mosi,
+      ram_st_sst_miso         => ram_st_sst_bf_miso,
+      reg_st_sst_mosi         => reg_st_sst_bf_mosi,
+      reg_st_sst_miso         => reg_st_sst_bf_miso,
+      
+      -- ST interface
+      in_sosi_arr             => bf_in_sosi_arr,  
+      in_siso_arr             => ext_in_siso_arr,  
+      
+      out_raw_sosi_arr        => out_raw_sosi_arr,    -- raw beamlets
+      out_bst_sosi_arr        => i_out_bst_sosi_arr,  -- 16b beamlets
+      out_qua_sosi_arr        => out_qua_sosi_arr     --  8b beamlets
+    ); 
+  END GENERATE;
+
+  ---------------------------------------------------------------------------------------
+  -- Offload 16b beamlets from out_bst_sosi_arr to udp_offload TX port in ctrl_unb_common
+  ---------------------------------------------------------------------------------------           
+  gen_bf_offload : IF g_bf_offload = TRUE GENERATE
+    u_dp_offload : ENTITY dp_lib.dp_offload_tx
+    GENERIC MAP (
+      g_nof_streams         => g_bf.nof_bf_units,
+      g_data_w              => c_eth_data_w,
+      g_block_size          => g_bf.nof_weights,  -- = 256
+      g_block_nof_sel_words => 20,
+      g_nof_words_per_pkt   => 360,
+      g_hdr_nof_words       => c_network_total_header_32b_nof_words,
+      g_use_complex         => TRUE,
+      g_use_input_fifo      => TRUE,
+      g_use_output_fifo     => TRUE
+    )
+    PORT MAP (
+      mm_rst                => mm_rst,
+      mm_clk                => mm_clk,
+      
+      st_rst                => dp_rst,
+      st_clk                => dp_clk,
+  
+      reg_hdr_insert_mosi   => reg_hdr_insert_mosi,
+      ram_hdr_insert_mosi   => ram_hdr_insert_mosi,
+      reg_dp_split_mosi     => reg_dp_split_mosi,    
+      reg_dp_split_miso     => reg_dp_split_miso,
+      reg_dp_pkt_merge_mosi => reg_dp_pkt_merge_mosi,    
+      reg_dp_pkt_merge_miso => reg_dp_pkt_merge_miso,
+  
+      dp_sosi_arr           => i_out_bst_sosi_arr,
+      dp_siso_arr           => OPEN, -- No flow control, so we're instantiating an input FIFO.
+  
+      tx_sosi_arr           => bf_out_offload_tx_sosi_arr(g_bf.nof_bf_units-1 DOWNTO 0),
+      tx_siso_arr           => bf_out_offload_tx_siso_arr(g_bf.nof_bf_units-1 DOWNTO 0)
+    );
+  END GENERATE;                                            
+  
+END str;
diff --git a/libraries/dsp/bf/designs/unb1_fn_bf/src/vhdl/unb1_fn_bf.vhd b/libraries/dsp/bf/designs/unb1_fn_bf/src/vhdl/unb1_fn_bf.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..5a9dcedc5f11a2951d2a814d0bc287d809cda9b7
--- /dev/null
+++ b/libraries/dsp/bf/designs/unb1_fn_bf/src/vhdl/unb1_fn_bf.vhd
@@ -0,0 +1,414 @@
+------------------------------------------------------------------------------
+--
+-- Copyright (C) 2012
+-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-------------------------------------------------------------------------------
+
+LIBRARY IEEE, common_lib, unb1_board_lib, dp_lib, eth_lib, tech_tse_lib, bf_lib;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.NUMERIC_STD.ALL;
+USE common_lib.common_pkg.ALL;
+USE common_lib.common_mem_pkg.ALL;
+USE common_lib.common_network_layers_pkg.ALL;
+USE common_lib.common_network_total_header_pkg.ALL;
+USE unb1_board_lib.unb1_board_pkg.ALL;
+USE unb1_board_lib.unb1_board_peripherals_pkg.ALL;
+USE dp_lib.dp_stream_pkg.ALL;
+USE eth_lib.eth_pkg.ALL;
+USE tech_tse_lib.tech_tse_pkg.ALL;
+USE tech_tse_lib.tb_tech_tse_pkg.ALL;
+USE bf_lib.bf_pkg.ALL;
+
+ENTITY unb1_fn_bf IS
+  GENERIC (
+    g_design_name : STRING  := "unb1_fn_bf";
+    g_design_note : STRING  := "UNUSED";
+    g_sim         : BOOLEAN := FALSE; --Overridden by TB
+    g_sim_unb_nr  : NATURAL := 0;
+    g_sim_node_nr : NATURAL := 0;
+    g_stamp_date  : NATURAL := 0;  -- Date (YYYYMMDD) -- set by QSF
+    g_stamp_time  : NATURAL := 0;  -- Time (HHMMSS)   -- set by QSF
+    g_stamp_svn   : NATURAL := 0;  -- SVN revision    -- set by QSF
+    g_bf          : t_c_bf  := c_bf 
+  );
+  PORT (
+   -- GENERAL
+    CLK           : IN    STD_LOGIC; -- System Clock
+    PPS           : IN    STD_LOGIC; -- System Sync
+    WDI           : OUT   STD_LOGIC; -- Watchdog Clear
+    INTA          : INOUT STD_LOGIC; -- FPGA interconnect line
+    INTB          : INOUT STD_LOGIC; -- FPGA interconnect line
+
+    -- Others
+    VERSION       : IN    STD_LOGIC_VECTOR(c_unb1_board_aux.version_w-1 DOWNTO 0);
+    ID            : IN    STD_LOGIC_VECTOR(c_unb1_board_aux.id_w-1 DOWNTO 0);
+    TESTIO        : INOUT STD_LOGIC_VECTOR(c_unb1_board_aux.testio_w-1 DOWNTO 0);
+    
+    -- I2C Interface to Sensors
+    sens_sc       : INOUT STD_LOGIC;
+    sens_sd       : INOUT STD_LOGIC;
+
+    -- 1GbE Control Interface
+    ETH_clk       : IN    STD_LOGIC;
+    ETH_SGIN      : IN    STD_LOGIC;
+    ETH_SGOUT     : OUT   STD_LOGIC
+  );
+END unb1_fn_bf;
+
+
+ARCHITECTURE str OF unb1_fn_bf IS   
+
+  
+  CONSTANT c_bf_offload            : BOOLEAN := FALSE; -- Offload BF out(0) datapath to 1GbE UDP TX port
+  CONSTANT c_use_phy               : t_c_unb1_board_use_phy := (1, 0, 0, 0, 0, 0, 0, 1); 
+  CONSTANT c_fw_version            : t_unb1_board_fw_version := (2, 3);  -- firmware version x.y
+  CONSTANT c_nof_streams           : NATURAL := c_eth_nof_udp_ports;
+  CONSTANT c_weights_write_only    : BOOLEAN := TRUE; -- When set to TRUE the M9K blocks are forced to Simple Dual Port mode. When FALSE it is True Dual Port.
+  
+  -- Use default RAM inti files. The RAM init file for simulation lies one ../ level further way then for synthesis
+  CONSTANT c_bf_weights_file_name  : STRING := "UNUSED";   
+  CONSTANT c_ss_wide_file_prefix   : STRING := "hex/ss_wide";   
+  CONSTANT c_block_gen_file_prefix : STRING := "UNUSED";
+    
+    -- BF offload                                                                                                       
+  CONSTANT c_hdr_nof_words          : NATURAL := c_network_total_header_32b_nof_words;
+  CONSTANT c_dp_ram_mm_nof_words    : NATURAL := c_hdr_nof_words * (c_eth_data_w/c_word_w);
+  CONSTANT c_dp_ram_mm_adr_w        : NATURAL := ceil_log2(c_dp_ram_mm_nof_words);
+        
+  -- System
+  SIGNAL cs_sim                     : STD_LOGIC;
+  SIGNAL xo_clk                     : STD_LOGIC;
+  SIGNAL xo_rst                     : STD_LOGIC;
+  SIGNAL xo_rst_n                   : STD_LOGIC;
+  SIGNAL mm_clk                     : STD_LOGIC;
+  SIGNAL mm_locked                  : STD_LOGIC;
+  SIGNAL mm_rst                     : STD_LOGIC;
+  
+  SIGNAL dp_rst                     : STD_LOGIC;
+  SIGNAL dp_clk                     : STD_LOGIC;
+  SIGNAL dp_pps                     : STD_LOGIC;
+  
+  SIGNAL app_led_red                : STD_LOGIC := '0';
+  SIGNAL app_led_green              : STD_LOGIC := '1';
+  
+  -- PIOs
+  SIGNAL pout_wdi                   : STD_LOGIC;
+
+  -- WDI override
+  SIGNAL reg_wdi_mosi               : t_mem_mosi;
+  SIGNAL reg_wdi_miso               : t_mem_miso;
+
+  -- PPSH
+  SIGNAL reg_ppsh_mosi              : t_mem_mosi;
+  SIGNAL reg_ppsh_miso              : t_mem_miso;
+  
+  -- UniBoard system info
+  SIGNAL reg_unb_system_info_mosi   : t_mem_mosi;
+  SIGNAL reg_unb_system_info_miso   : t_mem_miso;
+  SIGNAL rom_unb_system_info_mosi   : t_mem_mosi;
+  SIGNAL rom_unb_system_info_miso   : t_mem_miso;
+
+  -- eth1g
+  SIGNAL eth1g_tse_clk              : STD_LOGIC;
+  SIGNAL eth1g_mm_rst               : STD_LOGIC;
+  SIGNAL eth1g_tse_mosi             : t_mem_mosi := c_mem_mosi_rst;  -- ETH TSE MAC registers
+  SIGNAL eth1g_tse_miso             : t_mem_miso;
+  SIGNAL eth1g_reg_mosi             : t_mem_mosi := c_mem_mosi_rst;  -- ETH control and status registers
+  SIGNAL eth1g_reg_miso             : t_mem_miso;
+  SIGNAL eth1g_reg_interrupt        : STD_LOGIC;   -- Interrupt
+  SIGNAL eth1g_ram_mosi             : t_mem_mosi := c_mem_mosi_rst;  -- ETH rx frame and tx frame memory
+  SIGNAL eth1g_ram_miso             : t_mem_miso;
+  SIGNAL eth1g_led                  : t_tech_tse_led;
+
+  -- eth1g UDP streaming ports
+  SIGNAL eth1g_udp_tx_sosi_arr      : t_dp_sosi_arr(c_eth_nof_udp_ports-1 DOWNTO 0);
+  SIGNAL eth1g_udp_tx_siso_arr      : t_dp_siso_arr(c_eth_nof_udp_ports-1 DOWNTO 0);  
+  
+  -- MM registers and RAM
+  -- . block generator
+  SIGNAL reg_diag_bg_mosi           : t_mem_mosi := c_mem_mosi_rst;
+  SIGNAL reg_diag_bg_miso           : t_mem_miso;  
+  SIGNAL ram_diag_bg_mosi           : t_mem_mosi := c_mem_mosi_rst;
+  SIGNAL ram_diag_bg_miso           : t_mem_miso;                  
+  -- . beam former
+  SIGNAL ram_bf_weights_mosi        : t_mem_mosi := c_mem_mosi_rst;
+  SIGNAL ram_bf_weights_miso        : t_mem_miso;                  
+  SIGNAL ram_st_sst_bf_mosi         : t_mem_mosi := c_mem_mosi_rst;
+  SIGNAL ram_st_sst_bf_miso         : t_mem_miso;                  
+  SIGNAL reg_st_sst_bf_mosi         : t_mem_mosi := c_mem_mosi_rst;
+  SIGNAL reg_st_sst_bf_miso         : t_mem_miso;                  
+  SIGNAL ram_ss_ss_wide_mosi        : t_mem_mosi := c_mem_mosi_rst;
+  SIGNAL ram_ss_ss_wide_miso        : t_mem_miso;                  
+
+  -- . uniboard sensors
+  SIGNAL reg_unb_sens_mosi          : t_mem_mosi := c_mem_mosi_rst;
+  SIGNAL reg_unb_sens_miso          : t_mem_miso;                  
+
+ 
+  SIGNAL reg_diagnostics_mosi       : t_mem_mosi;
+  SIGNAL reg_diagnostics_miso       : t_mem_miso;
+  -- . dp_ram_from_mm for DP offload (header insertion)
+  SIGNAL reg_dp_ram_from_mm_mosi    : t_mem_mosi;
+  SIGNAL reg_dp_ram_from_mm_miso    : t_mem_miso := c_mem_miso_rst;
+
+  SIGNAL ram_dp_ram_from_mm_mosi    : t_mem_mosi;
+  SIGNAL ram_dp_ram_from_mm_miso    : t_mem_miso := c_mem_miso_rst;
+
+  SIGNAL ram_dp_ram_to_mm_mosi      : t_mem_mosi;
+  SIGNAL ram_dp_ram_to_mm_miso      : t_mem_miso;
+
+  SIGNAL reg_dp_split_mosi          : t_mem_mosi;
+  SIGNAL reg_dp_split_miso          : t_mem_miso;
+
+  SIGNAL reg_dp_pkt_merge_mosi      : t_mem_mosi;
+  SIGNAL reg_dp_pkt_merge_miso      : t_mem_miso;
+                                    
+  -- ST interface
+  SIGNAL beams_sosi_arr             : t_dp_sosi_arr(g_bf.nof_bf_units-1 DOWNTO 0);
+  
+BEGIN
+  
+  -----------------------------------------------------------------------------
+  -- General control function
+  -----------------------------------------------------------------------------
+  u_ctrl : ENTITY unb1_board_lib.ctrl_unb1_board
+  GENERIC MAP (
+    g_sim           => g_sim,
+    g_design_name   => g_design_name,
+    g_design_note   => g_design_note,
+    g_stamp_date    => g_stamp_date,
+    g_stamp_time    => g_stamp_time, 
+    g_stamp_svn     => g_stamp_svn, 
+    g_fw_version    => c_fw_version,
+    g_mm_clk_freq   => c_unb1_board_mm_clk_freq_50M,
+    g_use_phy       => c_use_phy,
+    g_udp_offload   => sel_a_b(c_bf_offload, TRUE, FALSE),
+    g_aux           => c_unb1_board_aux,
+    g_udp_offload_nof_streams => c_nof_streams
+  )
+  PORT MAP (
+    -- Clock an reset signals
+    cs_sim                   => cs_sim,
+    xo_clk                   => xo_clk,
+    xo_rst                   => xo_rst,
+    xo_rst_n                 => xo_rst_n,
+
+    mm_clk                   => mm_clk,
+    mm_locked                => mm_locked,
+    mm_rst                   => mm_rst,
+
+    dp_rst                   => dp_rst,
+    dp_clk                   => dp_clk,
+    dp_pps                   => OPEN,
+    dp_rst_in                => dp_rst,
+    dp_clk_in                => dp_clk,
+    
+    -- Toggle WDI
+    pout_wdi                 => pout_wdi,
+
+    -- MM buses
+    -- . Manual WDI override
+    reg_wdi_mosi             => reg_wdi_mosi,
+    reg_wdi_miso             => reg_wdi_miso,
+    
+    -- . System_info
+    reg_unb_system_info_mosi => reg_unb_system_info_mosi,
+    reg_unb_system_info_miso => reg_unb_system_info_miso, 
+    rom_unb_system_info_mosi => rom_unb_system_info_mosi,
+    rom_unb_system_info_miso => rom_unb_system_info_miso, 
+    
+    -- . UniBoard I2C sensors
+    reg_unb_sens_mosi        => reg_unb_sens_mosi,
+    reg_unb_sens_miso        => reg_unb_sens_miso,    
+    
+    -- . PPSH
+    reg_ppsh_mosi            => reg_ppsh_mosi,
+    reg_ppsh_miso            => reg_ppsh_miso,
+    
+    -- eth1g
+    eth1g_tse_clk            => eth1g_tse_clk,   -- 125 MHz from xo_clk PLL in SOPC system
+    eth1g_mm_rst             => eth1g_mm_rst,
+    eth1g_tse_mosi           => eth1g_tse_mosi,
+    eth1g_tse_miso           => eth1g_tse_miso,
+    eth1g_reg_mosi           => eth1g_reg_mosi,
+    eth1g_reg_miso           => eth1g_reg_miso,
+    eth1g_reg_interrupt      => eth1g_reg_interrupt,
+    eth1g_ram_mosi           => eth1g_ram_mosi,
+    eth1g_ram_miso           => eth1g_ram_miso,
+
+    -- eth1g UDP streaming ports to offload BF out
+    udp_tx_sosi_arr        =>  eth1g_udp_tx_sosi_arr,
+    udp_tx_siso_arr        =>  eth1g_udp_tx_siso_arr,
+        
+    -- FPGA pins
+    -- . General
+    CLK                      => CLK,
+    PPS                      => PPS,
+    WDI                      => WDI,
+    INTA                     => INTA,
+    INTB                     => INTB,
+    -- . Others
+    VERSION                  => VERSION,
+    ID                       => ID,
+    TESTIO                   => TESTIO,
+    -- . I2C Interface to Sensors
+    sens_sc                  => sens_sc,
+    sens_sd                  => sens_sd,        
+    -- . 1GbE Control Interface
+    ETH_clk                  => ETH_clk,
+    ETH_SGIN                 => ETH_SGIN,
+    ETH_SGOUT                => ETH_SGOUT
+  );
+  
+  
+  -----------------------------------------------------------------------------
+  -- MM master
+  -----------------------------------------------------------------------------
+  u_mmm : ENTITY work.mmm_fn_bf
+  GENERIC MAP (
+    g_sim         => g_sim,
+    g_sim_unb_nr  => g_sim_unb_nr,
+    g_sim_node_nr => g_sim_node_nr,
+    g_bf          => g_bf
+   )
+  PORT MAP(  
+    xo_clk                   => xo_clk,       
+    xo_rst_n                 => xo_rst_n,     
+    xo_rst                   => xo_rst,       
+
+    mm_rst                   => mm_rst,
+    mm_clk                   => mm_clk,       
+    mm_locked                => mm_locked,    
+
+    -- PIOs
+    pout_wdi                 => pout_wdi,
+
+    -- Manual WDI override
+    reg_wdi_mosi             => reg_wdi_mosi,
+    reg_wdi_miso             => reg_wdi_miso,
+
+    -- system_info
+    reg_unb_system_info_mosi => reg_unb_system_info_mosi,
+    reg_unb_system_info_miso => reg_unb_system_info_miso,
+    rom_unb_system_info_mosi => rom_unb_system_info_mosi,
+    rom_unb_system_info_miso => rom_unb_system_info_miso, 
+
+    -- UniBoard I2C sensors
+    reg_unb_sens_mosi        => reg_unb_sens_mosi,
+    reg_unb_sens_miso        => reg_unb_sens_miso, 
+ 
+    -- eth1g
+    eth1g_tse_clk            => eth1g_tse_clk,
+    eth1g_mm_rst             => eth1g_mm_rst,
+    eth1g_tse_mosi           => eth1g_tse_mosi,
+    eth1g_tse_miso           => eth1g_tse_miso,
+    eth1g_reg_mosi           => eth1g_reg_mosi,
+    eth1g_reg_miso           => eth1g_reg_miso,
+    eth1g_reg_interrupt      => eth1g_reg_interrupt,
+    eth1g_ram_mosi           => eth1g_ram_mosi,
+    eth1g_ram_miso           => eth1g_ram_miso,
+
+    -- Diagnostics
+    reg_diagnostics_mosi     => reg_diagnostics_mosi, 
+    reg_diagnostics_miso     => reg_diagnostics_miso,   
+    
+    -- . block generator
+    reg_diag_bg_mosi         => reg_diag_bg_mosi,
+    reg_diag_bg_miso         => reg_diag_bg_miso,
+    ram_diag_bg_mosi         => ram_diag_bg_mosi,
+    ram_diag_bg_miso         => ram_diag_bg_miso,
+    
+    -- beamformer
+    ram_ss_ss_wide_mosi      => ram_ss_ss_wide_mosi,
+    ram_ss_ss_wide_miso      => ram_ss_ss_wide_miso,  
+    ram_bf_weights_mosi      => ram_bf_weights_mosi,
+    ram_bf_weights_miso      => ram_bf_weights_miso,
+    ram_st_sst_bf_mosi       => ram_st_sst_bf_mosi,
+    ram_st_sst_bf_miso       => ram_st_sst_bf_miso,
+    reg_st_sst_bf_mosi       => reg_st_sst_bf_mosi,
+    reg_st_sst_bf_miso       => reg_st_sst_bf_miso,
+                                                        
+    -- dp_offload               -- dp_offload           
+    reg_dp_ram_from_mm_mosi  => reg_dp_ram_from_mm_mosi,
+    reg_dp_ram_from_mm_miso  => reg_dp_ram_from_mm_miso,
+    ram_dp_ram_from_mm_mosi  => ram_dp_ram_from_mm_mosi,
+    ram_dp_ram_from_mm_miso  => ram_dp_ram_from_mm_miso,
+    reg_dp_split_mosi        => reg_dp_split_mosi, 
+    reg_dp_split_miso        => reg_dp_split_miso,
+    reg_dp_pkt_merge_mosi    => reg_dp_pkt_merge_mosi,
+    reg_dp_pkt_merge_miso    => reg_dp_pkt_merge_miso
+  );
+  
+  u_node_unb1_fn_bf : ENTITY work.node_unb1_fn_bf
+  GENERIC MAP(
+    g_bf                    => g_bf,
+    g_bf_offload            => c_bf_offload,
+    g_bf_weights_file_name  => c_bf_weights_file_name,
+    g_ss_wide_file_prefix   => c_ss_wide_file_prefix,  
+    g_block_gen_file_prefix => c_block_gen_file_prefix,
+    g_weights_write_only    => c_weights_write_only
+  )
+  PORT MAP(
+    -- System
+    mm_rst                  => mm_rst, 
+    mm_clk                  => mm_clk, 
+    dp_rst                  => dp_rst, 
+    dp_clk                  => dp_clk, 
+    -- MM interface
+    -- . block generator
+    reg_diag_bg_mosi        => reg_diag_bg_mosi,  
+    reg_diag_bg_miso        => reg_diag_bg_miso,
+    ram_diag_bg_mosi        => ram_diag_bg_mosi,  
+    ram_diag_bg_miso        => ram_diag_bg_miso,  
+    
+    -- . beam former        
+    ram_bf_weights_mosi     => ram_bf_weights_mosi,   
+    ram_bf_weights_miso     => ram_bf_weights_miso,   
+    ram_ss_ss_wide_mosi     => ram_ss_ss_wide_mosi,   
+    ram_ss_ss_wide_miso     => ram_ss_ss_wide_miso,   
+    ram_st_sst_bf_mosi      => ram_st_sst_bf_mosi,      
+    ram_st_sst_bf_miso      => ram_st_sst_bf_miso,
+    reg_st_sst_bf_mosi      => reg_st_sst_bf_mosi,      
+    reg_st_sst_bf_miso      => reg_st_sst_bf_miso,
+
+    -- . hdr_insert for dp offload
+    reg_hdr_insert_mosi     => reg_dp_ram_from_mm_mosi,
+    ram_hdr_insert_mosi     => ram_dp_ram_from_mm_mosi,
+                            
+    -- ST interface         
+    out_bst_sosi_arr        => OPEN,            -- 16b beamlets
+    out_qua_sosi_arr        => beams_sosi_arr,  --  8b beamlets
+
+    -- DP offload of 16b beamlets to 1GbE via ctrl_unb_common
+    bf_out_offload_tx_sosi_arr => eth1g_udp_tx_sosi_arr,
+    bf_out_offload_tx_siso_arr => eth1g_udp_tx_siso_arr
+  );
+END;
+    
+    
+    
+    
+             
+             
+             
+             
+             
+             
+             
+             
+             
diff --git a/libraries/dsp/bf/designs/unb1_fn_bf/tb/python/tc_unb1_fn_bf.py b/libraries/dsp/bf/designs/unb1_fn_bf/tb/python/tc_unb1_fn_bf.py
new file mode 100644
index 0000000000000000000000000000000000000000..71c3b0e4218fe45c2a97f0ec77676085ec66aea8
--- /dev/null
+++ b/libraries/dsp/bf/designs/unb1_fn_bf/tb/python/tc_unb1_fn_bf.py
@@ -0,0 +1,292 @@
+#! /usr/bin/env python
+###############################################################################
+#
+# Copyright (C) 2012
+# ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+###############################################################################
+
+"""Test case for the fn_bf design
+
+   Usage: python tc_unb1_fn_bf.py --unb 0 --fn 0:3 --rep 1 -n 1 -v 6
+
+"""
+
+###############################################################################
+# System imports
+import sys
+import test_case
+import node_io
+import pi_unb_sens
+import pi_diag_block_gen
+import pi_bf_bf
+import pi_st_sst
+import pi_ss_ss_wide
+import unb_apertif as apr
+from tools import *
+from common import * 
+import mem_init_file
+
+# Create a test case object
+tc = test_case.Testcase('TB - ', '')
+tc.set_result('PASSED')
+tc.append_log(3, '>>>')
+tc.append_log(1, '>>> Title : Test case for the fn_bf design on %s' % tc.unb_nodes_string())
+tc.append_log(3, '>>>')
+tc.append_log(3, '')
+
+# Constants/Generics that are shared between VHDL and Python
+# Name                   Value   Default   Description
+# START_VHDL_GENERICS
+c_nof_signal_paths     = 16      # 64
+c_nof_input_streams    =  4      # 16 
+c_nof_subbands         = 24      # 24
+c_nof_weights          = 256      # 256
+c_nof_bf_units         =  4      # 4
+c_in_dat_w             = 16      # 16
+c_in_weight_w          = 16      # 16
+c_gain_w               = -1      # -1
+c_bst_dat_w            = 16      # 16                                
+c_bst_lsb_w            = 14      # 14
+c_out_dat_w            = 39      # 8 for the correlator, 16 for udp_offload, 39 for capturein databuffer of testbench
+c_out_lsb_w            = 14      # 14
+c_stat_data_w          = 56      # 56
+c_stat_data_sz         =  2      # 2
+c_bf_weights_file_name = "../../../build/data/weights" #  -- "UNUSED" or relative path to e.g. the bf/build/data/weights hex file for adr_w=8 and dat_w=32
+# END_VHDL_GENERICS    
+
+c_blocks_per_sync      = 100
+c_clk_period           = 1  # ns
+# Overrule constant definitions when testcase runs on hardware. 
+if tc.sim==False:
+    c_nof_signal_paths     = 64
+    c_nof_input_streams    = 16 
+    c_nof_subbands         = 24
+    c_nof_weights          = 256
+    c_nof_bf_units         = 4
+    c_in_dat_w             = 16
+    c_in_weight_w          = 16
+    c_gain_w               = -1
+    c_bst_dat_w            = 16                                
+    c_bst_lsb_w            = 14
+    c_out_dat_w            = 39  # 8 for the correlator, 16 for udp_offload, 39 for capturein databuffer of testbench
+    c_out_lsb_w            = 14
+    c_stat_data_w          = 56
+    c_stat_data_sz         = 2
+    c_bf_weights_file_name = "../../../build/data/weights" #  -- "UNUSED" or relative path to e.g. the bf/build/data/weights hex file for adr_w=8 and dat_w=32
+    c_blocks_per_sync      = 781250
+
+c_nof_sp_per_input_stream = c_nof_signal_paths / c_nof_input_streams
+c_nof_subbands_per_stream = c_nof_subbands*c_nof_sp_per_input_stream 
+
+# Define settings for the block generator
+c_samples_per_packet = c_nof_sp_per_input_stream * c_nof_subbands
+c_gapsize            = c_nof_weights - c_samples_per_packet
+c_mem_low_addr       = 0
+c_mem_high_addr      = c_samples_per_packet-1
+c_bsn_init           = 42     
+c_gen_hex_files      = True
+    
+# Create access object for all nodes
+io = node_io.NodeIO(tc.nodeImages, tc.base_ip)
+
+# Create instances for the block generator (BG)
+bg = pi_diag_block_gen.PiDiagBlockGen(tc, io, nofChannels=c_nof_input_streams, ramSizePerChannel= 4*2**(ceil_log2(c_samples_per_packet)))
+
+# Create instances for the beamformer units (BF)
+bf=[]   
+for i in range(tc.nofFnNodes):
+    for j in xrange(c_nof_bf_units):
+        bf.append(pi_bf_bf.PiBfBf(tc, io, c_nof_weights, c_nof_signal_paths, c_nof_input_streams, xstEnable=True, instanceNr=j, nodeNr=tc.nodeFnNrs[i]))
+                                                          
+# Set the treshold register of the statisticsmodules to zero.                                                           
+for k in xrange(tc.nofFnNodes):   
+    for i in range(c_nof_bf_units):
+        print bf[k*c_nof_bf_units+i].st.write_treshold([0])
+
+def gen_data_and_hex_files_bf_ss_wide(gen_hex=True):        
+    # Apply simple SS wide scheme to select e.g. nof_beams_per_subband=4 sets of equal subbands per bf_unit.
+    # . The nof_beams_per_subband must be <= c_nof_subbands=24, because that is the maximum number of different subbands that is available
+    # . In this simple scheme the nof_beams_per_subband needs to be a divider of c_nof_weights=256, so a power of 2
+    # . The settings for only 1 bf_unit are returned. 
+    nof_beams_per_subband = 4
+    select_buf = []  
+    for h in range(c_nof_bf_units):
+        for i in range(c_nof_sp_per_input_stream):  # iterates over the number of single ss units
+            select_buf_line = []
+            for j in range(nof_beams_per_subband):
+                for k in range(c_nof_weights/nof_beams_per_subband): 
+                    select_buf_line.append(i*c_nof_subbands + j) 
+            if (gen_hex == True): 
+                filename = "../../src/hex/ss_wide_" + str(h) + "_" + str(i) + ".hex"
+                mem_init_file.list_to_hex(list_in=select_buf_line, filename=filename, mem_width=ceil_log2(c_nof_subbands_per_stream), mem_depth=c_nof_weights)
+            if (h==0):
+                select_buf.append(select_buf_line)
+    return select_buf    
+
+def gen_data_and_hex_files_bf_weights(gen_hex=True, sel='noise', ampl=1.0):    
+    weightsBfUnit=[]
+    ampl = ampl * 1.0 # Force to float
+    for i in range(c_nof_signal_paths):
+        singleList_real   = dsp_test_weights.create_waveform(sel, ampl, seed=2*i, noiseLevel=0, length=c_nof_weights)
+        singleList_imag   = dsp_test_weights.create_waveform(sel, ampl, seed=2*i+1, noiseLevel=0, length=c_nof_weights)
+        singleList_real   = dsp_test_weights.quantize_waveform(singleList_real)
+        singleList_imag   = dsp_test_weights.quantize_waveform(singleList_imag)
+        if c_debug_print and i==0:
+            print "singleList_real = %s" % singleList_real
+        weightsSignalPath = dsp_test_weights.concatenate_two_lists(singleList_real, singleList_imag, c_in_weight_w)
+        if (gen_hex == True):
+            filename = "../../src/hex/weights_" + str(i) + ".hex"
+            mem_init_file.list_to_hex(list_in=weightsSignalPath, filename=filename, mem_width=2*c_in_weight_w, mem_depth=c_nof_weights)
+        weightsBfUnit.append(weightsSignalPath)
+    return weightsBfUnit    
+
+
+if __name__ == "__main__":      
+  
+  n=0
+  for rep in xrange(tc.repeat):
+      
+      tc.append_log(3, '>>> Rep %d' % rep)
+  
+      ################################################################################
+      ##
+      ## Create settings for ss_wide in bf_unit
+      ##
+      ################################################################################
+      select_buf = gen_data_and_hex_files_bf_ss_wide(c_gen_hex_files) 
+  
+      ################################################################################
+      ##
+      ## Initialize the blockgenerators
+      ##
+      ################################################################################
+      # - Write settings to the block generator 
+      tc.append_log(3, '>>>')
+      tc.append_log(3, '>>> Write settings to the block generator')
+      tc.append_log(3, '>>>')
+      bg.write_block_gen_settings(c_samples_per_packet, c_blocks_per_sync, c_gapsize, c_mem_low_addr, c_mem_high_addr, c_bsn_init)
+      
+      # - Create a list with the input data and write it to the RAMs of the block generator
+      tc.append_log(3, '>>>')
+      tc.append_log(3, '>>> Write data to the waveform RAM of all channels')
+      tc.append_log(3, '>>>')
+  
+      inputData = []
+      for i in xrange(c_nof_input_streams):
+          dataList = bg.generate_data_list(c_nof_sp_per_input_stream, c_nof_subbands, 2048*i*4, i, c_in_dat_w)
+          print dataList
+          print ""
+          bg.write_waveform_ram(dataList, i)
+          dataListComplex = bg.convert_concatenated_to_complex(dataList, c_in_dat_w)
+          inputData.append(dataListComplex)
+          print dataListComplex
+      ################################################################################
+      ##
+      ## Create and Write the weight factors 
+      ##
+      ################################################################################
+
+      tc.append_log(3, '>>>')
+      tc.append_log(3, '>>> Create and write weightfactors for all signal paths on all bf_units ')
+      tc.append_log(3, '>>>')
+     
+      weightsNodes = []
+      for k in xrange(tc.nofFnNodes):                    
+          weightsBf = []
+          for i in range(c_nof_bf_units):
+              weightsBfUnit=[]
+              for j in range(c_nof_signal_paths):
+                  weightsSignalPath = bf[k*c_nof_bf_units+i].generate_weights(c_nof_weights, i+j, i, c_in_weight_w)
+                  bf[k*c_nof_bf_units+i].write_weights(weightsSignalPath, j) 
+                  weightsSignalPathComplex = bg.convert_concatenated_to_complex(weightsSignalPath, c_in_weight_w)
+                  weightsBfUnit.append(weightsSignalPathComplex)
+              weightsBf.append(weightsBfUnit)
+          weightsNodes.append(weightsBf)
+      
+      ################################################################################
+      ##
+      ## Create and Write the selection buffers
+      ##
+      ################################################################################
+      for i in range(tc.nofFnNodes):
+          for j in xrange(c_nof_bf_units):
+              for k in range(c_nof_input_streams):
+                  bf[i*c_nof_bf_units + j].ss_wide[k].write_selects(flatten(select_buf)); 
+  
+      # - Enable the block generator
+      tc.append_log(3, '>>>')
+      tc.append_log(3, '>>> Enable the block generator')
+      tc.append_log(3, '>>>')
+      tc.append_log(3, '')
+      bg.write_enable()
+      
+      ################################################################################
+      ##
+      ## Calculate the reference values
+      ##
+      ################################################################################
+      statisticsAccumulatedNode = []
+      for k in xrange(tc.nofFnNodes):   
+          statisticsAccumulated = []                 
+          for i in range(c_nof_bf_units):
+              statisticsAccumulated.append(bf[k*c_nof_bf_units+i].calculate_beamlets(inputData, select_buf, weightsNodes[k][i], c_in_weight_w, c_blocks_per_sync))
+          statisticsAccumulatedNode.append(statisticsAccumulated)
+  
+      ################################################################################
+      ##
+      ## Read out the beamlet statistics 
+      ##
+      ################################################################################
+      # Wait a while before reading out the statistics
+      if tc.sim == True: 
+          current_time = io.simIO.getSimTime()
+          wait_time = current_time[0] + 2*c_blocks_per_sync * c_nof_weights * c_clk_period
+          do_until_gt(io.simIO.getSimTime, wait_time, s_timeout=3600)
+      else:
+          tc.sleep(1)
+          
+      tc.append_log(3, '>>>')
+      tc.append_log(2, '>>> Rep = %d, n = %d: Read the Beamlet Statistics of all bf_units' % (rep, n))
+      tc.append_log(3, '>>>')
+      tc.append_log(3, '')
+      
+      for k in xrange(tc.nofFnNodes):   
+          beamlet_stats = []
+          for i in range(c_nof_bf_units):
+              beamlet_stats_bf_unit = bf[k*c_nof_bf_units+i].st.read_and_verify_stats(statisticsAccumulatedNode[k][i])
+              beamlet_stats.append(beamlet_stats_bf_unit)
+          
+      # - Disable the block generator
+      tc.append_log(3, '>>>')
+      tc.append_log(3, '>>> Disable the block generator')
+      tc.append_log(3, '>>>')
+      tc.append_log(3, '')
+      bg.write_disable()
+          
+      n+=1
+  
+      
+  ###############################################################################
+  # End
+  tc.set_section_id('')
+  tc.append_log(3, '')
+  tc.append_log(3, '>>>')
+  tc.append_log(0, '>>> Test bench result: %s' % tc.get_result())
+  tc.append_log(3, '>>>')
+  
+  sys.exit(tc.get_result())
\ No newline at end of file
diff --git a/libraries/dsp/bf/designs/unb1_fn_bf/tb/vhdl/tb_unb1_fn_bf.vhd b/libraries/dsp/bf/designs/unb1_fn_bf/tb/vhdl/tb_unb1_fn_bf.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..9a17b5469a9d708d073c235fda8650148a11db9e
--- /dev/null
+++ b/libraries/dsp/bf/designs/unb1_fn_bf/tb/vhdl/tb_unb1_fn_bf.vhd
@@ -0,0 +1,162 @@
+-------------------------------------------------------------------------------
+--
+-- Copyright (C) 2012
+-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+-- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/>
+-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-------------------------------------------------------------------------------
+
+-- Purpose: Test bench for fn_bf
+--          The DUT can be targeted at unb 0, fn 3 with the same Python scripts 
+--          that are used on hardware. 
+
+
+LIBRARY IEEE, common_lib, unb1_board_lib, i2c_lib, bf_lib;
+USE IEEE.std_logic_1164.ALL;
+USE IEEE.numeric_std.ALL;
+USE common_lib.common_pkg.ALL;
+USE common_lib.tb_common_pkg.ALL;
+USE unb1_board_lib.unb1_board_pkg.ALL;
+USE unb1_board_lib.unb1_board_peripherals_pkg.ALL;
+USE bf_lib.bf_pkg.ALL;
+
+ENTITY tb_unb1_fn_bf IS
+GENERIC(
+  --   TYPE t_c_bf IS RECORD
+  --    nof_signal_paths  : POSITIVE; -- = 64
+  --    nof_input_streams : POSITIVE; -- = 16 
+  --    nof_subbands      : POSITIVE; -- = 24
+  --    nof_weights       : POSITIVE; -- = 256
+  --    nof_bf_units      : POSITIVE; -- = 4
+  --    in_dat_w          : POSITIVE; -- = 16
+  --    in_weight_w       : POSITIVE; -- = 16
+  --    bst_gain_w        : INTEGER;  -- = 1
+  --    bst_dat_w         : POSITIVE; -- = 16                                
+  --    out_gain_w        : INTEGER;  -- = -5
+  --    out_dat_w         : POSITIVE; -- = 8
+  --    stat_data_w       : POSITIVE; -- = 56
+  --    stat_data_sz      : POSITIVE; -- = 2
+  --  END RECORD;
+  g_bf : t_c_bf := (64, 16, 24, 256, 4, 16, 16, 1, 16, -5, 8, 56, 2)
+);
+END tb_unb1_fn_bf;
+
+ARCHITECTURE tb OF tb_unb1_fn_bf IS
+
+  CONSTANT c_sim             : BOOLEAN := TRUE;
+
+  CONSTANT c_unb_nr          : NATURAL := 0; -- UniBoard 0
+  CONSTANT c_node_nr         : NATURAL := 3; -- Front node 3
+  CONSTANT c_id              : STD_LOGIC_VECTOR(7 DOWNTO 0) := TO_UVEC(c_unb_nr, c_unb1_board_nof_uniboard_w ) & TO_UVEC(c_node_nr, c_unb1_board_nof_chip_w);
+
+  CONSTANT c_version         : STD_LOGIC_VECTOR(1 DOWNTO 0) := "00";
+  CONSTANT c_fw_version      : t_unb1_board_fw_version := (1, 0);
+
+  CONSTANT c_cable_delay     : TIME := 12 ns;
+  CONSTANT c_eth_clk_period  : TIME := 40 ns;  -- 25 MHz XO on UniBoard
+  CONSTANT c_clk_period      : TIME := 1 ns; 
+  CONSTANT c_pps_period      : NATURAL := 1000; 
+
+  -- DUT
+  SIGNAL clk                 : STD_LOGIC := '0';
+  SIGNAL pps                 : STD_LOGIC := '0';
+  SIGNAL pps_rst             : STD_LOGIC := '0';
+
+  SIGNAL WDI                 : STD_LOGIC;
+  SIGNAL INTA                : STD_LOGIC;
+  SIGNAL INTB                : STD_LOGIC;
+
+  SIGNAL eth_clk             : STD_LOGIC := '0';
+  SIGNAL eth_txp             : STD_LOGIC;
+  SIGNAL eth_rxp             : STD_LOGIC;
+  
+  SIGNAL VERSION             : STD_LOGIC_VECTOR(c_unb1_board_aux.version_w-1 DOWNTO 0) := c_version; 
+  SIGNAL ID                  : STD_LOGIC_VECTOR(c_unb1_board_aux.id_w-1 DOWNTO 0)      := c_id;
+  SIGNAL TESTIO              : STD_LOGIC_VECTOR(c_unb1_board_aux.testio_w-1 DOWNTO 0);
+
+  SIGNAL sens_scl            : STD_LOGIC;
+  SIGNAL sens_sda            : STD_LOGIC;
+
+  -- Model I2C sensor slaves as on the UniBoard
+  CONSTANT c_fpga_temp_address   : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0011000";  -- MAX1618 address LOW LOW
+  CONSTANT c_fpga_temp           : INTEGER := 60;
+  CONSTANT c_eth_temp_address    : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0101001";  -- MAX1618 address MID LOW
+  CONSTANT c_eth_temp            : INTEGER := 40;
+  CONSTANT c_hot_swap_address    : STD_LOGIC_VECTOR(6 DOWNTO 0) := "1000100";  -- LTC4260 address L L L
+  CONSTANT c_hot_swap_R_sense    : REAL := 0.01;                               -- = 10 mOhm on UniBoard
+  
+  CONSTANT c_uniboard_current    : REAL := 5.0;   -- = assume 5.0 A on UniBoard
+  CONSTANT c_uniboard_supply     : REAL := 48.0;  -- = assume 48.0 V on UniBoard
+  CONSTANT c_uniboard_adin       : REAL := -1.0;  -- = NC on UniBoard
+
+BEGIN
+
+  ----------------------------------------------------------------------------
+  -- System setup
+  ----------------------------------------------------------------------------
+  clk     <= NOT clk AFTER c_clk_period/2;        -- External clock (200 MHz)
+  eth_clk <= NOT eth_clk AFTER c_eth_clk_period/2;  -- Ethernet ref clock (25 MHz)
+  
+  INTA <= 'H';  -- pull up
+  INTB <= 'H';  -- pull up
+
+  sens_scl <= 'H';  -- pull up
+  sens_sda <= 'H';  -- pull up
+
+  ------------------------------------------------------------------------------
+  -- External PPS
+  ------------------------------------------------------------------------------  
+  proc_common_gen_pulse(1, c_pps_period, '1', pps_rst, clk, pps);
+
+  ------------------------------------------------------------------------------
+  -- 1GbE Loopback model
+  ------------------------------------------------------------------------------  
+  eth_rxp <= TRANSPORT eth_txp AFTER c_cable_delay;
+  
+  ------------------------------------------------------------------------------
+  -- DUT
+  ------------------------------------------------------------------------------
+  u_dut : ENTITY work.unb1_fn_bf
+    GENERIC MAP (
+      g_sim         => c_sim,
+      g_sim_unb_nr  => c_unb_nr,
+      g_sim_node_nr => c_node_nr,
+      g_bf          => g_bf
+    )
+    PORT MAP (
+      -- GENERAL
+      CLK         => clk,
+      PPS         => pps,
+      WDI         => WDI,
+      INTA        => INTA,
+      INTB        => INTB,
+
+      sens_sc     => sens_scl,
+      sens_sd     => sens_sda,
+
+      -- Others
+      VERSION     => VERSION,
+      ID          => ID,
+      TESTIO      => TESTIO,
+
+      -- 1GbE Control Interface
+      ETH_clk     => eth_clk,
+      ETH_SGIN    => eth_rxp,
+      ETH_SGOUT   => eth_txp
+    );
+  
+END tb;